@charset "utf-8";
/*  **********************
decoration.css：10pressで配布しているてがろぐスキン用共通スタイルシートです
Ver. 2025/02/26 23:20
https://10prs.com
 ************************ */
/*  **********************
汎用スタイル
 ************************ */
*,
*::before,
*::after {
  box-sizing: border-box;
}

/* スクロール関連 */
html {
  scroll-behavior: smooth;
  scrollbar-width: thin;
}

/* ダイアログ表示時背景スクロール禁止 */
html:has(dialog[open]),
html:has(#quickpost_toggle:checked) {
  overflow: hidden;
}

/* <body> */
body {
  margin: auto;
  /* 文字詰め */
  font-feature-settings: "palt";
  text-spacing-trim: trim-start;
  /* 禁則処理*/
  overflow-wrap: anywhere;
  word-break: auto-phrase;
  line-break: strict;
}

/* 画像などのはみだし防止 */
img,
iframe,
audio,
video {
  max-width: 100%;
}

/* 画像への操作無効 */
img {
  user-select: none;
  -webkit-user-drag: none; /* Chrome, Safari, Opera */
  -khtml-user-drag: none; /* Konqueror */
  -moz-user-select: none; /* Firefox */
  -o-user-drag: none; /* Opera */
}
img:not(#CemojiList .oneCemoji .cemoji img) {
  pointer-events: none;
}
.imagelink {
  -webkit-user-drag: none; /* Chrome, Safari, Opera */
  -khtml-user-drag: none; /* Konqueror */
  user-select: none;
  -moz-user-select: none; /* Firefox */
  -o-user-drag: none; /* Opera */
  /* user-drag: none; Standard property */
}

/* ルビ */
ruby {
  position: relative;
  ruby-position: over;
}

/* フォーム関連 */
/* iOSでのデフォルトスタイルをリセット */
button {
  -webkit-box-sizing: content-box;
  -webkit-appearance: button;
  -moz-appearance: button;
  appearance: button;
  border: none;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}
button::-webkit-search-decoration {
  display: none;
}
button::focus {
  outline-offset: -2px;
}
button,
[type="button"],
[type="submit"],
label {
  cursor: pointer;
}
[type="input"],
textarea,
select {
  border-style: solid;
  border-width: 1px;
}
select {
  -moz-appearance: menulist-button;
  -webkit-appearance: menulist-button;
  appearance: menulist-button;
}
textarea {
  field-sizing: content;
  width: 100%;
  min-width: 150px;
  min-height: 3lh;
}

/* details */
details summary {
  list-style: none;
  cursor: pointer;
}
/* iOSでのデフォルトスタイルをリセット */
details summary::-webkit-details-marker {
  display: none;
}
/* detailsが開き方をスムーズアニメーションに
-- ※details直下に開くコンテンツを囲むdivが必要です */
details[open] div {
  animation: accordion 0.4s linear;
  overflow: hidden;
}
@keyframes accordion {
  0% {
    opacity: 0;
    height: 0;
  }
  70% {
    opacity: 0;
    height: 100px;
  }
  100% {
    opacity: 1;
  }
}

/* table */
table {
  border-collapse: collapse;
}

/* 中身のない要素を非表示 */
:not(img)*:empty {
  margin: 0;
  padding: 0;
  display: none;
}
/* a */
a {
  text-decoration: none;
}
/* pre */
pre,
pre[class*="language-"],
code[class*="language-"] {
  max-width: 100% !important;
  overflow: auto !important;
  word-break: break-all !important;
}

/* Twemoji用 */
img.emoji {
  margin: 0 0.05em 0 0.1em;
  height: 1em;
  width: 1em;
  vertical-align: -0.1em;
}

/* ローディング画面：HTML：<div id="preloader"><div class="loader"><!-- loading --></div></div>
-- addon.jsがないとページ読み込みが終わってもローディング画面が消えないことに注意が必要です */
#preloader {
  width: 100%;
  height: 100vh;
  display: grid;
  place-content: center;
  position: fixed;
  background-color: #fff;
  z-index: 999999;
  opacity: 0.9;
  transition: opacity 1s ease-out;
}
/* ローディングアニメは https://css-loaders.com/ からCSSをコピーするなどしてスキンごとのCSSで設定してください
.loader {

}
 */

/*  **********************
てがろぐ機能用
 ************************ */
/* カテゴリアイコンを設定しているとき
-- 記事表示部分内・カテゴリツリー内 */
.categoryicon img,
.caticon img {
  height: 1.2em;
  width: auto;
  vertical-align: middle;
  margin: 0 1px;
}

