

/* ================= 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.ui2 .shell{ height:100vh !important; overflow:hidden !important; background:transparent !important; }
body.portal.ui2 .body-row{ display:flex !important; height:calc(100vh - 56px) !important; overflow:hidden !important; }
body.portal.ui2 .topbar{ height:56px !important; min-height:56px !important; padding:0 22px !important; gap:14px !important; background:#fff !important; border-bottom:1px solid var(--r-line) !important; box-shadow:none !important; }
body.portal.ui2 .topbar .brand{ font-size:15px !important; color:var(--r-purple-dark) !important; }
body.portal.ui2 .topbar .brand::before{ width:28px !important; height:28px !important; background:var(--r-purple) !important; background-image:none !important; border-radius:8px !important; }
body.portal.ui2 .topbar .brand .role{ background:var(--r-purple) !important; background-image:none !important; padding:2px 10px !important; font-size:11.5px !important; }
body.portal.ui2 .sidebar{
  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.ui2 .side-btn{ min-height:32px !important; padding:6px 10px !important; border-radius:8px !important; font-size:13px !important; }
body.portal.ui2 .side-btn.active{ background:var(--r-purple) !important; background-image:none !important; box-shadow:none !important; }
body.portal.ui2 .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.ui2 .phase-context{ padding:8px 12px !important; border-radius:10px !important; background:#f7f6fe !important; border:1px solid var(--r-purple-line) !important; border-left:4px solid var(--r-purple) !important; }
body.portal.ui2 .gf-card-no{ background:var(--r-purple) !important; background-image:none !important; box-shadow:none !important; }
body.portal.ui2 .gf-card-cat{ color:var(--r-purple-dark) !important; }
body.portal.ui2 .gf-card-criteria{ border:1px solid var(--r-line) !important; border-left:4px solid var(--r-purple-line) !important; border-radius:10px !important; }
body.portal.ui2 .col-header-rw{ font-size:12px !important; }
@media (max-width:640px){
  body.portal.ui2 .shell, body.portal.ui2 .body-row{ height:auto !important; overflow:visible !important; display:block !important; }
  body.portal.ui2 .main, body.portal.ui2 .sidebar{ 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; }

/* ================= 差し戻しは既定で出さない =================
   赤いボタンが全行・全列に並ぶと表が読めない。右上の「差し戻し」を押した間だけ出す。 */
