

/* ================= UI3 refinement layer (追加のみ・既存規則は変更しない) =================
   方針: 白ベース＋淡いブルーグレー面／紫アクセント維持・彩度を下げる／表はゼブラ＋格子罫線／
   1 画面（1920x1080）に収める／横スクロールと hover での揺れを作らない。 */
body.portal{
  --r-bg:#f4f6fa; --r-line:#dde3ec; --r-line-soft:#e9edf3; --r-head:#edf1f7;
  --r-zebra:#f8fafc; --r-hover:#eef3fb; --r-ink:#2b3441; --r-muted:#5f6b7a;
  --r-purple:#6f68cf; --r-purple-dark:#5b54bd; --r-purple-soft:#f2f1fc; --r-purple-line:#d9d6f4;
  --r-red:#b5636b; --r-red-dark:#9f545c; --r-red-soft:#fbf1f2; --r-red-line:#e7c8cb;
  --r-green:#3f9578; --r-green-soft:#eff8f4; --r-green-line:#cbe6db;
  --r-amber:#bd8b33; --r-amber-soft:#fdf8ec; --r-amber-line:#ecdcb8;
}
body.portal{ background:var(--r-bg) !important; color:var(--r-ink); }

/* ---- 1) hover で位置が動かない（揺れ・はみ出し・横スクロールの原因を断つ） ---- */
body.portal .panel:hover, body.portal .panel.accent:hover,
body.portal .row-item:hover, body.portal .btn:hover, body.portal .btn:active,
body.portal .btn.primary:hover, body.portal .btn.primary:active,
body.portal .btn.danger:hover, body.portal .btn.danger:active,
body.portal .kpi-cell:hover, body.portal .task-card:hover, body.portal .action-item:hover,
body.portal .accordion-trigger:hover, body.portal .accordion-index-jump:hover,
body.portal .phase-pill:hover, body.portal .advance-btn:hover, body.portal .advance-btn:active,
body.portal .list-tab:hover, body.portal .side-btn:hover, body.portal .nav-btn:hover{
  transform:none !important; filter:none !important;
}
body.portal .panel:hover, body.portal .row-item:hover{ box-shadow:none !important; border-color:#cfd7e4 !important; }

/* ---- 2) 面・枠の統一（影を減らし 1px の枠で区切る） ---- */
body.portal .panel, body.portal .fact-table, body.portal .notif-box,
body.portal .help-panel, body.portal .org-card, body.portal .accordion-col,
body.portal .accordion-index-group, body.portal .row-item, body.portal .tbl-wrap,
body.portal .table-scroll, body.portal .radio-card, body.portal .kpi-cell,
body.portal .progress-dept-panel, body.portal .progress-late-panel, body.portal .modal-box{
  border-radius:12px !important;
  box-shadow:none !important;
}
body.portal .panel, body.portal .kpi-cell, body.portal .tbl-wrap, body.portal .table-scroll,
body.portal .fact-table, body.portal .org-card, body.portal .accordion-col,
body.portal .accordion-index-group, body.portal .row-item{
  border:1px solid var(--r-line) !important; background:#fff !important;
}
body.portal .panel{ padding:14px 16px !important; }
body.portal .panel-title{ margin-bottom:10px !important; color:#3d4756 !important; font-size:14px !important; }

/* 強調パネル: 紫のベタ塗り→淡い紫面＋濃い文字（明るく・読みやすく） */
body.portal .panel.accent{
  border:1px solid var(--r-purple-line) !important; background:#f7f6fe !important; color:var(--r-ink) !important;
}
body.portal .panel.accent .panel-title{ color:var(--r-purple-dark) !important; }
body.portal .panel.accent .panel-title::before{ background:var(--r-purple) !important; }
body.portal .panel.accent .muted, body.portal .panel.accent .muted-sm{
  background:transparent !important; color:var(--r-muted) !important; padding:0 !important;
}
body.portal .panel.accent .action-item, body.portal .panel.accent .task-card{
  border:1px solid var(--r-line) !important; background:#fff !important; color:var(--r-ink) !important;
}
body.portal .panel.accent .a-title, body.portal .panel.accent .rc-title{ color:var(--r-ink) !important; }
body.portal .panel.accent .a-sub, body.portal .panel.accent .rc-sub{ color:var(--r-muted) !important; }

/* 注意文・案内文: 淡い面＋4px の左帯（色は意味だけを表す） */
body.portal .notice{
  border:1px solid var(--r-amber-line) !important; border-left:4px solid var(--r-amber) !important;
  background:var(--r-amber-soft) !important; color:#4a3f28 !important;
  border-radius:10px !important; padding:9px 13px !important; font-size:13px !important; font-weight:600 !important;
}
body.portal .notice.info{
  border-color:#cfdcee !important; border-left-color:#4a86d8 !important; background:#f4f8fd !important; color:#2f4257 !important;
}
body.portal .notice.danger{
  border-color:var(--r-red-line) !important; border-left-color:var(--r-red) !important;
  background:var(--r-red-soft) !important; color:#5c3236 !important;
}
body.portal .view-note, body.portal .admin-main > section[data-view] > p.info-text{
  border:1px solid var(--r-line) !important; border-left:4px solid #9aa6bd !important;
  border-radius:10px !important; background:#fbfcfe !important; box-shadow:none !important;
  padding:9px 13px !important; font-size:13px !important;
}

/* ---- 3) ボタン: ベタ塗りのまま彩度を下げ、影とグラデーションを外す ---- */
body.portal .btn, body.portal .portal button:not([class]){
  min-height:34px !important; padding:6px 13px !important; border-radius:8px !important;
  border:1px solid var(--r-line) !important; background:#fff !important; color:#41505f !important;
  box-shadow:none !important; font-size:13px !important;
}
body.portal .btn:hover, body.portal .portal button:not([class]):hover{
  background:var(--r-hover) !important; border-color:#b9c4d6 !important; color:var(--r-ink) !important;
}
body.portal .btn.sm{ min-height:28px !important; padding:3px 9px !important; font-size:12px !important; border-radius:7px !important; }
body.portal .btn.primary, body.portal .btn-primary, body.portal button.btn-primary,
body.portal .action-cta, body.portal .advance-btn{
  background:var(--r-purple) !important; background-image:none !important;
  border:1px solid var(--r-purple-dark) !important; color:#fff !important; box-shadow:none !important;
}
body.portal .btn.primary:hover, body.portal .btn-primary:hover, body.portal button.btn-primary:hover,
body.portal .advance-btn:hover{ background:var(--r-purple-dark) !important; }
body.portal .btn.danger, body.portal .btn.sm.danger, body.portal .btn-danger, body.portal button.btn-danger{
  background:var(--r-red) !important; background-image:none !important;
  border:1px solid var(--r-red-dark) !important; color:#fff !important; box-shadow:none !important;
  min-height:28px !important; border-radius:7px !important; font-weight:700 !important;
}
body.portal .btn.danger:hover, body.portal .btn.sm.danger:hover, body.portal .btn-danger:hover{ background:var(--r-red-dark) !important; }
body.portal .btn.green{ background:var(--r-green) !important; background-image:none !important; border:1px solid #35836a !important; color:#fff !important; box-shadow:none !important; }
body.portal .btn:disabled, body.portal .btn.primary:disabled, body.portal .btn.danger:disabled,
body.portal button:disabled{
  opacity:1 !important; background:#eef0f5 !important; background-image:none !important;
  border-color:var(--r-line) !important; color:#9aa3b0 !important; cursor:default !important;
}

/* ---- 4) 表: ゼブラ＋格子罫線・見出し固定・折り返して横スクロールを避ける ---- */
body.portal .tbl.min-w, body.portal .review-table.min-w{ min-width:0 !important; }
body.portal .tbl, body.portal .review-table{
  width:100% !important; border-collapse:collapse !important; table-layout:auto !important;
  background:#fff !important; font-size:13px !important;
}
body.portal .tbl th, body.portal .review-table th{
  padding:8px 10px !important; border:1px solid var(--r-line) !important;
  background:var(--r-head) !important; color:#41505f !important;
  font-size:11.5px !important; font-weight:800 !important; letter-spacing:.03em !important;
  white-space:normal !important; word-break:keep-all; overflow-wrap:anywhere;
  position:sticky; top:0; z-index:2;
  box-shadow:inset 0 -1px 0 var(--r-line), inset 0 1px 0 var(--r-line);
}
body.portal .tbl td, body.portal .review-table td{
  padding:7px 10px !important; border:1px solid var(--r-line-soft) !important;
  color:var(--r-ink) !important; font-size:13px !important; vertical-align:middle !important;
  white-space:normal !important; overflow-wrap:anywhere;
}
body.portal .tbl tbody tr:nth-child(even) > td,
body.portal .review-table tbody tr:nth-child(even) > td{ background:var(--r-zebra) !important; }
body.portal .tbl tbody tr:nth-child(odd) > td,
body.portal .review-table tbody tr:nth-child(odd) > td{ background:#fff !important; }
body.portal .tbl tbody tr:hover > td,
body.portal .review-table tbody tr:hover > td{ background:var(--r-hover) !important; }
body.portal .row-diff > td{ background:#fdf6e0 !important; }
body.portal .matrix-total-row > td, body.portal .tbl tfoot td{ background:var(--r-head) !important; font-weight:700 !important; }
/* 表の入れ物: 高さを画面内に収め、中だけを縦スクロールさせる */
body.portal .tbl-wrap, body.portal .table-scroll, body.portal .analytics-table-wrap,
body.portal .distribution-table-wrap, body.portal .criteria-table-scroll{
  max-height:calc(100vh - 300px) !important; overflow-y:auto !important; overflow-x:auto !important;
  scrollbar-gutter:stable;
}
body.portal .tbl td.center, body.portal .review-table td.center{ text-align:center !important; }
body.portal .tbl td.right, body.portal .review-table td.right{ text-align:right !important; }
/* 表の中の操作は行高を膨らませない */
body.portal .tbl .btn, body.portal .review-table .btn,
body.portal .tbl button, body.portal .review-table button{
  min-height:26px !important; padding:2px 9px !important; font-size:12px !important; margin:0 !important;
}
body.portal .review-table td .btn + .btn, body.portal .tbl td .btn + .btn{ margin-left:6px !important; }

/* 状態バッジ: 淡い面＋枠＋濃い文字（ベタ塗りをやめて操作ボタンと見分ける） */
body.portal .status-badge, body.portal .pill, body.portal .accordion-score-badge{
  display:inline-flex !important; align-items:center !important;
  padding:2px 9px !important; border-radius:999px !important;
  background:#f1f3f8 !important; background-image:none !important;
  border:1px solid var(--r-line) !important; color:#41505f !important;
  font-size:11.5px !important; font-weight:700 !important; box-shadow:none !important;
}
body.portal .status-badge.done, body.portal .status-badge.ok{ background:var(--r-green-soft) !important; border-color:var(--r-green-line) !important; color:#2f6f59 !important; }
body.portal .status-badge.rejected, body.portal .status-badge.ng, body.portal .status-badge.danger{ background:var(--r-red-soft) !important; border-color:var(--r-red-line) !important; color:#8f4a52 !important; }
body.portal .status-badge.pending, body.portal .status-badge.warn{ background:var(--r-amber-soft) !important; border-color:var(--r-amber-line) !important; color:#7d6118 !important; }

/* ---- 5) 入力欄 ---- */
body.portal .main input[type="text"], body.portal .main input[type="number"],
body.portal .main textarea, body.portal .main select,
body.portal .admin-main input[type="text"], body.portal .admin-main input[type="number"],
body.portal .admin-main textarea, body.portal .admin-main select{
  min-height:34px !important; padding:6px 10px !important;
  border:1px solid var(--r-line) !important; border-radius:8px !important;
  background:#fff !important; font-size:13px !important;
}
body.portal input:focus, body.portal textarea:focus, body.portal select:focus{
  border-color:var(--r-purple) !important; box-shadow:0 0 0 3px rgba(111,104,207,.14) !important; background:#fff !important;
}

/* ---- 6) 職種別基準などの内容表は左寄せ（中央寄せは読みにくい） ---- */
body.portal .criteria-set-preview td, body.portal .criteria-set-preview td.center,
body.portal .criteria-set-preview th, body.portal .criteria-set-preview th.center,
body.portal .fact-table .tbl th, body.portal .fact-table .tbl td,
body.portal .gf-card-criteria .tbl td{ text-align:left !important; }
body.portal .fact-table .tbl th.fact-key{
  width:24% !important; min-width:120px !important; background:var(--r-head) !important;
  color:#41505f !important; font-size:13px !important; font-weight:700 !important;
}
body.portal .fact-head-name{ font-size:20px !important; }
body.portal .fact-grade{ background:var(--r-purple) !important; background-image:none !important; box-shadow:none !important; }

/* ---- 7) 事業／組織の 2 列: 元の作り（列そのものが 1 本のスクロール＋見出しと索引を sticky）を
   そのまま活かし、色と枠だけ整える。レイアウトは触らない。 ---- */
body.portal .accordion-grid{ gap:14px !important; }
body.portal .accordion-col{
  border:1px solid var(--r-line) !important; border-left:4px solid #c9cfda !important;
  border-radius:14px !important; box-shadow:none !important; background:#fff !important;
  max-height:calc(100vh - 250px) !important;
}
body.portal .accordion-col.section-biz{ border-left-color:var(--r-purple) !important; background:#fdfdff !important; }
body.portal .accordion-col.section-org{ border-left-color:var(--r-green) !important; background:#fcfffd !important; }
body.portal .accordion-col > .section-title-biz, body.portal .accordion-col > .section-title-org,
body.portal .accordion-col > .panel-title{
  border-bottom:1px solid var(--r-line-soft) !important; font-size:14px !important;
}
body.portal .accordion-col.section-org > .section-title-org, body.portal .accordion-col.section-org > .panel-title{ color:#2f6f59 !important; }
body.portal .accordion-col .accordion-list{ background:transparent !important; }
body.portal .accordion-col::-webkit-scrollbar-thumb{ background:#c9cfda !important; }
body.portal .accordion-col::-webkit-scrollbar-thumb:hover{ background:var(--r-purple) !important; }
body.portal .accordion-item{ border-bottom:1px solid var(--r-line-soft) !important; }
body.portal .accordion-item.open{ background:#fbfcfe !important; }
body.portal .accordion-detail{ box-shadow:none !important; border-top:1px solid var(--r-line-soft) !important; }
body.portal .accordion-mark{ background:#f1f3f8 !important; color:#5f6b7a !important; }
body.portal .accordion-item.open .accordion-mark{ background:var(--r-purple) !important; color:#fff !important; }
body.portal .section-org .accordion-item.open .accordion-mark{ background:var(--r-green) !important; }
body.portal .row-item{ border:1px solid var(--r-line) !important; border-radius:10px !important; box-shadow:none !important; }

/* 上メニュー（索引）: 元の横並びを維持し、項目は**折り返さず横 1 列**に置く */
body.portal .accordion-col > .accordion-index-host{ background:inherit !important; }
body.portal .accordion-col .accordion-index-chips{
  flex-direction:row !important; flex-wrap:nowrap !important;
  gap:6px !important; overflow-x:auto !important; overflow-y:hidden !important;
  padding-bottom:4px !important; scrollbar-width:thin;
}
body.portal .accordion-col .accordion-index-chips::-webkit-scrollbar{ height:5px; }
body.portal .accordion-col .accordion-index-chips::-webkit-scrollbar-thumb{ background:#d5dbe3; border-radius:3px; }
body.portal .accordion-col .accordion-index-chip{ flex:0 1 auto !important; min-width:0 !important; }
body.portal .accordion-col .accordion-index-jump{
  border:1px solid var(--r-line) !important; border-radius:9px !important;
  background:#fff !important; min-height:34px !important;
}
body.portal .accordion-col.section-biz .accordion-index-jump.open{ border-color:var(--r-purple) !important; background:#f7f6fe !important; }
body.portal .accordion-col.section-org .accordion-index-jump.open{ border-color:var(--r-green) !important; background:var(--r-green-soft) !important; }
body.portal .accordion-index-badge{ color:var(--r-muted) !important; }
body.portal .accordion-col .accordion-index-count{ color:var(--r-purple-dark) !important; }
body.portal .accordion-col.section-org .accordion-index-count{ color:#2f6f59 !important; }
body.portal .accordion-col .accordion-index-tools > .btn{
  width:26px !important; height:26px !important; min-height:0 !important; padding:0 !important;
  border:0 !important; border-radius:50% !important; color:#fff !important; box-shadow:none !important;
}
body.portal .accordion-col .accordion-index-tools > .btn:not(.accordion-index-delete-mode){ background:var(--r-purple) !important; }
body.portal .accordion-col.section-org .accordion-index-tools > .btn:not(.accordion-index-delete-mode){ background:var(--r-green) !important; }
body.portal .accordion-col .accordion-index-tools > .btn.accordion-index-delete-mode{ background:var(--r-red) !important; }
body.portal .accordion-col .accordion-index-tools > .btn.accordion-index-delete-mode.active{ background:#fff !important; color:var(--r-red-dark) !important; border:1px solid var(--r-red-line) !important; }
body.portal .accordion-col .accordion-toggle-all{ min-height:26px !important; padding:3px 11px !important; border-radius:8px !important; }
body.portal .contrib-summary{ padding:10px 12px !important; border-radius:10px !important; border:1px solid var(--r-line) !important; background:#f8fafc !important; box-shadow:none !important; }
body.portal .contrib-summary.ok{ background:var(--r-green-soft) !important; border-color:var(--r-green-line) !important; }
body.portal .contrib-summary.ng{ background:var(--r-red-soft) !important; border-color:var(--r-red-line) !important; }

/* ---- 8) 提出パネル（差し戻しの案内） ---- */
body.portal #submissionPanel .muted, body.portal #submissionPanel .muted-sm{ font-size:12.5px !important; color:var(--r-muted) !important; }
body.portal #submissionPanel .panel-title{ display:flex !important; align-items:center !important; gap:10px !important; }
body.portal #submissionPanel .btn-row{ margin-top:2px !important; }
body.portal #submitStateBanner, body.portal #goalReviewBanner, body.portal #achievementReviewBanner{ max-width:none !important; }

/* ---- 9) 余白・見出しを詰めて 1 画面に収める ---- */
body.portal .stack{ gap:12px !important; }
body.portal .stack-14{ gap:10px !important; }
body.portal .stack-sm{ gap:6px !important; }
body.portal .btn-row{ gap:8px !important; }
body.portal .page-head h1, body.portal .admin-page-head h2, body.portal .admin-main > section[data-view] > h2{ font-size:21px !important; }
body.portal .page-head .sub{ font-size:12.5px !important; }
body.portal .list-tabs{ margin-bottom:10px !important; gap:6px !important; }
body.portal .list-tab{ padding:5px 12px !important; font-size:12.5px !important; border-radius:8px !important; }
body.portal .list-tab[aria-selected="true"]{ background:var(--r-purple) !important; border-color:var(--r-purple-dark) !important; }
body.portal .kpi-cell{ min-height:0 !important; padding:12px 14px !important; }
body.portal .kpi-cell::before{ width:30px !important; height:30px !important; font-size:16px !important; margin-bottom:2px !important; border-radius:9px !important; }
body.portal .kpi-cell::after{ display:none !important; }
body.portal .kpi-grid, body.portal .admin-kpi-grid{ gap:12px !important; }

/* ---- 管理者側 ---- */
body.portal.admin-ui2 .admin-shell{ height:100vh !important; overflow:hidden !important; }
body.portal.admin-ui2 .admin-body-row{ display:flex !important; height:calc(100vh - 56px) !important; overflow:hidden !important; align-items:stretch !important; }
body.portal.admin-ui2 .portal-header{ min-height:56px !important; height:56px !important; padding:0 20px !important; }
body.portal.admin-ui2 .admin-main{
  height:100% !important; overflow-y:auto !important; overflow-x:hidden !important;
  padding:18px 22px 28px !important; gap:14px !important; background:transparent !important;
}
body.portal.admin-ui2 .admin-main > section[data-view]:not([hidden]){ gap:14px !important; }
body.portal.admin-ui2 .portal-nav{
  flex:0 0 208px !important; width:208px !important; height:100% !important; overflow-y:auto !important;
  gap:14px !important; padding:14px 10px !important; background:#fff !important;
  border-right:1px solid var(--r-line) !important;
}
body.portal.admin-ui2 .portal-nav .nav-btn{ min-height:32px !important; padding:6px 10px !important; border-radius:8px !important; font-size:13px !important; }
body.portal.admin-ui2 .portal-nav .nav-btn[aria-current="page"]{ background:var(--r-purple) !important; box-shadow:none !important; }
body.portal.admin-ui2 .tabbar{ gap:6px !important; }
body.portal.admin-ui2 .subtab{ padding:5px 12px !important; font-size:12.5px !important; }

/* 一括設定・絞り込みの帯: 白い面＋枠で「操作の場所」を明示し、説明文を帯の中に収める */
body.portal.admin-ui2 .bulk-bar, body.portal.admin-ui2 .filter-bar,
body.portal.admin-ui2 .distribution-filter-bar, body.portal.admin-ui2 .progress-filter-bar,
body.portal.admin-ui2 .remind-bulk-bar, body.portal.admin-ui2 .assignment-view-toolbar{
  border:1px solid var(--r-line) !important; border-radius:10px !important;
  background:#fff !important; box-shadow:none !important; padding:9px 12px !important; gap:8px !important;
}
body.portal.admin-ui2 .bulk-bar + .info-text, body.portal.admin-ui2 .bulk-bar + .muted-sm,
body.portal.admin-ui2 .filter-bar + .info-text{ margin-top:6px !important; font-size:12px !important; color:var(--r-muted) !important; }

/* 進捗一覧の「リマインド送信対象を選ぶ」の行（2026-09-18 利用者指摘: Margin）
   この行は余白を 1 つも持たず、真下の数字カード（`.progress-kpis` は `margin-top:0`）と
   くっついていた。見出し側は 8px しか空かないので、上は詰まり下は接する形になる。
   行そのものに上下の余白を持たせて、見出し・ボタン・カードの間隔を揃える。 */
body.portal.admin-ui2 .progress-action-row{ margin:2px 0 14px !important; }

/* 部門別の提出状況: 列を揃え、帯は平らに（グラデーションをやめる） */
body.portal.admin-ui2 .progress-row{
  display:grid !important; grid-template-columns:minmax(120px,1.1fr) minmax(160px,2fr) 120px 48px !important;
  align-items:center !important; gap:10px !important;
  padding:6px 10px !important; border:1px solid var(--r-line-soft) !important; border-radius:8px !important; background:#fff !important;
}
body.portal.admin-ui2 .stack-sm > .progress-row:nth-child(even){ background:var(--r-zebra) !important; }
body.portal.admin-ui2 .progress-row .p-name{
  grid-column:1 !important; width:auto !important; flex:initial !important; flex-basis:auto !important;
  font-size:13px !important; font-weight:700 !important; white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important;
}
body.portal.admin-ui2 .progress-row .p-track{
  grid-column:2 !important; height:8px !important; background:#e9edf4 !important;
  border:1px solid #dfe4ec !important; border-radius:999px !important;
}
body.portal.admin-ui2 .progress-row .p-fill{ height:100% !important; background:var(--r-purple) !important; background-image:none !important; border-radius:999px !important; }
body.portal.admin-ui2 .progress-row .p-sub{ grid-column:3 !important; display:block !important; width:auto !important; text-align:right !important; font-size:11.5px !important; color:var(--r-muted) !important; }
body.portal.admin-ui2 .progress-row .p-pct{ grid-column:4 !important; width:auto !important; text-align:right !important; font-size:12.5px !important; color:#3d4756 !important; }

/* 部門別（部門をクリックで展開）: 部門行は帯、中の人員表はゼブラ＋格子 */
body.portal.admin-ui2 .progress-dept-panel > .table-scroll{ max-height:calc(100vh - 340px) !important; }
body.portal.admin-ui2 .progress-dept-panel > .table-scroll > .review-table > tbody > tr:not(.dept-members-row) > td{
  padding:8px 12px !important; background:var(--r-head) !important; border-bottom:1px solid var(--r-line) !important; vertical-align:middle !important;
}
body.portal.admin-ui2 .progress-dept-panel .dept-toggle{ font-size:13px !important; min-height:0 !important; padding:0 !important; border:0 !important; background:transparent !important; }
body.portal.admin-ui2 .progress-dept-panel .dept-members-row > td{ padding:0 12px 12px !important; background:#fbfcfe !important; border:0 !important; }
body.portal.admin-ui2 .progress-dept-panel .dept-members-table{ margin-top:6px !important; border:1px solid var(--r-line) !important; border-radius:8px !important; }
body.portal.admin-ui2 .progress-dept-panel .dept-members-table th{ position:static !important; }
body.portal.admin-ui2 .progress-late-panels{ gap:10px !important; }
body.portal.admin-ui2 .grid-2, body.portal.admin-ui2 .home-lower-grid, body.portal.admin-ui2 .org-grid{ gap:12px !important; }
body.portal.admin-ui2 .home-notifications li{ padding:6px 0 !important; font-size:12.5px !important; }
body.portal.admin-ui2 .action-item, body.portal.admin-ui2 .task-card{ min-height:0 !important; padding:10px 14px !important; border-radius:10px !important; }
body.portal.admin-ui2 .admin-phase-pill{ background:transparent !important; box-shadow:none !important; padding:0 4px !important; }
body.portal.admin-ui2 .admin-phase-pill.current{ background:transparent !important; color:var(--r-purple-dark) !important; font-weight:800 !important; }
@media (max-width:640px){
  body.portal.admin-ui2 .admin-body-row{ display:block !important; height:auto !important; overflow:visible !important; }
  body.portal.admin-ui2 .admin-shell{ height:auto !important; overflow:visible !important; }
  body.portal.admin-ui2 .admin-main, body.portal.admin-ui2 .portal-nav{ height:auto !important; overflow:visible !important; width:auto !important; }
}

/* ---- 高さは calc ではなく flex で決める（ヘッダーが折り返しても崩れない） ---- */
body.portal .admin-shell, body.portal.ui2 .shell{
  display:flex !important; flex-direction:column !important; height:100vh !important; overflow:hidden !important;
}
body.portal .portal-header, body.portal.ui2 .topbar{
  flex:0 0 auto !important; height:auto !important; min-height:54px !important;
  padding:8px 20px !important; overflow:hidden !important;
}
body.portal .admin-body-row, body.portal.ui2 .body-row{
  flex:1 1 auto !important; min-height:0 !important; height:auto !important; overflow:hidden !important;
}
body.portal .portal-nav, body.portal.ui2 .sidebar{ overflow-x:hidden !important; }
body.portal .header-meta, body.portal.ui2 .topbar .user{ overflow:hidden !important; text-overflow:ellipsis !important; }
@media (max-width:640px){
  body.portal .admin-shell, body.portal.ui2 .shell{ height:auto !important; overflow:visible !important; }
  body.portal .admin-body-row, body.portal.ui2 .body-row{ overflow:visible !important; }
}

body.portal .portal-header, body.portal.ui2 .topbar{ flex-wrap:nowrap !important; }
body.portal .portal-header > *, body.portal.ui2 .topbar > *{ min-width:0 !important; }
body.portal .header-meta, body.portal.ui2 .topbar .user{ white-space:nowrap !important; }


/* 上部バー: 段階の並びが利用者名に重ならないよう、はみ出す側だけを詰める */
body.portal .portal-header > .brand, body.portal.ui2 .topbar > .brand,
body.portal .portal-header > .admin-brand, body.portal .portal-header > .period,
body.portal.ui2 .topbar > .period, body.portal .portal-header > .sep, body.portal.ui2 .topbar > .sep,
body.portal .portal-header > .user, body.portal.ui2 .topbar > .user,
body.portal .portal-header > .header-meta{ flex:0 0 auto !important; }
body.portal .portal-header .phase-pills, body.portal.ui2 .topbar .phase-pills,
body.portal .portal-header .phase-strip, body.portal.ui2 .topbar .phase-strip,
body.portal .portal-header .admin-phase-strip{
  flex:1 1 auto !important; min-width:0 !important;
  overflow:hidden !important; white-space:nowrap !important;
}
/* 段階のピル自身がはみ出していた（枠は収まっても文字が越える）。中身側も詰める */
body.portal .phase-pills > *, body.portal .phase-strip > *, body.portal .admin-phase-strip > *{
  min-width:0 !important; overflow:hidden !important;
  white-space:nowrap !important; text-overflow:ellipsis !important;
}
/* 利用者名は内側の文字に省略記号を付ける（flex コンテナ自身には効かない） */
body.portal.ui2 .topbar > .user, body.portal .portal-header > .header-meta{
  max-width:34% !important; overflow:hidden !important;
}
body.portal.ui2 .topbar > .user > *, body.portal .portal-header > .header-meta > *{
  min-width:0 !important; overflow:hidden !important;
  white-space:nowrap !important; text-overflow:ellipsis !important;
}
body.portal .list-tab, body.portal .subtab, body.portal .side-btn, body.portal .nav-btn{ white-space:nowrap !important; }

/* ---- 索引メニューの整理（2026-08-26 利用者指示）:
   文字は「件数」だけ。割合・評価の細字は消し、項目は番号の四角ボタンにそろえる。 ---- */
body.portal .accordion-col .accordion-index-group{
  align-items:center !important; gap:10px !important;
  padding:8px 2px 6px !important; margin:0 !important;
  border-bottom:1px solid var(--r-line-soft) !important;
}
/* 件数を主役にする（大きく・左端） */
body.portal .accordion-col .accordion-index-count{
  order:0 !important; flex:0 0 auto !important; margin:0 !important;
  font-size:19px !important; font-weight:800 !important; line-height:1 !important;
  letter-spacing:-.01em !important; color:var(--r-purple-dark) !important;
}
body.portal .accordion-col.section-org .accordion-index-count{ color:#2f6f59 !important; }
body.portal .accordion-col .accordion-index-tools{ order:1 !important; gap:6px !important; }
body.portal .accordion-col .accordion-index-head{ order:2 !important; margin:0 0 0 auto !important; }
body.portal .accordion-col .accordion-index-chips{ order:3 !important; width:100% !important; margin:2px 0 0 !important; }

/* 割合・評価の細字は索引から外す（本文の各項目に同じ値がある） */
body.portal .accordion-col .accordion-index-badges,
body.portal .accordion-col .accordion-index-badge{ display:none !important; }
body.portal .accordion-col .accordion-index-dot{ display:none !important; }

/* 項目は番号だけの四角ボタン。開いている項目は色を反転して示す */
body.portal .accordion-col .accordion-index-chips{ counter-reset:ui3c !important; align-items:center !important; }
body.portal .accordion-col .accordion-index-jump{
  display:flex !important; flex-direction:row !important;
  align-items:center !important; justify-content:center !important;
  width:32px !important; min-width:32px !important; height:32px !important; min-height:32px !important;
  padding:0 !important; border:1px solid var(--r-line) !important; border-radius:9px !important;
  background:#fff !important; color:#5f6b7a !important;
  font-size:13px !important; font-weight:800 !important; line-height:1 !important;
}
body.portal .accordion-col .accordion-index-jump::before{
  counter-increment:ui3c; content:counter(ui3c);
}
body.portal .accordion-col.section-biz .accordion-index-jump:hover{ border-color:var(--r-purple) !important; background:#f7f6fe !important; color:var(--r-purple-dark) !important; }
body.portal .accordion-col.section-org .accordion-index-jump:hover{ border-color:var(--r-green) !important; background:var(--r-green-soft) !important; color:#2f6f59 !important; }
body.portal .accordion-col.section-biz .accordion-index-jump.open{
  border-color:var(--r-purple-dark) !important; background:var(--r-purple) !important; color:#fff !important;
}
body.portal .accordion-col.section-org .accordion-index-jump.open{
  border-color:#35836a !important; background:var(--r-green) !important; color:#fff !important;
}
body.portal .accordion-col .accordion-index-remove{ top:-7px !important; right:-7px !important; width:20px !important; height:20px !important; font-size:12px !important; }

/* ================= 列の三層構造（2026-08-26 利用者指示）=================
   ① 見出し（この列は何か） ② メニュー（何件あるか・どれを見ているか） ③ 内容（目標と記入欄）
   面の色と 1 本の境界線だけで区切る。入れ子のカード枠は作らない。 */

/* ① 見出し: 列の上端いっぱいの帯。左の色帯は列が持っているので見出しには付けない */
body.portal .accordion-col > .section-title-biz,
body.portal .accordion-col > .section-title-org,
body.portal .accordion-col > .panel-title{
  margin:0 -12px !important; padding:11px 14px 10px !important;
  border:0 !important; border-bottom:1px solid var(--r-line) !important;
  border-radius:0 !important; box-shadow:none !important;
  font-size:14px !important; font-weight:800 !important; letter-spacing:.02em !important;
}
body.portal .accordion-col.section-biz > .section-title-biz,
body.portal .accordion-col.section-biz > .panel-title{ background:#f1f0fb !important; color:var(--r-purple-dark) !important; }
body.portal .accordion-col.section-org > .section-title-org,
body.portal .accordion-col.section-org > .panel-title{ background:#ebf6f1 !important; color:#2b6a54 !important; }
body.portal .accordion-col > .section-title-biz::before,
body.portal .accordion-col > .section-title-org::before,
body.portal .accordion-col > .panel-title::before{ display:none !important; }

/* ② メニュー: 見出しの下に続く別の面。カード枠は持たない */
body.portal .accordion-col > .accordion-index-host{
  margin:0 -12px !important; padding:8px 14px !important;
  background:#f8fafc !important; border-bottom:1px solid var(--r-line) !important;
}
body.portal .accordion-col .accordion-index{ margin:0 !important; }
body.portal .accordion-col .accordion-index-group{
  padding:0 !important; margin:0 !important;
  border:0 !important; border-radius:0 !important; box-shadow:none !important;
  background:transparent !important; align-items:center !important;
  row-gap:8px !important; column-gap:10px !important;
}

/* 件数: 大きく・列の色で。現在見ている項目をその横に添える */
body.portal .accordion-col .accordion-index-count{
  order:0 !important; flex:0 0 auto !important; margin:0 !important;
  display:inline-flex !important; align-items:baseline !important; gap:7px !important;
  font-size:21px !important; font-weight:800 !important; line-height:1 !important; letter-spacing:-.02em !important;
}
body.portal .accordion-col .accordion-index-count[data-ui3-view]::after{
  content:attr(data-ui3-view);
  font-size:11.5px !important; font-weight:700 !important; letter-spacing:0 !important;
  color:var(--r-muted) !important;
  padding:2px 8px !important; border:1px solid var(--r-line) !important;
  border-radius:999px !important; background:#fff !important;
}

/* ＋ / − は件数の隣。控えめな大きさに */
body.portal .accordion-col .accordion-index-tools{ order:1 !important; gap:6px !important; margin:0 !important; padding:0 !important; }
body.portal .accordion-col .accordion-index-tools > .btn{
  width:24px !important; height:24px !important; min-height:0 !important; padding:0 !important;
  border-radius:8px !important; font-size:14px !important; line-height:1 !important; box-shadow:none !important;
}
body.portal .accordion-col .accordion-index-tools > .btn:not(.accordion-index-delete-mode){
  border:1px solid var(--r-purple-dark) !important; background:var(--r-purple) !important; color:#fff !important;
}
body.portal .accordion-col.section-org .accordion-index-tools > .btn:not(.accordion-index-delete-mode){
  border-color:#35836a !important; background:var(--r-green) !important;
}
body.portal .accordion-col .accordion-index-tools > .btn.accordion-index-delete-mode{
  border:1px solid var(--r-red-line) !important; background:#fff !important; color:var(--r-red-dark) !important;
}
body.portal .accordion-col .accordion-index-tools > .btn.accordion-index-delete-mode.active{
  border-color:var(--r-red-dark) !important; background:var(--r-red) !important; color:#fff !important;
}
body.portal .accordion-col .accordion-index-head{ order:2 !important; margin:0 0 0 auto !important; }
body.portal .accordion-col .accordion-toggle-all{
  min-height:24px !important; padding:2px 10px !important; border-radius:8px !important;
  font-size:11.5px !important; box-shadow:none !important;
}

/* 番号ボタン: 今見ている項目を塗りで示し、他は白のまま */
body.portal .accordion-col .accordion-index-chips{
  order:3 !important; width:100% !important; margin:0 !important; padding:0 !important;
  counter-reset:ui3c !important; align-items:center !important; gap:6px !important;
}
body.portal .accordion-col .accordion-index-badges,
body.portal .accordion-col .accordion-index-badge,
body.portal .accordion-col .accordion-index-dot{ display:none !important; }
body.portal .accordion-col .accordion-index-jump{
  display:flex !important; align-items:center !important; justify-content:center !important;
  width:30px !important; min-width:30px !important; height:30px !important; min-height:30px !important;
  padding:0 !important; border:1px solid #d3dae5 !important; border-radius:8px !important;
  background:#fff !important; color:#5f6b7a !important;
  font-size:13px !important; font-weight:800 !important; line-height:1 !important;
}
body.portal .accordion-col .accordion-index-jump::before{ counter-increment:ui3c; content:counter(ui3c); }
body.portal .accordion-col.section-biz .accordion-index-jump:hover{ border-color:var(--r-purple) !important; background:#f2f1fc !important; color:var(--r-purple-dark) !important; }
body.portal .accordion-col.section-org .accordion-index-jump:hover{ border-color:var(--r-green) !important; background:var(--r-green-soft) !important; color:#2f6f59 !important; }
body.portal .accordion-col.section-biz .accordion-index-jump.open{ border-color:var(--r-purple-dark) !important; background:var(--r-purple) !important; color:#fff !important; }
body.portal .accordion-col.section-org .accordion-index-jump.open{ border-color:#35836a !important; background:var(--r-green) !important; color:#fff !important; }
/* 今いる項目だけ下に小さな印を出す（塗りだけでは並びの中で見失う） */
body.portal .accordion-col .accordion-index-chip{ position:relative !important; }
body.portal .accordion-col .accordion-index-chip[data-ui3-here]::after{
  content:''; position:absolute; left:50%; bottom:-5px; width:14px; height:3px;
  margin-left:-7px; border-radius:2px; background:var(--r-purple);
}
body.portal .accordion-col.section-org .accordion-index-chip[data-ui3-here]::after{ background:var(--r-green); }

/* ③ 内容: 白い面。項目は白いカード、開いている項目だけ左に色帯を出す */
body.portal .accordion-col > .accordion-list, body.portal .accordion-col > .row-list{
  padding:12px 0 0 !important; background:transparent !important;
}
body.portal .accordion-col .row-item.accordion-item{
  border:1px solid var(--r-line) !important; border-left:3px solid #dfe4ec !important;
  border-radius:10px !important; background:#fff !important; margin-bottom:8px !important;
}
body.portal .accordion-col.section-biz .row-item.accordion-item.open{ border-left-color:var(--r-purple) !important; background:#fbfaff !important; }
body.portal .accordion-col.section-org .row-item.accordion-item.open{ border-left-color:var(--r-green) !important; background:#f8fefb !important; }
/* 前期の目標は内容とは別の資料なので、面の色を落として区別する */
body.portal .accordion-col .prior-goals{
  margin:12px 0 0 !important; border:1px solid var(--r-line) !important; border-radius:10px !important;
  background:#f7f8fa !important; box-shadow:none !important; padding:12px 14px !important;
}

/* 見出しの高さを 45px に統一したので、sticky の吸着位置も 1 つにそろえる。
   元の 44px / 51px は旧い見出しの高さ（7px 差）に合わせた値で、今はどちらもずれる。 */
body.portal .accordion-col > .accordion-index-host,
body.portal .accordion-col > .panel-title ~ .accordion-index-host,
body.portal .accordion-col > .accordion-toggle-all,
body.portal .accordion-col > .panel-title ~ .accordion-toggle-all{ top:45px !important; }

/* ---- 今見ている項目の示し方（2026-08-26 利用者指示）----
   開いている項目を全部塗ると区別が付かないので、塗りは**今見ている 1 件だけ**に使う。 */
body.portal .accordion-col .accordion-index-count[data-ui3-view]::after{
  border-color:var(--r-purple-line) !important; color:var(--r-purple-dark) !important; background:#fff !important;
}
body.portal .accordion-col.section-org .accordion-index-count[data-ui3-view]::after{
  border-color:var(--r-green-line) !important; color:#2f6f59 !important;
}
/* 開いているだけの項目は淡く。塗りではない */
body.portal .accordion-col.section-biz .accordion-index-jump.open{
  border-color:var(--r-purple-line) !important; background:#f2f1fc !important; color:var(--r-purple-dark) !important;
}
body.portal .accordion-col.section-org .accordion-index-jump.open{
  border-color:var(--r-green-line) !important; background:var(--r-green-soft) !important; color:#2f6f59 !important;
}
/* 今見ている項目だけ塗り＋外側のリングで抜き出す */
body.portal .accordion-col.section-biz .accordion-index-chip[data-ui3-here] .accordion-index-jump{
  border-color:var(--r-purple-dark) !important; background:var(--r-purple) !important; color:#fff !important;
  box-shadow:0 0 0 3px rgba(111,104,207,.22) !important;
}
body.portal .accordion-col.section-org .accordion-index-chip[data-ui3-here] .accordion-index-jump{
  border-color:#35836a !important; background:var(--r-green) !important; color:#fff !important;
  box-shadow:0 0 0 3px rgba(63,149,120,.22) !important;
}
body.portal .accordion-col .accordion-index-chip[data-ui3-here]::after{ display:none !important; }

/* 一覧の側も同じ 1 件を示す（索引と本文が同じ項目を指していることが見て分かる） */
body.portal .accordion-col .row-item.accordion-item{ border-left-width:3px !important; }
body.portal .accordion-col.section-biz .row-item.accordion-item[data-ui3-cur]{
  border-left:5px solid var(--r-purple) !important; box-shadow:0 0 0 2px rgba(111,104,207,.14) !important;
}
body.portal .accordion-col.section-org .row-item.accordion-item[data-ui3-cur]{
  border-left:5px solid var(--r-green) !important; box-shadow:0 0 0 2px rgba(63,149,120,.14) !important;
}

/* ---- 「前期の目標」（参照）と「記入する項目」（内容）を作り分ける ---- */
body.portal .accordion-col .prior-goals{
  margin:12px 0 4px !important; padding:0 !important;
  border:1px dashed #ccd4e0 !important; border-radius:10px !important;
  background:#f2f4f8 !important; box-shadow:none !important; overflow:hidden !important;
}
/* 見出しは既にある本物（期を含む）を帯に仕立てる。文字を足すと同じ見出しが二重になる */
body.portal .accordion-col .prior-goals > .prior-goals-title{
  display:block !important; margin:0 !important; padding:7px 12px !important;
  border:0 !important; border-bottom:1px dashed #ccd4e0 !important; border-radius:0 !important;
  background:#e9edf4 !important; color:#5f6b7a !important;
  font-size:11px !important; font-weight:800 !important; letter-spacing:.06em !important;
}
body.portal .accordion-col .prior-goals > *{ margin:0 !important; }
body.portal .accordion-col .prior-goals > *:not(:first-child){ padding:0 12px !important; }
body.portal .accordion-col .prior-goals > *:last-child{ padding-bottom:10px !important; }
body.portal .accordion-col .prior-goals .accordion-item{
  background:transparent !important; border:0 !important; border-bottom:1px dashed #d7dde7 !important;
  border-radius:0 !important; box-shadow:none !important; margin:0 !important;
}
body.portal .accordion-col .prior-goals > *:not(.prior-goals-title):first-child{ padding-top:10px !important; }
/* 記入する項目は白い面。参照（点線・灰）とはっきり違う見た目にする */
body.portal .accordion-col > .accordion-list, body.portal .accordion-col > .row-list{
  margin-top:10px !important; padding:0 !important;
  border-top:2px solid var(--r-line) !important; padding-top:12px !important;
}

/* ---- 索引メニューの作り直し（2026-08-26 利用者指示）----
   ・「N 件目を表示中」の文字は出さない（今いる項目は番号ボタンの塗りだけで示す）
   ・＋ / − は丸に戻す
   ・外側に伸びる影は使わない（メニューは横に流れる帯なので、影は端で切れる） */
body.portal .accordion-col .accordion-index-count[data-ui3-view]::after{ content:none !important; display:none !important; }
body.portal .accordion-col .accordion-index-tools > .btn{ border-radius:50% !important; }

body.portal .accordion-col .accordion-index-chips{
  padding:2px 2px 4px !important; overflow-x:auto !important; overflow-y:visible !important;
}
body.portal .accordion-col .accordion-index-jump,
body.portal .accordion-col .accordion-index-chip[data-ui3-here] .accordion-index-jump{
  box-shadow:none !important; outline:0 !important;
}
/* 今いる項目＝塗り。開いているだけの項目＝淡い地。閉じている項目＝白 */
body.portal .accordion-col.section-biz .accordion-index-chip[data-ui3-here] .accordion-index-jump{
  border-color:var(--r-purple-dark) !important; background:var(--r-purple) !important; color:#fff !important;
  box-shadow:none !important;
}
body.portal .accordion-col.section-org .accordion-index-chip[data-ui3-here] .accordion-index-jump{
  border-color:#35836a !important; background:var(--r-green) !important; color:#fff !important;
  box-shadow:none !important;
}
body.portal .accordion-col .row-item.accordion-item[data-ui3-cur]{ box-shadow:none !important; }

/* ---- 目標と内容は「面」で分ける（帯を列いっぱいに広げる）---- */
body.portal .accordion-col .prior-goals{
  margin:0 -12px !important; padding:0 0 10px !important;
  border:0 !important; border-top:1px solid var(--r-line) !important;
  border-bottom:1px solid var(--r-line) !important; border-radius:0 !important;
  background:#eef1f6 !important; box-shadow:none !important;
}
body.portal .accordion-col .prior-goals > .prior-goals-title{
  border-bottom:1px solid #dde2ea !important; background:#e4e9f1 !important;
}
body.portal .accordion-col .prior-goals .accordion-item{ border-bottom:1px solid #dde2ea !important; }
body.portal .accordion-col .prior-goals .accordion-item:last-child{ border-bottom:0 !important; }
/* 記入する内容の面は白。帯との境目は面の色そのもので分かるので罫線は置かない */
body.portal .accordion-col > .accordion-list, body.portal .accordion-col > .row-list{
  margin:0 -12px !important; padding:12px !important;
  border:0 !important; background:#fff !important;
}

/* ================= ポップさの復元（2026-08-26 利用者指示）=================
   読みやすさ（表のゼブラ・1 画面・横スクロールなし）はそのまま残し、
   UI3 が持っていた語彙を戻す: 彩度のある紫／緑、グラデーション、3px の立体影、
   hover の浮き上がり。ただし横に広がる変形（scale）は使わない＝はみ出しの元。 */
body.portal{
  --r-purple:#6c5ce7; --r-purple-dark:#5341d6; --r-purple-lt:#a29bfe;
  --r-purple-soft:#f0eeff; --r-purple-line:#d7d2fd; --r-purple-sh:#5341d6;
  --r-green:#00b894; --r-green-dark:#009d7d; --r-green-lt:#55efc4;
  --r-green-soft:#e7fbf4; --r-green-line:#a8eed9; --r-green-sh:#009d7d;
  --r-red:#d63031; --r-red-dark:#b02324; --r-red-lt:#ff7675;
  --r-red-soft:#fdeded; --r-red-line:#f5c6cb; --r-red-sh:#b02324;
  --r-amber:#e6a02c; --r-amber-soft:#fff8e8; --r-amber-line:#f5dda6;
  --r-ease:cubic-bezier(.34,1.56,.64,1);
}

/* ---- 面に厚みを戻す（下に 2px の実線影＋やわらかい落ち影） ---- */
body.portal .panel, body.portal .kpi-cell, body.portal .org-card,
body.portal .tbl-wrap, body.portal .table-scroll, body.portal .fact-table,
body.portal .notif-box, body.portal .accordion-col, body.portal .progress-dept-panel,
body.portal .progress-late-panel, body.portal .radio-card, body.portal .task-card,
body.portal .action-item, body.portal .modal-box{
  box-shadow:0 2px 0 #eceef4, 0 4px 14px rgba(20,24,40,.06) !important;
  border-radius:16px !important;
}
body.portal .row-item, body.portal .accordion-detail, body.portal .contrib-summary,
body.portal .notice, body.portal .view-note{
  box-shadow:0 2px 0 #eff0f5, 0 3px 10px rgba(20,24,40,.05) !important;
}
body.portal .panel.accent{
  background:linear-gradient(135deg,#f7f5ff,#f0eeff) !important;
  border-color:var(--r-purple-line) !important;
  box-shadow:0 2px 0 #e6e2fb, 0 6px 18px rgba(108,92,231,.12) !important;
}
body.portal .panel-title::before{ background:var(--r-purple) !important; }

/* ---- ボタン: グラデーション＋3px の立体影。押すと沈む ---- */
body.portal .btn, body.portal .list-tab, body.portal .subtab{
  transition:transform .15s var(--r-ease), box-shadow .15s var(--r-ease),
             background .15s ease, border-color .15s ease, color .15s ease !important;
}
body.portal .btn:not(.primary):not(.danger):not(.green){
  border:1px solid #dfe3ec !important; background:#fff !important;
  box-shadow:0 2px 0 #eceef4 !important;
}
body.portal .btn:not(.primary):not(.danger):not(.green):hover{
  transform:translateY(-2px) !important; box-shadow:0 4px 0 #e4e7ef !important;
  border-color:var(--r-purple-lt) !important; color:var(--r-purple-dark) !important; background:#fbfaff !important;
}
body.portal .btn:not(.primary):not(.danger):not(.green):active{
  transform:translateY(1px) !important; box-shadow:0 1px 0 #e4e7ef !important;
}
body.portal .btn.primary, body.portal .btn-primary, body.portal button.btn-primary,
body.portal .action-cta, body.portal .advance-btn{
  border:0 !important; color:#fff !important;
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  box-shadow:0 3px 0 var(--r-purple-sh) !important;
}
body.portal .btn.primary:hover, body.portal .btn-primary:hover, body.portal button.btn-primary:hover,
body.portal .action-cta:hover, body.portal .advance-btn:hover{
  transform:translateY(-2px) !important;
  box-shadow:0 5px 0 var(--r-purple-sh), 0 8px 20px rgba(108,92,231,.3) !important;
}
body.portal .btn.primary:active, body.portal .btn-primary:active,
body.portal .action-cta:active, body.portal .advance-btn:active{
  transform:translateY(2px) !important; box-shadow:0 1px 0 var(--r-purple-sh) !important;
}
body.portal .btn.danger, body.portal .btn.sm.danger, body.portal .btn-danger, body.portal button.btn-danger{
  border:0 !important; color:#fff !important;
  background:linear-gradient(135deg,var(--r-red),var(--r-red-lt)) !important;
  box-shadow:0 3px 0 var(--r-red-sh) !important;
}
body.portal .btn.danger:hover, body.portal .btn.sm.danger:hover, body.portal .btn-danger:hover{
  transform:translateY(-2px) !important;
  box-shadow:0 5px 0 var(--r-red-sh), 0 8px 18px rgba(214,48,49,.28) !important;
}
body.portal .btn.danger:active, body.portal .btn.sm.danger:active, body.portal .btn-danger:active{
  transform:translateY(2px) !important; box-shadow:0 1px 0 var(--r-red-sh) !important;
}
body.portal .btn.green{
  border:0 !important; color:#fff !important;
  background:linear-gradient(135deg,var(--r-green-lt),var(--r-green)) !important;
  box-shadow:0 3px 0 var(--r-green-sh) !important;
}
body.portal .btn.green:hover{ transform:translateY(-2px) !important; box-shadow:0 5px 0 var(--r-green-sh) !important; }
body.portal .btn:disabled, body.portal button:disabled{
  transform:none !important; background:#eef0f5 !important; background-image:none !important;
  box-shadow:0 2px 0 #e4e7ef !important; color:#a3abb8 !important;
}

/* ---- 左ナビ: 現在地はグラデーション＋光、hover は右へ寄る ---- */
body.portal.ui2 .side-btn, body.portal.admin-ui2 .portal-nav .nav-btn{
  transition:all .18s var(--r-ease) !important;
}
body.portal.ui2 .side-btn:hover, body.portal.admin-ui2 .portal-nav .nav-btn:hover{
  background:#f5f4ff !important; color:var(--r-purple-dark) !important; transform:translateX(3px) !important;
}
body.portal.ui2 .side-btn.active, body.portal.admin-ui2 .portal-nav .nav-btn[aria-current="page"]{
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important; color:#fff !important;
  box-shadow:0 3px 10px rgba(108,92,231,.32) !important; transform:none !important;
}
body.portal.ui2 .topbar .brand::before, body.portal.admin-ui2 .admin-brand::before{
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  box-shadow:0 2px 8px rgba(108,92,231,.3) !important;
}
body.portal.ui2 .topbar .brand .role{
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  box-shadow:0 2px 6px rgba(108,92,231,.25) !important;
}

/* ---- タブ ---- */
body.portal .list-tab:hover, body.portal .subtab:hover{
  transform:translateY(-1px) !important; border-color:var(--r-purple-lt) !important;
  background:#faf9ff !important; color:var(--r-purple-dark) !important;
}
body.portal .list-tab[aria-selected="true"], body.portal .subtab[aria-selected="true"], body.portal .subtab.active{
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  border-color:transparent !important; color:#fff !important;
  box-shadow:0 3px 0 var(--r-purple-sh) !important; transform:none !important;
}

/* ---- 記入する項目: カードとして浮かせ、hover で持ち上げる ---- */
body.portal .accordion-col .row-item.accordion-item{
  transition:transform .18s var(--r-ease), box-shadow .18s var(--r-ease), border-color .18s ease !important;
}
body.portal .accordion-col .row-item.accordion-item:hover{
  transform:translateY(-2px) !important;
  box-shadow:0 4px 0 #e8e9f0, 0 8px 20px rgba(20,24,40,.08) !important;
  border-color:var(--r-purple-lt) !important;
}
body.portal .accordion-col.section-org .row-item.accordion-item:hover{ border-color:var(--r-green-lt) !important; }
body.portal .accordion-col.section-biz .row-item.accordion-item[data-ui3-cur]{
  box-shadow:0 2px 0 #e2ddfb, 0 6px 18px rgba(108,92,231,.16) !important;
}
body.portal .accordion-col.section-org .row-item.accordion-item[data-ui3-cur]{
  box-shadow:0 2px 0 #cdf0e4, 0 6px 18px rgba(0,184,148,.16) !important;
}
body.portal .accordion-item.open .accordion-mark{
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important; border-color:transparent !important;
  box-shadow:0 2px 6px rgba(108,92,231,.3) !important;
}
body.portal .section-org .accordion-item.open .accordion-mark{
  background:linear-gradient(135deg,var(--r-green-lt),var(--r-green)) !important;
  box-shadow:0 2px 6px rgba(0,184,148,.3) !important;
}

/* ---- 索引メニュー: 番号ボタンにも厚みを。影は下 2px だけ（横に伸ばすと端で切れる） ---- */
body.portal .accordion-col .accordion-index-chips{ padding:3px 3px 7px !important; }
body.portal .accordion-col .accordion-index-jump{
  box-shadow:0 2px 0 #e6e9f0 !important;
  transition:transform .15s var(--r-ease), box-shadow .15s var(--r-ease), background .15s ease, color .15s ease !important;
}
body.portal .accordion-col .accordion-index-jump:hover{ transform:translateY(-2px) !important; }
body.portal .accordion-col.section-biz .accordion-index-jump:hover{ box-shadow:0 4px 0 #ddd8fb !important; }
body.portal .accordion-col.section-org .accordion-index-jump:hover{ box-shadow:0 4px 0 #c4ecdf !important; }
body.portal .accordion-col.section-biz .accordion-index-chip[data-ui3-here] .accordion-index-jump{
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  border-color:transparent !important; box-shadow:0 2px 0 var(--r-purple-sh) !important;
}
body.portal .accordion-col.section-org .accordion-index-chip[data-ui3-here] .accordion-index-jump{
  background:linear-gradient(135deg,var(--r-green-lt),var(--r-green)) !important;
  border-color:transparent !important; box-shadow:0 2px 0 var(--r-green-sh) !important;
}
body.portal .accordion-col .accordion-index-tools > .btn:not(.accordion-index-delete-mode){
  border:0 !important; background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  box-shadow:0 2px 0 var(--r-purple-sh) !important;
}
body.portal .accordion-col.section-org .accordion-index-tools > .btn:not(.accordion-index-delete-mode){
  background:linear-gradient(135deg,var(--r-green-lt),var(--r-green)) !important;
  box-shadow:0 2px 0 var(--r-green-sh) !important;
}
body.portal .accordion-col .accordion-index-tools > .btn.accordion-index-delete-mode{
  border:0 !important; background:linear-gradient(135deg,var(--r-red),var(--r-red-lt)) !important;
  color:#fff !important; box-shadow:0 2px 0 var(--r-red-sh) !important;
}
body.portal .accordion-col .accordion-index-tools > .btn:hover{ transform:translateY(-2px) !important; }
body.portal .accordion-col .accordion-index-tools > .btn:active{ transform:translateY(1px) !important; }
body.portal .accordion-col .accordion-index-count{ color:var(--r-purple-dark) !important; }
body.portal .accordion-col.section-org .accordion-index-count{ color:var(--r-green-dark) !important; }

/* ---- 列の見出し帯にも彩度を戻す ---- */
body.portal .accordion-col.section-biz > .section-title-biz,
body.portal .accordion-col.section-biz > .panel-title{
  background:linear-gradient(135deg,var(--r-purple-soft),#f7f5ff) !important; color:var(--r-purple-dark) !important;
}
body.portal .accordion-col.section-org > .section-title-org,
body.portal .accordion-col.section-org > .panel-title{
  background:linear-gradient(135deg,var(--r-green-soft),#f2fdf9) !important; color:var(--r-green-dark) !important;
}
body.portal .accordion-col.section-biz{ border-left-color:var(--r-purple) !important; }
body.portal .accordion-col.section-org{ border-left-color:var(--r-green) !important; }

/* ---- 表: ゼブラと格子は保ったまま、見出しに厚みと色を足す ---- */
body.portal .tbl th, body.portal .review-table th{
  background:linear-gradient(180deg,#f6f7fb,#eef0f7) !important; color:#3d4658 !important;
}
body.portal .tbl tbody tr:hover > td, body.portal .review-table tbody tr:hover > td{
  background:var(--r-purple-soft) !important;
}
body.portal .matrix-total-row > td, body.portal .tbl tfoot td{
  background:linear-gradient(180deg,#f6f7fb,#eef0f7) !important;
}
/* 行の hover で表が動かないことは維持（横スクロールの元） */
body.portal .tbl tbody tr, body.portal .review-table tbody tr,
body.portal .tbl tbody tr:hover, body.portal .review-table tbody tr:hover,
body.portal .tbl tbody tr > td, body.portal .review-table tbody tr > td,
body.portal .tbl tbody tr:hover > td, body.portal .review-table tbody tr:hover > td,
body.portal .tbl tbody tr:hover > th, body.portal .review-table tbody tr:hover > th{
  transform:none !important; translate:none !important;
}

/* ---- 状態バッジ・進捗バー ---- */
body.portal .status-badge.done, body.portal .status-badge.ok{ background:var(--r-green-soft) !important; border-color:var(--r-green-line) !important; color:#00795f !important; }
body.portal .status-badge.rejected, body.portal .status-badge.ng, body.portal .status-badge.danger{ background:var(--r-red-soft) !important; border-color:var(--r-red-line) !important; color:#b02324 !important; }
body.portal .status-badge.pending, body.portal .status-badge.warn{ background:var(--r-amber-soft) !important; border-color:var(--r-amber-line) !important; color:#8a6314 !important; }
body.portal.admin-ui2 .progress-row .p-fill{
  background:linear-gradient(90deg,var(--r-purple),var(--r-purple-lt)) !important;
}
body.portal .fact-grade{
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  box-shadow:0 3px 10px rgba(108,92,231,.3) !important;
}
body.portal .gf-card-no{
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  box-shadow:0 2px 8px rgba(108,92,231,.28) !important;
}
body.portal input:focus, body.portal textarea:focus, body.portal select:focus{
  border-color:var(--r-purple) !important; box-shadow:0 0 0 3px rgba(108,92,231,.16) !important;
}

/* 管理者側の段階の並びは .admin-phase-pills（member の .phase-pills とは別名）。
   これを縮む側にしないと、中のピルが箱の外に出て利用者名に重なる。 */
body.portal .portal-header .admin-phase-pills,
body.portal.admin-ui2 .admin-phase-pills{
  flex:1 1 auto !important; min-width:0 !important;
  overflow:hidden !important; white-space:nowrap !important;
}
body.portal .admin-phase-pills > *{
  min-width:0 !important; overflow:hidden !important;
  white-space:nowrap !important; text-overflow:ellipsis !important;
}

/* ---- 記入できることが見て分かる入力欄（2026-08-26 利用者指示）----
   薄い面の上に薄い枠の白い箱を置くと「読み取り専用」に見える。枠をはっきりさせ、
   内側に浅い影を入れて「くぼんだ入力欄」にする（ボタンの出っ張りと対になる）。 */
body.portal .main input[type="text"], body.portal .main input[type="number"],
body.portal .main textarea, body.portal .main select,
body.portal .admin-main input[type="text"], body.portal .admin-main input[type="number"],
body.portal .admin-main textarea, body.portal .admin-main select{
  background:#fff !important; border:1px solid #c5cedd !important;
  box-shadow:inset 0 1px 2px rgba(20,24,40,.07) !important;
  color:#1f2733 !important;
  transition:border-color .15s ease, box-shadow .15s ease !important;
}
body.portal .main input[type="text"]:hover, body.portal .main input[type="number"]:hover,
body.portal .main textarea:hover, body.portal .main select:hover,
body.portal .admin-main input[type="text"]:hover, body.portal .admin-main input[type="number"]:hover,
body.portal .admin-main textarea:hover, body.portal .admin-main select:hover{
  border-color:var(--r-purple-lt) !important;
  box-shadow:inset 0 1px 2px rgba(20,24,40,.07), 0 0 0 3px rgba(108,92,231,.08) !important;
}
body.portal input:focus, body.portal textarea:focus, body.portal select:focus{
  border-color:var(--r-purple) !important; border-width:1px !important;
  box-shadow:inset 0 1px 2px rgba(20,24,40,.05), 0 0 0 3px rgba(108,92,231,.18) !important;
}
body.portal input::placeholder, body.portal textarea::placeholder{ color:#a9b2c1 !important; }
/* 読み取り専用の欄は逆に「入力できない」ことが分かる見た目にする */
body.portal input[readonly], body.portal textarea[readonly], body.portal input:disabled,
body.portal textarea:disabled, body.portal select:disabled, body.portal .field-ro{
  background:#f1f3f7 !important; border-color:#dde2ea !important;
  box-shadow:none !important; color:#5f6b7a !important;
}
/* 見出しラベルを濃くして、どこに何を書くかを先に読ませる */
body.portal .field-rw > label, body.portal .field > label,
body.portal .row-fields label, body.portal .accordion-detail label{
  color:#41505f !important; font-weight:700 !important;
}
/* 記入する項目の面は白のまま（入力欄の白が沈まないように地をわずかに落とす） */
body.portal .accordion-col .accordion-detail{ background:#f7f8fc !important; }

/* ---- 貢献ブロックをもっと高く（画面の余白を使い切る） ---- */
body.portal .accordion-col{ max-height:calc(100vh - 172px) !important; }

/* ---- 行の下の式は上のカードと同じ内容なので出さない ---- */
body.portal #contribStats, body.portal #eval1ContribStats, body.portal #finalContribStats{
  display:none !important;
}

/* ---- 提出ブロック（2026-08-26 利用者指示）----
   縦に 4 段積むと間延びして、押すボタンが端に取り残される。
   左に「状態と説明」、右に「操作」を置く 1 枚の帯にする。 */
body.portal #submissionPanel{
  display:grid !important;
  grid-template-columns:minmax(0,1fr) auto !important;
  grid-template-areas:'ttl act' 'state act' 'hint act' !important;
  align-items:center !important;
  column-gap:18px !important; row-gap:8px !important;
  padding:14px 18px !important;
}
body.portal #submissionPanel > .panel-title{
  grid-area:ttl !important; margin:0 !important;
  display:flex !important; align-items:center !important; gap:10px !important;
}
body.portal #submissionPanel > #submitStateBanner{ grid-area:state !important; }
body.portal #submissionPanel > #goalReviewBanner,
body.portal #submissionPanel > #achievementReviewBanner{ grid-column:1 !important; }
body.portal #submissionPanel > .muted, body.portal #submissionPanel > p.muted{
  grid-area:hint !important; margin:0 !important;
  font-size:12px !important; line-height:1.6 !important; color:#7b8494 !important;
}
body.portal #submissionPanel > .btn-row{
  grid-area:act !important; margin:0 !important;
  justify-content:flex-end !important; align-self:center !important;
}
body.portal #submissionPanel > .btn-row > .btn{
  min-height:40px !important; padding:9px 22px !important;
  font-size:14px !important; font-weight:800 !important;
}
/* 状態の帯は行の中の一部品なので、上下の余白と字を詰める */
body.portal #submissionPanel > .notice{
  margin:0 !important; padding:8px 12px !important; font-size:12.5px !important;
  box-shadow:none !important;
}
body.portal #submissionPanel > .notice:empty{ display:none !important; }
/* 見出しの状態バッジ */
body.portal #submissionPanel .pill.rejected{
  background:var(--r-red-soft) !important; border:1px solid var(--r-red-line) !important;
  color:#b02324 !important; font-size:11.5px !important; font-weight:800 !important;
}
body.portal #submissionPanel .pill.done, body.portal #submissionPanel .pill.ok{
  background:var(--r-green-soft) !important; border:1px solid var(--r-green-line) !important; color:#00795f !important;
}
@media (max-width:820px){
  body.portal #submissionPanel{
    grid-template-columns:minmax(0,1fr) !important;
    grid-template-areas:'ttl' 'state' 'hint' 'act' !important;
  }
  body.portal #submissionPanel > .btn-row{ justify-content:flex-start !important; }
}
/* 同じ状態を二度言わない: 下の帯は提出ブロックが同じことを言っているときは出さない */
body.portal #selfStateBanner[data-ui3-dup]{ display:none !important; }

/* ---- 提出ブロックの操作列: 保存と提出を同じ場所に並べる ---- */
body.portal #submissionPanel > #ui3ActionCol{
  grid-area:act !important;
  display:flex !important; flex-direction:column !important; align-items:stretch !important;
  gap:8px !important; align-self:center !important; margin:0 !important;
}
body.portal #submissionPanel > #ui3ActionCol > #saveBar{ margin:0 !important; justify-content:stretch !important; }
body.portal #submissionPanel > #ui3ActionCol > .btn-row{ margin:0 !important; justify-content:stretch !important; }
body.portal #submissionPanel #ui3ActionCol .btn{
  width:100% !important; min-height:38px !important; padding:8px 20px !important;
  font-size:13.5px !important; font-weight:800 !important; white-space:nowrap !important;
}
/* 保存は「途中の操作」なので白抜き。提出（確定）だけを塗りの主役にする */
body.portal #submissionPanel #ui3ActionCol #saveBar > .btn{
  background:#fff !important; background-image:none !important;
  border:1px solid var(--r-purple-lt) !important; color:var(--r-purple-dark) !important;
  box-shadow:0 2px 0 #e2ddfb !important;
}
body.portal #submissionPanel #ui3ActionCol #saveBar > .btn:hover{
  background:#f7f6ff !important; transform:translateY(-2px) !important; box-shadow:0 4px 0 #ddd8fb !important;
}
body.portal #submissionPanel #ui3ActionCol #saveBar > .btn:active{
  transform:translateY(1px) !important; box-shadow:0 1px 0 #ddd8fb !important;
}
body.portal #submissionPanel #ui3ActionCol #saveBar > .btn:disabled{
  background:#f3f4f8 !important; border-color:#dfe3ec !important; color:#a3abb8 !important;
  box-shadow:0 2px 0 #e7eaf1 !important; transform:none !important;
}
@media (max-width:820px){
  body.portal #submissionPanel > #ui3ActionCol{
    grid-area:act !important; flex-direction:row !important; flex-wrap:wrap !important;
  }
  body.portal #submissionPanel #ui3ActionCol .btn{ width:auto !important; }
}

/* 操作列の幅は文の長さで決めない（ボタンは列いっぱい・列は固定幅） */
body.portal #submissionPanel{ grid-template-columns:minmax(0,1fr) 148px !important; }
body.portal #submissionPanel > #ui3ActionCol{ width:148px !important; flex:0 0 auto !important; }
@media (max-width:820px){
  body.portal #submissionPanel{ grid-template-columns:minmax(0,1fr) !important; }
  body.portal #submissionPanel > #ui3ActionCol{ width:auto !important; }
}

/* 操作列の中の行は余計な高さを持たない（保存と提出が離れて見えるのを防ぐ） */
body.portal #submissionPanel #ui3ActionCol{ justify-content:center !important; }
body.portal #submissionPanel #ui3ActionCol > .btn-row{
  display:flex !important; padding:0 !important; margin:0 !important;
  min-height:0 !important; align-items:stretch !important; gap:8px !important;
}
body.portal #submissionPanel #ui3ActionCol > .btn-row:empty{ display:none !important; }

/* 保存の横の説明文は、この帯の左側にある説明と同じことを言うので操作列には出さない
   （狭い列に長文が入ると列の高さが 3 倍になる） */
body.portal #submissionPanel #ui3ActionCol #saveBar > .muted-sm,
body.portal #submissionPanel #ui3ActionCol #saveBar > .muted{ display:none !important; }
body.portal #submissionPanel #ui3ActionCol > .btn-row{ flex-direction:column !important; }

/* ---- 無効なボタンは hover でも動かない（2026-08-26 利用者指摘）----
   .btn.primary:hover は .btn:disabled より詳細度が高いため、押せないボタンにも
   浮き上がりと紫の立体影が当たっていた（灰色のボタンの下に紫の帯が出る）。
   hover / active も含めて明示的に打ち消し、押せないことを cursor でも伝える。 */
body.portal .btn:disabled, body.portal .btn:disabled:hover, body.portal .btn:disabled:active,
body.portal .btn[disabled], body.portal .btn[disabled]:hover, body.portal .btn[disabled]:active,
body.portal button:disabled, body.portal button:disabled:hover, body.portal button:disabled:active,
body.portal #submissionPanel #ui3ActionCol .btn:disabled,
body.portal #submissionPanel #ui3ActionCol .btn:disabled:hover,
body.portal #submissionPanel #ui3ActionCol .btn:disabled:active,
body.portal #submissionPanel #ui3ActionCol #saveBar > .btn:disabled,
body.portal #submissionPanel #ui3ActionCol #saveBar > .btn:disabled:hover,
body.portal #submissionPanel #ui3ActionCol #saveBar > .btn:disabled:active{
  transform:none !important; filter:none !important;
  background:#eef0f5 !important; background-image:none !important;
  border:1px solid #dfe3ec !important; color:#a3abb8 !important;
  box-shadow:0 2px 0 #e6e9f0 !important;
  cursor:not-allowed !important;
}
/* 索引の番号・タブ・ナビも同じ扱い */
body.portal .accordion-index-tools > .btn:disabled,
body.portal .accordion-index-tools > .btn:disabled:hover,
body.portal .accordion-col .accordion-index-tools > .btn:disabled,
body.portal .accordion-col .accordion-index-tools > .btn:disabled:hover{
  transform:none !important; background:#eef0f5 !important; background-image:none !important;
  color:#a3abb8 !important; box-shadow:0 2px 0 #e6e9f0 !important; cursor:not-allowed !important;
}
/* 押せない理由（title）を持つボタンは、その場で理由が読めることを示す */
body.portal .btn:disabled[title]{ pointer-events:auto !important; }

/* ================= 表のポップさを戻す（2026-08-26 利用者指示）=================
   ゼブラ・格子・見出し固定は保ったまま、灰色一色をやめて紫寄りの階調に。 */
body.portal .tbl-wrap, body.portal .table-scroll, body.portal .analytics-table-wrap,
body.portal .distribution-table-wrap, body.portal .criteria-table-scroll{
  border:1px solid #e6e4f2 !important; border-radius:14px !important; overflow:hidden auto !important;
  background:#fff !important; box-shadow:0 2px 0 #eceaf6, 0 4px 14px rgba(20,24,40,.06) !important;
}
body.portal .tbl th, body.portal .review-table th{
  background:linear-gradient(180deg,#f6f4ff,#ebe8fd) !important;
  color:var(--r-purple-dark) !important;
  border:1px solid #e0dcf6 !important; border-bottom:2px solid #cfc9f5 !important;
  font-weight:800 !important;
  box-shadow:inset 0 -2px 0 #cfc9f5, inset 0 1px 0 #efedfb !important;
}
body.portal .tbl td, body.portal .review-table td{ border:1px solid #edecf6 !important; }
body.portal .tbl tbody tr:nth-child(odd) > td, body.portal .review-table tbody tr:nth-child(odd) > td{ background:#fff !important; }
body.portal .tbl tbody tr:nth-child(even) > td, body.portal .review-table tbody tr:nth-child(even) > td{ background:#faf9ff !important; }
body.portal .tbl tbody tr:hover > td, body.portal .review-table tbody tr:hover > td{
  background:#f2f0fe !important; box-shadow:inset 3px 0 0 var(--r-purple-lt) !important;
}
body.portal .matrix-total-row > td, body.portal .tbl tfoot td{
  background:linear-gradient(180deg,#f6f4ff,#ebe8fd) !important;
  color:var(--r-purple-dark) !important; border-top:2px solid #cfc9f5 !important;
}
/* 部門の行は表の中の見出しなので、色の帯にする */
body.portal.admin-ui2 .progress-dept-panel > .table-scroll > .review-table > tbody > tr:not(.dept-members-row) > td{
  background:linear-gradient(180deg,#f3f1fe,#e9e5fc) !important;
  border-bottom:1px solid #d8d3f6 !important; color:var(--r-purple-dark) !important; font-weight:700 !important;
}
body.portal.admin-ui2 .progress-dept-panel .dept-toggle{
  color:var(--r-purple-dark) !important; font-weight:800 !important;
}
body.portal.admin-ui2 .progress-dept-panel .dept-members-row > td{ background:#fbfaff !important; }
body.portal.admin-ui2 .progress-dept-panel .dept-members-table{
  border:1px solid #e6e4f2 !important; border-radius:10px !important; overflow:hidden !important;
  box-shadow:0 1px 0 #eceaf6 !important;
}
/* 状態バッジは表の中の主役。淡い面＋枠で読ませる */
body.portal .pill.badge-done{ background:var(--r-green-soft) !important; border:1px solid var(--r-green-line) !important; color:#00795f !important; }
body.portal .pill.badge-none, body.portal .pill.badge-todo{ background:#f3f4f8 !important; border:1px solid #e2e5ee !important; color:#8a94a6 !important; }
body.portal .pill.badge-late, body.portal .pill.badge-warn{ background:var(--r-amber-soft) !important; border:1px solid var(--r-amber-line) !important; color:#8a6314 !important; }
/* 「開始待ち」＝予定は発効済みで、予定の時刻に自動で始まる（2026-09-09）。異常ではないので
   琥珀（late/warn）ではなく、進行中を示す紫寄りの淡い面にする。灰（badge-none）と同じ色に
   すると「何もしていない」と区別が付かない——押した結果が見えないのが元の不良だった。 */
body.portal .pill.badge-wait{ background:var(--r-purple-soft) !important; border:1px solid var(--r-purple-line) !important; color:#5b54bd !important; }

/* ================= 差し戻しは氏名の隣に 1 つ（2026-09-07 利用者指示）=================
   赤いボタンが全行・全列に並ぶと表が読めない。かといって「差し戻しモード」の切り替えは
   一手増えるだけだった。氏名の隣の 1 つを押して、その人の項目を選んでまとめて戻す。 */
/* 氏名のセルは**普通の表のセル**のまま（display を変えない）。flex にすると行の背景・罫線から
   外れて、氏名の欄だけ白い箱が浮いて見えた（2026-09-07 実機指摘）。名前とボタンは行内に並べる。 */
body.portal .dept-members-table td.member-name{
  white-space:nowrap !important;
}
body.portal .btn.sm.danger.progress-reject-button, body.portal .progress-reject-button{
  display:inline-flex !important; align-items:center !important; vertical-align:middle !important;
  margin:0 0 0 10px !important; padding:3px 11px !important; min-height:26px !important;
  border:1px solid var(--r-red-line) !important; border-radius:999px !important;
  background:#fff !important; background-image:none !important;
  color:var(--r-red-dark) !important; font-size:12px !important; font-weight:800 !important;
  line-height:1.2 !important; cursor:pointer !important; box-shadow:0 2px 0 #f2dcde !important;
}
body.portal .btn.sm.danger.progress-reject-button:hover,
body.portal .progress-reject-button:hover{
  color:#fff !important; border-color:transparent !important;
  background:linear-gradient(135deg,var(--r-red),var(--r-red-lt)) !important;
  box-shadow:0 2px 0 var(--r-red-sh) !important;
}
body.portal .btn.sm.danger.progress-reject-button:active,
body.portal .progress-reject-button:active{ transform:translateY(1px) !important; box-shadow:0 1px 0 #f2dcde !important; }
body.portal .btn.sm.danger.progress-reject-button:disabled,
body.portal .progress-reject-button:disabled{
  border-color:#e3e6ec !important; background:#f7f8fa !important; color:#b8bec9 !important;
  box-shadow:none !important; cursor:not-allowed !important;
}

/* ---- デモ表示で無効なのは「機能」だけ（2026-08-26 利用者指示）----
   見た目まで灰色にすると、本番で押せるボタンなのかが分からない。
   title が「デモ表示のため無効です」のものは、通常のボタンとして描く。 */
body.portal .btn:disabled[title*="デモ"],
body.portal button:disabled[title*="デモ"],
body.portal #submissionPanel #ui3ActionCol .btn:disabled[title*="デモ"]{
  background:#fff !important; background-image:none !important;
  border:1px solid #dfe3ec !important; color:#41505f !important;
  box-shadow:0 2px 0 #eceef4 !important; cursor:default !important; opacity:1 !important;
}
body.portal .btn:disabled[title*="デモ"]:hover,
body.portal button:disabled[title*="デモ"]:hover,
body.portal #submissionPanel #ui3ActionCol .btn:disabled[title*="デモ"]:hover{
  transform:translateY(-2px) !important; box-shadow:0 4px 0 #e4e7ef !important;
  border-color:var(--r-purple-lt) !important; color:var(--r-purple-dark) !important; background:#fbfaff !important;
}
/* 主操作（提出・確定など） */
body.portal .btn.primary:disabled[title*="デモ"],
body.portal .btn-primary:disabled[title*="デモ"],
body.portal .advance-btn:disabled[title*="デモ"],
body.portal #submissionPanel #ui3ActionCol .btn.primary:disabled[title*="デモ"]{
  border:0 !important; color:#fff !important;
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  box-shadow:0 3px 0 var(--r-purple-sh) !important; cursor:default !important;
}
body.portal .btn.primary:disabled[title*="デモ"]:hover,
body.portal .btn-primary:disabled[title*="デモ"]:hover,
body.portal .advance-btn:disabled[title*="デモ"]:hover,
body.portal #submissionPanel #ui3ActionCol .btn.primary:disabled[title*="デモ"]:hover{
  transform:translateY(-2px) !important;
  box-shadow:0 5px 0 var(--r-purple-sh), 0 8px 20px rgba(108,92,231,.3) !important;
}
/* 保存（操作列の白抜き） */
body.portal #submissionPanel #ui3ActionCol #saveBar > .btn:disabled[title*="デモ"]{
  background:#fff !important; background-image:none !important;
  border:1px solid var(--r-purple-lt) !important; color:var(--r-purple-dark) !important;
  box-shadow:0 2px 0 #e2ddfb !important; cursor:default !important;
}
body.portal #submissionPanel #ui3ActionCol #saveBar > .btn:disabled[title*="デモ"]:hover{
  background:#f7f6ff !important; transform:translateY(-2px) !important; box-shadow:0 4px 0 #ddd8fb !important;
}
/* 危険操作（差し戻すなど） */
body.portal .btn.danger:disabled[title*="デモ"], body.portal .btn.sm.danger:disabled[title*="デモ"]{
  border:0 !important; color:#fff !important;
  background:linear-gradient(135deg,var(--r-red),var(--r-red-lt)) !important;
  box-shadow:0 3px 0 var(--r-red-sh) !important; cursor:default !important;
}
body.portal .btn.danger:disabled[title*="デモ"]:hover, body.portal .btn.sm.danger:disabled[title*="デモ"]:hover{
  transform:translateY(-2px) !important; box-shadow:0 5px 0 var(--r-red-sh) !important;
}
/* デモ表示では押せないが、見た目は同じにする（機能だけを止める・2026-08-26 利用者指示） */
body.portal .btn.sm.danger.progress-reject-button:disabled[title*="デモ"],
body.portal .progress-reject-button:disabled[title*="デモ"]{
  border:1px solid var(--r-red-line) !important; background:#fff !important;
  color:var(--r-red) !important; box-shadow:0 2px 0 #f2dcde !important; cursor:default !important;
}

/* ---- 保存は上部バーの右に常設（2026-08-26 利用者指示）----
   画面側が段階に応じて隠しても、置き場と見た目は保つ（押せるかどうかは disabled が示す）。 */
body.portal .topbar > #saveBar.ui3-save-dock,
body.portal .portal-header > #saveBar.ui3-save-dock{
  display:flex !important; align-items:center !important; flex:0 0 auto !important;
  order:0 !important; margin:0 12px 0 0 !important; padding:0 !important; min-height:0 !important;
  gap:0 !important;
}
body.portal #saveBar.ui3-save-dock > .muted-sm, body.portal #saveBar.ui3-save-dock > .muted{ display:none !important; }
body.portal #saveBar.ui3-save-dock > .btn{
  width:auto !important; min-height:32px !important; padding:5px 18px !important;
  border-radius:999px !important; font-size:13px !important; font-weight:800 !important;
  white-space:nowrap !important;
  background:#fff !important; background-image:none !important;
  border:1px solid var(--r-purple-lt) !important; color:var(--r-purple-dark) !important;
  box-shadow:0 2px 0 #e2ddfb !important; cursor:pointer !important; opacity:1 !important;
}
body.portal #saveBar.ui3-save-dock > .btn:hover{
  background:#f7f6ff !important; transform:translateY(-2px) !important; box-shadow:0 4px 0 #ddd8fb !important;
}
body.portal #saveBar.ui3-save-dock > .btn:active{
  transform:translateY(1px) !important; box-shadow:0 1px 0 #ddd8fb !important;
}
/* 管理者側の上部バーは色地なので、白抜きのまま浮かせる */
body.portal.admin-ui2 #saveBar.ui3-save-dock > .btn{
  border-color:rgba(255,255,255,.75) !important; color:var(--r-purple-dark) !important;
  box-shadow:0 2px 0 rgba(0,0,0,.12) !important;
}
body.portal.admin-ui2 #saveBar.ui3-save-dock > .btn:hover{ box-shadow:0 4px 0 rgba(0,0,0,.14) !important; }
/* 保存が上に移ったので、提出ブロックの操作列は提出だけ */
body.portal #submissionPanel #ui3ActionCol:empty{ display:none !important; }

/* ---- 列の性質ごとの差（同じ性質は同じ見た目・2026-08-26 利用者指示）---- */
body.portal .tbl th[data-ui3-col="name"], body.portal .review-table th[data-ui3-col="name"]{
  text-align:left !important; background:linear-gradient(180deg,#f2effe,#e6e1fb) !important;
}
body.portal .tbl td[data-ui3-col="name"], body.portal .review-table td[data-ui3-col="name"]{
  text-align:left !important; font-weight:700 !important; color:#1f2733 !important; white-space:nowrap !important;
}
body.portal .tbl tbody tr:nth-child(odd) > td[data-ui3-col="name"],
body.portal .review-table tbody tr:nth-child(odd) > td[data-ui3-col="name"]{ background:#faf9ff !important; }
body.portal .tbl tbody tr:nth-child(even) > td[data-ui3-col="name"],
body.portal .review-table tbody tr:nth-child(even) > td[data-ui3-col="name"]{ background:#f4f2fd !important; }
body.portal .tbl th[data-ui3-col="num"], body.portal .review-table th[data-ui3-col="num"]{ text-align:right !important; }
body.portal .tbl td[data-ui3-col="num"], body.portal .review-table td[data-ui3-col="num"]{
  text-align:right !important; font-variant-numeric:tabular-nums !important;
  font-size:13.5px !important; font-weight:700 !important; color:#2b3441 !important; white-space:nowrap !important;
}
body.portal .tbl th[data-ui3-col="state"], body.portal .review-table th[data-ui3-col="state"],
body.portal .tbl td[data-ui3-col="state"], body.portal .review-table td[data-ui3-col="state"]{
  text-align:center !important; white-space:nowrap !important;
}
body.portal .tbl th[data-ui3-col="action"], body.portal .review-table th[data-ui3-col="action"],
body.portal .tbl td[data-ui3-col="action"], body.portal .review-table td[data-ui3-col="action"]{
  text-align:center !important; white-space:nowrap !important; width:1% !important;
}
body.portal .tbl th[data-ui3-col="text"], body.portal .review-table th[data-ui3-col="text"]{ text-align:left !important; }
body.portal .tbl td[data-ui3-col="text"], body.portal .review-table td[data-ui3-col="text"]{
  text-align:left !important; color:#41505f !important;
}

/* 2026-09-07: 表の中の記号ボタン（差し戻しモード用）は廃止。差し戻しは氏名の隣の 1 つだけ。 */

/* ---- 保存は本文の右上に固定（上の情報バーには入れない・2026-08-26 利用者指示）----
   出すのは「目標・自己評価」「評価対象者一覧」だけ。 */
body.portal #ui3SaveDock{
  position:sticky !important; top:0 !important; z-index:20 !important;
  display:flex !important; justify-content:flex-end !important; align-items:center !important;
  margin:0 0 -6px !important; padding:0 0 6px !important;
  background:linear-gradient(180deg,var(--r-bg) 62%,rgba(244,246,250,0)) !important;
  pointer-events:none !important;
}
body.portal #ui3SaveDock > #saveBar{ pointer-events:auto !important; }
body.portal #ui3SaveDock > #saveBar.ui3-save-dock{
  display:flex !important; align-items:center !important; gap:0 !important;
  margin:0 !important; padding:0 !important; min-height:0 !important;
}
body.portal #saveBar.ui3-save-dock > .muted-sm, body.portal #saveBar.ui3-save-dock > .muted{ display:none !important; }
body.portal #ui3SaveDock #saveBar.ui3-save-dock > .btn{
  width:auto !important; min-height:34px !important; padding:6px 22px !important;
  border-radius:999px !important; font-size:13px !important; font-weight:800 !important; white-space:nowrap !important;
  background:#fff !important; background-image:none !important;
  border:1px solid var(--r-purple-lt) !important; color:var(--r-purple-dark) !important;
  box-shadow:0 2px 0 #e2ddfb, 0 4px 12px rgba(108,92,231,.14) !important;
  cursor:pointer !important; opacity:1 !important;
}
body.portal #ui3SaveDock #saveBar.ui3-save-dock > .btn:hover{
  background:#f7f6ff !important; transform:translateY(-2px) !important;
  box-shadow:0 4px 0 #ddd8fb, 0 8px 18px rgba(108,92,231,.18) !important;
}
body.portal #ui3SaveDock #saveBar.ui3-save-dock > .btn:active{
  transform:translateY(1px) !important; box-shadow:0 1px 0 #ddd8fb !important;
}

/* 保存は画面に対して固定（スクロールで隠れない・2026-08-26 利用者指示）。
   位置は本文の右上に合わせ続ける（値は JS が入れる）。 */
body.portal #ui3SaveDock{
  position:fixed !important; z-index:60 !important;
  top:var(--ui3-dock-top,68px) !important; right:var(--ui3-dock-right,22px) !important;
  bottom:auto !important; left:auto !important;
  display:flex !important; align-items:center !important; justify-content:flex-end !important;
  margin:0 !important; padding:0 !important; background:none !important; pointer-events:auto !important;
}
body.portal #ui3SaveDock #saveBar.ui3-save-dock > .btn{
  box-shadow:0 3px 0 #ddd8fb, 0 8px 22px rgba(20,24,40,.16) !important;
}
body.portal #ui3SaveDock #saveBar.ui3-save-dock > .btn:hover{
  box-shadow:0 5px 0 #ddd8fb, 0 12px 26px rgba(108,92,231,.24) !important;
}

/* ---- 状態バッジは意味ごとに色を分ける（2026-08-26 利用者指示）---- */
body.portal .pill[data-ui3-st], body.portal .status-badge[data-ui3-st]{
  display:inline-flex !important; align-items:center !important;
  padding:3px 11px !important; border-radius:999px !important;
  font-size:11.5px !important; font-weight:800 !important;
  background-image:none !important; box-shadow:none !important;
}
body.portal .pill[data-ui3-st="done"], body.portal .status-badge[data-ui3-st="done"]{
  background:#e7fbf4 !important; border:1px solid #a8eed9 !important; color:#00795f !important;
}
body.portal .pill[data-ui3-st="reject"], body.portal .status-badge[data-ui3-st="reject"]{
  background:#fdeded !important; border:1px solid #f5c6cb !important; color:#b02324 !important;
}
body.portal .pill[data-ui3-st="none"], body.portal .status-badge[data-ui3-st="none"]{
  background:#f4f5f9 !important; border:1px dashed #cfd5e0 !important; color:#8a94a6 !important;
}
body.portal .pill[data-ui3-st="late"], body.portal .status-badge[data-ui3-st="late"]{
  background:#fff8e8 !important; border:1px solid #f5dda6 !important; color:#8a6314 !important;
}
body.portal .pill[data-ui3-st="info"], body.portal .status-badge[data-ui3-st="info"]{
  background:#f2f1fc !important; border:1px solid #d7d2fd !important; color:#5341d6 !important;
}

/* ---- 段階の並び: 全部を縮めると全部読めなくなる（2026-08-26 検証で判明）----
   縮める役は「過ぎた段階」だけ。今の段階は絶対に縮めない。
   はみ出しは容れ物の overflow:hidden が末尾を切る＝手前の段階から順に隠れる。 */
body.portal .phase-pills > .phase-pill.current,
body.portal .admin-phase-pills > .admin-phase-pill.current,
body.portal .phase-strip > .phase-pill.current{
  flex:0 0 auto !important; min-width:auto !important;
  overflow:visible !important; text-overflow:clip !important;
}
body.portal .phase-pills > *, body.portal .admin-phase-pills > *, body.portal .phase-strip > *{
  min-width:auto !important; text-overflow:clip !important; flex-shrink:0 !important;
}
/* 容れ物は右端で切る（末尾＝これから先の段階が隠れるより、手前が隠れる方が困らないので
   今の段階を必ず見せる向きに寄せる） */
body.portal .phase-pills, body.portal .admin-phase-pills, body.portal .phase-strip{
  justify-content:flex-end !important;
}

/* ---- 記入する画面の操作バー（上の情報バーとは別・2026-08-26 利用者指示）----
   本文の一番上に常設し、スクロールしても残る。左にタブの切替、右に保存。 */
body.portal #ui3ActionBar{
  position:sticky !important; top:-18px !important; z-index:40 !important;
  display:flex !important; align-items:center !important; gap:14px !important;
  margin:-18px -22px 14px !important; padding:9px 22px !important;
  background:#fff !important; border-bottom:1px solid var(--r-line) !important;
  box-shadow:0 2px 0 #eceef4, 0 6px 16px rgba(20,24,40,.07) !important;
  min-height:52px !important;
}
body.portal #ui3BarLeft{
  display:flex !important; align-items:center !important; gap:8px !important;
  flex:1 1 auto !important; min-width:0 !important; overflow:hidden !important;
}
body.portal #ui3BarRight{
  display:flex !important; align-items:center !important; gap:10px !important;
  flex:0 0 auto !important; margin-left:auto !important;
}
/* バーの中のタブは、元の下余白を持たない（バーの高さで決める） */
body.portal #ui3BarLeft > .list-tabs{
  margin:0 !important; gap:8px !important; flex-wrap:nowrap !important; overflow:hidden !important;
}
body.portal #ui3BarLeft > .list-tabs > .list-tab{
  min-height:32px !important; padding:6px 16px !important; font-size:13px !important; flex:0 0 auto !important;
}
/* タブが無い画面（一覧からの記入ページ）は左に画面名の代わりの余白を作らない */
body.portal #ui3ActionBar[data-ui3-tabs="0"] #ui3BarLeft{ flex:0 0 auto !important; }
/* 保存ボタン */
body.portal #ui3BarRight > #saveBar.ui3-save-dock{
  display:flex !important; align-items:center !important; gap:0 !important;
  margin:0 !important; padding:0 !important; min-height:0 !important;
}
body.portal #ui3BarRight #saveBar.ui3-save-dock > .btn{
  width:auto !important; min-height:36px !important; padding:7px 24px !important;
  border-radius:999px !important; font-size:13.5px !important; font-weight:800 !important; white-space:nowrap !important;
  background:#fff !important; background-image:none !important;
  border:1px solid var(--r-purple-lt) !important; color:var(--r-purple-dark) !important;
  box-shadow:0 2px 0 #e2ddfb !important; cursor:pointer !important; opacity:1 !important;
}
body.portal #ui3BarRight #saveBar.ui3-save-dock > .btn:hover{
  background:#f7f6ff !important; transform:translateY(-2px) !important; box-shadow:0 4px 0 #ddd8fb !important;
}
body.portal #ui3BarRight #saveBar.ui3-save-dock > .btn:active{
  transform:translateY(1px) !important; box-shadow:0 1px 0 #ddd8fb !important;
}
body.portal #saveBar.ui3-save-dock > .muted-sm, body.portal #saveBar.ui3-save-dock > .muted{ display:none !important; }
/* 旧: 浮かせていた保存は使わない */
body.portal #ui3SaveDock{ display:none !important; }

/* バーの中の保存ボタン（画面ごとの実物を移してきたもの） */
body.portal #ui3BarRight > .ui3-bar-save{
  width:auto !important; min-height:36px !important; padding:7px 24px !important;
  margin:0 !important; border-radius:999px !important;
  font-size:13.5px !important; font-weight:800 !important; white-space:nowrap !important;
  background:#fff !important; background-image:none !important;
  border:1px solid var(--r-purple-lt) !important; color:var(--r-purple-dark) !important;
  box-shadow:0 2px 0 #e2ddfb !important; cursor:pointer !important; opacity:1 !important;
}
body.portal #ui3BarRight > .ui3-bar-save:hover{
  background:#f7f6ff !important; transform:translateY(-2px) !important; box-shadow:0 4px 0 #ddd8fb !important;
}
body.portal #ui3BarRight > .ui3-bar-save:active{
  transform:translateY(1px) !important; box-shadow:0 1px 0 #ddd8fb !important;
}
body.portal #ui3BarRight > .ui3-bar-save:disabled[title*="デモ"]{
  background:#fff !important; border-color:var(--r-purple-lt) !important; color:var(--r-purple-dark) !important;
  box-shadow:0 2px 0 #e2ddfb !important; cursor:default !important;
}
/* 保存が上のバーへ移ったので、下の操作列に取り残された空の箱は出さない */
body.portal #saveBar:empty{ display:none !important; }

/* ---- 一括操作（2026-08-26 利用者指示）----
   表の見出しの隣にボタンを置き、行を選んだときだけ押せる。押すと操作を選ぶ吹き出しが出る。 */
body.portal .ui3-bulk-strip{
  position:sticky !important; top:0 !important; z-index:12 !important;
  display:flex !important; align-items:center !important; gap:10px !important;
  margin:0 0 -1px !important; padding:0 0 8px !important;
}
body.portal .ui3-bulk-trigger{
  display:inline-flex !important; align-items:center !important; gap:8px !important;
  min-height:32px !important; padding:5px 16px !important; border-radius:999px !important;
  border:1px solid var(--r-purple-lt) !important; background:#fff !important; color:var(--r-purple-dark) !important;
  font-size:12.5px !important; font-weight:800 !important; cursor:pointer !important;
  box-shadow:0 2px 0 #e2ddfb !important;
  transition:transform .15s var(--r-ease), box-shadow .15s var(--r-ease), background .15s ease !important;
}
body.portal .ui3-bulk-trigger:hover:not(:disabled){
  background:#f7f6ff !important; transform:translateY(-2px) !important; box-shadow:0 4px 0 #ddd8fb !important;
}
body.portal .ui3-bulk-trigger:active:not(:disabled){ transform:translateY(1px) !important; box-shadow:0 1px 0 #ddd8fb !important; }
body.portal .ui3-bulk-trigger:disabled{
  border-color:#dfe3ec !important; background:#f4f5f9 !important; color:#a3abb8 !important;
  box-shadow:0 2px 0 #e6e9f0 !important; cursor:not-allowed !important; transform:none !important;
}
body.portal .ui3-bulk-trigger[aria-expanded="true"]{
  border-color:transparent !important; color:#fff !important;
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  box-shadow:0 2px 0 var(--r-purple-sh) !important;
}
body.portal .ui3-bulk-count{
  display:inline-flex !important; align-items:center !important; justify-content:center !important;
  min-width:20px !important; height:20px !important; padding:0 6px !important;
  border-radius:999px !important; background:var(--r-purple-soft) !important; color:var(--r-purple-dark) !important;
  font-size:11.5px !important; font-weight:800 !important; font-variant-numeric:tabular-nums !important;
}
body.portal .ui3-bulk-trigger:disabled .ui3-bulk-count{ background:#e8eaf0 !important; color:#a3abb8 !important; }
body.portal .ui3-bulk-trigger[aria-expanded="true"] .ui3-bulk-count{ background:rgba(255,255,255,.28) !important; color:#fff !important; }
/* 吹き出し */
body.portal .ui3-bulk-pop{
  position:absolute !important; top:38px !important; left:0 !important; z-index:30 !important;
  min-width:260px !important; max-width:min(560px,90vw) !important;
  padding:12px 14px 14px !important; border:1px solid var(--r-purple-line) !important; border-radius:14px !important;
  background:#fff !important; box-shadow:0 2px 0 #eceaf6, 0 12px 30px rgba(20,24,40,.16) !important;
}
body.portal .ui3-bulk-pop[hidden]{ display:none !important; }
body.portal .ui3-bulk-strip{ position:sticky !important; }
body.portal .ui3-bulk-pop-head{
  margin:0 0 10px !important; font-size:11.5px !important; font-weight:800 !important;
  letter-spacing:.06em !important; color:#8a94a6 !important;
}
body.portal .ui3-bulk-pop-body{
  display:flex !important; flex-wrap:wrap !important; align-items:center !important; gap:8px !important;
}
body.portal .ui3-bulk-pop-body > .muted, body.portal .ui3-bulk-pop-body > .muted-sm{
  width:100% !important; margin:0 !important; font-size:12px !important;
}
body.portal .ui3-bulk-pop-body select{ min-height:34px !important; }
body.portal .ui3-bulk-pop-body > .btn{ min-height:34px !important; }
/* 部品を移したあとの空の帯は出さない */
body.portal .bulk-bar[data-ui3-empty], body.portal .remind-bulk-bar[data-ui3-empty]{ display:none !important; }

/* ---- 表の見出しは折り返さない（「I D」「部 門」と縦に割れるのを止める）---- */
body.portal .tbl th, body.portal .review-table th{
  white-space:nowrap !important; word-break:keep-all !important; overflow-wrap:normal !important;
}

/* ---- 一括操作は表と一体の部品にする（2026-08-26 利用者指示）----
   浮いた吹き出しで表を覆うのをやめ、表の上端に continuous につながる帯にする。 */
body.portal .ui3-bulk-strip{
  position:sticky !important; top:0 !important; z-index:12 !important;
  display:block !important; margin:0 !important; padding:8px 12px !important;
  border:1px solid #e6e4f2 !important; border-bottom:0 !important;
  border-radius:14px 14px 0 0 !important;
  background:linear-gradient(180deg,#fbfaff,#f5f3fd) !important;
  box-shadow:0 2px 0 rgba(236,234,246,.6) !important;
}
body.portal .ui3-bulk-strip[data-ui3-open]{ background:#fff !important; }
/* 表の入れ物は帯と地続きにする（上の角丸と枠を消す） */
body.portal .table-scroll[data-ui3-joined], body.portal .tbl-wrap[data-ui3-joined]{
  border-radius:0 0 14px 14px !important; border-top:1px solid #e6e4f2 !important;
  margin-top:0 !important;
}
/* 吹き出しではなく、帯の中に開く段（表は下へずれるだけで隠れない） */
body.portal .ui3-bulk-pop{
  position:static !important; width:auto !important; max-width:none !important;
  min-width:0 !important; margin:8px 0 2px !important; padding:10px 0 0 !important;
  border:0 !important; border-top:1px dashed #d7d2fd !important; border-radius:0 !important;
  background:transparent !important; box-shadow:none !important;
}
body.portal .ui3-bulk-pop[hidden]{ display:none !important; }
body.portal .ui3-bulk-pop-head{
  display:flex !important; align-items:center !important; justify-content:space-between !important;
  gap:12px !important; margin:0 0 8px !important;
  font-size:11.5px !important; font-weight:800 !important; letter-spacing:.06em !important; color:#8a94a6 !important;
}
body.portal .ui3-bulk-close{
  min-height:26px !important; padding:3px 12px !important; border-radius:999px !important;
  border:1px solid #dfe3ec !important; background:#fff !important; color:#5f6b7a !important;
  font-size:11.5px !important; font-weight:800 !important; letter-spacing:0 !important; cursor:pointer !important;
  box-shadow:0 2px 0 #eceef4 !important;
}
body.portal .ui3-bulk-close:hover{
  background:#f4f5f9 !important; color:#41505f !important;
  transform:translateY(-2px) !important; box-shadow:0 4px 0 #e4e7ef !important;
}
body.portal .ui3-bulk-close:active{ transform:translateY(1px) !important; box-shadow:0 1px 0 #e4e7ef !important; }
/* 主な流れ: 項目 → 値 → 適用 を 1 行に */
body.portal .ui3-bulk-pop-body{
  display:flex !important; flex-wrap:wrap !important; align-items:center !important; gap:8px !important;
}
body.portal .ui3-bulk-pop-body > .muted, body.portal .ui3-bulk-pop-body > .muted-sm,
body.portal .ui3-bulk-pop-body > span{
  margin:0 !important; font-size:12px !important; color:#5f6b7a !important; white-space:nowrap !important;
}
body.portal .ui3-bulk-pop-body select{ min-height:34px !important; max-width:220px !important; }
body.portal .ui3-bulk-pop-body > .btn{
  min-height:34px !important; border:0 !important; color:#fff !important;
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  box-shadow:0 3px 0 var(--r-purple-sh) !important; padding:7px 22px !important; font-weight:800 !important;
}
body.portal .ui3-bulk-pop-body > .btn:hover{ transform:translateY(-2px) !important; box-shadow:0 5px 0 var(--r-purple-sh) !important; }
/* その他の操作は一段下げて、適用と同じ重みに見せない */
body.portal .ui3-bulk-pop-more{
  display:flex !important; flex-wrap:wrap !important; align-items:center !important; gap:8px !important;
  margin:10px 0 0 !important; padding:8px 0 0 !important; border-top:1px solid #eceaf6 !important;
}
body.portal .ui3-bulk-pop-more[hidden]{ display:none !important; }
body.portal .ui3-bulk-more-label{
  font-size:11px !important; font-weight:800 !important; letter-spacing:.06em !important; color:#a3abb8 !important;
}
body.portal .ui3-bulk-pop-more > .btn{
  min-height:30px !important; padding:5px 14px !important; font-size:12.5px !important;
  border:1px solid #dfe3ec !important; background:#fff !important; color:#5f6b7a !important;
  box-shadow:0 2px 0 #eceef4 !important;
}
body.portal .ui3-bulk-pop-more > .btn:hover{
  border-color:var(--r-purple-lt) !important; color:var(--r-purple-dark) !important; background:#faf9ff !important;
}
body.portal .ui3-bulk-pop-more > .btn.danger{
  border-color:var(--r-red-line) !important; background:#fff !important; color:var(--r-red-dark) !important;
  box-shadow:0 2px 0 #f4e3e5 !important;
}
/* トリガーは帯の中の部品として置く */
body.portal .ui3-bulk-trigger{ margin:0 !important; }

body.portal .ui3-table-group{
  display:flex !important; flex-direction:column !important; gap:0 !important;
  min-width:0 !important; margin:0 !important;
}
body.portal .ui3-table-group > .ui3-bulk-strip{ flex:0 0 auto !important; }
body.portal .ui3-table-group > .table-scroll, body.portal .ui3-table-group > .tbl-wrap{
  flex:1 1 auto !important; min-height:0 !important; box-shadow:none !important;
}
body.portal .ui3-table-group{
  border-radius:14px !important;
  box-shadow:0 2px 0 #eceaf6, 0 4px 14px rgba(20,24,40,.06) !important;
}

/* ---- 上部バー: 縮んではいけない部品を明示（2026-08-26 検証で判明）----
   管理者側は class 名が別（.admin-period / .admin-brand）。列挙から漏れると
   期の表示が 16px 足りずに文字がはみ出し、隣の段階の並びへ重なる。 */
body.portal .portal-header > .admin-brand,
body.portal .portal-header > .admin-period,
body.portal .portal-header > .admin-header-sep,
body.portal .portal-header > .period,
body.portal .portal-header > .brand,
body.portal.ui2 .topbar > .period,
body.portal.ui2 .topbar > .brand{
  flex:0 0 auto !important; min-width:auto !important;
  overflow:visible !important; text-overflow:clip !important; white-space:nowrap !important;
}
/* ---- 段階の並び: 文字を途中で切らない。入りきらない過去の段階は**まるごと**隠す ---- */
body.portal .admin-phase-pills, body.portal .phase-pills, body.portal .phase-strip{
  justify-content:flex-start !important; overflow:hidden !important;
}
body.portal .admin-phase-pill[data-ui3-hide],
body.portal .phase-pill[data-ui3-hide],
body.portal .admin-phase-arrow[data-ui3-hide],
body.portal .phase-arrow[data-ui3-hide]{ display:none !important; }

/* ---- セルの文字を 1 文字ずつ折らない（2026-08-26 検証で判明）----
   overflow-wrap:anywhere は「EMP-001」を E/M/P... と縦に割り、行の高さが 152px になる。
   見出しと同じ扱い（語で折る・途中で割らない）にそろえ、識別に使う列は折り返さない。 */
body.portal .tbl td, body.portal .review-table td{
  word-break:keep-all !important; overflow-wrap:normal !important;
}
body.portal .tbl td[data-ui3-col="name"], body.portal .review-table td[data-ui3-col="name"],
body.portal .tbl td[data-ui3-col="text"], body.portal .review-table td[data-ui3-col="text"],
body.portal .tbl td[data-ui3-col="num"], body.portal .review-table td[data-ui3-col="num"],
body.portal .tbl td[data-ui3-col="state"], body.portal .review-table td[data-ui3-col="state"]{
  white-space:nowrap !important;
}
/* 識別子・区分の列は見出しの幅まで潰れないよう下限を持たせる */
body.portal .review-table th[data-ui3-col="name"], body.portal .review-table td[data-ui3-col="name"],
body.portal .tbl th[data-ui3-col="name"], body.portal .tbl td[data-ui3-col="name"]{
  min-width:88px !important;
}
body.portal .review-table th[data-ui3-col="text"], body.portal .review-table td[data-ui3-col="text"],
body.portal .tbl th[data-ui3-col="text"], body.portal .tbl td[data-ui3-col="text"]{
  min-width:76px !important;
}
/* 行の高さを一定に保つ（縦割れが無くなれば 1 行分で足りる） */
body.portal .tbl tbody td, body.portal .review-table tbody td{ height:auto !important; }
/* 一括操作のラベルも折らない */
body.portal .ui3-bulk-trigger{ white-space:nowrap !important; }

/* ---- 見出し行が固定されない原因の除去（2026-08-26 検証で判明）----
   表そのものに overflow:hidden が効いていると、見出しの sticky は
   「スクロールする枠」ではなく「表」を基準にしてしまい、表ごと流れて隠れる。 */
body.portal .tbl, body.portal .review-table,
body.portal .tbl.min-w, body.portal .review-table.min-w{ overflow:visible !important; }
body.portal .table-scroll, body.portal .tbl-wrap{ overflow-x:auto !important; overflow-y:auto !important; }
body.portal .tbl thead th, body.portal .review-table thead th{
  position:sticky !important; top:0 !important; z-index:5 !important;
}
/* 角丸で切り落とす必要がある入れ物は枠側で丸める（表側では切らない） */
body.portal .progress-dept-panel .dept-members-table{ overflow:visible !important; border-radius:10px !important; }

/* ---- 一括操作は「行全体選択」と同じ段に置く（2026-08-26 利用者指示）----
   別の行を足すのではなく、全体選択のチェックと並べて 1 つの操作段にする。
   見出し行と同じ地色でつなげ、見出しの上の段として読ませる。 */
body.portal .ui3-bulk-strip{
  display:flex !important; align-items:center !important; gap:12px !important;
  padding:7px 12px !important;
  border:1px solid #e0dcf6 !important; border-bottom:0 !important;
  border-radius:14px 14px 0 0 !important;
  background:linear-gradient(180deg,#f6f4ff,#ebe8fd) !important;
  box-shadow:none !important;
}
body.portal .ui3-bulk-strip[data-ui3-open]{
  display:block !important;
  background:linear-gradient(180deg,#f6f4ff,#fbfaff) !important;
}
body.portal .ui3-bulk-strip[data-ui3-open] > .ui3-bulk-head{
  display:flex !important; align-items:center !important; gap:12px !important;
}
body.portal .ui3-bulk-head{
  display:flex !important; align-items:center !important; gap:12px !important; min-width:0 !important;
}
/* 全体選択のチェックは操作段の先頭に置く（表の見出しから移してくる） */
body.portal .ui3-bulk-selectall{
  display:inline-flex !important; align-items:center !important; gap:7px !important;
  flex:0 0 auto !important; font-size:12px !important; font-weight:800 !important; color:var(--r-purple-dark) !important;
  white-space:nowrap !important; cursor:pointer !important;
}
body.portal .ui3-bulk-selectall input[type="checkbox"]{
  width:16px !important; height:16px !important; margin:0 !important; accent-color:var(--r-purple) !important; cursor:pointer !important;
}
/* 全体選択を移したあとの見出しセルは幅だけ保つ */
body.portal th[data-ui3-cb-moved]{ padding:8px 6px !important; }

/* ---- 一括操作は見出しの左上の欄の中（2026-08-26 利用者指示）----
   行は足さない。欄は狭いので文字は「一括」＋件数だけにし、幅は中身で決める。 */
body.portal .ui3-bulk-strip{ display:none !important; }
body.portal th[data-ui3-bulk-cell]{
  white-space:nowrap !important; text-align:left !important;
  padding:6px 10px !important; width:1% !important; min-width:132px !important;
}
body.portal th[data-ui3-bulk-cell] > input[type="checkbox"]{
  width:16px !important; height:16px !important; margin:0 8px 0 0 !important;
  vertical-align:middle !important; accent-color:var(--r-purple) !important; cursor:pointer !important;
}
body.portal .ui3-bulk-trigger{
  display:inline-flex !important; align-items:center !important; gap:6px !important;
  vertical-align:middle !important;
  min-height:26px !important; padding:3px 11px !important; border-radius:999px !important;
  border:1px solid var(--r-purple-lt) !important; background:#fff !important; color:var(--r-purple-dark) !important;
  font-size:11.5px !important; font-weight:800 !important; letter-spacing:0 !important;
  white-space:nowrap !important; cursor:pointer !important;
  box-shadow:0 2px 0 #e2ddfb !important;
  transition:transform .15s var(--r-ease), box-shadow .15s var(--r-ease), background .15s ease !important;
}
body.portal .ui3-bulk-trigger:hover:not(:disabled){
  background:#f7f6ff !important; transform:translateY(-1px) !important; box-shadow:0 3px 0 #ddd8fb !important;
}
body.portal .ui3-bulk-trigger:active:not(:disabled){ transform:translateY(1px) !important; box-shadow:0 1px 0 #ddd8fb !important; }
body.portal .ui3-bulk-trigger:disabled{
  border-color:#dcdfe8 !important; background:#f6f7fa !important; color:#a3abb8 !important;
  box-shadow:0 2px 0 #e6e9f0 !important; cursor:not-allowed !important; transform:none !important;
}
body.portal .ui3-bulk-trigger[aria-expanded="true"]{
  border-color:transparent !important; color:#fff !important;
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  box-shadow:0 2px 0 var(--r-purple-sh) !important;
}
body.portal .ui3-bulk-count{
  display:inline-flex !important; align-items:center !important; justify-content:center !important;
  min-width:18px !important; height:18px !important; padding:0 5px !important; border-radius:999px !important;
  background:var(--r-purple-soft) !important; color:var(--r-purple-dark) !important;
  font-size:11px !important; font-weight:800 !important; font-variant-numeric:tabular-nums !important;
}
body.portal .ui3-bulk-trigger:disabled .ui3-bulk-count{ background:#e8eaf0 !important; color:#a3abb8 !important; }
body.portal .ui3-bulk-trigger[aria-expanded="true"] .ui3-bulk-count{ background:rgba(255,255,255,.28) !important; color:#fff !important; }

/* 吹き出しは body 直下・画面に対して固定（表の枠に切られない） */
body.portal .ui3-bulk-pop{
  position:fixed !important; z-index:80 !important;
  /* 位置は JS が変数で渡す（top/left に !important を付けるとインライン値が効かない） */
  top:var(--ui3-pop-top,0px) !important; left:var(--ui3-pop-left,0px) !important;
  right:auto !important; bottom:auto !important;
  min-width:280px !important; max-width:min(560px,92vw) !important;
  margin:0 !important; padding:12px 14px 14px !important;
  border:1px solid var(--r-purple-line) !important; border-radius:14px !important;
  background:#fff !important; box-shadow:0 2px 0 #eceaf6, 0 14px 34px rgba(20,24,40,.18) !important;
}
body.portal .ui3-bulk-pop[hidden]{ display:none !important; }

/* ---- 操作パネルは小さく、項目と値が見て分かる形に（2026-08-26 利用者指示）---- */
body.portal .ui3-bulk-pop{
  min-width:0 !important; width:max-content !important; max-width:min(520px,92vw) !important;
  padding:10px 12px !important; border-radius:12px !important;
}
body.portal .ui3-bulk-pop-head{
  margin:0 0 8px !important; gap:16px !important;
  font-size:11px !important; letter-spacing:.05em !important;
}
body.portal .ui3-bulk-close{ min-height:22px !important; padding:2px 10px !important; font-size:11px !important; }
/* 項目 → 値 → 適用 を 1 行に */
body.portal .ui3-bulk-pop-body{
  display:flex !important; flex-wrap:nowrap !important; align-items:flex-end !important; gap:8px !important;
}
body.portal .ui3-bulk-pop-body > [data-ui3-mute]{ display:none !important; }
body.portal .ui3-bulk-field{
  display:flex !important; flex-direction:column !important; gap:3px !important; min-width:0 !important;
}
body.portal .ui3-bulk-field-cap{
  font-size:10.5px !important; font-weight:800 !important; letter-spacing:.08em !important;
  color:#8a94a6 !important; padding-left:2px !important;
}
body.portal .ui3-bulk-field > select{
  min-height:30px !important; height:30px !important; padding:2px 26px 2px 9px !important;
  font-size:12.5px !important; border-radius:8px !important; max-width:150px !important; min-width:110px !important;
}
body.portal .ui3-bulk-pop-body > .btn{
  min-height:30px !important; height:30px !important; padding:0 16px !important;
  font-size:12.5px !important; border-radius:8px !important; box-shadow:0 2px 0 var(--r-purple-sh) !important;
}
body.portal .ui3-bulk-pop-body > .btn:hover{ transform:translateY(-1px) !important; box-shadow:0 3px 0 var(--r-purple-sh) !important; }
/* その他は担当を選ぶときだけ出る（被評価者の設定では出さない） */
body.portal .ui3-bulk-pop-more{
  margin:8px 0 0 !important; padding:8px 0 0 !important; gap:8px !important;
}
body.portal .ui3-bulk-more-label{ font-size:10.5px !important; letter-spacing:.08em !important; }
body.portal .ui3-bulk-pop-more > .btn{
  min-height:26px !important; padding:3px 12px !important; font-size:12px !important; border-radius:8px !important;
}

/* ---- 一括操作の吹き出しは用の分だけの大きさに（2026-08-26 利用者指示）----
   何を選ぶ欄なのかを小さな見出しで示し、余白は詰める。 */
body.portal .ui3-bulk-pop{
  min-width:0 !important; width:max-content !important; max-width:min(520px,92vw) !important;
  padding:10px 12px 11px !important; border-radius:12px !important;
  box-shadow:0 2px 0 #eceaf6, 0 10px 26px rgba(20,24,40,.16) !important;
}
body.portal .ui3-bulk-pop-head{
  margin:0 0 8px !important; gap:16px !important;
  font-size:11px !important; letter-spacing:.05em !important;
}
body.portal .ui3-bulk-close{ min-height:22px !important; padding:2px 10px !important; font-size:11px !important; }
body.portal .ui3-bulk-pop-body{ align-items:flex-end !important; gap:8px !important; flex-wrap:nowrap !important; }
/* 欄: 小さな見出し＋選ぶもの */
body.portal .ui3-bulk-field{
  display:flex !important; flex-direction:column !important; gap:3px !important;
  min-width:0 !important; margin:0 !important;
}
body.portal .ui3-bulk-field-cap{
  font-size:10.5px !important; font-weight:800 !important; letter-spacing:.04em !important;
  color:#8a94a6 !important; white-space:nowrap !important;
}
body.portal .ui3-bulk-field > select{
  min-height:32px !important; max-width:190px !important; padding:5px 26px 5px 10px !important;
  font-size:13px !important;
}
body.portal .ui3-bulk-pop-body > .btn{
  min-height:32px !important; padding:6px 18px !important; font-size:13px !important;
  align-self:flex-end !important;
}
body.portal .ui3-bulk-pop-more{
  margin:9px 0 0 !important; padding:8px 0 0 !important; gap:6px !important;
}
body.portal .ui3-bulk-pop-more > .btn{ min-height:28px !important; padding:4px 12px !important; font-size:12px !important; }
body.portal .ui3-bulk-pop-more > [hidden]{ display:none !important; }
@media (max-width:760px){
  body.portal .ui3-bulk-pop-body{ flex-wrap:wrap !important; }
}

/* 見出しは欄の上に小さく（項目と値のどちらを選んでいるかが読める） */
body.portal .ui3-bulk-field{
  display:flex !important; flex-direction:column !important; gap:3px !important; margin:0 !important;
}
body.portal .ui3-bulk-field-cap{
  font-size:10.5px !important; font-weight:800 !important; letter-spacing:.04em !important;
  color:#8a94a6 !important; white-space:nowrap !important;
}
body.portal .ui3-bulk-field > select{
  min-height:32px !important; max-width:190px !important; font-size:13px !important;
}
/* 見出しと重なる説明文は出さない */
body.portal .ui3-bulk-pop-body > [data-ui3-mute]{ display:none !important; }

/* 画面が低いときは吹き出しの中でスクロールできるようにする（最後の行が届かなくなるのを防ぐ） */
body.portal .ui3-bulk-pop{
  max-height:calc(100vh - 16px) !important; overflow:auto !important;
}
/* 欄の見出しは読めることが目的なので、白地で十分に濃くする */
body.portal .ui3-bulk-field-cap{ color:#5f6b7a !important; }
body.portal .ui3-bulk-pop-head{ color:#5f6b7a !important; }
body.portal .ui3-bulk-more-label{ color:#5f6b7a !important; }

/* まとめ見出しの段は出さない（列名だけで足りる） */
body.portal thead tr[data-ui3-grouprow]{ display:none !important; }

/* ---- 採点欄（割合・評価）を「見出しと一体の 1 部品」にする（2026-08-26 利用者指示）----
   ラベルと入力を 1 枚の枠に収め、帯の高さを詰め、余っていた右側の空間は 5 段階の選択に配る。
   層（本人＝紫 / 一次＝緑 / 最終＝橙）で色を変え、誰の記入欄かが色で分かるようにする。 */
body.portal .accordion-bar .accordion-trigger{
  min-height:0 !important; padding:8px 12px !important;
}
body.portal .accordion-bar-controls{
  box-sizing:border-box !important;
  display:flex !important; flex-wrap:nowrap !important; align-items:center !important;
  gap:10px !important; width:100% !important; min-height:0 !important;
  margin:0 !important; padding:5px 12px 7px !important;
  border-top:1px solid var(--r-line-soft) !important;
  background:linear-gradient(180deg,#fbfbfe,#f5f6fc) !important;
}
body.portal .accordion-bar-controls > .row-field,
body.portal .accordion-bar-controls > .field-rw{
  display:flex !important; flex-direction:row !important; align-items:stretch !important;
  flex:0 0 auto !important; gap:0 !important; margin:0 !important; padding:0 !important;
  min-width:0 !important; overflow:hidden !important;
  border:1px solid var(--r-purple-line) !important; border-radius:9px !important;
  background:#fff !important; box-shadow:0 1px 0 rgba(20,24,40,.05) !important;
}
/* 5 段階の選択は空いている右側まで伸ばす＝選んだ文が切れない */
body.portal .accordion-bar-controls > .row-field:has(select),
body.portal .accordion-bar-controls > .field-rw:has(select){
  flex:1 1 auto !important; max-width:none !important;
}
body.portal .accordion-bar-controls > * > label{
  display:flex !important; align-items:center !important; flex:0 0 auto !important;
  margin:0 !important; padding:0 10px !important; gap:0 !important;
  background:var(--r-purple-soft) !important; color:var(--r-purple-dark) !important;
  border-right:1px solid var(--r-purple-line) !important;
  font-size:11.5px !important; font-weight:800 !important; white-space:nowrap !important;
}
body.portal .accordion-bar-controls > * > label::before{ display:none !important; }
body.portal .accordion-bar-controls input,
body.portal .accordion-bar-controls input[type="number"],
body.portal .accordion-bar-controls input[type="text"],
body.portal .accordion-bar-controls select{
  min-height:30px !important; height:30px !important; margin:0 !important;
  border:0 !important; border-radius:0 !important; box-shadow:none !important;
  background:#fff !important; color:var(--r-ink) !important; font-size:13px !important;
}
body.portal .accordion-bar-controls input[type="number"]{
  width:58px !important; padding:0 6px !important; text-align:center !important;
  font-weight:800 !important; font-variant-numeric:tabular-nums !important;
}
body.portal .accordion-bar-controls select{
  width:100% !important; max-width:none !important; padding:0 28px 0 10px !important;
}
body.portal .accordion-bar-controls input:focus,
body.portal .accordion-bar-controls select:focus{ outline:none !important; }
body.portal .accordion-bar-controls > *:focus-within{
  border-color:var(--r-purple) !important; box-shadow:0 0 0 3px rgba(108,92,231,.16) !important;
}
/* 一次評価の記入欄＝緑 */
body.portal .accordion-bar-controls:has(.ev-share, .ev-rating, .goal-evaluator-share){
  background:linear-gradient(180deg,#fafdfb,#f1f9f5) !important;
}
body.portal .accordion-bar-controls > *:has(.ev-share),
body.portal .accordion-bar-controls > *:has(.ev-rating),
body.portal .accordion-bar-controls > *:has(.goal-evaluator-share){
  border-color:var(--r-green-line) !important;
}
body.portal .accordion-bar-controls > *:has(.ev-share) > label,
body.portal .accordion-bar-controls > *:has(.ev-rating) > label,
body.portal .accordion-bar-controls > *:has(.goal-evaluator-share) > label{
  background:var(--r-green-soft) !important; color:#1d7a63 !important;
  border-right-color:var(--r-green-line) !important;
}
body.portal .accordion-bar-controls > *:has(.ev-share):focus-within,
body.portal .accordion-bar-controls > *:has(.ev-rating):focus-within,
body.portal .accordion-bar-controls > *:has(.goal-evaluator-share):focus-within{
  border-color:var(--r-green) !important; box-shadow:0 0 0 3px rgba(0,184,148,.16) !important;
}
/* 最終評価の記入欄＝橙 */
body.portal .accordion-bar-controls:has(.final-contrib-share, .final-contrib-rating, .goal-final-share){
  background:linear-gradient(180deg,#fffdf8,#fdf7ea) !important;
}
body.portal .accordion-bar-controls > *:has(.final-contrib-share),
body.portal .accordion-bar-controls > *:has(.final-contrib-rating),
body.portal .accordion-bar-controls > *:has(.goal-final-share){
  border-color:var(--r-amber-line) !important;
}
body.portal .accordion-bar-controls > *:has(.final-contrib-share) > label,
body.portal .accordion-bar-controls > *:has(.final-contrib-rating) > label,
body.portal .accordion-bar-controls > *:has(.goal-final-share) > label{
  background:var(--r-amber-soft) !important; color:#8a6410 !important;
  border-right-color:var(--r-amber-line) !important;
}
body.portal .accordion-bar-controls > *:has(.final-contrib-share):focus-within,
body.portal .accordion-bar-controls > *:has(.final-contrib-rating):focus-within,
body.portal .accordion-bar-controls > *:has(.goal-final-share):focus-within{
  border-color:var(--r-amber) !important; box-shadow:0 0 0 3px rgba(230,160,44,.18) !important;
}
/* 層のバッジ（本人 / 1次 / 最終）は同じ灰色にしない */
body.portal .accordion-score-badge{
  font-variant-numeric:tabular-nums !important; padding:2px 10px !important;
}
body.portal .accordion-score-badge[data-layer="self"]{
  background:var(--r-purple-soft) !important; border-color:var(--r-purple-line) !important;
  color:var(--r-purple-dark) !important;
}
body.portal .accordion-score-badge[data-layer="evaluator"]{
  background:var(--r-green-soft) !important; border-color:var(--r-green-line) !important;
  color:#1d7a63 !important;
}
body.portal .accordion-score-badge[data-layer="final"]{
  background:var(--r-amber-soft) !important; border-color:var(--r-amber-line) !important;
  color:#8a6410 !important;
}
/* 展開領域の記入欄も同じ色分け（「記入」の印と枠を層の色にそろえる） */
body.portal .field-rw:has(.ev-share) > label::before,
body.portal .field-rw:has(.ev-rating) > label::before,
body.portal .field-rw:has(.ev-comment) > label::before,
body.portal .field-rw:has(.goal-evaluator-share) > label::before{ background:var(--r-green) !important; }
body.portal .field-rw:has(.final-contrib-share) > label::before,
body.portal .field-rw:has(.final-contrib-rating) > label::before,
body.portal .field-rw:has(.goal-final-share) > label::before{ background:var(--r-amber) !important; }
body.portal .main .ev-share, body.portal .main .ev-rating, body.portal .main .ev-comment,
body.portal .main .goal-evaluator-share,
body.portal .admin-main .ev-share, body.portal .admin-main .ev-rating,
body.portal .admin-main .ev-comment, body.portal .admin-main .goal-evaluator-share{
  border-color:var(--r-green-line) !important;
}
body.portal .main .final-contrib-share, body.portal .main .final-contrib-rating,
body.portal .main .goal-final-share,
body.portal .admin-main .final-contrib-share, body.portal .admin-main .final-contrib-rating,
body.portal .admin-main .goal-final-share{
  border-color:var(--r-amber-line) !important;
}


/* ---- 表の「操作」列は右端で潰さない（2026-08-26 利用者指示: FullHD で右側が圧縮されていた）----
   ボタンが列の境界・スクロールバーに触れないよう、列に下限の幅と左右の余白を持たせる。 */
body.portal .tbl th[data-ui3-col="action"], body.portal .review-table th[data-ui3-col="action"],
body.portal .tbl td[data-ui3-col="action"], body.portal .review-table td[data-ui3-col="action"]{
  width:1% !important; min-width:108px !important;
  padding:6px 18px 6px 14px !important; overflow:visible !important;
}
body.portal .tbl td[data-ui3-col="action"] .btn,
body.portal .review-table td[data-ui3-col="action"] .btn,
body.portal .tbl td[data-ui3-col="action"] button,
body.portal .review-table td[data-ui3-col="action"] button{
  min-height:30px !important; padding:5px 18px !important; font-size:12.5px !important;
  white-space:nowrap !important; max-width:100% !important;
}
body.portal .tbl td[data-ui3-col="action"] .btn + .btn,
body.portal .review-table td[data-ui3-col="action"] .btn + .btn,
body.portal .tbl td[data-ui3-col="action"] button + button,
body.portal .review-table td[data-ui3-col="action"] button + button{
  margin-left:8px !important;
}
/* 表の右端にスクロールバーが出ても、最後の列が枠に噛まないよう余白を確保する */
body.portal .tbl-wrap, body.portal .table-scroll{ scrollbar-gutter:stable !important; }

/* ---- 基準の対象（部門・職種・等級）の空間の使い方（2026-08-26 利用者指示）----
   札は左の全幅を使い、「すべて / 解除」と「職種を足す」は右の列にまとめる。
   どの項目でも操作の場所が同じ（右上）で、縦の段数が 4 → 2 に減る。 */
body.portal.admin-ui2 #setPaneCriteria .criteria-target{
  gap:10px !important; padding:12px 16px !important;
}
body.portal.admin-ui2 #setPaneCriteria .criteria-chips-wrap{
  display:grid !important; flex-direction:row !important;
  grid-template-columns:minmax(0,1fr) max-content !important;
  align-items:start !important; gap:8px 20px !important;
}
body.portal.admin-ui2 #setPaneCriteria .criteria-chips{
  grid-column:1 !important; grid-row:1 !important;
  display:flex !important; flex-wrap:wrap !important; gap:6px 8px !important; min-width:0 !important;
}
body.portal.admin-ui2 #setPaneCriteria .criteria-chip-actions{
  grid-column:2 !important; grid-row:1 !important;
  justify-self:end !important; align-self:start !important;
  display:flex !important; gap:12px !important; padding-top:3px !important;
}
body.portal.admin-ui2 #setPaneCriteria .criteria-add-job{
  grid-column:2 !important; grid-row:2 !important;
  justify-self:end !important; flex-wrap:nowrap !important;
  align-items:center !important; gap:8px !important;
}
body.portal.admin-ui2 #setPaneCriteria .criteria-add-job select{
  min-width:12em !important; max-width:18em !important;
}
/* 札は高さをそろえて詰める */
body.portal.admin-ui2 #setPaneCriteria .criteria-chip{
  min-height:30px !important; padding:3px 12px !important; font-size:12.5px !important;
}
/* 空の状態表示は場所を取らない */
body.portal.admin-ui2 #setPaneCriteria .muted-sm:empty{ display:none !important; }
/* 部門の選択は 1 行に収め、右の余白は空けたままにしない（説明を隣に置ける幅にする） */
body.portal.admin-ui2 #setPaneCriteria .criteria-field > select{
  min-width:16em !important; max-width:24em !important;
}
@media (max-width:900px){
  body.portal.admin-ui2 #setPaneCriteria .criteria-chips-wrap{
    grid-template-columns:minmax(0,1fr) !important;
  }
  body.portal.admin-ui2 #setPaneCriteria .criteria-chip-actions,
  body.portal.admin-ui2 #setPaneCriteria .criteria-add-job{
    grid-column:1 !important; justify-self:start !important;
  }
}

/* ---- 本文の中身の幅で外枠が伸びないようにする（左メニューまで一緒に流れるのを防ぐ）---- */
body.portal.admin-ui2 .admin-main, body.portal.ui2 .main{
  min-width:0 !important; max-width:100% !important;
}
body.portal.admin-ui2 .admin-main > section[data-view], body.portal.ui2 .main > .view{
  min-width:0 !important; max-width:100% !important;
}

/* ---- 期の一覧: 空いた幅を「期の名前」に配り、他の列は内容の幅に詰める（2026-08-26 利用者指示）----
   文字が小さくて読めなかったので、名前と人数を一段大きくし、補足は小さく静かにする。 */
body.portal table:has(> tbody#projectsBody){ width:100% !important; }
body.portal table:has(> tbody#projectsBody) th,
body.portal table:has(> tbody#projectsBody) td{
  padding:11px 16px !important; vertical-align:middle !important;
}
body.portal table:has(> tbody#projectsBody) th{ font-size:12px !important; }
/* 1列目: 期の名前（左そろえ・一番読む文字） */
body.portal table:has(> tbody#projectsBody) th:nth-child(1),
body.portal table:has(> tbody#projectsBody) td:nth-child(1){
  text-align:left !important; width:32% !important; min-width:220px !important;
  font-size:14.5px !important; font-weight:700 !important; color:#1f2733 !important;
}
/* 2列目: 期間・前期（内容の幅で止める） */
body.portal table:has(> tbody#projectsBody) th:nth-child(2),
body.portal table:has(> tbody#projectsBody) td:nth-child(2){
  text-align:left !important; width:22% !important; white-space:nowrap !important;
  font-size:13.5px !important; font-variant-numeric:tabular-nums !important;
}
body.portal table:has(> tbody#projectsBody) td:nth-child(2) .muted-sm{
  display:block !important; margin-top:2px !important; font-size:11.5px !important; color:#7b8794 !important;
}
/* 3列目: 進行段階（ピルは左そろえ・列は内容の幅） */
body.portal table:has(> tbody#projectsBody) th:nth-child(3),
body.portal table:has(> tbody#projectsBody) td:nth-child(3){
  text-align:left !important; width:16% !important; white-space:nowrap !important;
}
body.portal table:has(> tbody#projectsBody) td:nth-child(3) .pill{ font-size:12.5px !important; padding:3px 12px !important; }
/* 4列目: 対象者（数字は右そろえ・少し大きく） */
body.portal table:has(> tbody#projectsBody) th:nth-child(4),
body.portal table:has(> tbody#projectsBody) td:nth-child(4){
  text-align:right !important; width:12% !important; white-space:nowrap !important;
  font-size:14px !important; font-weight:700 !important; font-variant-numeric:tabular-nums !important;
}
/* 5列目: 操作 */
body.portal table:has(> tbody#projectsBody) th:nth-child(5),
body.portal table:has(> tbody#projectsBody) td:nth-child(5){
  text-align:center !important; width:18% !important; white-space:nowrap !important;
}
body.portal table:has(> tbody#projectsBody) td .name-edit{
  margin-left:6px !important; opacity:.55 !important; font-size:12.5px !important;
}
body.portal table:has(> tbody#projectsBody) tr:hover .name-edit{ opacity:1 !important; }

/* ---- 状態の列は内容の幅で止める（2026-08-26 利用者指示: 1 列だけ極端に広がっていた）----
   余った幅は氏名（読む列）だけに配る。状態はどの列も同じ幅の下限を持たせて並びをそろえる。 */
body.portal .tbl th[data-ui3-col="state"], body.portal .review-table th[data-ui3-col="state"],
body.portal .tbl td[data-ui3-col="state"], body.portal .review-table td[data-ui3-col="state"]{
  width:1% !important; min-width:112px !important;
}
body.portal .tbl th[data-ui3-col="num"], body.portal .review-table th[data-ui3-col="num"],
body.portal .tbl td[data-ui3-col="num"], body.portal .review-table td[data-ui3-col="num"]{
  width:1% !important; min-width:88px !important;
}
body.portal .tbl th[data-ui3-col="name"], body.portal .review-table th[data-ui3-col="name"],
body.portal .tbl td[data-ui3-col="name"], body.portal .review-table td[data-ui3-col="name"]{
  width:auto !important;
}

/* ---- ダッシュボードの見出しは題だけ（2026-08-26 利用者指示）----
   進行段階はヘッダーに常時出ているので、見出しの下に同じ情報は置かない。 */
body.portal #homePhaseSubtitle{ display:none !important; }

/* ---- 操作の帯は 1 段・余白は詰める（2026-08-26 利用者指示: 余白が多い）---- */
body.portal .filter-bar, body.portal .bulk-bar{
  display:flex !important; flex-wrap:wrap !important; align-items:center !important;
  gap:8px 10px !important; margin:0 0 8px !important; padding:8px 12px !important;
  min-height:0 !important;
}
body.portal .bulk-bar > .spacer, body.portal .filter-bar > .spacer{ flex:1 1 auto !important; }
body.portal .filter-bar input[type="text"], body.portal .filter-bar input[type="search"],
body.portal .filter-bar select, body.portal .bulk-bar select{
  min-height:32px !important; padding:5px 10px !important; font-size:13px !important;
}
body.portal .bulk-bar .btn, body.portal .bulk-bar button,
body.portal .filter-bar .btn, body.portal .filter-bar button{
  min-height:32px !important; padding:5px 14px !important; font-size:13px !important;
}
body.portal .bulk-bar label, body.portal .filter-bar label{ font-size:12.5px !important; }
body.portal .bulk-bar input[type="file"]{ font-size:12.5px !important; }

/* 部門の行はどこを押しても開閉できる（2026-08-26 利用者指示） */
body.portal.admin-ui2 tr.dept-summary-row{ cursor:pointer !important; user-select:none !important; }
body.portal.admin-ui2 tr.dept-summary-row:hover > td{ background:var(--r-purple-soft) !important; }

/* ---- 一覧の列幅のつり合い（2026-08-26 利用者指示: 氏名と区分が広すぎて右が詰まる）----
   状態・数値・操作は内容の幅で固定し、余りは「氏名 : 文字の列 = 2 : 1」で配る。 */
body.portal .tbl th[data-ui3-col="name"], body.portal .review-table th[data-ui3-col="name"],
body.portal .tbl td[data-ui3-col="name"], body.portal .review-table td[data-ui3-col="name"]{
  width:34% !important; min-width:160px !important;
}
body.portal .tbl th[data-ui3-col="text"], body.portal .review-table th[data-ui3-col="text"],
body.portal .tbl td[data-ui3-col="text"], body.portal .review-table td[data-ui3-col="text"]{
  width:17% !important; min-width:96px !important;
}
/* 行の高さと余白は一覧全体で同じにする */
body.portal .tbl tbody td, body.portal .review-table tbody td{
  padding:9px 14px !important;
}
body.portal .tbl thead th, body.portal .review-table thead th{
  padding:9px 14px !important;
}
/* 状態バッジ・操作ボタンは列の中で中央に置く（縦のそろいを作る） */
body.portal .tbl td[data-ui3-col="state"] > *, body.portal .review-table td[data-ui3-col="state"] > *{
  margin:0 auto !important;
}

/* ---- つり合いの取り直し（2026-08-26 利用者指示）: 読む列（氏名・部門・区分）は内容の幅で
   詰め、余った幅は状態の列に均等に配る。状態が等間隔に並ぶので目で追える。 ---- */
body.portal .tbl th[data-ui3-col="name"], body.portal .review-table th[data-ui3-col="name"],
body.portal .tbl td[data-ui3-col="name"], body.portal .review-table td[data-ui3-col="name"]{
  width:1% !important; min-width:150px !important;
}
body.portal .tbl th[data-ui3-col="text"], body.portal .review-table th[data-ui3-col="text"],
body.portal .tbl td[data-ui3-col="text"], body.portal .review-table td[data-ui3-col="text"]{
  width:1% !important; min-width:96px !important;
}
body.portal .tbl th[data-ui3-col="state"], body.portal .review-table th[data-ui3-col="state"],
body.portal .tbl td[data-ui3-col="state"], body.portal .review-table td[data-ui3-col="state"]{
  width:11% !important; min-width:112px !important;
}

/* 帯の縦余白はさらに詰める（2026-08-26 利用者指示: まだ余白が多い） */
body.portal .filter-bar, body.portal .bulk-bar{
  padding:6px 12px !important; margin:0 0 6px !important; row-gap:6px !important;
}
body.portal .filter-bar .muted-sm:not(.users-count){ font-size:12px !important; }

/* ---- 読み上げ用の隠し文字（.sr-only）が文書の高さを伸ばしていた（2026-08-26）----
   位置指定が無いため静的位置に置かれ、しかも切り取り先が画面全体なので、
   本文の内側スクロールとは別に「ページ全体が下へスクロールできる」状態になっていた。 */
body.portal .sr-only{
  position:absolute !important; top:0 !important; left:0 !important;
  width:1px !important; height:1px !important; margin:-1px !important; padding:0 !important;
  overflow:hidden !important; clip:rect(0 0 0 0) !important; clip-path:inset(50%) !important;
  white-space:nowrap !important; border:0 !important;
}

/* ---- 対象指定はもっと詰める＋職種は「+ 札」で足す（2026-08-26 利用者指示）---- */
body.portal.admin-ui2 #setPaneCriteria .criteria-target{
  gap:6px !important; padding:10px 14px !important;
}
body.portal.admin-ui2 #setPaneCriteria .criteria-field{ gap:4px 12px !important; }
body.portal.admin-ui2 #setPaneCriteria .criteria-label{ padding:4px 0 0 !important; }
body.portal.admin-ui2 #setPaneCriteria .criteria-chips-wrap{
  display:flex !important; flex-wrap:wrap !important; align-items:center !important;
  gap:6px 12px !important;
}
body.portal.admin-ui2 #setPaneCriteria .criteria-chips{
  flex:0 1 auto !important; gap:6px !important;
}
body.portal.admin-ui2 #setPaneCriteria .criteria-chip-actions{
  flex:0 0 auto !important; order:9 !important; margin-left:auto !important; padding:0 !important;
}
/* 元の「選ぶ→押す」の組は残す（処理はそのまま）が、+ 札があるときは隠す */
body.portal.admin-ui2 #setPaneCriteria .criteria-add-job{
  flex:1 1 auto !important; order:5 !important; display:flex !important;
  align-items:center !important; gap:6px !important; margin:0 !important; justify-self:auto !important;
}
body.portal.admin-ui2 #setPaneCriteria .criteria-add-job > select,
body.portal.admin-ui2 #setPaneCriteria .criteria-add-job > button.btn{
  display:none !important;
}
body.portal.admin-ui2 #setPaneCriteria .ui3-addchips{
  display:flex !important; flex-wrap:wrap !important; gap:6px !important; min-width:0 !important;
}
body.portal.admin-ui2 #setPaneCriteria .ui3-addchip{
  min-height:30px !important; padding:3px 12px !important; border-radius:999px !important;
  border:1px dashed var(--r-purple-line) !important; background:#fff !important;
  color:var(--r-purple-dark) !important; font-size:12.5px !important; font-weight:700 !important;
  cursor:pointer !important; white-space:nowrap !important;
}
body.portal.admin-ui2 #setPaneCriteria .ui3-addchip:hover{
  background:var(--r-purple-soft) !important; border-style:solid !important;
}
body.portal.admin-ui2 #setPaneCriteria .criteria-add-job .muted-sm{
  font-size:11.5px !important; color:#7b8794 !important;
}

/* ---- 保存だけの帯に白い面はいらない（2026-08-26 利用者指示）---- */
body.portal .bulk-bar:not(:has(input, select)){
  background:transparent !important; border:0 !important; box-shadow:none !important;
  padding:0 !important; margin:0 0 6px !important; justify-content:flex-end !important;
}
/* 見出しまわりの余白も詰める */
body.portal.admin-ui2 .admin-page-head{ margin:0 0 8px !important; }
body.portal.admin-ui2 .admin-page-head h2{ margin:0 0 2px !important; }
body.portal.admin-ui2 .admin-page-head p{ margin:0 !important; font-size:12.5px !important; }
body.portal #demoBanner{ margin:0 0 8px !important; padding:8px 14px !important; font-size:12.5px !important; }

/* ---- 委員会決定のセル ----
   2026-08-26 利用者指示「記入済みに見えない」: 空欄のままでも「採用される値」が決まっているので、
   薄い斜体のヒントではなく決まった値として読める見た目にした。
   2026-09-18 利用者指示「背景の色のせいで入力できないと勘違いする」: そのとき空欄のセルを
   **淡い紫で塗った**のが行き過ぎていた。塗りつぶした欄は入力欄ではなく**押せない札**に見える。
   区別は残しつつ、伝えるのは**枠と文字**にする——地はどちらの状態でも白（＝打てる欄に見える）。
     まだ決めていない … 破線の枠 ＋ 読める濃さの文字（採用される値）
     決めた           … 実線の紫の枠 ＋ 紫の文字
     未保存           … 橙の枠と地（既存の印。塗りはここだけに残す＝目立つ意味を薄めない） */
body.portal .final-decided-cell input.final-grid-score{
  text-align:center !important; font-weight:800 !important; font-size:13.5px !important;
  font-variant-numeric:tabular-nums !important; min-height:32px !important;
  background:#fff !important;
  border:1.5px solid var(--r-purple-line) !important; border-radius:8px !important;
  cursor:text !important;
  /* 2026-09-09 実機（DriveAdmin）: 「委員会決定を直して保存したら 0.1 点になった」。
     数値入力の上下ボタンは**空欄で 1 回押すとちょうど 0.1** になる（step=0.1）。給与に効く値を
     クリック 1 回で黙って作れる形にしない＝ボタンを出さない（キーボード入力は従来どおり）。
     ホイールでの増減は portal.html 側で止めている。 */
  -moz-appearance:textfield !important; appearance:textfield !important;
}
body.portal .final-decided-cell input.final-grid-score::-webkit-outer-spin-button,
body.portal .final-decided-cell input.final-grid-score::-webkit-inner-spin-button{
  -webkit-appearance:none !important; appearance:none !important; margin:0 !important;
}
body.portal .final-decided-cell input.final-grid-score::placeholder{
  color:#41505f !important; opacity:1 !important; font-style:normal !important; font-weight:800 !important;
}
/* まだ決めていない: **塗らない**。破線の枠で「これは自動で採用される値」を示す。 */
body.portal .final-decided-cell input.final-grid-score:placeholder-shown{
  background:#fff !important; border-style:dashed !important;
  border-color:var(--r-purple-line) !important;
}
body.portal .final-decided-cell input.final-grid-score:not(:placeholder-shown){
  background:#fff !important; border-style:solid !important;
  border-color:var(--r-purple) !important; color:var(--r-purple-dark) !important;
}
/* 触れる欄であることを手掛かりで返す（重ねて「打てる」と分かるようにする）。 */
body.portal .final-decided-cell input.final-grid-score:hover{
  border-color:var(--r-purple) !important; background:#fcfcff !important;
}
body.portal .final-decided-cell input.final-grid-score:focus,
body.portal .final-decided-cell input.final-grid-score:focus-visible{
  border-style:solid !important; border-color:var(--r-purple) !important;
  outline:none !important; box-shadow:0 0 0 3px rgba(108,92,231,.22) !important;
}
/* 未保存の印（橙）は既存のまま残す——ここだけ塗ることで「まだ送っていない」が際立つ。 */
body.portal .final-decided-cell.dirty input.final-grid-score{
  background:#fffaf0 !important; border-style:solid !important; border-color:#f0a020 !important;
}

/* ---- 「AI 活用基準」の面は出さない（2026-08-26 利用者指示）---- */
body.portal #tabCriteria05, body.portal #criteriaSubpage05{ display:none !important; }

/* ---- 社員名簿でページ全体がスクロールしていた原因（2026-08-26）----
   ロール列の「保存が読む控えの select」は position:absolute だが位置指定が無く、
   基準が画面全体になるため表の内側スクロールに閉じ込められず、文書の高さを 6000px 超に
   伸ばしていた（実測: 100 行 ×1 個）。入れ物を基準にして内側へ閉じ込める。 */
body.portal .table-scroll, body.portal .tbl-wrap,
body.portal .criteria-table-scroll, body.portal .analytics-table-wrap{
  position:relative !important;
}
body.portal.admin-ui2 .review-table .role-editor{ position:relative !important; }
body.portal.admin-ui2 .review-table select.user-input.role-select[data-field="roles"]{
  position:absolute !important; top:0 !important; left:0 !important;
  width:1px !important; min-width:0 !important; height:1px !important; max-height:1px !important;
  padding:0 !important; border:0 !important; opacity:.01 !important; pointer-events:none !important;
}

/* 状態・操作の列は中身を必ず中央に置く（ボタンと札が混ざる列で左右にばらけていた） */
body.portal .tbl td[data-ui3-col="state"], body.portal .review-table td[data-ui3-col="state"],
body.portal .tbl td[data-ui3-col="action"], body.portal .review-table td[data-ui3-col="action"]{
  text-align:center !important;
}
body.portal .tbl td[data-ui3-col="state"] > .btn, body.portal .review-table td[data-ui3-col="state"] > .btn,
body.portal .tbl td[data-ui3-col="state"] > button, body.portal .review-table td[data-ui3-col="state"] > button,
body.portal .tbl td[data-ui3-col="action"] > .btn, body.portal .review-table td[data-ui3-col="action"] > .btn,
body.portal .tbl td[data-ui3-col="action"] > button, body.portal .review-table td[data-ui3-col="action"] > button,
body.portal .tbl td[data-ui3-col="state"] > .pill, body.portal .review-table td[data-ui3-col="state"] > .pill,
body.portal .tbl td[data-ui3-col="state"] > .status-badge, body.portal .review-table td[data-ui3-col="state"] > .status-badge{
  display:inline-flex !important; margin:0 auto !important; float:none !important;
}

/* ---- 職種の追加 UI（2026-08-26 利用者指示）----
   この部門の職種は札で並ぶ（それが「追加済み」の一覧）。追加は 1 つのボタンから選ぶ。 */
body.portal.admin-ui2 #setPaneCriteria .ui3-addchips,
body.portal.admin-ui2 #setPaneCriteria .ui3-addchip{ display:none !important; }
body.portal.admin-ui2 #setPaneCriteria .criteria-add-job{
  flex:0 0 auto !important; order:6 !important; position:relative !important;
}
/* 状態の文は重ねない。行の中の実体として置く（2026-08-26 利用者指示） */
body.portal.admin-ui2 #setPaneCriteria .criteria-add-job > .muted-sm{
  position:static !important; order:9 !important; flex:0 1 auto !important;
  max-width:280px !important; margin:0 !important; font-size:11.5px !important;
  color:#7b8794 !important; line-height:1.45 !important;
}
body.portal.admin-ui2 #setPaneCriteria .criteria-add-job > .muted-sm:empty{ display:none !important; }
body.portal.admin-ui2 #setPaneCriteria .ui3-addopen{
  min-height:30px !important; padding:3px 14px !important; border-radius:999px !important;
  border:1px dashed var(--r-purple-line) !important; background:#fff !important;
  color:var(--r-purple-dark) !important; font-size:12.5px !important; font-weight:700 !important;
  cursor:pointer !important; white-space:nowrap !important;
}
body.portal.admin-ui2 #setPaneCriteria .ui3-addopen:hover{
  background:var(--r-purple-soft) !important; border-style:solid !important;
}
body.portal.admin-ui2 #setPaneCriteria .ui3-addopen[aria-expanded="true"]{
  background:var(--r-purple) !important; border-color:transparent !important; color:#fff !important;
}
body.portal.admin-ui2 #setPaneCriteria .ui3-addmenu{
  position:absolute !important; z-index:60 !important; top:calc(100% + 6px) !important; left:0 !important;
  display:flex !important; flex-direction:column !important; min-width:220px !important;
  max-height:240px !important; overflow:auto !important; padding:6px !important;
  border:1px solid var(--r-purple-line) !important; border-radius:12px !important;
  background:#fff !important; box-shadow:0 2px 0 #eceaf6, 0 12px 28px rgba(20,24,40,.16) !important;
}
body.portal.admin-ui2 #setPaneCriteria .ui3-addmenu[hidden]{ display:none !important; }
body.portal.admin-ui2 #setPaneCriteria .ui3-addpick{
  text-align:left !important; min-height:30px !important; padding:5px 10px !important;
  border:0 !important; border-radius:8px !important; background:transparent !important;
  color:#2b3441 !important; font-size:12.5px !important; cursor:pointer !important;
}
body.portal.admin-ui2 #setPaneCriteria .ui3-addpick:hover{
  background:var(--r-purple-soft) !important; color:var(--r-purple-dark) !important;
}

/* 見出しが幅を使えず途中で折り返していた（2026-08-26） */
body.portal.admin-ui2 .admin-page-head{ align-items:baseline !important; }
body.portal.admin-ui2 .admin-page-head > div:first-child{ flex:1 1 auto !important; min-width:0 !important; }
body.portal.admin-ui2 .admin-page-head h2{ white-space:nowrap !important; }

body.portal.admin-ui2 #setPaneCriteria .ui3-addnone{
  padding:6px 10px !important; font-size:12px !important; color:#8a94a6 !important; white-space:nowrap !important;
}

/* ---- 対象・担当: 横スクロールを出さない（2026-08-26 利用者指示）----
   担当欄は「氏名（ID）」が読める最小幅まで詰め、× は小さな丸に。部門は省略記号で切る。 */
body.portal table:has(> tbody#publicBody){ width:100% !important; }
body.portal table:has(> tbody#publicBody) th,
body.portal table:has(> tbody#publicBody) td{ padding:6px 8px !important; }
body.portal.admin-ui2 table:has(> tbody#publicBody) .assignee-cell{ gap:3px !important; }
body.portal.admin-ui2 table:has(> tbody#publicBody) .assignee-cell .pub-input{
  min-width:110px !important; width:100% !important; max-width:none !important;
  font-size:12px !important; padding:5px 7px !important; min-height:30px !important;
  text-overflow:ellipsis !important;
}
body.portal.admin-ui2 table:has(> tbody#publicBody) .assignee-clear{
  flex:0 0 auto !important; width:22px !important; min-width:22px !important;
  height:22px !important; min-height:22px !important; padding:0 !important;
  border-radius:999px !important; font-size:12px !important; line-height:1 !important;
}
/* 担当の 4 列は同じ幅で分け合う */
body.portal table:has(> tbody#publicBody) th:nth-child(n+6),
body.portal table:has(> tbody#publicBody) td:nth-child(n+6){
  width:16% !important; min-width:140px !important;
}
/* 左の読む列は内容の幅で詰める */
body.portal table:has(> tbody#publicBody) th:nth-child(1),
body.portal table:has(> tbody#publicBody) td:nth-child(1){ width:34px !important; }
body.portal table:has(> tbody#publicBody) th:nth-child(2),
body.portal table:has(> tbody#publicBody) td:nth-child(2){
  width:1% !important; white-space:nowrap !important; font-size:12.5px !important;
}
body.portal table:has(> tbody#publicBody) th:nth-child(3),
body.portal table:has(> tbody#publicBody) td:nth-child(3){
  width:1% !important; white-space:nowrap !important;
}
body.portal table:has(> tbody#publicBody) th:nth-child(4),
body.portal table:has(> tbody#publicBody) td:nth-child(4){
  max-width:150px !important; overflow:hidden !important; text-overflow:ellipsis !important;
  white-space:nowrap !important; font-size:12.5px !important;
}
body.portal table:has(> tbody#publicBody) th:nth-child(5),
body.portal table:has(> tbody#publicBody) td:nth-child(5){ width:1% !important; white-space:nowrap !important; }
body.portal table:has(> tbody#publicBody) td:nth-child(5) select{ min-width:64px !important; }
/* 入れ物は縦だけスクロール */
body.portal #publicBody{ }
/* 狭い窓では隠すのではなくスクロールできるようにする（隠すと右の列に永久に届かない） */
body.portal .table-scroll:has(> table > tbody#publicBody){ overflow-x:auto !important; }

/* 部門のまとめ行は押して折り畳める（2026-08-26 利用者指示） */
body.portal tr.ui3-group-row{ cursor:pointer !important; user-select:none !important; }
body.portal tr.ui3-group-row > th{ text-align:left !important; }
body.portal tr.ui3-group-row:hover > th{ background:var(--r-purple-soft) !important; }

/* 追加した札は「未保存」の見た目にする（説明文は出さない・2026-08-26 利用者指示） */
body.portal.admin-ui2 #setPaneCriteria .criteria-add-job > .muted-sm{ display:none !important; }
body.portal.admin-ui2 #setPaneCriteria .criteria-chip[data-ui3-pending]{
  border-style:dashed !important; border-color:var(--r-purple) !important;
  background:var(--r-purple-soft) !important; color:var(--r-purple-dark) !important;
}
body.portal.admin-ui2 #setPaneCriteria .criteria-chip[data-ui3-pending]::after{
  content:'未保存'; margin-left:6px; padding:1px 6px; border-radius:999px;
  background:var(--r-purple); color:#fff; font-size:10px; font-weight:800;
}

/* 見出しの右に寄せた保存の帯は、面（白い箱）を持たない（2026-08-26 利用者指示） */
body.portal.admin-ui2 .admin-page-head{ display:flex !important; align-items:center !important; gap:12px !important; }
body.portal.admin-ui2 .admin-page-head > .bulk-bar{
  margin:0 0 0 auto !important; padding:0 !important; background:transparent !important;
  border:0 !important; box-shadow:none !important; flex:0 0 auto !important;
  display:flex !important; align-items:center !important; gap:8px !important;
}
body.portal.admin-ui2 .admin-page-head > .bulk-bar > .spacer{ display:none !important; }
body.portal.admin-ui2 .admin-page-head > .bulk-bar .btn{ min-height:34px !important; }
/* 帯を出した後に空になった入れ物は場所を取らない */
body.portal .panel:empty, body.portal .bulk-bar:empty{ display:none !important; }

/* ダッシュボードの更新と最終更新時刻を、見出し右上でひとまとまりにする。 */
body.portal.admin-ui2 .dashboard-head-actions{
  margin-left:auto !important; flex:0 0 auto !important;
  display:flex !important; align-items:center !important; gap:14px !important;
}
body.portal.admin-ui2 #homeDataAge{
  margin:0 !important; min-width:13em; text-align:right;
  display:flex; flex-direction:column; align-items:flex-end; gap:2px;
  line-height:1.35;
}
body.portal.admin-ui2 .dashboard-data-age-label{
  color:#5f6b7a; font-size:12px; font-weight:800; letter-spacing:.02em;
}
body.portal.admin-ui2 #homeDataAgeText{ color:#2f3742; font-size:13px; white-space:nowrap; }
body.portal.admin-ui2 #btnHomeRefresh{
  flex:0 0 auto !important; min-height:48px !important; padding:11px 28px !important;
  border-radius:10px !important; font-size:17px !important; font-weight:850 !important;
  box-shadow:0 5px 14px rgba(108, 92, 231, .30) !important;
}
@media (max-width: 720px){
  body.portal.admin-ui2 .dashboard-head-actions{ width:100%; justify-content:flex-end; }
  body.portal.admin-ui2 #homeDataAge{ min-width:0; }
}

/* 履歴の列見出しは「日時・種別・内容」を同じ書式に揃え、本文より一段大きくする。 */
body.portal.admin-ui2 .person-history-table thead th{
  font-size:15px !important; font-weight:800 !important; color:#2f3742 !important;
  text-align:left !important;
}
body.portal.admin-ui2 .person-history-table td.person-history-kind-cell{
  font-size:14px !important; font-weight:400 !important; color:#2f3742 !important;
}
body.portal.admin-ui2 .person-history-table .person-history-kind{
  padding:5px 12px !important; font-size:14px !important; font-weight:800 !important;
  line-height:1.35 !important;
}
body.portal.admin-ui2 .person-history-table td.person-history-kind-cell{
  white-space:normal !important; overflow-wrap:anywhere !important;
}
body.portal.admin-ui2 .person-history-table .person-history-by{
  display:block !important; margin:4px 0 0 !important;
  white-space:normal !important; overflow-wrap:anywhere !important;
}

/* 社員名簿: 設定の書き出しは見出しの右（2026-08-27 利用者指示） */
/* 2026-09-07: 見出しの右へ「変更履歴」を足したので、右寄せは 2 つを包む入れ物側で行う
   （ボタン個々に margin-left:auto を付けると、縦に積んだとき片方だけ寄る）。 */
body.portal .users-head-actions{ margin-left:auto !important; flex:0 0 auto !important; }
/* UX15（2026-10-31 利用者指摘「社員名簿の画面の余白が多い」）: 説明とその次の物（リセット・
   名簿の帯）の間の余白を、社員名簿の画面だけ詰める。見出しの行の下の 8px は他画面の
   間隔なのでこの画面だけ 0 に、画面の要素間の縦の間隔（section の gap 20px）も
   この画面だけ狭くする。他の画面の見出しの行（criteria など）は変えない。 */
body.portal.admin-ui2 [data-view="users"] .admin-page-head{ margin-bottom:0 !important; }
body.portal.admin-ui2 .admin-main > section[data-view="users"]:not([hidden]){ gap:10px !important; }
body.portal #btnExportMaster,
body.portal #btnRosterHistory{
  flex:0 0 auto !important;
  min-height:34px !important; padding:7px 18px !important; font-size:13px !important;
  border-radius:999px !important; font-weight:700 !important;
}

/* 評価基準設定: 保存は見出しの右の 1 つに集約（2026-08-26 利用者指示） */
body.portal #ui3CriteriaSave{
  margin-left:auto !important; flex:0 0 auto !important;
  min-height:34px !important; padding:7px 24px !important; font-size:13.5px !important;
  border-radius:999px !important; font-weight:800 !important;
}
body.portal #btnCriteria04Save, body.portal #btnCriteria02Save,
body.portal #btnCriteria03Save, body.portal #btnCriteria05Save{ display:none !important; }

/* スケジュールの保存は「自動進行を有効にする」の右（2026-08-26 利用者指示） */
body.portal .ui3-schedule-head{
  display:flex !important; align-items:center !important; gap:12px !important;
  margin:0 0 6px !important;
}
body.portal .ui3-schedule-head > label{ flex:1 1 auto !important; min-width:0 !important; }
body.portal .ui3-schedule-head > #btnSaveSchedule{
  flex:0 0 auto !important; min-height:34px !important; padding:7px 22px !important;
  font-size:13.5px !important; border-radius:999px !important;
}

/* ---- 固定見出しの上に行が透けて見える問題（2026-08-26 利用者指示）----
   見出しの上へ 12px の同色の帯を出して、スクロール中の行が覗くのを防ぐ。 */
body.portal .tbl thead th, body.portal .review-table thead th{
  position:sticky !important; top:0 !important; z-index:6 !important;
  background-clip:padding-box !important;
}
body.portal .tbl thead th::before, body.portal .review-table thead th::before{
  content:'' !important; position:absolute !important; left:0 !important; right:0 !important;
  top:-14px !important; height:14px !important; pointer-events:none !important;
  background:inherit !important;
}
/* 上の帯は入れ物の角丸（border-radius + overflow）で切られる。
   **入れ物に clip-path を掛けない**（2026-09-06 実機）: clip-path は `position:fixed` の子孫まで切るため、
   表の枠から逃がしてあるドロップダウン（担当者の候補・`.assignee-menu`）が表の下端で切り落とされ、
   最終行では候補が 1 件も押せなくなる（実測: 2 件目の位置を叩くと表の外の注記が返る＝そこに居ない）。
   同じ理由で transform・filter・contain もここへ足さないこと。 */

/* ---- 一覧の最後の「操作」列は内容の幅で止め、余りは読む列へ（2026-08-26 利用者指示）---- */
body.portal table th[data-ui3-col]:last-child,
body.portal table td[data-ui3-col]:last-child{
  width:1% !important; min-width:124px !important; text-align:center !important;
}
body.portal .tbl th[data-ui3-col="name"], body.portal .review-table th[data-ui3-col="name"],
body.portal .tbl td[data-ui3-col="name"], body.portal .review-table td[data-ui3-col="name"]{
  width:22% !important;
}
body.portal .tbl th[data-ui3-col="text"], body.portal .review-table th[data-ui3-col="text"],
body.portal .tbl td[data-ui3-col="text"], body.portal .review-table td[data-ui3-col="text"]{
  width:18% !important;
}
/* ボタン・札は列の中央（block でも inline でも必ず中央に来るようにする） */
body.portal .tbl td[data-ui3-col]:last-child > .btn,
body.portal .review-table td[data-ui3-col]:last-child > .btn,
body.portal .tbl td[data-ui3-col]:last-child > button,
body.portal .review-table td[data-ui3-col]:last-child > button,
body.portal .tbl td[data-ui3-col]:last-child > .pill,
body.portal .review-table td[data-ui3-col]:last-child > .pill,
body.portal .tbl td[data-ui3-col]:last-child > .status-badge,
body.portal .review-table td[data-ui3-col]:last-child > .status-badge{
  display:inline-flex !important; margin-left:auto !important; margin-right:auto !important;
  float:none !important;
}

/* 「全部展開」の帯は見出しの直下に詰める（2026-08-26 利用者指示） */
body.portal .accordion-col > .accordion-toggle-all{
  margin:0 !important; padding:4px 10px 6px !important; min-height:0 !important;
}
body.portal .accordion-col > .accordion-toggle-all > *{ margin:0 !important; }
body.portal .accordion-col > .accordion-index-host{ padding-top:4px !important; }

/* 操作セルの中の入れ物（div.row など）も中央そろえにする（2026-08-26 利用者指示） */
body.portal .tbl td[data-ui3-col]:last-child > .row,
body.portal .review-table td[data-ui3-col]:last-child > .row,
body.portal .tbl td[data-ui3-col="action"] > .row,
body.portal .review-table td[data-ui3-col="action"] > .row,
body.portal .tbl td[data-ui3-col="state"] > .row,
body.portal .review-table td[data-ui3-col="state"] > .row{
  display:flex !important; justify-content:center !important; align-items:center !important;
  gap:8px !important; margin:0 !important; width:100% !important;
}

/* ---- 部門・職種・等級の面（2026-08-26 利用者指示）----
   削除は面ごとに 1 つの入口。押したときだけ各行に削除が出る。名前の隣に「✎」を置く。 */
body.portal.admin-ui2 .org-card .oc-head{
  display:flex !important; align-items:center !important; gap:8px !important;
}
body.portal.admin-ui2 .org-card .oc-head-label{ flex:1 1 auto !important; min-width:0 !important; }
body.portal.admin-ui2 .org-card .oc-del-toggle{
  flex:0 0 auto !important; min-height:24px !important; padding:2px 10px !important;
  border-radius:999px !important; border:1px solid var(--r-red-line) !important;
  background:#fff !important; color:var(--r-red-dark, #b02324) !important;
  font-size:11.5px !important; font-weight:800 !important; cursor:pointer !important;
}
body.portal.admin-ui2 .org-card .oc-del-toggle:hover{ background:var(--r-red-soft) !important; }
body.portal.admin-ui2 .org-card .oc-del-toggle[aria-pressed="true"]{
  background:var(--r-red) !important; border-color:transparent !important; color:#fff !important;
}
body.portal.admin-ui2 .org-card:not([data-ui3-del="1"]) .oc-del{ display:none !important; }
body.portal.admin-ui2 .org-card .oc-main{
  display:flex !important; align-items:center !important; gap:6px !important;
  flex:1 1 auto !important; min-width:0 !important;
}
body.portal.admin-ui2 .org-card .oc-name{ flex:0 1 auto !important; min-width:0 !important; }
body.portal.admin-ui2 .org-card .oc-main .name-edit{ flex:0 0 auto !important; opacity:.6 !important; }
body.portal.admin-ui2 .org-card .oc-row:hover .oc-main .name-edit{ opacity:1 !important; }

/* 2026-09-07: 「表の中の差し戻しは既定で隠す」規則は廃止。差し戻しは氏名の隣に 1 つだけで、
   隠す理由が無い（隠していた頃の名残が残っていて、氏名の隣に置いた瞬間に消えていた）。 */

/* ---- 最終評価入力の詳細（2026-08-26 利用者指示）: 余白を詰め、戻るは保存の隣 ---- */
/* display は **書かない**（2026-08-31 実機指摘）。この面の出し入れは画面側が
   `#finalDetail.style.display` で切り替えているが、!important 付きの display はインラインに勝つ。
   以前はここに `display:flex !important` があったため「一覧へ戻る」で隠せず、前に見ていた人の
   内訳が一覧の下にぶら下がったままになっていた。縦積みの並びは admin-ui.css の
   `.admin-ui2 [data-view="final"] > #finalDetail`（!important 無し）が既に持っている。 */
body.portal.admin-ui2 #finalDetail{ flex-direction:column !important; gap:10px !important; }
body.portal.admin-ui2 #finalDetail > h3{ margin:0 !important; font-size:15px !important; }
body.portal.admin-ui2 #finalDetail > .notice, body.portal.admin-ui2 #finalDetail > .info-text{
  margin:0 !important; padding:8px 14px !important; font-size:12.5px !important;
}
body.portal.admin-ui2 #finalDetail .final-rating-section{ margin:0 !important; }
body.portal.admin-ui2 #finalDetail .final-score-panel{ padding:12px 14px !important; }
body.portal.admin-ui2 #finalDetail .final-score-row{ margin:0 0 8px !important; }
body.portal.admin-ui2 #finalDetail .final-score-row > label{
  display:flex !important; align-items:center !important; gap:10px !important;
  font-size:13px !important; font-weight:800 !important;
}
body.portal.admin-ui2 #finalDetail .final-score-row input.final-score{
  width:110px !important; min-height:34px !important; text-align:center !important;
  font-weight:800 !important; font-variant-numeric:tabular-nums !important;
}
body.portal.admin-ui2 #finalDetail .btn-row{
  display:flex !important; align-items:center !important; gap:10px !important; margin:6px 0 0 !important;
}

/* 手順の操作行: 戻る → 次へ の順（次へを一番右に・2026-08-26 利用者指示） */
body.portal [data-ui3-steps="1"]{
  display:flex !important; align-items:center !important; gap:10px !important;
  justify-content:flex-end !important;
}
body.portal [data-ui3-steps="1"] [data-ui3-step="back"]{ order:1 !important; }
body.portal [data-ui3-steps="1"] [data-ui3-step="next"]{ order:2 !important; }

/* 手順の操作行の中の伸びる余白は無効にする（戻ると実行を隣同士にする・2026-08-26 利用者指示） */
body.portal [data-ui3-steps="1"] > .spacer{ display:none !important; }
body.portal [data-ui3-steps="1"] > *{ flex:0 0 auto !important; }

/* 手順の操作行（.action-bar）も右寄せにする（2026-08-26 利用者指示） */
body.portal .action-bar[data-ui3-steps="1"]{ justify-content:flex-end !important; }

/* ---- 固定見出しの下地を確実に塗る（2026-08-26: 枠の分だけ行が透けていた）---- */
body.portal .tbl thead th, body.portal .review-table thead th{
  background-clip:border-box !important;
}
body.portal .tbl > thead, body.portal .review-table > thead,
body.portal .tbl > thead > tr, body.portal .review-table > thead > tr{
  background:#f1eff9 !important;
}
body.portal .tbl thead th::before, body.portal .review-table thead th::before{
  top:-16px !important; height:16px !important; background:#f1eff9 !important;
}

/* ---- 固定見出しは行より確実に前面・上の覆いも広めに（2026-08-26 追加）---- */
body.portal .tbl thead th, body.portal .review-table thead th{
  z-index:12 !important; background-color:#f1eff9 !important;
}
body.portal .tbl thead th::before, body.portal .review-table thead th::before{
  top:-28px !important; height:28px !important; z-index:1 !important;
}
body.portal .tbl tbody tr, body.portal .review-table tbody tr,
body.portal .tbl tbody td, body.portal .review-table tbody td{
  position:static !important;
}

/* 表の上の対象表記（部門 / 職種 / 等級）は出さない（2026-08-26 利用者指示: 余計な表示・固定見出しの裏に隠れる） */
body.portal .criteria-set-preview-target{ display:none !important; }

/* ---- 固定見出しの上の覆いは 3px に（2026-08-26: 28px だと空の行のように見えていた）---- */
body.portal .tbl thead th::before, body.portal .review-table thead th::before{
  top:-3px !important; height:3px !important;
}
/* 評価基準の表は文字を左そろえにする（2026-08-26 利用者指示） */
body.portal .criteria-table-scroll table th, body.portal .criteria-table-scroll table td,
body.portal .criteria-set-preview table th, body.portal .criteria-set-preview table td,
body.portal #criteriaSetPreview table th, body.portal #criteriaSetPreview table td{
  text-align:left !important;
}

/* ---- 基準セットの内容表（2026-08-26 利用者指示）: 左そろえ・改行を保つ・長文は折り返す ---- */
body.portal table.criteria-set-preview-table th,
body.portal table.criteria-set-preview-table td{
  text-align:left !important; vertical-align:top !important;
  white-space:pre-line !important; overflow:visible !important; text-overflow:clip !important;
  word-break:normal !important; overflow-wrap:anywhere !important; line-height:1.65 !important;
}
body.portal table.criteria-set-preview-table th:first-child,
body.portal table.criteria-set-preview-table td:first-child{
  width:200px !important; white-space:nowrap !important;
}
body.portal table.criteria-set-preview-table{ table-layout:auto !important; min-width:0 !important; }
body.portal td.criteria-set-preview-content{
  text-align:left !important; white-space:pre-line !important;
}
/* 編集側の基準表も同じ扱い（文字は左・改行を保つ） */
body.portal .criteria-table-scroll table td,
body.portal .criteria-table-scroll table th{
  text-align:left !important; vertical-align:top !important; white-space:normal !important;
}

/* ---- 見出しの固定は「内側スクロールのある表」だけ（2026-08-26 修正）----
   入れ物の無い表で sticky にすると、外側のスクロールに引っかかって
   前後の行と重なって見える（実測: 基準セットの内容表）。 */
body.portal .tbl thead th, body.portal .review-table thead th{
  position:static !important; z-index:auto !important;
}
body.portal .tbl thead th::before, body.portal .review-table thead th::before{
  content:none !important; display:none !important;
}
body.portal .tbl-wrap > table thead th,
body.portal .table-scroll > table thead th,
body.portal .criteria-table-scroll > table thead th,
body.portal .analytics-table-wrap > table thead th,
body.portal .distribution-table-wrap > table thead th{
  position:sticky !important; top:0 !important; z-index:12 !important;
  background-image:linear-gradient(180deg,#f6f4ff,#efedfb) !important;
  background-color:#f1eff9 !important; background-clip:border-box !important;
}
body.portal .tbl-wrap > table thead th::before,
body.portal .table-scroll > table thead th::before,
body.portal .criteria-table-scroll > table thead th::before{
  content:'' !important; display:block !important;
  position:absolute !important; left:0 !important; right:0 !important;
  top:-3px !important; height:3px !important; background:#f1eff9 !important;
}

/* ---- 固定見出しの下に行が透ける問題の根本対処（2026-08-26 利用者指摘）----
   罫線を潰す（border-collapse:collapse）と、固定見出しの下端で 1px の隙間ができて
   スクロールする行が覗く。罫線を分離して、見出しは完全に不透明な 1 枚の帯にする。 */
body.portal .tbl-wrap > table,
body.portal .table-scroll > table,
body.portal .criteria-table-scroll > table,
body.portal .analytics-table-wrap > table,
body.portal .distribution-table-wrap > table{
  border-collapse:separate !important; border-spacing:0 !important;
}
body.portal .tbl-wrap > table > thead > tr > th,
body.portal .table-scroll > table > thead > tr > th,
body.portal .criteria-table-scroll > table > thead > tr > th,
body.portal .analytics-table-wrap > table > thead > tr > th,
body.portal .distribution-table-wrap > table > thead > tr > th{
  background:#f1eff9 !important; background-image:none !important;
  border-bottom:1px solid var(--r-purple-line) !important;
  box-shadow:0 6px 8px -6px rgba(20,24,40,.18) !important;
}
body.portal .tbl-wrap > table > tbody > tr > td,
body.portal .table-scroll > table > tbody > tr > td,
body.portal .criteria-table-scroll > table > tbody > tr > td,
body.portal .analytics-table-wrap > table > tbody > tr > td,
body.portal .distribution-table-wrap > table > tbody > tr > td{
  border-bottom:1px solid var(--r-line-soft) !important;
}
body.portal .tbl-wrap > table > tbody > tr > td:not(:last-child),
body.portal .table-scroll > table > tbody > tr > td:not(:last-child),
body.portal .criteria-table-scroll > table > tbody > tr > td:not(:last-child),
body.portal .tbl-wrap > table > thead > tr > th:not(:last-child),
body.portal .table-scroll > table > thead > tr > th:not(:last-child),
body.portal .criteria-table-scroll > table > thead > tr > th:not(:last-child){
  border-right:1px solid var(--r-line-soft) !important;
}
/* 覆い帯はもう使わない */
body.portal .tbl thead th::before, body.portal .review-table thead th::before,
body.portal .tbl-wrap > table thead th::before,
body.portal .table-scroll > table thead th::before,
body.portal .criteria-table-scroll > table thead th::before{
  content:none !important; display:none !important;
}

/* ---- 基準の表の「内容」列は左そろえ・改行を保って折り返す（2026-08-26 利用者指示）----
   操作列を中央にする規則（:last-child・id 特異度）に勝てるよう同じ形で書く。 */
body.portal .criteria-table-scroll > table > thead > tr > th,
body.portal .criteria-table-scroll > table > tbody > tr > td,
body.portal table.criteria-set-preview-table > thead > tr > th,
body.portal table.criteria-set-preview-table > tbody > tr > td,
body.portal .criteria-table-scroll > table > tbody > tr > td:last-child,
body.portal table.criteria-set-preview-table > tbody > tr > td:last-child,
body.portal .criteria-table-scroll > table > thead > tr > th:last-child,
body.portal table.criteria-set-preview-table > thead > tr > th:last-child{
  text-align:left !important; vertical-align:top !important;
  white-space:pre-line !important; overflow:visible !important; text-overflow:clip !important;
  overflow-wrap:anywhere !important; line-height:1.65 !important;
}
body.portal table.criteria-set-preview-table > tbody > tr > td:first-child,
body.portal .criteria-table-scroll > table > tbody > tr > td:first-child{
  white-space:nowrap !important;
}

/* ---- 基準の表の列幅（2026-08-26 利用者指示: 項目が広すぎる）----
   項目 = 220px 固定、内容 = 残り全部、削除（あれば）= 90px。 */
body.portal table.criteria-set-preview-table,
body.portal .criteria-table-scroll > table{
  table-layout:fixed !important; width:100% !important; min-width:0 !important;
}
body.portal table.criteria-set-preview-table > thead > tr > th:first-child,
body.portal table.criteria-set-preview-table > tbody > tr > td:first-child,
body.portal .criteria-table-scroll > table > thead > tr > th:first-child,
body.portal .criteria-table-scroll > table > tbody > tr > td:first-child{
  width:220px !important; min-width:220px !important; max-width:220px !important;
}
body.portal table.criteria-set-preview-table > thead > tr > th:nth-child(2),
body.portal table.criteria-set-preview-table > tbody > tr > td:nth-child(2),
body.portal .criteria-table-scroll > table > thead > tr > th:nth-child(2),
body.portal .criteria-table-scroll > table > tbody > tr > td:nth-child(2){
  width:auto !important; min-width:0 !important; max-width:none !important;
}
body.portal .criteria-table-scroll > table > thead > tr > th:nth-child(3),
body.portal .criteria-table-scroll > table > tbody > tr > td:nth-child(3){
  width:90px !important; min-width:90px !important; max-width:90px !important; text-align:center !important;
}
/* 内容の折り返しは語の切れ目を優先（1 文字ずつ折れないようにする） */
body.portal table.criteria-set-preview-table > tbody > tr > td:nth-child(2),
body.portal .criteria-table-scroll > table > tbody > tr > td:nth-child(2){
  overflow-wrap:break-word !important; word-break:normal !important;
}

/* ---- 基準の表の列幅を最終確定（2026-08-26）---- */
body.portal table.criteria-set-preview-table > thead > tr > th:first-child,
body.portal table.criteria-set-preview-table > tbody > tr > td:first-child,
body.portal .criteria-table-scroll > table > thead > tr > th:first-child,
body.portal .criteria-table-scroll > table > tbody > tr > td:first-child{
  width:220px !important; min-width:220px !important; max-width:220px !important; text-align:left !important;
}
body.portal table.criteria-set-preview-table > thead > tr > th:last-child,
body.portal table.criteria-set-preview-table > tbody > tr > td:last-child{
  width:auto !important; min-width:0 !important; max-width:none !important; text-align:left !important;
}
body.portal .criteria-table-scroll > table > thead > tr > th:nth-child(2),
body.portal .criteria-table-scroll > table > tbody > tr > td:nth-child(2){
  width:auto !important; min-width:0 !important; max-width:none !important; text-align:left !important;
}
body.portal .criteria-table-scroll > table > thead > tr > th:nth-child(3),
body.portal .criteria-table-scroll > table > tbody > tr > td:nth-child(3){
  width:90px !important; min-width:90px !important; max-width:90px !important; text-align:center !important;
}

/* 「データを更新する」の面は出さない（2026-08-26 利用者指示） */
body.portal #cardDeadline{ display:none !important; }

/* ===== APP-SHELL-SCROLL START（管理者・非管理者で完全一致必須。tests/test_app_shell_scroll_contract.py が照合する） =====
   画面の骨格は「ページ全体を伸ばす」のではなく「窓の高さを分け合う」。
   これを守らないと 2 つの症状が必ず出る（2026-09-06 実機・再発）:
     1. 左メニューが**一緒に流れて消える**（内容が長い画面＝本人記入・評価記入でいつも起きる）
     2. 内容より下の**何も無いところへスクロールできる**（100vh の器と sticky の帯が積み上がるため）
   直し方は 1 つだけ: 器が窓の高さを持ち、**中身の面だけが縦に流れる**。
   ここは「最後に読む仕上げ層」なので、各ロールのキット（.shell/.body-row/...）の値を上書きできる。 */
html, body.portal.ui2, body.admin-ui2 { height: 100%; }
body.portal.ui2, body.admin-ui2 { overflow: hidden; }

body.portal.ui2 > .shell,
body.admin-ui2 > .shell {
  height: 100vh;
  min-height: 0;
  overflow: hidden;
}

/* 帯は流れない側に置く（sticky を積むと、その高さぶん余分に流れる）。 */
body.portal.ui2 > .shell > .topbar,
body.admin-ui2 > .shell > .topbar {
  position: static;
  flex: 0 0 auto;
}

body.portal.ui2 .body-row,
body.admin-ui2 .admin-body-row {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
}

/* 左メニュー: 位置は動かさない。項目が窓より多いときだけ、メニューの中だけが流れる。 */
body.portal.ui2 .body-row > .sidebar,
body.admin-ui2 .admin-body-row > .portal-nav {
  min-height: 0;
  height: 100%;
  overflow-y: auto;
  overscroll-behavior: contain;
}

/* 中身の面**だけ**が縦に流れる（ここが唯一のスクロール面）。 */
body.portal.ui2 .body-row > .main,
body.admin-ui2 .admin-body-row > .admin-main {
  min-height: 0;
  height: 100%;
  overflow-y: auto;
  overscroll-behavior: contain;
}
/* ===== APP-SHELL-SCROLL END ===== */

/* ---- 社員名簿: いま並び替えに使っている列の見出しを塗って強調する（2026-09-16 利用者指示）----
   ▲▼ の小さな印だけでは、どの列で並んでいるのかが一目で分からない。見出しの地を濃い紫にして
   文字と印を白へ反転させる（地だけを変えると、紫の文字が紫の地に沈んで読めなくなる）。
   目印は `aria-sort`（updateUserRosterSortHeaders が付ける値）で、見た目のための第 2 の印を
   作らない＝並び替えの状態を持つ場所を 1 つに保つ。 */
body.portal #usersTable th[aria-sort="ascending"],
body.portal #usersTable th[aria-sort="descending"]{
  background:linear-gradient(180deg,var(--r-purple),var(--r-purple-dark)) !important;
  color:#fff !important;
  border-color:var(--r-purple-dark) !important;
  box-shadow:inset 0 -2px 0 var(--r-purple-dark), inset 0 1px 0 rgba(255,255,255,.28) !important;
}
body.portal #usersTable th[aria-sort="ascending"] .users-sort-button,
body.portal #usersTable th[aria-sort="descending"] .users-sort-button,
body.portal #usersTable th[aria-sort="ascending"] .users-sort-indicator,
body.portal #usersTable th[aria-sort="descending"] .users-sort-indicator{
  color:#fff !important;
}
/* 列そのものも塗る（2026-09-16 利用者指示「カラム名だけではなく全列も」）。何列目かは
   `data-sorted-col`（updateUserRosterSortHeaders が置く唯一の印）で、行が増えても追随する。
   セルには入力欄が載るので、見出しより**淡い地**にする（濃く塗ると中の白い入力が沈む）。 */
body.portal #usersTable[data-sorted-col="2"] tbody td:nth-child(2),
body.portal #usersTable[data-sorted-col="3"] tbody td:nth-child(3),
body.portal #usersTable[data-sorted-col="4"] tbody td:nth-child(4),
body.portal #usersTable[data-sorted-col="5"] tbody td:nth-child(5),
body.portal #usersTable[data-sorted-col="6"] tbody td:nth-child(6),
body.portal #usersTable[data-sorted-col="7"] tbody td:nth-child(7),
body.portal #usersTable[data-sorted-col="8"] tbody td:nth-child(8){
  background:var(--r-purple-soft) !important;
  box-shadow:inset 1px 0 0 var(--r-purple-line), inset -1px 0 0 var(--r-purple-line) !important;
}