/* もっと読む・畳むボタンを開閉したときの挙動用 */
.readmorebutton {
  margin-top: 0.4em;
  transform: translateY(-0.3em);
}

/* 隠しハッシュタグ非表示 */
.taglink[title^="-"] {
  display: none !important;
}

/*  **********************
投稿画像：
	-- [PICT:FIG:ファイルパス] - figure.embeddedpictbox>(a.imagelink>img.embeddedimage)+figcaption
	-- [PICT:ファイルパス] - a.imagelink>img.embeddedimage
	-- [PICT:MP4ファイルパス]（※addon.jsが必要です） - span.imagelink>video.embeddedimage
	-- NSFWフラグ付 - すべての要素に.nsfwが付きます
	-- 一覧外 - すべての要素に.nolistedが付きます
新着画像リスト：
	-- span.imagelistitem>a.imagesearch>img.oneimage
	-- NSFWフラグ付 - span.imagelistitem>a.imagesearch>img.oneimage.nsfw
	-- 一覧外 - そもそも出力されない
【設定＞（投稿本文内画像/ギャラリーモード）＞画像を(原寸画像への)リンクにするのチェック】を外した場合
	-- NSFWフラグ付 - img.embeddedimage.nsfw
	-- ※NSFWフラグ付き画像の目隠しはimg.nsfwの親要素に作っているので別のスタイルになります。基本的に上記のチェックは外さないでください
 ************************ */
/* キャプション付ボックス */
.embeddedpictbox {
  display: inline-table;
  border-collapse: collapse;
  position: relative;
}
.embeddedpictbox figcaption {
  padding: 3px;
  display: table-caption;
  caption-side: bottom;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  color: #fff;
  background: rgba(0, 0, 0, 0.3);
  font-size: 0.8em;
  text-align: center;
}

/* 画像リンク */
.imagelink,
.imagesearch {
  display: inline-block;
  line-height: 1;
  position: relative;
  overflow: hidden;
  vertical-align: middle; /* ソース内改行による余白除け */
  border: 0.5px solid #ccc;
}

/* 画像 */
img.embeddedimage {
  width: auto;
  height: auto;
  max-height: 500px;
  vertical-align: middle;
  object-fit: cover;
  transition: 1s;
}
:where(.imagelink, .imagesearch):hover img.embeddedimage {
  transform: scale(1.05);
}

@media (width < 520px) {
  img.embeddedimage {
    max-height: 300px;
  }
}

/* NSFWフラグ付
	-- ※基本的にNSFWフラグ付き画像の目隠しはimg.nsfwの親要素に作っています */
:where(.imagelink, .imagesearch):has(> .nsfw)::after {
  content: url('data:image/svg+xml;utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="2em" height="2em" viewBox="0 -960 960 960" fill="%23ffffff"><path d="m40-120 440-760 440 760H40Zm138-80h604L480-720 178-200Zm302-40q17 0 28.5-11.5T520-280q0-17-11.5-28.5T480-320q-17 0-28.5 11.5T440-280q0 17 11.5 28.5T480-240Zm-40-120h80v-200h-80v200Zm40-100Z"/></svg>');
  /* https://fonts.google.com/icons?selected=Material+Symbols+Outlined:warning:FILL@0;wght@400;GRAD@0;opsz@24&icon.size=24&icon.color=%23FFFFFF&icon.query=alert */
  display: grid;
  place-content: center;
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  color: #fff;
  background-color: rgba(0, 0, 0, 0.7);
  font-size: 2em;
  font-weight: 900;
  backdrop-filter: blur(20px);
  transition: 1s;
}
a.nsfw:hover::after {
  backdrop-filter: blur(10px);
}
.imagesearch:has(.nsfw)::after {
  backdrop-filter: blur(5px);
}

/* NSFWフラグ付の画像 */
:where(.imagelink, .imagesearch) img.nsfw {
  filter: grayscale(0.7);
}
:where(.imagelink, .imagesearch):hover img.nsfw {
  filter: grayscale(0);
}

/* リンクが張られていないNSFWフラグ付の画像 */
:not(a) > :not(video).embeddedimage.nsfw {
  overflow: hidden;
  filter: grayscale(1) opacity(0.3) blur(5px);
  transition: 1s;
}
:not(a) > :not(video).embeddedimage.nsfw:hover {
  filter: grayscale(0) opacity(1) blur(0);
}

/* NSFWフラグ付mp4（※addon.jsが必要です） */
:has(video.nsfw):hover::after {
  height: 0;
  opacity: 0;
}