body.portal .panel-title.ui3-has-toggle{
  display:flex !important; align-items:center !important; justify-content:space-between !important; gap:12px !important;
}
body.portal .ui3-reject-toggle{
  flex:0 0 auto; display:inline-flex; align-items:center; gap:6px;
  min-height:30px; padding:4px 13px; border-radius:999px;
  border:1px solid var(--r-red-line); background:#fff; color:var(--r-red-dark);
  font-size:12px; font-weight:800; cursor:pointer;
  box-shadow:0 2px 0 #f2dcde;
  transition:transform .15s var(--r-ease), box-shadow .15s var(--r-ease), background .15s ease, color .15s ease;
}
body.portal .ui3-reject-toggle:hover{ transform:translateY(-2px); box-shadow:0 4px 0 #f2dcde; background:var(--r-red-soft); }
body.portal .ui3-reject-toggle:active{ transform:translateY(1px); box-shadow:0 1px 0 #f2dcde; }
body.portal .ui3-reject-toggle[aria-pressed="true"]{
  border-color:transparent; color:#fff;
  background:linear-gradient(135deg,var(--r-red),var(--r-red-lt));
  box-shadow:0 2px 0 var(--r-red-sh);
}
/* 既定は非表示。差し戻しモードの間だけ出す */
body.portal .btn.sm.danger.progress-reject-button, body.portal .progress-reject-button{ display:none !important; }
body.portal [data-ui3-reject="on"] .btn.sm.danger.progress-reject-button,
body.portal [data-ui3-reject="on"] .progress-reject-button{
  display:inline !important;
  margin:0 0 0 8px !important; padding:0 !important; min-height:0 !important;
  border:0 !important; border-bottom:1px solid currentColor !important; border-radius:0 !important;
  background:none !important; background-image:none !important; box-shadow:none !important;
  color:var(--r-red) !important; font-size:12px !important; font-weight:700 !important;
  line-height:1.2 !important; cursor:pointer !important; vertical-align:baseline !important;
}
body.portal [data-ui3-reject="on"] .btn.sm.danger.progress-reject-button:hover,
body.portal [data-ui3-reject="on"] .progress-reject-button:hover{
  color:var(--r-red-dark) !important; background:var(--r-red-soft) !important;
  transform:none !important; box-shadow:none !important;
}
body.portal [data-ui3-reject="on"] .btn.sm.danger.progress-reject-button:active,
body.portal [data-ui3-reject="on"] .progress-reject-button:active{ transform:none !important; box-shadow:none !important; }
body.portal [data-ui3-reject="on"] .btn.sm.danger.progress-reject-button:disabled,
body.portal [data-ui3-reject="on"] .progress-reject-button:disabled{
  border:0 !important; background:none !important; color:#b8bec9 !important;
  border-bottom:1px dashed #cfd5df !important; box-shadow:none !important;
}
/* 差し戻しモードの間は、その表であることが分かるようにふちを赤に寄せる */
body.portal .panel[data-ui3-reject="on"]{
  border-color:var(--r-red-line) !important;
  box-shadow:0 2px 0 #f4e2e4, 0 4px 16px rgba(214,48,49,.10) !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;
}
/* 表の中の差し戻しは文字のまま（デモでも同じ見た目） */
body.portal [data-ui3-reject="on"] .btn.sm.danger.progress-reject-button:disabled[title*="デモ"],
body.portal [data-ui3-reject="on"] .progress-reject-button:disabled[title*="デモ"]{
  border:0 !important; border-bottom:1px solid currentColor !important;
  background:none !important; color:var(--r-red) !important;
  box-shadow:none !important; cursor:default !important;
}
body.portal [data-ui3-reject="on"] .btn.sm.danger.progress-reject-button:disabled[title*="デモ"]:hover,
body.portal [data-ui3-reject="on"] .progress-reject-button:disabled[title*="デモ"]:hover{
  color:var(--r-red-dark) !important; background:var(--r-red-soft) !important; transform:none !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;
}

/* ---- 表の中の差し戻しは記号のボタン（文字は出さない）---- */
body.portal [data-ui3-reject="on"] .btn.sm.danger.progress-reject-button,
body.portal [data-ui3-reject="on"] .progress-reject-button{
  display:inline-flex !important; align-items:center !important; justify-content:center !important;
  width:26px !important; min-width:26px !important; height:26px !important; min-height:26px !important;
  margin:0 0 0 8px !important; padding:0 !important;
  border:1px solid var(--r-red-line) !important; border-radius:50% !important;
  background:#fff !important; background-image:none !important;
  color:var(--r-red) !important; font-size:14px !important; font-weight:800 !important; line-height:1 !important;
  box-shadow:0 2px 0 #f4e3e5 !important; vertical-align:middle !important;
}
body.portal [data-ui3-reject="on"] .btn.sm.danger.progress-reject-button:hover,
body.portal [data-ui3-reject="on"] .progress-reject-button:hover,
body.portal [data-ui3-reject="on"] .progress-reject-button:disabled[title*="デモ"]:hover{
  border-color:transparent !important; color:#fff !important;
  background:linear-gradient(135deg,var(--r-red),var(--r-red-lt)) !important;
  transform:translateY(-2px) !important; box-shadow:0 4px 0 var(--r-red-sh) !important;
}
body.portal [data-ui3-reject="on"] .btn.sm.danger.progress-reject-button:active,
body.portal [data-ui3-reject="on"] .progress-reject-button:active{
  transform:translateY(1px) !important; box-shadow:0 1px 0 var(--r-red-sh) !important;
}
body.portal [data-ui3-reject="on"] .btn.sm.danger.progress-reject-button:disabled,
body.portal [data-ui3-reject="on"] .progress-reject-button:disabled{
  border:1px dashed #e2c9cc !important; background:#fff !important;
  color:#d99a9f !important; box-shadow:none !important; transform:none !important;
}
body.portal [data-ui3-reject="on"] .btn.sm.danger.progress-reject-button:disabled[title*="デモ"],
body.portal [data-ui3-reject="on"] .progress-reject-button:disabled[title*="デモ"]{
  border:1px solid var(--r-red-line) !important; color:var(--r-red) !important;
  box-shadow:0 2px 0 #f4e3e5 !important; cursor:default !important;
}

/* ---- 保存は本文の右上に固定（上の情報バーには入れない・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; }
/* 上部バーへ移した「履歴」（data-ui3-bar-extra）。保存の左に白抜きで並べる（2026-09-07）。 */
body.portal #ui3BarRight > .ui3-bar-extra{
  min-height:36px !important; padding:7px 18px !important; margin-right:8px !important;
  border-radius:999px !important; font-size:13px !important; font-weight:700 !important; white-space:nowrap !important;
  background:#fff !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;
}
body.portal #ui3BarRight > .ui3-bar-extra:hover{ background:#f7f6ff !important; transform:translateY(-2px) !important; }
/* 履歴が上のバーへ移ったので、元の置き場の空の列は出さない */
body.portal #historyBar:empty, body.portal #historyBar:not(:has(button)){ display:none !important; }

/* 本人記入の履歴の表（2026-09-07 実機指摘）: 日時・種別は小さく、主役は内容。内容は左そろえで折り返す。 */
body.portal .person-history-table td{ vertical-align:top !important; }
body.portal .person-history-table th:nth-child(1), body.portal .person-history-table td.person-history-when{
  width:9.5em !important; white-space:nowrap !important; text-align:left !important; font-size:12px !important; color:#5f6b7a !important;
}
body.portal .person-history-table th:nth-child(2), body.portal .person-history-table td.person-history-kind-cell{
  width:11em !important; white-space:normal !important; overflow-wrap:anywhere !important; text-align:left !important; font-size:12px !important;
}
body.portal .person-history-table .person-history-by{
  display:block !important; margin:4px 0 0 !important; color:#5f6b7a !important;
  white-space:normal !important; overflow-wrap:anywhere !important;
}
body.portal .person-history-table th:nth-child(3), body.portal .person-history-table td.person-history-what{ text-align:left !important; }
body.portal .person-history-what .person-history-text, body.portal .person-history-what .person-history-comment{
  margin:0 !important; white-space:pre-wrap !important; line-height:1.7 !important; color:#1b2530 !important; text-align:left !important;
}
body.portal .person-history-what .person-history-text + .person-history-comment{ margin-top:6px !important; }
/* 2026-09-08 実機（非管理者面）: 上の「最後の列は 1%」「先頭の列は 22%」「一覧の表は全列 auto・nowrap・省略」の
   規則が履歴の表にも当たり、内容が 1 文字幅に潰れて縦書きになった。履歴の表だけはそれらより強い選択子で
   「日時・種別は狭く、残り全部が内容・折り返す」に戻す（`.tbl` 付きで書いて一覧の規則の特異度に勝つ）。 */
body.portal table.tbl.person-history-table,
body.portal .list-panel table.tbl.person-history-table{
  table-layout:fixed !important; width:100% !important; min-width:0 !important;
}
body.portal table.tbl.person-history-table > thead > tr > th:nth-child(1),
body.portal table.tbl.person-history-table > tbody > tr > td.person-history-when{
  width:10.5em !important; min-width:0 !important; white-space:nowrap !important; overflow:visible !important;
}
body.portal table.tbl.person-history-table > thead > tr > th:nth-child(2),
body.portal table.tbl.person-history-table > tbody > tr > td.person-history-kind-cell{
  width:12em !important; min-width:0 !important; white-space:normal !important; overflow:visible !important; overflow-wrap:anywhere !important;
}
body.portal table.tbl.person-history-table > thead > tr > th:nth-child(3),
body.portal table.tbl.person-history-table > thead > tr > th[data-ui3-col]:last-child,
body.portal table.tbl.person-history-table > tbody > tr > td.person-history-what,
body.portal table.tbl.person-history-table > tbody > tr > td[data-ui3-col]:last-child{
  width:auto !important; min-width:0 !important; max-width:none !important; text-align:left !important;
  white-space:pre-wrap !important; overflow:visible !important; text-overflow:clip !important;
}
/* 履歴の列見出しは「日時・種別・内容」を同じ書式に揃え、本文より一段大きくする。 */
body.portal .person-history-table thead th{
  font-size:15px !important; font-weight:800 !important; color:#2f3742 !important;
  text-align:left !important;
}
body.portal .person-history-table td.person-history-kind-cell{
  font-size:14px !important; font-weight:400 !important; color:#2f3742 !important;
}
body.portal .person-history-table .person-history-kind{
  padding:5px 12px !important; font-size:14px !important; font-weight:800 !important;
  line-height:1.35 !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; }

/* ---- 本文の中身の幅で外枠が伸びないようにする（左メニューまで一緒に流れるのを防ぐ）---- */
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 利用者指示: 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 利用者指示）: 状態・提出できるかの理由・提出ボタンだけを 1 段に ---- */
body.portal #submissionPanel{
  display:grid !important; grid-template-columns:minmax(0,1fr) auto !important;
  align-items:center !important; gap:8px 20px !important;
  padding:12px 16px !important;
}
body.portal #submissionPanel > .panel-title[data-ui3-submit-head]{
  grid-column:1 !important; margin:0 !important; padding:0 !important;
  display:flex !important; align-items:center !important; gap:8px !important;
  border:0 !important; background:none !important; font-size:13px !important;
}
/* 「差し戻し」だけが置かれていて何のことか分からなかったので、何の状態かを名乗る */
body.portal #submissionPanel > .panel-title[data-ui3-submit-head]::before{
  content:''; display:none;
  font-size:11px !important; font-weight:800 !important; letter-spacing:.06em !important;
  color:#8a94a6 !important;
}
body.portal #submissionPanel > .panel-title[data-ui3-submit-head] > span{ font-size:13px !important; }
body.portal #submissionPanel > .panel-title[data-ui3-submit-head]:has(> span:empty){ display:none !important; }
body.portal #submissionPanel > .notice{
  grid-column:1 !important; margin:0 !important; padding:9px 14px !important;
  font-size:13px !important; line-height:1.5 !important; border-radius:10px !important;
}
body.portal #submissionPanel > .btn-row,
body.portal #submissionPanel > #ui3ActionCol{
  grid-column:2 !important; grid-row:1 / -1 !important;
  margin:0 !important; align-self:center !important; justify-self:end !important;
  display:flex !important; align-items:center !important;
}
/* 主体は提出ボタン。面の中で一番大きく・一番強い色にする */
body.portal #submissionPanel #ui3ActionCol #btnSubmitPerson.btn,
body.portal #submissionPanel #btnSubmitPerson.btn{
  min-height:48px !important; padding:12px 38px !important;
  font-size:15.5px !important; font-weight:800 !important; border-radius:999px !important;
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  color:#fff !important; border:0 !important;
  box-shadow:0 4px 0 var(--r-purple-sh), 0 10px 22px rgba(108,92,231,.28) !important;
}
body.portal #submissionPanel #ui3ActionCol #btnSubmitPerson.btn:hover:not(:disabled),
body.portal #submissionPanel #btnSubmitPerson.btn:hover:not(:disabled){
  transform:translateY(-2px) !important;
  box-shadow:0 6px 0 var(--r-purple-sh), 0 14px 26px rgba(108,92,231,.3) !important;
}
body.portal #submissionPanel #ui3ActionCol #btnSubmitPerson.btn:active:not(:disabled),
body.portal #submissionPanel #btnSubmitPerson.btn:active:not(:disabled){
  transform:translateY(2px) !important; box-shadow:0 2px 0 var(--r-purple-sh) !important;
}
body.portal #submissionPanel #ui3ActionCol #btnSubmitPerson.btn:disabled,
body.portal #submissionPanel #btnSubmitPerson.btn:disabled{
  background:#eceaf6 !important; color:#9aa2b1 !important;
  box-shadow:0 3px 0 #dfdcea !important; transform:none !important;
}
/* 理由は補助。ボタンの存在感を食わないよう淡く・幅を抑える */
body.portal #submissionPanel > .notice{ max-width:820px !important; }
/* 状態は文字ではなくバッジで読ませる（提出済み＝緑 / 差し戻し＝赤 / 未提出＝灰） */
body.portal #submissionPanel #taskPersonStatus .pill,
body.portal #submissionPanel #taskPersonStatus .status-badge{
  font-size:12.5px !important; padding:3px 12px !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 > .users-count, body.portal .filter-bar .muted-sm{ 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 .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）----
   ロール列の「保存が読む控えの 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;
}

