/* Explicit opt-in: preserves existing filter axes, events and module colours. */
/* Native calendar/clock controls on dark portal pages, including body-level
   modals and controls inserted after load. Keep custom SVG and chart colours. */
body:has(.portal-ui-standard) input:is([type="date"], [type="month"], [type="week"], [type="time"], [type="datetime-local"]) {
  color-scheme: dark;
}
body:has(.portal-ui-standard) input:is([type="date"], [type="month"], [type="week"], [type="time"], [type="datetime-local"])::-webkit-calendar-picker-indicator {
  filter: none;
}
.portal-ui-standard {
  /* 2026-09-19 §8-12/13: 部品間の間隔（8px スケール）とタッチ領域 */
  --portal-ui-gap: 8px;
  --portal-ui-gap-tight: 6px;
  --portal-ui-gap-section: 16px;
  --portal-ui-label-gap: 8px;
  --portal-ui-touch-target: 44px;
  --portal-ui-control-height: 32px;
  --portal-ui-control-radius: 6px;
  --portal-ui-text-size: 14px;
  --portal-ui-font: -apple-system, BlinkMacSystemFont, 'Noto Sans JP', sans-serif;
  --portal-ui-heading-size: 24px;
  --portal-ui-section-size: 18px;
  --portal-ui-muted: #9cabb9;
  font-family: var(--font-primary, -apple-system, BlinkMacSystemFont, sans-serif);
}
/* Page-level opt-in. Existing chart, module-state and lineage selectors retain control. */
.main-content.portal-ui-standard,
.content.portal-ui-standard {
  min-width: 0;
  font-family: var(--portal-ui-font);
  font-size: var(--portal-ui-text-size);
  line-height: 1.7;
}
.portal-ui-standard .page-title { font-size: var(--portal-ui-heading-size); line-height: 1.4; }
.portal-ui-standard .section { padding: 20px; border-color: #253c4d; border-radius: 14px; }
.portal-ui-standard .section-card { padding: 20px; border-color: #253c4d; border-radius: 14px; }
.portal-ui-standard > .card { padding: 20px; border-color: #253c4d; border-radius: 14px; }
.portal-ui-standard > .card > .card-header h2 { font-size: var(--portal-ui-section-size); line-height: 1.4; }
.portal-ui-standard > .card > .card-header { flex-wrap: wrap; gap: 12px; }
.portal-ui-standard .section-card > h3 { font-size: var(--portal-ui-section-size); line-height: 1.4; }
.portal-ui-standard .section-title { font-size: var(--portal-ui-section-size); line-height: 1.4; }
.portal-ui-standard .section-header { gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }
.portal-ui-standard .filter-bar { gap: 12px; padding: 12px 16px; border-color: #294555; border-radius: 12px; }
.portal-ui-standard .filter-select,
.portal-ui-standard .filter-input,
.portal-ui-standard .filter-bar > button {
  min-height: var(--portal-ui-control-height);
  max-width: 100%;
  font-family: var(--portal-ui-font);
  font-size: 12px !important;
  border-radius: var(--portal-ui-control-radius);
}
.portal-ui-standard .filter-input,
.portal-ui-standard .filter-select { background: #07131d; color: #f4f8fc; border: 1px solid #30485a; }
.portal-ui-standard .form-group > label { font-size: var(--portal-ui-text-size); line-height: 1.5; }
.portal-ui-standard .form-group > input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.portal-ui-standard .form-group > select {
  min-height: var(--portal-ui-control-height);
  font-family: var(--portal-ui-font);
  font-size: var(--portal-ui-text-size);
  border-radius: var(--portal-ui-control-radius);
}
.portal-ui-standard .data-table .num,
.portal-ui-standard .kpi-value { font-variant-numeric: tabular-nums; }
.portal-ui-standard .section-header .btn,
.portal-ui-standard [data-master-search] {
  min-height: var(--portal-ui-control-height);
  font-family: var(--portal-ui-font);
  font-size: var(--portal-ui-text-size);
  border-radius: var(--portal-ui-control-radius);
}
.portal-ui-standard [data-master-search] {
  background: #07131d;
  color: #f4f8fc;
  border: 1px solid #30485a;
}
.portal-ui-standard .section-header .btn { justify-content: center; }
.portal-ui-standard .zone { padding: 20px; border-color: #253c4d; border-radius: 14px; }
.portal-ui-standard .zone-head { flex-wrap: wrap; gap: 12px; align-items: center; }
.portal-ui-standard .zone-label { min-width: 0; }
.portal-ui-standard .zone-name { font-size: var(--portal-ui-section-size); line-height: 1.4; }
.portal-ui-standard .zone-sub,
.portal-ui-standard .src-sub,
.portal-ui-standard .mod-perspective { font-size: 12px; line-height: 1.6; color: var(--portal-ui-muted); }
.portal-ui-standard .src-card,
.portal-ui-standard .mod-card { min-width: 0; border-radius: 12px; }
.portal-ui-standard .src-name { font-size: 14px; }
.portal-ui-standard .mod-name { font-size: 16px; line-height: 1.5; }
.portal-ui-standard .src-count,
.portal-ui-standard .mod-kpi-val,
.portal-ui-standard .mod-kpi-row .val { font-variant-numeric: tabular-nums; }
.portal-ui-standard .scope-chip,
.portal-ui-standard .scope-person,
.portal-ui-standard .page-header button,
.portal-ui-standard #orgPageLink {
  min-height: var(--portal-ui-control-height);
  font-family: var(--portal-ui-font) !important;
  font-size: 12px !important;
  line-height: 1.5;
  border-radius: var(--portal-ui-control-radius);
}
.portal-ui-standard a:focus-visible,
.portal-ui-standard input:focus-visible,
.portal-ui-standard select:focus-visible { outline: 2px solid #70d2e6; outline-offset: 3px; }
@media (max-width: 640px) {
  .portal-ui-standard .section { padding: 16px; }
  .portal-ui-standard .section-card { padding: 16px; }
  .portal-ui-standard > .card { padding: 16px; }
  .portal-ui-standard > .card > .card-header h2 { font-size: 18px; }
  .portal-ui-standard .section-card > h3 { font-size: 18px; }
  .portal-ui-standard .section-title { font-size: 18px; }
  .portal-ui-standard .zone { padding: 16px; }
  .portal-ui-standard .zone-name { font-size: 18px; }
  .portal-ui-standard .page-header { flex-wrap: wrap; }
}
.portal-ui-standard .ztt-filter-bar {
  display: inline-flex;
  width: fit-content;
  max-width: 100%;
  box-sizing: border-box;
  padding: 4px 6px;
  border-color: #294555;
  border-radius: 12px;
  background: #0b1923;
}
.portal-ui-standard .ztt-filter-bar > div { gap: 12px !important; }
.portal-ui-standard .ztt-filter-bar button,
.portal-ui-standard #periodLabel {
  min-height: 32px;
  height:32px;
  font-family: inherit !important;
  font-size: 12px !important;
  line-height: 1.5 !important;
}
.portal-ui-standard #periodLabel {
  min-width: 88px !important;
  padding: 3px 6px !important;
  box-sizing: border-box;
  font-variant-numeric: tabular-nums;
}
.portal-ui-standard #periodPrev,
.portal-ui-standard #periodNext { min-width: 32px; width:32px; padding:3px !important; border-radius: var(--portal-ui-control-radius) !important; }
.portal-ui-standard #scopeButton,
.portal-ui-standard #ccsButton { padding: 3px 8px !important; border-radius: var(--portal-ui-control-radius) !important; }
.portal-ui-standard button:focus-visible {
  outline: 2px solid #70d2e6;
  outline-offset: 3px;
}
.portal-ui-standard .ztt-filter-bar div:has(> #periodSelect:focus-visible) {
  outline: 2px solid #70d2e6;
  outline-offset: 3px;
  border-radius: var(--portal-ui-control-radius);
}
@media (max-width: 480px) {
  .portal-ui-standard .ztt-filter-bar { padding: 4px 6px; }
  .portal-ui-standard .ztt-filter-bar > div { gap: 8px !important; }
}

/* Body-first page chrome. Scope summaries to the page root, never charts or forms. */
.portal-ui-standard .page-header {
  margin-bottom: 12px;
  gap: 8px 12px;
}
.portal-ui-standard .page-title {
  font-size: 24px;
  line-height: 1.35;
  margin-top: 0;
  margin-bottom: 4px;
}
.portal-ui-standard .page-subtitle {
  font-size: 13px;
  line-height: 1.5;
  margin-top: 0;
  margin-bottom: 8px;
}
.portal-ui-standard .page-header .page-subtitle { margin-bottom: 0; }
.portal-ui-standard > .stats-grid,
.portal-ui-standard > .kpi-grid,
.portal-ui-standard > .summary-cards {
  gap: 8px;
  margin-bottom: 12px;
}
.portal-ui-standard > .stats-grid > .stat-card,
.portal-ui-standard > .kpi-grid > .kpi-card,
.portal-ui-standard > .summary-cards > .summary-card {
  padding: 10px 12px;
  min-height: 0;
}
.portal-ui-standard > .stats-grid .stat-value,
.portal-ui-standard > .kpi-grid .kpi-value,
.portal-ui-standard > .summary-cards .summary-value {
  font-size: 22px;
  line-height: 1.35;
  margin-block: 4px;
}
.portal-ui-standard .filter-bar { padding: 6px 8px; gap: 8px 12px; margin-bottom: 12px; }
.portal-ui-standard .ztt-filter-bar { margin-bottom: 8px; }
@media (max-width: 640px) {
  .portal-ui-standard .page-title { font-size: 20px; }
}

/* Expense workspace: title and scope share a row; analysis belongs to the list. */
.portal-ui-standard .expense-toolbar { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px 16px; margin-bottom:8px; }
.portal-ui-standard .expense-toolbar .page-header { margin:0; }
.portal-ui-standard .expense-toolbar #commonFilter { position:static; margin:0; padding:0; background:none; backdrop-filter:none; }
.portal-ui-standard .expense-toolbar .ztt-filter-bar { margin:0; }
.portal-ui-standard #expense-stats { display:block; margin-bottom:8px; }
.portal-ui-standard #expense-stats > .stat-card { display:flex; align-items:center; flex-wrap:wrap; gap:6px 16px; padding:8px 12px; }
.portal-ui-standard #expense-stats .stat-label,
.portal-ui-standard #expense-stats .stat-value { margin:0; }
.portal-ui-standard #expense-stats .stat-value { font-size:20px; }
.portal-ui-standard #expense-table-section { padding:12px; margin-bottom:12px; }
.portal-ui-standard #expense-table-section > .section-header { margin-bottom:8px; }
.portal-ui-standard #expense-table-section > .section-header > div { flex-wrap:wrap; }
.portal-ui-standard #expense-category-section { padding:0; margin:0 0 8px; border:0; background:none; }
.portal-ui-standard #expense-category-section > .section-header { min-height:32px; margin:0; justify-content:flex-start; gap:12px; }
.portal-ui-standard #expense-category-section .section-title { font-size:13px; margin:0; }
.portal-ui-standard #expense-category-body { padding:12px 0; }
.portal-ui-standard #expense-table-container { padding:0 !important; }

/* Portal-wide workspace hierarchy: compact context, visible working content. */
.portal-ui-standard .portal-workspace-heading {
  display:flex; align-items:center; flex-wrap:wrap; gap:4px 16px; margin-bottom:10px;
}
.portal-ui-standard .portal-workspace-heading > .page-header { flex:1 1 260px; margin:0; }
.portal-ui-standard .portal-workspace-heading > .page-title,
.portal-ui-standard .portal-workspace-heading > .page-subtitle { margin:0; }
.portal-ui-standard .portal-workspace-heading > #commonFilter {
  position:static; margin:0 0 0 auto; padding:0; background:none; backdrop-filter:none;
}
.portal-ui-standard .portal-workspace-heading .ztt-filter-bar { margin:0; }
.portal-ui-standard > .kpi-row,
.portal-ui-standard > .kpi-strip {
  display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px;
}
.portal-ui-standard > .kpi-row > .kpi-card,
.portal-ui-standard > .kpi-strip > .kpi-card {
  flex:1 1 160px; min-width:0; padding:8px 12px; min-height:0;
  display:flex; align-items:baseline; flex-wrap:wrap; gap:2px 10px;
}
.portal-ui-standard > .kpi-row .kpi-value,
.portal-ui-standard > .kpi-strip .kpi-value { font-size:20px; line-height:1.4; margin:0; overflow-wrap:anywhere; }
.portal-ui-standard > .kpi-row .kpi-label,
.portal-ui-standard > .kpi-strip .kpi-label { margin:0; font-size:12px; }
.portal-ui-standard > .kpi-row .kpi-sub,
.portal-ui-standard > .kpi-strip .kpi-sub { margin:0; font-size:12px; }
.portal-ui-standard .portal-page-context { font-size:13px; margin:4px 0 8px; }
.portal-ui-standard .portal-page-context > summary { cursor:pointer; padding:4px 0; color:var(--portal-ui-muted); }
.portal-ui-standard .portal-page-context > summary:focus-visible { outline:2px solid #70d2e6; }
.portal-ui-standard .portal-page-context[open] { flex-basis:100%; }
@media (max-width:640px) {
  .portal-ui-standard .portal-workspace-heading > #commonFilter { margin-left:0; max-width:100%; }
}

/* Column filters stay inside their own column, including paired range fields. */
.portal-ui-standard table .filter-row input,
.portal-ui-standard table .filter-row select {
  display:block;
  box-sizing:border-box;
  width:100%;
  max-width:100%;
  min-width:0;
}
.portal-ui-standard table .filter-row input + input { margin-top:4px; }
.portal-ui-standard .expense-table .c-date { width:110px; }
.portal-ui-standard .expense-table .filter-row .c-date .col-range-input { font-size:12px; }

/* Existing opportunity grid: opaque header group inside its scroll host. */
.portal-ui-standard .table-scroll > table.apps > thead {
  position:sticky; top:0; z-index:3; background:#101b27;
}
.portal-ui-standard .table-scroll > table.apps > thead th {
  position:static; background:#101b27;
}
.portal-condition-cell { display:flex; align-items:center; gap:3px; min-width:0; }
.portal-condition-cell button { min-width:0; height:32px; border:1px solid #30485a; background:#101b27; color:#dce6ef; border-radius:4px; padding:2px 6px; cursor:pointer; }
.portal-condition-cell button:first-child { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.portal-condition-dialog { margin:auto; width:360px; max-width:calc(100vw - 32px); max-height:85vh; overflow:auto; box-sizing:border-box; background:#101b27; color:#edf4fa; border:1px solid #54778b; border-radius:12px; padding:20px; font:14px/1.6 system-ui; }
.portal-condition-dialog::backdrop { background:rgba(0,0,0,.5); }
.portal-condition-dialog h2 { font-size:18px; margin:0 0 12px; }
.portal-condition-dialog label { display:block; margin-bottom:12px; }
.portal-condition-dialog label[hidden] { display:none; }
.portal-condition-dialog input,.portal-condition-dialog select { display:block; box-sizing:border-box; width:100%; min-height:32px; background:#07111a; color:#edf4fa; border:1px solid #54778b; padding:6px; border-radius:6px; color-scheme:dark; }
.portal-condition-dialog footer { display:flex; flex-wrap:wrap; gap:8px; }
.portal-condition-dialog button { min-height:32px; padding:6px 10px; cursor:pointer; }
.portal-condition-dialog [data-error] { color:#ffaaaa; }
/* Condition labels need room for both the text and the clear action. */

.portal-ui-standard .expense-table .c-amount { width:104px; }

/* Shared table-filter typography. Column widths accommodate labels, never shrink text. */
.portal-ui-standard table .filter-row input,
.portal-ui-standard table .filter-row select,
.portal-ui-standard table .filter-row button,
.portal-ui-standard table .pts-search-row input {
  font-family:var(--portal-ui-font) !important;
  font-size:13px !important;
  line-height:20px !important;
  height:32px !important;
  box-sizing:border-box;
  padding:5px 8px !important;
}
.portal-ui-standard table .filter-row th { vertical-align:middle; }
.portal-ui-standard .expense-table .c-input { width:76px; }
/* Period controls must wrap rather than push actions outside the workspace. */
.portal-ui-standard .period-selector { max-width:100%; min-width:0; flex-wrap:wrap; }

/* Reserve enough space for selected filter labels; scroll inside the primary grid. */
.portal-ui-standard .expense-table { min-width:1000px; width:100%; }
.portal-ui-standard .expense-table .c-account { width:180px; }
.portal-ui-standard .expense-table .c-status { width:180px; }
.portal-ui-standard .expense-table .c-evidence { width:76px; }
.portal-ui-standard #expense-table-container.portal-table-frame { max-height:calc(100dvh - 150px); }

/* Conventional list headings share one readable hierarchy. Editable planning grids retain their own geometry. */
.portal-ui-standard .expense-table > thead > tr > th,
.portal-ui-standard .data-table > thead > tr > th,
.portal-ui-standard .master-table > thead > tr > th {
  font-size:13px;
  line-height:18px;
}

/* Ordinary lists fit the desktop workspace; only narrow viewports need overflow. */
.portal-ui-standard .expense-table .c-rownum { width:36px; }
.portal-ui-standard .expense-table .c-applicant { width:88px; }
.portal-ui-standard .expense-table .c-trail { width:40px; }
.portal-ui-standard .expense-table th,
.portal-ui-standard .expense-table td { padding-left:6px; padding-right:6px; }
.portal-condition-cell [aria-pressed="true"] { border-color:#59cce0; color:#8ee5ef; }

.portal-ui-standard .page-header #commonFilter { flex:0 0 auto; }
.portal-ui-standard .page-header .ztt-filter-bar { margin:0; padding:2px 3px; border-radius:6px; }

/* Header filters never inherit the old full-width sticky band's negative margins. */
.portal-ui-standard #commonFilter,
.portal-ui-standard .page-header #commonFilter,
.portal-ui-standard .portal-workspace-heading #commonFilter,
.portal-ui-standard .expense-toolbar #commonFilter {
 position:static !important; inset:auto !important; margin:0 !important;
 padding:0 !important; width:auto; max-width:100%; min-width:0;
 flex:0 0 auto; background:none !important; backdrop-filter:none !important;
}
.portal-ui-standard .page-header .page-title,
.portal-ui-standard .portal-workspace-heading .page-title {
 flex:0 0 auto; max-width:100%; white-space:normal !important;
 overflow:visible; overflow-wrap:anywhere;
}
.portal-ui-standard .page-header:has(#commonFilter) { gap:8px 12px; flex-wrap:wrap; }

/* One geometry contract for title + period, regardless of page-specific toolbar layout. */
.portal-ui-standard .portal-period-heading {
 display:flex !important; align-items:center !important; justify-content:flex-start !important;
 flex-wrap:wrap !important; gap:8px 12px !important; flex:0 1 auto !important; min-width:0; max-width:100%;
}
.portal-ui-standard .portal-period-heading > .page-title {
 margin:0 !important; flex:0 0 auto !important; max-width:100%;
}
.portal-ui-standard .portal-period-heading #commonFilter,
.portal-ui-standard .portal-period-heading #scCommonFilter {
 position:static !important; margin:0 !important; padding:0 !important;
 inset:auto !important; background:none !important; backdrop-filter:none !important;
 flex:0 0 auto !important; max-width:100%;
}
.portal-ui-standard .portal-period-heading #commonFilter .ztt-filter-bar,
.portal-ui-standard .portal-period-heading #scCommonFilter .ztt-filter-bar {
 display:inline-flex !important; margin:0 !important; padding:2px 3px !important;
 border:1px solid #294555 !important; border-radius:6px !important;
 background:#0b1923 !important; box-shadow:none !important;
}
.portal-ui-standard .portal-period-heading #periodPrev,
.portal-ui-standard .portal-period-heading #periodNext {
 width:32px !important; min-width:32px !important; height:32px !important; min-height:32px !important;
 box-sizing:border-box; padding:3px !important; font-size:12px !important; line-height:18px !important;
}
.portal-ui-standard .portal-period-heading #periodLabel {
 width:88px !important; min-width:88px !important; height:32px !important; min-height:32px !important;
 box-sizing:border-box; padding:3px 6px !important; font-size:12px !important; line-height:20px !important;
}
.portal-ui-standard .portal-period-heading .ztt-filter-bar > div { gap:8px !important; }
.portal-ui-standard .portal-period-heading .sc-head { margin:0; padding:0; flex:0 1 auto; min-width:0; }
.portal-ui-standard .portal-period-heading .sc-sels { gap:8px; flex-wrap:wrap; }
.portal-ui-standard .portal-period-heading .sc-sels label { display:flex; align-items:center; gap:6px; font-size:12px; }
.portal-ui-standard .portal-period-heading .sc-sels select { height:32px; min-height:32px; padding:3px 6px; font-size:12px; max-width:220px; }

/* Unified control density: body copy remains larger than the action chrome.
   Explicit opt-in avoids changing navigation, chart hit areas and custom widgets. */
.portal-ui-standard :is(.btn, .tab-item, .filter-input, .filter-select, .form-input, .form-select, [data-master-search]):not(textarea):not([multiple]),
.portal-ui-standard :is(.filter-bar, .section-header, .page-header, .form-group) :is(button, select, input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=range]):not([type=color]):not([type=file])),
.portal-ui-standard table .filter-row :is(input, select),
.portal-condition-dialog :is(input, select, button) {
  box-sizing: border-box;
  height: 32px;
  min-height: 32px;
  padding: 4px 10px !important;
  font-family: inherit;
  font-size: 13px !important;
  line-height: 20px !important;
  border-radius: 6px;
  vertical-align: middle;
}
.portal-ui-standard :is(.btn, .tab-item) { justify-content: center; }
.portal-ui-standard .section-header :is(label, .form-label) { font-size: 13px !important; }
.portal-ui-standard .ztt-filter-bar button,
.portal-ui-standard #periodLabel,
.portal-ui-standard .portal-period-heading :is(#periodPrev, #periodNext, #periodLabel),
.portal-ui-standard .portal-period-heading .sc-sels select {
  font-size: 13px !important;
}
.portal-ui-standard .section-title { font-size: 18px; }
.portal-ui-standard .org-exec-name { font-size: 14px; }
.portal-ui-standard .org-exec-members { font-size: 12px; }
/* A 32px row action plus padding and border must still fit the 48px row contract. */
.portal-ui-standard .master-table-fixed tbody td {
  padding-top: 7px !important;
  padding-bottom: 7px !important;
}

/* Portal shell uses the available monitor width; retain page padding and sidebar widths. */
html[data-portal-brand] body > .layout,
html[data-portal-brand] .nav > .nav-container {
  width: 100%;
  max-width: none;
}

/* PuRuth portal brand — explicit page opt-in, presentation only.
   Do not redefine status/module/chart tokens, geometry, visibility or hit areas.
   The existing portal-ui-standard.css remains the density contract. */
html[data-portal-brand="20260918"] {
  --portal-brand-navy: #050a10;
  --portal-brand-panel: #0b1622;
  --portal-brand-line: #283745;
  --portal-brand-gold: #c5a45b;
  --portal-brand-gold-light: #e2cf9a;
  --portal-brand-title: 'Shippori Antique B1', 'Hiragino Sans', sans-serif;
}
html[data-portal-brand] body { background: var(--portal-brand-navy); }
html[data-portal-brand] .bg-grid { opacity: .3; }
html[data-portal-brand] :is(.nav, .sidebar) {
  background-color: #07111b;
  border-color: var(--portal-brand-line);
}
html[data-portal-brand] :is(.nav-client, .nav-user) {
  background: #111c26;
  border-color: #34404a;
}
/* Beta retains its existing silver identifier. */
html[data-portal-brand] :is(.nav-client-icon, .nav-user-avatar):not(.beta) {
  background: linear-gradient(135deg, #e2cf9a, #c5a45b);
  color: #101822;
}
html[data-portal-brand] .sidebar-item.active {
  background-color: #c5a45b14;
  color: #e2cf9a;
  border-left-color: #c5a45b;
}
/* Navigation stays neutral. Module colours belong to the business diagrams. */
html[data-portal-brand] .sidebar-module .sidebar-module-toggle { color: #adbdca; }
html[data-portal-brand] .sidebar-module .sidebar-module-toggle > span { color: inherit; }
html[data-portal-brand] .portal-ui-standard .page-title {
  font-family: var(--portal-brand-title);
  font-weight: 400;
  color: #f2f6fa;
}
html[data-portal-brand] .portal-ui-standard :is(.page-subtitle, .section-desc) { color: #adbdca; }
html[data-portal-brand] .portal-ui-standard :is(.section, .section-card, .zone) {
  border-color: var(--portal-brand-line);
}
/* Primary actions only; destructive, approval and disabled states keep their rules. */
html[data-portal-brand] .portal-ui-standard .btn-primary:not(:disabled):not([aria-disabled="true"]):not(.btn-danger):not(.btn-success):not(.btn-warning) {
  background: linear-gradient(120deg, #e2cf9a, #c5a45b);
  color: #101822;
  border-color: #c5a45b;
  box-shadow: none;
  transition: background-color 160ms ease, border-color 160ms ease;
}
html[data-portal-brand] .portal-ui-standard .btn-primary:not(:disabled):not([aria-disabled="true"]):not(.btn-danger):not(.btn-success):not(.btn-warning):hover {
  background: #e2cf9a;
  transform: none;
  box-shadow: none;
}
html[data-portal-brand] :is(.nav-logout-btn, .sidebar-collapse-btn, .hamburger-btn) {
  border-color: #3b4a58;
  transition: background-color 160ms ease, border-color 160ms ease;
}
html[data-portal-brand] :is(.nav-logout-btn, .sidebar-collapse-btn, .hamburger-btn):hover {
  border-color: #c5a45b;
  background-color: #c5a45b12;
}
html[data-portal-brand] :is(.portal-ui-standard, .nav, .sidebar) :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 2px solid #e2cf9a;
  outline-offset: 3px;
}
@media (prefers-reduced-motion: reduce) {
  html[data-portal-brand] :is(.btn-primary, .nav-logout-btn, .sidebar-collapse-btn, .hamburger-btn) { transition: none; }
}

/* Period controls have their own compact contract, not the 32px form-control rule.
   Restore DISPLAY_RULES.md: 28px controls, 88px month label, 34px outer frame. */
.portal-ui-standard :is(#commonFilter, #scCommonFilter) .ztt-filter-bar {
  padding: 2px 3px !important;
  border-radius: 6px !important;
}
.portal-ui-standard :is(#commonFilter, #scCommonFilter) :is(#periodPrev, #periodNext) {
  box-sizing: border-box;
  width: 28px !important; min-width: 28px !important;
  height: 28px !important; min-height: 28px !important;
  padding: 3px !important; font-size: 12px !important; line-height: 20px !important;
}
.portal-ui-standard :is(#commonFilter, #scCommonFilter) #periodLabel {
  box-sizing: border-box; display: inline-flex !important;
  align-items: center; justify-content: center;
  width: 88px !important; min-width: 88px !important;
  height: 28px !important; min-height: 28px !important;
  padding: 3px 6px !important; font-size: 12px !important; line-height: 20px !important;
}
.portal-ui-standard :is(#commonFilter, #scCommonFilter) #periodSelect {
  box-sizing: border-box; width: 100% !important;
  height: 100% !important; min-height: 0 !important; padding: 0 !important;
}
/* Neutral shell also wins over the map explorer's broad anchor rules. */
html[data-portal-brand] .nav .nav-logo { color: #f2f6fa; }
html[data-portal-brand] .sidebar .sidebar-item:not(.active) { color: #adbdca; }
html[data-portal-brand] .cm-main .cm-unified-heading { gap: 12px; margin: 0 0 12px; }
html[data-portal-brand] .cm-main .cm-unified-heading h1 { font-size: 24px; line-height: 1.35; margin: 0 0 4px; }
html[data-portal-brand] .cm-main .cm-unified-heading p { font-size: 13px; line-height: 1.5; }
html[data-portal-brand] .cm-main :is(.cm-map-search input, .cm-map-overlay-tools select, .cm-map-overlay-tools button, .cm-camera-tools button, #cm-refresh-backlog) {
  box-sizing: border-box; min-height: 32px; padding: 4px 10px;
  border-radius: 6px; font-size: 13px; line-height: 22px;
}
html[data-portal-brand] .cm-main :is(.cm-map-search, .cm-map-overlay-tools, .cm-map-overlay-tools label) { min-width: 0; max-width: 100%; }
html[data-portal-brand] .cm-main .cm-map-overlay-tools select { min-width: 0; max-width: 100%; }
html[data-portal-brand] .cm-body .nav .nav-logout-btn { padding: 8px 16px; font-size: 14px; border-radius: 6px; }
@media (max-width: 767px) {
  html[data-portal-brand] .cm-portal .cm-main { padding: 16px 12px; }
  html[data-portal-brand] .cm-main .cm-unified-heading h1 { font-size: 20px; }
  html[data-portal-brand] .cm-main .cm-map-overlay-tools label { flex-wrap: wrap; }
  html[data-portal-brand] .cm-main .cm-map-overlay-tools select { flex: 1 1 140px; }
  html[data-portal-brand] .cm-body .cm-info-panel { width: min(390px, calc(100vw - 24px)); max-width: calc(100vw - 24px); }
  html[data-portal-brand] .cm-main .panel { max-width: calc(100vw - 24px); }
}

/* Small-screen audit: keep controls reachable without shrinking business data. */
@media (max-width: 767px) {
  html[data-portal-brand] .portal-ui-standard .rp-bulk { grid-template-columns:minmax(0,1fr); }
  html[data-portal-brand] .portal-ui-standard .rp-bulk :is(.hint,.acts) { min-width:0;max-width:100%; }
  html[data-portal-brand] .portal-ui-standard .rp-bulk .hint .k { white-space:normal;overflow-wrap:anywhere; }
  html[data-portal-brand] .portal-ui-standard #tabNav { margin:0 0 20px;padding:0;max-width:100%;top:56px; }
  html[data-portal-brand] .portal-ui-standard .e2e-flow { max-width:100%;overflow-x:auto; }
  html[data-portal-brand] .portal-ui-standard .board:has(> .lanes) { display:block;overflow-x:auto; }
  html[data-portal-brand] .portal-ui-standard .board > .lanes { min-width:560px; }
}
@media (max-width: 480px) {
  html[data-portal-brand] .portal-ui-standard #tabNav { top:48px; }
}

/* ZTT module palette v2.1 (2026-09-19 approved). Semantic/calendar colors are independent. */
html[data-portal-brand]{
  --mod-e:#46B8B0;--mod-e-l:#73C8C3;--mod-e-d:#348785;--mod-e-surface:#122933;--mod-e-line:#265F62;--mod-e-light-ink:#2D7872;
  --grad-e:linear-gradient(125deg,var(--mod-e-l) 0%,var(--mod-e) 48%,var(--mod-e-d) 100%);
  --mod-h:#DB8EA8;--mod-h-l:#E1A9BD;--mod-h-d:#9D6A80;--mod-h-surface:#242432;--mod-h-line:#694C5E;--mod-h-light-ink:#915E6F;
  --grad-h:linear-gradient(125deg,var(--mod-h-l) 0%,var(--mod-h) 48%,var(--mod-h-d) 100%);
  --mod-a:#719CE2;--mod-a-l:#93B3E8;--mod-a-d:#5274A8;--mod-a-surface:#172639;--mod-a-line:#395278;--mod-a-light-ink:#4F6D9E;
  --grad-a:linear-gradient(125deg,var(--mod-a-l) 0%,var(--mod-a) 48%,var(--mod-a-d) 100%);
  --mod-m:#BC7DCB;--mod-m-l:#CA9CD7;--mod-m-d:#875E98;--mod-m-surface:#202236;--mod-m-line:#5B446E;--mod-m-light-ink:#895B94;
  --grad-m:linear-gradient(125deg,var(--mod-m-l) 0%,var(--mod-m) 48%,var(--mod-m-d) 100%);
  --mod-s:#DA9271;--mod-s-l:#E0AC95;--mod-s-d:#9C6D59;--mod-s-surface:#24252B;--mod-s-line:#684E46;--mod-s-light-ink:#90604B;
  --grad-s:linear-gradient(125deg,var(--mod-s-l) 0%,var(--mod-s) 48%,var(--mod-s-d) 100%);
  --mod-p:#8CB66C;--mod-p-l:#A7C791;--mod-p-d:#658656;--mod-p-surface:#1A292B;--mod-p-line:#455E43;--mod-p-light-ink:#5A7445;
  --grad-p:linear-gradient(125deg,var(--mod-p-l) 0%,var(--mod-p) 48%,var(--mod-p-d) 100%);
  --mod-w:#A28BE0;--mod-w-l:#B7A7E7;--mod-w-d:#7568A7;--mod-w-surface:#1D2439;--mod-w-line:#4F4B78;--mod-w-light-ink:#73639F;
  --grad-w:linear-gradient(125deg,var(--mod-w-l) 0%,var(--mod-w) 48%,var(--mod-w-d) 100%);
}

/* BEGIN GENERATED THEME TOKENS — tools/theme-colors/build.py */
:root {
  --theme-brand:#C5A45B;--theme-neutral:#ADBDCA;--theme-on-accent:#0A1420;
  --theme-brand-soft:#E2CF9A;--theme-brand-line:#6D5A2E;
  --theme-surface:#050A10;--theme-panel:#0B1622;
  --theme-brand-gradient:linear-gradient(135deg,#ECDCAC,var(--theme-brand) 55%,#8F7D4B);
  --accent:var(--theme-brand);--accent-soft:var(--theme-brand-soft);--accent-line:var(--theme-brand-line);--accent-ink:var(--theme-on-accent);
  --paper:var(--theme-surface);--white:var(--theme-panel);--grad-gold:var(--theme-brand-gradient);
  --theme-accent:var(--theme-brand);--theme-gradient:var(--theme-brand-gradient);
  --theme-module-e:#46B8B0;--mod-e:var(--theme-module-e);
  --theme-module-e-l:#73C8C3;--mod-e-l:var(--theme-module-e-l);
  --theme-module-e-d:#348785;--mod-e-d:var(--theme-module-e-d);
  --theme-module-e-soft:#6FC7C2;--mod-e-soft:var(--theme-module-e-soft);
  --theme-module-e-light-ink:#2D7872;--mod-e-light-ink:var(--theme-module-e-light-ink);
  --theme-module-e-surface:#122933;--mod-e-surface:var(--theme-module-e-surface);
  --theme-module-e-line:#265F62;--mod-e-line:var(--theme-module-e-line);
  --grad-e:linear-gradient(125deg,var(--mod-e-l) 0%,var(--mod-e) 48%,var(--mod-e-d) 100%);
  --theme-module-h:#DB8EA8;--mod-h:var(--theme-module-h);
  --theme-module-h-l:#E1A9BD;--mod-h-l:var(--theme-module-h-l);
  --theme-module-h-d:#9D6A80;--mod-h-d:var(--theme-module-h-d);
  --theme-module-h-soft:#E1A7BC;--mod-h-soft:var(--theme-module-h-soft);
  --theme-module-h-light-ink:#915E6F;--mod-h-light-ink:var(--theme-module-h-light-ink);
  --theme-module-h-surface:#242432;--mod-h-surface:var(--theme-module-h-surface);
  --theme-module-h-line:#694C5E;--mod-h-line:var(--theme-module-h-line);
  --grad-h:linear-gradient(125deg,var(--mod-h-l) 0%,var(--mod-h) 48%,var(--mod-h-d) 100%);
  --theme-module-a:#719CE2;--mod-a:var(--theme-module-a);
  --theme-module-a-l:#93B3E8;--mod-a-l:var(--theme-module-a-l);
  --theme-module-a-d:#5274A8;--mod-a-d:var(--theme-module-a-d);
  --theme-module-a-soft:#90B2E8;--mod-a-soft:var(--theme-module-a-soft);
  --theme-module-a-light-ink:#4F6D9E;--mod-a-light-ink:var(--theme-module-a-light-ink);
  --theme-module-a-surface:#172639;--mod-a-surface:var(--theme-module-a-surface);
  --theme-module-a-line:#395278;--mod-a-line:var(--theme-module-a-line);
  --grad-a:linear-gradient(125deg,var(--mod-a-l) 0%,var(--mod-a) 48%,var(--mod-a-d) 100%);
  --theme-module-m:#BC7DCB;--mod-m:var(--theme-module-m);
  --theme-module-m-l:#CA9CD7;--mod-m-l:var(--theme-module-m-l);
  --theme-module-m-d:#875E98;--mod-m-d:var(--theme-module-m-d);
  --theme-module-m-soft:#C99AD6;--mod-m-soft:var(--theme-module-m-soft);
  --theme-module-m-light-ink:#895B94;--mod-m-light-ink:var(--theme-module-m-light-ink);
  --theme-module-m-surface:#202236;--mod-m-surface:var(--theme-module-m-surface);
  --theme-module-m-line:#5B446E;--mod-m-line:var(--theme-module-m-line);
  --grad-m:linear-gradient(125deg,var(--mod-m-l) 0%,var(--mod-m) 48%,var(--mod-m-d) 100%);
  --theme-module-s:#DA9271;--mod-s:var(--theme-module-s);
  --theme-module-s-l:#E0AC95;--mod-s-l:var(--theme-module-s-l);
  --theme-module-s-d:#9C6D59;--mod-s-d:var(--theme-module-s-d);
  --theme-module-s-soft:#E0AA92;--mod-s-soft:var(--theme-module-s-soft);
  --theme-module-s-light-ink:#90604B;--mod-s-light-ink:var(--theme-module-s-light-ink);
  --theme-module-s-surface:#24252B;--mod-s-surface:var(--theme-module-s-surface);
  --theme-module-s-line:#684E46;--mod-s-line:var(--theme-module-s-line);
  --grad-s:linear-gradient(125deg,var(--mod-s-l) 0%,var(--mod-s) 48%,var(--mod-s-d) 100%);
  --theme-module-p:#8CB66C;--mod-p:var(--theme-module-p);
  --theme-module-p-l:#A7C791;--mod-p-l:var(--theme-module-p-l);
  --theme-module-p-d:#658656;--mod-p-d:var(--theme-module-p-d);
  --theme-module-p-soft:#A4C58E;--mod-p-soft:var(--theme-module-p-soft);
  --theme-module-p-light-ink:#5A7445;--mod-p-light-ink:var(--theme-module-p-light-ink);
  --theme-module-p-surface:#1A292B;--mod-p-surface:var(--theme-module-p-surface);
  --theme-module-p-line:#455E43;--mod-p-line:var(--theme-module-p-line);
  --grad-p:linear-gradient(125deg,var(--mod-p-l) 0%,var(--mod-p) 48%,var(--mod-p-d) 100%);
  --theme-module-w:#A28BE0;--mod-w:var(--theme-module-w);
  --theme-module-w-l:#B7A7E7;--mod-w-l:var(--theme-module-w-l);
  --theme-module-w-d:#7568A7;--mod-w-d:var(--theme-module-w-d);
  --theme-module-w-soft:#B5A5E6;--mod-w-soft:var(--theme-module-w-soft);
  --theme-module-w-light-ink:#73639F;--mod-w-light-ink:var(--theme-module-w-light-ink);
  --theme-module-w-surface:#1D2439;--mod-w-surface:var(--theme-module-w-surface);
  --theme-module-w-line:#4F4B78;--mod-w-line:var(--theme-module-w-line);
  --grad-w:linear-gradient(125deg,var(--mod-w-l) 0%,var(--mod-w) 48%,var(--mod-w-d) 100%);
}
[data-theme-color="brand"] {--theme-accent:var(--theme-brand);--theme-gradient:var(--theme-brand-gradient);}
[data-theme-color="none"] {--theme-accent:var(--theme-neutral);--theme-gradient:var(--theme-neutral);}
[data-theme-color="module"] {--theme-accent:var(--theme-brand);--theme-gradient:var(--theme-brand-gradient);}
[data-theme-color="module"][data-module="e"] { --theme-accent:var(--mod-e);--theme-gradient:var(--grad-e); }
[data-theme-color="module"][data-module="h"] { --theme-accent:var(--mod-h);--theme-gradient:var(--grad-h); }
[data-theme-color="module"][data-module="a"] { --theme-accent:var(--mod-a);--theme-gradient:var(--grad-a); }
[data-theme-color="module"][data-module="m"] { --theme-accent:var(--mod-m);--theme-gradient:var(--grad-m); }
[data-theme-color="module"][data-module="s"] { --theme-accent:var(--mod-s);--theme-gradient:var(--grad-s); }
[data-theme-color="module"][data-module="p"] { --theme-accent:var(--mod-p);--theme-gradient:var(--grad-p); }
[data-theme-color="module"][data-module="w"] { --theme-accent:var(--mod-w);--theme-gradient:var(--grad-w); }
[data-theme-color] {--color-accent:var(--theme-accent);--mod:var(--theme-accent);--mod-grad:var(--theme-gradient);}
[data-theme-part="text"] {color:var(--theme-accent);}
[data-theme-part="surface"] {background:color-mix(in srgb,var(--theme-accent) 12%,transparent);border-color:color-mix(in srgb,var(--theme-accent) 36%,transparent);}
[data-theme-part="solid"] {background:var(--theme-accent);color:var(--theme-on-accent);}
/* Decorative surface only; do not place small text over a gradient. */
[data-theme-part="gradient"] {background:var(--theme-gradient);}
/* END GENERATED THEME TOKENS */

/* 2026-09-19 §8-12: 並ぶボタンは行に包み gap で離す（連結・0px 接触を禁止）。§8-13: タッチ端末では操作部品 44px 以上 */
.portal-ui-standard :is(.btn-row, .button-row) { display: flex; flex-wrap: wrap; gap: var(--portal-ui-gap); align-items: center; }
.portal-ui-standard td :is(.btn-row, .button-row) { gap: var(--portal-ui-gap-tight); }
.portal-ui-standard :is(.form-group, .field) > :is(label, span:first-child) { margin-bottom: var(--portal-ui-label-gap); }
