/* 全画面テーマ（プリセット）。変数は html に定義し .app-navbar / body で利用。 */

html {
  --app-body-bg: #f8f9fa;
  --app-body-color: #212529;
  --app-muted-color: #6c757d;
  --app-nav-surface-1: #dce8d4;
  --app-nav-surface-2: #c8d9bc;
  /* チャット未読（現在地リング --app-nav-accent とは色分け） */
  --app-nav-chat-unread: #b45309;
  --app-nav-accent: #7b9e6b;
  --app-nav-text: #2d3a2b;
  --app-nav-text-soft: #4a5c47;
  --app-nav-border: rgba(123, 158, 107, 0.4);
  --app-nav-shadow: rgba(60, 90, 50, 0.1);
  --app-dropdown-bg: #fff;
  --app-dropdown-color: #212529;
  --app-dropdown-border: rgba(0, 0, 0, 0.1);
  --app-main-content-bg: color-mix(in srgb, var(--app-nav-surface-1) 32%, var(--app-body-bg));
  --app-main-content-grid: rgba(123, 158, 107, 0.12);
  --app-main-content-inline-padding: 8rem;
}

html[data-app-theme="light"] {
  --app-body-bg: #f8f9fa;
  --app-body-color: #212529;
  --app-muted-color: #6c757d;
  --app-nav-surface-1: #dce8d4;
  --app-nav-surface-2: #c8d9bc;
  --app-nav-accent: #7b9e6b;
  --app-nav-text: #2d3a2b;
  --app-nav-text-soft: #4a5c47;
  --app-nav-border: rgba(123, 158, 107, 0.4);
  --app-nav-shadow: rgba(60, 90, 50, 0.1);
  --app-dropdown-bg: #fff;
  --app-dropdown-color: #212529;
  --app-dropdown-border: rgba(0, 0, 0, 0.1);
}

html[data-app-theme="natural"] {
  --app-body-bg: #f5f7f3;
  --app-body-color: #2a3328;
  --app-muted-color: #5a6b55;
  --app-nav-surface-1: #d0e0c8;
  --app-nav-surface-2: #b8cfac;
  --app-nav-accent: #6d8f5e;
  --app-nav-text: #2a3328;
  --app-nav-text-soft: #4d5c48;
  --app-nav-border: rgba(90, 120, 75, 0.45);
  --app-nav-shadow: rgba(50, 80, 40, 0.12);
  --app-dropdown-bg: #fafcf8;
  --app-dropdown-color: #2a3328;
  --app-dropdown-border: rgba(90, 120, 75, 0.2);
}

html[data-app-theme="gradient"] {
  --app-body-bg: transparent;
  --app-body-color: #212529;
  --app-muted-color: #6c757d;
  --app-nav-surface-1: #dce8d4;
  --app-nav-surface-2: #c8d9bc;
  --app-nav-accent: #7b9e6b;
  --app-nav-text: #2d3a2b;
  --app-nav-text-soft: #4a5c47;
  --app-nav-border: rgba(123, 158, 107, 0.4);
  --app-nav-shadow: rgba(60, 90, 50, 0.1);
  --app-dropdown-bg: #fff;
  --app-dropdown-color: #212529;
  --app-dropdown-border: rgba(0, 0, 0, 0.1);
}

