/* ============================================================
   publish.css - sseshimo.com
   Obsidian Publish の標準HTMLを、旧Wraptas版に近い静かな見た目へ寄せる。
   画面初期表示のローダーは Cloudflare Worker 側にも同じ最小CSSを置く。
   ============================================================ */

/* デザイン変数
   ------------------------------------------------------------ */

:root,
.published-container {
  --ss-paper: #fdfeff;
  --ss-paper-weak: #f6f9fc;
  --ss-text: #0f1113;
  --ss-heading: #000000;
  --ss-muted: #4b5563;
  --ss-faint: rgba(55, 53, 47, 0.4);
  --ss-link: var(--ss-muted);
  --ss-link-hover: var(--ss-text);
  --ss-link-underline: rgba(75, 85, 99, 0.34);
  --ss-border: #e5eaf0;
  --ss-selection-bg: var(--ss-border);
  --ss-accent: #e31c2d;
  --ss-accent-deep: #b00e23;
  --ss-loader-font-size: 11px;
  --ss-loader-gap: 8px;
  --ss-loader-icon-size: 30px;
  --ss-loader-ring-size: 28px;
  --ss-loader-ring-track: rgba(176, 14, 35, 0.13);
  --ss-loader-shadow: drop-shadow(0 5px 14px rgba(176, 14, 35, 0.13));

  --ss-bg: var(--ss-paper);
  --ss-bg-soft: var(--ss-paper-weak);
  --ss-rail-bg: var(--ss-paper-weak);

  --background-primary: var(--ss-bg);
  --background-secondary: var(--ss-bg-soft);
  --background-primary-alt: var(--ss-bg-soft);
  --background-modifier-border: var(--ss-border);
  --interactive-accent: var(--ss-accent);
  --text-accent: var(--ss-accent);
  --text-faint: var(--ss-faint);
  --text-muted: var(--ss-muted);
  --text-normal: var(--ss-text);
  --text-selection: var(--ss-selection-bg);

  --font-interface: 'Noto Sans JP', 'Helvetica Neue', Arial, 'Hiragino Kaku Gothic ProN',
    'Hiragino Sans', Meiryo, sans-serif;
  --font-text: var(--font-interface);
  --font-monospace: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --ss-font-feature-settings: "palt" 1, "kern" 1;

  --ss-container-width: 668px;
  --ss-content-width: 636px;
  --ss-page-top: 72px;
  --ss-page-bottom: 32px;
  --ss-body-line-height: 1.72;
  --ss-paragraph-gap: 0.62em;
  --ss-list-line-height: 1.72;
  --page-width: var(--ss-container-width);
  --page-side-padding: 56px;

  --sidebar-left-width: 264px;
  --sidebar-left-background: var(--ss-rail-bg);
  --sidebar-left-border-color: transparent;
  --sidebar-left-border-width: 0;

  --ss-h1-size: 23px;
  --ss-h1-weight: 700;
  --ss-h2-size: 20.8px;
  --ss-h2-weight: 600;
  --ss-h3-size: 20.8px;
  --ss-h3-weight: 500;
  --ss-h4-size: 16px;
  --ss-h4-weight: 500;

  --site-name-color: var(--ss-text);
  --site-name-size: 17.6px;
  --site-name-weight: 400;

  --nav-item-background-active: transparent;
  --nav-item-background-hover: transparent;
  --nav-item-color: var(--ss-text);
  --nav-item-color-active: var(--ss-text);
  --nav-item-color-hover: var(--ss-text);
  --nav-item-radius: 0;
  --nav-item-size: 16px;
  --nav-item-weight: 400;
  --nav-item-weight-active: 400;
  --nav-item-weight-hover: 400;
  --ss-nav-parent-size: 16px;
  --ss-nav-child-size: 13.5px;
  --ss-nav-line-height: 1.5;
  --ss-nav-child-line-height: 1.5;
  --ss-nav-item-gap: 9px;
  --ss-nav-section-gap: 22px;
  --ss-nav-child-indent: 0px;

  --link-color: var(--ss-link);
  --link-color-hover: var(--ss-link-hover);
  --link-decoration: underline;
  --link-decoration-hover: underline;
  --link-external-color: var(--ss-link);
  --link-external-color-hover: var(--ss-link-hover);
  --link-underline-offset: 0.15em;
}

.theme-light,
.theme-dark {
  --background-primary: var(--ss-bg);
  --background-secondary: var(--ss-bg-soft);
  --text-faint: var(--ss-faint);
  --text-muted: var(--ss-muted);
  --text-normal: var(--ss-text);
  color-scheme: light;
}

/* 基本設定
   ------------------------------------------------------------ */

html {
  /* ブラウザ外側には余白を予約しない。
     ここで stable を使うと、本文内スクロールバーが画面右端より少し内側に出てしまう。
     本文の横揺れ対策は .markdown-preview-view 側の scrollbar-gutter で行う。 */
  scrollbar-gutter: auto;
}

/* ローダー方針:
   Cloudflare Worker が、Obsidian本体より先に同じ初期ローダーCSSを差し込む。
   ここでは publish.css 読み込み後も同じ見た目を保つ。publish.jsで別ローダーを
   作ると二重表示になりやすいので避ける。ページタイトルだけの状態を拾う
   疑似ローダーも、段階的に大きくなるように見えたため採用しない。 */
