/**
 * core/list のブロックスタイル
 *
 * 「スタイル」パネルで選んだときだけ効く。is-style-* が付いていないリストには
 * 一切触らない（既存投稿の見た目を変えないため）。
 *
 * マーカーは SVG を data URI で持ち、mask-image で本文の文字色（currentColor）に塗る。
 * 外部のアイコンフォントや外部 URL は読まない（xmlns は名前空間の識別子で、取得はしない）。
 * 色をテーマ変数に結ばないのは、変数が未定義のとき記号が消えるためであり、
 * 本文の文字色の設定にも追随させるためである。
 *
 * 入れ子のリストには is-style-* が付かない。そのため記号を消す指定は li に書く
 * （list-style-type は継承されるので、li に書けば入れ子の ol / ul も消える）。
 *
 * 数字系は CSS カウンターで振る。ol は list-item カウンターをブラウザに任せ、
 * counter-reset を書かない（ol の start 属性は、CSS の counter-reset で上書きすると
 * 消えるため）。start / reversed / li value は、この hint を通して効く。
 * ul には start が無いので、counter-reset: list-item を書いて 1 から振る。
 * 既知の制約: 3 桁以上の番号は左にはみ出す。
 */

/* li の 1 行の高さ。::before は font-size が違うので、li 側で長さに確定させて渡す */
@property --optib-line {
  syntax: "<length>";
  inherits: true;
  initial-value: 0px;
}

/* マーカーの SVG 定義（塗る色はここでは持たない） */
.wp-block-list.is-style-optib-arrow {
  --optib-list-marker: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M2 9h11V4.5L22 12l-9 7.5V15H2z'/%3E%3C/svg%3E");
}

.wp-block-list.is-style-optib-triangle {
  --optib-list-marker: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 4l14 8-14 8z'/%3E%3C/svg%3E");
}

