/*
 * 便箋。演出ではこの要素の複製を封筒から引き出すため、祖先に依存するセレクタを使わない。
 */

.letter {
  --pad-x: 22px;
  container-type: inline-size;
  position: relative;
  width: min(100%, 680px);
  margin: 0 auto;
  padding: 40px var(--pad-x) 34px;
  background: var(--paper);
  box-shadow: var(--letter-shadow);
  color: var(--text);
}

/* 金の二重枠 */
.letter::before,
.letter::after {
  position: absolute;
  content: '';
  pointer-events: none;
}

.letter::before {
  inset: 8px;
  border: 1px solid var(--gold-line);
}

.letter::after {
  inset: 12px;
  border: 1px solid var(--gold-faint);
}

/* 頭書き：狭い画面は日付・紋・宛名の縦積み、広い画面は宛名・紋・日付を横に並べる。 */
.letter__head {
  display: grid;
  grid-template-areas:
    'date'
    'brand'
    'to';
  row-gap: 14px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--gold-line);
}

.letter__date {
  grid-area: date;
  justify-self: end;
  color: var(--muted);
  font-size: 12px;
  letter-spacing: 0.08em;
}

.letter__date span {
  margin-left: 1em;
}

.letter__brand {
  grid-area: brand;
  color: var(--gold);
  text-align: center;
}

.letter__lotus {
  display: block;
  width: 50px;
  height: auto;
  margin: 0 auto 6px;
}

.letter__dept {
  padding-left: 0.32em;
  font-size: 19px;
  letter-spacing: 0.32em;
  line-height: 1.4;
}

.letter__dept-en {
  margin-top: 6px;
  padding-left: 0.34em;
  font-size: 10px;
  letter-spacing: 0.34em;
  line-height: 1;
}

.letter__to {
  grid-area: to;
  justify-self: start;
  padding: 0 0.6em 4px 0.1em;
  border-bottom: 1px solid var(--gold-line);
  color: var(--ink);
  font-size: 23px;
  font-weight: 500;
  letter-spacing: 0.14em;
  line-height: 1.6;
  white-space: nowrap;
}

.letter__to span {
  margin-left: 0.7em;
}

/* 題名：1行に収まる大きさまで縮める（13字＋字間で14字分を見積もる）。 */
.letter__title {
  margin-top: 30px;
  color: var(--ink);
  font-size: min(40px, calc((100vw - 68px) / 14));
  font-weight: 500;
  letter-spacing: 0.06em;
  line-height: 1.45;
  text-align: center;
  white-space: nowrap;
}

.letter__subtitle {
  margin-top: 8px;
  padding-left: 0.3em;
  color: var(--gold);
  font-size: min(13px, calc((100vw - 68px) / 27));
  letter-spacing: 0.3em;
  text-align: center;
  white-space: nowrap;
}

@supports (font-size: 1cqi) {
  .letter__title { font-size: min(40px, calc((100cqi - var(--pad-x) * 2) / 14)); }
  .letter__subtitle { font-size: min(13px, calc((100cqi - var(--pad-x) * 2) / 27)); }
}

/* 本文：文節の区切り（wbr）だけで折り返す。 */
.letter__body {
  margin-top: 30px;
  font-size: 15px;
  letter-spacing: 0.05em;
  line-height: 2;
  word-break: keep-all;
  overflow-wrap: anywhere;
}

.letter__body p + p {
  margin-top: 1.15em;
}

/* 役職の囲み */
.letter__offer {
  margin: 34px auto 0;
  max-width: 560px;
  padding: 20px 16px 22px;
  border: 1px solid rgba(164, 134, 75, 0.7);
  background: #fdfaf2;
  text-align: center;
  word-break: keep-all;
  overflow-wrap: anywhere;
}

.letter__offer-label {
  display: flex;
  align-items: center;
  gap: 14px;
  color: var(--gold);
  font-size: 15px;
  letter-spacing: 0.14em;
}

.letter__offer-label::before,
.letter__offer-label::after {
  flex: 1;
  height: 1px;
  background: var(--gold-line);
  content: '';
}

.letter__offer-role {
  margin-top: 8px;
  padding-left: 0.24em;
  color: var(--ink);
  font-size: 44px;
  font-weight: 600;
  letter-spacing: 0.24em;
  line-height: 1.35;
}

.letter__offer-next {
  margin-top: 6px;
  font-size: 14px;
  letter-spacing: 0.1em;
  line-height: 1.8;
}

.letter__closing {
  margin-top: 34px;
  color: var(--ink);
  font-size: 16px;
  letter-spacing: 0.08em;
  line-height: 2.1;
  text-align: center;
  word-break: keep-all;
  overflow-wrap: anywhere;
}

.letter__sign {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 14px;
  margin-top: 22px;
  color: var(--ink);
  font-size: 17px;
  letter-spacing: 0.2em;
}

.letter__hanko {
  display: grid;
  grid-template-columns: repeat(2, 1em);
  justify-content: center;
  align-content: center;
  width: 2.9em;
  height: 2.9em;
  border: 2px solid var(--hanko);
  border-radius: 7px;
  color: var(--hanko);
  font-size: 17px;
  font-weight: 600;
  letter-spacing: 0;
  line-height: 1.12;
  text-align: center;
  transform: rotate(-2deg);
}

.letter__foot {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  margin-top: 36px;
  color: var(--gold);
  font-size: 10px;
  letter-spacing: 0.34em;
}

.letter__foot::before,
.letter__foot::after {
  width: min(120px, 18%);
  height: 1px;
  background: var(--gold-line);
  content: '';
}

@media (min-width: 640px) {
  .letter {
    --pad-x: 56px;
    padding-top: 44px;
    padding-bottom: 40px;
  }

  .letter__head {
    grid-template-columns: 1fr auto 1fr;
    grid-template-areas:
      '. brand date'
      'to brand .';
    align-items: end;
    row-gap: 0;
    padding-bottom: 18px;
  }

  .letter__date {
    align-self: start;
  }

  .letter__to {
    font-size: 26px;
  }

  .letter__lotus {
    width: 58px;
  }

  .letter__dept {
    font-size: 21px;
  }

  .letter__title {
    margin-top: 40px;
  }

  .letter__body {
    margin-top: 40px;
    padding: 0 12px;
    font-size: 16.5px;
  }

  .letter__offer {
    margin-top: 42px;
    padding: 24px 32px 26px;
  }

  .letter__offer-role {
    font-size: 52px;
  }

  .letter__offer-next {
    font-size: 15px;
  }

  .letter__closing {
    margin-top: 42px;
    font-size: 17px;
  }

  .letter__foot {
    margin-top: 44px;
  }
}
