/* ★★ここは `CLAUDE.md` §5(モックが画面レイアウトの正)の意図的な例外です★★
(指示書AJ 段階2。D-120 / D-121 と同じ作法で記録してあります)。
★ユーザー指示の原文(2026-09-15)★:
> サイドパネルはメインパネルとスクロールは独立させてください
★モックはこうなっている★: `d-watch-mock.jsx:426` が `minHeight: "100vh"`、
`:429` のサイドバーは `position` 指定なし、`:468` の本文が `overflow: "auto"`。
★★モックにも同じ `overflow: "auto"` が、同じ理由で効かないまま置かれています★★ —
`.shell` が `min-height` だと flex 子の `.main` が内容分まで伸び、
`scrollHeight === clientHeight` になってスクロールコンテナにならないためです。
実装はこれまでモックの1:1移植で、★今回が初めて意図的に外れる変更★です。
★★この注記を消さないこと★★ — 書いておかないと、次にモックと突き合わせた人が
「モックと違う」と判断して `min-height` に戻します(そして画面では
元に戻ったことに気づけません)。★`d-watch-mock.jsx` は1文字も書き換えていません★。
★`height: 100vh` を先に、`height: 100dvh` を後に書くこと(2段指定)★ —
`100dvh` を知らないブラウザは後者を無視して前者が残ります。
`dvh` はモバイルのURLバーが出入りしても画面外にはみ出さないための指定です。 */
.shell {
display: flex;
height: 100vh;
height: 100dvh;
background: var(--bg);
color: var(--tx);
}
.sidebar {
width: 220px;
background: var(--sf);
border-right: 1px solid var(--bd);
display: flex;
flex-direction: column;
flex-shrink: 0;
/* ★サイドバー自身もスクロールさせる★(指示書AJ §5-4)—
メニューは現在約591pxで、点検記録を戻すと約628px、総清掃面積の画面を足すと
約665〜699pxになります。ノートPCのブラウザ内寸は600〜700pxなので、
★これが無いと下のメニューに手が届かなくなります★。 */
overflow-y: auto;
}
/* ★ロゴ(1行目)とボタン2つ(2行目)を行で分ける★(2026-10-01 ユーザー指摘「EN と JP を切り替えると
言語切替ボタンの位置が変わる」)。
以前は3つを1つの flex に入れて `flex-wrap: wrap` で折り返していた。サイドバーの内寸(約187px)に
3つは入らず、★サブタイトルの幅で折り返し位置が変わっていた★ —
日本語「DFAロボット監視システム」ではテーマ切替が1行目に残って言語ボタンだけ2行目の左端(x=16)、
英語「DFA Robot Monitoring System」ではテーマ切替も2行目に落ち、`space-between` で言語ボタンが
右端(x=167)に跳んでいた(実測。ブラウザ、2026-10-01)。
★折り返しに任せず、ボタンの行を固定する★ので、言語を切り替えてもボタンは動かない。
モック(`d-watch-mock.jsx`)は3つを1行に並べているが、同じ幅に入りきらない(はみ出す)ため従っていない。 */
.brand {
padding: 20px 16px;
border-bottom: 1px solid var(--bd);
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 10px;
}
/* ★言語ボタンを先に置く★ — 日本語表示で見えていた位置(左端)を、言語によらず保つため */
.brandActions {
display: flex;
align-items: center;
gap: 6px;
}
.brandLeft {
display: flex;
align-items: center;
gap: 10px;
}
.logoName {
font-size: 16px;
font-weight: 700;
color: var(--pr);
}
.logoSub {
font-size: 9px;
/* ★行の高さを固定する★ — 既定の `normal` だと日本語と英語でフォントごとに高さが変わり、
言語を切り替えるとその下のメニューが1px上下していた(実測 117px ↔ 116px。2026-10-01) */
line-height: 13px;
color: var(--tx-m);
margin-top: 1px;
}
.iconBtn {
width: 32px;
height: 32px;
border-radius: 8px;
border: 1px solid var(--bd);
background: var(--sf-h);
cursor: pointer;
font-size: 14px;
color: var(--tx);
}
.langBtn {
/* ★幅を固定する★ — 「EN」と「JP」で文字幅が違い、隣のテーマ切替が0.7px横にずれていた(2026-10-01) */
width: 40px;
text-align: center;
font-size: 11px;
font-weight: 600;
padding: 6px 0;
border-radius: 8px;
border: 1px solid var(--bd);
cursor: pointer;
letter-spacing: 0.5px;
}
.nav {
padding: 12px 8px;
flex: 1;
}
.section {
font-size: 10px;
color: var(--tx-m);
padding: 16px 12px 8px;
text-transform: uppercase;
letter-spacing: 1.2px;
}
.navItem {
padding: 10px 12px;
border-radius: 8px;
cursor: pointer;
font-size: 13px;
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 2px;
color: var(--tx-d);
}
.navItem:hover {
background: color-mix(in srgb, var(--pr) 8%, transparent);
}
.navItemActive {
background: var(--pr-d);
color: var(--pr);
}
.footer {
padding: 12px 16px;
border-top: 1px solid var(--bd);
font-size: 11px;
color: var(--tx-m);
}
.main {
flex: 1;
/* `.shell` を `height` にして初めてこれが効きます(それまでは書いてあっても無効でした) */
overflow: auto;
padding: 24px 32px;
}
/* ★★印刷の退避(指示書AJ §5-5)★★
`.shell` を `height: 100vh` に固定すると、ブラウザの「印刷」で★1画面分しか出ません★。
★これを入れ忘れると、印刷したときに初めて気づきます — 画面では絶対に分かりません★。 */
@media print {
.shell {
height: auto;
}
.main {
overflow: visible;
}
}