/* AI エージェント時代の開発組織。style.css・flow.css・cm.css の上に重ねる（接頭辞 dv-） */
.dv-h4 { margin: 0 0 8px; font-size: 14px; display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 8px; }
.dv-nl { display: block; margin: 6px 0 0; }
.dv-inl { display: inline; margin: 0 0 0 6px; padding: 0; }
.dv-tips { margin-top: 12px; }
.dv-mt { margin-top: 10px; }
.dv-tnote { margin: 8px 0 0; font-size: 12px; color: var(--muted); }
.dv-box { padding: 12px 14px; min-width: 0; }
.dv-tbl { font-size: 12.5px; }
.dv-tbl th, .dv-tbl td { padding: 6px 8px; }
.dv-btns { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.dv-sub { margin: 12px 0 6px; font-size: 12px; font-weight: 700; color: var(--muted); }
.dv-small { margin: 8px 0 0; font-size: 12px; color: var(--muted); }

/* 操作の枠 */
.dv-ctl { padding: 12px 14px; display: grid; gap: 8px; margin-bottom: 10px; }
.dv-crow { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.dv-clab { font-size: 12.5px; font-weight: 700; color: var(--muted); min-width: 3em; }
.dv-scene { margin: 0; font-size: 13px; color: var(--ink2); background: var(--line2); border-radius: 8px; padding: 7px 11px; }
.dv-scene b { color: var(--ink); margin-right: 4px; }
.dv-qrow { display: grid; grid-template-columns: 12em minmax(0, 1fr); gap: 6px 10px; align-items: center; padding: 6px 0; border-bottom: 1px dashed var(--line2); }
.dv-qrow:last-child { border-bottom: 0; }
.dv-qlab { font-size: 12.5px; font-weight: 700; color: var(--ink2); }

/* 1 週間の時間の使い方 */
.dv-bar { display: flex; height: 34px; border-radius: 9px; overflow: hidden; border: 1px solid var(--line); }
.dv-seg { display: grid; place-items: center; font: 600 12px var(--latin); color: #fff; min-width: 0; transition: width .25s ease; }
.dv-c-write { background: #1d4ed8; }
.dv-c-verify { background: #b45309; }
.dv-c-spec { background: #0f766e; }
.dv-c-teach { background: #7c3aed; }
.dv-c-other { background: #64748b; }
.dv-legend { display: flex; flex-wrap: wrap; gap: 4px 14px; margin: 8px 0 6px; font-size: 12px; color: var(--ink2); }
.dv-lg { display: inline-flex; align-items: center; gap: 5px; }
.dv-lg i, .dv-dot { display: inline-block; width: 10px; height: 10px; border-radius: 3px; flex: none; }
.dv-dot { margin-right: 6px; vertical-align: -1px; }
.dv-ttbl { min-width: 560px; }
.dv-ttbl tbody th { font-weight: 500; white-space: nowrap; }
.dv-up { color: #b45309; font-weight: 700; }
.dv-down { color: #1d4ed8; font-weight: 700; }
.dv-tbl tr.dv-sum th, .dv-tbl tr.dv-sum td { font-weight: 700; border-top: 1px solid var(--line); }
.dv-rtbl { min-width: 860px; }
.dv-rtbl tbody th { min-width: 9em; }

/* 見積もりの道具 */
.dv-calc { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 10px; align-items: start; }
.dv-verdict { margin: 0 0 10px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; border-radius: 10px; padding: 9px 12px; border: 1px solid var(--line); }
.dv-verdict b { font-size: 17px; }
.dv-verdict span { font-size: 12.5px; color: var(--ink2); }
.dv-verdict.dv-ok { background: #f0fdf4; border-color: #bbf7d0; } .dv-verdict.dv-ok b { color: #14532d; }
.dv-verdict.dv-warn { background: #fffbeb; border-color: #fde68a; } .dv-verdict.dv-warn b { color: #92400e; }
.dv-verdict.dv-ng { background: #fef2f2; border-color: #fecaca; } .dv-verdict.dv-ng b { color: #991b1b; }
.dv-kpis { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.dv-kpi { border: 1px solid var(--line); border-radius: 10px; padding: 7px 10px; background: var(--paper); display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.dv-kpi span { font-size: 11.5px; font-weight: 700; color: var(--muted); }
.dv-kpi b { font: 600 17px var(--sans); color: var(--ink); }
.dv-kpi small { font-size: 11.5px; color: var(--ink2); }
.dv-kpi.dv-warn { border-color: #fde68a; background: #fffdf5; } .dv-kpi.dv-warn b { color: #92400e; }
.dv-kpi.dv-ng { border-color: #fecaca; background: #fffafa; } .dv-kpi.dv-ng b { color: #991b1b; }
.dv-kpi.dv-ok b { color: #14532d; }
.dv-notes { margin: 10px 0 0; padding-left: 1.2em; font-size: 12.5px; color: #78350f; display: grid; gap: 4px; }
.dv-formula { margin: 0; padding-left: 1.2em; font-size: 12.5px; color: var(--ink2); display: grid; gap: 3px; }
.dv-fnote { list-style: none; margin-left: -1.2em; color: var(--muted); }

/* 権限の表 */
.dv-guard { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 10px; align-items: start; }
.dv-prow { padding: 7px 0; border-bottom: 1px dashed var(--line2); }
.dv-prow:last-child { border-bottom: 0; }
.dv-ph { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 5px; }
.dv-plab { font-size: 12.5px; font-weight: 700; color: var(--ink2); }
.dv-lp { font-weight: 500; text-align: left; }
.dv-lp[aria-pressed="true"] { font-weight: 700; }
.dv-p-ng .dv-lp[aria-pressed="true"] { background: #b91c1c; border-color: #b91c1c; }
.dv-p-warn .dv-lp[aria-pressed="true"] { background: #b45309; border-color: #b45309; }
.dv-mk { font: 700 12.5px var(--sans); width: 22px; height: 22px; border-radius: 50%; display: inline-grid; place-items: center; flex: none; }
.dv-mk-ok { background: #dcfce7; color: #14532d; }
.dv-mk-warn { background: #fef3c7; color: #92400e; }
.dv-mk-ng { background: #fee2e2; color: #991b1b; }
.dv-msgs, .dv-signals { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 5px; }
.dv-msgs li, .dv-signals li { display: grid; grid-template-columns: 16px minmax(0, 1fr); gap: 6px; font-size: 12.5px; color: var(--ink2); }
.dv-msgs em { font-style: normal; font-weight: 700; color: var(--ink); margin-right: 6px; }
.dv-m-ng b, .dv-sg-ng b { color: #b91c1c; }
.dv-m-warn b, .dv-sg-warn b { color: #b45309; }
.dv-sg-ok b { color: #15803d; }
.dv-dl { margin: 0; display: grid; grid-template-columns: 6.5em minmax(0, 1fr); gap: 4px 10px; font-size: 12.5px; }
.dv-dl dt { font-size: 12px; font-weight: 700; color: var(--muted); }
.dv-dl dd { margin: 0; color: var(--ink2); }
.dv-ptbl { min-width: 1080px; }
.dv-ptbl td { white-space: nowrap; }
.dv-ptbl td.dv-t-ng { background: #fef2f2; color: #991b1b; font-weight: 700; }
.dv-ptbl td.dv-t-warn { background: #fffbeb; color: #92400e; font-weight: 700; }
.dv-srow { cursor: pointer; }
.dv-srow:hover th, .dv-srow:hover td { background: var(--line2); }
.dv-tbl tr.dv-on th { background: #f0fdf4; }
.dv-sel { appearance: none; font: inherit; font-size: 12.5px; font-weight: 700; text-align: left; cursor: pointer; color: var(--ink); background: var(--paper); border: 1px solid var(--line); border-radius: 8px; padding: 4px 9px; }
.dv-sel:hover { border-color: #94a3b8; background: var(--any-bg); }
.dv-sel[aria-pressed="true"] { border-color: #15803d; background: #dcfce7; }

/* 月の 1 枚 */
.dv-mtbl { min-width: 640px; margin-top: 8px; }
.dv-mtbl tbody th { font-weight: 500; }
.dv-stbl { min-width: 720px; }
.dv-stbl tbody th { font-weight: 500; }

/* 残す形 */
.dv-tpls { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; margin-top: 10px; align-items: start; }
.dv-tpl { padding: 12px 14px; min-width: 0; }
.dv-tplr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; min-width: 0; align-items: start; }
.dv-tplh { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.dv-tplh .dv-h4 { margin: 0; }
.dv-pre { margin: 0; background: #0f172a; color: #e2e8f0; border-radius: 8px; padding: 10px 12px; font: 500 12px/1.6 var(--latin); white-space: pre-wrap; overflow-wrap: anywhere; max-height: 420px; overflow-y: auto; }
.dv-ltbl { min-width: 2100px; }
.dv-ltbl th { white-space: nowrap; }
#dvTplPerm td:nth-child(1), #dvTplPerm td:nth-child(2) { min-width: 11em; }
#dvTplPerm td:nth-child(10) { min-width: 14em; }
#dvTplPerm td:nth-child(n+11) { min-width: 12em; }

.dv-sel:focus-visible { outline: 3px solid #2563eb; outline-offset: 2px; }

@media (max-width: 1100px) {
  .dv-calc, .dv-guard, .dv-tplr { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
  .dv-qrow { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  .dv-clab { min-width: 0; width: 100%; }
  .dv-kpis { grid-template-columns: minmax(0, 1fr); }
  .dv-tbl th, .dv-tbl td { padding: 5px 6px; }
  .dv-dl { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .dv-dl dd { margin-bottom: 4px; }
}