/*  **********************
カスタム絵文字・他埋め込み要素
 ************************ */
/* カスタム絵文字 */
span.cemoji {
  display: inline-block;
  mix-blend-mode: multiply;
}
.cemoji img {
  width: auto;
  height: 1.7em;
  vertical-align: middle;
  /* デフォ設定ではインラインスタイルにvertical-align: middle;が出力される */
  /* image-rendering: pixelated; */
}

/* 埋め込みツイート・動画のサイズ */
div.twitter-tweet {
  max-width: 349px !important;
}
iframe.instagram-media.instagram-media-rendered {
  min-width: revert !important;
}
.embeddedmovie,
.embeddedmusic {
  display: inline-block;
  max-width: 100%;
}

/*  **********************
てがろぐ自由装飾
 ************************ */
/* リスト */
.decorationL {
  padding-left: 1.5em;
}
/* 強調のデフォルトスタイルをリセット */
.decorationE {
  font-style: normal;
  font-weight: bold;
}
/* 引用のデフォルトスタイルをリセット */
.decorationQ {
  margin-block: 1em;
}
.decorationQ::before,
.decorationQ::after {
  content: none;
}

/* ボタンぽいリンク：例：[リンクテキスト:CL(btn)]https://eample.com */
.uc-btn {
  margin: 0.5em auto;
  padding: 1em;
  border: 2px solid;
  display: inline-block;
  color: currentColor;
}

/* すごい斜め：例：[I:[I:斜体をさらに斜めに]] */
.decorationI .decorationI {
  transform: skewX(-30deg);
  font-style: normal;
  display: inline-block;
  font-size: 0.94em;
}

/* すごい打消し：例：[D:[D:さらに打消し]] */
.decorationD .decorationD {
  display: inline-block;
  position: relative;
  text-decoration: none;
  z-index: 1;
}
.decorationD .decorationD::before {
  content: "";
  display: inline-block;
  width: 100%;
  height: 0.5em;
  position: absolute;
  top: 0.55em;
  left: 0;
  z-index: -1;
  background-color: currentColor;
  opacity: 1;
  transition: 0.3s;
}
.decorationD:is(:hover, :active) .decorationD::before {
  opacity: 0.6;
}

/* HTML・CSS類コード用：例：[F:code:<h1>大見出し</h1>] */
[class*="deco-code"],
pre,
code {
  font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
}

/* ぼかし：例：[F:bokashi:ぼかし] */
.deco-bokashi {
  filter: blur(0.3em);
  transition: 0.3s;
}
.deco-bokashi:is(:hover, :active) {
  filter: revert;
}

/* 横並びリスト：例：[L:yoko:～～] */
.decorationL.listdeco-yoko {
  padding-left: 0;
  li {
    padding: 0;
    display: inline;
  }
  li:not(:first-child)::before {
    content: " / ";
  }
}

/* 画像（+文章）をカードのように並べるリスト：例：[L:cards:[PICT:xxx.jpg]文章] */
.decorationL.listdeco-cards {
  padding-left: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 1em 0.8em;
  grid-template-rows: auto;
  li {
    padding: 0.2em;
    list-style: none;
    box-shadow: 0 0 3px #c0c0c0;
    background-color: #fff;
  }
  img {
    width: 100%;
    max-width: 100%;
    aspect-ratio: 320/240;
    object-position: top center;
  }
  a {
    font-weight: bold;
  }
}

/* 中央寄せ：例：[F:center:中央寄せ] */
.deco-center {
  display: block;
  text-align: center;
}

/* 右寄せ：例：[F:right:右寄せ] */
.deco-right {
  display: block;
  text-align: right;
}

/* 非表示：例：[F:hidden:非表示] */
.deco-hidden {
  display: none;
}

/* 各ブロック要素の次の改行タグを無効に */
:is(.decorationQ, .decorationL, .deco-hr, .deco-center, .deco-right) + br {
  display: none;
}

/* 独自装飾・画像を旧ツイッターぽくまとめて表示：例：[F:twimage:[PICT:xxx.jpg][PICT:FIG:yyy.jpg]]
-- 【設定＞（...）＞画像を(原寸画像への)リンクにするのチェック】を外すと表示が乱れます
-- ※奇数個の画像を囲んでいい感じにするにはaddon.jsが必要です */
.deco-twimage {
  border: 1px solid rgb(207, 217, 222);
  display: flex;
  overflow: hidden;
  gap: 1px;
  flex-wrap: wrap;
  border-radius: 16px;
  > :is(.embeddedpictbox, .imagelink) {
    margin: 0;
    display: inline-block;
    width: calc(50% - 0.5px);
    height: 180px;
  }
  > .embeddedpictbox > .imagelink {
    margin: 0;
    display: inline-block;
    width: 100%;
    height: 180px;
  }
  .embeddedimage {
    width: 100%;
    height: 100%;
    max-height: fit-content;
    object-fit: cover;
  }
  br {
    display: none;
  }
}