body > .preload {
  align-items: center;
  background: var(--ss-paper);
  color: var(--ss-accent-deep);
  display: flex;
  flex-direction: column;
  font-size: var(--ss-loader-font-size);
  font-weight: 500;
  gap: var(--ss-loader-gap);
  justify-content: center;
  line-height: 1.4;
  min-height: 100svh;
  overflow: hidden;
  padding: 0 !important;
  text-align: center;
  white-space: normal !important;
}

body > .preload svg {
  color: currentColor;
  display: block;
  filter: var(--ss-loader-shadow);
  width: var(--ss-loader-icon-size) !important;
}

body > .preload svg * {
  fill: currentColor !important;
  stroke: currentColor !important;
}

body,
.published-container,
.publish-view,
.site-body,
.site-body-center-column,
.site-body-center-column .render-container,
.markdown-preview-view,
.markdown-rendered,
.publish-renderer {
  background: var(--ss-paper);
}

.published-container,
.publish-view,
.markdown-rendered {
  color: var(--ss-text);
  font-family: var(--font-text);
  font-feature-settings: var(--ss-font-feature-settings);
  font-kerning: normal;
  letter-spacing: 0;
  text-rendering: optimizeLegibility;
}

::selection {
  background: var(--ss-selection-bg);
  color: var(--ss-text);
}

.published-container a,
.published-container .internal-link,
.published-container .external-link,
.published-container .site-header-text {
  text-decoration-thickness: 0.07em;
  text-underline-offset: 0.15em;
}

/* ページ全体の骨格
   ------------------------------------------------------------ */

.site-body-center-column .render-container {
  display: flex;
  justify-content: center;
  overflow-x: hidden;
  overflow-y: hidden;
  scrollbar-gutter: auto;
  scrollbar-width: auto !important;
}

.site-body-center-column .render-container-inner {
  box-sizing: border-box;
  flex: 1 1 auto;
  max-width: none;
  width: 100%;
}

.publish-renderer {
  box-sizing: border-box;
  max-width: none;
  width: 100%;
}

.markdown-preview-view.markdown-rendered {
  box-sizing: border-box;
  /* bootopia.org と同じく、右端まで広がるビュー要素に標準スクロールバーを持たせる。
     スクロールが必要なページでは画面右端に出て、短いページでは出ない。
     stable both-edges は、バーの有無で本文の中心が左右に動くのを防ぐため。 */
  overflow-x: hidden;
  overflow-y: auto;
  padding: var(--ss-page-top) 0 var(--ss-page-bottom);
  scrollbar-gutter: stable both-edges;
  scrollbar-width: auto !important;
  width: 100%;
}

.markdown-rendered .markdown-preview-sizer,
.markdown-rendered .markdown-preview-section {
  box-sizing: border-box;
  margin-left: auto !important;
  margin-right: auto !important;
  max-width: var(--ss-content-width) !important;
  padding-bottom: var(--ss-page-bottom) !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  width: min(calc(100% - 32px), var(--ss-content-width)) !important;
}

/* 左ナビゲーション
   ------------------------------------------------------------ */

.site-body-left-column {
  background: var(--ss-rail-bg);
  border-right: 0;
  font-feature-settings: var(--ss-font-feature-settings);
  font-kerning: normal;
  position: relative;
  text-rendering: optimizeLegibility;
}

.site-body-left-column .site-body-left-column-inner {
  box-sizing: border-box;
  min-height: 100%;
  padding: 32px 28px 104px 22px;
}

.site-body-left-column-site-name {
  color: var(--ss-text);
  font-family: var(--font-interface) !important;
  font-size: var(--site-name-size);
  font-weight: var(--site-name-weight) !important;
  letter-spacing: 0;
  line-height: 1.4;
  margin-bottom: 28px;
  padding: 0 !important;
  text-align: left;
  text-decoration: underline;
  text-decoration-color: var(--ss-accent);
  text-decoration-thickness: 0.07em;
  text-underline-offset: 0.15em;
}

.site-body-left-column-site-name:hover,
.site-body-left-column-site-name:focus-visible {
  color: var(--ss-text);
  text-decoration: underline;
  text-decoration-color: var(--ss-accent);
}

/* 検索欄
   ------------------------------------------------------------ */

.site-body-left-column .search-view-outer {
  bottom: 40px;
  left: 40px;
  margin: 0;
  position: absolute;
  width: calc(var(--sidebar-left-width) - 68px);
  z-index: 2;
}

.site-body-left-column .search-view-container {
  height: 28px;
  margin: 0;
  overflow: visible;
  position: relative;
  width: calc(var(--sidebar-left-width) - 68px);
}

.site-body-left-column .search-input-container,
.site-body-left-column .search-input-container input,
.site-body-left-column .search-view-container .search-bar {
  box-sizing: border-box;
  flex: 0 0 calc(var(--sidebar-left-width) - 68px);
  flex-grow: 0;
  width: calc(var(--sidebar-left-width) - 68px);
}

.search-input-container input,
.search-input-container input:focus,
.search-view-container .search-bar,
.search-view-container .search-bar:focus {
  background: var(--ss-bg);
  border: 0;
  border-radius: 3px;
  box-shadow: none;
  font-family: var(--font-interface);
  font-size: 12.5px;
  line-height: 28px;
}

.site-body-left-column .search-input-container input,
.site-body-left-column .search-view-container .search-bar {
  background: var(--ss-paper);
  color: var(--ss-text);
  cursor: text;
  height: 28px;
  min-height: 28px;
  padding: 0 0 0 27px;
}

.site-body-left-column .search-input-container input::placeholder,
.site-body-left-column .search-view-container .search-bar::placeholder {
  color: transparent;
  opacity: 0;
}