.wp-block-list.is-style-optib-check {
  --optib-list-marker: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12.5l5 5L20 6.5' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

.wp-block-list.is-style-optib-check-square {
  --optib-list-marker: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='3' y='3' width='18' height='18' rx='3' fill='none' stroke='black' stroke-width='2.2'/%3E%3Cpath d='M7.5 12.5l3 3 6-6' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

.wp-block-list.is-style-optib-check-circle {
  --optib-list-marker: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke='black' stroke-width='2.2'/%3E%3Cpath d='M7.5 12.5l3 3 6-6' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

.wp-block-list.is-style-optib-hand {
  --optib-list-marker: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='9' y='7' width='13' height='4.5' rx='2.25'/%3E%3Crect x='3' y='10' width='12' height='11' rx='4.5'/%3E%3Crect x='12' y='11.5' width='7' height='3.5' rx='1.75'/%3E%3C/svg%3E");
}

.wp-block-list.is-style-optib-pencil {
  --optib-list-marker: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15.6 3.6l4.8 4.8L8.4 20.4 3 21.6l1.2-5.4z'/%3E%3C/svg%3E");
}

.wp-block-list.is-style-optib-smile {
  --optib-list-marker: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='9' cy='10' r='1.5'/%3E%3Ccircle cx='15' cy='10' r='1.5'/%3E%3Cpath d='M8 14c1.1 1.7 2.4 2.5 4 2.5s2.9-.8 4-2.5' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
}

.wp-block-list.is-style-optib-frown {
  --optib-list-marker: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='9' cy='10' r='1.5'/%3E%3Ccircle cx='15' cy='10' r='1.5'/%3E%3Cpath d='M8 16.5c1.1-1.7 2.4-2.5 4-2.5s2.9.8 4 2.5' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
}

.wp-block-list.is-style-optib-circle {
  --optib-list-marker: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='8.5'/%3E%3C/svg%3E");
}

.wp-block-list.is-style-optib-cross {
  --optib-list-marker: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 6l12 12M18 6L6 18' fill='none' stroke='black' stroke-width='3.2' stroke-linecap='round'/%3E%3C/svg%3E");
}

/* マーカー系: 既定の記号を消し、SVG を li の前に置く */
.wp-block-list.is-style-optib-arrow li,
.wp-block-list.is-style-optib-triangle li,
.wp-block-list.is-style-optib-check li,
.wp-block-list.is-style-optib-check-square li,
.wp-block-list.is-style-optib-check-circle li,
.wp-block-list.is-style-optib-hand li,
.wp-block-list.is-style-optib-pencil li,
.wp-block-list.is-style-optib-smile li,
.wp-block-list.is-style-optib-frown li,
.wp-block-list.is-style-optib-circle li,
.wp-block-list.is-style-optib-cross li {
  list-style-type: none;
  position: relative;
}

.wp-block-list.is-style-optib-arrow li::before,
.wp-block-list.is-style-optib-triangle li::before,
.wp-block-list.is-style-optib-check li::before,
.wp-block-list.is-style-optib-check-square li::before,
.wp-block-list.is-style-optib-check-circle li::before,
.wp-block-list.is-style-optib-hand li::before,
.wp-block-list.is-style-optib-pencil li::before,
.wp-block-list.is-style-optib-smile li::before,
.wp-block-list.is-style-optib-frown li::before,
.wp-block-list.is-style-optib-circle li::before,
.wp-block-list.is-style-optib-cross li::before {
  content: "";
  position: absolute;
  right: calc(100% + 0.15em);
  top: 0;
  width: 1.2em;
  height: 1.6em;
  background-color: currentColor;
  -webkit-mask: var(--optib-list-marker) center / 1.2em 1.2em no-repeat;
  mask: var(--optib-list-marker) center / 1.2em 1.2em no-repeat;
}

/* 箱を 1 行分の高さにして記号を中央に置く。行の高さが変わっても 1 行目の縦中心にそろう。
   lh 未対応のブラウザは上の 1.6em（本文の行の高さの目安）で置く */
@supports (height: 1lh) {
  .wp-block-list.is-style-optib-arrow li::before,
  .wp-block-list.is-style-optib-triangle li::before,
  .wp-block-list.is-style-optib-check li::before,
  .wp-block-list.is-style-optib-check-square li::before,
  .wp-block-list.is-style-optib-check-circle li::before,
  .wp-block-list.is-style-optib-hand li::before,
  .wp-block-list.is-style-optib-pencil li::before,
  .wp-block-list.is-style-optib-smile li::before,
  .wp-block-list.is-style-optib-frown li::before,
  .wp-block-list.is-style-optib-circle li::before,
  .wp-block-list.is-style-optib-cross li::before {
    height: max(1lh, 1.2em);
  }
}

/* 数字系: ul は番号の起点を自分で持つ（ol は UA の list-item に任せる） */
ul.wp-block-list.is-style-optib-num-circle,
ul.wp-block-list.is-style-optib-num-square,
.wp-block-list.is-style-optib-num-circle ul,
.wp-block-list.is-style-optib-num-square ul {
  counter-reset: list-item;
}

.wp-block-list.is-style-optib-num-circle li,
.wp-block-list.is-style-optib-num-square li {
  list-style-type: none;
  position: relative;
  --optib-line: 1lh;
}

.wp-block-list.is-style-optib-num-circle li::before,
.wp-block-list.is-style-optib-num-square li::before {
  content: counter(list-item);
  position: absolute;
  right: calc(100% + 0.2em);
  top: 0.33em;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-width: 1.6em;
  height: 1.6em;
  padding: 0 0.25em;
  font-size: 0.75em;
  line-height: 1;
  border: 0.08em solid currentColor;
}

.wp-block-list.is-style-optib-num-circle li::before {
  border-radius: 50%;
}

.wp-block-list.is-style-optib-num-square li::before {
  border-radius: 0.2em;
}

/* 1 行目の縦中心に枠の中心を置く（lh 未対応のブラウザは上の top の目安のまま） */
@supports (height: 1lh) {
  .wp-block-list.is-style-optib-num-circle li::before,
  .wp-block-list.is-style-optib-num-square li::before {
    top: calc(var(--optib-line) / 2);
    transform: translateY(-50%);
  }
}