html[data-app-theme="gradient"] body.app-body {
  background: linear-gradient(180deg, #fafbf8 0%, #e8f0e0 55%, #dde8d6 100%);
  background-attachment: fixed;
  min-height: 100vh;
}

html[data-app-theme="dark"] {
  --app-body-bg: #1e2622;
  --app-body-color: #e8ebe7;
  --app-muted-color: #a8b5a3;
  --app-nav-surface-1: #2f3d35;
  --app-nav-surface-2: #253028;
  /* ダーク: 白ピル上で未読が読める色 */
  --app-nav-chat-unread: #ea580c;
  --app-nav-accent: #8fbc8f;
  --app-nav-text: #e8ebe7;
  --app-nav-text-soft: #c5d4c0;
  --app-nav-border: rgba(120, 160, 110, 0.35);
  --app-nav-shadow: rgba(0, 0, 0, 0.35);
  --app-dropdown-bg: #2a352f;
  --app-dropdown-color: #e8ebe7;
  --app-dropdown-border: rgba(120, 160, 110, 0.25);
  --app-main-content-bg: color-mix(in srgb, var(--app-nav-surface-1) 45%, var(--app-body-bg));
  --app-main-content-grid: rgba(197, 224, 180, 0.1);
}

body.app-body {
  background-color: var(--app-body-bg);
  color: var(--app-body-color);
  transition: background-color 0.2s ease, color 0.2s ease;
}

html[data-app-theme="dark"] .text-muted {
  color: var(--app-muted-color) !important;
}

/* 詳細ページ「← ○○へ」戻りリンク（グレー基調・ホバー/フォーカス） */
.app-detail-back-link {
  color: var(--bs-secondary-color);
  text-decoration: none;
  transition: color 0.15s ease-in-out;
}

.app-detail-back-link:hover {
  color: var(--bs-body-color);
  text-decoration: underline;
}

.app-detail-back-link:focus-visible {
  color: var(--bs-body-color);
  text-decoration: underline;
  outline: 2px solid var(--bs-border-color);
  outline-offset: 2px;
  border-radius: 0.15rem;
}

/* 主コンテンツ内の汎用カード・表（ダーク） */
html[data-app-theme="dark"] main .table {
  --bs-table-bg: #2a352f;
  --bs-table-color: var(--app-body-color);
  color: var(--app-body-color);
  border-color: #3d4a42;
}

html[data-app-theme="dark"] main .table thead,
html[data-app-theme="dark"] main .table-light {
  --bs-table-bg: #323d37;
  --bs-table-color: var(--app-body-color);
  color: var(--app-body-color);
}

html[data-app-theme="dark"] main .bg-white,
html[data-app-theme="dark"] main .card {
  background-color: #2a352f !important;
  color: var(--app-body-color) !important;
  border-color: #3d4a42 !important;
}

html[data-app-theme="dark"] main .list-group-item {
  background-color: #2a352f;
  color: var(--app-body-color);
  border-color: #3d4a42;
}

/* 記事一覧行（お知らせ・部署メモ・旧GW 等）の区切り強調 */
.app-record-list .list-group-item {
  padding-top: 0.875rem;
  padding-bottom: 0.875rem;
  border-color: #adb5bd;
}

.app-record-list .list-group-item:nth-child(even) {
  background-color: rgba(0, 0, 0, 0.025);
}

.app-record-list .list-group-item-action:hover,
.app-record-list .list-group-item-action:focus,
.app-record-list .list-group-item:has(.stretched-link):hover,
.app-record-list .list-group-item:has(.stretched-link):focus-within {
  background-color: var(--app-nav-pill-hover-bg, #f0f4ee);
  color: var(--app-body-color, #212529);
}

.app-record-list .list-group-item-action,
.app-record-list .list-group-item .stretched-link,
.app-record-list .js-announcement-favorite-toggle,
.app-record-list [data-favorite-toggle] {
  touch-action: manipulation;
}

/* 一覧: 右カラム（日時＝詳細 / ★＝お気に入り） */
.app-record-list .app-record-list-actions {
  flex-shrink: 0;
}

.app-record-list .app-record-list-meta {
  min-height: 1.5rem;
  padding: 0.125rem 0;
}

.app-record-list .app-record-list-favorite {
  flex-shrink: 0;
}

.app-record-list .js-announcement-favorite-toggle,
.app-record-list [data-favorite-toggle] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
  z-index: 2;
  min-width: 2.75rem;
  min-height: 2.75rem;
  padding: 0.5rem;
}

.app-readable-max-width {
  max-width: 60rem;
  margin-inline: auto;
}

@media (min-width: 992px) {
  body.app-shell-layout .app-readable-max-width {
    max-width: none;
    margin-inline: 0;
  }
}

@media (min-width: 2000px) {
  .app-readable-max-width {
    max-width: 80rem;
  }
}

/* 投稿フォーム用（最大幅 80rem・中央寄せ） */
.app-form-wide-max-width {
  max-width: 80rem;
  margin-inline: auto;
}

.app-record-card {
  border-color: #adb5bd !important;
}

html[data-app-theme="dark"] main .app-record-list .list-group-item {
  border-color: #55665a;
}

html[data-app-theme="dark"] main .app-record-list .list-group-item:nth-child(even) {
  background-color: #243028;
}

html[data-app-theme="dark"] main .app-record-card {
  border-color: #55665a !important;
}

/* ダッシュボードウィジェット内の行区切り */
.js-dashboard-sortable .card-body li.border-bottom {
  border-bottom-color: #adb5bd !important;
}

html[data-app-theme="dark"] main .js-dashboard-sortable .card-body li.border-bottom {
  border-bottom-color: #55665a !important;
}

html[data-app-theme="dark"] main a.link-dark,
html[data-app-theme="dark"] main .text-dark {
  color: #c5e0b4 !important;
}

/* Django messages: info 相当を light にした分、ダークではカード面に揃える */
html[data-app-theme="dark"] main .alert-light {
  --bs-alert-bg: #2a352f;
  --bs-alert-color: var(--app-body-color);
  --bs-alert-border-color: #3d4a42;
  color: var(--app-body-color) !important;
  background-color: #2a352f !important;
  border-color: #3d4a42 !important;
}

/* 背景設定ドロップダウン（色・模様） */
.app-background-settings-menu.dropdown-menu,
.app-theme-menu.dropdown-menu {
  background-color: var(--app-dropdown-bg);
  color: var(--app-dropdown-color);
  border: 1px solid var(--app-dropdown-border);
}

.app-background-settings-menu .dropdown-header,
.app-theme-menu .dropdown-header {
  color: var(--app-muted-color);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

.app-background-color-swatches-row .dropdown-header {
  color: var(--app-muted-color);
}

.app-background-color-swatches {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.app-background-color-swatch {
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 50%;
  border: 2px solid rgba(0, 0, 0, 0.12);
  background-color: var(--swatch-color);
  padding: 0;
  flex-shrink: 0;
  cursor: pointer;
}

.app-background-color-swatch:hover,
.app-background-color-swatch:focus {
  border-color: var(--app-nav-accent);
}

.app-background-color-swatch.active {
  box-shadow: 0 0 0 2px var(--app-nav-accent);
  border-color: var(--app-nav-accent);
}

/* 方眼背景上の outline ボタン（カレンダー週開始など） */
.app-week-start-toggle .btn-outline-secondary:not(.active) {
  background-color: #fff;
  color: var(--app-body-color, #212529);
}

.app-week-start-toggle .btn-outline-secondary:not(.active):hover,
.app-week-start-toggle .btn-outline-secondary:not(.active):focus-visible {
  background-color: var(--bs-secondary, #6c757d);
  border-color: var(--bs-secondary, #6c757d);
  color: #fff;
}

.app-week-start-toggle .btn-outline-secondary.active,
.app-week-start-toggle .btn-outline-secondary.active:hover,
.app-week-start-toggle .btn-outline-secondary.active:focus-visible {
  background-color: var(--bs-secondary, #6c757d);
  border-color: var(--bs-secondary, #6c757d);
  color: #fff;
}

.app-background-settings-menu .dropdown-item,
.app-theme-menu .dropdown-item {
  color: var(--app-dropdown-color);
}

.app-background-settings-menu .dropdown-item:hover,
.app-background-settings-menu .dropdown-item:focus {
  background-color: var(--app-nav-pill-hover-bg, #f0f4ee);
  color: var(--app-body-color, #212529);
}

.app-theme-menu .dropdown-item:hover,
.app-theme-menu .dropdown-item:focus {
  background-color: var(--app-nav-surface-2);
  color: var(--app-nav-text);
}

.app-background-settings-menu .dropdown-item.active {
  background: color-mix(in srgb, var(--app-nav-accent, #5a8f4a) 14%, #fff);
  color: var(--app-nav-text, #2b3035);
  font-weight: 600;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--app-nav-accent, #5a8f4a) 35%, transparent);
}

html[data-app-theme="dark"] .app-background-settings-menu .dropdown-item.active,
html[data-app-theme="dark"] .app-background-settings-menu .dropdown-item:active,
html[data-app-theme="dark"] .app-theme-menu .dropdown-item.active,
html[data-app-theme="dark"] .app-theme-menu .dropdown-item:active {
  background-color: var(--app-nav-accent);
  color: #1a221e;
}

/* 複数行「本文」入力: 等幅フォントでインデントを揃える */
textarea.daily-report-body,
textarea.app-multiline-body {
  line-height: 1.5;
  tab-size: 2;
  font-family:
    "BIZ UDゴシック",
    "MS Gothic",
    "Osaka-Mono",
    ui-monospace,
    "Cascadia Mono",
    "Consolas",
    "Courier New",
    monospace;
}

/* コメント本文: 通常サイズ（Markdown でも small にしない） */
.app-comment-body {
  font-size: 1rem;
}

/* 旧グループウェア: 添付サムネイルのレイアウト崩れ防止 */
.xoops-archive-body img {
  max-width: 100%;
  height: auto;
  vertical-align: top;
}

.xoops-archive-body table {
  width: 100%;
  max-width: 100%;
}

/* 旧グループウェア: align=left 添付サムネイル（float）のはみ出し防止 */
.xoops-archive-body::after {
  content: "";
  display: table;
  clear: both;
}

/* プレーン表示: 改行をそのまま反映 */
.daily-report-body-display-plain,
.app-multiline-body-display-plain {
  line-height: 1.5;
  tab-size: 2;
  white-space: pre-wrap;
  word-break: break-word;
  overflow-wrap: break-word;
  font-family:
    "BIZ UDゴシック",
    "MS Gothic",
    "Osaka-Mono",
    ui-monospace,
    "Cascadia Mono",
    "Consolas",
    "Courier New",
    monospace;
}

/* スケジュール: 全社向け「その他」バッジ（紫） */
.bg-app-purple {
  background-color: #6f42c1 !important;
}

/* スケジュール: バッジ色モード（プロフィール設定） */
html[data-schedule-badge-mode="location"] .js-schedule-badge-recolor {
  background-color: var(--bs-body-bg, #fff) !important;
}
html[data-schedule-badge-mode="location"] .js-schedule-event-row[data-location="headquarters"] .js-schedule-badge-recolor {
  border: 1px solid var(--bs-primary) !important;
  color: var(--bs-primary) !important;
}
html[data-schedule-badge-mode="location"] .js-schedule-event-row[data-location="akita"] .js-schedule-badge-recolor {
  border: 1px solid var(--bs-danger) !important;
  color: var(--bs-danger) !important;
}
html[data-schedule-badge-mode="mono"] .js-schedule-badge-recolor {
  background-color: #fff !important;
  border: 1px solid #212529 !important;
  color: #212529 !important;
}

/* Markdown 表示: 段落・リストの余白を抑えて行間を詰める */
.daily-report-body-display-markdown,
.app-multiline-body-display-markdown {
  line-height: 1.35;
  word-break: break-word;
  overflow-wrap: break-word;
}

.daily-report-body-display-markdown > :last-child,
.app-multiline-body-display-markdown > :last-child {
  margin-bottom: 0;
}

.daily-report-body-display-markdown p,
.app-multiline-body-display-markdown p {
  margin-bottom: 0.65em;
}

.daily-report-body-display-markdown hr,
.app-multiline-body-display-markdown hr {
  margin: 0.75em 0;
  border: 0;
  border-top: 1px solid var(--bs-border-color, #dee2e6);
  opacity: 1;
}

.daily-report-body-display-markdown blockquote,
.app-multiline-body-display-markdown blockquote {
  margin: 0.65em 0;
  padding: 0.5em 1em;
  border-left: 4px solid #adb5bd;
  background-color: #f1f3f5;
  border-radius: 0 4px 4px 0;
  color: var(--bs-secondary-color, #6c757d);
  width: fit-content;
  max-width: 100%;
}

.daily-report-body-display-markdown blockquote blockquote,
.app-multiline-body-display-markdown blockquote blockquote {
  margin-top: 0.35em;
  margin-bottom: 0;
}

.daily-report-body-display-markdown ul,
.daily-report-body-display-markdown ol,
.app-multiline-body-display-markdown ul,
.app-multiline-body-display-markdown ol {
  margin-bottom: 0.35em;
  padding-left: 1.5em;
}

.daily-report-body-display-markdown ul,
.daily-report-body-display-markdown ul ul,
.daily-report-body-display-markdown ul ul ul,
.app-multiline-body-display-markdown ul,
.app-multiline-body-display-markdown ul ul,
.app-multiline-body-display-markdown ul ul ul {
  list-style-type: disc;
}

.daily-report-body-display-markdown ul.task-list,
.daily-report-body-display-markdown ul.task-list ul,
.app-multiline-body-display-markdown ul.task-list,
.app-multiline-body-display-markdown ul.task-list ul {
  list-style: none;
  padding-left: 0.25em;
}

.daily-report-body-display-markdown .task-list-item,
.app-multiline-body-display-markdown .task-list-item {
  position: relative;
  padding-left: 1.45rem;
  list-style: none;
}

.daily-report-body-display-markdown .task-list-item input[type="checkbox"],
.app-multiline-body-display-markdown .task-list-item input[type="checkbox"] {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: 0;
  padding: 0;
  opacity: 0;
  pointer-events: none;
}

.daily-report-body-display-markdown .task-list-item::before,
.app-multiline-body-display-markdown .task-list-item::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.15em;
  width: 1rem;
  height: 1rem;
  border: 2px solid #495057;
  border-radius: 2px;
  background-color: var(--app-dropdown-bg, #fff);
  box-sizing: border-box;
}

.daily-report-body-display-markdown .task-list-item:has(input[type="checkbox"]:checked)::before,
.app-multiline-body-display-markdown .task-list-item:has(input[type="checkbox"]:checked)::before {
  background-color: #495057;
  border-color: #495057;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23fff' d='M13.485 3.515a.75.75 0 0 1 0 1.06l-7.071 7.07a.75.75 0 0 1-1.06 0L2.515 8.758a.75.75 0 0 1 1.06-1.06l2.122 2.122 6.54-6.545a.75.75 0 0 1 1.06 0z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 0.7rem;
}

.daily-report-body-display-markdown .footnote,
.app-multiline-body-display-markdown .footnote {
  margin-top: 1em;
  font-size: 0.9em;
  color: var(--app-muted-color, #6c757d);
}

.daily-report-body-display-markdown pre,
.app-multiline-body-display-markdown pre {
  margin: 0.65em 0;
  padding: 0.5rem;
  font-size: 0.9em;
  overflow-x: auto;
}

/* Markdown コードブロック（共通レイアウト） */
.daily-report-body-display-markdown .app-code-highlight,
.app-multiline-body-display-markdown .app-code-highlight,
.daily-report-body-display-markdown .app-code-plain,
.app-multiline-body-display-markdown .app-code-plain {
  width: fit-content;
  max-width: 100%;
  margin: 0.75em 0;
  padding: 0.85rem 1rem;
  border-radius: 8px;
  font-size: 0.85em;
  line-height: 1.45;
  overflow-x: auto;
}

/* プレーン（text / 言語なし）: 薄い背景で引用テキスト風 */
.daily-report-body-display-markdown .app-code-plain,
.app-multiline-body-display-markdown .app-code-plain {
  background: #f4f4f5;
  color: #212529;
  border: 1px solid #dee2e6;
}

.daily-report-body-display-markdown .app-code-highlight pre,
.app-multiline-body-display-markdown .app-code-highlight pre,
.daily-report-body-display-markdown .app-code-plain pre,
.app-multiline-body-display-markdown .app-code-plain pre {
  margin: 0;
  padding: 0;
  background: transparent;
  overflow: visible;
  font-size: inherit;
}

.daily-report-body-display-markdown .app-code-highlight code,
.app-multiline-body-display-markdown .app-code-highlight code,
.daily-report-body-display-markdown .app-code-plain code,
.app-multiline-body-display-markdown .app-code-plain code {
  background: transparent;
  padding: 0;
  border-radius: 0;
  font-size: inherit;
  color: inherit;
}

/* Markdown インラインコード */
.daily-report-body-display-markdown :not(pre) > code,
.app-multiline-body-display-markdown :not(pre) > code {
  background: #f0f0f0;
  color: inherit;
  padding: 0.15em 0.4em;
  border-radius: 4px;
  font-size: 0.88em;
}

/* Markdown ハイライト（==テキスト==） */
.daily-report-body-display-markdown mark,
.app-multiline-body-display-markdown mark {
  background-color: #fff3cd;
  color: inherit;
  padding: 0 0.1em;
  border-radius: 0.15em;
}

.daily-report-body-display-markdown h1,
.app-multiline-body-display-markdown h1 {
  font-size: 1.35rem;
  font-weight: bold;
  margin: 0.65em 0 0.35em;
}

.daily-report-body-display-markdown h2,
.app-multiline-body-display-markdown h2 {
  font-size: 1.2rem;
  font-weight: bold;
  margin: 0.65em 0 0.35em;
}

.daily-report-body-display-markdown h3,
.app-multiline-body-display-markdown h3 {
  font-size: 1.1rem;
  font-weight: bold;
  margin: 0.65em 0 0.35em;
}

.daily-report-body-display-markdown h4,
.app-multiline-body-display-markdown h4 {
  font-size: 1.05rem;
  font-weight: bold;
  margin: 0.65em 0 0.35em;
}

.daily-report-body-display-markdown h5,
.daily-report-body-display-markdown h6,
.app-multiline-body-display-markdown h5,
.app-multiline-body-display-markdown h6 {
  font-size: 1rem;
  font-weight: bold;
  margin: 0.65em 0 0.35em;
}

.daily-report-body-display-markdown > h1:first-child,
.daily-report-body-display-markdown > h2:first-child,
.daily-report-body-display-markdown > h3:first-child,
.daily-report-body-display-markdown > h4:first-child,
.daily-report-body-display-markdown > h5:first-child,
.daily-report-body-display-markdown > h6:first-child,
.app-multiline-body-display-markdown > h1:first-child,
.app-multiline-body-display-markdown > h2:first-child,
.app-multiline-body-display-markdown > h3:first-child,
.app-multiline-body-display-markdown > h4:first-child,
.app-multiline-body-display-markdown > h5:first-child,
.app-multiline-body-display-markdown > h6:first-child {
  margin-top: 0;
}

/* Markdown テーブル */
.daily-report-body-display-markdown table,
.app-multiline-body-display-markdown table {
  width: 100%;
  border-collapse: collapse;
  margin: 0.75em 0;
  font-size: 0.9em;
  overflow-x: auto;
  display: block;
}
.daily-report-body-display-markdown th,
.daily-report-body-display-markdown td,
.app-multiline-body-display-markdown th,
.app-multiline-body-display-markdown td {
  border: 1px solid var(--bs-border-color, #dee2e6);
  padding: 0.3em 0.65em;
  vertical-align: top;
}
.daily-report-body-display-markdown th[align="center"],
.daily-report-body-display-markdown td[align="center"],
.app-multiline-body-display-markdown th[align="center"],
.app-multiline-body-display-markdown td[align="center"] {
  text-align: center;
}

.daily-report-body-display-markdown th[align="right"],
.daily-report-body-display-markdown td[align="right"],
.app-multiline-body-display-markdown th[align="right"],
.app-multiline-body-display-markdown td[align="right"] {
  text-align: right;
}

.daily-report-body-display-markdown thead th,
.app-multiline-body-display-markdown thead th {
  background-color: var(--app-nav-surface-2, rgba(0, 0, 0, 0.04));
  font-weight: 600;
}

/* urlize_links で挿入したリンクが長いときにセル／パネルからはみ出しにくくする */
.daily-report-body-display-plain a,
.daily-report-body-display-markdown a,
.app-multiline-body-display-plain a,
.app-multiline-body-display-markdown a,
#chat-log .text-break a {
  word-break: break-word;
}

/* ダッシュボード: トップページ（タイトルとカードの左右余白を揃える） */
.dashboard-home {
  padding-inline: 1rem;
}

/* ダッシュボード: 3列↔2列（空ゾーンは非表示・点線なし） */
.js-dashboard-sortable {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.dashboard-zone-full--empty {
  min-height: 0;
  margin: 0;
  padding: 0;
  border: none;
}

/* 本日の予定ドラッグ中: 上段ドロップ領域をタイトルのラインに重ねて表示する。
   main 行は押し下げないので、3列のまま左右の並べ替えができる。
   タイトル行より上（root 上端の直上）にオーバーレイし、そこへ運んだときだけ2列化。 */
.dashboard-drop-target-active {
  position: relative;
}

.dashboard-drop-target-active .dashboard-zone-full--empty[data-zone="full-top"] {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(100% + 0.5rem);
  min-height: 2.75rem;
  margin: 0;
  padding: 0.4rem;
  border: 2px dashed var(--app-nav-accent, #5a8f4a);
  border-radius: 0.5rem;
  background-color: var(--app-body-bg, #fff);
  z-index: 30;
}

.dashboard-drop-target-active .dashboard-zone-full--empty[data-zone="full-top"]::after {
  content: "ここにドロップで上段（全幅）に表示";
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--app-nav-accent, #5a8f4a);
  font-size: 0.85rem;
  font-weight: 600;
  pointer-events: none;
}

/* ドロップ領域にカードが入ったらラベルは隠す */
.dashboard-drop-target-active .dashboard-zone-full[data-zone="full-top"]:has(.dashboard-sortable-item)::after {
  display: none;
}

.dashboard-drag-handle--layout-locked {
  opacity: 0.35;
  pointer-events: none;
  cursor: default;
}

/* 本日の予定: 列レイアウト切替（↑↓3列）・狭い画面のカード並べ替え（↑↓）— 白背景 */
.app-nav-surface-header .btn-outline-secondary.js-dash-layout-btn,
.app-nav-surface-header .btn-outline-secondary.js-dash-card-reorder-btn {
  font-size: 0.72rem;
  line-height: 1.25;
  padding: 0.12rem 0.45rem;
  color: #212529;
  background-color: #fff;
  border-color: var(--bs-secondary, #6c757d);
  --bs-btn-focus-box-shadow: none;
  --bs-btn-focus-shadow-rgb: 255, 255, 255;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--bs-secondary, #6c757d);
  --bs-btn-hover-border-color: var(--bs-secondary, #6c757d);
  --bs-btn-active-color: #212529;
  --bs-btn-active-bg: #fff;
  --bs-btn-active-border-color: var(--bs-secondary, #6c757d);
  --bs-btn-focus-color: #212529;
  --bs-btn-focus-bg: #fff;
  --bs-btn-focus-border-color: var(--bs-secondary, #6c757d);
}

.app-nav-surface-header .btn-outline-secondary.js-dash-layout-btn:hover,
.app-nav-surface-header .btn-outline-secondary.js-dash-card-reorder-btn:hover {
  color: #fff;
  background-color: var(--bs-secondary, #6c757d);
  border-color: var(--bs-secondary, #6c757d);
}

.app-nav-surface-header .btn-outline-secondary.js-dash-card-reorder-btn:disabled,
.app-nav-surface-header .btn-outline-secondary.js-dash-layout-btn:disabled {
  display: none;
}

/* 本日の予定: 3列=フラット+フィルタ、2列（PC幅）=カテゴリ小カード、狭い画面=フラット+フィルタ */
@media (min-width: 992px) {
  .js-dashboard-sortable[data-layout="3"] .dashboard-schedule-category-view {
    display: none;
  }

  .js-dashboard-sortable[data-layout="3"] .dashboard-schedule-flat-view {
    display: block;
  }

  .js-dashboard-sortable[data-layout="3"] .dashboard-schedule-filters {
    display: flex;
    align-items: center;
  }

  .js-dashboard-sortable:not([data-layout="3"]) .dashboard-schedule-category-view {
    display: block;
  }

  .js-dashboard-sortable:not([data-layout="3"]) .dashboard-schedule-flat-view {
    display: none;
  }

  .js-dashboard-sortable:not([data-layout="3"]) .dashboard-schedule-filters {
    display: none;
  }

  .js-dashboard-sortable:not([data-layout="3"]) .schedule-category-cols {
    grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
  }
}

@media (max-width: 991.98px) {
  .dashboard-schedule-flat-view {
    display: block;
  }

  .dashboard-schedule-category-view {
    display: none;
  }

  .dashboard-schedule-filters {
    display: flex;
    align-items: center;
  }

  /* 狭い画面: レイアウト切替ボタン（↑↓3列）は常に非表示 */
  .dashboard-layout-actions {
    display: none !important;
  }
}

/* 2列時（PC幅）: 本日の予定のカード↑↓を隠し↑↓3列を使う */
@media (min-width: 992px) {
  .js-dashboard-sortable:not([data-layout="3"]) .dashboard-schedule-card-reorder {
    display: none !important;
  }
}

/* 通常画面（lg 以上）: 最新投稿・最新コメント等は D&D のためカード↑↓を非表示 */
@media (min-width: 992px) {
  .dashboard-card-reorder-actions {
    display: none !important;
  }
}

.schedule-category-cols {
  display: grid;
  gap: 0.75rem;
}

.schedule-category-card {
  box-shadow: none;
  border: 1px solid var(--bs-border-color);
}

.schedule-category-card__header {
  background-color: rgba(var(--bs-secondary-rgb), 0.08);
  border-bottom: 1px solid var(--bs-border-color);
  min-height: 2.25rem;
}

.schedule-category-card__body {
  min-height: 3rem;
}

html[data-app-theme="dark"] main .schedule-category-card {
  border-color: #55665a;
}

html[data-app-theme="dark"] main .schedule-category-card__header {
  background-color: rgba(255, 255, 255, 0.04);
  border-bottom-color: #55665a;
}

.schedule-category-col__title {
  color: var(--app-body-color);
  border-bottom: 1px solid #dee2e6;
  padding-bottom: 0.35rem;
}

html[data-app-theme="dark"] main .schedule-category-col__title {
  border-bottom-color: #55665a;
}

/* ダッシュボード: 一覧部分（件数上限はサーバー側。カード高さは h-100 で行内揃え） */
.dashboard-widget-scroll {
  padding-right: 0.35rem;
  margin-bottom: 0.5rem;
}

/* Django messages: success はテンプレートで非表示のため、残件が無いときはラッパーも隠す */
.app-flash-messages:not(:has(.alert)) {
  display: none;
}

/* 情報ページ: CHANGELOG（Markdown 表示・スクロール） */
.portal-changelog-display {
  max-height: min(28rem, 60vh);
  overflow-y: auto;
  padding-right: 0.35rem;
  scrollbar-gutter: stable;
}

.portal-changelog-display h2 {
  font-size: 1rem;
  margin-top: 1rem;
  margin-bottom: 0.35rem;
}

.portal-changelog-display h2:first-child {
  margin-top: 0;
}

/* サイト内検索: キーワードハイライト */
mark.search-highlight {
  background-color: #fff3cd;
  color: inherit;
  font-weight: 600;
  padding: 0 0.1em;
  border-radius: 0.15em;
}

.app-search-result-item {
  cursor: pointer;
}

.app-search-result-item:hover {
  background-color: var(--bs-tertiary-bg);
}

.portal-changelog-display h1 {
  font-size: 1.1rem;
}

/* 日報: 表形式 / 本文 の表示切替 */
.app-daily-view-toggle .btn {
  min-width: 4.5rem;
  background-color: #fff;
  border-color: var(--bs-border-color);
  color: var(--app-muted-color, #6c757d);
  font-weight: 500;
}

.app-daily-view-toggle .btn:hover:not(.active) {
  background-color: #f8f9fa;
  color: var(--app-body-color, #212529);
}

.app-daily-view-toggle .btn.active {
  background-color: var(--bs-secondary);
  border-color: var(--bs-secondary);
  color: #fff;
  font-weight: 600;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.12);
  z-index: 1;
}

/* クリック可能行など（Bootstrap ユーティリティ未提供のため） */
.cursor-pointer {
  cursor: pointer;
}

/* フォーカスリング統一（キーボード操作時。マウスクリック後は :focus-visible が付かない） */
:focus:not(:focus-visible) {
  outline: none;
  box-shadow: none;
}

:focus-visible {
  outline: 2px solid var(--app-nav-accent, #5a8f4a);
  outline-offset: 2px;
  box-shadow: none;
}

/* 本日の予定: 列レイアウトボタンはフォーカスリング不要（:focus-visible より後） */
.app-nav-surface-header .btn-outline-secondary.js-dash-layout-btn:focus,
.app-nav-surface-header .btn-outline-secondary.js-dash-layout-btn:focus-visible,
.app-nav-surface-header .btn-outline-secondary.js-dash-layout-btn:focus:not(:focus-visible),
.app-nav-surface-header .btn-outline-secondary.js-dash-card-reorder-btn:focus,
.app-nav-surface-header .btn-outline-secondary.js-dash-card-reorder-btn:focus-visible,
.app-nav-surface-header .btn-outline-secondary.js-dash-card-reorder-btn:focus:not(:focus-visible) {
  outline: none !important;
  box-shadow: none !important;
}

.app-nav-surface-header .btn-outline-secondary.js-dash-layout-btn:focus:not(:hover),
.app-nav-surface-header .btn-outline-secondary.js-dash-layout-btn:focus-visible:not(:hover),
.app-nav-surface-header .btn-outline-secondary.js-dash-card-reorder-btn:focus:not(:hover),
.app-nav-surface-header .btn-outline-secondary.js-dash-card-reorder-btn:focus-visible:not(:hover) {
  color: #212529 !important;
  background-color: #fff !important;
  border-color: var(--bs-secondary, #6c757d) !important;
}

/* テキスト入力: 枠線リング＋薄い光彩で入力位置を強調 */
.form-control:focus-visible,
.form-select:focus-visible,
.form-check-input:focus-visible {
  outline: 2px solid var(--app-nav-accent, #5a8f4a);
  outline-offset: 0;
  box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--app-nav-accent, #5a8f4a) 22%, transparent);
}

/* ナビピル: app-navbar.css の ring 色を継承 */
.app-navbar a.app-navbar-pill:focus-visible,
.app-navbar button.app-navbar-pill:focus-visible,
.app-nav-surface-header button.app-navbar-pill:focus-visible {
  outline-color: var(--app-nav-pill-active-ring, var(--app-nav-accent, #5a8f4a));
}

/* 日付・時刻入力: 全幅にしない（ネイティブピッカーの操作性改善） */
input[type="date"].form-control-date,
input[type="time"].form-control-time {
  max-width: 12rem;
  width: 100%;
}

/* 選択肢が短い select（種別・カテゴリ等） */
select.form-select.form-select-compact {
  max-width: 12rem;
  width: 100%;
}

/* 添付ファイル入力: 全幅にしない（投稿・コメントで幅を揃える） */
input[type="file"].form-control {
  max-width: 28rem;
  width: 100%;
}

/* 添付蓄積: ラベル・入力・ヘルプを含むドロップゾーン */
.attachment-accumulator-dropzone {
  max-width: 28rem;
  padding: 0.75rem;
  border: 1px dashed var(--bs-border-color, #dee2e6);
  border-radius: 0.375rem;
  transition: border-color 0.15s ease, background-color 0.15s ease;
}

.attachment-accumulator-dropzone--active {
  border-color: var(--bs-primary, #0d6efd);
  background-color: rgba(var(--bs-primary-rgb, 13, 110, 253), 0.06);
}

.attachment-accumulator-dropzone .form-label {
  margin-bottom: 0.35rem;
}

.attachment-accumulator-dropzone .attachment-accumulator-help {
  margin-bottom: 0;
}

/* キャンセルボタン: 白背景のまま枠線だけ濃く（通常時） */
.btn.app-btn-cancel {
  --bs-btn-bg: #fff;
  --bs-btn-border-color: var(--bs-secondary, #6c757d);
  --bs-btn-color: var(--bs-body-color, #212529);
}

/* 白背景の outline-secondary: ホバー・押下はグレー＋白文字（Bootstrap の --bs-btn-* で上書き） */
.attachment-accumulator-remove,
.app-draft-discard,
.btn.app-btn-cancel {
  --bs-btn-bg: #fff;
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--bs-secondary, #6c757d);
  --bs-btn-hover-border-color: var(--bs-secondary, #6c757d);
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: var(--bs-secondary, #6c757d);
  --bs-btn-active-border-color: var(--bs-secondary, #6c757d);
}

.attachment-accumulator-remove {
  font-size: 0.75rem;
  line-height: 1.2;
  padding: 0.1rem 0.45rem;
}

/* ダッシュボード最新投稿・最新コメント: 帯内フィルタ（スケジュールのカテゴリフィルタと同系） */
.app-dash-filter-group {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem;
}
/* 帯上の btn-outline-secondary 既定を上書きし、ON=グレー・OFF=白に固定 */
.app-nav-surface-header .btn-outline-secondary.app-dash-filter-btn {
  font-size: 0.72rem;
  line-height: 1.25;
  padding: 0.12rem 0.45rem;
  --bs-btn-bg: #fff;
  --bs-btn-color: #212529;
  --bs-btn-border-color: var(--bs-secondary, #6c757d);
  --bs-btn-hover-color: #212529;
  --bs-btn-hover-bg: var(--bs-body-bg, #fff);
  --bs-btn-hover-border-color: var(--bs-secondary, #6c757d);
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: var(--bs-secondary, #6c757d);
  --bs-btn-active-border-color: var(--bs-secondary, #6c757d);
}
.app-nav-surface-header .btn-outline-secondary.app-dash-filter-btn:not(.active) {
  color: #212529;
  background-color: var(--bs-body-bg, #fff);
  border-color: var(--bs-secondary, #6c757d);
}
.app-nav-surface-header .btn-outline-secondary.app-dash-filter-btn:not(.active):hover {
  color: #212529;
  background-color: var(--bs-body-bg, #fff);
  border-color: var(--bs-secondary, #6c757d);
}
.app-nav-surface-header .btn-outline-secondary.app-dash-filter-btn.active {
  font-weight: 600;
  color: #fff;
  background-color: var(--bs-secondary, #6c757d);
  border-color: var(--bs-secondary, #6c757d);
}
.app-nav-surface-header .btn-outline-secondary.app-dash-filter-btn.active:hover {
  color: #fff;
  background-color: var(--bs-secondary, #6c757d);
  border-color: var(--bs-secondary, #6c757d);
}

/* 2カラム投稿フォーム（お知らせ・部署掲示など）: 左カラム本文を縦方向に広げる */
.app-form-two-col .form-label {
  margin-bottom: 0.25rem;
}
.app-form-two-col .form-text {
  font-size: 0.8rem;
  margin-top: 0.15rem;
}
.app-form-two-col .app-form-body-col .js-markdown-body-field textarea.form-control {
  min-height: 10rem;
}
.app-form-two-col .app-form-side-col .form-select-compact {
  max-width: 100%;
}
.app-form-two-col .app-form-body-col .form-select-compact {
  max-width: 100%;
}
@media (min-width: 768px) {
  .app-form-two-col .app-form-body-col {
    display: flex;
    flex-direction: column;
  }
  .app-form-two-col .app-form-body-col .js-markdown-body-field {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 0;
  }
  .app-form-two-col .app-form-body-col .js-markdown-body-field textarea.form-control {
    flex: 1 1 auto;
    min-height: 14rem;
  }
}

/* 一覧の未読インジケータ（青丸） */
.app-unread-dot {
  font-size: 0.45rem;
  vertical-align: middle;
}

/* 一覧の添付種別アイコン（Office ブランドカラーに近い色） */
.app-attachment-icon--image {
  color: #ffa500;
}
.app-attachment-icon--excel {
  color: #217346;
}
.app-attachment-icon--word {
  color: #2b579a;
}
.app-attachment-icon--visio {
  color: #3955a3;
}
.app-attachment-icon--powerpoint {
  color: #d24726;
}
.app-attachment-icon--pdf {
  color: #cc0000;
}