/*  **********************
ワンクリックポストIDリンク挿入ボタン
クイックポスト：
-- #quickpost>.postarea>form.postform
	-- p.line-textarea>textarea.tegalogpost
	-- div.line-control
 ************************ */
/* ワンクリックポストIDリンク挿入ボタン */
.resbutton {
  margin: 1px auto;
  padding: 0 4px;
  border: 1px solid #cecece;
  width: fit-content;
  display: block;
  color: #333;
  background-color: #efefef;
  font-size: 0.8em;
  border-radius: 3px;
}

/* クイックポスト表示非表示トグル */
#quickpost_toggle,
#quickpost,
[for="quickpost_toggle"] span {
  display: none;
}

/* クイックポスト表示時 */
#quickpost_toggle:checked ~ #quickpost {
  display: block;
  width: 100%;
  height: 100vh;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 3;
  overflow: auto;
  [for="quickpost_toggle"] {
    display: block;
  }
  #close_form_btn {
    margin: auto;
    width: fit-content;
  }
  #close_form_btn::after {
    border: 2px solid #666;
    content: url('data:image/svg+xml;utf-8,<svg xmlns="http://www.w3.org/2000/svg" height="1.5em" viewBox="0 -960 960 960" width="1.5em" fill="%23666666"><path d="m256-200-56-56 224-224-224-224 56-56 224 224 224-224 56 56-224 224 224 224-56 56-224-224-224 224Z"/></svg>');
    /* https://fonts.google.com/icons?selected=Material+Symbols+Outlined:close:FILL@0;wght@400;GRAD@0;opsz@24&icon.size=24&icon.color=%23666666 */
    display: grid;
    place-content: center;
    width: 2.5em;
    height: 2.5em;
    line-height: 0.5em;
    position: absolute;
    top: -1em;
    right: -1em;
    background-color: #efefef;
    border-radius: 100vmax;
  }
  #close_form_bg {
    width: 100%;
    height: 100dvh;
    position: fixed;
    top: 0;
    left: 0;
    z-index: -1;
    background-color: rgba(0, 0, 0, 0.6);
  }
}

/* フォーム表示エリア */
.postarea {
  margin: 1.5em;
  padding-bottom: 1em;
  position: relative;
  color: #333;
  background-color: #efefef;
  .postform {
    padding: 1em;
  }
  /* 設定で日時自由記入OKにした時 */
  input[name="datetime"] {
    margin-bottom: 2px;
    padding: 0 0 0 2px;
    border: 1px solid rgba(0, 0, 0, 0.3);
    background-color: #fff;
  }
}

/* field-sizingがFirefoxに対応するまで以下でテキストエリア自動拡大
- https://css-tricks.com/the-cleanest-trick-for-autogrowing-textareas/ */
.line-textarea {
  display: grid;
}
.line-textarea::after {
  padding: 0.5em;
  content: attr(data-replicated-value) " ";
  white-space: pre-wrap;
  visibility: hidden;
}
.line-textarea > textarea {
  padding: 0.5em;
  border: 1px solid rgba(0, 0, 0, 0.3);
  width: 100%;
  line-height: 1.2;
  overflow-wrap: break-word;
  overflow: auto;
  background-color: #fff;
  resize: none;
  overflow: hidden;
}
.line-textarea > textarea,
.line-textarea::after {
  font: inherit;
  grid-area: 1 / 1 / 2 / 2;
}
@media (width < 800px) {
  textarea.tegalogpost {
    font-size: 16px;
    padding: 0.4em;
  }
}
textarea.tegalogpost {
  padding: 0.5em;
  border: 1px solid rgba(0, 0, 0, 0.3);
  width: 100%;
  line-height: 1.2;
  overflow-wrap: break-word;
  overflow: auto;
  background-color: #fff;
}
textarea.tegalogpost:not([style*="calc"]) {
  height: unset !important;
}

/* 以下ほぼてがろぐ公式のままです */
/* 投稿ボタン・字数カウンタなど */
.line-control {
  margin-top: 0.25em;
}
.postbutton[type="submit"] {
  display: inline-block;
  color: #fff;
  background: #333;
  font-weight: bold;
  text-decoration: none;
  padding: 0.25em 2em;
}
.postbutton:hover {
  background-color: #aaa;
}

