const style=document.createElement('style'); style.textContent=` /* ========================================================================== 1. 変数定義 (Design Tokens) ========================================================================== */ :root { /* ==================== カラーパレット ==================== */ /* --- ブランドカラー / アクセント --- */ --color-main: #004080; /* メインカラー */ --color-accent: #50c6ff; /* アクセント補助色 */ --color-primary: #2b6cb0; /* プライマリーカラー */ --color-error: #d9534f; /* エラー強調色 */ --color-ui-active: #abc3d9; /* UIの強調・アクティブ時の質感用 */ /* --- テキスト / リンク --- */ --color-text: #2d3748; /* 汎用文字色 */ --color-auxiliary: #8290a1; /* 補助文字色 / 注意書きなど */ --color-link: #0056b3; /* リンク文字色 */ --color-white: #f5faf9; /* 白系文字色 */ /* --- 背景色 --- */ --bg-card: #fcfcfc; --bg-header: rgba(230, 242, 255, 0.98); /* ヘッダー背景 */ --bg-dark: rgba(20, 25, 30, 0.9); /* ダーク背景 */ --bg-light: rgba(230, 239, 248, 0.9); /* ライト背景 */ --bg-error: #fff5f5; /* エラー背景 */ --bg-hover: rgba(255, 255, 255, 0.1); /* ホバー時背景 */ --bg-input: #f8fafc ; /* 入力フィールド背景 */ --bg-button: #596674; /* ボタン背景 */ --bg-button-hover: #6b7b92; /* ボタンホバー背景 */ --border-color: #cfdde6; /* ボーダー色 */ /* ==================== タイポグラフィ ==================== */ --main-font: 'Segoe UI', sans-serif; /* --- フォントサイズ --- */ --fz-small: 0.675rem; /* 10.8px */ --fz-normal: 0.75rem; /* 12px */ --fz-medium: 0.875rem; /* 14px */ --fz-body: 1rem; /* 16px */ /* --- フォントウェイト --- */ --fw-normal: 400; --fw-medium: 500; --fw-semi-bold: 600; --fw-bold: 700; --fw-extra-bold: 800; /* ==================== シャドウ / 視覚効果 ==================== */ --glow-blue: rgba(0, 100, 255, 0.25); --glow-accent: 0 0 15px rgba(0, 229, 255, 0.4); --shadow-light: rgba(255, 255, 255, 0.8); --shadow-dark: rgba(174, 194, 224, 0.6); /* --- 外側の影(浮き出し・Neumorphism) --- */ --box-shadow-normal: 2px 2px 4px rgba(80, 120, 160, 0.25), -2px -2px 4px rgba(255, 255, 255, 0.4); --box-shadow-raise: 4px 4px 10px rgba(163, 177, 198, 0.4), -4px -4px 10px rgba(255, 255, 255, 0.9); /* --- 発光エフェクト(Glow) --- */ --box-shadow-glow: 0 0 8px rgba(80, 198, 255, 0.4), 0 0 16px rgba(80, 198, 255, 0.1), inset 0 0 4px rgba(80, 198, 255, 0.2); /* --- 内側の影(窪み・Focus) --- */ --box-shadow-inset: inset 2px 2px 4px rgba(80, 120, 160, 0.25), inset -2px -2px 4px rgba(255, 255, 255, 0.4); --box-shadow-focus: inset -1px -1px 3px rgba(255, 255, 255, 0.8), inset 1px 1px 3px rgba(0, 0, 0, 0.05), 0 0 18px var(--glow-blue); /* ==================== レイアウト / サイズ ==================== */ --w-container: 70rem; /* 最大コンテナ幅 */ --block-size: 0.5625rem; /* 基本単位(9px) */ /* --- 角丸 --- */ --radius-small: 8px; --radius-normal: 1rem; --radius-large: 2rem; /* ==================== アニメーション設定 ==================== */ --dur-action: 0.05s; /* フォーカス・クリック時(爆速) */ --dur-snappy: 0.1s; /* 通常のホバー・切り替え(キビキビ) */ --dur-open: 0.25s; /* アコーディオン・フェードイン(滑らか) */ --ease-snappy: ease-out; /* 初動が速い */ --ease-torne: cubic-bezier(0.4, 0, 0.2, 1); /* torne風の滑らかな加減速 */ /* フォーム用トランジションセット */ --tr-form: background var(--dur-snappy) var(--ease-snappy), box-shadow var(--dur-snappy) var(--ease-snappy), color var(--dur-snappy) var(--ease-snappy), transform var(--dur-snappy) var(--ease-snappy); /* ==================== アイコン / 画像パス ==================== */ --search-icon-path-white: url('data:image/svg+xml;utf8,'); --search-icon-path-black: url('data:image/svg+xml;utf8,'); --close-btn-icon-path: url('data:image/svg+xml;utf8,'); } /* ========================================================================== 2. ベーススタイル / リセット ========================================================================== */ *, *::before, *::after { box-sizing: border-box; -webkit-tap-highlight-color: transparent; /* スマホのデフォルト機能である「タップした時に出る半透明の青い四角」を消しています */ } body { /* 1. 配置・レイアウト(要素をどこに置くか) */ display: flex; flex-direction: column; /* justify-content: center; */ align-items: stretch; min-height: 100vh; margin: 0; padding: 0; /* 2. 背景・外観(箱の見た目) */ background: linear-gradient(135deg, #f0f4f8 0%, #d9e2ec 100%); /* 3. タイポグラフィ(中身の文字のルール) */ color: var(--color-text); font-family: var(--main-font); line-height: 1.6; letter-spacing: 0.16px; word-break: break-all; } /* --- リンク文字(シンプル・最適化版) --- */ a { /* 文字装飾 */ color: var(--color-link); font-weight: var(--fw-bold); text-decoration: none; opacity: 0.8; /* 文章中での折り返し設定 */ word-break: break-word; } /* hover / focus-visible */ /* :focus ではなく :focus-visible を使うことで、キーボード操作時のみ枠線が出る現代的な仕様になります */ a:hover, a:focus-visible { outline: none; opacity: 1; } a:active { opacity: 0.7; transition: opacity var(--dur-action) var(--ease-snappy); } /* リンク先がないもの、または自分自身を指すリンク(#)で色を変えたくない場合のみ、 以下のように個別に上書きする方が管理が楽です */ a:not([href]), a[href="#"] { opacity: 1; color: inherit; cursor: default; } menu, ol, ul { list-style: none; margin: 0; padding: 0; } /* ========================================================================== 3. レイアウト・共通コンテナ ========================================================================== */ .u-container { --size: var(--w-container); --padding: 1.5rem; inline-size: 100%; margin-inline: auto; max-inline-size: calc(var(--size) + var(--padding) * 2); padding-inline: var(--padding); } /* --- mainBody --- */ .mainBody { display: grid; align-items: start; grid-template-columns: 280px 1fr; gap: 1.5rem; --size: var(--w-container); --padding: 1.5rem; inline-size: 100%; margin-inline: auto; padding-inline: var(--padding); margin-bottom: 40px; } @media screen and (max-width: 1360px) { .mainBody { display: block; } } /* ヘッダー */ .header { width: 100%; /* background-color: rgba(255, 255, 255, 0.88); */ position: sticky; top: 0; z-index: 1; overflow: auto; word-break: normal; /* box-shadow: 5px 5px 6px #c9d6e6, -5px -5px 6px #ffffff; */ } .header::before { content: ""; position: absolute; inset: 0; backdrop-filter: blur(0.5rem); -webkit-backdrop-filter: blur(0.5rem); z-index: -1; } .header__content { display: flex; justify-content: space-between; align-items: center; } .header__nav { display: flex; align-items: center; } .header-menu { display: flex; gap: 0.5rem; list-style: none; margin: 0; padding: 0; line-height: 1; } .header-item { display: flex; align-items: center; gap: 0.5rem; padding-block: var(--block-size); background: none; border: none; appearance: none; color: var(--color-text); font-size: 0.875rem; /* ≒ 14px */ font-weight: var(--fw-semi-bold); letter-spacing: 0.04em; line-height: 1; text-align: left; text-decoration: none; cursor: pointer; } /* ========================================================================== 4. 見出し・テキスト装飾 ========================================================================== */ h1 { font-size: 1.625rem; font-weight: var(--fw-bold); color: var(--color-main); margin-bottom: 1.5rem; line-height: 1.5; } h2.title { font-size: 1.25rem; font-weight: var(--fw-bold); color: var(--color-primary); margin-top: 2rem; padding-left: 0.75rem; } h2.title::before { content: "◆ "; color: var(--color-accent); } h3 { font-size: 1.063rem; font-weight: var(--fw-bold); letter-spacing: .68px; line-height: 1.88235; margin: auto 0; } /* メッセージボックス(通知・エラー) */ p.header_text, p.header_rmesg, p.header_emesg { font-size: 0.9rem; padding: 1rem; margin-bottom: 1.5rem; border-radius: var(--radius-small); } p.header_text { border: 1px solid #b3d7f5; border-left: 4px solid var(--color-accent); color: var(--color-main); } p.header_rmesg { background-color: #e7f4ff; border: 1px solid #a3d1ff; color: #005fa3; } p.header_emesg { background-color: var(--bg-error); border: 1px solid var(--bc-error); color: var(--color-error); } span { line-height: 1.85; } @media (max-width: 768px) { h1 { font-size: 1.1rem; } } /* ========================================================================== 5. フォーム基本要素 (Input, Select, Textarea) ========================================================================== */ /* 入力フィールド共通(ネオモーフィズム風) */ input[type="text"], textarea, select, .data.file input[type="file"] { width: auto; padding: 0.3rem; border: none; border-radius: var(--radius-large); background: var(--bg-light); box-shadow: var(--box-shadow-inset); font-family: var(--main-font); font-size: var(--fz-normal) !important; color: currentColor; transition: var(--tr-form); overflow-anchor: none; scrollbar-width: thin; scrollbar-color: #b1b9c4 #f0f4f7; } /* テキストエリア個別設定 */ textarea { width: 100% !important; min-width: clamp(200px, 30%, 100%); min-height: 100px; border-radius: var(--radius-small); font-size: 0.85rem; color: var(--color-text) !important; } /* セレクトボックス個別設定 */ select { /* 1. 配置・表示(ブラウザ標準の矢印を消す) */ appearance: none; -webkit-appearance: none; /* 2. 余白(右側に矢印があるため、右パディングを少し広げる) */ /* padding: 0.3rem 1rem 0.3rem 0.3rem; */ /* 3. 背景(個別に指定してアイコンを守る) */ /* background-color: var(--bg-light); */ /* ここはあえて個別のまま */ /* background-image: url('data:image/svg+xml;charset=UTF-8,'); */ /* background-repeat: no-repeat; */ /* background-position: right 0.4rem center; */ /* background-size: 0.6rem; */ cursor: pointer; /* 4. タイポグラフィ */ text-align: center; } /* 1. ファイル入力エリア本体 */ .data.file input[type="file"] { /* 1. 配置・表示(ボックスモデルの根幹) */ display: block; /* もし未設定なら追加推奨 */ position: relative; min-height: 6rem; margin-bottom: 1rem; /* 2. 余白・枠線(箱の形を整える) */ padding: 3.5rem 2rem 0; border-radius: var(--radius-normal); /* 3. 背景・カーソル(表面のデザイン) */ background: var(--bg-light); /* 共通設定にあると思いますがここでも意識 */ cursor: pointer; /* 4. テキスト・フォント(中身の見た目) */ color: var(--color-main); font-size: smaller; font-weight: var(--fw-bold); line-height: 1.2; text-align: left; } /* 2. 「+」アイコンの演出 */ .data.file input[type="file"]::before { content: "+"; position: absolute; top: 1rem; left: 50%; transform: translateX(-50%); font-size: 2rem; font-weight: var(--fw-bold); color: var(--color-accent); line-height: 1; pointer-events: none; transition: opacity 0.2s ease; } /* 3. 標準ボタンの非表示(共通設定) */ .data.file input[type="file"]::file-selector-button, .data.file input[type="file"]::-webkit-file-upload-button { display: none; } /* 4. 操作時(クリック中や選択直後)に「+」を消す */ .data.file input[type="file"]:focus::before, .data.file input[type="file"]:active::before { opacity: 0; } /* フォーカス時共通 */ input[type="text"]:focus, textarea:focus, select:focus, .data.file input[type="file"]:focus { outline: none; background-color: var(--bg-input); box-shadow: var(--box-shadow-focus); transition-duration: var(--dur-action); } /* ========================================================================== 6. ラジオボタン・チェックボックス (ボタン風スタイル) ========================================================================== */ /* ラベル全体のスタイル */ label { display: flex; align-items: center; justify-content: center; width: 100%; padding: 0.3rem; border-radius: var(--radius-large); background: var(--bg-light); box-shadow: var(--box-shadow-inset); cursor: pointer; transition: var(--tr-form); position: relative; /* for absolute input */ } /* --- input本体を非表示に --- */ label input[type="radio"], label input[type="checkbox"] { position: absolute; opacity: 0; pointer-events: none; } /* チェックされた時のスタイル(has対応ブラウザ) */ label:has(input:checked) { background: var(--color-accent); color: #fff; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1) inset; transition-duration: var(--dur-action); } /* inputにフォーカスが当たったら、それを含むlabelにスタイルを当てる */ label:has(input:focus-visible) { box-shadow: 0 0 8px var(--glow-blue); } /* テキスト部分のスタイル */ label>span { display: flex; align-items: center; justify-content: center; } /* ========================================================================== 7. フォームの各ラベルとバリデーション ========================================================================== */ /* 一覧検索フォーム -------------------------*/ table.smp-search-form-table { width: 100%; margin: 0 auto; /* センタリング */ border-radius: var(--radius-normal); overflow: hidden; box-shadow: 0 4px 12px rgba(0, 64, 128, 0.1); } /* 基本設定 */ table.smp-search-form-table tr { width: 100% !important; } table.smp-search-form-table td { padding: 5px 0px !important; border: none !important; /* 罫線を一旦消す */ background: var(--bg-card) !important; font-size: var(--fz-small) !important; color: var(--color-auxiliary); } /* 項目タイトルtdの基本設定 */ table.smp-search-form-table td.smp-sf-head { display: block; width: 100% !important; padding: 5px !important; background: var(--bg-header) !important; font-size: var(--fz-normal) !important; font-weight: var(--fw-semi-bold) !important; color: var(--color-main) !important; line-height: 140%; text-align: center; } /* 入力欄tdの基本設定 */ table.smp-search-form-table td.smp-sf-body { display: block; width: 100% !important; padding: 5px !important; background: var(--bg-card) !important; line-height: 140%; } table.smp-search-form-table td.smp-sf-body .notice { font-size: var(--fz-small) !important; } /* inputを入力しやすくする */ table.smp-search-form-table td.smp-sf-body input { width: 39%; margin: 5px 0; padding: 0.6rem; color: var(--color-text) !important; } table.smp-search-form-table td.smp-sf-body input:focus { outline: none; background: var(--bg-input); box-shadow: var(--box-shadow-focus); } /* チェックボックスを見やすくする */ table.smp-search-form-table td.smp-sf-body label { display: inline; margin: 5px 0px; } /* 検索ボタンを大きくする */ table.smp-search-form-table input[type="submit"] { margin: 10px auto !important; padding: 8px 40px; border: none; border-radius: var(--radius-large); outline: none; color: var(--color-white); font-size: var(--fz-medium); font-weight: var(--fw-bold); background-color: var(--bg-button); box-shadow: var(--box-shadow-normal); cursor: pointer; transition: var(--tr-form); } table.smp-search-form-table input[type="submit"]:hover, table.smp-search-form-table input[type="submit"]:focus { outline: none; box-shadow: var(--box-shadow-focus); } table.smp-search-form-table input[type="submit"]:active { box-shadow: var(--box-shadow-inset); transform: scale(0.98); transition: transform var(--dur-action) var(--ease-snappy), box-shadow var(--dur-action) var(--ease-snappy), filter var(--dur-action) var(--ease-snappy); } table.smp-search-form-table select { } /* 一覧表 -------------------------*/ table.smp-table { width: 100%; border-collapse: collapse; /* 隙間をなくして一体感を出す */ border-spacing: 0; /* 背景色は指定せず、枠線も各画面のtdに任せる */ background: transparent; } /* ソート行の基本設定 */ table.smp-table tr.smp-row-sort { position: sticky; top: 2rem; z-index: 1; background: var(--bg-header); color: var(--color-main); /* box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); */ border: solid var(--border-color); border-width: 0 0 2px 0; } table.smp-table td { border: none !important; font-size: var(--fz-normal) !important; } table.smp-table td.smp-cell-sort { background: transparent !important; color: currentColor !important; /* text-transform: uppercase; */ font-size: var(--fz-small) !important; letter-spacing: 0.1em; text-align: left; } /* ソート行のリンクデザイン */ table.smp-table td.smp-cell-sort a { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; margin: 0 auto !important; color: currentColor !important; } /* table.smp-table td.smp-cell-sort a:hover { -webkit-line-clamp: unset; display: block; white-space: normal; max-height: 1000px; } */ /* データ行の基本設定 */ table.smp-table td.smp-cell-data { /* 1. レイアウト・配置 */ text-align: left; /* 2. サイズ・余白 */ padding: 10px 3px !important; line-height: 140%; /* 3. 背景・枠線 */ background: none !important; /* 4. 文字装飾 */ color: var(--color-auxiliary) !important; font-weight: var(--fw-medium); } /* データ行のリンクデザイン */ table.smp-table td.smp-cell-data a { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; width: 100%; } /* table.smp-table td.smp-cell-data a:hover { -webkit-line-clamp: unset; display: block; white-space: normal; max-height: 1000px; } */ table.smp-table tr.smp-row-sort td.smp-cell:last-child, table.smp-table tr.smp-row-data td.smp-cell:last-child { padding: 0; border: none; } /* 奇数行目と偶数行目で背景色を変更 */ table.smp-table tr.smp-row-data:nth-child(odd) { background: var(--bg-card); } table.smp-table tr.smp-row-data:nth-child(even) { background: var(--bg-card); } table.smp-table tr.smp-row-data { border: solid var(--bg-header); border-width: 0 0 1px 0; transition: box-shadow var(--dur-action) var(--ease-snappy); } table.smp-table tr.smp-row-data:hover { --bg-hover: rgba(220, 238, 255, 1); background: var(--bg-hover); } /* 変更選択時の色 */ table.smp-table tr.smp-be-operate td.smp-cell-data { background: rgba(222, 245, 237, 0.9) !important; } /* 表以外の基本設定 */ table.smp-table tr.smp-row-normal td { padding-top: 0; border: none !important; /* 不要な罫線の削除 */ font-size: 0.8125rem !important; font-weight: var(--fw-medium) !important; letter-spacing: .13px; } /* 一覧表の付属ボタン */ table.smp-table input[name="smp-table-submit-button"], table.smp-table .smp-table-button { } table.smp-table input[name="smp-table-submit-button"]:hover, table.smp-table .smp-table-button:hover { } /* 件数セレクトの調整 */ table.smp-table tr.smp-row-normal select { margin: 0 5px; padding: 5px 10px 5px 10px; background-color: transparent; color: var(--color-auxiliary); font-weight: var(--fw-medium); } table.smp-table tr.smp-row-normal select:focus { background-color: var(--bg-input); color: var(--color-auxiliary); } /* 編集列テキストフィールドの調整 */ table.smp-table td.smp-cell-data input[type=text] { width: 100% !important; border-radius: var(--radius-small); } /* 編集列テキストエリアの調整 */ table.smp-table td.smp-cell-data textarea { } table.smp-table td.smp-cell-data input[type=text]:focus, table.smp-table td.smp-cell-data textarea:focus { background-color: var(--bg-input) !important; } /* 編集列セレクトの調整 */ table.smp-table td.smp-cell-data select { width: fit-content !important; margin: 0 auto; font-size: var(--fz-small) !important; color: var(--color-auxiliary) !important; } @media screen and (max-width: 960px) { table.smp-table td.smp-cell-data select { width: 100% !important; } } /* 一覧表ページャー -------------------------*/ table.smp-table tr.smp-row-normal table.smp-pager { display: flex; justify-content: flex-end; float: right; margin: 10px auto; border-collapse: separate; border-spacing: 5px 10px !important; } table.smp-pager tbody tr { width: 100%; display: flex; justify-content: flex-end; align-items: center; gap: 0.3rem; } /* ページャー基本設定 */ table.smp-table tr.smp-row-normal table.smp-pager { /* 除外 td.smp-page */ font-size: 16px; line-height: 1; text-align: center; } /* リンクエリア拡張 */ table.smp-table tr.smp-row-normal table.smp-pager td.smp-page a { display: block; padding: 5px 15px; border-radius: var(--radius-normal); color: var(--color-auxiliary); text-decoration: none; box-shadow: var(--box-shadow-normal); } table.smp-table tr.smp-row-normal table.smp-pager td.smp-page a:hover, table.smp-table tr.smp-row-normal table.smp-pager td.smp-page a:focus { outline: none; color: var(--color-auxiliary); } table.smp-table tr.smp-row-normal table.smp-pager td.smp-page a:active { color: var(--color-ui-active); box-shadow: var(--box-shadow-inset); transform: scale(0.98); transition: transform var(--dur-action) linear, box-shadow var(--dur-action) linear, color var(--dur-action) linear; } /* 現在のページ */ table.smp-table tr.smp-row-normal table.smp-pager td.smp-current-page { display: block; padding: 5px 15px; border-radius: var(--radius-normal); color: var(--color-ui-active); font-weight: var(--fw-bold) !important; text-decoration: none; box-shadow: var(--box-shadow-inset); } /* 省略記号 */ table.smp-table tr.smp-row-normal table.smp-pager td.smp-page-space { border: none !important; } /* 表のtdをスマホ用に段組み */ @media screen and (max-width: 960px) { colgroup { display: block; } table.smp-table td.smp-cell-sort { padding: 0 !important; } table.smp-table td.smp-cell-sort:first-child { display: none; /* チェックを消す */ } table.smp-table tr.smp-row-sort { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); padding: 0.6rem; gap: 0.2rem; position: unset; border: none; border-radius: var(--radius-normal); background: transparent; box-shadow: var(--box-shadow-inset); } table.smp-table tr.smp-row-sort::before { content: "ソート:"; font-weight: var(--fw-bold); font-size: var(--fz-small); } table.smp-table td.smp-cell-sort a { -webkit-line-clamp: 1; padding-inline: 0.3rem; } /* データ行をレスポンシブに */ table.smp-table td { display: block; width: 100%; } /* ページャーのtableへの影響を元に戻す */ table.smp-table tr.smp-row-normal table.smp-pager td { display: table-cell; width: auto; } /* データ行の文字揃えを左寄りにして、罫線を消す */ table.smp-table td.smp-cell-data { display: grid; grid-template-columns: minmax(140px, 40%) 1fr; gap: 12px; align-items: center; border-width: 0 !important; font-size: var(--fz-medium) !important; } table.smp-table td.smp-cell-data:first-child { padding: 0.8rem 0.6rem !important; background: var(--bg-header) !important; border-radius: 0; } /* 3. その他のデータ項目(下のリスト部分) */ table.smp-table td.smp-cell-data:not(:first-child) { padding: 0.4rem 0.6rem !important; } table.smp-table td.smp-cell-data:last-child { padding-bottom: 1rem !important; } table.smp-table tr.smp-row-data { display: block; margin: 1.25rem 0; border-radius: var(--radius-normal); border: 1px solid var(--border-color); overflow: hidden; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); } table.smp-table tr.smp-row-data:hover { background: var(--bg-card); /* スマホでは背景色を変えず */ box-shadow: none; } table.smp-table tr.smp-row-normal table.smp-pager { display: flex; justify-content: center; } table.smp-table tr.smp-row-normal table.smp-pager td.smp-page a, table.smp-table tr.smp-row-normal table.smp-pager td.smp-current-page { display: flex; justify-content: center; align-items: center; width: 2rem; aspect-ratio: 1 / 1; padding: 0; } /* 一覧項目タイトルのデザイン */ .subtitle { display: flex; align-items: center; height: 100%; padding: 2px 8px; border-radius: 4px; background: #525b6c; font-size: 0.7rem; color: #fff; font-weight: var(--fw-bold); letter-spacing: 0.05em; } /* 変更選択時(行全体が緑系になった時)の微調整 */ table.smp-table tr.smp-be-operate .subtitle { /* ラベルの色を少しだけ明るく、または緑に寄せると「選択中」がより強調されます */ background: #3d4a5e; box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.2); /* わずかな縁取り */ } } @media screen and (max-width: 767px) { table.smp-table td.smp-cell-data { display: flex; flex-direction: column; align-items: flex-start; gap: 0.3rem; } } /* ========================================================================== 8. 送信・操作ボタン ========================================================================== */ /* 一覧表の付属ボタン */ table.smp-table input[type="button"], table.smp-table input[type="submit"], table.smp-table .smp-table-button, table.smp-table input[name="smp-table-submit-button"], input[type="button"] { margin: 5px 0; padding: 5px 15px; border: none; border-radius: var(--radius-large); outline: none; color: var(--color-auxiliary); font-size: var(--fz-normal); font-weight: var(--fw-bold); background: transparent; box-shadow: var(--box-shadow-normal); cursor: pointer; transition: var(--tr-form); } table.smp-table input[type="button"]:hover, table.smp-table input[type="submit"]:hover, table.smp-table .smp-table-button:hover, table.smp-table input[name="smp-table-submit-button"]:hover, input[type="button"]:hover, table.smp-table input[type="button"]:focus, table.smp-table input[type="submit"]:focus, table.smp-table .smp-table-button:focus, table.smp-table input[name="smp-table-submit-button"]:focus, input[type="button"]:focus { outline: none; } table.smp-table input[type="button"]:active, table.smp-table input[type="submit"]:active, table.smp-table .smp-table-button:active, table.smp-table input[name="smp-table-submit-button"]:active, input[type="button"]:active { box-shadow: var(--box-shadow-inset); transform: scale(0.98); transition: transform var(--dur-action) var(--ease-snappy), box-shadow var(--dur-action) var(--ease-snappy), color var(--dur-action) var(--ease-snappy); } /* ========================================================================== 9. 特殊レイアウト (定義リスト・インライン入力・表) ========================================================================== */ .searchToggleBtn { /* デフォルトは非表示、必要な時だけメディアクエリで display を変える */ display: none; cursor: pointer; /* レイアウト・形状(あらかじめ記述) */ width: 60px; height: 60px; border-radius: 50%; /* 質感・色(あらかじめ記述) */ background-color: var(--bg-button); background-image: var(--search-icon-path-white); background-repeat: no-repeat; background-position: center; background-size: 16px; /* アイコンを少し大きくしても良いかも */ box-shadow: var(--box-shadow-normal); /* その他 */ z-index: 1; /* 他の要素に隠れないように */ font-size: 0; transition: var(--tr-form); } .searchToggleBtn:hover { outline: none; box-shadow: var(--box-shadow-focus); } .searchToggleBtn:active { box-shadow: var(--box-shadow-inset); transform: scale(0.98); transition: transform var(--dur-action) var(--ease-snappy), box-shadow var(--dur-action) var(--ease-snappy), filter var(--dur-action) var(--ease-snappy); } .smp-search-form { position: sticky; top: 2rem; overflow: auto; height: calc(100vh - 60px); padding: 0.3rem; padding-bottom: 2rem; overflow-y: auto; overflow-x: hidden; scrollbar-width: thin; scrollbar-color: #b1b9c4 #f0f4f7; } .smp-sf-body div div { display: flex; flex-direction: column; width: 33.333%; white-space: nowrap; text-overflow: ellipsis; } /* --- メディアクエリ --- */ @media screen and (max-width: 1360px) { .searchToggleBtn { display: flex; /* ここで初めて表示させる */ position: fixed; bottom: 20px; right: 20px; } .smp-search-form { position: fixed; inset: 0; display: none; height: 100vh; z-index: 2000; justify-content: center; align-items: unset; overflow-y: auto; } .smp-search-form.is-show { display: flex; z-index: 2; } .smp-search-form form { position: relative; z-index: 2; width: 100%; max-width: 400px; margin: 20px; padding: 1rem; border-radius: 5px; } .smp-search-form .panel_bg { content: ""; position: fixed; inset: 0; background-color: rgba(0, 0, 0, 0.7); } .smp-search-form form .close_btn { display: flex; justify-content: center; align-items: center; position: absolute; top: -5px; right: 5px; width: 30px; height: 30px; border-radius: 30px; background-color: #fff; box-shadow: 0 0 3px rgba(0, 0, 0, 0.7); } .smp-search-form form .close_btn::before, .smp-search-form form .close_btn::after { content: ""; position: absolute; width: 2px; height: 15px; background-color: var(--color-auxiliary); transform: rotate(-45deg); } .smp-search-form form .close_btn::after { transform: rotate(45deg); } .smp-sf-body div div { width: 25%; } } /* --- smp popup --- */ div.smp-popup-filter { background: rgba(0, 0, 0, 0.7); z-index: 2; } div.smp-popup-wrapper { top: 20%; color: var(--color-auxiliary); z-index: 2; } div.smp-popup-header, div.smp-popup-content { background: rgba(255, 255, 255, 0.25); } /* ========================================================================== 10. フッター ========================================================================== */ /* --- spiralSeal --- */ .spiralSeal { grid-column: 2; display: grid; justify-content: center; align-items: center; color: var(--color-auxiliary); width: 100% !important; margin-top: 2rem; } .spiralSeal table { background: transparent !important; border: none !important; } /* リンクも目立たないように色を調整 */ .spiralSeal a { color: inherit; text-decoration: underline; } /* trの中にあるtdをすべて縦並びにする */ .spiralSeal tr td { /* display: block; */ /* 横並びのセルを縦並びに変える */ } /* ========================================================================== 11. サイドバー ========================================================================== */ .side-header { /* 1. 配置・レイアウト (一番重要な「固定」の定義) */ position: fixed; z-index: 999; top: 0; left: 0; display: flex; justify-content: center; align-items: center; /* 2. サイズ・形状 */ width: var(--nav-width); height: 100vh; /* 3. 背景・見た目 */ --current-rgb: 80, 198, 255; box-shadow: 2px 0 8px rgba(0, 0, 0, 0.2); } /* --------------------------------------------------------- 1. 事業者登録(Master):期の色を「上」にする --------------------------------------------------------- */ .side-header.master { /* メインカラー(濃紺) → 期の色(s1〜s10) */ background: linear-gradient(135deg, rgb(var(--current-rgb)) 0%, var(--color-main) 100%); } /* --------------------------------------------------------- 2. 店舗登録(Benefits):期の色を「下」にする --------------------------------------------------------- */ .side-header.benefits { /* 期の色(s1〜s10) → メインカラー(濃紺) */ background: linear-gradient(135deg, var(--color-main) 0%, rgb(var(--current-rgb)) 100%); } /* --- 各期ごとの色定義(一律定義:どちらのモードでも機能します) --- */ .side-header.s1 { --current-rgb: 0, 64, 128; } .side-header.s2 { --current-rgb: 0, 102, 51; } .side-header.s3 { --current-rgb: 153, 77, 0; } .side-header.s4 { --current-rgb: 51, 51, 102; } .side-header.s5 { --current-rgb: 153, 51, 102; } .side-header.s6 { --current-rgb: 51, 102, 0; } .side-header.s7 { --current-rgb: 128, 64, 0; } .side-header.s8 { --current-rgb: 0, 102, 128; } .side-header.s9 { --current-rgb: 166, 94, 0; } .side-header.s10 { --current-rgb: 75, 0, 130; } .side-nav { width: 100%; } /* --- サイドメニュー(縦並びのメニュー) --- */ .side-menu { display: flex; flex-direction: column; /* 縦方向に並べる */ align-items: center; gap: 1.2rem; margin: 0; padding: 0; } .side-menu li { width: 100%; } .side-menu a { /* 1. 配置・サイズ (リンクを押しやすく広げる) */ display: block; width: 100%; padding: 0.75rem 0; text-align: center; /* 2. 形状・枠線 */ border-radius: var(--radius-normal); /* 3. タイポグラフィ */ color: var(--color-white); font-size: 0.85rem; font-weight: var(--fw-normal); text-decoration: none; /* 4. 動き */ transition: all 0.2s ease; } .side-menu a:hover, .side-menu a:focus { outline: none; background: var(--bg-hover); /* 半透明の背景 */ color: var(--color-accent); /* アクセントカラーに変更 */ letter-spacing: 0.05em; /* 文字間隔を広げる */ transition-duration: var(--dur-action); } /* --- レスポンシブ切替ボトムバーへ --- */ @media (max-width: 768px) { .side-header { top: auto; bottom: 0; left: 0; width: 100%; height: 60px; flex-direction: row; /* 横並び用 */ } .side-menu { flex-direction: row; /* 横方向に並べる */ justify-content: space-around; /* 均等配置 */ align-items: center; /* 縦中央寄せ */ height: 100%; /* 高さを揃える */ gap: 0; } .side-menu a { font-size: 0.7rem; height: 44px; display: flex; justify-content: center; align-items: center; } } /* ========================================================================== 12. アコーディオン ========================================================================== */ :root { --icon-plus: url('data:image/svg+xml;utf8,'); --icon-minus: url('data:image/svg+xml;utf8,'); } .accordion-container { width: 100%; max-width: 800px; margin: 20px auto; padding: 0 16px; } /* --- 10色の高識別カラーパレット(色相を分散) --- */ .accordion-item.s1 { --bg-color: #e6f2ff; --rgb: 0, 64, 128; } .accordion-item.s2 { --bg-color: #e9f9f0; --rgb: 0, 102, 51; } .accordion-item.s3 { --bg-color: #fff4e6; --rgb: 153, 77, 0; } .accordion-item.s4 { --bg-color: #f0f0ff; --rgb: 51, 51, 102; } .accordion-item.s5 { --bg-color: #ffe6f0; --rgb: 153, 51, 102; } .accordion-item.s6 { --bg-color: #f0ffe6; --rgb: 51, 102, 0; } .accordion-item.s7 { --bg-color: #f9f0e9; --rgb: 128, 64, 0; } .accordion-item.s8 { --bg-color: #e6fff5; --rgb: 0, 102, 128; } .accordion-item.s9 { --bg-color: #fef6e4; --rgb: 166, 94, 0; } .accordion-item.s10 { --bg-color: #f3e6ff; --rgb: 75, 0, 130; } /* --- 共通計算ロジック --- */ .accordion-item { --text-color: rgba(var(--rgb), 1); /* 影だけはRGB変数を使って「その色の濃い版」を生成して馴染ませる */ --shadow-inner: rgba(var(--rgb), 0.1); margin-bottom: 16px; border-radius: 16px; box-shadow: 4px 4px 10px rgba(var(--rgb), 0.2), -4px -4px 10px rgba(255, 255, 255, 1); } .accordion-title { position: relative; margin: 0; padding: 16px 48px 16px 24px; border-radius: 16px; background: var(--bg-color); /* ここもベタ塗り */ color: var(--text-color); cursor: pointer; font-size: 1rem; font-weight: var(--fw-medium); text-align: left; transition: all var(--dur-snappy) var(--ease-torne); } /* ホバー時にその色に合わせて「発光」させる */ .accordion-title:hover { filter: saturate(1.25); box-shadow: 0 10px 25px rgba(var(--rgb), 0.15); /* 影を広げて薄くする */ transition: all 0.3s var(--ease-torne); } .accordion-title.active { border-radius: 16px 16px 0 0; } /* アイコンの色を文字色と同期 */ .accordion-title::after { content: var(--icon-plus); position: absolute; top: 50%; right: 16px; width: 16px; transform: translateY(-50%); filter: drop-shadow(0 0 1px var(--text-color)); /* アイコンの色味調整 */ transition: transform 0.3s ease; } .accordion-title.active::after { content: var(--icon-minus); transform: translateY(-50%) rotate(180deg); } .accordion-content { visibility: hidden; max-height: 0; overflow: hidden; padding: 0 16px; border-radius: 0 0 16px 16px; background: var(--bg-color); /* コンテンツ内もベタ塗り */ color: var(--text-color); /* 影に --shadow-inner を使って統一感を出す */ box-shadow: inset 2px 2px 6px var(--shadow-inner), inset -2px -2px 4px rgba(255, 255, 255, 0.8); transition: max-height var(--dur-open) var(--ease-torne), padding var(--dur-snappy) ease, visibility var(--dur-open); } .accordion-content.active { visibility: visible; max-height: none; padding: 16px; } /* レスポンシブ */ @media (max-width: 768px) { .accordion-title { padding: 12px 40px 12px 16px; font-size: 0.9rem; } .accordion-content.active { padding: 12px 16px; } } `; // --- 共通CSS設定のすぐ後ろに追記 --- const pageTitle = document.title; // 1. 判定条件 const isListScreen = pageTitle.includes("DB"); // タイトルに「DB」が含まれる場合 // 一覧画面専用の処理 if (isListScreen) { style.textContent += ` @media screen and (min-width: 961px) { /* 右側の一覧表テーブルそのものを「白いパネル」に変える */ table.smp-table { display: block; padding: 1.5rem; border-radius: var(--radius-normal); /* ネオモーフィズム風の影 */ box-shadow: 6px 6px 12px rgba(163, 177, 198, 0.6), -6px -6px 12px #ffffff; } } `; } // 最後に全てが合体したstyleをheadに追加する document.head.appendChild(style);