/* ---- 提出の面（2026-08-26 再設計・利用者指示）----
   ここで決めるのは「提出状況」と「目標レビュー」だけ。差し戻しの説明文は出さない
   （状態バッジで足りる）。提出ボタンを一番目立たせ、常に押せる状態にする。 */
body.portal #submissionPanel > #submitStateBanner{ display:none !important; }
body.portal #submissionPanel{
  grid-template-columns:minmax(0,1fr) auto !important; gap:10px 24px !important;
  padding:14px 18px !important;
}
body.portal #submissionPanel > .panel-title[data-ui3-submit-head]{
  display:flex !important; align-items:center !important; gap:10px !important;
}
body.portal #submissionPanel #taskPersonStatus .status-badge,
body.portal #submissionPanel #taskPersonStatus .pill{
  font-size:13px !important; padding:4px 14px !important; font-weight:800 !important;
}
body.portal #submissionPanel > .notice{
  max-width:none !important; font-size:12.5px !important; padding:8px 14px !important;
}
body.portal #submissionPanel #ui3ActionCol #btnSubmitPerson.btn,
body.portal #submissionPanel #btnSubmitPerson.btn{
  min-height:52px !important; padding:14px 44px !important; font-size:16px !important;
  opacity:1 !important; cursor:pointer !important; pointer-events:auto !important;
  background:linear-gradient(135deg,var(--r-purple),var(--r-purple-lt)) !important;
  color:#fff !important; border:0 !important;
  box-shadow:0 4px 0 var(--r-purple-sh), 0 12px 24px rgba(108,92,231,.3) !important;
}

