.page {
min-width: 0;
}
/* モックはタイトルと検索欄を左右に振り分けている(d-watch-mock.jsx の robot 画面) */
.header {
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
flex-wrap: wrap;
margin-bottom: 24px;
}
.title {
font-size: 22px;
font-weight: 700;
margin: 0;
}
.searchInput {
font-size: 12px;
padding: 6px 12px;
border-radius: 6px;
border: 1px solid var(--bd);
background: var(--sf-h);
color: var(--tx);
width: 200px;
}
.card {
background: var(--sf);
border: 1px solid var(--bd);
border-radius: 12px;
overflow: hidden;
}
/* 10列あるため、狭い画面では表だけを横スクロールさせる(ページ全体は横に伸ばさない) */
.tableWrap {
overflow-x: auto;
}
/* ★`min-width: 1300px` を増やさないこと★(親の幅 1154px(縦スクロールバーが出ると約 1139px)を既に超えて横スクロールが出ている。
下の .col* の合計 1300px(住所列 170px を含む)で収めてある。★min-width = 全列の幅の合計★を保つこと) */
.table {
width: 100%;
border-collapse: collapse;
min-width: 1300px;
/* ★列幅を言語によらず固定する★(2026-10-01 ユーザー指摘「言語切り替え時に表などの位置も動く」)。
既定の auto は見出しの文字で列幅が決まるため、JP/EN を切り替えると列ごとに最大29px 動いていた。
幅は TSX の <colgroup> に付けた .col* で決める */
table-layout: fixed;
}
/*
* ---- 列幅(★JP と EN の見出しの広い方を下回らないこと★)----
* 見出しは 11px・太字・字間0.6px・左右余白 計24px・折り返し禁止(.th)。
* 幅は余白込みの列幅。測定値は 2026-10-01 監督の実測(画面幅1440px・auto 時の列幅 JP/EN)。
* ★住所列にも幅を付け、表の余った幅は全列に幅の比で配る★(ユーザー指示 2026-10-06
* 「3つとも同じように調整して」。D-167 追記。旧: 住所列だけ幅を付けず余りを全部受け持っていたため、
* 広い画面では住所列だけが大きく広がっていた)。全列に幅があると table-layout: fixed は
* 余りを各列の幅の比で配る。
* 見出しの訳語を変えたら、ここの幅も見直すこと(lib/i18n.ts)。
*/
/* 施設名 / FACILITY(実測 237/215)。見出しは EN の約88px。
中身は施設名で長いもの(例: 25文字)は2行に折り返す。よくある12文字前後は1行に収まる幅 */
.colName {
width: 190px;
}
/* 都道府県 / PREFECTURE(実測 83/105)。EN 見出し約105px が最大。中身「神奈川県」は約72px */
.colPrefecture {
width: 108px;
}
/* 住所 / ADDRESS(D-167 追記)。旧来の最小時の幅(1300 - 他の列 1130 = 170px)をそのまま付けたので
min-width は変わらない。長い住所は .tdMuted で列の中で折り返す */
.colAddress {
width: 170px;
}
/* 電話番号 / PHONE(実測 125/114)。中身が折り返し禁止(.tdPhone)なので中身で決める。
「0120-000-0000」級の13文字で約116px */
.colPhone {
width: 120px;
}
/* 責任者名 / MANAGER(実測 81/87)・担当者名 / CONTACT(実測 81/83)の共用。
EN 見出し MANAGER 約87px が最大。氏名は空白で折り返せる */
.colPerson {
width: 92px;
}
/* メール / EMAIL(実測 58/63)。実データは現状ほぼ空("-")だが、アドレスが入ると
20文字で約132px あるため、見出しより広めに取り .tdEmail で途中改行させる */
.colEmail {
width: 120px;
}
/* 監視 / MONITOR(実測 54/83)。EN 見出し約83px が最大。中身は ○ / ー のみ */
.colMonitor {
width: 88px;
}
/* D-SEC(実測 71/64。JP/EN とも同じ文字列)。中身は ○ / ー のみ */
.colDsec {
width: 72px;
}
/* ロボット(メーカー / 機種 / シリアル)/ ROBOT (MAKER / MODEL / SERIAL)(実測 236/238)。
見出しが最も長い列。EN 約238px を下回らないよう余裕を持たせる。
中身(メーカー・機種・シリアル)は約210px。「未対応」バッジが付くと超えるので .robotRow で折り返す */
.colRobots {
width: 248px;
}
.th {
padding: 10px 12px;
font-size: 11px;
color: var(--tx-m);
text-transform: uppercase;
letter-spacing: 0.6px;
border-bottom: 1px solid var(--bd);
white-space: nowrap;
font-weight: 600;
text-align: left;
}
.thCenter {
padding: 10px 12px;
font-size: 11px;
color: var(--tx-m);
text-transform: uppercase;
letter-spacing: 0.6px;
border-bottom: 1px solid var(--bd);
white-space: nowrap;
font-weight: 600;
text-align: center;
}
/* ロボットを複数台持つ施設では行が高くなる。上揃えにしないと
1台目のピルと施設名が縦にずれる */
.row {
border-bottom: 1px solid color-mix(in srgb, var(--bd) 13%, transparent);
vertical-align: top;
}
.td {
padding: 12px;
font-size: 13px;
color: var(--tx);
overflow-wrap: anywhere;
}
/* 列幅を固定したので、長い英数字(空白の無い文字列)がセルからはみ出さないよう
どこでも折り返せるようにする(.tdName / .tdMuted / .td / .tdEmail) */
.tdName {
padding: 12px;
font-size: 13px;
color: var(--tx);
font-weight: 600;
overflow-wrap: anywhere;
}
.tdMuted {
padding: 12px;
font-size: 12px;
color: var(--tx-d);
overflow-wrap: anywhere;
}
.tdPhone {
padding: 12px;
font-size: 12px;
color: var(--tx-d);
white-space: nowrap;
}
.tdEmail {
padding: 12px;
font-size: 11px;
font-family: var(--font-geist-mono), ui-monospace, monospace;
color: var(--tx-d);
overflow-wrap: anywhere;
}
.tdMark {
padding: 12px;
text-align: center;
font-size: 16px;
}
.markOn {
color: var(--ok);
}
/* D-Sec は監視(緑)と区別するためアクセント色(シアン) */
.markOnSec {
color: var(--ac);
}
.markOff {
color: var(--tx-m);
}
.tdRobots {
padding: 12px;
}
/* 列幅を固定したので、「未対応」バッジ付きで1行に収まらない場合はシリアルを次の行へ送る
(折り返さないと隣の列の外=表の右端へはみ出す) */
.robotRow {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 4px 6px;
}
/* 1台1行。2台目以降だけ間隔を空ける(最終行に余白を残さない) */
.robotRow + .robotRow {
margin-top: 6px;
}
.robotModel {
font-size: 12px;
color: var(--tx);
}
.robotSerial {
font-size: 11px;
font-family: var(--font-geist-mono), ui-monospace, monospace;
color: var(--tx-m);
}
/*
* ★旧フッタ(`全{n}施設`)は components/ui/Pagination に置き換えた(指示書AA 段階5)★
* 件数表示の文言と `.footer` のスタイルは Pagination.module.css 側にある。
*/
.empty {
padding: 24px 20px;
font-size: 13px;
color: var(--tx-m);
text-align: center;
background: var(--sf);
border: 1px solid var(--bd);
border-radius: 12px;
}
.error {
padding: 16px 20px;
font-size: 13px;
color: var(--ng);
}
.loading {
padding: 24px 20px;
font-size: 13px;
color: var(--tx-m);
text-align: center;
}