:root { font-family: "Hiragino Sans", "Noto Sans JP", sans-serif; }
body { margin: 0; background: #f5f6f8; color: #1a1a1a; }
header.site { background: #17324c; color: #fff; padding: .6rem 1rem; display: flex; gap: 1rem; align-items: center; position: sticky; top: 0; z-index: 100; }
header.site a { color: #cfe3f5; text-decoration: none; margin-right: .75rem; }
header.site .brand { font-weight: 700; color: #fff; }
header.site nav a.current { color: #fff; font-weight: 700; border-bottom: 2px solid #cfe3f5; }
.subnav { display: flex; gap: .25rem 1rem; flex-wrap: wrap; align-items: center; padding: .4rem 1rem; background: #fff; border-bottom: 1px solid #dde3ea; font-size: .9rem; }
.subnav a { color: #17324c; text-decoration: none; padding: .15rem .4rem; border-radius: 4px; }
.subnav a.current { background: #17324c; color: #fff; }
.subnav .grp { color: #64748b; font-size: .8rem; margin-left: .5rem; }
main { max-width: 960px; margin: 1.5rem auto; padding: 0 1rem; }
.card { background: #fff; border: 1px solid #dde3ea; border-radius: 8px; padding: 1rem 1.25rem; margin-bottom: 1rem; }
.error { color: #b00020; }
form.login { max-width: 360px; margin: 3rem auto; }
form.login input { width: 100%; padding: .5rem; margin: .25rem 0 .75rem; box-sizing: border-box; }
button { padding: .5rem 1rem; cursor: pointer; }
table.list { width: 100%; border-collapse: collapse; background: #fff; border: 1px solid #dde3ea; border-radius: 8px; }
table.list th, table.list td { padding: .5rem .75rem; border-bottom: 1px solid #eef1f5; text-align: left; font-size: .92rem; }
table.list th { background: #f0f3f7; white-space: nowrap; }
table.list tr:hover td { background: #f8fafc; }
.badge { display: inline-block; padding: .1rem .5rem; border-radius: 999px; background: #e2e8f0; font-size: .8rem; }
.badge.ok { background: #d1fae5; color: #065f46; }
.flash { background: #d1fae5; border: 1px solid #10b981; padding: .5rem .75rem; border-radius: 6px; margin-bottom: 1rem; }
.flash.error { background: #fee2e2; border-color: #dc2626; }
.pager { margin: 1rem 0; display: flex; gap: .35rem; align-items: center; flex-wrap: wrap; }
.pg { padding: .25rem .6rem; border: 1px solid #cbd5e1; border-radius: 4px; text-decoration: none; color: #17324c; background: #fff; }
.pg.current { background: #17324c; color: #fff; border-color: #17324c; }
.pg.gap, .pg.total { border: none; background: none; color: #64748b; }
form.filters { display: flex; gap: .5rem; flex-wrap: wrap; margin-bottom: 1rem; align-items: end; }
form.filters label { font-size: .8rem; color: #475569; display: block; }
form.filters input, form.filters select { padding: .4rem; }
.form-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: .75rem 1rem; }
.form-grid label { display: block; font-size: .85rem; color: #334155; }
.form-grid input, .form-grid select, .form-grid textarea { width: 100%; padding: .45rem; box-sizing: border-box; margin-top: .15rem; }
.form-grid .wide { grid-column: 1 / -1; }
.required::after { content: " *"; color: #dc2626; }
dl.kv { display: grid; grid-template-columns: max-content 1fr; gap: .25rem .9rem; margin: 0; }
dl.kv dt { color: #64748b; font-size: .85rem; }
dl.kv dd { margin: 0; font-size: .9rem; overflow-wrap: anywhere; }
.muted { color: #94a3b8; }
a.btn, .actions a.btn { padding: .45rem .9rem; border: 1px solid #17324c; border-radius: 4px; text-decoration: none; color: #17324c; background: #fff; }
.btn-danger { background: #fee2e2; border: 1px solid #dc2626; color: #991b1b; border-radius: 4px; }
.banner-deleted { background: #fef2f2; border: 1px solid #dc2626; color: #991b1b; padding: .5rem .75rem; border-radius: 6px; margin-bottom: 1rem; }
.actions { display: flex; gap: .5rem; margin: .75rem 0; align-items: center; }
.bar-row { display: flex; align-items: center; gap: .5rem; margin: .15rem 0; }
.bar-label { width: 5.5em; font-size: .85rem; color: #475569; flex-shrink: 0; }
.bar-track { flex: 1; background: #eef1f5; border-radius: 4px; height: 1.1rem; position: relative; overflow: hidden; }
.bar-fill { height: 100%; border-radius: 4px; background: #17324c; }
.bar-fill.pay { background: #b45309; }
.bar-value { width: 9em; text-align: right; font-size: .85rem; flex-shrink: 0; }
/* ---- 社内画面（iview レイアウトの <body class="intra">）— 2026-10-27 崩れ修正。ポータル（/partner/*）には効かない ----
   原因: 本文幅 960px に 7〜10 列の表を詰めていた／a.btn が inline のままで縦の padding が隣と重なり、文字単位で折り返していた／
   素の <button> が OS の灰色（13px）のまま a.btn と並んでいた／金額・日付・番号の途中で改行していた／見出しが既定の 2em・1.5em／
   入力欄・プルダウン・ボタンの高さがばらばら／form-grid のチェックボックスが 100% 幅・必須 * が入力欄の下 */
body.intra main { max-width: 1400px; overflow-x: auto; }
body.intra h1 { font-size: 1.45rem; line-height: 1.35; margin: .25rem 0 1rem; }
body.intra h2 { font-size: 1.1rem; line-height: 1.4; margin: 1.25rem 0 .6rem; }
body.intra h3 { font-size: 1rem; line-height: 1.4; margin: 1rem 0 .5rem; }
body.intra h2 .muted, body.intra h3 .muted { font-size: .8rem; font-weight: normal; }
body.intra .card { overflow-x: auto; }
body.intra .card > :first-child { margin-top: 0; }
body.intra .card > :last-child, body.intra .card > :last-child > :last-child { margin-bottom: 0; }
/* 横に溢れた表はカードの中でスクロール。macOS の重ねスクロールバーでも見えるように常時表示 */
body.intra .card::-webkit-scrollbar { height: 10px; }
body.intra .card::-webkit-scrollbar-track { background: #f1f5f9; border-radius: 5px; }
body.intra .card::-webkit-scrollbar-thumb { background: #94a3b8; border-radius: 5px; }
body.intra .muted { color: #64748b; }
body.intra .badge { white-space: nowrap; }
body.intra .right { text-align: right; white-space: nowrap; }
body.intra .nowrap { white-space: nowrap; }
body.intra dl.kv { align-items: baseline; }
body.intra dl.kv + .flash, body.intra dl.kv + p { margin-top: .75rem; }
body.intra header.site button { padding: .3rem .75rem; border: 1px solid #4b6a88; border-radius: 4px; background: transparent; color: #cfe3f5; font: inherit; font-size: .85rem; }
body.intra header.site button:hover { background: #22456a; color: #fff; }
/* ボタン: <button> と a.btn を同じ形・同じ高さの 1 つの塊に（折り返しは塊の間だけ）。
   リンク（a.btn）= 白地、状態を変える操作（post_button・表の中の送信）= 薄い紺地、フォームの送信 = 紺の塗り、危険操作 = 赤、無効 = 灰 */
body.intra main button, body.intra main a.btn { display: inline-flex; align-items: center; justify-content: center; gap: .3em; box-sizing: border-box; min-height: 2.125rem; padding: .3rem .8rem; border: 1px solid #17324c; border-radius: 4px; background: #fff; color: #17324c; font: inherit; font-size: .85rem; line-height: 1.3; text-decoration: none; white-space: nowrap; vertical-align: middle; cursor: pointer; }
body.intra main button:hover, body.intra main a.btn:hover { background: #eef3f8; }
body.intra main button[type=submit]:not(.btn):not(.btn-danger):not(:disabled) { background: #17324c; color: #fff; }
body.intra main button[type=submit]:not(.btn):not(.btn-danger):not(:disabled):hover { background: #24496d; }
body.intra main form[style*="display:inline"] > button[type=submit]:not(.btn-danger):not(:disabled), body.intra table.list button[type=submit]:not(.btn-danger):not(:disabled), body.intra main form#bulk-confirm > button[type=submit]:not(:disabled) { background: #e3ebf4; color: #17324c; }
body.intra main form[style*="display:inline"] > button[type=submit]:not(.btn-danger):not(:disabled):hover, body.intra table.list button[type=submit]:not(.btn-danger):not(:disabled):hover, body.intra main form#bulk-confirm > button[type=submit]:not(:disabled):hover { background: #cfdbea; }
body.intra main .btn-danger, body.intra main .btn-danger:hover { border-color: #dc2626; background: #fee2e2; color: #991b1b; }
body.intra main button:disabled, body.intra main button:disabled:hover { border-color: #cbd5e1; background: #f1f5f9; color: #94a3b8; cursor: not-allowed; }
/* 表の各行の操作ボタンは小さく。ただし入力欄のある行（編集表）は入力欄と同じ高さ */
body.intra table.list td > button, body.intra table.list td > form > button, body.intra table.list td > a.btn { min-height: 1.5rem; padding: .1rem .55rem; font-size: .8rem; margin: .05rem 0; }
body.intra table.list tr:has(input:not([type=hidden]):not([type=checkbox]):not([type=radio]), select) td > button, body.intra table.list tr:has(input:not([type=hidden]):not([type=checkbox]):not([type=radio]), select) td > form > button { min-height: 2.125rem; }
/* 表: 金額（右寄せ列）と操作列（最後の列のボタン群）は折り返さない。右寄せ列の直後の左寄せ列は少し離す。表の下に間を空ける */
body.intra table.list { margin: 0 0 .75rem; }
body.intra table.list:last-child { margin-bottom: 0; }
body.intra table.list th, body.intra table.list td { padding: .45rem .6rem; vertical-align: middle; }
body.intra table.list td[style*="text-align:right"], body.intra table.list th[style*="text-align:right"] { white-space: nowrap; font-variant-numeric: tabular-nums; }
body.intra table.list td[style*="text-align:right"] + td:not([style*="text-align:right"]), body.intra table.list th[style*="text-align:right"] + th:not([style*="text-align:right"]) { padding-left: 1.25rem; }
body.intra table.list td:last-child:not([colspan]):has(> form, > a.btn) { white-space: nowrap; }
body.intra table.list select { max-width: 20rem; }
/* 月別の行列（確定収益）: 横スクロールしても会社名と合計の列は見えたままに */
body.intra table.matrix { display: block; max-width: 100%; overflow-x: auto; }
body.intra table.matrix::-webkit-scrollbar { height: 10px; }
body.intra table.matrix::-webkit-scrollbar-track { background: #f1f5f9; border-radius: 5px; }
body.intra table.matrix::-webkit-scrollbar-thumb { background: #94a3b8; border-radius: 5px; }
body.intra table.matrix tr > :first-child, body.intra table.matrix tr > :last-child { position: sticky; z-index: 1; background: #fff; }
body.intra table.matrix tr > :first-child { left: 0; box-shadow: 1px 0 0 #dde3ea; }
body.intra table.matrix tr > :last-child { right: 0; box-shadow: -1px 0 0 #dde3ea; }
body.intra table.matrix tr > th:first-child, body.intra table.matrix tr > th:last-child, body.intra table.matrix tr:last-child > td { background: #f0f3f7; }
body.intra #items-table th, body.intra #items-table td, body.intra #fields-table th, body.intra #fields-table td { padding-left: .35rem; padding-right: .35rem; }
/* 入力欄・プルダウン: 本文と同じ字・同じ枠・同じ高さ（34px）。テキストエリアは既定の等幅のまま（CSV・HTML・宛先の貼り付け用） */
body.intra main input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]), body.intra main select, body.intra main textarea { box-sizing: border-box; max-width: 100%; padding: .3rem .45rem; border: 1px solid #8a94a6; border-radius: 4px; background: #fff; font-size: .9rem; }
body.intra main input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]), body.intra main select { height: 2.125rem; padding-top: 0; padding-bottom: 0; font-family: inherit; }
body.intra main textarea { font-size: .85rem; }
/* 幅をインライン指定した小さい入力欄（料率など）は指定幅を中身の幅として扱う（枠と余白で中身が欠けないように） */
body.intra main input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden])[style*="width:"]:not([style*="width:100%"]):not([style*="min-width:"]) { box-sizing: content-box; height: calc(2.125rem - 2px); }
body.intra main input:focus, body.intra main select:focus, body.intra main textarea:focus { outline: 2px solid #93c5fd; outline-offset: 0; border-color: #3b82f6; }
body.intra main input[type=file] { vertical-align: middle; font-size: .85rem; }
/* form-grid: ラベルを「文字（＋必須の *）」の行と入力欄の行に組み直し、行の下端で揃える（* が入力欄の下に落ち、ラベルごとに入力欄の高さがずれていた）。
   入れ子のラベル（ビジネスロール）・チェックボックスのラベル・文字に <strong> などを含むラベル（順序が入れ替わるため）は対象外。チェックボックスは横幅いっぱいに伸ばさない */
body.intra .form-grid { align-items: end; }
body.intra .form-grid label:not(:has(label, input[type=checkbox], input[type=radio], > :not(input, select, textarea, datalist))) { display: flex; flex-wrap: wrap; align-items: baseline; align-content: flex-start; row-gap: .2rem; }
body.intra .form-grid label:not(:has(label, input[type=checkbox], input[type=radio], > :not(input, select, textarea, datalist))) > * { order: 2; }
body.intra .form-grid label:not(:has(label, input[type=checkbox], input[type=radio], > :not(input, select, textarea, datalist))) > :is(input, select, textarea) { flex: 1 0 100%; margin-top: 0; }
body.intra .form-grid label.required::after { order: 1; }
body.intra .form-grid label.required:has(label) { display: flex; flex-wrap: wrap; align-items: center; }
body.intra .form-grid label.required:has(label)::before { content: ""; order: 2; flex-basis: 100%; height: 0; }
body.intra .form-grid label.required:has(label) > * { order: 3; }
body.intra .form-grid input[type=checkbox], body.intra .form-grid input[type=radio] { width: auto; margin: 0 .35rem 0 0; vertical-align: middle; }
body.intra .form-grid > label:has(> input[type=checkbox]):not(:has(label)) { display: flex; align-items: center; min-height: 2.125rem; }
body.intra .form-grid > div.wide { font-size: .85rem; color: #334155; }
/* 絞り込み・操作の帯: ラベルは入力欄の上、入力・ボタンの下端を揃える（ラベル幅は入力欄に合わせて伸びる） */
body.intra form.filters { gap: .5rem .6rem; align-items: flex-end; }
body.intra form.filters > div { display: flex; gap: .35rem; align-items: flex-end; }
body.intra form.filters label { display: flex; flex-direction: column; align-items: flex-start; gap: .15rem; }
body.intra form.filters label:has(> input[type=checkbox]), body.intra form.filters label:has(> input[type=radio]) { flex-direction: row; align-items: center; gap: .3rem; min-height: 2.125rem; }
body.intra form.filters select { max-width: 22rem; }
body.intra form.filters label > input:not([type=checkbox]):not([type=radio]):not([style*="width:"]), body.intra form.filters label > select { align-self: stretch; }
body.intra .actions { flex-wrap: wrap; gap: .4rem .5rem; }
body.intra main > p a, body.intra .actions a { white-space: nowrap; }
/* 全社概要の月次推移: 売上とマージンの 2 値を 1 行に（9em の箱で 2〜3 行に折れていた） */
body.intra .bar-row .bar-value:has(.muted) { width: 20em; white-space: nowrap; }