/* ---- 提出の面（2026-08-26 再設計）: 左に「状況と理由」右に提出ボタン ---- */
body.portal #submissionPanel{
  grid-template-columns:minmax(0,1fr) auto !important; gap:6px 28px !important;
  padding:14px 18px !important;
}
body.portal #submissionPanel > .panel-title[data-ui3-submit-head]{
  display:flex !important; align-items:center !important; gap:10px !important; grid-row:1 !important;
}
body.portal #submissionPanel .ui3-sublabel{
  font-size:11px !important; font-weight:800 !important; letter-spacing:.08em !important;
  color:#8a94a6 !important; white-space:nowrap !important;
}
/* 差し戻しなどの理由は「文」として読ませる（黄色い箱はやめる） */
body.portal #submissionPanel > #submitStateBanner{
  display:block !important; grid-column:1 !important;
  background:transparent !important; border:0 !important; box-shadow:none !important;
  padding:0 !important; margin:0 !important;
  font-size:13px !important; line-height:1.55 !important; color:#41505f !important;
}
/* 目標レビューの状態は 1 行のチップ（済み＝緑 / 要対応＝橙） */
body.portal #submissionPanel > .notice:empty{ display:none !important; }
body.portal #submissionPanel > #goalReviewBanner:not(:empty),
body.portal #submissionPanel > #achievementReviewBanner:not(:empty){
  display:inline-flex !important; align-items:center !important; gap:6px !important;
  grid-column:1 !important; width:fit-content !important; max-width:100% !important;
  margin:2px 0 0 !important; padding:4px 12px !important; border-radius:999px !important;
  font-size:12px !important; font-weight:700 !important; line-height:1.4 !important;
  background:var(--r-amber-soft) !important; border:1px solid var(--r-amber-line) !important;
  color:#7d6118 !important; box-shadow:none !important;
}
body.portal #submissionPanel > #goalReviewBanner[data-ui3-ok="1"]{
  background:var(--r-green-soft) !important; border-color:var(--r-green-line) !important;
  color:#1d7a63 !important;
}
/* 提出ボタンは面の中で唯一の主役 */
body.portal #submissionPanel #ui3ActionCol #btnSubmitPerson.btn,
body.portal #submissionPanel #btnSubmitPerson.btn{
  min-height:54px !important; padding:15px 46px !important; font-size:16.5px !important;
  letter-spacing:.02em !important;
}