.site-body-left-column .published-search-icon {
  color: var(--ss-text);
  left: 6px;
  opacity: 1;
  pointer-events: none;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

.site-body-left-column .published-search-icon svg {
  height: 15px;
  width: 15px;
}

/* ナビゲーション項目
   ------------------------------------------------------------ */

.nav-view-outer {
  font-family: var(--font-interface) !important;
  font-size: var(--ss-nav-parent-size) !important;
  line-height: var(--ss-nav-line-height);
  max-height: calc(100vh - 184px);
  overflow-y: auto;
  padding: 0 0 12px !important;
  scrollbar-width: none;
  text-align: left;
}

.nav-view-outer::-webkit-scrollbar {
  display: none;
}

.nav-view-outer a,
.nav-view-outer .tree-item-inner,
.nav-view-outer .tree-item-self.is-clickable {
  border-inline-start: 0 !important;
  border-left: 0 !important;
  box-shadow: none !important;
  color: var(--ss-text);
  font-family: var(--font-interface) !important;
  font-size: var(--ss-nav-parent-size) !important;
  font-weight: 400 !important;
  text-decoration: none;
  text-decoration-thickness: 0.07em;
  text-transform: capitalize;
  text-underline-offset: 0.15em;
  -webkit-tap-highlight-color: transparent;
}

.nav-view-outer a:hover,
.nav-view-outer a:focus-visible,
.nav-view-outer .tree-item-self.is-clickable:hover .tree-item-inner,
.nav-view-outer .tree-item-self.is-clickable:focus-visible .tree-item-inner,
.nav-view-outer .tree-item-self.mod-active .tree-item-inner {
  box-shadow: none !important;
  color: var(--ss-text);
  outline: 0 !important;
  text-decoration: underline;
  text-decoration-color: var(--ss-accent);
}

.nav-view-outer .tree-item-self.mod-active .tree-item-inner,
.nav-view-outer .tree-item-self.is-active .tree-item-inner,
.nav-view-outer .tree-item-self[aria-current='page'] .tree-item-inner,
.nav-view-outer .tree-item-self.mod-active a,
.nav-view-outer .tree-item-self.is-active a,
.nav-view-outer .tree-item-self[aria-current='page'] a {
  /* 現在地のナビ項目は、Obsidian側の状態クラスが変わっても赤い下線に固定する。 */
  color: var(--ss-text) !important;
  text-decoration: underline !important;
  text-decoration-color: var(--ss-accent) !important;
}

.nav-view-outer .tree-item {
  margin: 0;
}

.nav-view-outer .tree-item-self {
  border-inline-start: 0 !important;
  border-left: 0 !important;
  box-shadow: none !important;
  justify-content: flex-start;
  margin-left: 0 !important;
  min-height: calc(var(--ss-nav-parent-size) * var(--ss-nav-line-height));
  overflow: visible;
  padding: 0;
}

.nav-view-outer .tree-item-self.is-clickable {
  /* Obsidian標準の行クリック領域は横幅いっぱいに広がる。
     PCでは見えている文字とホバー判定がずれるため、公開ナビだけ文字幅へ寄せる。 */
  max-width: 100%;
  width: fit-content;
}

.nav-view-outer .tree-item-inner {
  border-inline-start: 0 !important;
  border-left: 0 !important;
  box-shadow: none !important;
  flex: 0 1 auto;
  line-height: var(--ss-nav-line-height);
  max-width: 100%;
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  width: auto;
}

.nav-view-outer .tree-item-children {
  border-inline-start: 0 !important;
  border-left: 0 !important;
  box-shadow: none !important;
  display: flex;
  flex-direction: column;
  gap: var(--ss-nav-item-gap);
  margin-left: 0;
  padding-left: 0;
}

.nav-view-outer .tree-item:has(> .tree-item-self.mod-root) > .tree-item-children {
  gap: var(--ss-nav-section-gap);
}

.nav-view-outer .tree-item:has(> .tree-item-self.mod-root) > .tree-item-children > .tree-item {
  margin: 0;
}

.nav-view-outer .tree-item:has(> .tree-item-self.mod-collapsible) > .tree-item-self {
  margin-bottom: 0;
}

.nav-view-outer .tree-item:has(> .tree-item-self.mod-collapsible) > .tree-item-children {
  gap: var(--ss-nav-item-gap);
  padding-left: var(--ss-nav-child-indent);
  padding-top: var(--ss-nav-item-gap);
}

.nav-view-outer .tree-item:has(> .tree-item-self.mod-collapsible) > .tree-item-children > .tree-item {
  margin: 0;
}

.nav-view-outer .tree-item:has(> .tree-item-self.mod-collapsible) > .tree-item-children .tree-item-self {
  min-height: calc(var(--ss-nav-child-size) * var(--ss-nav-child-line-height));
}

.nav-view-outer .tree-item:has(> .tree-item-self.mod-collapsible) > .tree-item-children .tree-item-inner,
.nav-view-outer .tree-item:has(> .tree-item-self.mod-collapsible) > .tree-item-children .tree-item-self.is-clickable {
  font-size: var(--ss-nav-child-size) !important;
  line-height: var(--ss-nav-child-line-height) !important;
}

.nav-view-outer .tree-item-children .tree-item-children .tree-item-self,
.nav-view-outer .tree-item-children .tree-item-children .tree-item-inner,
.nav-view-outer .tree-item-children .tree-item-children .tree-item-self.is-clickable,
.nav-view-outer .tree-item-children .tree-item-children a {
  font-size: var(--ss-nav-child-size) !important;
  line-height: var(--ss-nav-child-line-height) !important;
}

.nav-view-outer .tree-item-icon,
.nav-view-outer .tree-item-flair,
.nav-view-outer .tree-item-inner-subtext {
  display: none !important;
}

/* Obsidian上の管理用ファイルや、親フォルダ見出しとして重複する項目は公開ナビから隠す。 */
.nav-view-outer .tree-item:has(> .tree-item-self[data-path='works']),
.nav-view-outer .tree-item:has(> .tree-item-self[data-path='notes']),
.nav-view-outer .tree-item:has(> .tree-item-self[data-path='home.md']),
.nav-view-outer .tree-item:has(> .tree-item-self[data-path='Home.md']),
.nav-view-outer .tree-item:has(> .tree-item-self[data-path='Works.md']),
.nav-view-outer .tree-item:has(> .tree-item-self[data-path='Notes.md']),
.nav-view-outer .tree-item:has(> .tree-item-self[data-path='瀬下翔太.md']),
.nav-view-outer .tree-item:has(> .tree-item-self[data-path='publish.css']),
.nav-view-outer .tree-item:has(> .tree-item-self[data-path='attachments']) {
  display: none !important;
}

/* Markdown本文
   ------------------------------------------------------------ */

.markdown-rendered {
  font-size: 16px;
  line-height: var(--ss-body-line-height);
  text-align: justify;
}

/* Obsidianはページ遷移中に "Loading site..." を一時的な記事見出しとして描く。
   本物の .page-header が出たら通常見出しへ戻すため、この状態だけ中央・赤にする。 */
.markdown-rendered:not(:has(.page-header)) h3.publish-article-heading {
  align-items: center !important;
  color: var(--ss-accent-deep) !important;
  display: flex !important;
  flex-direction: column !important;
  font-size: var(--ss-loader-font-size) !important;
  font-weight: 500 !important;
  gap: var(--ss-loader-gap) !important;
  inset: 0 !important;
  justify-content: center !important;
  line-height: 1.4 !important;
  margin: 0 !important;
  padding: 0 !important;
  pointer-events: none !important;
  position: fixed !important;
  text-align: center !important;
  z-index: 9999 !important;
}

.markdown-rendered:not(:has(.page-header)) h3.publish-article-heading::before {
  animation: ss-loader-spin 1s linear infinite;
  border: 2px solid var(--ss-loader-ring-track);
  border-radius: 50%;
  border-top-color: currentColor;
  box-sizing: border-box;
  content: "";
  height: var(--ss-loader-ring-size);
  width: var(--ss-loader-ring-size);
}

@keyframes ss-loader-spin {
  to {
    transform: rotate(360deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  body > .preload svg path,
  .markdown-rendered:not(:has(.page-header)) h3.publish-article-heading::before {
    animation-duration: 1.8s !important;
  }
}

.markdown-rendered h1,
.markdown-rendered h2,
.markdown-rendered h3,
.markdown-rendered h4,
.markdown-rendered h5,
.markdown-rendered h6 {
  color: var(--ss-heading);
  font-family: var(--font-interface);
  font-feature-settings: var(--ss-font-feature-settings);
  font-kerning: normal;
  letter-spacing: 0 !important;
  line-height: 1.45;
}

.markdown-rendered h1,
.markdown-rendered .page-header {
  font-size: var(--ss-h1-size) !important;
  font-weight: var(--ss-h1-weight);
  line-height: 1.45 !important;
  margin: 0 0 0.8em !important;
  text-align: left;
}

.markdown-rendered h2,
.markdown-rendered h3.publish-article-heading {
  font-size: var(--ss-h2-size) !important;
  font-weight: var(--ss-h2-weight) !important;
  line-height: 1.3 !important;
  margin: 26px 0 5px !important;
  padding: 3px 2px;
  text-align: left;
}

.markdown-rendered h3 {
  font-size: var(--ss-h3-size);
  font-weight: var(--ss-h3-weight);
  margin: 1.45em 0 0.5em;
}

.markdown-rendered h4,
.markdown-rendered h5,
.markdown-rendered h6 {
  font-size: 16px;
  font-weight: 600;
  margin: 32px 0 10px;
}

.markdown-rendered p {
  line-height: var(--ss-body-line-height);
  margin: 0;
  padding: 3px 2px;
}

.markdown-rendered p + p {
  margin-top: var(--ss-paragraph-gap);
}

/* 見出し横のコピーリンク
   ------------------------------------------------------------ */

.published-container .copy-heading-link,
.published-container .heading-wrapper .clickable-icon,
.published-container .publish-article-heading .clickable-icon,
.markdown-rendered .anchor-link,
.markdown-rendered .heading-anchor,
.markdown-rendered .heading-copy-link,
.markdown-rendered .heading-link,
.markdown-rendered .heading-link-icon,
.markdown-rendered .header-anchor,
.markdown-rendered :is(h1, h2, h3, h4, h5, h6) > .clickable-icon,
.markdown-rendered :is(h1, h2, h3, h4, h5, h6) > a[href^="#"],
.markdown-rendered :is(h1, h2, h3, h4, h5, h6) .copy-heading-link,
.markdown-rendered :is(h1, h2, h3, h4, h5, h6) a[aria-label*="Copy"],
.markdown-rendered :is(h1, h2, h3, h4, h5, h6) a[aria-label*="copy"],
.markdown-rendered :is(h1, h2, h3, h4, h5, h6) a[aria-label*="link"] {
  display: none !important;
  margin: 0 !important;
  opacity: 0 !important;
  pointer-events: none !important;
  visibility: hidden !important;
}

/* リストとリンク
   ------------------------------------------------------------ */

.markdown-rendered ul,
.markdown-rendered ol {
  margin: 0;
  padding-left: 0;
}

.markdown-rendered ul {
  list-style: none;
}

.markdown-rendered .list-bullet {
  display: none;
}

.markdown-rendered ol {
  padding-left: 1.4em;
}

.markdown-rendered li {
  font-size: inherit;
  line-height: var(--ss-list-line-height);
  margin: 0 !important;
  margin-left: 0 !important;
  padding-left: 0;
}

.markdown-rendered ul > li::before {
  color: var(--ss-text);
  content: "・";
  margin-right: 0;
}

.markdown-rendered a,
.markdown-rendered .internal-link,
.markdown-rendered .external-link {
  color: var(--ss-link) !important;
  text-decoration-color: var(--ss-link-underline) !important;
  text-decoration-line: underline !important;
  text-decoration-thickness: 0.07em;
  text-underline-offset: 0.15em;
  transition: color 0.15s ease, text-decoration-color 0.15s ease;
}

.markdown-rendered a:visited,
.markdown-rendered .internal-link:visited,
.markdown-rendered .external-link:visited {
  color: var(--ss-link) !important;
  text-decoration-color: var(--ss-link-underline) !important;
}

.markdown-rendered a:hover,
.markdown-rendered a:focus-visible,
.markdown-rendered .internal-link:hover,
.markdown-rendered .internal-link:focus-visible,
.markdown-rendered .external-link:hover,
.markdown-rendered .external-link:focus-visible {
  color: var(--ss-link-hover) !important;
  text-decoration-color: var(--ss-accent) !important;
  text-decoration-line: underline !important;
}

.markdown-rendered a:focus-visible,
.markdown-rendered .internal-link:focus-visible,
.markdown-rendered .external-link:focus-visible {
  outline: 2px solid var(--ss-accent);
  outline-offset: 2px;
}

.external-link {
  background-image: none !important;
  padding-right: 0 !important;
}

/* 画像と埋め込み
   ------------------------------------------------------------ */

.markdown-rendered p:has(> img),
.markdown-rendered p:has(.image-embed) {
  padding: 0;
}

.markdown-rendered .el-p:has(img) {
  margin: 20px 0 !important;
  padding: 0;
}

.markdown-rendered .el-p:has(img) + .el-p:has(img) {
  margin-top: 0 !important;
}

.markdown-rendered .el-p:has(img) p,
.markdown-rendered .el-p:has(img) .image-embed {
  margin: 0;
  padding: 0;
}

.markdown-rendered .el-p:has(img) .image-embed {
  display: block;
  line-height: 0;
}

.markdown-rendered .el-p:has(img) img {
  display: block;
  height: auto;
  max-width: 100%;
}

.markdown-rendered img {
  height: auto;
  max-width: 100%;
}

/* 画像が同じ段落に2枚並ぶ場合だけ横並びにする。極端に縦長の画像対策。 */
.markdown-rendered .el-p:has(.image-embed + .image-embed) p {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}

.markdown-rendered .el-p:has(.image-embed + .image-embed) .image-embed {
  display: block;
  flex: 1 1 0;
  min-width: 0;
}

.markdown-rendered .el-p:has(.image-embed + .image-embed) img {
  width: 100%;
  height: auto;
}

.markdown-rendered .el-p:has(img) + .el-ul,
.markdown-rendered .el-p:has(img) + .el-ol {
  margin-top: 20px !important;
}

.markdown-rendered figure {
  margin: 1.4em 0;
}

/* Contactページのアイコン
   ------------------------------------------------------------ */

.markdown-rendered .ss-contact-icons {
  align-items: center;
  display: flex;
  gap: 2px;
  margin: 8px 0 0;
  padding: 0;
}

.markdown-rendered .ss-contact-icons .icon-btn,
.markdown-rendered .ss-contact-icons .icon-btn:visited {
  align-items: center !important;
  background-image: none !important;
  border-bottom: 0 !important;
  border-radius: 9999px !important;
  color: var(--ss-text) !important;
  display: inline-flex !important;
  height: 40px !important;
  justify-content: center !important;
  text-decoration: none !important;
  width: 40px !important;
}

.markdown-rendered .ss-contact-icons .icon-btn:hover,
.markdown-rendered .ss-contact-icons .icon-btn:focus-visible {
  color: var(--ss-text) !important;
  opacity: 0.85;
  text-decoration: underline !important;
  text-decoration-color: var(--ss-accent) !important;
  text-decoration-thickness: 0.07em;
  text-underline-offset: 0.15em;
}

.markdown-rendered .ss-contact-icons .icon-btn:focus-visible {
  outline: 2px solid var(--ss-accent);
  outline-offset: 2px;
}

/* Contactアイコン:
   外部Font Awesomeは全ページでCSSとwebfontを読むため使わない。
   必要な5個だけCSS maskで持ち、見た目を保ったまま読み込みを軽くする。
   アイコン形状は Font Awesome Free 7.3.0 由来。 */
.markdown-rendered .ss-contact-icons .ss-icon {
  background: currentColor;
  display: block;
  height: 18px;
  -webkit-mask: var(--ss-icon-mask) center / contain no-repeat;
  mask: var(--ss-icon-mask) center / contain no-repeat;
  pointer-events: none;
  width: 18px;
}

.markdown-rendered .ss-icon-x {
  --ss-icon-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20448%20512%22%3E%3Cpath%20fill%3D%22black%22%20d%3D%22M357.2%2048L427.8%2048%20273.6%20224.2%20455%20464%20313%20464%20201.7%20318.6%2074.5%20464%203.8%20464%20168.7%20275.5-5.2%2048%20140.4%2048%20240.9%20180.9%20357.2%2048zM332.4%20421.8l39.1%200-252.4-333.8-42%200%20255.3%20333.8z%22%2F%3E%3C%2Fsvg%3E");
}

.markdown-rendered .ss-icon-facebook {
  --ss-icon-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22black%22%20d%3D%22M512%20256C512%20114.6%20397.4%200%20256%200S0%20114.6%200%20256C0%20376%2082.7%20476.8%20194.2%20504.5l0-170.3-52.8%200%200-78.2%2052.8%200%200-33.7c0-87.1%2039.4-127.5%20125-127.5%2016.2%200%2044.2%203.2%2055.7%206.4l0%2070.8c-6-.6-16.5-1-29.6-1-42%200-58.2%2015.9-58.2%2057.2l0%2027.8%2083.6%200-14.4%2078.2-69.3%200%200%20175.9C413.8%20494.8%20512%20386.9%20512%20256z%22%2F%3E%3C%2Fsvg%3E");
}

.markdown-rendered .ss-icon-instagram {
  --ss-icon-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20448%20512%22%3E%3Cpath%20fill%3D%22black%22%20d%3D%22M224.3%20141a115%20115%200%201%200-.6%20230%20115%20115%200%201%200%20.6-230zm-.6%2040.4a74.6%2074.6%200%201%201%20.6%20149.2%2074.6%2074.6%200%201%201-.6-149.2zm93.4-45.1a26.8%2026.8%200%201%201%2053.6%200%2026.8%2026.8%200%201%201-53.6%200zm129.7%2027.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9%200-35.8%201.7-67.6%209.9-93.9%2036.1s-34.4%2058-36.2%2093.9c-2.1%2037-2.1%20147.9%200%20184.9%201.7%2035.9%209.9%2067.7%2036.2%2093.9s58%2034.4%2093.9%2036.2c37%202.1%20147.9%202.1%20184.9%200%2035.9-1.7%2067.7-9.9%2093.9-36.2%2026.2-26.2%2034.4-58%2036.2-93.9%202.1-37%202.1-147.8%200-184.8zM399%20388c-7.8%2019.6-22.9%2034.7-42.6%2042.6-29.5%2011.7-99.5%209-132.1%209s-102.7%202.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7%209-132.1c7.8-19.6%2022.9-34.7%2042.6-42.6%2029.5-11.7%2099.5-9%20132.1-9s102.7-2.6%20132.1%209c19.6%207.8%2034.7%2022.9%2042.6%2042.6%2011.7%2029.5%209%2099.5%209%20132.1s2.7%20102.7-9%20132.1z%22%2F%3E%3C%2Fsvg%3E");
}

.markdown-rendered .ss-icon-substack {
  --ss-icon-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20448%20512%22%3E%3Cpath%20fill%3D%22black%22%20d%3D%22M448%20512L224%20386.4%200%20512%200%20230.7%20448%20230.7%20448%20512zm0-336.2l-448%200%200-60.5%20448%200%200%2060.5zM448%200L448%2060.5%200%2060.5%200%200%20448%200z%22%2F%3E%3C%2Fsvg%3E");
}

.markdown-rendered .ss-icon-mail {
  --ss-icon-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20512%20512%22%3E%3Cpath%20fill%3D%22black%22%20d%3D%22M48%2064c-26.5%200-48%2021.5-48%2048%200%2015.1%207.1%2029.3%2019.2%2038.4l208%20156c17.1%2012.8%2040.5%2012.8%2057.6%200l208-156c12.1-9.1%2019.2-23.3%2019.2-38.4%200-26.5-21.5-48-48-48L48%2064zM0%20196L0%20384c0%2035.3%2028.7%2064%2064%2064l384%200c35.3%200%2064-28.7%2064-64l0-188-198.4%20148.8c-34.1%2025.6-81.1%2025.6-115.2%200L0%20196z%22%2F%3E%3C%2Fsvg%3E");
}

/* 補助要素
   ------------------------------------------------------------ */

.markdown-rendered blockquote {
  background: transparent;
  border-left: 3px solid var(--ss-text);
  color: var(--ss-text);
  font-feature-settings: var(--ss-font-feature-settings);
  font-kerning: normal;
  letter-spacing: 0;
  line-height: 1.75;
  margin: 6px 0;
  padding: 0 14.4px;
  text-align: justify;
  text-rendering: optimizeLegibility;
}

.markdown-rendered blockquote p {
  font-feature-settings: inherit;
  font-kerning: inherit;
  letter-spacing: inherit;
  line-height: 1.75;
  margin: 0;
  text-align: inherit;
  text-rendering: inherit;
}

.markdown-rendered hr {
  border-color: var(--ss-border);
  margin: 2.5em 0;
}

.backlinks {
  border-top-color: var(--ss-border);
  font-size: 13.5px;
  line-height: 1.6;
  margin-top: 32px;
  padding-top: 32px;
}

.backlinks .published-section-header,
.backlinks .backlink-items-container,
.backlinks .backlink-item,
.backlinks a {
  font-size: 13.5px !important;
  line-height: 1.6 !important;
}

.site-footer,
.site-footer a,
.publish-footer,
.published-container .site-footer,
.published-container .publish-footer,
[class*='powered-by'],
[class*='poweredBy'],
a[href*='obsidian.md/publish'] {
  display: none !important;
}

/* モバイル表示
   ------------------------------------------------------------ */

@media (max-width: 1000px) {
  :root,
  .published-container {
    --header-height: 44px;
    --page-side-padding: 16px;
    --sidebar-left-width: min(264px, 86vw);
    --ss-h1-size: 23px;
    --ss-h2-size: 20.8px;
    --ss-h3-size: 19px;
    --ss-mobile-menu-left: 40px;
    --ss-page-top: 24px;
  }

  .site-body {
    width: 100%;
  }

  .site-body-center-column {
    flex: 1 1 auto;
    min-width: 0;
    width: 100%;
  }

  .site-body-center-column .render-container-inner,
  .publish-renderer {
    flex-basis: auto;
    max-width: none;
    transform: none;
    width: 100%;
  }

  .published-container.has-navigation .site-header,
  .site-header,
  .published-container.has-navigation .site-body-left-column,
  .site-body-left-column,
  .published-container.has-navigation.is-left-column-open .site-body-left-column {
    background: var(--ss-rail-bg) !important;
  }

  .published-container.has-navigation .site-header,
  .site-header {
    align-items: center;
    border-bottom: 1px solid var(--ss-border);
    column-gap: 10px;
    display: flex !important;
    height: var(--header-height);
    min-height: var(--header-height, 44px);
    padding: 0 14px;
    position: sticky;
    top: 0;
    z-index: 100;
  }

  .published-container.has-navigation .site-header .clickable-icon,
  .site-header .clickable-icon {
    align-items: center;
    color: var(--ss-text);
    display: flex !important;
    flex: 0 0 24px;
    height: var(--header-height);
    justify-content: center;
    margin: 0 !important;
    min-width: 24px;
    padding: 0 !important;
    transition: none !important;
    width: 24px;
  }

  .published-container.has-navigation .site-header .clickable-icon:hover,
  .published-container.has-navigation .site-header .clickable-icon:focus-visible,
  .published-container.has-navigation .site-header .clickable-icon:active,
  .site-header .clickable-icon:hover,
  .site-header .clickable-icon:focus-visible,
  .site-header .clickable-icon:active {
    background: transparent !important;
    color: var(--ss-text) !important;
    opacity: 1 !important;
  }

  .published-container.has-navigation .site-header .clickable-icon svg,
  .published-container.has-navigation .site-header .clickable-icon svg *,
  .site-header .clickable-icon svg,
  .site-header .clickable-icon svg * {
    opacity: 1 !important;
    stroke: currentColor !important;
    stroke-width: 1.6px !important;
    transition: none !important;
    vector-effect: non-scaling-stroke;
  }

  .published-container.has-navigation .site-header .clickable-icon svg,
  .site-header .clickable-icon svg {
    height: 20px;
    width: 20px;
  }

  .published-container.has-navigation .site-header .site-header-text,
  .site-header .site-header-text {
    flex: 0 1 auto;
    line-height: var(--header-height);
    margin: 0 !important;
    padding: 0 !important;
    text-decoration: underline !important;
    text-decoration-color: var(--ss-accent) !important;
    text-decoration-thickness: 0.07em;
    text-underline-offset: 0.15em;
    white-space: nowrap;
  }

  .published-container.has-navigation .site-header .site-header-text:hover,
  .published-container.has-navigation .site-header .site-header-text:focus-visible,
  .published-container.has-navigation .site-header .site-header-text:active,
  .published-container.has-navigation .site-header .site-header-text:visited,
  .site-header .site-header-text:hover,
  .site-header .site-header-text:focus-visible,
  .site-header .site-header-text:active,
  .site-header .site-header-text:visited {
    /* スマホではタップ・訪問済み状態で下線色が黒へ戻らないよう、見出しリンクの状態を固定する。 */
    color: var(--ss-text) !important;
    text-decoration: underline !important;
    text-decoration-color: var(--ss-accent) !important;
  }

  .published-container.has-navigation .site-body-left-column,
  .site-body-left-column {
    bottom: 0;
    box-shadow: 8px 0 20px rgba(15, 17, 19, 0.05);
    display: block !important;
    left: 0;
    max-width: 86vw;
    overflow-y: auto;
    position: fixed;
    top: var(--header-height, 44px);
    transform: translateX(-100%);
    transition: transform 0.18s ease;
    width: var(--sidebar-left-width);
    z-index: 99;
  }

  /* Obsidian標準の左カラムを、スマホではハンバーガーから開くドロワーとして使う。 */
  .published-container.has-navigation.is-left-column-open .site-body-left-column,
  .published-container.is-left-column-open .site-body-left-column {
    transform: translateX(0);
  }

  .site-body-left-column .site-body-left-column-inner {
    box-sizing: border-box;
    min-height: calc(100vh - 44px);
    padding: 40px 28px 104px var(--ss-mobile-menu-left);
    position: relative;
  }

  .site-body-left-column .nav-view,
  .site-body-left-column .nav-view-outer,
  .site-body-left-column .tree-item-children {
    margin: 0 !important;
    text-align: left;
  }

  .site-body-left-column .nav-view {
    padding: 0 !important;
  }

  .site-body-left-column .tree-item-children {
    padding: 0 !important;
  }

  .site-body-left-column .nav-view-outer {
    max-height: none;
    max-width: calc(var(--sidebar-left-width) - 68px);
    overflow: visible;
    padding: 0 0 96px !important;
  }

  .site-body-left-column .tree-item {
    margin: 0 0 6px !important;
    padding: 0 !important;
  }

  .site-body-left-column .nav-view-outer .tree-item:has(> .tree-item-self.mod-root) > .tree-item-children {
    gap: var(--ss-nav-section-gap);
  }

  .site-body-left-column .nav-view-outer .tree-item:has(> .tree-item-self.mod-root) > .tree-item-children > .tree-item {
    margin: 0 !important;
  }

  .site-body-left-column .nav-view-outer .tree-item:has(> .tree-item-self.mod-collapsible) > .tree-item-self {
    margin-bottom: 0 !important;
  }

  .site-body-left-column .nav-view-outer .tree-item:has(> .tree-item-self.mod-collapsible) > .tree-item-children {
    gap: var(--ss-nav-item-gap);
    padding-left: var(--ss-nav-child-indent) !important;
    padding-top: var(--ss-nav-item-gap) !important;
  }

  .site-body-left-column .nav-view-outer .tree-item:has(> .tree-item-self.mod-collapsible) > .tree-item-children > .tree-item {
    margin: 0 !important;
  }

  .site-body-left-column .tree-item-self {
    align-items: center;
    border-radius: 0 !important;
    box-shadow: none !important;
    display: flex;
    justify-content: flex-start;
    line-height: 1.36;
    margin-left: 0 !important;
    min-height: 0;
    overflow: visible;
    padding: 0 !important;
    width: 100%;
  }

  .site-body-left-column .tree-item-inner {
    border-inline-start: 0 !important;
    border-left: 0 !important;
    box-shadow: none !important;
    line-height: var(--ss-nav-line-height);
    margin: 0 !important;
    max-width: none;
    padding: 0 !important;
    width: 100%;
  }

  .site-body-left-column .nav-view-outer .tree-item:has(> .tree-item-self.mod-collapsible) > .tree-item-children .tree-item-self {
    min-height: calc(var(--ss-nav-child-size) * var(--ss-nav-child-line-height));
  }

  .site-body-left-column .nav-view-outer .tree-item:has(> .tree-item-self.mod-collapsible) > .tree-item-children .tree-item-inner,
  .site-body-left-column .nav-view-outer .tree-item:has(> .tree-item-self.mod-collapsible) > .tree-item-children .tree-item-self.is-clickable {
    font-size: var(--ss-nav-child-size) !important;
    line-height: var(--ss-nav-child-line-height) !important;
  }

  .site-body-left-column .nav-view-outer .tree-item-children .tree-item-children .tree-item-self,
  .site-body-left-column .nav-view-outer .tree-item-children .tree-item-children .tree-item-inner,
  .site-body-left-column .nav-view-outer .tree-item-children .tree-item-children .tree-item-self.is-clickable,
  .site-body-left-column .nav-view-outer .tree-item-children .tree-item-children a {
    font-size: var(--ss-nav-child-size) !important;
    line-height: var(--ss-nav-child-line-height) !important;
  }

  .site-body-left-column .search-view-outer {
    bottom: 40px;
    left: var(--ss-mobile-menu-left);
    margin: 0;
    padding: 0 !important;
    position: absolute;
    width: calc(var(--sidebar-left-width) - 68px);
  }

  .site-body-left-column .search-view-container,
  .site-body-left-column .search-view-container:focus-within,
  .site-body-left-column .search-input-container,
  .site-body-left-column .search-input-container input,
  .site-body-left-column .search-view-container .search-bar,
  .site-body-left-column .search-view-container:focus-within .search-input-container,
  .site-body-left-column .search-view-container:focus-within .search-input-container input,
  .site-body-left-column .search-view-container:focus-within .search-bar {
    box-sizing: border-box !important;
    flex: 0 0 calc(var(--sidebar-left-width) - 68px);
    height: 28px;
    margin: 0 !important;
    padding: 0 !important;
    width: calc(var(--sidebar-left-width) - 68px);
  }

  .site-body-left-column .search-input-container input,
  .site-body-left-column .search-view-container .search-bar,
  .site-body-left-column .search-view-container:focus-within input,
  .site-body-left-column .search-view-container:focus-within .search-bar {
    background: var(--ss-paper);
    color: var(--ss-text);
    cursor: text;
    height: 28px;
    min-height: 28px;
    padding: 0 0 0 27px !important;
  }

  .site-body-left-column .search-view-outer:focus-within,
  .site-body-left-column .search-view-container:focus-within,
  .site-body-left-column .search-view-container:focus-within .search-input-container,
  .site-body-left-column .search-view-container:focus-within .search-input-container input,
  .site-body-left-column .search-view-container:focus-within .search-bar {
    width: calc(var(--sidebar-left-width) - 68px);
  }

  .site-body-left-column .search-view-container:focus-within,
  .site-body-left-column .search-view-container:focus-within .search-input-container,
  .site-body-left-column .search-view-container:focus-within .search-input-container input,
  .site-body-left-column .search-view-container:focus-within .search-bar {
    flex-basis: calc(var(--sidebar-left-width) - 68px);
  }

  .site-body-left-column .search-view-container:focus-within input,
  .site-body-left-column .search-view-container:focus-within .search-bar {
    background: var(--ss-paper);
    color: var(--ss-text);
    cursor: text;
    padding-left: 27px !important;
  }

  .site-body-left-column .published-search-icon {
    color: var(--ss-text);
    left: 6px;
  }

  .site-body-left-column .search-view-container:focus-within .published-search-icon {
    left: 6px;
  }

  .site-body-left-column .published-search-icon svg {
    height: 15px;
    width: 15px;
  }

  .markdown-rendered {
    font-size: 16px;
    line-height: 1.75;
    text-align: justify;
  }
}