/* 装飾ボタン */
.line-control {
  margin-top: 0.5em;
  input,
  select,
  button {
    margin: 1px;
    padding: 0 4px;
    border: 1px solid #aaa;
    min-width: 32px;
    min-height: 28px;
    display: inline-block;
    color: inherit;
    background-color: #eee;
    font-size: 14px;
    border-radius: 3px;
    vertical-align: middle;
  }
  :where(input:not(.postbutton), select, button):hover {
    background-color: #e5f1fb;
    border-color: #0078d7;
  }
}
@media (width < 800px) {
  .decoBtns {
    margin-top: 0;
  }
}
.decoBtnB {
  font-weight: bold;
}
.decoBtnD {
  text-decoration: line-through red double;
}
.decoBtnE {
  font-weight: bold;
  color: blue;
}
.decoBtnI {
  font-style: italic;
}
.decoBtnT {
  font-size: 11px !important;
}
.decoBtnU {
  text-decoration: underline red;
}
.decoBtnC {
  color: red;
}
.decoBtnM {
  color: blue;
}

/* カテゴリ選択チェックボックス */
.catChecks {
  font-size: 0.9em;
  padding-top: 0.5em;
  label {
    display: inline-block;
    margin: 0 0.75em 0 0;
  }
  label:hover {
    text-decoration: underline;
  }
  input {
    min-width: 0;
    min-height: 0;
    margin-right: 0.2em;
  }
}

/* 投稿欄下部：「鍵付き」チェックボックスと「個別鍵」ボタンの間を詰める一時的なスタイル */
.funcUIs .catChecks {
  margin: 0 0.75em 0 0;
  label {
    margin: 0;
  }
}

/* カスタム絵文字ピッカー(その1) | Takotubo Club
https://10rin0.github.io/takodoc/tegalog/%E3%83%91%E3%83%BC%E3%83%84/cemoji_01/ */
.cepicker {
  margin: 10px auto;
  padding: 5px 0;
  max-height: 300px;
  overflow-y: auto;
  background-color: var(--light-bg-color);
  #CemojiList {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px 3px;
  }
  .oneCemoji {
    display: inline-grid;
    justify-items: center;
    padding: 2px;
    background-color: var(--main-bg-color);
  }
  .cename,
  .cectrl {
    display: none;
  }
  .oneCemoji img {
    height: 2em;
    cursor: pointer;
  }
}
.cepicker:empty {
  display: none;
}

/* 画像一覧取得 */
.postarea {
  summary {
    margin: 10px auto;
    padding: 0.2em 0.5em;
    width: fit-content;
    display: flex;
    align-items: center;
    background-color: #eee;
  }
  summary::after {
    margin: 3px 0.25em;
    display: grid;
    place-content: center;
    width: 20px;
    height: 20px;
    line-height: 0.5em;
    content: url('data:image/svg+xml;utf-8,<svg xmlns="http://www.w3.org/2000/svg" height="18px" viewBox="0 -960 960 960" width="18px" fill="%23ffffff"><path d="M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z"/></svg>');
    background-color: #666;
    border-radius: 100vmax;
    transition: 0.5s;
    transform: rotate(90deg);
  }
  details[open] summary::after {
    transform: rotate(-90deg);
  }
  .img_list {
    width: 100%;
    overflow-x: scroll;
  }
}
.postarea .images.standard {
  :is(.embcode *, img[src$=".mp3"], img[src$=".mp4"]) {
    display: none;
  }
  td:has(img[src$=".mp3"])::before {
    display: block;
    width: 100px;
    content: "mp3";
    font-size: 1.2em;
    font-weight: bold;
    text-align: center;
  }
  td:has(img[src$=".mp4"])::before {
    display: block;
    width: 100px;
    content: "mp4";
    font-size: 1.2em;
    font-weight: bold;
    text-align: center;
  }
  .embcode :is(.codeui, .codeui input[type="text"]) {
    display: block;
  }
  tr {
    padding: 0 0.25em;
    display: table-cell;
    background-color: #efefef;
  }
  tr:nth-child(even) {
    background-color: #e0e0e0;
  }
  td {
    font-size: 0.7em;
  }
  img {
    max-width: 100px;
    max-height: 100px;
    width: auto;
    height: auto;
  }
}
/* 画像アップロード拡張 */
.ex_uploader {
  font-size: 0.8em;
}
/*  **********************
他：
 ************************ */