body.portal #submissionPanel > .notice:empty{ display:none !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 利用者指示）----
   中央そろえの規則（td > .btn）に負けて出てしまっていたので、同じ強さで打ち消す。 */
body.portal .tbl td[data-ui3-col]:last-child > .progress-reject-button,
body.portal .review-table td[data-ui3-col]:last-child > .progress-reject-button,
body.portal .tbl td[data-ui3-col="state"] > .progress-reject-button,
body.portal .review-table td[data-ui3-col="state"] > .progress-reject-button,
body.portal .tbl td[data-ui3-col="action"] > .progress-reject-button,
body.portal .review-table td[data-ui3-col="action"] > .progress-reject-button{
  display:none !important;
}
body.portal [data-ui3-reject="on"] .tbl td[data-ui3-col]:last-child > .progress-reject-button,
body.portal [data-ui3-reject="on"] .review-table td[data-ui3-col]:last-child > .progress-reject-button,
body.portal [data-ui3-reject="on"] .tbl td[data-ui3-col="state"] > .progress-reject-button,
body.portal [data-ui3-reject="on"] .review-table td[data-ui3-col="state"] > .progress-reject-button,
body.portal [data-ui3-reject="on"] .tbl td[data-ui3-col="action"] > .progress-reject-button,
body.portal [data-ui3-reject="on"] .review-table td[data-ui3-col="action"] > .progress-reject-button{
  display:inline-flex !important;
}

/* ---- 評価対象者一覧の 4 つのタブ: 列幅を均等にして、タブを切り替えても列がずれない ----
   （2026-08-26 利用者指示）表ごとに列の数が違うので、割合ではなく等分で決める。 */
body.portal .list-panel table.tbl{ table-layout:fixed !important; width:100% !important; }
body.portal .list-panel table.tbl th,
body.portal .list-panel table.tbl td{
  width:auto !important; min-width:0 !important; max-width:none !important;
  overflow:hidden !important; text-overflow:ellipsis !important;
}
body.portal .list-panel table.tbl td[data-ui3-col="name"],
body.portal .list-panel table.tbl th[data-ui3-col="name"]{ text-align:left !important; }
body.portal .list-panel table.tbl td[data-ui3-col="text"],
body.portal .list-panel table.tbl th[data-ui3-col="text"]{ text-align:left !important; }

/* 最終評価のコメントは参照と入力を続けて 1 まとまりに見せる（2026-08-26 利用者指示） */
body.portal #finalRefArea{ margin-bottom:0 !important; }
body.portal #finalStageCommentPanel{ margin-top:8px !important; }
body.portal #finalStageCommentPanel .field-rw > textarea{ min-height:90px !important; }

/* 部門の評価（評価状況・評価結果）の表も列幅を均等にする（2026-08-26 利用者指示） */
body.portal section[data-view="managerDashboard"] table.tbl,
body.portal section[data-view="managerDashboard"] table.review-table{
  table-layout:fixed !important; width:100% !important;
}
body.portal section[data-view="managerDashboard"] table.tbl th,
body.portal section[data-view="managerDashboard"] table.tbl td,
body.portal section[data-view="managerDashboard"] table.review-table th,
body.portal section[data-view="managerDashboard"] table.review-table td{
  width:auto !important; min-width:0 !important; max-width:none !important;
  overflow:hidden !important; text-overflow:ellipsis !important;
}

/* ---- 列幅の等分を最後の列にも効かせる（2026-08-26 修正）----
   先の「最後の列は内容幅」規則は :has(#publicBody) の id で強かったため、
   等分する画面では同じ強さ（id を含む選択子）で打ち消す。table-layout:fixed では
   min-width が効かないので width も auto に戻す。 */
body.portal .list-panel table th[data-ui3-col]:last-child,
body.portal .list-panel table td[data-ui3-col]:last-child,
body.portal section[data-view="managerDashboard"] table th[data-ui3-col]:last-child,
body.portal section[data-view="managerDashboard"] table td[data-ui3-col]:last-child{
  width:auto !important; min-width:0 !important; text-align:center !important;
}
/* 中身がセルからはみ出さないようにする */
body.portal .list-panel table.tbl td > .btn,
body.portal .list-panel table.tbl td > button,
body.portal section[data-view="managerDashboard"] table td > .btn,
body.portal section[data-view="managerDashboard"] table td > button{
  max-width:100% !important;
}

/* ---- 等分は「割合で均す」方式にする（2026-08-26 利用者指示）----
   固定レイアウトだと狭い窓で中身が潰れるだけで横スクロールが出ない。
   すべての列に同じ割合＋下限幅を与えると、広い画面では等分、狭い画面では横スクロールになる。 */
body.portal .list-panel table.tbl,
body.portal section[data-view="managerDashboard"] table.tbl,
body.portal section[data-view="managerDashboard"] table.review-table{
  table-layout:auto !important; width:100% !important;
}
body.portal .list-panel table.tbl th,
body.portal .list-panel table.tbl td,
body.portal section[data-view="managerDashboard"] table.tbl th,
body.portal section[data-view="managerDashboard"] table.tbl td,
body.portal section[data-view="managerDashboard"] table.review-table th,
body.portal section[data-view="managerDashboard"] table.review-table td{
  width:16% !important; min-width:112px !important; max-width:none !important;
  overflow:visible !important; text-overflow:clip !important;
}
body.portal .list-panel table.tbl th[data-ui3-col="name"],
body.portal .list-panel table.tbl td[data-ui3-col="name"],
body.portal section[data-view="managerDashboard"] table th[data-ui3-col="name"],
body.portal section[data-view="managerDashboard"] table td[data-ui3-col="name"]{
  min-width:132px !important; text-align:left !important;
}
/* 最後の列（操作）も同じ割合で並ぶ */
body.portal .list-panel table th[data-ui3-col]:last-child,
body.portal .list-panel table td[data-ui3-col]:last-child,
body.portal section[data-view="managerDashboard"] table th[data-ui3-col]:last-child,
body.portal section[data-view="managerDashboard"] table td[data-ui3-col]:last-child{
  width:16% !important; min-width:112px !important; text-align:center !important;
}
/* 狭い窓では横スクロールで届くようにする */
body.portal .list-panel .tbl-wrap,
body.portal section[data-view="managerDashboard"] .tbl-wrap,
body.portal section[data-view="managerDashboard"] .table-scroll{
  overflow-x:auto !important; overflow-y:auto !important;
}

/* ---- 等分は属性付きの選択子で書く（打ち消し規則に負けないように・2026-08-26 修正）---- */
body.portal .list-panel table.tbl th[data-ui3-col],
body.portal .list-panel table.tbl td[data-ui3-col],
body.portal section[data-view="managerDashboard"] table.tbl th[data-ui3-col],
body.portal section[data-view="managerDashboard"] table.tbl td[data-ui3-col],
body.portal section[data-view="managerDashboard"] table.review-table th[data-ui3-col],
body.portal section[data-view="managerDashboard"] table.review-table td[data-ui3-col]{
  width:16% !important; min-width:112px !important; max-width:none !important;
}
body.portal .list-panel table.tbl th[data-ui3-col="name"],
body.portal .list-panel table.tbl td[data-ui3-col="name"],
body.portal section[data-view="managerDashboard"] table th[data-ui3-col="name"],
body.portal section[data-view="managerDashboard"] table td[data-ui3-col="name"]{
  width:16% !important; min-width:132px !important; text-align:left !important;
}
body.portal .list-panel table th[data-ui3-col]:last-child,
body.portal .list-panel table td[data-ui3-col]:last-child,
body.portal section[data-view="managerDashboard"] table th[data-ui3-col]:last-child,
body.portal section[data-view="managerDashboard"] table td[data-ui3-col]:last-child{
  width:16% !important; min-width:112px !important; text-align:center !important;
}

/* 記入ページの操作行: 左＝戻る・差し戻し / 右＝提出（2026-08-26 利用者指示） */
body.portal [data-ui3-actions="1"]{
  display:flex !important; align-items:center !important; gap:10px !important;
  flex-wrap:wrap !important; width:100% !important;
}
body.portal [data-ui3-actions="1"] [data-ui3-act="back"]{ order:1 !important; }
body.portal [data-ui3-actions="1"] [data-ui3-act="reject"]{ order:2 !important; }
body.portal [data-ui3-actions="1"] [data-ui3-act="submit"]{ order:9 !important; margin-left:auto !important; }
body.portal .page-head .btn-row:empty{ display:none !important; }

/* 最終評価対象者一覧のページは持たない（2026-08-26 利用者指示）。評価対象者一覧の「最終評価」タブに統合。 */
body.portal section[data-view="final"]{ display:none !important; }

/* ---- 等分は属性の有無に関わらず全セルに効かせる（2026-08-26 修正）----
   列の性質の印（data-ui3-col）が付いていないセルだけ content 幅になり、
   最終評価・最終目標だけ狭くなっていた。 */
body.portal section[data-view="managerDashboard"] table.tbl > thead > tr > th,
body.portal section[data-view="managerDashboard"] table.tbl > tbody > tr > td,
body.portal section[data-view="managerDashboard"] table.review-table > thead > tr > th,
body.portal section[data-view="managerDashboard"] table.review-table > tbody > tr > td,
body.portal .list-panel table.tbl > thead > tr > th,
body.portal .list-panel table.tbl > tbody > tr > td{
  width:16% !important; min-width:112px !important; max-width:none !important;
}

/* 一次評価のコメント: 参照と記入を続けて 1 まとまりに見せる（2026-08-26 利用者指示） */
body.portal section[data-view="eval1"] .panel-primary-eval{ margin-top:8px !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 .list-panel table.tbl,
body.portal section[data-view="managerDashboard"] table.tbl,
body.portal section[data-view="managerDashboard"] table.review-table{
  table-layout:fixed !important; width:100% !important; min-width:1040px !important;
}
body.portal .list-panel table.tbl > thead > tr > th,
body.portal .list-panel table.tbl > tbody > tr > td,
body.portal .list-panel table.tbl th[data-ui3-col],
body.portal .list-panel table.tbl td[data-ui3-col],
body.portal section[data-view="managerDashboard"] table.tbl > thead > tr > th,
body.portal section[data-view="managerDashboard"] table.tbl > tbody > tr > td,
body.portal section[data-view="managerDashboard"] table.tbl th[data-ui3-col],
body.portal section[data-view="managerDashboard"] table.tbl td[data-ui3-col],
body.portal section[data-view="managerDashboard"] table.review-table > thead > tr > th,
body.portal section[data-view="managerDashboard"] table.review-table > tbody > tr > td,
body.portal section[data-view="managerDashboard"] table.review-table th[data-ui3-col],
body.portal section[data-view="managerDashboard"] table.review-table td[data-ui3-col]{
  width:auto !important; min-width:0 !important; max-width:none !important;
  white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important;
}
body.portal .list-panel .tbl-wrap,
body.portal section[data-view="managerDashboard"] .tbl-wrap,
body.portal section[data-view="managerDashboard"] .table-scroll{
  overflow-x:auto !important;
}
/* 中身（札・ボタン）は列からはみ出さない */
body.portal .list-panel table.tbl td > *,
body.portal section[data-view="managerDashboard"] table td > *{
  max-width:100% !important;
}

/* ---- 最後の列も等分に（2026-08-26 修正: :has(#publicBody) の id 特異度に勝てるよう同型で書く）---- */
body.portal .list-panel table th[data-ui3-col]:last-child,
body.portal .list-panel table td[data-ui3-col]:last-child,
body.portal section[data-view="managerDashboard"] table th[data-ui3-col]:last-child,
body.portal section[data-view="managerDashboard"] table td[data-ui3-col]:last-child,
body.portal .list-panel table > thead > tr > th:last-child,
body.portal .list-panel table > tbody > tr > td:last-child,
body.portal section[data-view="managerDashboard"] table > thead > tr > th:last-child,
body.portal section[data-view="managerDashboard"] table > tbody > tr > td:last-child{
  width:auto !important; min-width:0 !important; text-align:center !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 修正）----
   入れ物の無い表で 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;
}

/* ---- 等分の表: 全列 auto（固定レイアウトで構造的に等分）---- */
body.portal .list-panel table.tbl > thead > tr > th,
body.portal .list-panel table.tbl > tbody > tr > td,
body.portal section[data-view="managerDashboard"] table.tbl > thead > tr > th,
body.portal section[data-view="managerDashboard"] table.tbl > tbody > tr > td,
body.portal section[data-view="managerDashboard"] table.review-table > thead > tr > th,
body.portal section[data-view="managerDashboard"] table.review-table > tbody > tr > td{
  width:auto !important; min-width:0 !important; max-width: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 ===== */
