/* ==== css/fonts.css ==== */
/*
 * Web フォント定義 (Noto Sans JP 400/500 + Noto Serif JP 600/700)
 *
 * Google Fonts の CDN 参照をやめ、 woff2 を public/fonts/ へ同梱してローカル配信する。
 * 理由:
 * - 閉域ネットワーク (学校 / 自治体向けのオンプレ提供) で外部参照が待ちに入り、
 *   フォント取得のタイムアウトまで本文が描画されない事故を防ぐ
 * - 利用者の閲覧が外部 CDN に記録されない (アクセス元 IP / Referer を渡さない)
 *
 * unicode-range によるサブセット分割は Google Fonts の配信物をそのまま維持しているため、
 * ブラウザは表示に必要なサブセットだけを取得する (全 12MB を読むわけではない)。
 *
 * 更新手順は docs/deployment/webfonts.md を参照。
 */
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.0.woff2) format('woff2');
  unicode-range:
    U+25ee8, U+25f23, U+25f5c, U+25fd4, U+25fe0, U+25ffb, U+2600c, U+26017, U+26060, U+260ed, U+26222, U+2626a, U+26270,
    U+26286, U+2634c, U+26402, U+2667e, U+266b0, U+2671d, U+268dd, U+268ea, U+26951, U+2696f, U+26999, U+269dd, U+26a1e,
    U+26a58, U+26a8c, U+26ab7, U+26aff, U+26c29, U+26c73, U+26c9e, U+26cdd, U+26e40, U+26e65, U+26f94, U+26ff6-26ff8,
    U+270f4, U+2710d, U+27139, U+273da-273db, U+273fe, U+27410, U+27449, U+27614-27615, U+27631, U+27684, U+27693,
    U+2770e, U+27723, U+27752, U+278b2, U+27985, U+279b4, U+27a84, U+27bb3, U+27bbe, U+27bc7, U+27c3c, U+27cb8, U+27d73,
    U+27da0, U+27e10, U+27eaf, U+27fb7, U+2808a, U+280bb, U+28277, U+28282, U+282f3, U+283cd, U+2840c, U+28455, U+284dc,
    U+2856b, U+285c8-285c9, U+286d7, U+286fa, U+28946, U+28949, U+2896b, U+28987-28988, U+289ba-289bb, U+28a1e, U+28a29,
    U+28a43, U+28a71, U+28a99, U+28acd, U+28add, U+28ae4, U+28bc1, U+28bef, U+28cdd, U+28d10, U+28d71, U+28dfb, U+28e0f,
    U+28e17, U+28e1f, U+28e36, U+28e89, U+28eeb, U+28ef6, U+28f32, U+28ff8, U+292a0, U+292b1, U+29490, U+295cf, U+2967f,
    U+296f0, U+29719, U+29750, U+29810, U+298c6, U+29a72, U+29d4b, U+29ddb, U+29e15, U+29e3d, U+29e49, U+29e8a, U+29ec4,
    U+29edb, U+29ee9, U+29fce, U+29fd7, U+2a01a, U+2a02f, U+2a082, U+2a0f9, U+2a190, U+2a2b2, U+2a38c, U+2a437, U+2a5f1,
    U+2a602, U+2a61a, U+2a6b2, U+2a9e6, U+2b746, U+2b751, U+2b753, U+2b75a, U+2b75c, U+2b765, U+2b776-2b777, U+2b77c,
    U+2b782, U+2b789, U+2b78b, U+2b78e, U+2b794, U+2b7ac, U+2b7af, U+2b7bd, U+2b7c9, U+2b7cf, U+2b7d2, U+2b7d8, U+2b7f0,
    U+2b80d, U+2b817, U+2b81a, U+2d544, U+2e278, U+2e569, U+2e6ea, U+2f804, U+2f80f, U+2f815, U+2f818, U+2f81a, U+2f822,
    U+2f828, U+2f82c, U+2f833, U+2f83f, U+2f846, U+2f852, U+2f862, U+2f86d, U+2f873, U+2f877, U+2f884, U+2f899-2f89a,
    U+2f8a6, U+2f8ac, U+2f8b2, U+2f8b6, U+2f8d3, U+2f8db-2f8dc, U+2f8e1, U+2f8e5, U+2f8ea, U+2f8ed, U+2f8fc, U+2f903,
    U+2f90b, U+2f90f, U+2f91a, U+2f920-2f921, U+2f945, U+2f947, U+2f96c, U+2f995, U+2f9d0, U+2f9de-2f9df, U+2f9f4;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.1.woff2) format('woff2');
  unicode-range:
    U+1f235-1f23b, U+1f240-1f248, U+1f250-1f251, U+2000b, U+20089-2008a, U+200a2, U+200a4, U+200b0, U+200f5, U+20158,
    U+201a2, U+20213, U+2032b, U+20371, U+20381, U+203f9, U+2044a, U+20509, U+2053f, U+205b1, U+205d6, U+20611, U+20628,
    U+206ec, U+2074f, U+207c8, U+20807, U+2083a, U+208b9, U+2090e, U+2097c, U+20984, U+2099d, U+20a64, U+20ad3, U+20b1d,
    U+20b9f, U+20bb7, U+20d45, U+20d58, U+20de1, U+20e64, U+20e6d, U+20e95, U+20f5f, U+21201, U+2123d, U+21255, U+21274,
    U+2127b, U+212d7, U+212e4, U+212fd, U+2131b, U+21336, U+21344, U+213c4, U+2146d-2146e, U+215d7, U+21647, U+216b4,
    U+21706, U+21742, U+218bd, U+219c3, U+21a1a, U+21c56, U+21d2d, U+21d45, U+21d62, U+21d78, U+21d92, U+21d9c, U+21da1,
    U+21db7, U+21de0, U+21e33-21e34, U+21f1e, U+21f76, U+21ffa, U+2217b, U+22218, U+2231e, U+223ad, U+22609, U+226f3,
    U+2285b, U+228ab, U+2298f, U+22ab8, U+22b46, U+22b4f-22b50, U+22ba6, U+22c1d, U+22c24, U+22de1, U+22e42, U+22feb,
    U+231b6, U+231c3-231c4, U+231f5, U+23372, U+233cc, U+233d0, U+233d2-233d3, U+233d5, U+233da, U+233df, U+233e4,
    U+233fe, U+2344a-2344b, U+23451, U+23465, U+234e4, U+2355a, U+23594, U+235c4, U+23638-2363a, U+23647, U+2370c,
    U+2371c, U+2373f, U+23763-23764, U+237e7, U+237f1, U+237ff, U+23824, U+2383d, U+23a98, U+23c7f, U+23cbe, U+23cfe,
    U+23d00, U+23d0e, U+23d40, U+23dd3, U+23df9-23dfa, U+23f7e, U+2404b, U+24096, U+24103, U+241c6, U+241fe, U+242ee,
    U+243bc, U+243d0, U+24629, U+246a5, U+247f1, U+24896, U+248e9, U+24a4d, U+24b56, U+24b6f, U+24c16, U+24d14, U+24e04,
    U+24e0e, U+24e37, U+24e6a, U+24e8b, U+24ff2, U+2504a, U+25055, U+25122, U+251a9, U+251cd, U+251e5, U+2521e, U+2524c,
    U+2542e, U+2548e, U+254d9, U+2550e, U+255a7, U+2567f, U+25771, U+257a9, U+257b4, U+25874, U+259c4, U+259cc, U+259d4,
    U+25ad7, U+25ae3-25ae4, U+25af1, U+25bb2, U+25c4b, U+25c64, U+25da1, U+25e2e, U+25e56, U+25e62, U+25e65, U+25ec2,
    U+25ed8;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.2.woff2) format('woff2');
  unicode-range:
    U+ffd7, U+ffda-ffdc, U+ffe0-ffe2, U+ffe4, U+ffe6, U+ffe8-ffee, U+1f100-1f10c, U+1f110-1f16c, U+1f170-1f1ac,
    U+1f200-1f202, U+1f210-1f234;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.3.woff2) format('woff2');
  unicode-range:
    U+fa10, U+fa12-fa6d, U+fb00-fb04, U+fe10-fe19, U+fe30-fe42, U+fe44-fe52, U+fe54-fe66, U+fe68-fe6b, U+ff02, U+ff04,
    U+ff07, U+ff51, U+ff5b, U+ff5d, U+ff5f-ff60, U+ff66, U+ff69, U+ff87, U+ffa1-ffbe, U+ffc2-ffc7, U+ffca-ffcf,
    U+ffd2-ffd6;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.4.woff2) format('woff2');
  unicode-range: U+f92d-f959, U+f95b-f9f2, U+f9f4-fa0b, U+fa0e-fa0f;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.5.woff2) format('woff2');
  unicode-range:
    U+9e8b-9e8c, U+9e8e-9e8f, U+9e91-9e92, U+9e95-9e96, U+9e98, U+9e9b, U+9e9d-9e9e, U+9ea4-9ea5, U+9ea8-9eaa,
    U+9eac-9eb0, U+9eb3-9eb5, U+9eb8, U+9ebc-9ebf, U+9ec3, U+9ec6, U+9ec8, U+9ecb-9ecd, U+9ecf-9ed1, U+9ed4-9ed5,
    U+9ed8, U+9edb-9ee0, U+9ee4-9ee5, U+9ee7-9ee8, U+9eec-9ef2, U+9ef4-9ef9, U+9efb-9eff, U+9f02-9f03, U+9f07-9f09,
    U+9f0e-9f12, U+9f14-9f17, U+9f19-9f1b, U+9f1f-9f22, U+9f26, U+9f2a-9f2c, U+9f2f, U+9f31-9f32, U+9f34, U+9f37,
    U+9f39-9f3a, U+9f3c-9f3f, U+9f41, U+9f43-9f47, U+9f4a, U+9f4e-9f50, U+9f52-9f58, U+9f5a, U+9f5d-9f61, U+9f63,
    U+9f66-9f6a, U+9f6c-9f73, U+9f75-9f77, U+9f7a, U+9f7d, U+9f7f, U+9f8f-9f92, U+9f94-9f97, U+9f99, U+9f9c-9fa3,
    U+9fa5, U+9fb4, U+9fbc-9fc2, U+9fc4, U+9fc6, U+9fcc, U+f900-f92c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.6.woff2) format('woff2');
  unicode-range:
    U+9c3e, U+9c41, U+9c43-9c4a, U+9c4e-9c50, U+9c52-9c54, U+9c56, U+9c58, U+9c5a-9c61, U+9c63, U+9c65, U+9c67-9c6b,
    U+9c6d-9c6e, U+9c70, U+9c72, U+9c75-9c78, U+9c7a-9c7c, U+9ce6-9ce7, U+9ceb-9cec, U+9cf0, U+9cf2, U+9cf6-9cf7,
    U+9cf9, U+9d02-9d03, U+9d06-9d09, U+9d0b, U+9d0e, U+9d11-9d12, U+9d15, U+9d17-9d18, U+9d1b-9d1f, U+9d23, U+9d26,
    U+9d2a-9d2c, U+9d2f-9d30, U+9d32-9d34, U+9d3a, U+9d3c-9d3f, U+9d41-9d48, U+9d4a, U+9d50-9d54, U+9d59, U+9d5d-9d65,
    U+9d69-9d6c, U+9d6f-9d70, U+9d72-9d73, U+9d76-9d77, U+9d7a-9d7c, U+9d7e, U+9d83-9d84, U+9d86-9d87, U+9d89-9d8a,
    U+9d8d-9d8e, U+9d92-9d93, U+9d95-9d9a, U+9da1, U+9da4, U+9da9-9dac, U+9dae, U+9db1-9db2, U+9db5, U+9db8-9dbd,
    U+9dbf-9dc4, U+9dc6-9dc7, U+9dc9-9dca, U+9dcf, U+9dd3-9dd7, U+9dd9-9dda, U+9dde-9de0, U+9de3, U+9de5-9de7, U+9de9,
    U+9deb, U+9ded-9df0, U+9df3-9df4, U+9df8, U+9dfd-9dfe, U+9e02, U+9e07, U+9e0a, U+9e0d-9e0e, U+9e10-9e12,
    U+9e15-9e16, U+9e19-9e1f, U+9e75, U+9e79-9e7d, U+9e80-9e85, U+9e87-9e88;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.7.woff2) format('woff2');
  unicode-range:
    U+9ae5-9ae7, U+9ae9, U+9aeb-9aec, U+9aee-9aef, U+9af1-9af5, U+9af7, U+9af9-9afb, U+9afd, U+9aff-9b06, U+9b08-9b09,
    U+9b0b-9b0e, U+9b10, U+9b12, U+9b16, U+9b18-9b1d, U+9b1f-9b20, U+9b22-9b23, U+9b25-9b2f, U+9b32-9b35, U+9b37,
    U+9b39-9b3b, U+9b3d, U+9b43-9b44, U+9b48, U+9b4b-9b4f, U+9b51, U+9b55-9b58, U+9b5b, U+9b5e, U+9b61, U+9b63,
    U+9b65-9b66, U+9b68, U+9b6a-9b6f, U+9b72-9b79, U+9b7f-9b80, U+9b83-9b87, U+9b89-9b8b, U+9b8d, U+9b8f-9b94,
    U+9b96-9b97, U+9b9a, U+9b9d-9ba0, U+9ba6-9ba7, U+9ba9-9baa, U+9bac, U+9bb0-9bb2, U+9bb4, U+9bb7-9bb9, U+9bbb-9bbc,
    U+9bbe-9bc1, U+9bc6-9bc8, U+9bca, U+9bce-9bd2, U+9bd4, U+9bd7-9bd8, U+9bdd, U+9bdf, U+9be1-9be5, U+9be7,
    U+9bea-9beb, U+9bee-9bf3, U+9bf5, U+9bf7-9bfa, U+9bfd, U+9bff-9c00, U+9c02, U+9c04, U+9c06, U+9c08-9c0d,
    U+9c0f-9c16, U+9c18-9c1e, U+9c21-9c2a, U+9c2d-9c32, U+9c35-9c37, U+9c39-9c3a, U+9c3d;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.8.woff2) format('woff2');
  unicode-range:
    U+98eb, U+98ed-98ee, U+98f0-98f1, U+98f3, U+98f6, U+9902, U+9907-9909, U+9911-9912, U+9914-9918, U+991a-9922,
    U+9924, U+9926-9927, U+992b-992c, U+992e, U+9931-9935, U+9939-993e, U+9940-9942, U+9945-9949, U+994b-994e,
    U+9950-9952, U+9954-9955, U+9958-9959, U+995b-995c, U+995e-9960, U+9963, U+9997-9998, U+999b, U+999d-999f, U+99a3,
    U+99a5-99a6, U+99a8, U+99ad-99ae, U+99b0-99b2, U+99b5, U+99b9-99ba, U+99bc-99bd, U+99bf, U+99c1, U+99c3,
    U+99c8-99c9, U+99d1, U+99d3-99d5, U+99d8-99df, U+99e1-99e2, U+99e7, U+99ea-99ee, U+99f0-99f2, U+99f4-99f5,
    U+99f8-99f9, U+99fb-99fe, U+9a01-9a05, U+9a08, U+9a0a-9a0c, U+9a0f-9a11, U+9a16, U+9a1a, U+9a1e, U+9a20,
    U+9a22-9a24, U+9a27, U+9a2b, U+9a2d-9a2e, U+9a31, U+9a33, U+9a35-9a38, U+9a3e, U+9a40-9a45, U+9a47, U+9a4a-9a4e,
    U+9a51-9a52, U+9a54-9a58, U+9a5b, U+9a5d, U+9a5f, U+9a62, U+9a64-9a65, U+9a69-9a6c, U+9aaa, U+9aac-9ab0, U+9ab2,
    U+9ab4-9ab7, U+9ab9, U+9abb-9ac1, U+9ac3, U+9ac6, U+9ac8, U+9ace-9ad3, U+9ad5-9ad7, U+9adb-9adc, U+9ade-9ae0,
    U+9ae2-9ae4;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.9.woff2) format('woff2');
  unicode-range:
    U+971d, U+9721-9724, U+9728, U+972a, U+9730-9731, U+9733, U+9736, U+9738-9739, U+973b, U+973d-973e, U+9741-9744,
    U+9746-974a, U+974d-974f, U+9751, U+9755, U+9757-9758, U+975a-975c, U+9760-9761, U+9763-9764, U+9766-9768,
    U+976a-976b, U+976e, U+9771, U+9773, U+9776-977d, U+977f-9781, U+9785-9786, U+9789, U+978b, U+978f-9790,
    U+9795-9797, U+9799-979a, U+979c, U+979e-97a0, U+97a2-97a3, U+97a6, U+97a8, U+97ab-97ac, U+97ae, U+97b1-97b6,
    U+97b8-97ba, U+97bc, U+97be-97bf, U+97c1, U+97c3-97ce, U+97d0-97d1, U+97d4, U+97d7-97d9, U+97db-97de, U+97e0-97e1,
    U+97e4, U+97e6, U+97ed-97ef, U+97f1-97f2, U+97f4-97f8, U+97fa, U+9804, U+9807, U+980a, U+980c-980f, U+9814,
    U+9816-9817, U+9819-981a, U+981c, U+981e, U+9820-9821, U+9823-9826, U+982b, U+982e-9830, U+9832-9835, U+9837,
    U+9839, U+983d-983e, U+9844, U+9846-9847, U+984a-984b, U+984f, U+9851-9853, U+9856-9857, U+9859-985b, U+9862-9863,
    U+9865-9866, U+986a-986c, U+986f-9871, U+9873-9875, U+98aa-98ab, U+98ad-98ae, U+98b0-98b1, U+98b4, U+98b6-98b8,
    U+98ba-98bc, U+98bf, U+98c2-98c8, U+98cb-98cc, U+98ce, U+98dc, U+98de, U+98e0-98e1, U+98e3, U+98e5-98e7, U+98e9-98ea;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.10.woff2) format('woff2');
  unicode-range:
    U+944a, U+944c, U+9452-9453, U+9455, U+9459-945c, U+945e-9463, U+9468, U+946a-946b, U+946d-9472, U+9475, U+9477,
    U+947c-947f, U+9481, U+9483-9485, U+9578-9579, U+957e-957f, U+9582, U+9584, U+9586-9588, U+958a, U+958c-958f,
    U+9592, U+9594, U+9596, U+9598-9599, U+959d-95a1, U+95a4, U+95a6-95a9, U+95ab-95ad, U+95b1, U+95b4, U+95b6,
    U+95b9-95bf, U+95c3, U+95c6, U+95c8-95cd, U+95d0-95d6, U+95d9-95da, U+95dc-95e2, U+95e4-95e6, U+95e8, U+961d-961e,
    U+9621-9622, U+9624-9626, U+9628, U+962c, U+962e-962f, U+9631, U+9633-9634, U+9637-963a, U+963c-963d, U+9641-9642,
    U+964b-964c, U+964f, U+9652, U+9654, U+9656-9658, U+965c-965f, U+9661, U+9666, U+966a, U+966c, U+966e, U+9672,
    U+9674, U+9677, U+967b-967c, U+967e-967f, U+9681-9684, U+9689, U+968b, U+968d, U+9691, U+9695-9698, U+969a, U+969d,
    U+969f, U+96a4-96aa, U+96ae-96b4, U+96b6, U+96b8-96bb, U+96bd, U+96c1, U+96c9-96cb, U+96cd-96ce, U+96d2,
    U+96d5-96d6, U+96d8-96da, U+96dc-96df, U+96e9, U+96ef, U+96f1, U+96f9-96fa, U+9702-9706, U+9708-9709, U+970d-970f,
    U+9711, U+9713-9714, U+9716, U+9719-971b;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.11.woff2) format('woff2');
  unicode-range:
    U+92bc-92bd, U+92bf-92c3, U+92c5-92c8, U+92cb-92d0, U+92d2-92d3, U+92d5, U+92d7-92d9, U+92dc-92dd, U+92df-92e1,
    U+92e3-92e5, U+92e7-92ea, U+92ec, U+92ee, U+92f0, U+92f2, U+92f7-92fb, U+92ff-9300, U+9302, U+9304, U+9308, U+930d,
    U+930f-9311, U+9314-9315, U+9318-931a, U+931c-931f, U+9321-9325, U+9327-932b, U+932e, U+9333-9337, U+933a-933b,
    U+9344, U+9347-934a, U+934d, U+9350-9352, U+9354-9358, U+935a, U+935c, U+935e, U+9360, U+9364-9365, U+9367,
    U+9369-936d, U+936f-9371, U+9373-9374, U+9376, U+937a, U+937d-9382, U+9388, U+938a-938b, U+938d, U+938f, U+9392,
    U+9394-9395, U+9397-9398, U+939a-939b, U+939e, U+93a1, U+93a3-93a4, U+93a6, U+93a8-93a9, U+93ab-93ad, U+93b0,
    U+93b4-93b6, U+93b9-93bb, U+93c1, U+93c3-93cd, U+93d0-93d1, U+93d3, U+93d6-93d9, U+93dc-93df, U+93e2, U+93e4-93e8,
    U+93f1, U+93f5, U+93f7-93fb, U+93fd, U+9401-9404, U+9407-9409, U+940d-9410, U+9413-9417, U+9419-941a, U+941f,
    U+9421, U+942b, U+942e-942f, U+9431-9434, U+9436, U+9438, U+943a-943b, U+943d, U+943f, U+9441, U+9443-9445, U+9448;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.12.woff2) format('woff2');
  unicode-range:
    U+9143, U+9146-914c, U+914f, U+9153, U+9156-915b, U+9161, U+9163-9165, U+9167, U+9169, U+916d, U+9172-9174,
    U+9179-917b, U+9181-9183, U+9185-9187, U+9189-918b, U+918e, U+9191, U+9193-9195, U+9197-9198, U+919e, U+91a1-91a2,
    U+91a6, U+91a8, U+91aa-91b6, U+91ba-91bd, U+91bf-91c6, U+91c9, U+91cb, U+91d0, U+91d3-91d4, U+91d6-91d7,
    U+91d9-91db, U+91de-91df, U+91e1, U+91e4-91e6, U+91e9-91ea, U+91ec-91f1, U+91f5-91f7, U+91f9, U+91fb-91fd,
    U+91ff-9201, U+9204-9207, U+9209-920a, U+920c, U+920e, U+9210-9218, U+921c-921e, U+9223-9226, U+9228-9229, U+922c,
    U+922e-9230, U+9233, U+9235-923a, U+923c, U+923e-9240, U+9242-9243, U+9245-924b, U+924d-9251, U+9256-925a,
    U+925c-925e, U+9260-9261, U+9264-9269, U+926e-9270, U+9275-9279, U+927b-927f, U+9288-928a, U+928d-928e, U+9291-9293,
    U+9295-9297, U+9299, U+929b-929c, U+929f-92a0, U+92a4-92a5, U+92a7-92a8, U+92ab, U+92af, U+92b2-92b3, U+92b6-92bb;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.13.woff2) format('woff2');
  unicode-range:
    U+8f52-8f55, U+8f57-8f58, U+8f5c-8f5e, U+8f61-8f66, U+8f9c-8f9d, U+8f9f-8fa2, U+8fa4-8fa8, U+8fad-8faf, U+8fb4-8fb8,
    U+8fbe, U+8fc0-8fc2, U+8fc6, U+8fc8, U+8fca-8fcb, U+8fcd, U+8fd0, U+8fd2-8fd3, U+8fd5, U+8fda, U+8fe0, U+8fe2-8fe5,
    U+8fe8-8fea, U+8fed-8fef, U+8ff1, U+8ff4-8ff6, U+8ff8-8ffb, U+8ffe, U+9002, U+9004-9005, U+9008, U+900b-900e,
    U+9011, U+9013, U+9015-9016, U+9018, U+901b, U+901e, U+9021, U+9027-902a, U+902c-902d, U+902f, U+9033-9037, U+9039,
    U+903c, U+903e-903f, U+9041, U+9043-9044, U+9049, U+904c, U+904f-9052, U+9056, U+9058, U+905b-905e, U+9062,
    U+9066-9068, U+906c, U+906f-9070, U+9072, U+9074, U+9076, U+9079, U+9080-9083, U+9085, U+9087-9088, U+908b-908c,
    U+908e-9090, U+9095, U+9097-9099, U+909b, U+90a0-90a2, U+90a5, U+90a8, U+90af-90b6, U+90bd-90be, U+90c3-90c5,
    U+90c7-90c9, U+90cc, U+90d2, U+90d5, U+90d7-90d9, U+90db-90df, U+90e2, U+90e4-90e5, U+90eb, U+90ef-90f0, U+90f2,
    U+90f4, U+90f6, U+90fe-9100, U+9102, U+9104-9106, U+9108, U+910d, U+9110, U+9112, U+9114-911a, U+911c, U+911e,
    U+9120, U+9122-9123, U+9125, U+9127, U+9129, U+912d-9132, U+9134, U+9136-9137, U+9139-913a, U+913c-913d;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.14.woff2) format('woff2');
  unicode-range:
    U+8dc0, U+8dc2, U+8dc5-8dc8, U+8dca-8dcc, U+8dce-8dcf, U+8dd1, U+8dd4-8dd7, U+8dd9-8ddb, U+8ddf, U+8de3-8de5,
    U+8de7, U+8dea-8dec, U+8df0-8df2, U+8df4, U+8dfc-8dfd, U+8dff, U+8e01, U+8e04-8e06, U+8e08-8e09, U+8e0b-8e0c,
    U+8e10-8e11, U+8e14, U+8e16, U+8e1d-8e23, U+8e26-8e27, U+8e30-8e31, U+8e33-8e39, U+8e3d, U+8e40-8e42, U+8e44,
    U+8e47-8e50, U+8e54-8e55, U+8e59, U+8e5b-8e64, U+8e69, U+8e6c-8e6d, U+8e6f-8e72, U+8e75-8e77, U+8e79-8e7c,
    U+8e81-8e85, U+8e89, U+8e8b, U+8e90-8e95, U+8e98-8e9b, U+8e9d-8e9e, U+8ea1-8ea2, U+8ea7, U+8ea9-8eaa, U+8eac-8eb1,
    U+8eb3, U+8eb5-8eb6, U+8eba-8ebb, U+8ebe, U+8ec0-8ec1, U+8ec3-8ec8, U+8ecb, U+8ecf, U+8ed1, U+8ed4, U+8edb-8edc,
    U+8ee3, U+8ee8, U+8eeb, U+8eed-8eee, U+8ef0-8ef1, U+8ef7, U+8ef9-8efc, U+8efe, U+8f00, U+8f02, U+8f05, U+8f07-8f08,
    U+8f0a, U+8f0f-8f10, U+8f12-8f13, U+8f15-8f19, U+8f1b-8f1c, U+8f1e-8f21, U+8f23, U+8f25-8f28, U+8f2b-8f2f,
    U+8f33-8f37, U+8f39-8f3b, U+8f3e, U+8f40-8f43, U+8f45-8f47, U+8f49-8f4a, U+8f4c-8f4f, U+8f51;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.15.woff2) format('woff2');
  unicode-range:
    U+8b2d, U+8b30, U+8b37, U+8b3c, U+8b3e, U+8b41-8b46, U+8b48-8b49, U+8b4c-8b4f, U+8b51-8b54, U+8b56, U+8b59, U+8b5b,
    U+8b5e-8b5f, U+8b63, U+8b69, U+8b6b-8b6d, U+8b6f, U+8b71, U+8b74, U+8b76, U+8b78-8b79, U+8b7c-8b81, U+8b84-8b85,
    U+8b8a-8b8f, U+8b92-8b96, U+8b99-8b9a, U+8b9c-8ba0, U+8c38-8c3a, U+8c3d-8c3f, U+8c41, U+8c45, U+8c47-8c49,
    U+8c4b-8c4c, U+8c4e-8c51, U+8c53-8c55, U+8c57-8c59, U+8c5b, U+8c5d, U+8c62-8c64, U+8c66, U+8c68-8c69, U+8c6b-8c6d,
    U+8c73, U+8c75-8c76, U+8c78, U+8c7a-8c7c, U+8c7e, U+8c82, U+8c85-8c87, U+8c89-8c8b, U+8c8d-8c8e, U+8c90,
    U+8c92-8c94, U+8c98-8c99, U+8c9b-8c9c, U+8c9f, U+8ca4, U+8cad-8cae, U+8cb2-8cb3, U+8cb6, U+8cb9-8cba, U+8cbd,
    U+8cc1-8cc2, U+8cc4-8cc6, U+8cc8-8cc9, U+8ccb, U+8ccd-8ccf, U+8cd2, U+8cd5-8cd6, U+8cd9-8cda, U+8cdd, U+8ce1,
    U+8ce3-8ce4, U+8ce6, U+8ce8, U+8cec, U+8cef-8cf2, U+8cf4-8cf5, U+8cf7-8cf8, U+8cfa-8cfb, U+8cfd-8cff, U+8d01,
    U+8d03-8d04, U+8d07, U+8d09-8d0b, U+8d0d-8d10, U+8d12-8d14, U+8d16-8d17, U+8d1b-8d1d, U+8d65, U+8d67, U+8d69,
    U+8d6b-8d6e, U+8d71, U+8d73, U+8d76, U+8d7f, U+8d81-8d82, U+8d84, U+8d88, U+8d8d, U+8d90-8d91, U+8d95, U+8d99,
    U+8d9e-8da0, U+8da6, U+8da8, U+8dab-8dac, U+8daf, U+8db2, U+8db5, U+8db7, U+8db9-8dbc, U+8dbe;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.16.woff2) format('woff2');
  unicode-range:
    U+8973-8975, U+8977, U+897a-897e, U+8980, U+8983, U+8988-898a, U+898d, U+8990, U+8993-8995, U+8998, U+899b-899c,
    U+899f-89a1, U+89a5-89a6, U+89a9, U+89ac, U+89af-89b0, U+89b2, U+89b4-89b7, U+89ba, U+89bc-89bd, U+89bf-89c1,
    U+89d4-89d8, U+89da, U+89dc-89dd, U+89e5, U+89e7, U+89e9, U+89eb, U+89ed, U+89f1, U+89f3-89f4, U+89f6, U+89f8-89f9,
    U+89fd, U+89ff, U+8a01, U+8a04-8a05, U+8a07, U+8a0c, U+8a0f-8a12, U+8a14-8a16, U+8a1b, U+8a1d-8a1e, U+8a20-8a22,
    U+8a24-8a26, U+8a2b-8a2c, U+8a2f, U+8a35-8a37, U+8a3b, U+8a3d-8a3e, U+8a40-8a41, U+8a43, U+8a45-8a49, U+8a4d-8a4e,
    U+8a51-8a54, U+8a56-8a58, U+8a5b-8a5d, U+8a61-8a62, U+8a65, U+8a67, U+8a6c-8a6d, U+8a75-8a77, U+8a79-8a7c,
    U+8a7e-8a80, U+8a82-8a86, U+8a8b, U+8a8f-8a92, U+8a96-8a97, U+8a99-8a9a, U+8a9f, U+8aa1, U+8aa3, U+8aa5-8aaa,
    U+8aae-8aaf, U+8ab3, U+8ab6-8ab7, U+8abb-8abc, U+8abe, U+8ac2-8ac4, U+8ac6, U+8ac8-8aca, U+8acc-8acd, U+8ad0-8ad1,
    U+8ad3-8ad5, U+8ad7, U+8ada-8ae2, U+8ae4, U+8ae7, U+8aeb-8aec, U+8aee, U+8af0-8af1, U+8af3-8af7, U+8afa, U+8afc,
    U+8aff, U+8b01-8b02, U+8b04-8b07, U+8b0a-8b0d, U+8b0f-8b11, U+8b14, U+8b16, U+8b1a, U+8b1c, U+8b1e-8b20, U+8b26,
    U+8b28, U+8b2b-8b2c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.17.woff2) format('woff2');
  unicode-range:
    U+87e2-87e6, U+87ea-87ed, U+87ef, U+87f1, U+87f3, U+87f5-87f8, U+87fa-87fb, U+87fe-87ff, U+8801, U+8803,
    U+8805-8807, U+8809-880b, U+880d-8816, U+8818-881c, U+881e-881f, U+8821-8822, U+8827-8828, U+882d-882e, U+8830-8832,
    U+8835-8836, U+8839-883c, U+8841-8845, U+8848-884b, U+884d-884e, U+8851-8852, U+8855-8856, U+8858-885a, U+885c,
    U+885e-8860, U+8862, U+8864, U+8869, U+886b, U+886e-886f, U+8871-8872, U+8875, U+8877, U+8879, U+887b, U+887d-887e,
    U+8880-8882, U+8888, U+888d, U+8892, U+8897-889c, U+889e-88a0, U+88a2, U+88a4, U+88a8, U+88aa, U+88ae, U+88b0-88b1,
    U+88b5, U+88b7, U+88ba, U+88bc-88c0, U+88c3-88c4, U+88c6, U+88ca-88ce, U+88d1-88d4, U+88d8-88d9, U+88db,
    U+88dd-88e1, U+88e7-88e8, U+88ef-88f2, U+88f4-88f5, U+88f7, U+88f9, U+88fc, U+8901-8902, U+8904, U+8906, U+890a,
    U+890c-890f, U+8913, U+8915-8916, U+8918-891a, U+891c-891e, U+8920, U+8925-8928, U+892a-892b, U+8930-8932,
    U+8935-893b, U+893e, U+8940-8946, U+8949, U+894c-894d, U+894f, U+8952, U+8956-8957, U+895a-895c, U+895e,
    U+8960-8964, U+8966, U+896a-896b, U+896d-8970;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.18.woff2) format('woff2');
  unicode-range:
    U+8655-8659, U+865b, U+865d-8664, U+8667, U+8669, U+866c, U+866f, U+8671, U+8675-8677, U+867a-867b, U+867d,
    U+8687-8689, U+868b-868d, U+8691, U+8693, U+8695-8696, U+8698, U+869a, U+869c-869d, U+86a1, U+86a3-86a4,
    U+86a6-86ab, U+86ad, U+86af-86b1, U+86b3-86b9, U+86bf-86c1, U+86c3-86c6, U+86c9, U+86cb, U+86ce, U+86d1-86d2,
    U+86d4-86d5, U+86d7, U+86da, U+86dc, U+86de-86e0, U+86e3-86e7, U+86e9, U+86ec-86ed, U+86ef, U+86f8-86fe, U+8700,
    U+8703-870b, U+870d-8714, U+8719-871a, U+871e-871f, U+8721-8723, U+8725, U+8728-8729, U+872e-872f, U+8731-8732,
    U+8734, U+8737, U+8739-8740, U+8743, U+8745, U+8749, U+874b-874e, U+8751, U+8753, U+8755, U+8757-8759, U+875d,
    U+875f-8761, U+8763-8766, U+8768, U+876a, U+876e-876f, U+8771-8772, U+8774, U+8778, U+877b-877c, U+877f,
    U+8782-8789, U+878b-878c, U+878e, U+8790, U+8793, U+8795, U+8797-8799, U+879e-87a0, U+87a2-87a3, U+87a7,
    U+87ab-87af, U+87b1, U+87b3, U+87b5, U+87bb, U+87bd-87c1, U+87c4, U+87c6-87cb, U+87ce, U+87d0, U+87d2, U+87d5-87d6,
    U+87d9-87da, U+87dc, U+87df-87e0;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.19.woff2) format('woff2');
  unicode-range:
    U+84b4, U+84b9-84bb, U+84bd-84c2, U+84c6-84ca, U+84cc-84d1, U+84d3, U+84d6, U+84d9-84da, U+84dc, U+84e7, U+84ea,
    U+84ec, U+84ef-84f2, U+84f4, U+84f7, U+84fa-84fd, U+84ff-8500, U+8502-8503, U+8506-8507, U+850c, U+850e, U+8510,
    U+8514-8515, U+8517-8518, U+851a-851c, U+851e-851f, U+8521-8525, U+8527, U+852a-852c, U+852f, U+8532-8534, U+8536,
    U+853e-8541, U+8543, U+8546, U+8548, U+854a-854b, U+854f-8553, U+8555-855a, U+855c-8564, U+8569-856b, U+856d,
    U+856f, U+8577, U+8579-857b, U+857d-8581, U+8585-8586, U+8588-858c, U+858f-8591, U+8593, U+8597-8598, U+859b-859d,
    U+859f-85a0, U+85a2, U+85a4-85a5, U+85a7-85a8, U+85ad-85b0, U+85b4, U+85b6-85ba, U+85bc-85bf, U+85c1-85c2, U+85c7,
    U+85c9-85cb, U+85ce-85d0, U+85d5, U+85d8-85da, U+85dc, U+85df-85e1, U+85e5-85e6, U+85e8, U+85ed, U+85f3-85f4,
    U+85f6-85f7, U+85f9-85fa, U+85fc, U+85fe-8600, U+8602, U+8604-8606, U+860a-860b, U+860d-860e, U+8610-8613,
    U+8616-861b, U+861e, U+8621-8622, U+8624, U+8627, U+8629, U+862f-8630, U+8636, U+8638-863a, U+863c-863d,
    U+863f-8642, U+8646, U+864d, U+8652-8654;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.20.woff2) format('woff2');
  unicode-range:
    U+82e8, U+82ea, U+82ed, U+82ef, U+82f3-82f4, U+82f6-82f7, U+82f9, U+82fb, U+82fd-82fe, U+8300-8301, U+8303,
    U+8306-8308, U+830a-830c, U+8316-8318, U+831b, U+831d-831f, U+8321-8323, U+832b-8335, U+8337, U+833a, U+833c-833d,
    U+8340, U+8342-8347, U+834a, U+834d-8351, U+8353-8357, U+835a, U+8362-8363, U+8370, U+8373, U+8375, U+8378,
    U+837c-837d, U+837f-8380, U+8382, U+8384-8387, U+838a, U+838d-838e, U+8392-8396, U+8398-83a0, U+83a2, U+83a6-83ad,
    U+83b1, U+83b5, U+83bd-83c1, U+83c7, U+83c9, U+83ce-83d1, U+83d4, U+83d6, U+83d8, U+83dd, U+83df-83e1, U+83e5,
    U+83e8, U+83ea-83eb, U+83f0, U+83f2, U+83f4, U+83f6-83f9, U+83fb-83fd, U+8401, U+8403-8404, U+8406-8407,
    U+840a-840b, U+840d, U+840f, U+8411, U+8413, U+8415, U+8417, U+8419, U+8420, U+8422, U+842a, U+842f, U+8431, U+8435,
    U+8438-8439, U+843c, U+8445-8448, U+844a, U+844d-844f, U+8451-8452, U+8456, U+8458-845a, U+845c, U+845f-8462,
    U+8464-8467, U+8469-846b, U+846d-8470, U+8473-8474, U+8476-847a, U+847c-847d, U+8481-8482, U+8484-8485, U+848b,
    U+8490, U+8492-8493, U+8495, U+8497, U+849c, U+849e-849f, U+84a1, U+84a6, U+84a8-84aa, U+84ad, U+84af, U+84b1;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.21.woff2) format('woff2');
  unicode-range:
    U+814a, U+814c, U+8151-8153, U+8157, U+815f-8161, U+8165-8169, U+816d-816f, U+8171, U+8173-8174, U+8177,
    U+8180-8186, U+8188, U+818a-818b, U+818e, U+8190, U+8193, U+8195-8196, U+8198, U+819b, U+819e, U+81a0, U+81a2,
    U+81a4, U+81a9, U+81ae, U+81b0, U+81b2, U+81b4-81b5, U+81b8, U+81ba-81bb, U+81bd-81be, U+81c0-81c3, U+81c5-81c6,
    U+81c8-81cb, U+81cd-81cf, U+81d1, U+81d5-81db, U+81dd-81e1, U+81e4-81e5, U+81e7, U+81eb-81ec, U+81ef-81f2,
    U+81f5-81f6, U+81f8-81fb, U+81fd-8205, U+8209-820b, U+820d, U+820f, U+8212-8214, U+8216, U+8219-821d, U+8221-8222,
    U+8228-8229, U+822b, U+822e, U+8232-8235, U+8237-8238, U+823a, U+823c, U+8240, U+8243-8246, U+8249, U+824b,
    U+824e-824f, U+8251, U+8256-825a, U+825c-825d, U+825f-8260, U+8262-8264, U+8267-8268, U+826a-826b, U+826d-826e,
    U+8271, U+8274, U+8277, U+8279, U+827b, U+827d-8281, U+8283-8284, U+8287, U+8289-828a, U+828d-828e, U+8291-8294,
    U+8296, U+8298-829b, U+829f-82a1, U+82a3-82a4, U+82a7-82ac, U+82ae, U+82b0, U+82b2, U+82b4, U+82b7, U+82ba-82bc,
    U+82be-82bf, U+82c5-82c6, U+82d0, U+82d2-82d3, U+82d5, U+82d9-82da, U+82dc, U+82de-82e4, U+82e7;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.22.woff2) format('woff2');
  unicode-range:
    U+7f77-7f79, U+7f7d-7f80, U+7f82-7f83, U+7f86-7f88, U+7f8b-7f8d, U+7f8f-7f91, U+7f94, U+7f96-7f97, U+7f9a,
    U+7f9c-7f9d, U+7fa1-7fa3, U+7fa6, U+7faa, U+7fad-7faf, U+7fb2, U+7fb4, U+7fb6, U+7fb8-7fb9, U+7fbc, U+7fbf-7fc0,
    U+7fc3, U+7fc5-7fc6, U+7fc8, U+7fca, U+7fce-7fcf, U+7fd5, U+7fdb, U+7fdf, U+7fe1, U+7fe3, U+7fe5-7fe6, U+7fe8-7fe9,
    U+7feb-7fec, U+7fee-7ff0, U+7ff2-7ff3, U+7ff9-7ffa, U+7ffd-7fff, U+8002, U+8004, U+8006-8008, U+800a-800f,
    U+8011-8014, U+8016, U+8018-8019, U+801c-8021, U+8024, U+8026, U+8028, U+802c, U+802e, U+8030, U+8034-8035, U+8037,
    U+8039-8040, U+8043-8044, U+8046, U+804a, U+8052, U+8058, U+805a, U+805f-8060, U+8062, U+8064, U+8066, U+8068,
    U+806d, U+806f-8073, U+8075-8076, U+8079, U+807b, U+807d-8081, U+8084-8088, U+808b, U+808e, U+8093, U+8099-809a,
    U+809c, U+809e, U+80a4, U+80a6-80a7, U+80ab-80ad, U+80b1, U+80b8-80b9, U+80c4-80c5, U+80c8, U+80ca, U+80cd, U+80cf,
    U+80d2, U+80d4-80db, U+80dd, U+80e0, U+80e4-80e6, U+80ed-80f3, U+80f5-80f7, U+80f9-80fc, U+80fe, U+8101, U+8103,
    U+8109, U+810b, U+810d, U+8116-8118, U+811b-811c, U+811e, U+8120, U+8123-8124, U+8127, U+8129, U+812b-812c,
    U+812f-8130, U+8135, U+8139-813a, U+813c-813e, U+8141, U+8145-8147;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.23.woff2) format('woff2');
  unicode-range:
    U+7d57, U+7d59-7d5d, U+7d63, U+7d65, U+7d67, U+7d6a, U+7d6e, U+7d70, U+7d72-7d73, U+7d78, U+7d7a-7d7b, U+7d7d,
    U+7d7f, U+7d81-7d83, U+7d85-7d86, U+7d88-7d89, U+7d8b-7d8d, U+7d8f, U+7d91, U+7d93, U+7d96-7d97, U+7d9b-7da0,
    U+7da2-7da3, U+7da6-7da7, U+7daa-7dac, U+7dae-7db0, U+7db3, U+7db5-7db9, U+7dbd, U+7dc0, U+7dc2-7dc7, U+7dcc-7dce,
    U+7dd0, U+7dd5-7dd9, U+7ddc-7dde, U+7de1-7de6, U+7dea-7ded, U+7df1-7df2, U+7df5-7df6, U+7df9-7dfa, U+7e00, U+7e05,
    U+7e08-7e0b, U+7e10-7e12, U+7e15, U+7e17, U+7e1c-7e1d, U+7e1f-7e23, U+7e27-7e28, U+7e2c-7e2d, U+7e2f, U+7e31-7e33,
    U+7e35-7e37, U+7e39-7e3b, U+7e3d, U+7e3f, U+7e43-7e48, U+7e4e, U+7e50, U+7e52, U+7e56, U+7e58-7e5a, U+7e5d-7e5f,
    U+7e61-7e62, U+7e65-7e67, U+7e69-7e6b, U+7e6d-7e6f, U+7e73, U+7e75, U+7e78-7e79, U+7e7b-7e7f, U+7e81-7e83,
    U+7e86-7e8a, U+7e8c-7e8e, U+7e90-7e96, U+7e98, U+7e9a-7e9f, U+7f38, U+7f3a-7f3f, U+7f43-7f45, U+7f47, U+7f4c-7f50,
    U+7f52-7f55, U+7f58, U+7f5b-7f5d, U+7f5f, U+7f61, U+7f63-7f69, U+7f6b, U+7f6d, U+7f71;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.24.woff2) format('woff2');
  unicode-range:
    U+7bc8, U+7bca-7bcc, U+7bcf, U+7bd4, U+7bd6-7bd7, U+7bd9-7bdb, U+7bdd, U+7be5-7be6, U+7be8-7bea, U+7bf0,
    U+7bf2-7bfa, U+7bfc, U+7bfe, U+7c00-7c04, U+7c06-7c07, U+7c09, U+7c0b-7c0f, U+7c11-7c14, U+7c17, U+7c19, U+7c1b,
    U+7c1e-7c20, U+7c23, U+7c25-7c28, U+7c2a-7c2c, U+7c2f, U+7c31, U+7c33-7c34, U+7c36-7c3a, U+7c3d-7c3e, U+7c40,
    U+7c42-7c43, U+7c45-7c46, U+7c4a, U+7c4c, U+7c4f-7c5f, U+7c61, U+7c63-7c65, U+7c67, U+7c69, U+7c6c-7c70, U+7c72,
    U+7c75, U+7c79, U+7c7b-7c7e, U+7c81-7c83, U+7c86-7c87, U+7c8d, U+7c8f-7c90, U+7c94, U+7c9e, U+7ca0-7ca2,
    U+7ca4-7ca6, U+7ca8, U+7cab, U+7cad-7cae, U+7cb0-7cb3, U+7cb6-7cb7, U+7cb9-7cbd, U+7cbf-7cc0, U+7cc2, U+7cc4-7cc5,
    U+7cc7-7cca, U+7ccd-7ccf, U+7cd2-7cd5, U+7cd7-7cda, U+7cdc-7cdd, U+7cdf-7ce0, U+7ce2, U+7ce6, U+7ce9, U+7ceb,
    U+7cef, U+7cf2, U+7cf4-7cf6, U+7cf9-7cfa, U+7cfe, U+7d02-7d03, U+7d06-7d0a, U+7d0f, U+7d11-7d13, U+7d15-7d16,
    U+7d1c-7d1e, U+7d23, U+7d26, U+7d2a, U+7d2c-7d2e, U+7d31-7d32, U+7d35, U+7d3c-7d41, U+7d43, U+7d45, U+7d47-7d48,
    U+7d4b, U+7d4d-7d4f, U+7d51, U+7d53, U+7d55-7d56;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.25.woff2) format('woff2');
  unicode-range:
    U+7a17-7a19, U+7a1b, U+7a1e-7a21, U+7a27, U+7a2b, U+7a2d, U+7a2f-7a31, U+7a34-7a35, U+7a37-7a3b, U+7a3e,
    U+7a43-7a49, U+7a4c, U+7a4e, U+7a50, U+7a55-7a57, U+7a59, U+7a5c-7a5d, U+7a5f-7a63, U+7a65, U+7a67, U+7a69-7a6a,
    U+7a6d, U+7a70, U+7a75, U+7a78-7a79, U+7a7d-7a7e, U+7a80, U+7a82, U+7a84-7a86, U+7a88, U+7a8a-7a8b, U+7a90-7a91,
    U+7a94-7a98, U+7a9e, U+7aa0, U+7aa3, U+7aa9, U+7aac, U+7ab0, U+7ab3, U+7ab5-7ab6, U+7ab9-7abf, U+7ac3, U+7ac5-7aca,
    U+7acc-7acf, U+7ad1-7ad3, U+7ad5, U+7ada-7adb, U+7add, U+7adf, U+7ae1-7ae2, U+7ae6-7aed, U+7af0-7af1, U+7af4,
    U+7af8, U+7afa-7afb, U+7afd-7afe, U+7b02, U+7b04, U+7b06-7b08, U+7b0a-7b0b, U+7b0f, U+7b12, U+7b14, U+7b18-7b19,
    U+7b1e-7b1f, U+7b23, U+7b25, U+7b27-7b2b, U+7b2d-7b31, U+7b33-7b36, U+7b3b, U+7b3d, U+7b3f-7b41, U+7b45, U+7b47,
    U+7b4c-7b50, U+7b53, U+7b55, U+7b5d, U+7b60, U+7b64-7b66, U+7b69-7b6a, U+7b6c-7b75, U+7b77, U+7b79-7b7a, U+7b7f,
    U+7b84, U+7b86, U+7b89, U+7b8d-7b92, U+7b96, U+7b98-7ba0, U+7ba5, U+7bac-7bad, U+7baf-7bb0, U+7bb2, U+7bb4-7bb6,
    U+7bba-7bbd, U+7bc1-7bc2, U+7bc5-7bc6;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.26.woff2) format('woff2');
  unicode-range:
    U+7851-7852, U+785c, U+785e, U+7860-7861, U+7863-7864, U+7868, U+786a, U+786e-786f, U+7872, U+7874, U+787a, U+787c,
    U+787e, U+7886-7887, U+788a, U+788c-788f, U+7893-7895, U+7898, U+789a, U+789d-789f, U+78a1, U+78a3-78a4,
    U+78a8-78aa, U+78ac-78ad, U+78af-78b3, U+78b5, U+78bb-78bf, U+78c5-78cc, U+78ce, U+78d1-78d6, U+78da-78db,
    U+78df-78e1, U+78e4, U+78e6-78e7, U+78ea, U+78ec, U+78f2-78f4, U+78f6-78f7, U+78f9-78fb, U+78fd-7901, U+7906-7907,
    U+790c, U+7910-7912, U+7919-791c, U+791e-7920, U+7925-792e, U+7930-7931, U+7934-7935, U+793b, U+793d, U+793f,
    U+7941-7942, U+7944-7946, U+794a-794b, U+794f, U+7951, U+7954-7955, U+7957-7958, U+795a-795c, U+795f-7960, U+7962,
    U+7967, U+7969, U+796b, U+7972, U+7977, U+7979-797c, U+797e-7980, U+798a-798e, U+7991, U+7993-7996, U+7998,
    U+799b-799d, U+79a1, U+79a6-79ab, U+79ae-79b1, U+79b3-79b4, U+79b8-79bb, U+79bd-79be, U+79c2, U+79c4, U+79c7-79ca,
    U+79cc-79cd, U+79cf, U+79d4-79d6, U+79da, U+79dd-79e3, U+79e5, U+79e7, U+79ea-79ed, U+79f1, U+79f8, U+79fc,
    U+7a02-7a03, U+7a05, U+7a07-7a0a, U+7a0c-7a0d, U+7a11, U+7a15;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.27.woff2) format('woff2');
  unicode-range:
    U+768c-768e, U+7690, U+7693, U+7695-7696, U+7699-76a8, U+76aa, U+76ad, U+76af-76b0, U+76b4, U+76b6-76ba, U+76bd,
    U+76c1-76c3, U+76c5, U+76c8-76c9, U+76cb-76ce, U+76d2, U+76d4, U+76d6, U+76d9, U+76dc, U+76de, U+76e0-76e1,
    U+76e5-76e8, U+76ea-76ec, U+76f0-76f1, U+76f6, U+76f9, U+76fb-76fc, U+7700, U+7704, U+7706-7708, U+770a, U+770e,
    U+7712, U+7714-7715, U+7717, U+7719-771c, U+7722, U+7724-7726, U+7728, U+772d-772f, U+7734-7739, U+773d-773e,
    U+7742, U+7745-7747, U+774a, U+774d-774f, U+7752, U+7756-7758, U+775a-775c, U+775e-7760, U+7762, U+7764-7765,
    U+7767, U+776a-776c, U+7770, U+7772-7774, U+7779-777a, U+777c-7780, U+7784, U+778b-778e, U+7794-7796, U+779a,
    U+779e-77a0, U+77a2, U+77a4-77a5, U+77a7, U+77a9-77aa, U+77ae-77b1, U+77b5-77b7, U+77b9, U+77bb-77bf, U+77c3,
    U+77c7, U+77c9, U+77cd, U+77d1-77d2, U+77d5, U+77d7, U+77d9-77da, U+77dc, U+77de-77e0, U+77e3-77e4, U+77e6-77e7,
    U+77e9-77ea, U+77ec, U+77ee, U+77f0-77f1, U+77f4, U+77f8, U+77fb-77fc, U+7805-7806, U+7809, U+780c-780e,
    U+7811-7812, U+7819, U+781d, U+7820-7823, U+7826-7827, U+782c-782e, U+7830, U+7835, U+7837, U+783a, U+783f,
    U+7843-7845, U+7847-7848, U+784c, U+784e-784f;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.28.woff2) format('woff2');
  unicode-range:
    U+7511-7513, U+7515-7517, U+751c, U+751e, U+7520-7522, U+7524, U+7526-7527, U+7529-752c, U+752f, U+7536,
    U+7538-7539, U+753c-7540, U+7543-7544, U+7546-754b, U+754d-7550, U+7552, U+7557, U+755a-755b, U+755d-755f,
    U+7561-7562, U+7564, U+7566-7567, U+7569, U+756b-756d, U+756f, U+7571-7572, U+7574-757e, U+7581-7582, U+7585-7587,
    U+7589-758c, U+758f-7590, U+7592-7595, U+7599-759a, U+759c-759d, U+75a2-75a5, U+75b0-75b1, U+75b3-75b5, U+75b7-75b8,
    U+75ba, U+75bd, U+75bf-75c4, U+75c6, U+75ca, U+75cc-75cf, U+75d3-75d4, U+75d7-75d8, U+75dc-75e1, U+75e3-75e4,
    U+75e7, U+75ec, U+75ee-75f3, U+75f9, U+75fc, U+75fe-7604, U+7607-760c, U+760f, U+7612-7613, U+7615-7616,
    U+7618-7619, U+761b-7629, U+762d, U+7630, U+7632-7635, U+7638-763c, U+7640-7641, U+7643-764b, U+764e, U+7655,
    U+7658-7659, U+765c, U+765f, U+7661-7662, U+7664-7665, U+7667-766a, U+766c-7672, U+7674, U+7676, U+7678,
    U+7680-7683, U+7685, U+7688, U+768b;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.29.woff2) format('woff2');
  unicode-range:
    U+736c, U+736e-7371, U+7375, U+7377-737c, U+7380-7381, U+7383, U+7385-7386, U+738a, U+738e, U+7390, U+7393-7398,
    U+739c, U+739e-73a0, U+73a2, U+73a5-73a6, U+73a8, U+73aa-73ab, U+73ad, U+73b3, U+73b5, U+73b7, U+73b9-73bd, U+73bf,
    U+73c5-73c6, U+73c9-73cc, U+73ce-73cf, U+73d2-73d3, U+73d6, U+73d9, U+73dd-73de, U+73e1, U+73e3-73e7, U+73e9-73ea,
    U+73ee, U+73f1, U+73f4-73f5, U+73f7-73fb, U+73fd, U+73ff-7401, U+7404-7405, U+7407, U+740a, U+7411, U+7413,
    U+741a-741b, U+7421, U+7424, U+7426, U+7428-7431, U+7433, U+7439-743a, U+743f-7441, U+7443-7444, U+7446-7447,
    U+744b, U+744d, U+7451-7453, U+7455, U+7457, U+7459-745a, U+745c-745d, U+745f, U+7462-7464, U+7466-746b,
    U+746d-7473, U+7476, U+747e, U+7480-7481, U+7485-7489, U+748b, U+748f-7492, U+7497-749a, U+749c, U+749e-74a3,
    U+74a5-74a6, U+74a8-74ab, U+74ae-74af, U+74b1-74b2, U+74b5, U+74b9-74bb, U+74bd, U+74bf, U+74c8-74ca, U+74cc,
    U+74cf-74d0, U+74d3-74d4, U+74d6, U+74d8, U+74da-74db, U+74de-74e0, U+74e3-74e4, U+74e7-74eb, U+74ee-74f2, U+74f4,
    U+74f7-74f8, U+74fa-74fc, U+74ff, U+7501, U+7503-7506, U+750c-750e;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.30.woff2) format('woff2');
  unicode-range:
    U+7166, U+7168, U+716c, U+7179, U+7180, U+7184-7185, U+7187-7188, U+718c, U+718f, U+7192, U+7194-7196, U+7199-719b,
    U+71a0, U+71a2, U+71a8, U+71ac, U+71ae-71b0, U+71b2-71b3, U+71b9-71ba, U+71be-71c1, U+71c4, U+71c9, U+71cb-71cc,
    U+71ce, U+71d0, U+71d2-71d4, U+71d6-71d7, U+71d9-71da, U+71dc, U+71df-71e0, U+71e6-71e7, U+71ec-71ee, U+71f4-71f5,
    U+71f8-71f9, U+71fc, U+71fe-7200, U+7207-7209, U+720d, U+7210, U+7213, U+7215, U+7217, U+721a, U+721d, U+721f,
    U+7224, U+7228, U+722b, U+722d, U+722f-7230, U+7232, U+7234, U+7238-7239, U+723b-723c, U+723e-7243, U+7245-7246,
    U+724b, U+724e-7250, U+7252-7253, U+7255-7258, U+725a, U+725c, U+725e, U+7260, U+7263, U+7268, U+726b, U+726e-726f,
    U+7271, U+7274, U+7277-7278, U+727b-727c, U+727e-7282, U+7284, U+7287, U+7289, U+728d-728e, U+7292-7293, U+7296,
    U+729b, U+72a2, U+72a7-72a8, U+72ad-72ae, U+72b0-72b2, U+72b4, U+72b9, U+72be, U+72c0-72c1, U+72c3-72c4,
    U+72c6-72c7, U+72c9, U+72cc, U+72ce, U+72d2, U+72d5-72d6, U+72d8, U+72df-72e2, U+72e5, U+72f3-72f4, U+72f7,
    U+72f9-72fb, U+72fd-72fe, U+7302, U+7304-7305, U+7307, U+730a-730b, U+730d, U+7312-7313, U+7316-7319, U+731c-731e,
    U+7322, U+7324, U+7327-7329, U+732c, U+732f, U+7331-7337, U+7339-733b, U+733d-733e, U+7343, U+734d-7350, U+7352,
    U+7356-7358, U+735d-7360, U+7366-736b;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.31.woff2) format('woff2');
  unicode-range:
    U+6f58-6f5b, U+6f5d-6f5e, U+6f60-6f62, U+6f66, U+6f68, U+6f6c-6f6d, U+6f6f, U+6f74, U+6f78, U+6f7a, U+6f7c-6f7e,
    U+6f80, U+6f82-6f83, U+6f86-6f88, U+6f8b-6f8e, U+6f90-6f94, U+6f96-6f98, U+6f9a, U+6f9d, U+6f9f-6fa1, U+6fa3,
    U+6fa5-6fa8, U+6fae-6fb1, U+6fb3, U+6fb5-6fb7, U+6fb9, U+6fbc, U+6fbe, U+6fc2, U+6fc5-6fca, U+6fd4-6fd5, U+6fd8,
    U+6fda-6fdb, U+6fde-6fe0, U+6fe4, U+6fe8-6fe9, U+6feb-6fec, U+6fee, U+6ff0, U+6ff3, U+6ff5-6ff6, U+6ff9-6ffa,
    U+6ffc-6ffe, U+7000-7001, U+7005-7007, U+7009-700b, U+700d, U+700f, U+7011, U+7015, U+7017-7018, U+701a-701b,
    U+701d-7020, U+7023, U+7026, U+7028, U+702f-7030, U+7032, U+7034, U+7037, U+7039-703a, U+703c, U+703e, U+7043-7044,
    U+7047-704c, U+704e, U+7051, U+7054-7055, U+705d-705e, U+7064-7065, U+7069, U+706c, U+706e, U+7075-7076, U+707e,
    U+7081, U+7085-7086, U+7094-7098, U+709b, U+709f, U+70a4, U+70ab-70ac, U+70ae-70b1, U+70b3-70b4, U+70b7, U+70bb,
    U+70ca-70cb, U+70d1, U+70d3-70d6, U+70d8-70d9, U+70dc-70dd, U+70df, U+70e4, U+70ec, U+70f1, U+70fa, U+70fd,
    U+7103-7108, U+710b-710c, U+710f, U+7114, U+7119, U+711c, U+711e, U+7120, U+712b, U+712d-7131, U+7138, U+7141,
    U+7145-7147, U+7149-714b, U+7150-7153, U+7155-7157, U+715a, U+715c, U+715e, U+7160, U+7162, U+7164-7165;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.32.woff2) format('woff2');
  unicode-range:
    U+6d7c, U+6d80-6d82, U+6d85, U+6d87, U+6d89-6d8a, U+6d8c-6d8e, U+6d91-6d98, U+6d9c, U+6daa-6dac, U+6dae,
    U+6db4-6db5, U+6db7-6db9, U+6dbd, U+6dbf, U+6dc2, U+6dc4-6dc8, U+6dca, U+6dcc, U+6dce-6dd0, U+6dd2, U+6dd5-6dd6,
    U+6dd8-6ddb, U+6ddd-6de0, U+6de2, U+6de4-6de6, U+6de8-6dea, U+6dec, U+6dee-6df0, U+6df2, U+6df4, U+6df6,
    U+6df8-6dfa, U+6dfc, U+6e00, U+6e04, U+6e0a, U+6e17, U+6e19, U+6e1d-6e20, U+6e22-6e25, U+6e27, U+6e2b, U+6e2d-6e2e,
    U+6e32, U+6e34, U+6e36, U+6e38-6e3c, U+6e42-6e45, U+6e48-6e49, U+6e4b-6e4f, U+6e51-6e54, U+6e57, U+6e5b-6e5f,
    U+6e62-6e63, U+6e68, U+6e6b, U+6e6e, U+6e72-6e73, U+6e76, U+6e7b, U+6e7d, U+6e82, U+6e89, U+6e8c-6e8d, U+6e8f,
    U+6e93, U+6e98-6e99, U+6e9f-6ea0, U+6ea5, U+6ea7, U+6eaa-6eab, U+6ead-6eaf, U+6eb1-6eb4, U+6eb7, U+6ebb-6ebd,
    U+6ebf-6ec4, U+6ec7-6eca, U+6ecc-6ecf, U+6ed3-6ed5, U+6ed9-6edb, U+6ee6, U+6eeb-6eef, U+6ef7-6ef9, U+6efb,
    U+6efd-6eff, U+6f04, U+6f08-6f0a, U+6f0c-6f0d, U+6f10-6f11, U+6f13, U+6f15-6f16, U+6f18, U+6f1a-6f1b, U+6f25-6f26,
    U+6f29-6f2a, U+6f2d, U+6f2f-6f33, U+6f35-6f36, U+6f38, U+6f3b-6f3c, U+6f3e-6f3f, U+6f41, U+6f45, U+6f4f,
    U+6f51-6f53, U+6f57;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.33.woff2) format('woff2');
  unicode-range:
    U+6b85, U+6b89, U+6b8d, U+6b95, U+6b97-6b98, U+6b9b, U+6b9e-6ba0, U+6ba2-6ba4, U+6ba8-6bb3, U+6bb7-6bb9,
    U+6bbc-6bbe, U+6bc0, U+6bc3-6bc4, U+6bc6-6bc9, U+6bcb-6bcc, U+6bcf, U+6bd3, U+6bd6-6bd8, U+6bda, U+6bdf, U+6be1,
    U+6be3, U+6be6-6be7, U+6beb-6bec, U+6bee, U+6bf1, U+6bf3, U+6bf7, U+6bf9, U+6bff, U+6c02, U+6c04-6c05, U+6c08-6c0a,
    U+6c0d-6c0e, U+6c10, U+6c12-6c14, U+6c19, U+6c1b, U+6c1f, U+6c24, U+6c26-6c28, U+6c2c, U+6c2e, U+6c33, U+6c35-6c36,
    U+6c3a-6c3b, U+6c3e-6c40, U+6c4a-6c4b, U+6c4d, U+6c4f, U+6c52, U+6c54-6c55, U+6c59, U+6c5b-6c5e, U+6c62,
    U+6c67-6c68, U+6c6a-6c6b, U+6c6d, U+6c6f, U+6c73-6c74, U+6c76, U+6c78-6c79, U+6c7b, U+6c7e, U+6c81-6c87, U+6c89,
    U+6c8c-6c8d, U+6c90, U+6c92-6c95, U+6c97-6c98, U+6c9a-6c9c, U+6c9f, U+6caa-6cae, U+6cb0-6cb2, U+6cb4, U+6cba,
    U+6cbd-6cbe, U+6cc2, U+6cc5-6cc6, U+6ccd, U+6ccf-6cd4, U+6cd6-6cd7, U+6cd9-6cdd, U+6ce0, U+6ce7, U+6ce9-6cef,
    U+6cf1-6cf2, U+6cf4, U+6cfb, U+6d00-6d01, U+6d04, U+6d07, U+6d0a, U+6d0c, U+6d0e-6d0f, U+6d11, U+6d13, U+6d19-6d1a,
    U+6d1f, U+6d24, U+6d26-6d28, U+6d2b, U+6d2e-6d2f, U+6d31, U+6d33-6d36, U+6d38-6d39, U+6d3c-6d3d, U+6d3f,
    U+6d57-6d5b, U+6d5e-6d61, U+6d64-6d65, U+6d67, U+6d6c, U+6d6f-6d70, U+6d79;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.34.woff2) format('woff2');
  unicode-range:
    U+69dd-69de, U+69e2-69e3, U+69e5, U+69e7-69eb, U+69ed-69ef, U+69f1-69f6, U+69f9, U+69fe-6a01, U+6a03, U+6a05,
    U+6a0a, U+6a0c, U+6a0f, U+6a11-6a15, U+6a17, U+6a1a-6a1b, U+6a1d-6a20, U+6a22-6a24, U+6a28, U+6a2e, U+6a30,
    U+6a32-6a38, U+6a3b, U+6a3e-6a3f, U+6a44-6a4a, U+6a4e, U+6a50-6a52, U+6a54-6a56, U+6a5b, U+6a61-6a62, U+6a64,
    U+6a66-6a67, U+6a6a-6a6b, U+6a71-6a73, U+6a78, U+6a7a, U+6a7e-6a7f, U+6a81, U+6a83-6a84, U+6a86-6a87, U+6a89,
    U+6a8b, U+6a8d, U+6a90-6a91, U+6a94, U+6a97, U+6a9b, U+6a9d-6aa3, U+6aa5, U+6aaa-6aac, U+6aae-6ab1, U+6ab3-6ab4,
    U+6ab8, U+6abb, U+6abd-6abf, U+6ac1-6ac3, U+6ac6, U+6ac8-6ac9, U+6acc, U+6ad0-6ad1, U+6ad3-6ad6, U+6ada-6adf,
    U+6ae2, U+6ae4, U+6ae7-6ae8, U+6aea, U+6aec, U+6af0-6af3, U+6af8, U+6afa, U+6afc-6afd, U+6b02-6b03, U+6b06-6b07,
    U+6b09-6b0b, U+6b0f-6b12, U+6b16-6b17, U+6b1b, U+6b1d-6b1f, U+6b23-6b24, U+6b28, U+6b2b-6b2c, U+6b2f, U+6b35-6b39,
    U+6b3b, U+6b3d, U+6b3f, U+6b43, U+6b46-6b47, U+6b49-6b4a, U+6b4d-6b4e, U+6b50, U+6b52, U+6b54, U+6b56, U+6b58-6b59,
    U+6b5b, U+6b5d, U+6b5f-6b61, U+6b65, U+6b67, U+6b6b-6b6c, U+6b6e, U+6b70, U+6b72, U+6b75, U+6b77-6b7a, U+6b7d-6b84;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.35.woff2) format('woff2');
  unicode-range:
    U+6855, U+6857-6859, U+685b, U+685d, U+685f, U+6863, U+6867, U+686b, U+686e-6872, U+6874-6875, U+6877, U+6879-687c,
    U+687e-687f, U+6882-6884, U+6886, U+6888, U+688d-6890, U+6894, U+6896, U+6898-689c, U+689f-68a3, U+68a5-68a7,
    U+68a9-68ab, U+68ad-68af, U+68b2-68b5, U+68b9-68bc, U+68c3, U+68c5-68c6, U+68c8-68ca, U+68cc-68cd, U+68cf-68d1,
    U+68d3-68d9, U+68dc-68dd, U+68e0-68e1, U+68e3-68e5, U+68e7-68e8, U+68ea-68ed, U+68ef-68f1, U+68f5-68f7, U+68f9,
    U+68fb-68fd, U+6900-6901, U+6903-6904, U+6906-690c, U+690f-6911, U+6913, U+6916-6917, U+6919-691b, U+6921-6923,
    U+6925-6926, U+6928, U+692a, U+6930-6931, U+6933-6936, U+6938-6939, U+693b, U+693d, U+6942, U+6945-6946, U+6949,
    U+694e, U+6954, U+6957, U+6959, U+695b-695e, U+6961-6966, U+6968-696c, U+696e-6974, U+6977-697b, U+697e-6981,
    U+6986, U+698d, U+6991-6992, U+6994-6996, U+6998, U+699c, U+69a0-69a1, U+69a5-69a8, U+69ab, U+69ad, U+69af-69b2,
    U+69b4, U+69b7-69b8, U+69ba-69bc, U+69be-69c1, U+69c3, U+69c5, U+69c7-69c8, U+69ca, U+69ce-69d1, U+69d3,
    U+69d6-69d7, U+69d9;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.36.woff2) format('woff2');
  unicode-range:
    U+667e-6680, U+6683-6684, U+6688, U+668b-668e, U+6690, U+6692, U+6698-669d, U+669f-66a0, U+66a2, U+66a4, U+66ad,
    U+66b1-66b3, U+66b5, U+66b8-66b9, U+66bb-66bc, U+66be-66c4, U+66c6, U+66c8-66c9, U+66cc, U+66ce-66cf, U+66d4,
    U+66da-66db, U+66dd, U+66df-66e0, U+66e6, U+66e8-66e9, U+66eb-66ec, U+66ee, U+66f5, U+66f7, U+66fa-66fc, U+6701,
    U+6705, U+6707, U+670c, U+670e-6710, U+6712-6716, U+6719, U+671c, U+671e, U+6720, U+6722, U+6725-6726, U+672e,
    U+6733, U+6735-6738, U+673e-673f, U+6741, U+6743, U+6745-6748, U+674c-674d, U+6753-6755, U+6759, U+675d-675e,
    U+6760, U+6762-6764, U+6766, U+676a, U+676c, U+676e, U+6770, U+6772-6774, U+6776-6777, U+677b-677c, U+6780-6781,
    U+6784-6785, U+6787, U+6789, U+678b-678c, U+678e-678f, U+6791-6793, U+6796, U+6798-6799, U+679b, U+67a1, U+67a4,
    U+67a6, U+67a9, U+67b0-67b5, U+67b7-67b9, U+67bb-67be, U+67c0-67c3, U+67c5-67c6, U+67c8-67c9, U+67ce, U+67d2,
    U+67d7-67d9, U+67db-67de, U+67e1-67e2, U+67e4, U+67e6-67e7, U+67e9, U+67ec, U+67ee-67f0, U+67f2, U+67f6-67f7,
    U+67f9-67fa, U+67fc, U+67fe, U+6801-6802, U+6805, U+6810, U+6814, U+6818-6819, U+681d, U+681f, U+6822, U+6827-6829,
    U+682b-682d, U+682f-6834, U+683b, U+683e-6840, U+6844-6846, U+6849-684a, U+684c-684e, U+6852-6854;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.37.woff2) format('woff2');
  unicode-range:
    U+64d2, U+64d4-64d5, U+64d7-64d8, U+64da, U+64e0-64e1, U+64e3-64e5, U+64e7, U+64e9-64ea, U+64ed, U+64ef-64f2,
    U+64f4-64f7, U+64fa-64fb, U+64fd-6501, U+6504-6505, U+6508-650a, U+650f, U+6513-6514, U+6516, U+6518-6519,
    U+651b-651f, U+6522, U+6524, U+6526, U+6529-652c, U+652e, U+6531-6532, U+6534-6538, U+653a, U+653c-653d,
    U+6543-6544, U+6547-6549, U+654d-654e, U+6550, U+6552, U+6554-6556, U+6558, U+655d-6560, U+6567, U+656b, U+6572,
    U+6578, U+657a, U+657d, U+6581-6585, U+6588, U+658a, U+658c, U+6592, U+6595, U+6598, U+659b, U+659d, U+659f-65a1,
    U+65a3-65a6, U+65ab, U+65ae, U+65b2-65b5, U+65b7-65b8, U+65be-65bf, U+65c1-65c4, U+65c6, U+65c8-65c9, U+65cc,
    U+65ce, U+65d0, U+65d2, U+65d4, U+65d6, U+65d8-65d9, U+65db, U+65df-65e1, U+65e3, U+65f0-65f2, U+65f4-65f5, U+65f9,
    U+65fb-65fc, U+65fe-6600, U+6603-6604, U+6608-660a, U+660d, U+6611-6612, U+6615-6616, U+661c-661e, U+6621-6624,
    U+6626, U+6629-662c, U+662e, U+6630-6631, U+6633-6637, U+6639-663b, U+663f-6641, U+6644-6646, U+6648-664a, U+664c,
    U+664e-664f, U+6651, U+6657-6665, U+6667-6668, U+666a-666d, U+6670, U+6673, U+6675, U+6677-6679, U+667b-667c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.38.woff2) format('woff2');
  unicode-range:
    U+62cf, U+62d1, U+62d4-62d6, U+62da, U+62dc, U+62ea, U+62ee-62ef, U+62f1-62f2, U+62f4-62f5, U+62fc-62fd, U+62ff,
    U+6302-6304, U+6308-630d, U+6310, U+6313, U+6316, U+6318, U+631b, U+6327, U+6329-632a, U+632d, U+6332, U+6335-6336,
    U+6339-633c, U+633e, U+6341-6344, U+6346, U+634a-634e, U+6350, U+6352-6354, U+6358-6359, U+635b, U+6365-6366,
    U+6369, U+636b-636d, U+6371-6372, U+6374-6378, U+637a, U+637c-637d, U+637f-6380, U+6382, U+6384, U+6387,
    U+6389-638a, U+638e-6390, U+6394-6396, U+6399-639a, U+639e, U+63a0, U+63a3-63a4, U+63a6, U+63a9, U+63ab-63af,
    U+63b5, U+63bd-63be, U+63c0-63c1, U+63c4-63c6, U+63c8, U+63ce, U+63d1-63d6, U+63dc, U+63e0, U+63e3, U+63e5,
    U+63e9-63ed, U+63f2-63f3, U+63f5-63f9, U+6406, U+6409-640a, U+640f-6410, U+6412-6414, U+6416-6418, U+641e, U+6420,
    U+6422, U+6424-6426, U+6428-642a, U+642f-6430, U+6434-6436, U+643d, U+643f, U+644b, U+644e-644f, U+6451-6454,
    U+645a-645d, U+645f-6461, U+6463, U+6467, U+646d, U+6473-6474, U+6476, U+6478-6479, U+647b, U+647d, U+6485,
    U+6487-6488, U+648f-6491, U+6493, U+6495, U+6498-649b, U+649d-649f, U+64a1, U+64a3, U+64a6, U+64a8-64a9, U+64ac,
    U+64b3, U+64bb-64bf, U+64c2, U+64c4-64c5, U+64c7, U+64c9-64cc, U+64ce, U+64d0-64d1;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.39.woff2) format('woff2');
  unicode-range:
    U+6117, U+6119, U+611c, U+611e, U+6120-6122, U+6127-6128, U+612a-612c, U+6130-6131, U+6134-6137, U+6139-613a,
    U+613c-613f, U+6141-6142, U+6144-6147, U+6149-614a, U+614d, U+6153, U+6158-615a, U+615d-6160, U+6164-6165,
    U+616b-616c, U+616f, U+6171-6175, U+6177-6178, U+617b-6181, U+6183-6184, U+6187, U+618a-618b, U+618d, U+6192-6194,
    U+6196-619a, U+619c-619d, U+619f-61a0, U+61a5, U+61a8, U+61aa-61ae, U+61b8-61ba, U+61bc, U+61be, U+61c0-61c3,
    U+61c6, U+61c8, U+61ca-61cf, U+61d5, U+61dc-61df, U+61e1-61e3, U+61e5-61e9, U+61ec-61ed, U+61ef, U+61f4-61f7,
    U+61fa, U+61fc-6201, U+6203-6204, U+6207-620a, U+620d-620e, U+6213-6215, U+621b-621e, U+6220-6223, U+6227,
    U+6229-622b, U+622e, U+6230-6233, U+6236, U+6239, U+623d-623e, U+6241-6244, U+6246, U+6248, U+624c, U+624e,
    U+6250-6252, U+6254, U+6256, U+6258, U+625a-625c, U+625e, U+6260-6261, U+6263-6264, U+6268, U+626d, U+626f, U+6273,
    U+627a-627e, U+6282-6283, U+6285, U+6289, U+628d-6290, U+6292-6294, U+6296, U+6299, U+629b, U+62a6, U+62a8, U+62ac,
    U+62b3, U+62b6-62b7, U+62ba-62bb, U+62be-62bf, U+62c2, U+62c4, U+62c6-62c8, U+62ca, U+62ce;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.40.woff2) format('woff2');
  unicode-range:
    U+5f6c-5f6d, U+5f6f, U+5f72-5f75, U+5f78, U+5f7a, U+5f7d-5f7f, U+5f82-5f83, U+5f87-5f89, U+5f8d, U+5f8f, U+5f91,
    U+5f96, U+5f99, U+5f9c-5f9d, U+5fa0, U+5fa2, U+5fa4, U+5fa7-5fa8, U+5fab-5fad, U+5faf-5fb1, U+5fb5, U+5fb7-5fb8,
    U+5fbc-5fbd, U+5fc4, U+5fc7-5fc9, U+5fcb, U+5fd0-5fd4, U+5fdd-5fde, U+5fe1-5fe2, U+5fe4, U+5fe8-5fea, U+5fec-5ff3,
    U+5ff6, U+5ff8, U+5ffa-5ffd, U+5fff, U+6007, U+600a, U+600d-6010, U+6013-6015, U+6017-601b, U+601f, U+6021-6022,
    U+6024, U+6026, U+6029, U+602b, U+602d, U+6031, U+6033, U+6035, U+603a, U+6040-6043, U+6046-604a, U+604c-604d,
    U+6051, U+6054-6057, U+6059-605a, U+605d, U+605f-6064, U+6067, U+606a-606c, U+6070-6071, U+6077, U+607e-607f,
    U+6081-6086, U+6088-608e, U+6091-6093, U+6095-6098, U+609a-609b, U+609d-609e, U+60a2, U+60a4-60a5, U+60a7-60a8,
    U+60b0-60b1, U+60b3-60b5, U+60b7-60b8, U+60bb, U+60bd-60be, U+60c2, U+60c4, U+60c6-60cb, U+60ce-60cf, U+60d3-60d5,
    U+60d8-60d9, U+60db, U+60dd-60df, U+60e1-60e2, U+60e5, U+60ee, U+60f0-60f2, U+60f4-60f8, U+60fa-60fd, U+6100,
    U+6102-6103, U+6106-6108, U+610a, U+610c-610e, U+6110-6114, U+6116;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.41.woff2) format('woff2');
  unicode-range:
    U+5d9b, U+5d9d, U+5d9f-5da0, U+5da2, U+5da4, U+5da7, U+5dab-5dac, U+5dae, U+5db0, U+5db2, U+5db4, U+5db7-5db9,
    U+5dbc-5dbd, U+5dc3, U+5dc7, U+5dc9, U+5dcb-5dce, U+5dd0-5dd3, U+5dd6-5dd9, U+5ddb, U+5de0, U+5de2, U+5de4, U+5de9,
    U+5df2, U+5df5, U+5df8-5df9, U+5dfd, U+5dff-5e00, U+5e07, U+5e0b, U+5e0d, U+5e11-5e12, U+5e14-5e15, U+5e18-5e1b,
    U+5e1f-5e20, U+5e25, U+5e28, U+5e2e, U+5e32, U+5e35-5e37, U+5e3e, U+5e40, U+5e43-5e44, U+5e47, U+5e49, U+5e4b,
    U+5e4e, U+5e50-5e51, U+5e54, U+5e56-5e58, U+5e5b-5e5c, U+5e5e-5e5f, U+5e62, U+5e64, U+5e68, U+5e6a-5e6e, U+5e70,
    U+5e75-5e77, U+5e7a, U+5e7f-5e80, U+5e87, U+5e8b, U+5e8e, U+5e96, U+5e99-5e9a, U+5ea0, U+5ea2, U+5ea4-5ea5, U+5ea8,
    U+5eaa, U+5eac, U+5eb1, U+5eb3, U+5eb8-5eb9, U+5ebd-5ebf, U+5ec1-5ec2, U+5ec6, U+5ec8, U+5ecb-5ecc, U+5ece-5ed6,
    U+5ed9-5ee2, U+5ee5, U+5ee8-5ee9, U+5eeb-5eec, U+5ef0-5ef1, U+5ef3-5ef4, U+5ef8-5ef9, U+5efc-5f00, U+5f02-5f03,
    U+5f06-5f09, U+5f0b-5f0e, U+5f11, U+5f16-5f17, U+5f19, U+5f1b-5f1e, U+5f21-5f24, U+5f27-5f29, U+5f2b-5f30, U+5f34,
    U+5f36, U+5f38, U+5f3a-5f3d, U+5f3f-5f41, U+5f44-5f45, U+5f47-5f48, U+5f4a, U+5f4c-5f4e, U+5f50-5f51, U+5f54,
    U+5f56-5f58, U+5f5b-5f5d, U+5f60, U+5f63-5f65, U+5f67, U+5f6a;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.42.woff2) format('woff2');
  unicode-range:
    U+5bbc, U+5bc0-5bc1, U+5bc3, U+5bc7, U+5bc9, U+5bcd-5bd0, U+5bd3-5bd4, U+5bd6-5bda, U+5bde, U+5be0-5be2,
    U+5be4-5be6, U+5be8, U+5beb-5bec, U+5bef-5bf1, U+5bf3-5bf6, U+5bfd, U+5c03, U+5c05, U+5c07-5c09, U+5c0c-5c0d,
    U+5c12-5c14, U+5c17, U+5c19, U+5c1e-5c20, U+5c22-5c24, U+5c26, U+5c28-5c2e, U+5c30, U+5c32, U+5c35-5c36,
    U+5c38-5c39, U+5c46, U+5c4d-5c50, U+5c53, U+5c59-5c5c, U+5c5f-5c63, U+5c67-5c69, U+5c6c-5c70, U+5c74-5c76,
    U+5c79-5c7d, U+5c87-5c88, U+5c8a, U+5c8c, U+5c8f, U+5c91-5c92, U+5c94, U+5c9d, U+5c9f-5ca0, U+5ca2-5ca3,
    U+5ca6-5ca8, U+5caa-5cab, U+5cad, U+5cb1-5cb2, U+5cb4-5cb7, U+5cba-5cbc, U+5cbe, U+5cc5, U+5cc7, U+5cc9, U+5ccb,
    U+5cd0, U+5cd2, U+5cd7, U+5cd9, U+5cdd, U+5ce6, U+5ce8-5cea, U+5ced-5cee, U+5cf1-5cf2, U+5cf4-5cf5, U+5cfa-5cfb,
    U+5cfd, U+5d01, U+5d06, U+5d0b, U+5d0d, U+5d10-5d12, U+5d14-5d15, U+5d17-5d1b, U+5d1d, U+5d1f-5d20, U+5d22-5d24,
    U+5d26-5d27, U+5d2b, U+5d31, U+5d34, U+5d39, U+5d3d, U+5d3f, U+5d42-5d43, U+5d46-5d48, U+5d4a-5d4b, U+5d4e,
    U+5d51-5d53, U+5d55, U+5d59, U+5d5c, U+5d5f-5d62, U+5d64, U+5d69-5d6a, U+5d6c-5d6d, U+5d6f-5d70, U+5d73, U+5d76,
    U+5d79-5d7a, U+5d7e-5d7f, U+5d81-5d84, U+5d87-5d88, U+5d8a, U+5d8c, U+5d90, U+5d92-5d95, U+5d97, U+5d99;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.43.woff2) format('woff2');
  unicode-range:
    U+598b-598e, U+5992, U+5995, U+5997, U+599b, U+599d, U+599f, U+59a3-59a4, U+59a7, U+59ad-59b0, U+59b2-59b3, U+59b7,
    U+59ba, U+59bc, U+59be, U+59c1, U+59c3-59c4, U+59c6, U+59c8, U+59ca, U+59cd, U+59d2, U+59d9-59da, U+59dd-59df,
    U+59e3-59e5, U+59e7-59e8, U+59ec, U+59ee-59ef, U+59f1-59f2, U+59f4, U+59f6-59f8, U+5a00, U+5a03-5a04, U+5a09,
    U+5a0c-5a0e, U+5a11-5a13, U+5a17, U+5a1a-5a1c, U+5a1e-5a1f, U+5a23-5a25, U+5a27-5a28, U+5a2a, U+5a2d, U+5a30,
    U+5a35-5a36, U+5a40-5a41, U+5a44-5a45, U+5a47-5a49, U+5a4c, U+5a50, U+5a55, U+5a5e, U+5a62-5a63, U+5a65, U+5a67,
    U+5a6a, U+5a6c-5a6d, U+5a77, U+5a7a-5a7b, U+5a7e, U+5a84, U+5a8b, U+5a90, U+5a93, U+5a96, U+5a99, U+5a9c,
    U+5a9e-5aa0, U+5aa2, U+5aa7, U+5aac, U+5ab1-5ab3, U+5ab5, U+5ab8, U+5aba-5abf, U+5ac2, U+5ac4, U+5ac6, U+5ac8,
    U+5acb, U+5acf-5ad0, U+5ad6-5ad7, U+5ada, U+5adc, U+5ae0-5ae1, U+5ae3, U+5ae5-5ae6, U+5ae9-5aea, U+5aee, U+5af0,
    U+5af5-5af6, U+5afa-5afb, U+5afd, U+5b00-5b01, U+5b08, U+5b0b, U+5b16-5b17, U+5b19, U+5b1b, U+5b1d, U+5b21, U+5b25,
    U+5b2a, U+5b2c-5b2d, U+5b30, U+5b32, U+5b34, U+5b36, U+5b38, U+5b3e, U+5b40-5b41, U+5b43, U+5b45, U+5b4b-5b4c,
    U+5b51-5b52, U+5b56, U+5b5a-5b5c, U+5b5e-5b5f, U+5b65, U+5b68-5b69, U+5b6e-5b71, U+5b73, U+5b75-5b76, U+5b7a,
    U+5b7c-5b84, U+5b86, U+5b8a-5b8b, U+5b8d-5b8e, U+5b90-5b91, U+5b93-5b94, U+5b96, U+5ba5-5ba6, U+5ba8-5ba9,
    U+5bac-5bad, U+5baf, U+5bb1-5bb2, U+5bb7-5bb8, U+5bba;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.44.woff2) format('woff2');
  unicode-range:
    U+57b3, U+57b8, U+57bd, U+57c0, U+57c3, U+57c6-57c8, U+57cc, U+57cf, U+57d2-57d7, U+57dc-57de, U+57e0-57e1,
    U+57e3-57e4, U+57e6-57e7, U+57e9, U+57ed, U+57f0, U+57f4-57f6, U+57f8, U+57fb, U+57fd-57ff, U+5803-5804,
    U+5808-580d, U+5819, U+581b, U+581d-5821, U+5826-5827, U+582d, U+582f-5830, U+5832, U+5835, U+5839, U+583d,
    U+583f-5840, U+5849, U+584b-584d, U+584f-5852, U+5855, U+5858-5859, U+585f, U+5861-5862, U+5864, U+5867-5868,
    U+586d, U+5870, U+5872, U+5878-5879, U+587c, U+587f-5881, U+5885, U+5887-588d, U+588f-5890, U+5894, U+5896, U+5898,
    U+589d-589e, U+58a0-58a2, U+58a6, U+58a9-58ab, U+58ae, U+58b1-58b3, U+58b8-58bc, U+58be, U+58c2-58c5, U+58c8,
    U+58cd-58ce, U+58d0-58da, U+58dc-58e2, U+58e4-58e5, U+58e9, U+58ec, U+58ef, U+58f3-58f4, U+58f7, U+58f9,
    U+58fb-58fd, U+5902, U+5905-5906, U+590a-590d, U+5910, U+5912-5914, U+5918-5919, U+591b, U+591d, U+591f, U+5921,
    U+5923-5925, U+5928, U+592c-592d, U+592f-5930, U+5932-5933, U+5935-5936, U+5938-5939, U+593d-593f, U+5943, U+5946,
    U+594e, U+5950, U+5952-5953, U+5955, U+5957-595b, U+595d-5961, U+5963, U+5967, U+5969, U+596b-596d, U+596f, U+5972,
    U+5975-5976, U+5978-5979, U+597b-597c, U+5981;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.45.woff2) format('woff2');
  unicode-range:
    U+5616-5617, U+5619, U+561b, U+5620, U+5628, U+562c, U+562f-5639, U+563b-563d, U+563f-5641, U+5643-5644,
    U+5646-5647, U+5649, U+564b, U+564d-5650, U+5653-5654, U+565e, U+5660-5664, U+5666, U+5669-566d, U+566f,
    U+5671-5672, U+5675-5676, U+5678, U+567a, U+5680, U+5684-5688, U+568a-568c, U+568f, U+5694-5695, U+5699-569a,
    U+569d-56a0, U+56a5-56a9, U+56ab-56ae, U+56b1-56b4, U+56b6-56b7, U+56bc, U+56be, U+56c0, U+56c2-56c3, U+56c5,
    U+56c8-56d1, U+56d3, U+56d7-56d9, U+56dc-56dd, U+56df, U+56e1, U+56e4-56e8, U+56eb, U+56ed-56ee, U+56f1,
    U+56f6-56f7, U+56f9, U+56ff-5704, U+5707-570a, U+570c-570d, U+5711, U+5713, U+5715-5716, U+5718, U+571a-571d,
    U+5720-5726, U+5729-572a, U+572c, U+572e-572f, U+5733-5734, U+5737-5738, U+573b, U+573d-573f, U+5745-5746,
    U+574c-574f, U+5751-5752, U+5759, U+575f, U+5761-5762, U+5764-5765, U+5767-5769, U+576b, U+576d-5771, U+5773-5775,
    U+5777, U+5779-577c, U+577e-577f, U+5781, U+5783, U+5788-5789, U+578c, U+5793-5795, U+5797, U+5799-579a,
    U+579c-57a1, U+57a4, U+57a7-57aa, U+57ac, U+57ae, U+57b0;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.46.woff2) format('woff2');
  unicode-range:
    U+543f-5440, U+5443-5444, U+5447, U+544c-544f, U+5455, U+545e, U+5462, U+5464, U+5466-5467, U+5469, U+546b-546e,
    U+5470-5471, U+5474-5477, U+547b, U+547f-5481, U+5483-5486, U+5488-548b, U+548d-5492, U+5495-5496, U+549c,
    U+549f-54a2, U+54a4, U+54a6-54af, U+54b1, U+54b7-54bc, U+54be-54bf, U+54c2-54c4, U+54c6-54c8, U+54ca, U+54cd-54ce,
    U+54d8, U+54e0, U+54e2, U+54e5-54e6, U+54e8-54ea, U+54ec-54ef, U+54f1, U+54f3, U+54f6, U+54fc-5501, U+5505,
    U+5508-5509, U+550c-550f, U+5514-5516, U+5527, U+552a-552b, U+552e, U+5532-5533, U+5535-5536, U+5538-5539,
    U+553b-553d, U+5540-5541, U+5544-5545, U+5547, U+5549-554a, U+554c-554d, U+5550-5551, U+5556-5558, U+555a-555e,
    U+5560-5561, U+5563-5564, U+5566, U+557b-5583, U+5586-5588, U+558a, U+558e-558f, U+5591-5594, U+5597, U+5599,
    U+559e-559f, U+55a3-55a4, U+55a8-55a9, U+55ac-55ae, U+55b2, U+55bf, U+55c1, U+55c3-55c4, U+55c6-55c7, U+55c9,
    U+55cb-55cc, U+55ce, U+55d1-55d4, U+55d7-55d8, U+55da-55db, U+55dd-55df, U+55e2, U+55e4, U+55e9, U+55ec, U+55ee,
    U+55f1, U+55f6-55f9, U+55fd-55ff, U+5605, U+5607-5608, U+560a, U+560d-5612;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.47.woff2) format('woff2');
  unicode-range:
    U+528d, U+5291-5298, U+529a, U+529c, U+52a4-52a7, U+52ab-52ad, U+52af-52b0, U+52b5-52b8, U+52ba-52be, U+52c0-52c1,
    U+52c4-52c6, U+52c8, U+52ca, U+52cc-52cd, U+52cf-52d2, U+52d4, U+52d6-52d7, U+52db-52dc, U+52de, U+52e0-52e1,
    U+52e3, U+52e5-52e6, U+52e8-52ea, U+52ec, U+52f0-52f1, U+52f3-52fb, U+5300-5301, U+5303, U+5306-5308, U+530a-530d,
    U+530f-5311, U+5313, U+5315, U+5318-531f, U+5321, U+5323-5325, U+5327-532d, U+532f-5333, U+5335, U+5338,
    U+533c-533e, U+5340, U+5342, U+5345-5346, U+5349, U+534b-534c, U+5359, U+535b, U+535e, U+5361, U+5363-5367, U+5369,
    U+536c-536e, U+5372, U+5377, U+5379-537b, U+537d-537f, U+5382-5383, U+5387-5389, U+538e, U+5393-5394, U+5396,
    U+5398-5399, U+539d, U+53a0-53a1, U+53a4-53a6, U+53a9-53ab, U+53ad-53b0, U+53b2, U+53b4-53b8, U+53ba, U+53bd,
    U+53c0-53c1, U+53c3-53c5, U+53cf, U+53d2-53d3, U+53d5, U+53da-53db, U+53dd-53e0, U+53e2, U+53e6-53e8, U+53ed-53ee,
    U+53f4-53f5, U+53fa, U+5401-5403, U+540b, U+540f, U+5412-5413, U+541a, U+541d-541e, U+5421, U+5424, U+5427-542a,
    U+542c-542f, U+5431, U+5433-5436, U+543c-543d;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.48.woff2) format('woff2');
  unicode-range:
    U+50dd-50df, U+50e1-50e6, U+50e8-50e9, U+50ed-50f6, U+50f9-50fb, U+50fe, U+5101-5103, U+5106-5109, U+510b-510e,
    U+5110, U+5112, U+5114-511e, U+5121, U+5123, U+5127-5128, U+512c-512d, U+512f, U+5131, U+5133-5135, U+5137-513c,
    U+513f-5142, U+5147, U+514a, U+514c, U+514f, U+5152-5155, U+5157-5158, U+515f-5160, U+5162, U+5164, U+5166-5167,
    U+5169-516a, U+516e, U+5173-5174, U+5179, U+517b, U+517e, U+5180, U+5182-5184, U+5189, U+518b-518c, U+518e-5191,
    U+5193, U+5195-5196, U+5198, U+519d, U+51a1-51a4, U+51a6, U+51a9-51ab, U+51ad, U+51b0-51b3, U+51b5, U+51b8, U+51ba,
    U+51bc-51bf, U+51c2-51c3, U+51c5, U+51c8-51cb, U+51cf, U+51d1-51d6, U+51d8, U+51de-51e0, U+51e2, U+51e5, U+51e7,
    U+51e9, U+51ec-51ee, U+51f2-51f5, U+51f7, U+51fe, U+5201-5202, U+5204-5205, U+520b, U+520e, U+5212-5216, U+5218,
    U+5222, U+5226-5228, U+522a-522b, U+522e, U+5231-5233, U+5235, U+523c, U+5244-5245, U+5249, U+524b-524c, U+524f,
    U+5254-5255, U+5257-5258, U+525a, U+525c-5261, U+5266, U+5269, U+526c, U+526e, U+5271, U+5273-5274, U+5277-5279,
    U+527d, U+527f-5280, U+5282-5285, U+5288-528a, U+528c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.49.woff2) format('woff2');
  unicode-range:
    U+4f57-4f58, U+4f5a-4f5b, U+4f5d-4f5f, U+4f63-4f64, U+4f69-4f6a, U+4f6c, U+4f6e-4f71, U+4f76-4f7e, U+4f81-4f85,
    U+4f88-4f8a, U+4f8c, U+4f8e-4f90, U+4f92-4f94, U+4f96-4f9a, U+4f9e-4fa0, U+4fab, U+4fad, U+4faf, U+4fb2, U+4fb7,
    U+4fb9, U+4fbb-4fbe, U+4fc0-4fc1, U+4fc4-4fc6, U+4fc8-4fc9, U+4fcb-4fd4, U+4fd8, U+4fda-4fdc, U+4fdf-4fe0, U+4fe2,
    U+4fe4-4fe6, U+4fef-4ff2, U+4ff6, U+4ffc-5002, U+5004-5007, U+500a, U+500c, U+500e-5011, U+5013-5014, U+5016-5018,
    U+501a-501e, U+5021-5023, U+5025-502a, U+502c-502e, U+5030, U+5032-5033, U+5035, U+5039, U+503b, U+5040-5043,
    U+5045-5048, U+504a, U+504c, U+504e, U+5050-5053, U+5055-5057, U+5059-505a, U+505f-5060, U+5062-5063, U+5066-5067,
    U+506a, U+506c-506d, U+5070-5072, U+5077-5078, U+5080-5081, U+5083-5086, U+5088, U+508a, U+508e-5090, U+5092-5096,
    U+509a-509c, U+509e-50a3, U+50aa, U+50ad, U+50af-50b4, U+50b9-50bb, U+50bd, U+50c0, U+50c2-50c4, U+50c7,
    U+50c9-50ca, U+50cc, U+50ce, U+50d0-50d1, U+50d3-50d4, U+50d6, U+50d8-50d9, U+50dc;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.50.woff2) format('woff2');
  unicode-range:
    U+4093, U+4103, U+4105, U+4148, U+414f, U+4163, U+41b4, U+41bf, U+41e6, U+41ee, U+41f3, U+4207, U+420e, U+4264,
    U+4293, U+42c6, U+42d6, U+42dd, U+4302, U+432b, U+4343, U+43ee, U+43f0, U+4408, U+440c, U+4417, U+441c, U+4422,
    U+4453, U+445b, U+4476, U+447a, U+4491, U+44b3, U+44be, U+44d4, U+4508, U+450d, U+4525, U+4543, U+457a, U+459d,
    U+45b8, U+45be, U+45e5, U+45ea, U+460f-4610, U+4641, U+4665, U+46a1, U+46ae-46af, U+470c, U+471f, U+4764, U+47e6,
    U+47fd, U+4816, U+481e, U+4844, U+484e, U+48b5, U+49b0, U+49e7, U+49fa, U+4a04, U+4a29, U+4abc, U+4b38, U+4b3b,
    U+4b7e, U+4bc2, U+4bca, U+4bd2, U+4be8, U+4c17, U+4c20, U+4c38, U+4cc4, U+4cd1, U+4ce1, U+4d07, U+4d77, U+4e02,
    U+4e04-4e05, U+4e0c, U+4e0f-4e12, U+4e15, U+4e17, U+4e19, U+4e1e-4e1f, U+4e23-4e24, U+4e28-4e2c, U+4e2e-4e31,
    U+4e35-4e37, U+4e3f-4e42, U+4e44, U+4e47-4e48, U+4e4d-4e4e, U+4e51, U+4e55-4e56, U+4e58, U+4e5a-4e5c, U+4e62-4e63,
    U+4e68-4e69, U+4e74-4e75, U+4e79, U+4e7f, U+4e82, U+4e85, U+4e8a, U+4e8d-4e8e, U+4e96-4e99, U+4e9d-4ea0, U+4ea2,
    U+4ea5-4ea6, U+4ea8, U+4eaf-4eb0, U+4eb3, U+4eb6, U+4eb9, U+4ebb-4ebc, U+4ec2-4ec4, U+4ec6-4ec8, U+4ecd, U+4ed0,
    U+4ed7, U+4eda-4edb, U+4edd-4ee2, U+4ee8, U+4eeb, U+4eed, U+4eef, U+4ef1, U+4ef3, U+4ef5, U+4ef7, U+4efc-4f00,
    U+4f02-4f03, U+4f08-4f09, U+4f0b-4f0d, U+4f12, U+4f15-4f17, U+4f19, U+4f1c, U+4f2b, U+4f2e, U+4f30-4f31, U+4f33,
    U+4f35-4f37, U+4f39, U+4f3b, U+4f3e, U+4f40, U+4f42-4f43, U+4f48-4f49, U+4f4b-4f4c, U+4f52, U+4f54, U+4f56;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.51.woff2) format('woff2');
  unicode-range:
    U+3395-339b, U+339e-33a0, U+33a2-33ff, U+3402, U+3405-3406, U+3427, U+342c, U+342e, U+3468, U+346a, U+3488, U+3492,
    U+34b5, U+34bc, U+34c1, U+34c7, U+34db, U+351f, U+353e, U+355d-355e, U+3563, U+356e, U+35a6, U+35a8, U+35c5, U+35da,
    U+35de, U+35f4, U+3605, U+3614, U+364a, U+3691, U+3696, U+3699, U+36cf, U+3761-3762, U+376b-376c, U+3775, U+378d,
    U+37c1, U+37e2, U+37e8, U+37f4, U+37fd, U+3800, U+382f, U+3836, U+3840, U+385c, U+3861, U+38a1, U+38ad, U+38fa,
    U+3917, U+391a, U+396f, U+39a4, U+39b8, U+3a5c, U+3a6e, U+3a73, U+3a85, U+3ac4, U+3acb, U+3ad6-3ad7, U+3aea, U+3af3,
    U+3b0e, U+3b1a, U+3b1c, U+3b22, U+3b35, U+3b6d, U+3b77, U+3b87-3b88, U+3b8d, U+3ba4, U+3bb6, U+3bc3, U+3bcd, U+3bf0,
    U+3bf3, U+3c0f, U+3c26, U+3cc3, U+3cd2, U+3d11, U+3d1e, U+3d31, U+3d4e, U+3d64, U+3d9a, U+3dc0, U+3dcc, U+3dd4,
    U+3e05, U+3e3f-3e40, U+3e60, U+3e66, U+3e68, U+3e83, U+3e8a, U+3e94, U+3eda, U+3f57, U+3f72, U+3f75, U+3f77, U+3fae,
    U+3fb1, U+3fc9, U+3fd7, U+3fdc, U+4039, U+4058;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.52.woff2) format('woff2');
  unicode-range: U+32b5-332b, U+332d-3394;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.53.woff2) format('woff2');
  unicode-range: U+31c8-31e3, U+31f0-321e, U+3220-3230, U+3232-32b4;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.54.woff2) format('woff2');
  unicode-range:
    U+3028-303f, U+3094-3096, U+309f-30a0, U+30ee, U+30f7-30fa, U+30ff, U+3105-312f, U+3131-3163, U+3165-318e,
    U+3190-31bb, U+31c0-31c7;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.55.woff2) format('woff2');
  unicode-range: U+2f14-2fd5, U+2ff0-2ffb, U+3004, U+3013, U+3016-301b, U+301e, U+3020-3027;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.56.woff2) format('woff2');
  unicode-range:
    U+25e4-25e6, U+2601-2603, U+2609, U+260e-260f, U+2616-2617, U+261c-261f, U+262f, U+2641, U+2660, U+2662-2664,
    U+2666-2668, U+266d-266e, U+2672-267d, U+26bd-26be, U+2702, U+271a, U+273d, U+2740, U+2756, U+2776-2793, U+27a1,
    U+2934-2935, U+29bf, U+29fa-29fb, U+2b05-2b07, U+2b1a, U+2b95, U+2e3a-2e3b, U+2e80-2e99, U+2e9b-2ef3, U+2f00-2f13;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.57.woff2) format('woff2');
  unicode-range:
    U+24d1-24ff, U+2503-2513, U+2515-2516, U+2518-251b, U+251d-2522, U+2524-259f, U+25a2-25ab, U+25b1, U+25b7,
    U+25c0-25c1, U+25c9-25ca, U+25cc, U+25d0-25d3, U+25e2-25e3;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.58.woff2) format('woff2');
  unicode-range:
    U+2105, U+2109-210a, U+210f, U+2116, U+2121, U+2126-2127, U+212b, U+212e, U+2135, U+213b, U+2194-2199, U+21b8-21b9,
    U+21c4-21c6, U+21cb-21cc, U+21d0, U+21e6-21e9, U+21f5, U+2202-2203, U+2205-2206, U+2208-220b, U+220f, U+2211,
    U+2213, U+2215, U+221a, U+221d, U+2220, U+2223, U+2225-2226, U+2228, U+222a-222e, U+2234-2237, U+223d, U+2243,
    U+2245, U+2248, U+224c, U+2260, U+2262, U+2264-2265, U+226e-226f, U+2272-2273, U+2276-2277, U+2283-2287,
    U+228a-228b, U+2295-2299, U+22a0, U+22a5, U+22bf, U+22da-22db, U+22ef, U+2305-2307, U+2318, U+2329-232a,
    U+23b0-23b1, U+23be-23cc, U+23ce, U+23da-23db, U+2423, U+2469-24d0;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.59.woff2) format('woff2');
  unicode-range:
    U+a1-a4, U+a6-a7, U+aa, U+ac-ad, U+b5-b6, U+b8-ba, U+bc-c8, U+ca-cc, U+ce-d5, U+d9-db, U+dd-df, U+e6, U+ee, U+f0,
    U+f5, U+f7, U+f9, U+fb, U+fe-102, U+110-113, U+11a-11b, U+128-12b, U+143-144, U+147-148, U+14c, U+14e-14f,
    U+152-153, U+168-16d, U+192, U+1a0-1a1, U+1af, U+1cd-1dc, U+1f8-1f9, U+251, U+261, U+2bb, U+2c7, U+2c9, U+2ea-2eb,
    U+304, U+307, U+30c, U+1e3e-1e3f, U+1ea0-1ebe, U+1ec0-1ec6, U+1ec8-1ef9, U+2011-2012, U+2016, U+2018-201a, U+201e,
    U+2021, U+2030, U+2033, U+2035, U+2042, U+2047, U+2051, U+2074, U+20a9, U+20ab-20ac, U+20dd-20de, U+2100;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.60.woff2) format('woff2');
  unicode-range:
    U+2227, U+26a0, U+2713, U+301f, U+4ff8, U+5239, U+526a, U+54fa, U+5740, U+5937, U+5993, U+59fb, U+5a3c, U+5c41,
    U+6028, U+626e, U+646f, U+647a, U+64b0, U+64e2, U+65a7, U+66fe, U+6727, U+6955, U+6bef, U+6f23, U+724c, U+767c,
    U+7a83, U+7ac4, U+7b67, U+8000, U+8471, U+8513, U+8599, U+86db, U+8718, U+87f2, U+88f3, U+8ad2, U+8e2a, U+8fa3,
    U+95a5, U+9798, U+9910, U+9957, U+9bab, U+9c3b, U+9daf, U+ff95;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.61.woff2) format('woff2');
  unicode-range:
    U+a8, U+2032, U+2261, U+2282, U+3090, U+30f1, U+339c, U+535c, U+53d9, U+56a2, U+56c1, U+5806, U+589f, U+59d0,
    U+5a7f, U+60e0, U+639f, U+65af, U+68fa, U+69ae, U+6d1b, U+6ef2, U+71fb, U+725d, U+7262, U+75bc, U+7768, U+7940,
    U+79bf, U+7bed, U+7d68, U+7dfb, U+814b, U+8207, U+83e9, U+8494, U+8526, U+8568, U+85ea, U+86d9, U+87ba, U+8861,
    U+887f, U+8fe6, U+9059, U+9061, U+916a, U+976d, U+97ad, U+9ece;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.62.woff2) format('woff2');
  unicode-range:
    U+2d9, U+21d4, U+301d, U+515c, U+52fe, U+5420, U+5750, U+5766, U+5954, U+5b95, U+5f8a, U+5f98, U+620c, U+621f,
    U+641c, U+66d9, U+676d, U+6775, U+67f5, U+694a, U+6a02, U+6a3a, U+6a80, U+6c23, U+6c72, U+6dcb, U+6faa, U+707c,
    U+71c8, U+7422, U+74e2, U+7791, U+7825, U+7a14, U+7a1c, U+7c95, U+7fc1, U+82a5, U+82db, U+8304, U+853d, U+8cd3,
    U+8de8, U+8f0c, U+8f3f, U+9091, U+91c7, U+929a, U+98af, U+9913;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.63.woff2) format('woff2');
  unicode-range:
    U+2ca-2cb, U+2229, U+2468, U+2669, U+266f, U+273f, U+4ec0, U+4f60, U+4fb6, U+5347, U+540e, U+543b, U+5b0c, U+5d4c,
    U+5f14, U+5f9e, U+6155, U+62d0, U+6602, U+6666, U+66f3, U+67a2, U+67ca, U+69cc, U+6d29, U+6d9b, U+6e3e, U+6f81,
    U+7109, U+73c0, U+73c2, U+7425, U+7435-7436, U+7525, U+7554, U+785d, U+786b, U+7ae3, U+7b94, U+7d18, U+81bf, U+8511,
    U+8549, U+9075, U+9640, U+98e2, U+9e9f, U+ff96;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.64.woff2) format('woff2');
  unicode-range:
    U+2467, U+4ece, U+4ed4, U+4f91, U+4fae, U+534d, U+53c9, U+54b3, U+586b, U+5944, U+5b78, U+5df7, U+5f77, U+6101,
    U+6167-6168, U+61a4, U+62d9, U+698a, U+699b, U+6a59, U+6cc4, U+6e07, U+7099, U+75d2, U+77ad, U+7953, U+7984, U+7a92,
    U+7baa, U+7dbb, U+817f, U+82ad, U+85e9, U+868a, U+8caa, U+8f44, U+9017, U+907c, U+908a, U+92f3, U+936e, U+9435,
    U+978d, U+9838, U+9a28, U+9b41, U+9ba8, U+9c57, U+9eb9;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.65.woff2) format('woff2');
  unicode-range:
    U+b1, U+309b, U+4e5e, U+51f1, U+5506, U+55c5, U+58cc, U+59d1, U+5c51, U+5ef7, U+6284, U+62d7, U+6689, U+673d,
    U+6a2b, U+6a8e, U+6a9c, U+6d63, U+6dd1, U+70b8, U+7235, U+72db, U+72f8, U+7560, U+7c9b, U+7ce7, U+7e1e, U+80af,
    U+82eb, U+8463, U+8499, U+85dd, U+86ee, U+8a60, U+8a6e, U+8c79, U+8e87, U+8e8a, U+8f5f, U+9010, U+918d, U+9190,
    U+965b, U+97fb, U+9ab8, U+9bad, U+9d3b, U+9d5c, U+9dfa, U+9e93;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.66.woff2) format('woff2');
  unicode-range:
    U+2020, U+3003, U+3231, U+4e9b, U+4f3d, U+4f47, U+51b6, U+51dc, U+53e1, U+5bc5, U+602f, U+60bc, U+61c9, U+633d,
    U+637b, U+6492, U+65fa, U+660f, U+66f0, U+6703, U+681e, U+6876, U+6893, U+6912, U+698e, U+6c7d, U+714c, U+7169,
    U+71d5, U+725f, U+72d7, U+745b, U+74dc, U+75e2, U+7891, U+7897, U+7dcb, U+810a, U+8218, U+8339, U+840e, U+852d,
    U+8823, U+8a0a, U+9089, U+919c, U+971c, U+9ad9, U+ff4a, U+ff5a;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.67.woff2) format('woff2');
  unicode-range:
    U+2466, U+2600, U+4eab, U+4fe3, U+4ff5, U+51a5, U+51f0, U+536f, U+53d4, U+53f1, U+54a5, U+559d, U+55e3, U+58fa,
    U+5962, U+59ea, U+5c16, U+5cef, U+5d16, U+5f10, U+5fd6, U+6190, U+6216, U+634f, U+63bb, U+66d6, U+6756, U+6bc5,
    U+6e26, U+727d, U+731f, U+76f2, U+7729, U+7a7f, U+7aff, U+7c9f, U+818f, U+8236, U+82b9, U+8338, U+85aa, U+88b4,
    U+8b33, U+904d, U+93a7, U+96cc, U+96eb, U+9aed, U+9b8e, U+fa11;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.68.woff2) format('woff2');
  unicode-range:
    U+251c, U+2523, U+4e14, U+545f, U+54bd, U+553e, U+55dc, U+56da, U+589c, U+5b55, U+5bb5, U+5ce1, U+5df4, U+5eb6,
    U+5ec9, U+6191, U+62f7, U+6357, U+64a5, U+6591, U+65bc, U+6897, U+6e1a, U+7063, U+711a, U+721b, U+722c, U+75b9,
    U+75d5, U+75fa, U+7766, U+7aae, U+7b48, U+7b8b, U+7d21, U+7e55, U+7f75, U+842c, U+8910, U+8a63, U+8b39, U+8b5a,
    U+8cdc, U+8d74, U+907d, U+91e7, U+9306, U+96bc, U+98f4, U+9ac4;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.69.woff2) format('woff2');
  unicode-range:
    U+2003, U+2312, U+266c, U+4f86, U+51ea, U+5243, U+5256, U+541f, U+5841, U+59dc, U+5df3, U+601c, U+60e7, U+632b,
    U+638c, U+64ad, U+6881, U+697c, U+69cd, U+6c50, U+6d2a, U+6fc1, U+7027, U+7058, U+70f9, U+714e, U+7345, U+751a,
    U+760d, U+764c, U+77db, U+7d79, U+7e8f, U+80ce, U+814e, U+81fc, U+8247, U+8278, U+85a9, U+8a03, U+90ed, U+9784,
    U+9801, U+984e, U+99b3, U+9bc9, U+9bdb, U+9be8, U+9e78, U+ff6b;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.70.woff2) format('woff2');
  unicode-range:
    U+266b, U+3006, U+5176, U+5197, U+51a8, U+51c6, U+52f2, U+5614, U+5875, U+5a2f, U+5b54, U+5ce0, U+5dba, U+5deb,
    U+5e63, U+5f59, U+5fcc, U+6068, U+6367, U+68b6, U+6a0b, U+6b64, U+6e15, U+6eba, U+7272, U+72a0, U+7947, U+7985,
    U+79e6, U+79e9, U+7a3d, U+7a9f, U+7aaf, U+7b95, U+7f60, U+7f9e, U+7fe0, U+8098, U+80ba, U+8106, U+82d4, U+831c,
    U+87f9, U+8a1f, U+8acf, U+90c1, U+920d, U+9756, U+fe43, U+ff94;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.71.woff2) format('woff2');
  unicode-range:
    U+af, U+2465, U+2517, U+33a1, U+4f10, U+50c5, U+51b4, U+5384, U+5606, U+5bb0, U+5cac, U+5ee3, U+618e, U+61f2,
    U+62c9, U+66ab, U+66f9, U+6816, U+6960, U+6b3e, U+6f20, U+7078, U+72d0, U+73ed, U+7ad9, U+7b1b, U+7be4, U+7d62,
    U+7f51, U+80b4, U+80f4, U+8154, U+85fb, U+865c, U+8702, U+895f, U+8aed, U+8b90, U+8ced, U+8fbf, U+91d8, U+9418,
    U+9583, U+9591, U+9813, U+982c, U+9bd6, U+ff46, U+ff7f, U+ff88;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.72.woff2) format('woff2');
  unicode-range:
    U+4e91, U+508d, U+50e7, U+514e, U+51f6, U+5446, U+5504, U+584a, U+59a8, U+59d3, U+5a46, U+5ac9, U+6020, U+60a6,
    U+6148, U+621a, U+6234, U+64c1, U+6523, U+675c, U+67d1, U+6953, U+6ccc, U+6df5, U+6e13, U+6f06, U+723a, U+7325,
    U+74e6, U+758e, U+75ab, U+75d9, U+7a40, U+8096, U+82fa, U+8587, U+8594, U+8a6b, U+8ab9, U+8b17, U+8b83, U+937c,
    U+963b, U+9673, U+96db, U+9ce9, U+9f4b, U+ff67, U+ff82, U+ff93;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.73.woff2) format('woff2');
  unicode-range:
    U+221e, U+2514, U+51f9, U+5270, U+5449, U+5824, U+59a5, U+5a29, U+5d07, U+5e16, U+60e3, U+614c, U+6276, U+643e,
    U+64ab, U+6562, U+6681, U+670b, U+6734, U+67af, U+6a3d, U+6b05, U+6dc0, U+6e4a, U+7259, U+732a, U+7409, U+78a7,
    U+7a6b, U+8015, U+809b, U+817a, U+830e, U+837b, U+85ab, U+8a23, U+8a93, U+8b00, U+8b19, U+8b21, U+8cbf, U+8fb0,
    U+901d, U+91b8, U+9320, U+932c, U+9688, U+96f6, U+9df2, U+ff6a;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.74.woff2) format('woff2');
  unicode-range:
    U+2002, U+2025, U+4f8d, U+51e1, U+51f8, U+5507, U+5598, U+58f1, U+5983, U+59ac, U+5c3c, U+5de7, U+5e7d, U+5eca,
    U+5f61, U+606d, U+60f9, U+636e, U+64ec, U+67da, U+67ff, U+6813, U+68f2, U+693f, U+6b6a, U+6bbb, U+6ef4, U+7092,
    U+717d, U+7261, U+73c8, U+7432, U+7483, U+76fe, U+7709, U+78d0, U+81a3, U+81b3, U+82af, U+8305, U+8309, U+8870,
    U+88fe, U+8cd1, U+8d66, U+906e, U+971e, U+9812, U+ff79, U+ff90;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.75.woff2) format('woff2');
  unicode-range:
    U+2464, U+2501, U+2640, U+2642, U+339d, U+4f0e, U+5091, U+50b5, U+5132, U+51cc, U+558b, U+55aa, U+585e, U+5bee,
    U+5dfe, U+60b6, U+62b9, U+6349, U+6566, U+6590, U+6842, U+689d, U+6a58, U+6c70, U+6ff1, U+7815, U+7881, U+7aaa,
    U+7bc7, U+7def, U+7fa8, U+8017, U+8036, U+8061, U+821f, U+8429, U+8ce0, U+8e74, U+9019, U+90ca, U+9162, U+932f,
    U+93ae, U+9644, U+990c, U+9cf3, U+ff56, U+ff6e, U+ff7e, U+ff85;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.76.woff2) format('woff2');
  unicode-range:
    U+2266-2267, U+4f2f, U+5208, U+5451, U+546a, U+5589, U+576a, U+5815, U+5a9a, U+5b9b, U+5c3a, U+5efb, U+5faa, U+6109,
    U+6643, U+6652, U+695a, U+69fd, U+6b86, U+6bb4, U+6daf, U+7089, U+70cf, U+7a00, U+7a4f, U+7b39, U+7d33, U+80e1,
    U+828b, U+82a6, U+86cd, U+8c8c, U+8cca, U+8df3, U+9077, U+9175, U+91dc, U+925b, U+9262, U+9271, U+92ed, U+9855,
    U+9905, U+9d28, U+ff3f, U+ff58, U+ff68, U+ff6d, U+ff9c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.77.woff2) format('woff2');
  unicode-range:
    U+2207, U+25ef, U+309c, U+4e4f, U+5146, U+51dd, U+5351, U+540a, U+5629, U+5eb5, U+5f04, U+5f13, U+60dc, U+6212,
    U+63b4, U+642c, U+6627, U+66a6, U+66c7, U+66fd, U+674e, U+6b96, U+6c4e, U+6df3, U+6e67, U+6f84, U+72fc, U+733f,
    U+7c97, U+7db1, U+7e4d, U+816b, U+82d1, U+84cb, U+854e, U+8607, U+86c7, U+871c, U+8776, U+8a89, U+8fc4, U+91a4,
    U+9285, U+9685, U+9903, U+9b31, U+9f13, U+ff42, U+ff74, U+ff91;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.78.woff2) format('woff2');
  unicode-range:
    U+4e32, U+51db, U+53a8, U+53ea, U+5609, U+5674, U+5a92, U+5e7e, U+6115, U+611a, U+62cc, U+62ed, U+63c9, U+64b9,
    U+64e6, U+65cb, U+6606, U+6731, U+683d, U+6afb, U+7460, U+771e, U+78ef, U+7b26, U+7b51, U+7cde, U+7d10, U+7d2f,
    U+7d46, U+80de, U+819c, U+84b2, U+85cd, U+865a, U+8ecc, U+9022, U+90b8, U+9192, U+9675, U+96b7, U+99ff, U+ff44,
    U+ff55, U+ff6c, U+ff73, U+ff75, U+ff86, U+ff8d, U+ff92, U+ffe3;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.79.woff2) format('woff2');
  unicode-range:
    U+25b3, U+30f5, U+4eae, U+4f46, U+4f51, U+5203, U+52ff, U+55a7, U+564c, U+565b, U+57f9, U+5805, U+5b64, U+5e06,
    U+5f70, U+5f90, U+60e8, U+6182, U+62f3, U+62fe, U+63aa, U+64a4, U+65d7, U+673a, U+6851, U+68cb, U+68df, U+6d1e,
    U+6e58, U+6e9d, U+77b3, U+7832, U+7c3f, U+7db4, U+7f70, U+80aa, U+80c6, U+8105, U+819d, U+8276, U+8679, U+8986,
    U+8c9d, U+8fc5, U+916c, U+9665, U+9699, U+96c0, U+9a19, U+ff8b;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.80.woff2) format('woff2');
  unicode-range:
    U+2463, U+25a1, U+4ef0, U+5076, U+5098, U+51fd, U+5302, U+5448, U+54c9, U+570b, U+583a, U+5893, U+58a8, U+58ee,
    U+5949, U+5bdb, U+5f26, U+5f81, U+6052, U+6170, U+61c7, U+631f, U+635c, U+664b, U+69fb, U+6f01, U+7070, U+722a,
    U+745e, U+755c, U+76c6, U+78c1, U+79e4, U+7bb8, U+7d0b, U+81a8, U+82d7, U+8b5c, U+8f14, U+8fb1, U+8fbb, U+9283,
    U+9298, U+9a30, U+ff03, U+ff50, U+ff59, U+ff7b, U+ff8e-ff8f;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.81.woff2) format('woff2');
  unicode-range:
    U+2010, U+2502, U+25b6, U+4f3a, U+514b, U+5265, U+52c3, U+5339, U+53ec, U+54c0, U+55b0, U+5854, U+5b8f, U+5cb3,
    U+5e84, U+60da, U+6247, U+6249, U+628a, U+62cd, U+65ac, U+6838, U+690e, U+6cf0, U+6f02, U+6f2c, U+6f70, U+708a,
    U+7434, U+75be, U+77ef, U+7c60, U+7c98, U+7d1b, U+7e2b, U+80a5, U+81e3, U+820c, U+8210, U+8475, U+862d, U+8650,
    U+8997, U+906d, U+91c8, U+9700, U+9727, U+9df9, U+ff3a, U+ff9a;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.82.woff2) format('woff2');
  unicode-range:
    U+2103, U+5049, U+52b1, U+5320, U+5553, U+572d, U+58c7, U+5b5d, U+5bc2, U+5de3, U+5e61, U+5f80, U+61a9, U+67d0,
    U+67f4, U+6c88, U+6ca1, U+6ce5, U+6d78, U+6e9c, U+6f54, U+731b, U+73b2, U+74a7, U+74f6, U+75e9, U+7b20, U+7c8b,
    U+7f72, U+809d, U+8108, U+82b3, U+82bd, U+84b8, U+84c4, U+88c2, U+8ae6, U+8ef8, U+902e, U+9065, U+9326, U+935b,
    U+938c, U+9676, U+9694, U+96f7, U+9ed9, U+ff48, U+ff4c, U+ff81;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.83.woff2) format('woff2');
  unicode-range:
    U+2500, U+3008-3009, U+4ead, U+4f0f, U+4fca, U+53eb, U+543e, U+57a2, U+5cf0, U+5e8f, U+5fe0, U+61b2, U+62d8, U+6442,
    U+64b2, U+6589, U+659c, U+67f1, U+68c4, U+6cb8, U+6d12, U+6de1, U+6fe1, U+70c8, U+723d, U+73e0, U+7656, U+773a,
    U+7948, U+7b87, U+7c92, U+7d3a, U+7e1b, U+7e4a, U+819a, U+8358, U+83c5, U+84bc, U+864e, U+8912, U+8c9e, U+8d05,
    U+92fc, U+9396, U+98fd, U+99d2, U+ff64, U+ff7a, U+ff83;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.84.woff2) format('woff2');
  unicode-range:
    U+3014-3015, U+4e3c, U+5036, U+5075, U+533f, U+53e9, U+5531, U+5642, U+5984, U+59e6, U+5a01, U+5b6b, U+5c0b, U+5f25,
    U+6069, U+60a0, U+614e, U+62b5, U+62d2-62d3, U+6597, U+660c, U+674f, U+67cf, U+6841, U+6905, U+6cf3, U+6d32, U+6d69,
    U+6f64, U+716e, U+7761, U+7b52, U+7be0, U+7dbf, U+7de9, U+7f36, U+81d3, U+8302, U+8389, U+846c, U+84ee, U+8a69,
    U+9038, U+9d8f, U+ff47, U+ff4b, U+ff76, U+ff9b;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.85.woff2) format('woff2');
  unicode-range:
    U+25c7, U+3007, U+504f, U+507d, U+51a0, U+52a3, U+5410, U+5510, U+559a, U+5782, U+582a, U+5c0a, U+5c3f, U+5c48,
    U+5f6b, U+6176, U+622f, U+6279, U+62bd, U+62dd, U+65ed, U+67b6, U+6817, U+6850, U+6d6a, U+6deb, U+6ea2, U+6edd,
    U+6f5c, U+72e9, U+73a9, U+7573, U+76bf, U+7950, U+7956, U+7f8a, U+7ffc, U+80a2, U+80c3, U+83ca, U+8a02, U+8a13,
    U+8df5, U+9375, U+983b, U+99b4, U+ff4e, U+ff71, U+ff89, U+ff97;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.86.woff2) format('woff2');
  unicode-range:
    U+24, U+2022, U+2212, U+221f, U+2665, U+4ecf, U+5100, U+51cd, U+52d8, U+5378, U+53f6, U+574a, U+5982, U+5996,
    U+5c1a, U+5e1d, U+5f84, U+609f, U+61a7, U+61f8, U+6398, U+63ee, U+6676, U+6691, U+6eb6, U+7126, U+71e5, U+7687,
    U+7965, U+7d17, U+80a1, U+8107, U+8266, U+85a6, U+8987, U+8ca2, U+8cab, U+8e0a, U+9042, U+95c7, U+9810, U+9867,
    U+98fc, U+ff52-ff54, U+ff61, U+ff77, U+ff98-ff99;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.87.woff2) format('woff2');
  unicode-range:
    U+b0, U+226a, U+2462, U+4e39, U+4fc3, U+4fd7, U+50be, U+50da, U+5200, U+5211, U+54f2, U+5618, U+596a, U+5b22,
    U+5bb4, U+5d50, U+60a3, U+63fa, U+658e, U+65e8, U+6669, U+6795, U+679d, U+67a0, U+6b3a, U+6e09, U+757f, U+7cd6,
    U+7dbe, U+7ffb, U+83cc, U+83f1, U+840c, U+845b, U+8846, U+8972, U+8a34, U+8a50, U+8a87, U+8edf, U+8ff0, U+90a6,
    U+9154, U+95a3, U+9663, U+9686, U+96c7, U+ff3c, U+ff7c, U+ff8a;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.88.woff2) format('woff2');
  unicode-range:
    U+25bd, U+4e59, U+4ec1, U+4ff3, U+515a, U+518a, U+525b, U+5375, U+552f, U+57a3, U+5b9c, U+5c3d, U+5e3d, U+5e7b,
    U+5f0a, U+6094, U+6458, U+654f, U+67f3, U+6b8a, U+6bd2, U+6c37, U+6ce1, U+6e56, U+6e7f, U+6ed1, U+6ede, U+6f0f,
    U+70ad, U+7267, U+7363, U+786c, U+7a42, U+7db2, U+7f85, U+8178, U+829d, U+8896, U+8c5a, U+8cb0, U+8ce2, U+8ed2,
    U+9047, U+9177, U+970a, U+9ea6, U+ff1b, U+ff31, U+ff39, U+ff80;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.89.woff2) format('woff2');
  unicode-range:
    U+a5, U+4e80, U+4f34, U+4f73, U+4f75, U+511f, U+5192, U+52aa, U+53c8, U+570f, U+57cb, U+596e, U+5d8b, U+5f66,
    U+5fd9, U+62db, U+62f6, U+6328, U+633f, U+63a7, U+6469, U+6bbf, U+6c41, U+6c57, U+6d44, U+6dbc, U+706f, U+72c2,
    U+72ed, U+7551, U+75f4, U+7949, U+7e26, U+7fd4, U+8150, U+8af8, U+8b0e, U+8b72, U+8ca7, U+934b, U+9a0e, U+9a12,
    U+9b42, U+ff41, U+ff43, U+ff45, U+ff49, U+ff4f, U+ff62-ff63;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.90.woff2) format('woff2');
  unicode-range:
    U+4e18, U+4fb5, U+5104, U+52c7, U+5353, U+5374, U+53e5, U+587e, U+594f, U+5a20, U+5de1, U+5f18, U+5fcd, U+6291,
    U+62ab, U+6355, U+6392, U+63da, U+63e1, U+656c, U+6687, U+68b0-68b1, U+68d2, U+68da, U+6b27, U+6cbc, U+7159, U+7344,
    U+73cd, U+76df, U+790e, U+7cf8, U+8102, U+88c1, U+8aa0, U+8e0f, U+9178, U+92ad, U+9670, U+96c5, U+9cf4, U+9db4,
    U+ff3e, U+ff6f, U+ff72, U+ff78, U+ff7d, U+ff84, U+ff8c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.91.woff2) format('woff2');
  unicode-range:
    U+60, U+2200, U+226b, U+2461, U+517c, U+526f, U+5800, U+5b97, U+5bf8, U+5c01, U+5d29, U+5e4c, U+5e81, U+6065,
    U+61d0, U+667a, U+6696, U+6843, U+6c99, U+6d99, U+6ec5, U+6f22, U+6f6e, U+6fa4, U+6fef, U+71c3, U+72d9, U+7384,
    U+78e8, U+7a1a, U+7a32, U+7a3c, U+7adc, U+7ca7, U+7d2b, U+7dad, U+7e4b, U+80a9, U+8170, U+81ed, U+820e, U+8a17,
    U+8afe, U+90aa, U+914e, U+963f, U+99c4, U+9eba, U+9f3b, U+ff38;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.92.woff2) format('woff2');
  unicode-range:
    U+2460, U+4e5f, U+4e7e, U+4ed9, U+501f, U+502b, U+5968, U+5974, U+5ac1, U+5b99, U+5ba3, U+5be7, U+5be9, U+5c64,
    U+5cb8, U+5ec3, U+5f1f, U+616e, U+6297, U+62e0, U+62ec, U+6368, U+642d, U+65e6, U+6717, U+676f, U+6b04, U+732e,
    U+7652, U+76ca, U+76d7, U+7802, U+7e70, U+7f6a, U+8133, U+81e8, U+866b, U+878d, U+88f8, U+8a5e, U+8cdb, U+8d08,
    U+907a, U+90e1, U+96f2, U+9f8d, U+ff35, U+ff37, U+ff40, U+ff9d;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.93.woff2) format('woff2');
  unicode-range:
    U+21d2, U+25ce, U+300a-300b, U+4e89, U+4e9c, U+4ea1, U+5263, U+53cc, U+5426, U+5869, U+5947, U+598a, U+5999, U+5e55,
    U+5e72, U+5e79, U+5fae, U+5fb9, U+602a, U+6163, U+624d, U+6749, U+6c5a, U+6cbf, U+6d45, U+6dfb, U+6e7e, U+708e,
    U+725b, U+7763, U+79c0, U+7bc4, U+7c89, U+7e01, U+7e2e, U+8010, U+8033, U+8c6a, U+8cc3, U+8f1d, U+8f9b, U+8fb2,
    U+907f, U+90f7, U+9707, U+9818, U+9b3c, U+ff0a, U+ff4d;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.94.woff2) format('woff2');
  unicode-range:
    U+2015, U+2190, U+4e43, U+5019, U+5247, U+52e7, U+5438, U+54b2, U+55ab, U+57f7, U+5bd2, U+5e8a, U+5ef6, U+6016,
    U+60b2, U+6162, U+6319, U+6551, U+6607, U+66b4, U+675f, U+67d4, U+6b20, U+6b53, U+6ce3, U+719f, U+75b2, U+770b,
    U+7720, U+77ac, U+79d2, U+7af9, U+7d05, U+7dca, U+8056, U+80f8, U+81f3, U+8352, U+885d, U+8a70, U+8aa4, U+8cbc,
    U+900f, U+9084, U+91e3, U+9451, U+96c4, U+99c6, U+9ad4, U+ff70;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.95.woff2) format('woff2');
  unicode-range:
    U+2193, U+25b2, U+4e4b, U+516d, U+51c4, U+529f, U+52c9, U+5360, U+5442, U+5857, U+5915, U+59eb, U+5a9b, U+5c3b,
    U+6012, U+61b6, U+62b1, U+6311, U+6577, U+65e2, U+65ec, U+6613, U+6790, U+6cb9, U+7372, U+76ae, U+7d5e, U+7fcc,
    U+88ab, U+88d5, U+8caf, U+8ddd, U+8ecd, U+8f38, U+8f9e, U+8feb, U+9063, U+90f5, U+93e1, U+968a, U+968f, U+98fe,
    U+9ec4, U+ff1d, U+ff27, U+ff2a, U+ff36, U+ff3b, U+ff3d, U+ffe5;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.96.woff2) format('woff2');
  unicode-range:
    U+4e03, U+4f38, U+50b7, U+5264, U+5348, U+5371, U+585a, U+58ca, U+5951, U+59b9, U+59d4, U+5b98, U+5f8b, U+6388,
    U+64cd, U+65e7, U+6803, U+6b6f, U+6d66, U+6e0b, U+6ecb, U+6fc3, U+72ac, U+773c, U+77e2, U+7968, U+7a74, U+7dba,
    U+7dd1, U+7e3e, U+808c, U+811a, U+8179, U+8239, U+8584, U+8a0e, U+8a72, U+8b66, U+8c46, U+8f29, U+90a3, U+9234,
    U+96f0, U+9769, U+9774, U+9aa8, U+ff26, U+ff28, U+ff9e-ff9f;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.97.woff2) format('woff2');
  unicode-range:
    U+7e, U+b4, U+25c6, U+2661, U+4e92, U+4eee, U+4ffa, U+5144, U+5237, U+5287, U+52b4, U+58c1, U+5bff, U+5c04, U+5c06,
    U+5e95, U+5f31, U+5f93, U+63c3, U+640d, U+6557, U+6614, U+662f, U+67d3, U+690d, U+6bba, U+6e6f, U+72af, U+732b,
    U+7518, U+7ae0, U+7ae5, U+7af6, U+822a, U+89e6, U+8a3a, U+8a98, U+8cb8, U+8de1, U+8e8d, U+95d8, U+961c, U+96a3,
    U+96ea, U+9bae, U+ff20, U+ff22, U+ff29, U+ff2b-ff2c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.98.woff2) format('woff2');
  unicode-range:
    U+25cb, U+4e71, U+4f59, U+50d5, U+520a, U+5217, U+5230, U+523a-523b, U+541b, U+5439, U+5747, U+59c9, U+5bdf, U+5c31,
    U+5de8, U+5e7c, U+5f69, U+6050, U+60d1, U+63cf, U+663c, U+67c4, U+6885, U+6c38, U+6d6e, U+6db2, U+6df7, U+6e2c,
    U+6f5f, U+7532, U+76e3-76e4, U+7701, U+793c, U+79f0, U+7a93, U+7d00, U+7de0, U+7e54, U+8328, U+8840, U+969c, U+96e8,
    U+9811, U+9aea, U+9b5a, U+ff24, U+ff2e, U+ff57;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.99.woff2) format('woff2');
  unicode-range:
    U+2191, U+505c, U+52e4, U+5305, U+535a, U+56e0, U+59bb, U+5acc, U+5b09, U+5b87, U+5c90, U+5df1, U+5e2d, U+5e33,
    U+5f3e, U+6298, U+6383, U+653b, U+6697, U+6804, U+6a39, U+6cca, U+6e90, U+6f2b, U+702c, U+7206, U+7236, U+7559,
    U+7565, U+7591, U+75c7, U+75db, U+7b4b, U+7bb1, U+7d99, U+7fbd, U+8131, U+885b, U+8b1d, U+8ff7, U+9003, U+9045,
    U+96a0, U+9732, U+990a, U+99d0, U+9e97, U+9f62, U+ff25, U+ff2d;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.100.woff2) format('woff2');
  unicode-range:
    U+4e08, U+4f9d, U+5012, U+514d, U+51b7, U+5275, U+53ca, U+53f8, U+5584, U+57fc, U+5b9d, U+5bfa, U+5c3e, U+5f01,
    U+5fb4, U+5fd7, U+606f, U+62e1, U+6563, U+6674, U+6cb3, U+6d3e, U+6d74, U+6e1b, U+6e2f, U+718a, U+7247, U+79d8,
    U+7d14, U+7d66, U+7d71, U+7df4, U+7e41, U+80cc, U+8155, U+83d3, U+8a95, U+8ab2, U+8ad6, U+8ca1, U+9000, U+9006,
    U+9678, U+97d3, U+9808, U+98ef, U+9a5a, U+9b45, U+ff23, U+ff30;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.101.woff2) format('woff2');
  unicode-range:
    U+25bc, U+3012, U+4ef2, U+4f0a, U+516b, U+5373, U+539a, U+53b3, U+559c, U+56f0, U+5727, U+5742, U+5965, U+59ff,
    U+5bc6, U+5dfb, U+5e45, U+5ead, U+5fb3, U+6211, U+6253, U+639b, U+63a8, U+6545, U+6575, U+6628, U+672d, U+68a8,
    U+6bdb, U+6d25, U+707d, U+767e, U+7834, U+7b46, U+7bc9, U+8074, U+82e6, U+8349, U+8a2a, U+8d70, U+8da3, U+8fce,
    U+91cc, U+967d, U+97ff, U+9996, U+ff1c, U+ff2f, U+ff32, U+ff34;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.102.woff2) format('woff2');
  unicode-range:
    U+3d, U+5e, U+25cf, U+4e0e, U+4e5d, U+4e73, U+4e94, U+4f3c, U+5009, U+5145, U+51ac, U+5238, U+524a, U+53f3, U+547c,
    U+5802, U+5922, U+5a66, U+5c0e, U+5de6, U+5fd8, U+5feb, U+6797, U+685c, U+6b7b, U+6c5f-6c60, U+6cc9, U+6ce2, U+6d17,
    U+6e21, U+7167, U+7642, U+76db, U+8001, U+821e, U+8857, U+89d2, U+8b1b, U+8b70, U+8cb4, U+8cde, U+8f03, U+8f2a,
    U+968e, U+9b54, U+9e7f, U+9ebb, U+ff05, U+ff33;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.103.woff2) format('woff2');
  unicode-range:
    U+500d, U+5074, U+50cd, U+5175, U+52e2, U+5352, U+5354, U+53f2, U+5409, U+56fa, U+5a18, U+5b88, U+5bdd, U+5ca9,
    U+5f92, U+5fa9, U+60a9, U+623f, U+6483, U+653f, U+666f, U+66ae, U+66f2, U+6a21, U+6b66, U+6bcd, U+6d5c, U+796d,
    U+7a4d, U+7aef, U+7b56, U+7b97, U+7c4d, U+7e04, U+7fa9, U+8377, U+83dc, U+83ef, U+8535, U+8863, U+88cf, U+88dc,
    U+8907, U+8acb, U+90ce, U+91dd, U+ff0b, U+ff0d, U+ff19, U+ff65;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.104.woff2) format('woff2');
  unicode-range:
    U+4e01, U+4e21, U+4e38, U+52a9, U+547d, U+592e, U+5931, U+5b63, U+5c40, U+5dde, U+5e78, U+5efa, U+5fa1, U+604b,
    U+6075, U+62c5, U+632f, U+6a19, U+6c0f, U+6c11, U+6c96, U+6e05, U+70ba, U+71b1, U+7387, U+7403, U+75c5, U+77ed,
    U+795d, U+7b54, U+7cbe, U+7d19, U+7fa4, U+8089, U+81f4, U+8208, U+8336, U+8457, U+8a33, U+8c4a, U+8ca0, U+8ca8,
    U+8cc0, U+9014, U+964d, U+9803, U+983c, U+98db, U+ff17, U+ff21;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.105.woff2) format('woff2');
  unicode-range:
    U+25, U+25a0, U+4e26, U+4f4e, U+5341, U+56f2, U+5bbf, U+5c45, U+5c55, U+5c5e, U+5dee, U+5e9c, U+5f7c, U+6255,
    U+627f, U+62bc, U+65cf, U+661f, U+666e, U+66dc, U+67fb, U+6975, U+6a4b, U+6b32, U+6df1, U+6e29, U+6fc0, U+738b,
    U+7686, U+7a76, U+7a81, U+7c73, U+7d75, U+7dd2, U+82e5, U+82f1, U+85ac, U+888b, U+899a, U+8a31, U+8a8c, U+8ab0,
    U+8b58, U+904a, U+9060, U+9280, U+95b2, U+984d, U+9ce5, U+ff18;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.106.woff2) format('woff2');
  unicode-range:
    U+30f6, U+50ac, U+5178, U+51e6, U+5224, U+52dd, U+5883, U+5897, U+590f, U+5a5a, U+5bb3, U+5c65, U+5e03, U+5e2b,
    U+5e30, U+5eb7, U+6271, U+63f4, U+64ae, U+6574, U+672b, U+679a, U+6a29-6a2a, U+6ca2, U+6cc1, U+6d0b, U+713c, U+74b0,
    U+7981, U+7a0b, U+7bc0, U+7d1a, U+7d61, U+7fd2, U+822c, U+8996, U+89aa, U+8cac, U+8cbb, U+8d77, U+8def, U+9020,
    U+9152, U+9244, U+9662, U+967a, U+96e3, U+9759, U+ff16;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.107.woff2) format('woff2');
  unicode-range:
    U+23, U+3c, U+2192, U+4e45, U+4efb, U+4f50, U+4f8b, U+4fc2, U+5024, U+5150, U+5272, U+5370, U+53bb, U+542b, U+56db,
    U+56e3, U+57ce, U+5bc4, U+5bcc, U+5f71, U+60aa, U+6238, U+6280, U+629c, U+6539, U+66ff, U+670d, U+677e-677f, U+6839,
    U+69cb, U+6b4c, U+6bb5, U+6e96, U+6f14, U+72ec, U+7389, U+7814, U+79cb, U+79d1, U+79fb, U+7a0e, U+7d0d, U+85e4,
    U+8d64, U+9632, U+96e2, U+9805, U+99ac, U+ff1e;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.108.woff2) format('woff2');
  unicode-range:
    U+2605-2606, U+301c, U+4e57, U+4fee, U+5065, U+52df, U+533b, U+5357, U+57df, U+58eb, U+58f0, U+591c, U+592a-592b,
    U+5948, U+5b85, U+5d0e, U+5ea7, U+5ff5, U+6025, U+63a1, U+63a5, U+63db, U+643a, U+65bd, U+671d, U+68ee, U+6982,
    U+6b73, U+6bd4, U+6d88, U+7570, U+7b11, U+7d76, U+8077, U+8217, U+8c37, U+8c61, U+8cc7, U+8d85, U+901f, U+962a,
    U+9802, U+9806, U+9854, U+98f2, U+9928, U+99c5, U+9ed2;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.109.woff2) format('woff2');
  unicode-range:
    U+266a, U+4f11, U+533a, U+5343, U+534a, U+53cd, U+5404, U+56f3, U+5b57-5b58, U+5bae, U+5c4a, U+5e0c, U+5e2f, U+5eab,
    U+5f35, U+5f79, U+614b, U+6226, U+629e, U+65c5, U+6625, U+6751, U+6821, U+6b69, U+6b8b, U+6bce, U+6c42, U+706b,
    U+7c21, U+7cfb, U+805e, U+80b2, U+82b8, U+843d, U+8853, U+88c5, U+8a3c, U+8a66, U+8d8a, U+8fba, U+9069, U+91cf,
    U+9752, U+975e, U+9999, U+ff0f-ff10, U+ff14-ff15;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.110.woff2) format('woff2');
  unicode-range:
    U+40, U+4e86, U+4e95, U+4f01, U+4f1d, U+4fbf, U+5099, U+5171, U+5177, U+53cb, U+53ce, U+53f0, U+5668, U+5712,
    U+5ba4, U+5ca1, U+5f85, U+60f3, U+653e, U+65ad, U+65e9, U+6620, U+6750, U+6761, U+6b62, U+6b74, U+6e08, U+6e80,
    U+7248, U+7531, U+7533, U+753a, U+77f3, U+798f, U+7f6e, U+8449, U+88fd, U+89b3, U+8a55, U+8ac7, U+8b77, U+8db3,
    U+8efd, U+8fd4, U+9031-9032, U+9580, U+9589, U+96d1, U+985e;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.111.woff2) format('woff2');
  unicode-range:
    U+2b, U+d7, U+300e-300f, U+4e07, U+4e8c, U+512a, U+5149, U+518d, U+5236, U+52b9, U+52d9, U+5468, U+578b, U+57fa,
    U+5b8c, U+5ba2, U+5c02, U+5de5, U+5f37, U+5f62, U+623b, U+63d0, U+652f, U+672a, U+6848, U+6d41, U+7136, U+7537,
    U+754c, U+76f4, U+79c1, U+7ba1, U+7d44, U+7d4c, U+7dcf, U+7dda, U+7de8, U+82b1, U+897f, U+8ca9, U+8cfc, U+904e,
    U+9664, U+982d, U+9858, U+98a8, U+9a13, U+ff13, U+ff5c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.112.woff2) format('woff2');
  unicode-range:
    U+4e16, U+4e3b, U+4ea4, U+4ee4, U+4f4d, U+4f4f, U+4f55, U+4f9b, U+5317, U+5358, U+53c2, U+53e4, U+548c, U+571f,
    U+59cb, U+5cf6, U+5e38, U+63a2, U+63b2, U+6559, U+662d, U+679c, U+6c7a, U+72b6, U+7523, U+767d, U+770c, U+7a2e,
    U+7a3f, U+7a7a, U+7b2c, U+7b49, U+7d20, U+7d42, U+8003, U+8272, U+8a08, U+8aac, U+8cb7, U+8eab, U+8ee2, U+9054-9055,
    U+90fd, U+914d, U+91cd, U+969b, U+97f3, U+984c, U+ff06;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.113.woff2) format('woff2');
  unicode-range:
    U+26, U+5f, U+2026, U+203b, U+4e09, U+4eac, U+4ed5, U+4fa1, U+5143, U+5199, U+5207, U+539f, U+53e3, U+53f7, U+5411,
    U+5473, U+5546, U+55b6, U+5929, U+597d, U+5bb9, U+5c11, U+5c4b, U+5ddd, U+5f97, U+5fc5, U+6295, U+6301, U+6307,
    U+671b, U+76f8, U+78ba, U+795e, U+7d30, U+7d39, U+7d9a, U+89e3, U+8a00, U+8a73, U+8a8d, U+8a9e, U+8aad, U+8abf,
    U+8cea, U+8eca, U+8ffd, U+904b, U+9650, U+ff11-ff12;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.114.woff2) format('woff2');
  unicode-range:
    U+3e, U+3005, U+4e0d, U+4e88, U+4ecb, U+4ee3, U+4ef6, U+4fdd, U+4fe1, U+500b, U+50cf, U+5186, U+5316, U+53d7,
    U+540c, U+544a, U+54e1, U+5728, U+58f2, U+5973, U+5b89, U+5c71, U+5e02, U+5e97, U+5f15, U+5fc3, U+5fdc, U+601d,
    U+611b, U+611f, U+671f, U+6728, U+6765, U+683c, U+6b21, U+6ce8, U+6d3b, U+6d77, U+7530, U+7740, U+7acb, U+7d50,
    U+826f, U+8f09, U+8fbc, U+9001, U+9053, U+91ce, U+9762, U+98df;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.115.woff2) format('woff2');
  unicode-range:
    U+7c, U+3080, U+4ee5, U+5148, U+516c, U+521d, U+5225, U+529b, U+52a0, U+53ef, U+56de, U+56fd, U+5909, U+591a,
    U+5b66, U+5b9f, U+5bb6, U+5bfe, U+5e73, U+5e83, U+5ea6, U+5f53, U+6027, U+610f, U+6210, U+6240, U+660e, U+66f4,
    U+66f8, U+6709, U+6771, U+697d, U+69d8, U+6a5f, U+6c34, U+6cbb, U+73fe, U+756a, U+7684, U+771f, U+793a, U+7f8e,
    U+898f, U+8a2d, U+8a71, U+8fd1, U+9078, U+9577, U+96fb, U+ff5e;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.116.woff2) format('woff2');
  unicode-range:
    U+a9, U+3010-3011, U+30e2, U+4e0b, U+4eca, U+4ed6, U+4ed8, U+4f53, U+4f5c, U+4f7f, U+53d6, U+540d, U+54c1, U+5730,
    U+5916, U+5b50, U+5c0f, U+5f8c, U+624b, U+6570, U+6587, U+6599, U+691c, U+696d, U+6cd5, U+7269, U+7279, U+7406,
    U+767a-767b, U+77e5, U+7d04, U+7d22, U+8005, U+80fd, U+81ea, U+8868, U+8981, U+89a7, U+901a, U+9023, U+90e8, U+91d1,
    U+9332, U+958b, U+96c6, U+9ad8, U+ff1a, U+ff1f;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.117.woff2) format('woff2');
  unicode-range:
    U+4e, U+a0, U+3000, U+300c-300d, U+4e00, U+4e0a, U+4e2d, U+4e8b, U+4eba, U+4f1a, U+5165, U+5168, U+5185, U+51fa,
    U+5206, U+5229, U+524d, U+52d5, U+5408, U+554f, U+5831, U+5834, U+5927, U+5b9a, U+5e74, U+5f0f, U+60c5, U+65b0,
    U+65b9, U+6642, U+6700, U+672c, U+682a, U+6b63, U+6c17, U+7121, U+751f, U+7528, U+753b, U+76ee, U+793e, U+884c,
    U+898b, U+8a18, U+9593, U+95a2, U+ff01, U+ff08-ff09;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.118.woff2) format('woff2');
  unicode-range:
    U+21-22, U+27-2a, U+2c-3b, U+3f, U+41-4d, U+4f-5d, U+61-7b, U+7d, U+ab, U+ae, U+b2-b3, U+b7, U+bb, U+c9, U+cd, U+d6,
    U+d8, U+dc, U+e0-e5, U+e7-ed, U+ef, U+f1-f4, U+f6, U+f8, U+fa, U+fc-fd, U+103, U+14d, U+1b0, U+300-301, U+1ebf,
    U+1ec7, U+2013-2014, U+201c-201d, U+2039-203a, U+203c, U+2048-2049, U+2113, U+2122, U+65e5, U+6708, U+70b9;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.119.woff2) format('woff2');
  unicode-range:
    U+20, U+2027, U+3001-3002, U+3041-307f, U+3081-308f, U+3091-3093, U+3099-309a, U+309d-309e, U+30a1-30e1,
    U+30e3-30ed, U+30ef-30f0, U+30f2-30f4, U+30fb-30fe, U+ff0c, U+ff0e;
}
/* cyrillic */
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFYxQgP-FVth9IU.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFYzggP-FVth9IU.woff2) format('woff2');
  unicode-range:
    U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309,
    U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFYzwgP-FVth9IU.woff2) format('woff2');
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
    U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFYwQgP-FVthw.woff2) format('woff2');
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC,
    U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.0.woff2) format('woff2');
  unicode-range:
    U+25ee8, U+25f23, U+25f5c, U+25fd4, U+25fe0, U+25ffb, U+2600c, U+26017, U+26060, U+260ed, U+26222, U+2626a, U+26270,
    U+26286, U+2634c, U+26402, U+2667e, U+266b0, U+2671d, U+268dd, U+268ea, U+26951, U+2696f, U+26999, U+269dd, U+26a1e,
    U+26a58, U+26a8c, U+26ab7, U+26aff, U+26c29, U+26c73, U+26c9e, U+26cdd, U+26e40, U+26e65, U+26f94, U+26ff6-26ff8,
    U+270f4, U+2710d, U+27139, U+273da-273db, U+273fe, U+27410, U+27449, U+27614-27615, U+27631, U+27684, U+27693,
    U+2770e, U+27723, U+27752, U+278b2, U+27985, U+279b4, U+27a84, U+27bb3, U+27bbe, U+27bc7, U+27c3c, U+27cb8, U+27d73,
    U+27da0, U+27e10, U+27eaf, U+27fb7, U+2808a, U+280bb, U+28277, U+28282, U+282f3, U+283cd, U+2840c, U+28455, U+284dc,
    U+2856b, U+285c8-285c9, U+286d7, U+286fa, U+28946, U+28949, U+2896b, U+28987-28988, U+289ba-289bb, U+28a1e, U+28a29,
    U+28a43, U+28a71, U+28a99, U+28acd, U+28add, U+28ae4, U+28bc1, U+28bef, U+28cdd, U+28d10, U+28d71, U+28dfb, U+28e0f,
    U+28e17, U+28e1f, U+28e36, U+28e89, U+28eeb, U+28ef6, U+28f32, U+28ff8, U+292a0, U+292b1, U+29490, U+295cf, U+2967f,
    U+296f0, U+29719, U+29750, U+29810, U+298c6, U+29a72, U+29d4b, U+29ddb, U+29e15, U+29e3d, U+29e49, U+29e8a, U+29ec4,
    U+29edb, U+29ee9, U+29fce, U+29fd7, U+2a01a, U+2a02f, U+2a082, U+2a0f9, U+2a190, U+2a2b2, U+2a38c, U+2a437, U+2a5f1,
    U+2a602, U+2a61a, U+2a6b2, U+2a9e6, U+2b746, U+2b751, U+2b753, U+2b75a, U+2b75c, U+2b765, U+2b776-2b777, U+2b77c,
    U+2b782, U+2b789, U+2b78b, U+2b78e, U+2b794, U+2b7ac, U+2b7af, U+2b7bd, U+2b7c9, U+2b7cf, U+2b7d2, U+2b7d8, U+2b7f0,
    U+2b80d, U+2b817, U+2b81a, U+2d544, U+2e278, U+2e569, U+2e6ea, U+2f804, U+2f80f, U+2f815, U+2f818, U+2f81a, U+2f822,
    U+2f828, U+2f82c, U+2f833, U+2f83f, U+2f846, U+2f852, U+2f862, U+2f86d, U+2f873, U+2f877, U+2f884, U+2f899-2f89a,
    U+2f8a6, U+2f8ac, U+2f8b2, U+2f8b6, U+2f8d3, U+2f8db-2f8dc, U+2f8e1, U+2f8e5, U+2f8ea, U+2f8ed, U+2f8fc, U+2f903,
    U+2f90b, U+2f90f, U+2f91a, U+2f920-2f921, U+2f945, U+2f947, U+2f96c, U+2f995, U+2f9d0, U+2f9de-2f9df, U+2f9f4;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.1.woff2) format('woff2');
  unicode-range:
    U+1f235-1f23b, U+1f240-1f248, U+1f250-1f251, U+2000b, U+20089-2008a, U+200a2, U+200a4, U+200b0, U+200f5, U+20158,
    U+201a2, U+20213, U+2032b, U+20371, U+20381, U+203f9, U+2044a, U+20509, U+2053f, U+205b1, U+205d6, U+20611, U+20628,
    U+206ec, U+2074f, U+207c8, U+20807, U+2083a, U+208b9, U+2090e, U+2097c, U+20984, U+2099d, U+20a64, U+20ad3, U+20b1d,
    U+20b9f, U+20bb7, U+20d45, U+20d58, U+20de1, U+20e64, U+20e6d, U+20e95, U+20f5f, U+21201, U+2123d, U+21255, U+21274,
    U+2127b, U+212d7, U+212e4, U+212fd, U+2131b, U+21336, U+21344, U+213c4, U+2146d-2146e, U+215d7, U+21647, U+216b4,
    U+21706, U+21742, U+218bd, U+219c3, U+21a1a, U+21c56, U+21d2d, U+21d45, U+21d62, U+21d78, U+21d92, U+21d9c, U+21da1,
    U+21db7, U+21de0, U+21e33-21e34, U+21f1e, U+21f76, U+21ffa, U+2217b, U+22218, U+2231e, U+223ad, U+22609, U+226f3,
    U+2285b, U+228ab, U+2298f, U+22ab8, U+22b46, U+22b4f-22b50, U+22ba6, U+22c1d, U+22c24, U+22de1, U+22e42, U+22feb,
    U+231b6, U+231c3-231c4, U+231f5, U+23372, U+233cc, U+233d0, U+233d2-233d3, U+233d5, U+233da, U+233df, U+233e4,
    U+233fe, U+2344a-2344b, U+23451, U+23465, U+234e4, U+2355a, U+23594, U+235c4, U+23638-2363a, U+23647, U+2370c,
    U+2371c, U+2373f, U+23763-23764, U+237e7, U+237f1, U+237ff, U+23824, U+2383d, U+23a98, U+23c7f, U+23cbe, U+23cfe,
    U+23d00, U+23d0e, U+23d40, U+23dd3, U+23df9-23dfa, U+23f7e, U+2404b, U+24096, U+24103, U+241c6, U+241fe, U+242ee,
    U+243bc, U+243d0, U+24629, U+246a5, U+247f1, U+24896, U+248e9, U+24a4d, U+24b56, U+24b6f, U+24c16, U+24d14, U+24e04,
    U+24e0e, U+24e37, U+24e6a, U+24e8b, U+24ff2, U+2504a, U+25055, U+25122, U+251a9, U+251cd, U+251e5, U+2521e, U+2524c,
    U+2542e, U+2548e, U+254d9, U+2550e, U+255a7, U+2567f, U+25771, U+257a9, U+257b4, U+25874, U+259c4, U+259cc, U+259d4,
    U+25ad7, U+25ae3-25ae4, U+25af1, U+25bb2, U+25c4b, U+25c64, U+25da1, U+25e2e, U+25e56, U+25e62, U+25e65, U+25ec2,
    U+25ed8;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.2.woff2) format('woff2');
  unicode-range:
    U+ffd7, U+ffda-ffdc, U+ffe0-ffe2, U+ffe4, U+ffe6, U+ffe8-ffee, U+1f100-1f10c, U+1f110-1f16c, U+1f170-1f1ac,
    U+1f200-1f202, U+1f210-1f234;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.3.woff2) format('woff2');
  unicode-range:
    U+fa10, U+fa12-fa6d, U+fb00-fb04, U+fe10-fe19, U+fe30-fe42, U+fe44-fe52, U+fe54-fe66, U+fe68-fe6b, U+ff02, U+ff04,
    U+ff07, U+ff51, U+ff5b, U+ff5d, U+ff5f-ff60, U+ff66, U+ff69, U+ff87, U+ffa1-ffbe, U+ffc2-ffc7, U+ffca-ffcf,
    U+ffd2-ffd6;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.4.woff2) format('woff2');
  unicode-range: U+f92d-f959, U+f95b-f9f2, U+f9f4-fa0b, U+fa0e-fa0f;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.5.woff2) format('woff2');
  unicode-range:
    U+9e8b-9e8c, U+9e8e-9e8f, U+9e91-9e92, U+9e95-9e96, U+9e98, U+9e9b, U+9e9d-9e9e, U+9ea4-9ea5, U+9ea8-9eaa,
    U+9eac-9eb0, U+9eb3-9eb5, U+9eb8, U+9ebc-9ebf, U+9ec3, U+9ec6, U+9ec8, U+9ecb-9ecd, U+9ecf-9ed1, U+9ed4-9ed5,
    U+9ed8, U+9edb-9ee0, U+9ee4-9ee5, U+9ee7-9ee8, U+9eec-9ef2, U+9ef4-9ef9, U+9efb-9eff, U+9f02-9f03, U+9f07-9f09,
    U+9f0e-9f12, U+9f14-9f17, U+9f19-9f1b, U+9f1f-9f22, U+9f26, U+9f2a-9f2c, U+9f2f, U+9f31-9f32, U+9f34, U+9f37,
    U+9f39-9f3a, U+9f3c-9f3f, U+9f41, U+9f43-9f47, U+9f4a, U+9f4e-9f50, U+9f52-9f58, U+9f5a, U+9f5d-9f61, U+9f63,
    U+9f66-9f6a, U+9f6c-9f73, U+9f75-9f77, U+9f7a, U+9f7d, U+9f7f, U+9f8f-9f92, U+9f94-9f97, U+9f99, U+9f9c-9fa3,
    U+9fa5, U+9fb4, U+9fbc-9fc2, U+9fc4, U+9fc6, U+9fcc, U+f900-f92c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.6.woff2) format('woff2');
  unicode-range:
    U+9c3e, U+9c41, U+9c43-9c4a, U+9c4e-9c50, U+9c52-9c54, U+9c56, U+9c58, U+9c5a-9c61, U+9c63, U+9c65, U+9c67-9c6b,
    U+9c6d-9c6e, U+9c70, U+9c72, U+9c75-9c78, U+9c7a-9c7c, U+9ce6-9ce7, U+9ceb-9cec, U+9cf0, U+9cf2, U+9cf6-9cf7,
    U+9cf9, U+9d02-9d03, U+9d06-9d09, U+9d0b, U+9d0e, U+9d11-9d12, U+9d15, U+9d17-9d18, U+9d1b-9d1f, U+9d23, U+9d26,
    U+9d2a-9d2c, U+9d2f-9d30, U+9d32-9d34, U+9d3a, U+9d3c-9d3f, U+9d41-9d48, U+9d4a, U+9d50-9d54, U+9d59, U+9d5d-9d65,
    U+9d69-9d6c, U+9d6f-9d70, U+9d72-9d73, U+9d76-9d77, U+9d7a-9d7c, U+9d7e, U+9d83-9d84, U+9d86-9d87, U+9d89-9d8a,
    U+9d8d-9d8e, U+9d92-9d93, U+9d95-9d9a, U+9da1, U+9da4, U+9da9-9dac, U+9dae, U+9db1-9db2, U+9db5, U+9db8-9dbd,
    U+9dbf-9dc4, U+9dc6-9dc7, U+9dc9-9dca, U+9dcf, U+9dd3-9dd7, U+9dd9-9dda, U+9dde-9de0, U+9de3, U+9de5-9de7, U+9de9,
    U+9deb, U+9ded-9df0, U+9df3-9df4, U+9df8, U+9dfd-9dfe, U+9e02, U+9e07, U+9e0a, U+9e0d-9e0e, U+9e10-9e12,
    U+9e15-9e16, U+9e19-9e1f, U+9e75, U+9e79-9e7d, U+9e80-9e85, U+9e87-9e88;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.7.woff2) format('woff2');
  unicode-range:
    U+9ae5-9ae7, U+9ae9, U+9aeb-9aec, U+9aee-9aef, U+9af1-9af5, U+9af7, U+9af9-9afb, U+9afd, U+9aff-9b06, U+9b08-9b09,
    U+9b0b-9b0e, U+9b10, U+9b12, U+9b16, U+9b18-9b1d, U+9b1f-9b20, U+9b22-9b23, U+9b25-9b2f, U+9b32-9b35, U+9b37,
    U+9b39-9b3b, U+9b3d, U+9b43-9b44, U+9b48, U+9b4b-9b4f, U+9b51, U+9b55-9b58, U+9b5b, U+9b5e, U+9b61, U+9b63,
    U+9b65-9b66, U+9b68, U+9b6a-9b6f, U+9b72-9b79, U+9b7f-9b80, U+9b83-9b87, U+9b89-9b8b, U+9b8d, U+9b8f-9b94,
    U+9b96-9b97, U+9b9a, U+9b9d-9ba0, U+9ba6-9ba7, U+9ba9-9baa, U+9bac, U+9bb0-9bb2, U+9bb4, U+9bb7-9bb9, U+9bbb-9bbc,
    U+9bbe-9bc1, U+9bc6-9bc8, U+9bca, U+9bce-9bd2, U+9bd4, U+9bd7-9bd8, U+9bdd, U+9bdf, U+9be1-9be5, U+9be7,
    U+9bea-9beb, U+9bee-9bf3, U+9bf5, U+9bf7-9bfa, U+9bfd, U+9bff-9c00, U+9c02, U+9c04, U+9c06, U+9c08-9c0d,
    U+9c0f-9c16, U+9c18-9c1e, U+9c21-9c2a, U+9c2d-9c32, U+9c35-9c37, U+9c39-9c3a, U+9c3d;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.8.woff2) format('woff2');
  unicode-range:
    U+98eb, U+98ed-98ee, U+98f0-98f1, U+98f3, U+98f6, U+9902, U+9907-9909, U+9911-9912, U+9914-9918, U+991a-9922,
    U+9924, U+9926-9927, U+992b-992c, U+992e, U+9931-9935, U+9939-993e, U+9940-9942, U+9945-9949, U+994b-994e,
    U+9950-9952, U+9954-9955, U+9958-9959, U+995b-995c, U+995e-9960, U+9963, U+9997-9998, U+999b, U+999d-999f, U+99a3,
    U+99a5-99a6, U+99a8, U+99ad-99ae, U+99b0-99b2, U+99b5, U+99b9-99ba, U+99bc-99bd, U+99bf, U+99c1, U+99c3,
    U+99c8-99c9, U+99d1, U+99d3-99d5, U+99d8-99df, U+99e1-99e2, U+99e7, U+99ea-99ee, U+99f0-99f2, U+99f4-99f5,
    U+99f8-99f9, U+99fb-99fe, U+9a01-9a05, U+9a08, U+9a0a-9a0c, U+9a0f-9a11, U+9a16, U+9a1a, U+9a1e, U+9a20,
    U+9a22-9a24, U+9a27, U+9a2b, U+9a2d-9a2e, U+9a31, U+9a33, U+9a35-9a38, U+9a3e, U+9a40-9a45, U+9a47, U+9a4a-9a4e,
    U+9a51-9a52, U+9a54-9a58, U+9a5b, U+9a5d, U+9a5f, U+9a62, U+9a64-9a65, U+9a69-9a6c, U+9aaa, U+9aac-9ab0, U+9ab2,
    U+9ab4-9ab7, U+9ab9, U+9abb-9ac1, U+9ac3, U+9ac6, U+9ac8, U+9ace-9ad3, U+9ad5-9ad7, U+9adb-9adc, U+9ade-9ae0,
    U+9ae2-9ae4;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.9.woff2) format('woff2');
  unicode-range:
    U+971d, U+9721-9724, U+9728, U+972a, U+9730-9731, U+9733, U+9736, U+9738-9739, U+973b, U+973d-973e, U+9741-9744,
    U+9746-974a, U+974d-974f, U+9751, U+9755, U+9757-9758, U+975a-975c, U+9760-9761, U+9763-9764, U+9766-9768,
    U+976a-976b, U+976e, U+9771, U+9773, U+9776-977d, U+977f-9781, U+9785-9786, U+9789, U+978b, U+978f-9790,
    U+9795-9797, U+9799-979a, U+979c, U+979e-97a0, U+97a2-97a3, U+97a6, U+97a8, U+97ab-97ac, U+97ae, U+97b1-97b6,
    U+97b8-97ba, U+97bc, U+97be-97bf, U+97c1, U+97c3-97ce, U+97d0-97d1, U+97d4, U+97d7-97d9, U+97db-97de, U+97e0-97e1,
    U+97e4, U+97e6, U+97ed-97ef, U+97f1-97f2, U+97f4-97f8, U+97fa, U+9804, U+9807, U+980a, U+980c-980f, U+9814,
    U+9816-9817, U+9819-981a, U+981c, U+981e, U+9820-9821, U+9823-9826, U+982b, U+982e-9830, U+9832-9835, U+9837,
    U+9839, U+983d-983e, U+9844, U+9846-9847, U+984a-984b, U+984f, U+9851-9853, U+9856-9857, U+9859-985b, U+9862-9863,
    U+9865-9866, U+986a-986c, U+986f-9871, U+9873-9875, U+98aa-98ab, U+98ad-98ae, U+98b0-98b1, U+98b4, U+98b6-98b8,
    U+98ba-98bc, U+98bf, U+98c2-98c8, U+98cb-98cc, U+98ce, U+98dc, U+98de, U+98e0-98e1, U+98e3, U+98e5-98e7, U+98e9-98ea;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.10.woff2) format('woff2');
  unicode-range:
    U+944a, U+944c, U+9452-9453, U+9455, U+9459-945c, U+945e-9463, U+9468, U+946a-946b, U+946d-9472, U+9475, U+9477,
    U+947c-947f, U+9481, U+9483-9485, U+9578-9579, U+957e-957f, U+9582, U+9584, U+9586-9588, U+958a, U+958c-958f,
    U+9592, U+9594, U+9596, U+9598-9599, U+959d-95a1, U+95a4, U+95a6-95a9, U+95ab-95ad, U+95b1, U+95b4, U+95b6,
    U+95b9-95bf, U+95c3, U+95c6, U+95c8-95cd, U+95d0-95d6, U+95d9-95da, U+95dc-95e2, U+95e4-95e6, U+95e8, U+961d-961e,
    U+9621-9622, U+9624-9626, U+9628, U+962c, U+962e-962f, U+9631, U+9633-9634, U+9637-963a, U+963c-963d, U+9641-9642,
    U+964b-964c, U+964f, U+9652, U+9654, U+9656-9658, U+965c-965f, U+9661, U+9666, U+966a, U+966c, U+966e, U+9672,
    U+9674, U+9677, U+967b-967c, U+967e-967f, U+9681-9684, U+9689, U+968b, U+968d, U+9691, U+9695-9698, U+969a, U+969d,
    U+969f, U+96a4-96aa, U+96ae-96b4, U+96b6, U+96b8-96bb, U+96bd, U+96c1, U+96c9-96cb, U+96cd-96ce, U+96d2,
    U+96d5-96d6, U+96d8-96da, U+96dc-96df, U+96e9, U+96ef, U+96f1, U+96f9-96fa, U+9702-9706, U+9708-9709, U+970d-970f,
    U+9711, U+9713-9714, U+9716, U+9719-971b;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.11.woff2) format('woff2');
  unicode-range:
    U+92bc-92bd, U+92bf-92c3, U+92c5-92c8, U+92cb-92d0, U+92d2-92d3, U+92d5, U+92d7-92d9, U+92dc-92dd, U+92df-92e1,
    U+92e3-92e5, U+92e7-92ea, U+92ec, U+92ee, U+92f0, U+92f2, U+92f7-92fb, U+92ff-9300, U+9302, U+9304, U+9308, U+930d,
    U+930f-9311, U+9314-9315, U+9318-931a, U+931c-931f, U+9321-9325, U+9327-932b, U+932e, U+9333-9337, U+933a-933b,
    U+9344, U+9347-934a, U+934d, U+9350-9352, U+9354-9358, U+935a, U+935c, U+935e, U+9360, U+9364-9365, U+9367,
    U+9369-936d, U+936f-9371, U+9373-9374, U+9376, U+937a, U+937d-9382, U+9388, U+938a-938b, U+938d, U+938f, U+9392,
    U+9394-9395, U+9397-9398, U+939a-939b, U+939e, U+93a1, U+93a3-93a4, U+93a6, U+93a8-93a9, U+93ab-93ad, U+93b0,
    U+93b4-93b6, U+93b9-93bb, U+93c1, U+93c3-93cd, U+93d0-93d1, U+93d3, U+93d6-93d9, U+93dc-93df, U+93e2, U+93e4-93e8,
    U+93f1, U+93f5, U+93f7-93fb, U+93fd, U+9401-9404, U+9407-9409, U+940d-9410, U+9413-9417, U+9419-941a, U+941f,
    U+9421, U+942b, U+942e-942f, U+9431-9434, U+9436, U+9438, U+943a-943b, U+943d, U+943f, U+9441, U+9443-9445, U+9448;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.12.woff2) format('woff2');
  unicode-range:
    U+9143, U+9146-914c, U+914f, U+9153, U+9156-915b, U+9161, U+9163-9165, U+9167, U+9169, U+916d, U+9172-9174,
    U+9179-917b, U+9181-9183, U+9185-9187, U+9189-918b, U+918e, U+9191, U+9193-9195, U+9197-9198, U+919e, U+91a1-91a2,
    U+91a6, U+91a8, U+91aa-91b6, U+91ba-91bd, U+91bf-91c6, U+91c9, U+91cb, U+91d0, U+91d3-91d4, U+91d6-91d7,
    U+91d9-91db, U+91de-91df, U+91e1, U+91e4-91e6, U+91e9-91ea, U+91ec-91f1, U+91f5-91f7, U+91f9, U+91fb-91fd,
    U+91ff-9201, U+9204-9207, U+9209-920a, U+920c, U+920e, U+9210-9218, U+921c-921e, U+9223-9226, U+9228-9229, U+922c,
    U+922e-9230, U+9233, U+9235-923a, U+923c, U+923e-9240, U+9242-9243, U+9245-924b, U+924d-9251, U+9256-925a,
    U+925c-925e, U+9260-9261, U+9264-9269, U+926e-9270, U+9275-9279, U+927b-927f, U+9288-928a, U+928d-928e, U+9291-9293,
    U+9295-9297, U+9299, U+929b-929c, U+929f-92a0, U+92a4-92a5, U+92a7-92a8, U+92ab, U+92af, U+92b2-92b3, U+92b6-92bb;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.13.woff2) format('woff2');
  unicode-range:
    U+8f52-8f55, U+8f57-8f58, U+8f5c-8f5e, U+8f61-8f66, U+8f9c-8f9d, U+8f9f-8fa2, U+8fa4-8fa8, U+8fad-8faf, U+8fb4-8fb8,
    U+8fbe, U+8fc0-8fc2, U+8fc6, U+8fc8, U+8fca-8fcb, U+8fcd, U+8fd0, U+8fd2-8fd3, U+8fd5, U+8fda, U+8fe0, U+8fe2-8fe5,
    U+8fe8-8fea, U+8fed-8fef, U+8ff1, U+8ff4-8ff6, U+8ff8-8ffb, U+8ffe, U+9002, U+9004-9005, U+9008, U+900b-900e,
    U+9011, U+9013, U+9015-9016, U+9018, U+901b, U+901e, U+9021, U+9027-902a, U+902c-902d, U+902f, U+9033-9037, U+9039,
    U+903c, U+903e-903f, U+9041, U+9043-9044, U+9049, U+904c, U+904f-9052, U+9056, U+9058, U+905b-905e, U+9062,
    U+9066-9068, U+906c, U+906f-9070, U+9072, U+9074, U+9076, U+9079, U+9080-9083, U+9085, U+9087-9088, U+908b-908c,
    U+908e-9090, U+9095, U+9097-9099, U+909b, U+90a0-90a2, U+90a5, U+90a8, U+90af-90b6, U+90bd-90be, U+90c3-90c5,
    U+90c7-90c9, U+90cc, U+90d2, U+90d5, U+90d7-90d9, U+90db-90df, U+90e2, U+90e4-90e5, U+90eb, U+90ef-90f0, U+90f2,
    U+90f4, U+90f6, U+90fe-9100, U+9102, U+9104-9106, U+9108, U+910d, U+9110, U+9112, U+9114-911a, U+911c, U+911e,
    U+9120, U+9122-9123, U+9125, U+9127, U+9129, U+912d-9132, U+9134, U+9136-9137, U+9139-913a, U+913c-913d;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.14.woff2) format('woff2');
  unicode-range:
    U+8dc0, U+8dc2, U+8dc5-8dc8, U+8dca-8dcc, U+8dce-8dcf, U+8dd1, U+8dd4-8dd7, U+8dd9-8ddb, U+8ddf, U+8de3-8de5,
    U+8de7, U+8dea-8dec, U+8df0-8df2, U+8df4, U+8dfc-8dfd, U+8dff, U+8e01, U+8e04-8e06, U+8e08-8e09, U+8e0b-8e0c,
    U+8e10-8e11, U+8e14, U+8e16, U+8e1d-8e23, U+8e26-8e27, U+8e30-8e31, U+8e33-8e39, U+8e3d, U+8e40-8e42, U+8e44,
    U+8e47-8e50, U+8e54-8e55, U+8e59, U+8e5b-8e64, U+8e69, U+8e6c-8e6d, U+8e6f-8e72, U+8e75-8e77, U+8e79-8e7c,
    U+8e81-8e85, U+8e89, U+8e8b, U+8e90-8e95, U+8e98-8e9b, U+8e9d-8e9e, U+8ea1-8ea2, U+8ea7, U+8ea9-8eaa, U+8eac-8eb1,
    U+8eb3, U+8eb5-8eb6, U+8eba-8ebb, U+8ebe, U+8ec0-8ec1, U+8ec3-8ec8, U+8ecb, U+8ecf, U+8ed1, U+8ed4, U+8edb-8edc,
    U+8ee3, U+8ee8, U+8eeb, U+8eed-8eee, U+8ef0-8ef1, U+8ef7, U+8ef9-8efc, U+8efe, U+8f00, U+8f02, U+8f05, U+8f07-8f08,
    U+8f0a, U+8f0f-8f10, U+8f12-8f13, U+8f15-8f19, U+8f1b-8f1c, U+8f1e-8f21, U+8f23, U+8f25-8f28, U+8f2b-8f2f,
    U+8f33-8f37, U+8f39-8f3b, U+8f3e, U+8f40-8f43, U+8f45-8f47, U+8f49-8f4a, U+8f4c-8f4f, U+8f51;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.15.woff2) format('woff2');
  unicode-range:
    U+8b2d, U+8b30, U+8b37, U+8b3c, U+8b3e, U+8b41-8b46, U+8b48-8b49, U+8b4c-8b4f, U+8b51-8b54, U+8b56, U+8b59, U+8b5b,
    U+8b5e-8b5f, U+8b63, U+8b69, U+8b6b-8b6d, U+8b6f, U+8b71, U+8b74, U+8b76, U+8b78-8b79, U+8b7c-8b81, U+8b84-8b85,
    U+8b8a-8b8f, U+8b92-8b96, U+8b99-8b9a, U+8b9c-8ba0, U+8c38-8c3a, U+8c3d-8c3f, U+8c41, U+8c45, U+8c47-8c49,
    U+8c4b-8c4c, U+8c4e-8c51, U+8c53-8c55, U+8c57-8c59, U+8c5b, U+8c5d, U+8c62-8c64, U+8c66, U+8c68-8c69, U+8c6b-8c6d,
    U+8c73, U+8c75-8c76, U+8c78, U+8c7a-8c7c, U+8c7e, U+8c82, U+8c85-8c87, U+8c89-8c8b, U+8c8d-8c8e, U+8c90,
    U+8c92-8c94, U+8c98-8c99, U+8c9b-8c9c, U+8c9f, U+8ca4, U+8cad-8cae, U+8cb2-8cb3, U+8cb6, U+8cb9-8cba, U+8cbd,
    U+8cc1-8cc2, U+8cc4-8cc6, U+8cc8-8cc9, U+8ccb, U+8ccd-8ccf, U+8cd2, U+8cd5-8cd6, U+8cd9-8cda, U+8cdd, U+8ce1,
    U+8ce3-8ce4, U+8ce6, U+8ce8, U+8cec, U+8cef-8cf2, U+8cf4-8cf5, U+8cf7-8cf8, U+8cfa-8cfb, U+8cfd-8cff, U+8d01,
    U+8d03-8d04, U+8d07, U+8d09-8d0b, U+8d0d-8d10, U+8d12-8d14, U+8d16-8d17, U+8d1b-8d1d, U+8d65, U+8d67, U+8d69,
    U+8d6b-8d6e, U+8d71, U+8d73, U+8d76, U+8d7f, U+8d81-8d82, U+8d84, U+8d88, U+8d8d, U+8d90-8d91, U+8d95, U+8d99,
    U+8d9e-8da0, U+8da6, U+8da8, U+8dab-8dac, U+8daf, U+8db2, U+8db5, U+8db7, U+8db9-8dbc, U+8dbe;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.16.woff2) format('woff2');
  unicode-range:
    U+8973-8975, U+8977, U+897a-897e, U+8980, U+8983, U+8988-898a, U+898d, U+8990, U+8993-8995, U+8998, U+899b-899c,
    U+899f-89a1, U+89a5-89a6, U+89a9, U+89ac, U+89af-89b0, U+89b2, U+89b4-89b7, U+89ba, U+89bc-89bd, U+89bf-89c1,
    U+89d4-89d8, U+89da, U+89dc-89dd, U+89e5, U+89e7, U+89e9, U+89eb, U+89ed, U+89f1, U+89f3-89f4, U+89f6, U+89f8-89f9,
    U+89fd, U+89ff, U+8a01, U+8a04-8a05, U+8a07, U+8a0c, U+8a0f-8a12, U+8a14-8a16, U+8a1b, U+8a1d-8a1e, U+8a20-8a22,
    U+8a24-8a26, U+8a2b-8a2c, U+8a2f, U+8a35-8a37, U+8a3b, U+8a3d-8a3e, U+8a40-8a41, U+8a43, U+8a45-8a49, U+8a4d-8a4e,
    U+8a51-8a54, U+8a56-8a58, U+8a5b-8a5d, U+8a61-8a62, U+8a65, U+8a67, U+8a6c-8a6d, U+8a75-8a77, U+8a79-8a7c,
    U+8a7e-8a80, U+8a82-8a86, U+8a8b, U+8a8f-8a92, U+8a96-8a97, U+8a99-8a9a, U+8a9f, U+8aa1, U+8aa3, U+8aa5-8aaa,
    U+8aae-8aaf, U+8ab3, U+8ab6-8ab7, U+8abb-8abc, U+8abe, U+8ac2-8ac4, U+8ac6, U+8ac8-8aca, U+8acc-8acd, U+8ad0-8ad1,
    U+8ad3-8ad5, U+8ad7, U+8ada-8ae2, U+8ae4, U+8ae7, U+8aeb-8aec, U+8aee, U+8af0-8af1, U+8af3-8af7, U+8afa, U+8afc,
    U+8aff, U+8b01-8b02, U+8b04-8b07, U+8b0a-8b0d, U+8b0f-8b11, U+8b14, U+8b16, U+8b1a, U+8b1c, U+8b1e-8b20, U+8b26,
    U+8b28, U+8b2b-8b2c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.17.woff2) format('woff2');
  unicode-range:
    U+87e2-87e6, U+87ea-87ed, U+87ef, U+87f1, U+87f3, U+87f5-87f8, U+87fa-87fb, U+87fe-87ff, U+8801, U+8803,
    U+8805-8807, U+8809-880b, U+880d-8816, U+8818-881c, U+881e-881f, U+8821-8822, U+8827-8828, U+882d-882e, U+8830-8832,
    U+8835-8836, U+8839-883c, U+8841-8845, U+8848-884b, U+884d-884e, U+8851-8852, U+8855-8856, U+8858-885a, U+885c,
    U+885e-8860, U+8862, U+8864, U+8869, U+886b, U+886e-886f, U+8871-8872, U+8875, U+8877, U+8879, U+887b, U+887d-887e,
    U+8880-8882, U+8888, U+888d, U+8892, U+8897-889c, U+889e-88a0, U+88a2, U+88a4, U+88a8, U+88aa, U+88ae, U+88b0-88b1,
    U+88b5, U+88b7, U+88ba, U+88bc-88c0, U+88c3-88c4, U+88c6, U+88ca-88ce, U+88d1-88d4, U+88d8-88d9, U+88db,
    U+88dd-88e1, U+88e7-88e8, U+88ef-88f2, U+88f4-88f5, U+88f7, U+88f9, U+88fc, U+8901-8902, U+8904, U+8906, U+890a,
    U+890c-890f, U+8913, U+8915-8916, U+8918-891a, U+891c-891e, U+8920, U+8925-8928, U+892a-892b, U+8930-8932,
    U+8935-893b, U+893e, U+8940-8946, U+8949, U+894c-894d, U+894f, U+8952, U+8956-8957, U+895a-895c, U+895e,
    U+8960-8964, U+8966, U+896a-896b, U+896d-8970;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.18.woff2) format('woff2');
  unicode-range:
    U+8655-8659, U+865b, U+865d-8664, U+8667, U+8669, U+866c, U+866f, U+8671, U+8675-8677, U+867a-867b, U+867d,
    U+8687-8689, U+868b-868d, U+8691, U+8693, U+8695-8696, U+8698, U+869a, U+869c-869d, U+86a1, U+86a3-86a4,
    U+86a6-86ab, U+86ad, U+86af-86b1, U+86b3-86b9, U+86bf-86c1, U+86c3-86c6, U+86c9, U+86cb, U+86ce, U+86d1-86d2,
    U+86d4-86d5, U+86d7, U+86da, U+86dc, U+86de-86e0, U+86e3-86e7, U+86e9, U+86ec-86ed, U+86ef, U+86f8-86fe, U+8700,
    U+8703-870b, U+870d-8714, U+8719-871a, U+871e-871f, U+8721-8723, U+8725, U+8728-8729, U+872e-872f, U+8731-8732,
    U+8734, U+8737, U+8739-8740, U+8743, U+8745, U+8749, U+874b-874e, U+8751, U+8753, U+8755, U+8757-8759, U+875d,
    U+875f-8761, U+8763-8766, U+8768, U+876a, U+876e-876f, U+8771-8772, U+8774, U+8778, U+877b-877c, U+877f,
    U+8782-8789, U+878b-878c, U+878e, U+8790, U+8793, U+8795, U+8797-8799, U+879e-87a0, U+87a2-87a3, U+87a7,
    U+87ab-87af, U+87b1, U+87b3, U+87b5, U+87bb, U+87bd-87c1, U+87c4, U+87c6-87cb, U+87ce, U+87d0, U+87d2, U+87d5-87d6,
    U+87d9-87da, U+87dc, U+87df-87e0;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.19.woff2) format('woff2');
  unicode-range:
    U+84b4, U+84b9-84bb, U+84bd-84c2, U+84c6-84ca, U+84cc-84d1, U+84d3, U+84d6, U+84d9-84da, U+84dc, U+84e7, U+84ea,
    U+84ec, U+84ef-84f2, U+84f4, U+84f7, U+84fa-84fd, U+84ff-8500, U+8502-8503, U+8506-8507, U+850c, U+850e, U+8510,
    U+8514-8515, U+8517-8518, U+851a-851c, U+851e-851f, U+8521-8525, U+8527, U+852a-852c, U+852f, U+8532-8534, U+8536,
    U+853e-8541, U+8543, U+8546, U+8548, U+854a-854b, U+854f-8553, U+8555-855a, U+855c-8564, U+8569-856b, U+856d,
    U+856f, U+8577, U+8579-857b, U+857d-8581, U+8585-8586, U+8588-858c, U+858f-8591, U+8593, U+8597-8598, U+859b-859d,
    U+859f-85a0, U+85a2, U+85a4-85a5, U+85a7-85a8, U+85ad-85b0, U+85b4, U+85b6-85ba, U+85bc-85bf, U+85c1-85c2, U+85c7,
    U+85c9-85cb, U+85ce-85d0, U+85d5, U+85d8-85da, U+85dc, U+85df-85e1, U+85e5-85e6, U+85e8, U+85ed, U+85f3-85f4,
    U+85f6-85f7, U+85f9-85fa, U+85fc, U+85fe-8600, U+8602, U+8604-8606, U+860a-860b, U+860d-860e, U+8610-8613,
    U+8616-861b, U+861e, U+8621-8622, U+8624, U+8627, U+8629, U+862f-8630, U+8636, U+8638-863a, U+863c-863d,
    U+863f-8642, U+8646, U+864d, U+8652-8654;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.20.woff2) format('woff2');
  unicode-range:
    U+82e8, U+82ea, U+82ed, U+82ef, U+82f3-82f4, U+82f6-82f7, U+82f9, U+82fb, U+82fd-82fe, U+8300-8301, U+8303,
    U+8306-8308, U+830a-830c, U+8316-8318, U+831b, U+831d-831f, U+8321-8323, U+832b-8335, U+8337, U+833a, U+833c-833d,
    U+8340, U+8342-8347, U+834a, U+834d-8351, U+8353-8357, U+835a, U+8362-8363, U+8370, U+8373, U+8375, U+8378,
    U+837c-837d, U+837f-8380, U+8382, U+8384-8387, U+838a, U+838d-838e, U+8392-8396, U+8398-83a0, U+83a2, U+83a6-83ad,
    U+83b1, U+83b5, U+83bd-83c1, U+83c7, U+83c9, U+83ce-83d1, U+83d4, U+83d6, U+83d8, U+83dd, U+83df-83e1, U+83e5,
    U+83e8, U+83ea-83eb, U+83f0, U+83f2, U+83f4, U+83f6-83f9, U+83fb-83fd, U+8401, U+8403-8404, U+8406-8407,
    U+840a-840b, U+840d, U+840f, U+8411, U+8413, U+8415, U+8417, U+8419, U+8420, U+8422, U+842a, U+842f, U+8431, U+8435,
    U+8438-8439, U+843c, U+8445-8448, U+844a, U+844d-844f, U+8451-8452, U+8456, U+8458-845a, U+845c, U+845f-8462,
    U+8464-8467, U+8469-846b, U+846d-8470, U+8473-8474, U+8476-847a, U+847c-847d, U+8481-8482, U+8484-8485, U+848b,
    U+8490, U+8492-8493, U+8495, U+8497, U+849c, U+849e-849f, U+84a1, U+84a6, U+84a8-84aa, U+84ad, U+84af, U+84b1;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.21.woff2) format('woff2');
  unicode-range:
    U+814a, U+814c, U+8151-8153, U+8157, U+815f-8161, U+8165-8169, U+816d-816f, U+8171, U+8173-8174, U+8177,
    U+8180-8186, U+8188, U+818a-818b, U+818e, U+8190, U+8193, U+8195-8196, U+8198, U+819b, U+819e, U+81a0, U+81a2,
    U+81a4, U+81a9, U+81ae, U+81b0, U+81b2, U+81b4-81b5, U+81b8, U+81ba-81bb, U+81bd-81be, U+81c0-81c3, U+81c5-81c6,
    U+81c8-81cb, U+81cd-81cf, U+81d1, U+81d5-81db, U+81dd-81e1, U+81e4-81e5, U+81e7, U+81eb-81ec, U+81ef-81f2,
    U+81f5-81f6, U+81f8-81fb, U+81fd-8205, U+8209-820b, U+820d, U+820f, U+8212-8214, U+8216, U+8219-821d, U+8221-8222,
    U+8228-8229, U+822b, U+822e, U+8232-8235, U+8237-8238, U+823a, U+823c, U+8240, U+8243-8246, U+8249, U+824b,
    U+824e-824f, U+8251, U+8256-825a, U+825c-825d, U+825f-8260, U+8262-8264, U+8267-8268, U+826a-826b, U+826d-826e,
    U+8271, U+8274, U+8277, U+8279, U+827b, U+827d-8281, U+8283-8284, U+8287, U+8289-828a, U+828d-828e, U+8291-8294,
    U+8296, U+8298-829b, U+829f-82a1, U+82a3-82a4, U+82a7-82ac, U+82ae, U+82b0, U+82b2, U+82b4, U+82b7, U+82ba-82bc,
    U+82be-82bf, U+82c5-82c6, U+82d0, U+82d2-82d3, U+82d5, U+82d9-82da, U+82dc, U+82de-82e4, U+82e7;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.22.woff2) format('woff2');
  unicode-range:
    U+7f77-7f79, U+7f7d-7f80, U+7f82-7f83, U+7f86-7f88, U+7f8b-7f8d, U+7f8f-7f91, U+7f94, U+7f96-7f97, U+7f9a,
    U+7f9c-7f9d, U+7fa1-7fa3, U+7fa6, U+7faa, U+7fad-7faf, U+7fb2, U+7fb4, U+7fb6, U+7fb8-7fb9, U+7fbc, U+7fbf-7fc0,
    U+7fc3, U+7fc5-7fc6, U+7fc8, U+7fca, U+7fce-7fcf, U+7fd5, U+7fdb, U+7fdf, U+7fe1, U+7fe3, U+7fe5-7fe6, U+7fe8-7fe9,
    U+7feb-7fec, U+7fee-7ff0, U+7ff2-7ff3, U+7ff9-7ffa, U+7ffd-7fff, U+8002, U+8004, U+8006-8008, U+800a-800f,
    U+8011-8014, U+8016, U+8018-8019, U+801c-8021, U+8024, U+8026, U+8028, U+802c, U+802e, U+8030, U+8034-8035, U+8037,
    U+8039-8040, U+8043-8044, U+8046, U+804a, U+8052, U+8058, U+805a, U+805f-8060, U+8062, U+8064, U+8066, U+8068,
    U+806d, U+806f-8073, U+8075-8076, U+8079, U+807b, U+807d-8081, U+8084-8088, U+808b, U+808e, U+8093, U+8099-809a,
    U+809c, U+809e, U+80a4, U+80a6-80a7, U+80ab-80ad, U+80b1, U+80b8-80b9, U+80c4-80c5, U+80c8, U+80ca, U+80cd, U+80cf,
    U+80d2, U+80d4-80db, U+80dd, U+80e0, U+80e4-80e6, U+80ed-80f3, U+80f5-80f7, U+80f9-80fc, U+80fe, U+8101, U+8103,
    U+8109, U+810b, U+810d, U+8116-8118, U+811b-811c, U+811e, U+8120, U+8123-8124, U+8127, U+8129, U+812b-812c,
    U+812f-8130, U+8135, U+8139-813a, U+813c-813e, U+8141, U+8145-8147;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.23.woff2) format('woff2');
  unicode-range:
    U+7d57, U+7d59-7d5d, U+7d63, U+7d65, U+7d67, U+7d6a, U+7d6e, U+7d70, U+7d72-7d73, U+7d78, U+7d7a-7d7b, U+7d7d,
    U+7d7f, U+7d81-7d83, U+7d85-7d86, U+7d88-7d89, U+7d8b-7d8d, U+7d8f, U+7d91, U+7d93, U+7d96-7d97, U+7d9b-7da0,
    U+7da2-7da3, U+7da6-7da7, U+7daa-7dac, U+7dae-7db0, U+7db3, U+7db5-7db9, U+7dbd, U+7dc0, U+7dc2-7dc7, U+7dcc-7dce,
    U+7dd0, U+7dd5-7dd9, U+7ddc-7dde, U+7de1-7de6, U+7dea-7ded, U+7df1-7df2, U+7df5-7df6, U+7df9-7dfa, U+7e00, U+7e05,
    U+7e08-7e0b, U+7e10-7e12, U+7e15, U+7e17, U+7e1c-7e1d, U+7e1f-7e23, U+7e27-7e28, U+7e2c-7e2d, U+7e2f, U+7e31-7e33,
    U+7e35-7e37, U+7e39-7e3b, U+7e3d, U+7e3f, U+7e43-7e48, U+7e4e, U+7e50, U+7e52, U+7e56, U+7e58-7e5a, U+7e5d-7e5f,
    U+7e61-7e62, U+7e65-7e67, U+7e69-7e6b, U+7e6d-7e6f, U+7e73, U+7e75, U+7e78-7e79, U+7e7b-7e7f, U+7e81-7e83,
    U+7e86-7e8a, U+7e8c-7e8e, U+7e90-7e96, U+7e98, U+7e9a-7e9f, U+7f38, U+7f3a-7f3f, U+7f43-7f45, U+7f47, U+7f4c-7f50,
    U+7f52-7f55, U+7f58, U+7f5b-7f5d, U+7f5f, U+7f61, U+7f63-7f69, U+7f6b, U+7f6d, U+7f71;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.24.woff2) format('woff2');
  unicode-range:
    U+7bc8, U+7bca-7bcc, U+7bcf, U+7bd4, U+7bd6-7bd7, U+7bd9-7bdb, U+7bdd, U+7be5-7be6, U+7be8-7bea, U+7bf0,
    U+7bf2-7bfa, U+7bfc, U+7bfe, U+7c00-7c04, U+7c06-7c07, U+7c09, U+7c0b-7c0f, U+7c11-7c14, U+7c17, U+7c19, U+7c1b,
    U+7c1e-7c20, U+7c23, U+7c25-7c28, U+7c2a-7c2c, U+7c2f, U+7c31, U+7c33-7c34, U+7c36-7c3a, U+7c3d-7c3e, U+7c40,
    U+7c42-7c43, U+7c45-7c46, U+7c4a, U+7c4c, U+7c4f-7c5f, U+7c61, U+7c63-7c65, U+7c67, U+7c69, U+7c6c-7c70, U+7c72,
    U+7c75, U+7c79, U+7c7b-7c7e, U+7c81-7c83, U+7c86-7c87, U+7c8d, U+7c8f-7c90, U+7c94, U+7c9e, U+7ca0-7ca2,
    U+7ca4-7ca6, U+7ca8, U+7cab, U+7cad-7cae, U+7cb0-7cb3, U+7cb6-7cb7, U+7cb9-7cbd, U+7cbf-7cc0, U+7cc2, U+7cc4-7cc5,
    U+7cc7-7cca, U+7ccd-7ccf, U+7cd2-7cd5, U+7cd7-7cda, U+7cdc-7cdd, U+7cdf-7ce0, U+7ce2, U+7ce6, U+7ce9, U+7ceb,
    U+7cef, U+7cf2, U+7cf4-7cf6, U+7cf9-7cfa, U+7cfe, U+7d02-7d03, U+7d06-7d0a, U+7d0f, U+7d11-7d13, U+7d15-7d16,
    U+7d1c-7d1e, U+7d23, U+7d26, U+7d2a, U+7d2c-7d2e, U+7d31-7d32, U+7d35, U+7d3c-7d41, U+7d43, U+7d45, U+7d47-7d48,
    U+7d4b, U+7d4d-7d4f, U+7d51, U+7d53, U+7d55-7d56;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.25.woff2) format('woff2');
  unicode-range:
    U+7a17-7a19, U+7a1b, U+7a1e-7a21, U+7a27, U+7a2b, U+7a2d, U+7a2f-7a31, U+7a34-7a35, U+7a37-7a3b, U+7a3e,
    U+7a43-7a49, U+7a4c, U+7a4e, U+7a50, U+7a55-7a57, U+7a59, U+7a5c-7a5d, U+7a5f-7a63, U+7a65, U+7a67, U+7a69-7a6a,
    U+7a6d, U+7a70, U+7a75, U+7a78-7a79, U+7a7d-7a7e, U+7a80, U+7a82, U+7a84-7a86, U+7a88, U+7a8a-7a8b, U+7a90-7a91,
    U+7a94-7a98, U+7a9e, U+7aa0, U+7aa3, U+7aa9, U+7aac, U+7ab0, U+7ab3, U+7ab5-7ab6, U+7ab9-7abf, U+7ac3, U+7ac5-7aca,
    U+7acc-7acf, U+7ad1-7ad3, U+7ad5, U+7ada-7adb, U+7add, U+7adf, U+7ae1-7ae2, U+7ae6-7aed, U+7af0-7af1, U+7af4,
    U+7af8, U+7afa-7afb, U+7afd-7afe, U+7b02, U+7b04, U+7b06-7b08, U+7b0a-7b0b, U+7b0f, U+7b12, U+7b14, U+7b18-7b19,
    U+7b1e-7b1f, U+7b23, U+7b25, U+7b27-7b2b, U+7b2d-7b31, U+7b33-7b36, U+7b3b, U+7b3d, U+7b3f-7b41, U+7b45, U+7b47,
    U+7b4c-7b50, U+7b53, U+7b55, U+7b5d, U+7b60, U+7b64-7b66, U+7b69-7b6a, U+7b6c-7b75, U+7b77, U+7b79-7b7a, U+7b7f,
    U+7b84, U+7b86, U+7b89, U+7b8d-7b92, U+7b96, U+7b98-7ba0, U+7ba5, U+7bac-7bad, U+7baf-7bb0, U+7bb2, U+7bb4-7bb6,
    U+7bba-7bbd, U+7bc1-7bc2, U+7bc5-7bc6;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.26.woff2) format('woff2');
  unicode-range:
    U+7851-7852, U+785c, U+785e, U+7860-7861, U+7863-7864, U+7868, U+786a, U+786e-786f, U+7872, U+7874, U+787a, U+787c,
    U+787e, U+7886-7887, U+788a, U+788c-788f, U+7893-7895, U+7898, U+789a, U+789d-789f, U+78a1, U+78a3-78a4,
    U+78a8-78aa, U+78ac-78ad, U+78af-78b3, U+78b5, U+78bb-78bf, U+78c5-78cc, U+78ce, U+78d1-78d6, U+78da-78db,
    U+78df-78e1, U+78e4, U+78e6-78e7, U+78ea, U+78ec, U+78f2-78f4, U+78f6-78f7, U+78f9-78fb, U+78fd-7901, U+7906-7907,
    U+790c, U+7910-7912, U+7919-791c, U+791e-7920, U+7925-792e, U+7930-7931, U+7934-7935, U+793b, U+793d, U+793f,
    U+7941-7942, U+7944-7946, U+794a-794b, U+794f, U+7951, U+7954-7955, U+7957-7958, U+795a-795c, U+795f-7960, U+7962,
    U+7967, U+7969, U+796b, U+7972, U+7977, U+7979-797c, U+797e-7980, U+798a-798e, U+7991, U+7993-7996, U+7998,
    U+799b-799d, U+79a1, U+79a6-79ab, U+79ae-79b1, U+79b3-79b4, U+79b8-79bb, U+79bd-79be, U+79c2, U+79c4, U+79c7-79ca,
    U+79cc-79cd, U+79cf, U+79d4-79d6, U+79da, U+79dd-79e3, U+79e5, U+79e7, U+79ea-79ed, U+79f1, U+79f8, U+79fc,
    U+7a02-7a03, U+7a05, U+7a07-7a0a, U+7a0c-7a0d, U+7a11, U+7a15;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.27.woff2) format('woff2');
  unicode-range:
    U+768c-768e, U+7690, U+7693, U+7695-7696, U+7699-76a8, U+76aa, U+76ad, U+76af-76b0, U+76b4, U+76b6-76ba, U+76bd,
    U+76c1-76c3, U+76c5, U+76c8-76c9, U+76cb-76ce, U+76d2, U+76d4, U+76d6, U+76d9, U+76dc, U+76de, U+76e0-76e1,
    U+76e5-76e8, U+76ea-76ec, U+76f0-76f1, U+76f6, U+76f9, U+76fb-76fc, U+7700, U+7704, U+7706-7708, U+770a, U+770e,
    U+7712, U+7714-7715, U+7717, U+7719-771c, U+7722, U+7724-7726, U+7728, U+772d-772f, U+7734-7739, U+773d-773e,
    U+7742, U+7745-7747, U+774a, U+774d-774f, U+7752, U+7756-7758, U+775a-775c, U+775e-7760, U+7762, U+7764-7765,
    U+7767, U+776a-776c, U+7770, U+7772-7774, U+7779-777a, U+777c-7780, U+7784, U+778b-778e, U+7794-7796, U+779a,
    U+779e-77a0, U+77a2, U+77a4-77a5, U+77a7, U+77a9-77aa, U+77ae-77b1, U+77b5-77b7, U+77b9, U+77bb-77bf, U+77c3,
    U+77c7, U+77c9, U+77cd, U+77d1-77d2, U+77d5, U+77d7, U+77d9-77da, U+77dc, U+77de-77e0, U+77e3-77e4, U+77e6-77e7,
    U+77e9-77ea, U+77ec, U+77ee, U+77f0-77f1, U+77f4, U+77f8, U+77fb-77fc, U+7805-7806, U+7809, U+780c-780e,
    U+7811-7812, U+7819, U+781d, U+7820-7823, U+7826-7827, U+782c-782e, U+7830, U+7835, U+7837, U+783a, U+783f,
    U+7843-7845, U+7847-7848, U+784c, U+784e-784f;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.28.woff2) format('woff2');
  unicode-range:
    U+7511-7513, U+7515-7517, U+751c, U+751e, U+7520-7522, U+7524, U+7526-7527, U+7529-752c, U+752f, U+7536,
    U+7538-7539, U+753c-7540, U+7543-7544, U+7546-754b, U+754d-7550, U+7552, U+7557, U+755a-755b, U+755d-755f,
    U+7561-7562, U+7564, U+7566-7567, U+7569, U+756b-756d, U+756f, U+7571-7572, U+7574-757e, U+7581-7582, U+7585-7587,
    U+7589-758c, U+758f-7590, U+7592-7595, U+7599-759a, U+759c-759d, U+75a2-75a5, U+75b0-75b1, U+75b3-75b5, U+75b7-75b8,
    U+75ba, U+75bd, U+75bf-75c4, U+75c6, U+75ca, U+75cc-75cf, U+75d3-75d4, U+75d7-75d8, U+75dc-75e1, U+75e3-75e4,
    U+75e7, U+75ec, U+75ee-75f3, U+75f9, U+75fc, U+75fe-7604, U+7607-760c, U+760f, U+7612-7613, U+7615-7616,
    U+7618-7619, U+761b-7629, U+762d, U+7630, U+7632-7635, U+7638-763c, U+7640-7641, U+7643-764b, U+764e, U+7655,
    U+7658-7659, U+765c, U+765f, U+7661-7662, U+7664-7665, U+7667-766a, U+766c-7672, U+7674, U+7676, U+7678,
    U+7680-7683, U+7685, U+7688, U+768b;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.29.woff2) format('woff2');
  unicode-range:
    U+736c, U+736e-7371, U+7375, U+7377-737c, U+7380-7381, U+7383, U+7385-7386, U+738a, U+738e, U+7390, U+7393-7398,
    U+739c, U+739e-73a0, U+73a2, U+73a5-73a6, U+73a8, U+73aa-73ab, U+73ad, U+73b3, U+73b5, U+73b7, U+73b9-73bd, U+73bf,
    U+73c5-73c6, U+73c9-73cc, U+73ce-73cf, U+73d2-73d3, U+73d6, U+73d9, U+73dd-73de, U+73e1, U+73e3-73e7, U+73e9-73ea,
    U+73ee, U+73f1, U+73f4-73f5, U+73f7-73fb, U+73fd, U+73ff-7401, U+7404-7405, U+7407, U+740a, U+7411, U+7413,
    U+741a-741b, U+7421, U+7424, U+7426, U+7428-7431, U+7433, U+7439-743a, U+743f-7441, U+7443-7444, U+7446-7447,
    U+744b, U+744d, U+7451-7453, U+7455, U+7457, U+7459-745a, U+745c-745d, U+745f, U+7462-7464, U+7466-746b,
    U+746d-7473, U+7476, U+747e, U+7480-7481, U+7485-7489, U+748b, U+748f-7492, U+7497-749a, U+749c, U+749e-74a3,
    U+74a5-74a6, U+74a8-74ab, U+74ae-74af, U+74b1-74b2, U+74b5, U+74b9-74bb, U+74bd, U+74bf, U+74c8-74ca, U+74cc,
    U+74cf-74d0, U+74d3-74d4, U+74d6, U+74d8, U+74da-74db, U+74de-74e0, U+74e3-74e4, U+74e7-74eb, U+74ee-74f2, U+74f4,
    U+74f7-74f8, U+74fa-74fc, U+74ff, U+7501, U+7503-7506, U+750c-750e;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.30.woff2) format('woff2');
  unicode-range:
    U+7166, U+7168, U+716c, U+7179, U+7180, U+7184-7185, U+7187-7188, U+718c, U+718f, U+7192, U+7194-7196, U+7199-719b,
    U+71a0, U+71a2, U+71a8, U+71ac, U+71ae-71b0, U+71b2-71b3, U+71b9-71ba, U+71be-71c1, U+71c4, U+71c9, U+71cb-71cc,
    U+71ce, U+71d0, U+71d2-71d4, U+71d6-71d7, U+71d9-71da, U+71dc, U+71df-71e0, U+71e6-71e7, U+71ec-71ee, U+71f4-71f5,
    U+71f8-71f9, U+71fc, U+71fe-7200, U+7207-7209, U+720d, U+7210, U+7213, U+7215, U+7217, U+721a, U+721d, U+721f,
    U+7224, U+7228, U+722b, U+722d, U+722f-7230, U+7232, U+7234, U+7238-7239, U+723b-723c, U+723e-7243, U+7245-7246,
    U+724b, U+724e-7250, U+7252-7253, U+7255-7258, U+725a, U+725c, U+725e, U+7260, U+7263, U+7268, U+726b, U+726e-726f,
    U+7271, U+7274, U+7277-7278, U+727b-727c, U+727e-7282, U+7284, U+7287, U+7289, U+728d-728e, U+7292-7293, U+7296,
    U+729b, U+72a2, U+72a7-72a8, U+72ad-72ae, U+72b0-72b2, U+72b4, U+72b9, U+72be, U+72c0-72c1, U+72c3-72c4,
    U+72c6-72c7, U+72c9, U+72cc, U+72ce, U+72d2, U+72d5-72d6, U+72d8, U+72df-72e2, U+72e5, U+72f3-72f4, U+72f7,
    U+72f9-72fb, U+72fd-72fe, U+7302, U+7304-7305, U+7307, U+730a-730b, U+730d, U+7312-7313, U+7316-7319, U+731c-731e,
    U+7322, U+7324, U+7327-7329, U+732c, U+732f, U+7331-7337, U+7339-733b, U+733d-733e, U+7343, U+734d-7350, U+7352,
    U+7356-7358, U+735d-7360, U+7366-736b;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.31.woff2) format('woff2');
  unicode-range:
    U+6f58-6f5b, U+6f5d-6f5e, U+6f60-6f62, U+6f66, U+6f68, U+6f6c-6f6d, U+6f6f, U+6f74, U+6f78, U+6f7a, U+6f7c-6f7e,
    U+6f80, U+6f82-6f83, U+6f86-6f88, U+6f8b-6f8e, U+6f90-6f94, U+6f96-6f98, U+6f9a, U+6f9d, U+6f9f-6fa1, U+6fa3,
    U+6fa5-6fa8, U+6fae-6fb1, U+6fb3, U+6fb5-6fb7, U+6fb9, U+6fbc, U+6fbe, U+6fc2, U+6fc5-6fca, U+6fd4-6fd5, U+6fd8,
    U+6fda-6fdb, U+6fde-6fe0, U+6fe4, U+6fe8-6fe9, U+6feb-6fec, U+6fee, U+6ff0, U+6ff3, U+6ff5-6ff6, U+6ff9-6ffa,
    U+6ffc-6ffe, U+7000-7001, U+7005-7007, U+7009-700b, U+700d, U+700f, U+7011, U+7015, U+7017-7018, U+701a-701b,
    U+701d-7020, U+7023, U+7026, U+7028, U+702f-7030, U+7032, U+7034, U+7037, U+7039-703a, U+703c, U+703e, U+7043-7044,
    U+7047-704c, U+704e, U+7051, U+7054-7055, U+705d-705e, U+7064-7065, U+7069, U+706c, U+706e, U+7075-7076, U+707e,
    U+7081, U+7085-7086, U+7094-7098, U+709b, U+709f, U+70a4, U+70ab-70ac, U+70ae-70b1, U+70b3-70b4, U+70b7, U+70bb,
    U+70ca-70cb, U+70d1, U+70d3-70d6, U+70d8-70d9, U+70dc-70dd, U+70df, U+70e4, U+70ec, U+70f1, U+70fa, U+70fd,
    U+7103-7108, U+710b-710c, U+710f, U+7114, U+7119, U+711c, U+711e, U+7120, U+712b, U+712d-7131, U+7138, U+7141,
    U+7145-7147, U+7149-714b, U+7150-7153, U+7155-7157, U+715a, U+715c, U+715e, U+7160, U+7162, U+7164-7165;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.32.woff2) format('woff2');
  unicode-range:
    U+6d7c, U+6d80-6d82, U+6d85, U+6d87, U+6d89-6d8a, U+6d8c-6d8e, U+6d91-6d98, U+6d9c, U+6daa-6dac, U+6dae,
    U+6db4-6db5, U+6db7-6db9, U+6dbd, U+6dbf, U+6dc2, U+6dc4-6dc8, U+6dca, U+6dcc, U+6dce-6dd0, U+6dd2, U+6dd5-6dd6,
    U+6dd8-6ddb, U+6ddd-6de0, U+6de2, U+6de4-6de6, U+6de8-6dea, U+6dec, U+6dee-6df0, U+6df2, U+6df4, U+6df6,
    U+6df8-6dfa, U+6dfc, U+6e00, U+6e04, U+6e0a, U+6e17, U+6e19, U+6e1d-6e20, U+6e22-6e25, U+6e27, U+6e2b, U+6e2d-6e2e,
    U+6e32, U+6e34, U+6e36, U+6e38-6e3c, U+6e42-6e45, U+6e48-6e49, U+6e4b-6e4f, U+6e51-6e54, U+6e57, U+6e5b-6e5f,
    U+6e62-6e63, U+6e68, U+6e6b, U+6e6e, U+6e72-6e73, U+6e76, U+6e7b, U+6e7d, U+6e82, U+6e89, U+6e8c-6e8d, U+6e8f,
    U+6e93, U+6e98-6e99, U+6e9f-6ea0, U+6ea5, U+6ea7, U+6eaa-6eab, U+6ead-6eaf, U+6eb1-6eb4, U+6eb7, U+6ebb-6ebd,
    U+6ebf-6ec4, U+6ec7-6eca, U+6ecc-6ecf, U+6ed3-6ed5, U+6ed9-6edb, U+6ee6, U+6eeb-6eef, U+6ef7-6ef9, U+6efb,
    U+6efd-6eff, U+6f04, U+6f08-6f0a, U+6f0c-6f0d, U+6f10-6f11, U+6f13, U+6f15-6f16, U+6f18, U+6f1a-6f1b, U+6f25-6f26,
    U+6f29-6f2a, U+6f2d, U+6f2f-6f33, U+6f35-6f36, U+6f38, U+6f3b-6f3c, U+6f3e-6f3f, U+6f41, U+6f45, U+6f4f,
    U+6f51-6f53, U+6f57;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.33.woff2) format('woff2');
  unicode-range:
    U+6b85, U+6b89, U+6b8d, U+6b95, U+6b97-6b98, U+6b9b, U+6b9e-6ba0, U+6ba2-6ba4, U+6ba8-6bb3, U+6bb7-6bb9,
    U+6bbc-6bbe, U+6bc0, U+6bc3-6bc4, U+6bc6-6bc9, U+6bcb-6bcc, U+6bcf, U+6bd3, U+6bd6-6bd8, U+6bda, U+6bdf, U+6be1,
    U+6be3, U+6be6-6be7, U+6beb-6bec, U+6bee, U+6bf1, U+6bf3, U+6bf7, U+6bf9, U+6bff, U+6c02, U+6c04-6c05, U+6c08-6c0a,
    U+6c0d-6c0e, U+6c10, U+6c12-6c14, U+6c19, U+6c1b, U+6c1f, U+6c24, U+6c26-6c28, U+6c2c, U+6c2e, U+6c33, U+6c35-6c36,
    U+6c3a-6c3b, U+6c3e-6c40, U+6c4a-6c4b, U+6c4d, U+6c4f, U+6c52, U+6c54-6c55, U+6c59, U+6c5b-6c5e, U+6c62,
    U+6c67-6c68, U+6c6a-6c6b, U+6c6d, U+6c6f, U+6c73-6c74, U+6c76, U+6c78-6c79, U+6c7b, U+6c7e, U+6c81-6c87, U+6c89,
    U+6c8c-6c8d, U+6c90, U+6c92-6c95, U+6c97-6c98, U+6c9a-6c9c, U+6c9f, U+6caa-6cae, U+6cb0-6cb2, U+6cb4, U+6cba,
    U+6cbd-6cbe, U+6cc2, U+6cc5-6cc6, U+6ccd, U+6ccf-6cd4, U+6cd6-6cd7, U+6cd9-6cdd, U+6ce0, U+6ce7, U+6ce9-6cef,
    U+6cf1-6cf2, U+6cf4, U+6cfb, U+6d00-6d01, U+6d04, U+6d07, U+6d0a, U+6d0c, U+6d0e-6d0f, U+6d11, U+6d13, U+6d19-6d1a,
    U+6d1f, U+6d24, U+6d26-6d28, U+6d2b, U+6d2e-6d2f, U+6d31, U+6d33-6d36, U+6d38-6d39, U+6d3c-6d3d, U+6d3f,
    U+6d57-6d5b, U+6d5e-6d61, U+6d64-6d65, U+6d67, U+6d6c, U+6d6f-6d70, U+6d79;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.34.woff2) format('woff2');
  unicode-range:
    U+69dd-69de, U+69e2-69e3, U+69e5, U+69e7-69eb, U+69ed-69ef, U+69f1-69f6, U+69f9, U+69fe-6a01, U+6a03, U+6a05,
    U+6a0a, U+6a0c, U+6a0f, U+6a11-6a15, U+6a17, U+6a1a-6a1b, U+6a1d-6a20, U+6a22-6a24, U+6a28, U+6a2e, U+6a30,
    U+6a32-6a38, U+6a3b, U+6a3e-6a3f, U+6a44-6a4a, U+6a4e, U+6a50-6a52, U+6a54-6a56, U+6a5b, U+6a61-6a62, U+6a64,
    U+6a66-6a67, U+6a6a-6a6b, U+6a71-6a73, U+6a78, U+6a7a, U+6a7e-6a7f, U+6a81, U+6a83-6a84, U+6a86-6a87, U+6a89,
    U+6a8b, U+6a8d, U+6a90-6a91, U+6a94, U+6a97, U+6a9b, U+6a9d-6aa3, U+6aa5, U+6aaa-6aac, U+6aae-6ab1, U+6ab3-6ab4,
    U+6ab8, U+6abb, U+6abd-6abf, U+6ac1-6ac3, U+6ac6, U+6ac8-6ac9, U+6acc, U+6ad0-6ad1, U+6ad3-6ad6, U+6ada-6adf,
    U+6ae2, U+6ae4, U+6ae7-6ae8, U+6aea, U+6aec, U+6af0-6af3, U+6af8, U+6afa, U+6afc-6afd, U+6b02-6b03, U+6b06-6b07,
    U+6b09-6b0b, U+6b0f-6b12, U+6b16-6b17, U+6b1b, U+6b1d-6b1f, U+6b23-6b24, U+6b28, U+6b2b-6b2c, U+6b2f, U+6b35-6b39,
    U+6b3b, U+6b3d, U+6b3f, U+6b43, U+6b46-6b47, U+6b49-6b4a, U+6b4d-6b4e, U+6b50, U+6b52, U+6b54, U+6b56, U+6b58-6b59,
    U+6b5b, U+6b5d, U+6b5f-6b61, U+6b65, U+6b67, U+6b6b-6b6c, U+6b6e, U+6b70, U+6b72, U+6b75, U+6b77-6b7a, U+6b7d-6b84;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.35.woff2) format('woff2');
  unicode-range:
    U+6855, U+6857-6859, U+685b, U+685d, U+685f, U+6863, U+6867, U+686b, U+686e-6872, U+6874-6875, U+6877, U+6879-687c,
    U+687e-687f, U+6882-6884, U+6886, U+6888, U+688d-6890, U+6894, U+6896, U+6898-689c, U+689f-68a3, U+68a5-68a7,
    U+68a9-68ab, U+68ad-68af, U+68b2-68b5, U+68b9-68bc, U+68c3, U+68c5-68c6, U+68c8-68ca, U+68cc-68cd, U+68cf-68d1,
    U+68d3-68d9, U+68dc-68dd, U+68e0-68e1, U+68e3-68e5, U+68e7-68e8, U+68ea-68ed, U+68ef-68f1, U+68f5-68f7, U+68f9,
    U+68fb-68fd, U+6900-6901, U+6903-6904, U+6906-690c, U+690f-6911, U+6913, U+6916-6917, U+6919-691b, U+6921-6923,
    U+6925-6926, U+6928, U+692a, U+6930-6931, U+6933-6936, U+6938-6939, U+693b, U+693d, U+6942, U+6945-6946, U+6949,
    U+694e, U+6954, U+6957, U+6959, U+695b-695e, U+6961-6966, U+6968-696c, U+696e-6974, U+6977-697b, U+697e-6981,
    U+6986, U+698d, U+6991-6992, U+6994-6996, U+6998, U+699c, U+69a0-69a1, U+69a5-69a8, U+69ab, U+69ad, U+69af-69b2,
    U+69b4, U+69b7-69b8, U+69ba-69bc, U+69be-69c1, U+69c3, U+69c5, U+69c7-69c8, U+69ca, U+69ce-69d1, U+69d3,
    U+69d6-69d7, U+69d9;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.36.woff2) format('woff2');
  unicode-range:
    U+667e-6680, U+6683-6684, U+6688, U+668b-668e, U+6690, U+6692, U+6698-669d, U+669f-66a0, U+66a2, U+66a4, U+66ad,
    U+66b1-66b3, U+66b5, U+66b8-66b9, U+66bb-66bc, U+66be-66c4, U+66c6, U+66c8-66c9, U+66cc, U+66ce-66cf, U+66d4,
    U+66da-66db, U+66dd, U+66df-66e0, U+66e6, U+66e8-66e9, U+66eb-66ec, U+66ee, U+66f5, U+66f7, U+66fa-66fc, U+6701,
    U+6705, U+6707, U+670c, U+670e-6710, U+6712-6716, U+6719, U+671c, U+671e, U+6720, U+6722, U+6725-6726, U+672e,
    U+6733, U+6735-6738, U+673e-673f, U+6741, U+6743, U+6745-6748, U+674c-674d, U+6753-6755, U+6759, U+675d-675e,
    U+6760, U+6762-6764, U+6766, U+676a, U+676c, U+676e, U+6770, U+6772-6774, U+6776-6777, U+677b-677c, U+6780-6781,
    U+6784-6785, U+6787, U+6789, U+678b-678c, U+678e-678f, U+6791-6793, U+6796, U+6798-6799, U+679b, U+67a1, U+67a4,
    U+67a6, U+67a9, U+67b0-67b5, U+67b7-67b9, U+67bb-67be, U+67c0-67c3, U+67c5-67c6, U+67c8-67c9, U+67ce, U+67d2,
    U+67d7-67d9, U+67db-67de, U+67e1-67e2, U+67e4, U+67e6-67e7, U+67e9, U+67ec, U+67ee-67f0, U+67f2, U+67f6-67f7,
    U+67f9-67fa, U+67fc, U+67fe, U+6801-6802, U+6805, U+6810, U+6814, U+6818-6819, U+681d, U+681f, U+6822, U+6827-6829,
    U+682b-682d, U+682f-6834, U+683b, U+683e-6840, U+6844-6846, U+6849-684a, U+684c-684e, U+6852-6854;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.37.woff2) format('woff2');
  unicode-range:
    U+64d2, U+64d4-64d5, U+64d7-64d8, U+64da, U+64e0-64e1, U+64e3-64e5, U+64e7, U+64e9-64ea, U+64ed, U+64ef-64f2,
    U+64f4-64f7, U+64fa-64fb, U+64fd-6501, U+6504-6505, U+6508-650a, U+650f, U+6513-6514, U+6516, U+6518-6519,
    U+651b-651f, U+6522, U+6524, U+6526, U+6529-652c, U+652e, U+6531-6532, U+6534-6538, U+653a, U+653c-653d,
    U+6543-6544, U+6547-6549, U+654d-654e, U+6550, U+6552, U+6554-6556, U+6558, U+655d-6560, U+6567, U+656b, U+6572,
    U+6578, U+657a, U+657d, U+6581-6585, U+6588, U+658a, U+658c, U+6592, U+6595, U+6598, U+659b, U+659d, U+659f-65a1,
    U+65a3-65a6, U+65ab, U+65ae, U+65b2-65b5, U+65b7-65b8, U+65be-65bf, U+65c1-65c4, U+65c6, U+65c8-65c9, U+65cc,
    U+65ce, U+65d0, U+65d2, U+65d4, U+65d6, U+65d8-65d9, U+65db, U+65df-65e1, U+65e3, U+65f0-65f2, U+65f4-65f5, U+65f9,
    U+65fb-65fc, U+65fe-6600, U+6603-6604, U+6608-660a, U+660d, U+6611-6612, U+6615-6616, U+661c-661e, U+6621-6624,
    U+6626, U+6629-662c, U+662e, U+6630-6631, U+6633-6637, U+6639-663b, U+663f-6641, U+6644-6646, U+6648-664a, U+664c,
    U+664e-664f, U+6651, U+6657-6665, U+6667-6668, U+666a-666d, U+6670, U+6673, U+6675, U+6677-6679, U+667b-667c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.38.woff2) format('woff2');
  unicode-range:
    U+62cf, U+62d1, U+62d4-62d6, U+62da, U+62dc, U+62ea, U+62ee-62ef, U+62f1-62f2, U+62f4-62f5, U+62fc-62fd, U+62ff,
    U+6302-6304, U+6308-630d, U+6310, U+6313, U+6316, U+6318, U+631b, U+6327, U+6329-632a, U+632d, U+6332, U+6335-6336,
    U+6339-633c, U+633e, U+6341-6344, U+6346, U+634a-634e, U+6350, U+6352-6354, U+6358-6359, U+635b, U+6365-6366,
    U+6369, U+636b-636d, U+6371-6372, U+6374-6378, U+637a, U+637c-637d, U+637f-6380, U+6382, U+6384, U+6387,
    U+6389-638a, U+638e-6390, U+6394-6396, U+6399-639a, U+639e, U+63a0, U+63a3-63a4, U+63a6, U+63a9, U+63ab-63af,
    U+63b5, U+63bd-63be, U+63c0-63c1, U+63c4-63c6, U+63c8, U+63ce, U+63d1-63d6, U+63dc, U+63e0, U+63e3, U+63e5,
    U+63e9-63ed, U+63f2-63f3, U+63f5-63f9, U+6406, U+6409-640a, U+640f-6410, U+6412-6414, U+6416-6418, U+641e, U+6420,
    U+6422, U+6424-6426, U+6428-642a, U+642f-6430, U+6434-6436, U+643d, U+643f, U+644b, U+644e-644f, U+6451-6454,
    U+645a-645d, U+645f-6461, U+6463, U+6467, U+646d, U+6473-6474, U+6476, U+6478-6479, U+647b, U+647d, U+6485,
    U+6487-6488, U+648f-6491, U+6493, U+6495, U+6498-649b, U+649d-649f, U+64a1, U+64a3, U+64a6, U+64a8-64a9, U+64ac,
    U+64b3, U+64bb-64bf, U+64c2, U+64c4-64c5, U+64c7, U+64c9-64cc, U+64ce, U+64d0-64d1;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.39.woff2) format('woff2');
  unicode-range:
    U+6117, U+6119, U+611c, U+611e, U+6120-6122, U+6127-6128, U+612a-612c, U+6130-6131, U+6134-6137, U+6139-613a,
    U+613c-613f, U+6141-6142, U+6144-6147, U+6149-614a, U+614d, U+6153, U+6158-615a, U+615d-6160, U+6164-6165,
    U+616b-616c, U+616f, U+6171-6175, U+6177-6178, U+617b-6181, U+6183-6184, U+6187, U+618a-618b, U+618d, U+6192-6194,
    U+6196-619a, U+619c-619d, U+619f-61a0, U+61a5, U+61a8, U+61aa-61ae, U+61b8-61ba, U+61bc, U+61be, U+61c0-61c3,
    U+61c6, U+61c8, U+61ca-61cf, U+61d5, U+61dc-61df, U+61e1-61e3, U+61e5-61e9, U+61ec-61ed, U+61ef, U+61f4-61f7,
    U+61fa, U+61fc-6201, U+6203-6204, U+6207-620a, U+620d-620e, U+6213-6215, U+621b-621e, U+6220-6223, U+6227,
    U+6229-622b, U+622e, U+6230-6233, U+6236, U+6239, U+623d-623e, U+6241-6244, U+6246, U+6248, U+624c, U+624e,
    U+6250-6252, U+6254, U+6256, U+6258, U+625a-625c, U+625e, U+6260-6261, U+6263-6264, U+6268, U+626d, U+626f, U+6273,
    U+627a-627e, U+6282-6283, U+6285, U+6289, U+628d-6290, U+6292-6294, U+6296, U+6299, U+629b, U+62a6, U+62a8, U+62ac,
    U+62b3, U+62b6-62b7, U+62ba-62bb, U+62be-62bf, U+62c2, U+62c4, U+62c6-62c8, U+62ca, U+62ce;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.40.woff2) format('woff2');
  unicode-range:
    U+5f6c-5f6d, U+5f6f, U+5f72-5f75, U+5f78, U+5f7a, U+5f7d-5f7f, U+5f82-5f83, U+5f87-5f89, U+5f8d, U+5f8f, U+5f91,
    U+5f96, U+5f99, U+5f9c-5f9d, U+5fa0, U+5fa2, U+5fa4, U+5fa7-5fa8, U+5fab-5fad, U+5faf-5fb1, U+5fb5, U+5fb7-5fb8,
    U+5fbc-5fbd, U+5fc4, U+5fc7-5fc9, U+5fcb, U+5fd0-5fd4, U+5fdd-5fde, U+5fe1-5fe2, U+5fe4, U+5fe8-5fea, U+5fec-5ff3,
    U+5ff6, U+5ff8, U+5ffa-5ffd, U+5fff, U+6007, U+600a, U+600d-6010, U+6013-6015, U+6017-601b, U+601f, U+6021-6022,
    U+6024, U+6026, U+6029, U+602b, U+602d, U+6031, U+6033, U+6035, U+603a, U+6040-6043, U+6046-604a, U+604c-604d,
    U+6051, U+6054-6057, U+6059-605a, U+605d, U+605f-6064, U+6067, U+606a-606c, U+6070-6071, U+6077, U+607e-607f,
    U+6081-6086, U+6088-608e, U+6091-6093, U+6095-6098, U+609a-609b, U+609d-609e, U+60a2, U+60a4-60a5, U+60a7-60a8,
    U+60b0-60b1, U+60b3-60b5, U+60b7-60b8, U+60bb, U+60bd-60be, U+60c2, U+60c4, U+60c6-60cb, U+60ce-60cf, U+60d3-60d5,
    U+60d8-60d9, U+60db, U+60dd-60df, U+60e1-60e2, U+60e5, U+60ee, U+60f0-60f2, U+60f4-60f8, U+60fa-60fd, U+6100,
    U+6102-6103, U+6106-6108, U+610a, U+610c-610e, U+6110-6114, U+6116;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.41.woff2) format('woff2');
  unicode-range:
    U+5d9b, U+5d9d, U+5d9f-5da0, U+5da2, U+5da4, U+5da7, U+5dab-5dac, U+5dae, U+5db0, U+5db2, U+5db4, U+5db7-5db9,
    U+5dbc-5dbd, U+5dc3, U+5dc7, U+5dc9, U+5dcb-5dce, U+5dd0-5dd3, U+5dd6-5dd9, U+5ddb, U+5de0, U+5de2, U+5de4, U+5de9,
    U+5df2, U+5df5, U+5df8-5df9, U+5dfd, U+5dff-5e00, U+5e07, U+5e0b, U+5e0d, U+5e11-5e12, U+5e14-5e15, U+5e18-5e1b,
    U+5e1f-5e20, U+5e25, U+5e28, U+5e2e, U+5e32, U+5e35-5e37, U+5e3e, U+5e40, U+5e43-5e44, U+5e47, U+5e49, U+5e4b,
    U+5e4e, U+5e50-5e51, U+5e54, U+5e56-5e58, U+5e5b-5e5c, U+5e5e-5e5f, U+5e62, U+5e64, U+5e68, U+5e6a-5e6e, U+5e70,
    U+5e75-5e77, U+5e7a, U+5e7f-5e80, U+5e87, U+5e8b, U+5e8e, U+5e96, U+5e99-5e9a, U+5ea0, U+5ea2, U+5ea4-5ea5, U+5ea8,
    U+5eaa, U+5eac, U+5eb1, U+5eb3, U+5eb8-5eb9, U+5ebd-5ebf, U+5ec1-5ec2, U+5ec6, U+5ec8, U+5ecb-5ecc, U+5ece-5ed6,
    U+5ed9-5ee2, U+5ee5, U+5ee8-5ee9, U+5eeb-5eec, U+5ef0-5ef1, U+5ef3-5ef4, U+5ef8-5ef9, U+5efc-5f00, U+5f02-5f03,
    U+5f06-5f09, U+5f0b-5f0e, U+5f11, U+5f16-5f17, U+5f19, U+5f1b-5f1e, U+5f21-5f24, U+5f27-5f29, U+5f2b-5f30, U+5f34,
    U+5f36, U+5f38, U+5f3a-5f3d, U+5f3f-5f41, U+5f44-5f45, U+5f47-5f48, U+5f4a, U+5f4c-5f4e, U+5f50-5f51, U+5f54,
    U+5f56-5f58, U+5f5b-5f5d, U+5f60, U+5f63-5f65, U+5f67, U+5f6a;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.42.woff2) format('woff2');
  unicode-range:
    U+5bbc, U+5bc0-5bc1, U+5bc3, U+5bc7, U+5bc9, U+5bcd-5bd0, U+5bd3-5bd4, U+5bd6-5bda, U+5bde, U+5be0-5be2,
    U+5be4-5be6, U+5be8, U+5beb-5bec, U+5bef-5bf1, U+5bf3-5bf6, U+5bfd, U+5c03, U+5c05, U+5c07-5c09, U+5c0c-5c0d,
    U+5c12-5c14, U+5c17, U+5c19, U+5c1e-5c20, U+5c22-5c24, U+5c26, U+5c28-5c2e, U+5c30, U+5c32, U+5c35-5c36,
    U+5c38-5c39, U+5c46, U+5c4d-5c50, U+5c53, U+5c59-5c5c, U+5c5f-5c63, U+5c67-5c69, U+5c6c-5c70, U+5c74-5c76,
    U+5c79-5c7d, U+5c87-5c88, U+5c8a, U+5c8c, U+5c8f, U+5c91-5c92, U+5c94, U+5c9d, U+5c9f-5ca0, U+5ca2-5ca3,
    U+5ca6-5ca8, U+5caa-5cab, U+5cad, U+5cb1-5cb2, U+5cb4-5cb7, U+5cba-5cbc, U+5cbe, U+5cc5, U+5cc7, U+5cc9, U+5ccb,
    U+5cd0, U+5cd2, U+5cd7, U+5cd9, U+5cdd, U+5ce6, U+5ce8-5cea, U+5ced-5cee, U+5cf1-5cf2, U+5cf4-5cf5, U+5cfa-5cfb,
    U+5cfd, U+5d01, U+5d06, U+5d0b, U+5d0d, U+5d10-5d12, U+5d14-5d15, U+5d17-5d1b, U+5d1d, U+5d1f-5d20, U+5d22-5d24,
    U+5d26-5d27, U+5d2b, U+5d31, U+5d34, U+5d39, U+5d3d, U+5d3f, U+5d42-5d43, U+5d46-5d48, U+5d4a-5d4b, U+5d4e,
    U+5d51-5d53, U+5d55, U+5d59, U+5d5c, U+5d5f-5d62, U+5d64, U+5d69-5d6a, U+5d6c-5d6d, U+5d6f-5d70, U+5d73, U+5d76,
    U+5d79-5d7a, U+5d7e-5d7f, U+5d81-5d84, U+5d87-5d88, U+5d8a, U+5d8c, U+5d90, U+5d92-5d95, U+5d97, U+5d99;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.43.woff2) format('woff2');
  unicode-range:
    U+598b-598e, U+5992, U+5995, U+5997, U+599b, U+599d, U+599f, U+59a3-59a4, U+59a7, U+59ad-59b0, U+59b2-59b3, U+59b7,
    U+59ba, U+59bc, U+59be, U+59c1, U+59c3-59c4, U+59c6, U+59c8, U+59ca, U+59cd, U+59d2, U+59d9-59da, U+59dd-59df,
    U+59e3-59e5, U+59e7-59e8, U+59ec, U+59ee-59ef, U+59f1-59f2, U+59f4, U+59f6-59f8, U+5a00, U+5a03-5a04, U+5a09,
    U+5a0c-5a0e, U+5a11-5a13, U+5a17, U+5a1a-5a1c, U+5a1e-5a1f, U+5a23-5a25, U+5a27-5a28, U+5a2a, U+5a2d, U+5a30,
    U+5a35-5a36, U+5a40-5a41, U+5a44-5a45, U+5a47-5a49, U+5a4c, U+5a50, U+5a55, U+5a5e, U+5a62-5a63, U+5a65, U+5a67,
    U+5a6a, U+5a6c-5a6d, U+5a77, U+5a7a-5a7b, U+5a7e, U+5a84, U+5a8b, U+5a90, U+5a93, U+5a96, U+5a99, U+5a9c,
    U+5a9e-5aa0, U+5aa2, U+5aa7, U+5aac, U+5ab1-5ab3, U+5ab5, U+5ab8, U+5aba-5abf, U+5ac2, U+5ac4, U+5ac6, U+5ac8,
    U+5acb, U+5acf-5ad0, U+5ad6-5ad7, U+5ada, U+5adc, U+5ae0-5ae1, U+5ae3, U+5ae5-5ae6, U+5ae9-5aea, U+5aee, U+5af0,
    U+5af5-5af6, U+5afa-5afb, U+5afd, U+5b00-5b01, U+5b08, U+5b0b, U+5b16-5b17, U+5b19, U+5b1b, U+5b1d, U+5b21, U+5b25,
    U+5b2a, U+5b2c-5b2d, U+5b30, U+5b32, U+5b34, U+5b36, U+5b38, U+5b3e, U+5b40-5b41, U+5b43, U+5b45, U+5b4b-5b4c,
    U+5b51-5b52, U+5b56, U+5b5a-5b5c, U+5b5e-5b5f, U+5b65, U+5b68-5b69, U+5b6e-5b71, U+5b73, U+5b75-5b76, U+5b7a,
    U+5b7c-5b84, U+5b86, U+5b8a-5b8b, U+5b8d-5b8e, U+5b90-5b91, U+5b93-5b94, U+5b96, U+5ba5-5ba6, U+5ba8-5ba9,
    U+5bac-5bad, U+5baf, U+5bb1-5bb2, U+5bb7-5bb8, U+5bba;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.44.woff2) format('woff2');
  unicode-range:
    U+57b3, U+57b8, U+57bd, U+57c0, U+57c3, U+57c6-57c8, U+57cc, U+57cf, U+57d2-57d7, U+57dc-57de, U+57e0-57e1,
    U+57e3-57e4, U+57e6-57e7, U+57e9, U+57ed, U+57f0, U+57f4-57f6, U+57f8, U+57fb, U+57fd-57ff, U+5803-5804,
    U+5808-580d, U+5819, U+581b, U+581d-5821, U+5826-5827, U+582d, U+582f-5830, U+5832, U+5835, U+5839, U+583d,
    U+583f-5840, U+5849, U+584b-584d, U+584f-5852, U+5855, U+5858-5859, U+585f, U+5861-5862, U+5864, U+5867-5868,
    U+586d, U+5870, U+5872, U+5878-5879, U+587c, U+587f-5881, U+5885, U+5887-588d, U+588f-5890, U+5894, U+5896, U+5898,
    U+589d-589e, U+58a0-58a2, U+58a6, U+58a9-58ab, U+58ae, U+58b1-58b3, U+58b8-58bc, U+58be, U+58c2-58c5, U+58c8,
    U+58cd-58ce, U+58d0-58da, U+58dc-58e2, U+58e4-58e5, U+58e9, U+58ec, U+58ef, U+58f3-58f4, U+58f7, U+58f9,
    U+58fb-58fd, U+5902, U+5905-5906, U+590a-590d, U+5910, U+5912-5914, U+5918-5919, U+591b, U+591d, U+591f, U+5921,
    U+5923-5925, U+5928, U+592c-592d, U+592f-5930, U+5932-5933, U+5935-5936, U+5938-5939, U+593d-593f, U+5943, U+5946,
    U+594e, U+5950, U+5952-5953, U+5955, U+5957-595b, U+595d-5961, U+5963, U+5967, U+5969, U+596b-596d, U+596f, U+5972,
    U+5975-5976, U+5978-5979, U+597b-597c, U+5981;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.45.woff2) format('woff2');
  unicode-range:
    U+5616-5617, U+5619, U+561b, U+5620, U+5628, U+562c, U+562f-5639, U+563b-563d, U+563f-5641, U+5643-5644,
    U+5646-5647, U+5649, U+564b, U+564d-5650, U+5653-5654, U+565e, U+5660-5664, U+5666, U+5669-566d, U+566f,
    U+5671-5672, U+5675-5676, U+5678, U+567a, U+5680, U+5684-5688, U+568a-568c, U+568f, U+5694-5695, U+5699-569a,
    U+569d-56a0, U+56a5-56a9, U+56ab-56ae, U+56b1-56b4, U+56b6-56b7, U+56bc, U+56be, U+56c0, U+56c2-56c3, U+56c5,
    U+56c8-56d1, U+56d3, U+56d7-56d9, U+56dc-56dd, U+56df, U+56e1, U+56e4-56e8, U+56eb, U+56ed-56ee, U+56f1,
    U+56f6-56f7, U+56f9, U+56ff-5704, U+5707-570a, U+570c-570d, U+5711, U+5713, U+5715-5716, U+5718, U+571a-571d,
    U+5720-5726, U+5729-572a, U+572c, U+572e-572f, U+5733-5734, U+5737-5738, U+573b, U+573d-573f, U+5745-5746,
    U+574c-574f, U+5751-5752, U+5759, U+575f, U+5761-5762, U+5764-5765, U+5767-5769, U+576b, U+576d-5771, U+5773-5775,
    U+5777, U+5779-577c, U+577e-577f, U+5781, U+5783, U+5788-5789, U+578c, U+5793-5795, U+5797, U+5799-579a,
    U+579c-57a1, U+57a4, U+57a7-57aa, U+57ac, U+57ae, U+57b0;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.46.woff2) format('woff2');
  unicode-range:
    U+543f-5440, U+5443-5444, U+5447, U+544c-544f, U+5455, U+545e, U+5462, U+5464, U+5466-5467, U+5469, U+546b-546e,
    U+5470-5471, U+5474-5477, U+547b, U+547f-5481, U+5483-5486, U+5488-548b, U+548d-5492, U+5495-5496, U+549c,
    U+549f-54a2, U+54a4, U+54a6-54af, U+54b1, U+54b7-54bc, U+54be-54bf, U+54c2-54c4, U+54c6-54c8, U+54ca, U+54cd-54ce,
    U+54d8, U+54e0, U+54e2, U+54e5-54e6, U+54e8-54ea, U+54ec-54ef, U+54f1, U+54f3, U+54f6, U+54fc-5501, U+5505,
    U+5508-5509, U+550c-550f, U+5514-5516, U+5527, U+552a-552b, U+552e, U+5532-5533, U+5535-5536, U+5538-5539,
    U+553b-553d, U+5540-5541, U+5544-5545, U+5547, U+5549-554a, U+554c-554d, U+5550-5551, U+5556-5558, U+555a-555e,
    U+5560-5561, U+5563-5564, U+5566, U+557b-5583, U+5586-5588, U+558a, U+558e-558f, U+5591-5594, U+5597, U+5599,
    U+559e-559f, U+55a3-55a4, U+55a8-55a9, U+55ac-55ae, U+55b2, U+55bf, U+55c1, U+55c3-55c4, U+55c6-55c7, U+55c9,
    U+55cb-55cc, U+55ce, U+55d1-55d4, U+55d7-55d8, U+55da-55db, U+55dd-55df, U+55e2, U+55e4, U+55e9, U+55ec, U+55ee,
    U+55f1, U+55f6-55f9, U+55fd-55ff, U+5605, U+5607-5608, U+560a, U+560d-5612;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.47.woff2) format('woff2');
  unicode-range:
    U+528d, U+5291-5298, U+529a, U+529c, U+52a4-52a7, U+52ab-52ad, U+52af-52b0, U+52b5-52b8, U+52ba-52be, U+52c0-52c1,
    U+52c4-52c6, U+52c8, U+52ca, U+52cc-52cd, U+52cf-52d2, U+52d4, U+52d6-52d7, U+52db-52dc, U+52de, U+52e0-52e1,
    U+52e3, U+52e5-52e6, U+52e8-52ea, U+52ec, U+52f0-52f1, U+52f3-52fb, U+5300-5301, U+5303, U+5306-5308, U+530a-530d,
    U+530f-5311, U+5313, U+5315, U+5318-531f, U+5321, U+5323-5325, U+5327-532d, U+532f-5333, U+5335, U+5338,
    U+533c-533e, U+5340, U+5342, U+5345-5346, U+5349, U+534b-534c, U+5359, U+535b, U+535e, U+5361, U+5363-5367, U+5369,
    U+536c-536e, U+5372, U+5377, U+5379-537b, U+537d-537f, U+5382-5383, U+5387-5389, U+538e, U+5393-5394, U+5396,
    U+5398-5399, U+539d, U+53a0-53a1, U+53a4-53a6, U+53a9-53ab, U+53ad-53b0, U+53b2, U+53b4-53b8, U+53ba, U+53bd,
    U+53c0-53c1, U+53c3-53c5, U+53cf, U+53d2-53d3, U+53d5, U+53da-53db, U+53dd-53e0, U+53e2, U+53e6-53e8, U+53ed-53ee,
    U+53f4-53f5, U+53fa, U+5401-5403, U+540b, U+540f, U+5412-5413, U+541a, U+541d-541e, U+5421, U+5424, U+5427-542a,
    U+542c-542f, U+5431, U+5433-5436, U+543c-543d;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.48.woff2) format('woff2');
  unicode-range:
    U+50dd-50df, U+50e1-50e6, U+50e8-50e9, U+50ed-50f6, U+50f9-50fb, U+50fe, U+5101-5103, U+5106-5109, U+510b-510e,
    U+5110, U+5112, U+5114-511e, U+5121, U+5123, U+5127-5128, U+512c-512d, U+512f, U+5131, U+5133-5135, U+5137-513c,
    U+513f-5142, U+5147, U+514a, U+514c, U+514f, U+5152-5155, U+5157-5158, U+515f-5160, U+5162, U+5164, U+5166-5167,
    U+5169-516a, U+516e, U+5173-5174, U+5179, U+517b, U+517e, U+5180, U+5182-5184, U+5189, U+518b-518c, U+518e-5191,
    U+5193, U+5195-5196, U+5198, U+519d, U+51a1-51a4, U+51a6, U+51a9-51ab, U+51ad, U+51b0-51b3, U+51b5, U+51b8, U+51ba,
    U+51bc-51bf, U+51c2-51c3, U+51c5, U+51c8-51cb, U+51cf, U+51d1-51d6, U+51d8, U+51de-51e0, U+51e2, U+51e5, U+51e7,
    U+51e9, U+51ec-51ee, U+51f2-51f5, U+51f7, U+51fe, U+5201-5202, U+5204-5205, U+520b, U+520e, U+5212-5216, U+5218,
    U+5222, U+5226-5228, U+522a-522b, U+522e, U+5231-5233, U+5235, U+523c, U+5244-5245, U+5249, U+524b-524c, U+524f,
    U+5254-5255, U+5257-5258, U+525a, U+525c-5261, U+5266, U+5269, U+526c, U+526e, U+5271, U+5273-5274, U+5277-5279,
    U+527d, U+527f-5280, U+5282-5285, U+5288-528a, U+528c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.49.woff2) format('woff2');
  unicode-range:
    U+4f57-4f58, U+4f5a-4f5b, U+4f5d-4f5f, U+4f63-4f64, U+4f69-4f6a, U+4f6c, U+4f6e-4f71, U+4f76-4f7e, U+4f81-4f85,
    U+4f88-4f8a, U+4f8c, U+4f8e-4f90, U+4f92-4f94, U+4f96-4f9a, U+4f9e-4fa0, U+4fab, U+4fad, U+4faf, U+4fb2, U+4fb7,
    U+4fb9, U+4fbb-4fbe, U+4fc0-4fc1, U+4fc4-4fc6, U+4fc8-4fc9, U+4fcb-4fd4, U+4fd8, U+4fda-4fdc, U+4fdf-4fe0, U+4fe2,
    U+4fe4-4fe6, U+4fef-4ff2, U+4ff6, U+4ffc-5002, U+5004-5007, U+500a, U+500c, U+500e-5011, U+5013-5014, U+5016-5018,
    U+501a-501e, U+5021-5023, U+5025-502a, U+502c-502e, U+5030, U+5032-5033, U+5035, U+5039, U+503b, U+5040-5043,
    U+5045-5048, U+504a, U+504c, U+504e, U+5050-5053, U+5055-5057, U+5059-505a, U+505f-5060, U+5062-5063, U+5066-5067,
    U+506a, U+506c-506d, U+5070-5072, U+5077-5078, U+5080-5081, U+5083-5086, U+5088, U+508a, U+508e-5090, U+5092-5096,
    U+509a-509c, U+509e-50a3, U+50aa, U+50ad, U+50af-50b4, U+50b9-50bb, U+50bd, U+50c0, U+50c2-50c4, U+50c7,
    U+50c9-50ca, U+50cc, U+50ce, U+50d0-50d1, U+50d3-50d4, U+50d6, U+50d8-50d9, U+50dc;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.50.woff2) format('woff2');
  unicode-range:
    U+4093, U+4103, U+4105, U+4148, U+414f, U+4163, U+41b4, U+41bf, U+41e6, U+41ee, U+41f3, U+4207, U+420e, U+4264,
    U+4293, U+42c6, U+42d6, U+42dd, U+4302, U+432b, U+4343, U+43ee, U+43f0, U+4408, U+440c, U+4417, U+441c, U+4422,
    U+4453, U+445b, U+4476, U+447a, U+4491, U+44b3, U+44be, U+44d4, U+4508, U+450d, U+4525, U+4543, U+457a, U+459d,
    U+45b8, U+45be, U+45e5, U+45ea, U+460f-4610, U+4641, U+4665, U+46a1, U+46ae-46af, U+470c, U+471f, U+4764, U+47e6,
    U+47fd, U+4816, U+481e, U+4844, U+484e, U+48b5, U+49b0, U+49e7, U+49fa, U+4a04, U+4a29, U+4abc, U+4b38, U+4b3b,
    U+4b7e, U+4bc2, U+4bca, U+4bd2, U+4be8, U+4c17, U+4c20, U+4c38, U+4cc4, U+4cd1, U+4ce1, U+4d07, U+4d77, U+4e02,
    U+4e04-4e05, U+4e0c, U+4e0f-4e12, U+4e15, U+4e17, U+4e19, U+4e1e-4e1f, U+4e23-4e24, U+4e28-4e2c, U+4e2e-4e31,
    U+4e35-4e37, U+4e3f-4e42, U+4e44, U+4e47-4e48, U+4e4d-4e4e, U+4e51, U+4e55-4e56, U+4e58, U+4e5a-4e5c, U+4e62-4e63,
    U+4e68-4e69, U+4e74-4e75, U+4e79, U+4e7f, U+4e82, U+4e85, U+4e8a, U+4e8d-4e8e, U+4e96-4e99, U+4e9d-4ea0, U+4ea2,
    U+4ea5-4ea6, U+4ea8, U+4eaf-4eb0, U+4eb3, U+4eb6, U+4eb9, U+4ebb-4ebc, U+4ec2-4ec4, U+4ec6-4ec8, U+4ecd, U+4ed0,
    U+4ed7, U+4eda-4edb, U+4edd-4ee2, U+4ee8, U+4eeb, U+4eed, U+4eef, U+4ef1, U+4ef3, U+4ef5, U+4ef7, U+4efc-4f00,
    U+4f02-4f03, U+4f08-4f09, U+4f0b-4f0d, U+4f12, U+4f15-4f17, U+4f19, U+4f1c, U+4f2b, U+4f2e, U+4f30-4f31, U+4f33,
    U+4f35-4f37, U+4f39, U+4f3b, U+4f3e, U+4f40, U+4f42-4f43, U+4f48-4f49, U+4f4b-4f4c, U+4f52, U+4f54, U+4f56;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.51.woff2) format('woff2');
  unicode-range:
    U+3395-339b, U+339e-33a0, U+33a2-33ff, U+3402, U+3405-3406, U+3427, U+342c, U+342e, U+3468, U+346a, U+3488, U+3492,
    U+34b5, U+34bc, U+34c1, U+34c7, U+34db, U+351f, U+353e, U+355d-355e, U+3563, U+356e, U+35a6, U+35a8, U+35c5, U+35da,
    U+35de, U+35f4, U+3605, U+3614, U+364a, U+3691, U+3696, U+3699, U+36cf, U+3761-3762, U+376b-376c, U+3775, U+378d,
    U+37c1, U+37e2, U+37e8, U+37f4, U+37fd, U+3800, U+382f, U+3836, U+3840, U+385c, U+3861, U+38a1, U+38ad, U+38fa,
    U+3917, U+391a, U+396f, U+39a4, U+39b8, U+3a5c, U+3a6e, U+3a73, U+3a85, U+3ac4, U+3acb, U+3ad6-3ad7, U+3aea, U+3af3,
    U+3b0e, U+3b1a, U+3b1c, U+3b22, U+3b35, U+3b6d, U+3b77, U+3b87-3b88, U+3b8d, U+3ba4, U+3bb6, U+3bc3, U+3bcd, U+3bf0,
    U+3bf3, U+3c0f, U+3c26, U+3cc3, U+3cd2, U+3d11, U+3d1e, U+3d31, U+3d4e, U+3d64, U+3d9a, U+3dc0, U+3dcc, U+3dd4,
    U+3e05, U+3e3f-3e40, U+3e60, U+3e66, U+3e68, U+3e83, U+3e8a, U+3e94, U+3eda, U+3f57, U+3f72, U+3f75, U+3f77, U+3fae,
    U+3fb1, U+3fc9, U+3fd7, U+3fdc, U+4039, U+4058;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.52.woff2) format('woff2');
  unicode-range: U+32b5-332b, U+332d-3394;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.53.woff2) format('woff2');
  unicode-range: U+31c8-31e3, U+31f0-321e, U+3220-3230, U+3232-32b4;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.54.woff2) format('woff2');
  unicode-range:
    U+3028-303f, U+3094-3096, U+309f-30a0, U+30ee, U+30f7-30fa, U+30ff, U+3105-312f, U+3131-3163, U+3165-318e,
    U+3190-31bb, U+31c0-31c7;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.55.woff2) format('woff2');
  unicode-range: U+2f14-2fd5, U+2ff0-2ffb, U+3004, U+3013, U+3016-301b, U+301e, U+3020-3027;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.56.woff2) format('woff2');
  unicode-range:
    U+25e4-25e6, U+2601-2603, U+2609, U+260e-260f, U+2616-2617, U+261c-261f, U+262f, U+2641, U+2660, U+2662-2664,
    U+2666-2668, U+266d-266e, U+2672-267d, U+26bd-26be, U+2702, U+271a, U+273d, U+2740, U+2756, U+2776-2793, U+27a1,
    U+2934-2935, U+29bf, U+29fa-29fb, U+2b05-2b07, U+2b1a, U+2b95, U+2e3a-2e3b, U+2e80-2e99, U+2e9b-2ef3, U+2f00-2f13;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.57.woff2) format('woff2');
  unicode-range:
    U+24d1-24ff, U+2503-2513, U+2515-2516, U+2518-251b, U+251d-2522, U+2524-259f, U+25a2-25ab, U+25b1, U+25b7,
    U+25c0-25c1, U+25c9-25ca, U+25cc, U+25d0-25d3, U+25e2-25e3;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.58.woff2) format('woff2');
  unicode-range:
    U+2105, U+2109-210a, U+210f, U+2116, U+2121, U+2126-2127, U+212b, U+212e, U+2135, U+213b, U+2194-2199, U+21b8-21b9,
    U+21c4-21c6, U+21cb-21cc, U+21d0, U+21e6-21e9, U+21f5, U+2202-2203, U+2205-2206, U+2208-220b, U+220f, U+2211,
    U+2213, U+2215, U+221a, U+221d, U+2220, U+2223, U+2225-2226, U+2228, U+222a-222e, U+2234-2237, U+223d, U+2243,
    U+2245, U+2248, U+224c, U+2260, U+2262, U+2264-2265, U+226e-226f, U+2272-2273, U+2276-2277, U+2283-2287,
    U+228a-228b, U+2295-2299, U+22a0, U+22a5, U+22bf, U+22da-22db, U+22ef, U+2305-2307, U+2318, U+2329-232a,
    U+23b0-23b1, U+23be-23cc, U+23ce, U+23da-23db, U+2423, U+2469-24d0;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.59.woff2) format('woff2');
  unicode-range:
    U+a1-a4, U+a6-a7, U+aa, U+ac-ad, U+b5-b6, U+b8-ba, U+bc-c8, U+ca-cc, U+ce-d5, U+d9-db, U+dd-df, U+e6, U+ee, U+f0,
    U+f5, U+f7, U+f9, U+fb, U+fe-102, U+110-113, U+11a-11b, U+128-12b, U+143-144, U+147-148, U+14c, U+14e-14f,
    U+152-153, U+168-16d, U+192, U+1a0-1a1, U+1af, U+1cd-1dc, U+1f8-1f9, U+251, U+261, U+2bb, U+2c7, U+2c9, U+2ea-2eb,
    U+304, U+307, U+30c, U+1e3e-1e3f, U+1ea0-1ebe, U+1ec0-1ec6, U+1ec8-1ef9, U+2011-2012, U+2016, U+2018-201a, U+201e,
    U+2021, U+2030, U+2033, U+2035, U+2042, U+2047, U+2051, U+2074, U+20a9, U+20ab-20ac, U+20dd-20de, U+2100;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.60.woff2) format('woff2');
  unicode-range:
    U+2227, U+26a0, U+2713, U+301f, U+4ff8, U+5239, U+526a, U+54fa, U+5740, U+5937, U+5993, U+59fb, U+5a3c, U+5c41,
    U+6028, U+626e, U+646f, U+647a, U+64b0, U+64e2, U+65a7, U+66fe, U+6727, U+6955, U+6bef, U+6f23, U+724c, U+767c,
    U+7a83, U+7ac4, U+7b67, U+8000, U+8471, U+8513, U+8599, U+86db, U+8718, U+87f2, U+88f3, U+8ad2, U+8e2a, U+8fa3,
    U+95a5, U+9798, U+9910, U+9957, U+9bab, U+9c3b, U+9daf, U+ff95;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.61.woff2) format('woff2');
  unicode-range:
    U+a8, U+2032, U+2261, U+2282, U+3090, U+30f1, U+339c, U+535c, U+53d9, U+56a2, U+56c1, U+5806, U+589f, U+59d0,
    U+5a7f, U+60e0, U+639f, U+65af, U+68fa, U+69ae, U+6d1b, U+6ef2, U+71fb, U+725d, U+7262, U+75bc, U+7768, U+7940,
    U+79bf, U+7bed, U+7d68, U+7dfb, U+814b, U+8207, U+83e9, U+8494, U+8526, U+8568, U+85ea, U+86d9, U+87ba, U+8861,
    U+887f, U+8fe6, U+9059, U+9061, U+916a, U+976d, U+97ad, U+9ece;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.62.woff2) format('woff2');
  unicode-range:
    U+2d9, U+21d4, U+301d, U+515c, U+52fe, U+5420, U+5750, U+5766, U+5954, U+5b95, U+5f8a, U+5f98, U+620c, U+621f,
    U+641c, U+66d9, U+676d, U+6775, U+67f5, U+694a, U+6a02, U+6a3a, U+6a80, U+6c23, U+6c72, U+6dcb, U+6faa, U+707c,
    U+71c8, U+7422, U+74e2, U+7791, U+7825, U+7a14, U+7a1c, U+7c95, U+7fc1, U+82a5, U+82db, U+8304, U+853d, U+8cd3,
    U+8de8, U+8f0c, U+8f3f, U+9091, U+91c7, U+929a, U+98af, U+9913;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.63.woff2) format('woff2');
  unicode-range:
    U+2ca-2cb, U+2229, U+2468, U+2669, U+266f, U+273f, U+4ec0, U+4f60, U+4fb6, U+5347, U+540e, U+543b, U+5b0c, U+5d4c,
    U+5f14, U+5f9e, U+6155, U+62d0, U+6602, U+6666, U+66f3, U+67a2, U+67ca, U+69cc, U+6d29, U+6d9b, U+6e3e, U+6f81,
    U+7109, U+73c0, U+73c2, U+7425, U+7435-7436, U+7525, U+7554, U+785d, U+786b, U+7ae3, U+7b94, U+7d18, U+81bf, U+8511,
    U+8549, U+9075, U+9640, U+98e2, U+9e9f, U+ff96;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.64.woff2) format('woff2');
  unicode-range:
    U+2467, U+4ece, U+4ed4, U+4f91, U+4fae, U+534d, U+53c9, U+54b3, U+586b, U+5944, U+5b78, U+5df7, U+5f77, U+6101,
    U+6167-6168, U+61a4, U+62d9, U+698a, U+699b, U+6a59, U+6cc4, U+6e07, U+7099, U+75d2, U+77ad, U+7953, U+7984, U+7a92,
    U+7baa, U+7dbb, U+817f, U+82ad, U+85e9, U+868a, U+8caa, U+8f44, U+9017, U+907c, U+908a, U+92f3, U+936e, U+9435,
    U+978d, U+9838, U+9a28, U+9b41, U+9ba8, U+9c57, U+9eb9;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.65.woff2) format('woff2');
  unicode-range:
    U+b1, U+309b, U+4e5e, U+51f1, U+5506, U+55c5, U+58cc, U+59d1, U+5c51, U+5ef7, U+6284, U+62d7, U+6689, U+673d,
    U+6a2b, U+6a8e, U+6a9c, U+6d63, U+6dd1, U+70b8, U+7235, U+72db, U+72f8, U+7560, U+7c9b, U+7ce7, U+7e1e, U+80af,
    U+82eb, U+8463, U+8499, U+85dd, U+86ee, U+8a60, U+8a6e, U+8c79, U+8e87, U+8e8a, U+8f5f, U+9010, U+918d, U+9190,
    U+965b, U+97fb, U+9ab8, U+9bad, U+9d3b, U+9d5c, U+9dfa, U+9e93;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.66.woff2) format('woff2');
  unicode-range:
    U+2020, U+3003, U+3231, U+4e9b, U+4f3d, U+4f47, U+51b6, U+51dc, U+53e1, U+5bc5, U+602f, U+60bc, U+61c9, U+633d,
    U+637b, U+6492, U+65fa, U+660f, U+66f0, U+6703, U+681e, U+6876, U+6893, U+6912, U+698e, U+6c7d, U+714c, U+7169,
    U+71d5, U+725f, U+72d7, U+745b, U+74dc, U+75e2, U+7891, U+7897, U+7dcb, U+810a, U+8218, U+8339, U+840e, U+852d,
    U+8823, U+8a0a, U+9089, U+919c, U+971c, U+9ad9, U+ff4a, U+ff5a;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.67.woff2) format('woff2');
  unicode-range:
    U+2466, U+2600, U+4eab, U+4fe3, U+4ff5, U+51a5, U+51f0, U+536f, U+53d4, U+53f1, U+54a5, U+559d, U+55e3, U+58fa,
    U+5962, U+59ea, U+5c16, U+5cef, U+5d16, U+5f10, U+5fd6, U+6190, U+6216, U+634f, U+63bb, U+66d6, U+6756, U+6bc5,
    U+6e26, U+727d, U+731f, U+76f2, U+7729, U+7a7f, U+7aff, U+7c9f, U+818f, U+8236, U+82b9, U+8338, U+85aa, U+88b4,
    U+8b33, U+904d, U+93a7, U+96cc, U+96eb, U+9aed, U+9b8e, U+fa11;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.68.woff2) format('woff2');
  unicode-range:
    U+251c, U+2523, U+4e14, U+545f, U+54bd, U+553e, U+55dc, U+56da, U+589c, U+5b55, U+5bb5, U+5ce1, U+5df4, U+5eb6,
    U+5ec9, U+6191, U+62f7, U+6357, U+64a5, U+6591, U+65bc, U+6897, U+6e1a, U+7063, U+711a, U+721b, U+722c, U+75b9,
    U+75d5, U+75fa, U+7766, U+7aae, U+7b48, U+7b8b, U+7d21, U+7e55, U+7f75, U+842c, U+8910, U+8a63, U+8b39, U+8b5a,
    U+8cdc, U+8d74, U+907d, U+91e7, U+9306, U+96bc, U+98f4, U+9ac4;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.69.woff2) format('woff2');
  unicode-range:
    U+2003, U+2312, U+266c, U+4f86, U+51ea, U+5243, U+5256, U+541f, U+5841, U+59dc, U+5df3, U+601c, U+60e7, U+632b,
    U+638c, U+64ad, U+6881, U+697c, U+69cd, U+6c50, U+6d2a, U+6fc1, U+7027, U+7058, U+70f9, U+714e, U+7345, U+751a,
    U+760d, U+764c, U+77db, U+7d79, U+7e8f, U+80ce, U+814e, U+81fc, U+8247, U+8278, U+85a9, U+8a03, U+90ed, U+9784,
    U+9801, U+984e, U+99b3, U+9bc9, U+9bdb, U+9be8, U+9e78, U+ff6b;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.70.woff2) format('woff2');
  unicode-range:
    U+266b, U+3006, U+5176, U+5197, U+51a8, U+51c6, U+52f2, U+5614, U+5875, U+5a2f, U+5b54, U+5ce0, U+5dba, U+5deb,
    U+5e63, U+5f59, U+5fcc, U+6068, U+6367, U+68b6, U+6a0b, U+6b64, U+6e15, U+6eba, U+7272, U+72a0, U+7947, U+7985,
    U+79e6, U+79e9, U+7a3d, U+7a9f, U+7aaf, U+7b95, U+7f60, U+7f9e, U+7fe0, U+8098, U+80ba, U+8106, U+82d4, U+831c,
    U+87f9, U+8a1f, U+8acf, U+90c1, U+920d, U+9756, U+fe43, U+ff94;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.71.woff2) format('woff2');
  unicode-range:
    U+af, U+2465, U+2517, U+33a1, U+4f10, U+50c5, U+51b4, U+5384, U+5606, U+5bb0, U+5cac, U+5ee3, U+618e, U+61f2,
    U+62c9, U+66ab, U+66f9, U+6816, U+6960, U+6b3e, U+6f20, U+7078, U+72d0, U+73ed, U+7ad9, U+7b1b, U+7be4, U+7d62,
    U+7f51, U+80b4, U+80f4, U+8154, U+85fb, U+865c, U+8702, U+895f, U+8aed, U+8b90, U+8ced, U+8fbf, U+91d8, U+9418,
    U+9583, U+9591, U+9813, U+982c, U+9bd6, U+ff46, U+ff7f, U+ff88;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.72.woff2) format('woff2');
  unicode-range:
    U+4e91, U+508d, U+50e7, U+514e, U+51f6, U+5446, U+5504, U+584a, U+59a8, U+59d3, U+5a46, U+5ac9, U+6020, U+60a6,
    U+6148, U+621a, U+6234, U+64c1, U+6523, U+675c, U+67d1, U+6953, U+6ccc, U+6df5, U+6e13, U+6f06, U+723a, U+7325,
    U+74e6, U+758e, U+75ab, U+75d9, U+7a40, U+8096, U+82fa, U+8587, U+8594, U+8a6b, U+8ab9, U+8b17, U+8b83, U+937c,
    U+963b, U+9673, U+96db, U+9ce9, U+9f4b, U+ff67, U+ff82, U+ff93;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.73.woff2) format('woff2');
  unicode-range:
    U+221e, U+2514, U+51f9, U+5270, U+5449, U+5824, U+59a5, U+5a29, U+5d07, U+5e16, U+60e3, U+614c, U+6276, U+643e,
    U+64ab, U+6562, U+6681, U+670b, U+6734, U+67af, U+6a3d, U+6b05, U+6dc0, U+6e4a, U+7259, U+732a, U+7409, U+78a7,
    U+7a6b, U+8015, U+809b, U+817a, U+830e, U+837b, U+85ab, U+8a23, U+8a93, U+8b00, U+8b19, U+8b21, U+8cbf, U+8fb0,
    U+901d, U+91b8, U+9320, U+932c, U+9688, U+96f6, U+9df2, U+ff6a;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.74.woff2) format('woff2');
  unicode-range:
    U+2002, U+2025, U+4f8d, U+51e1, U+51f8, U+5507, U+5598, U+58f1, U+5983, U+59ac, U+5c3c, U+5de7, U+5e7d, U+5eca,
    U+5f61, U+606d, U+60f9, U+636e, U+64ec, U+67da, U+67ff, U+6813, U+68f2, U+693f, U+6b6a, U+6bbb, U+6ef4, U+7092,
    U+717d, U+7261, U+73c8, U+7432, U+7483, U+76fe, U+7709, U+78d0, U+81a3, U+81b3, U+82af, U+8305, U+8309, U+8870,
    U+88fe, U+8cd1, U+8d66, U+906e, U+971e, U+9812, U+ff79, U+ff90;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.75.woff2) format('woff2');
  unicode-range:
    U+2464, U+2501, U+2640, U+2642, U+339d, U+4f0e, U+5091, U+50b5, U+5132, U+51cc, U+558b, U+55aa, U+585e, U+5bee,
    U+5dfe, U+60b6, U+62b9, U+6349, U+6566, U+6590, U+6842, U+689d, U+6a58, U+6c70, U+6ff1, U+7815, U+7881, U+7aaa,
    U+7bc7, U+7def, U+7fa8, U+8017, U+8036, U+8061, U+821f, U+8429, U+8ce0, U+8e74, U+9019, U+90ca, U+9162, U+932f,
    U+93ae, U+9644, U+990c, U+9cf3, U+ff56, U+ff6e, U+ff7e, U+ff85;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.76.woff2) format('woff2');
  unicode-range:
    U+2266-2267, U+4f2f, U+5208, U+5451, U+546a, U+5589, U+576a, U+5815, U+5a9a, U+5b9b, U+5c3a, U+5efb, U+5faa, U+6109,
    U+6643, U+6652, U+695a, U+69fd, U+6b86, U+6bb4, U+6daf, U+7089, U+70cf, U+7a00, U+7a4f, U+7b39, U+7d33, U+80e1,
    U+828b, U+82a6, U+86cd, U+8c8c, U+8cca, U+8df3, U+9077, U+9175, U+91dc, U+925b, U+9262, U+9271, U+92ed, U+9855,
    U+9905, U+9d28, U+ff3f, U+ff58, U+ff68, U+ff6d, U+ff9c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.77.woff2) format('woff2');
  unicode-range:
    U+2207, U+25ef, U+309c, U+4e4f, U+5146, U+51dd, U+5351, U+540a, U+5629, U+5eb5, U+5f04, U+5f13, U+60dc, U+6212,
    U+63b4, U+642c, U+6627, U+66a6, U+66c7, U+66fd, U+674e, U+6b96, U+6c4e, U+6df3, U+6e67, U+6f84, U+72fc, U+733f,
    U+7c97, U+7db1, U+7e4d, U+816b, U+82d1, U+84cb, U+854e, U+8607, U+86c7, U+871c, U+8776, U+8a89, U+8fc4, U+91a4,
    U+9285, U+9685, U+9903, U+9b31, U+9f13, U+ff42, U+ff74, U+ff91;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.78.woff2) format('woff2');
  unicode-range:
    U+4e32, U+51db, U+53a8, U+53ea, U+5609, U+5674, U+5a92, U+5e7e, U+6115, U+611a, U+62cc, U+62ed, U+63c9, U+64b9,
    U+64e6, U+65cb, U+6606, U+6731, U+683d, U+6afb, U+7460, U+771e, U+78ef, U+7b26, U+7b51, U+7cde, U+7d10, U+7d2f,
    U+7d46, U+80de, U+819c, U+84b2, U+85cd, U+865a, U+8ecc, U+9022, U+90b8, U+9192, U+9675, U+96b7, U+99ff, U+ff44,
    U+ff55, U+ff6c, U+ff73, U+ff75, U+ff86, U+ff8d, U+ff92, U+ffe3;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.79.woff2) format('woff2');
  unicode-range:
    U+25b3, U+30f5, U+4eae, U+4f46, U+4f51, U+5203, U+52ff, U+55a7, U+564c, U+565b, U+57f9, U+5805, U+5b64, U+5e06,
    U+5f70, U+5f90, U+60e8, U+6182, U+62f3, U+62fe, U+63aa, U+64a4, U+65d7, U+673a, U+6851, U+68cb, U+68df, U+6d1e,
    U+6e58, U+6e9d, U+77b3, U+7832, U+7c3f, U+7db4, U+7f70, U+80aa, U+80c6, U+8105, U+819d, U+8276, U+8679, U+8986,
    U+8c9d, U+8fc5, U+916c, U+9665, U+9699, U+96c0, U+9a19, U+ff8b;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.80.woff2) format('woff2');
  unicode-range:
    U+2463, U+25a1, U+4ef0, U+5076, U+5098, U+51fd, U+5302, U+5448, U+54c9, U+570b, U+583a, U+5893, U+58a8, U+58ee,
    U+5949, U+5bdb, U+5f26, U+5f81, U+6052, U+6170, U+61c7, U+631f, U+635c, U+664b, U+69fb, U+6f01, U+7070, U+722a,
    U+745e, U+755c, U+76c6, U+78c1, U+79e4, U+7bb8, U+7d0b, U+81a8, U+82d7, U+8b5c, U+8f14, U+8fb1, U+8fbb, U+9283,
    U+9298, U+9a30, U+ff03, U+ff50, U+ff59, U+ff7b, U+ff8e-ff8f;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.81.woff2) format('woff2');
  unicode-range:
    U+2010, U+2502, U+25b6, U+4f3a, U+514b, U+5265, U+52c3, U+5339, U+53ec, U+54c0, U+55b0, U+5854, U+5b8f, U+5cb3,
    U+5e84, U+60da, U+6247, U+6249, U+628a, U+62cd, U+65ac, U+6838, U+690e, U+6cf0, U+6f02, U+6f2c, U+6f70, U+708a,
    U+7434, U+75be, U+77ef, U+7c60, U+7c98, U+7d1b, U+7e2b, U+80a5, U+81e3, U+820c, U+8210, U+8475, U+862d, U+8650,
    U+8997, U+906d, U+91c8, U+9700, U+9727, U+9df9, U+ff3a, U+ff9a;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.82.woff2) format('woff2');
  unicode-range:
    U+2103, U+5049, U+52b1, U+5320, U+5553, U+572d, U+58c7, U+5b5d, U+5bc2, U+5de3, U+5e61, U+5f80, U+61a9, U+67d0,
    U+67f4, U+6c88, U+6ca1, U+6ce5, U+6d78, U+6e9c, U+6f54, U+731b, U+73b2, U+74a7, U+74f6, U+75e9, U+7b20, U+7c8b,
    U+7f72, U+809d, U+8108, U+82b3, U+82bd, U+84b8, U+84c4, U+88c2, U+8ae6, U+8ef8, U+902e, U+9065, U+9326, U+935b,
    U+938c, U+9676, U+9694, U+96f7, U+9ed9, U+ff48, U+ff4c, U+ff81;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.83.woff2) format('woff2');
  unicode-range:
    U+2500, U+3008-3009, U+4ead, U+4f0f, U+4fca, U+53eb, U+543e, U+57a2, U+5cf0, U+5e8f, U+5fe0, U+61b2, U+62d8, U+6442,
    U+64b2, U+6589, U+659c, U+67f1, U+68c4, U+6cb8, U+6d12, U+6de1, U+6fe1, U+70c8, U+723d, U+73e0, U+7656, U+773a,
    U+7948, U+7b87, U+7c92, U+7d3a, U+7e1b, U+7e4a, U+819a, U+8358, U+83c5, U+84bc, U+864e, U+8912, U+8c9e, U+8d05,
    U+92fc, U+9396, U+98fd, U+99d2, U+ff64, U+ff7a, U+ff83;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.84.woff2) format('woff2');
  unicode-range:
    U+3014-3015, U+4e3c, U+5036, U+5075, U+533f, U+53e9, U+5531, U+5642, U+5984, U+59e6, U+5a01, U+5b6b, U+5c0b, U+5f25,
    U+6069, U+60a0, U+614e, U+62b5, U+62d2-62d3, U+6597, U+660c, U+674f, U+67cf, U+6841, U+6905, U+6cf3, U+6d32, U+6d69,
    U+6f64, U+716e, U+7761, U+7b52, U+7be0, U+7dbf, U+7de9, U+7f36, U+81d3, U+8302, U+8389, U+846c, U+84ee, U+8a69,
    U+9038, U+9d8f, U+ff47, U+ff4b, U+ff76, U+ff9b;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.85.woff2) format('woff2');
  unicode-range:
    U+25c7, U+3007, U+504f, U+507d, U+51a0, U+52a3, U+5410, U+5510, U+559a, U+5782, U+582a, U+5c0a, U+5c3f, U+5c48,
    U+5f6b, U+6176, U+622f, U+6279, U+62bd, U+62dd, U+65ed, U+67b6, U+6817, U+6850, U+6d6a, U+6deb, U+6ea2, U+6edd,
    U+6f5c, U+72e9, U+73a9, U+7573, U+76bf, U+7950, U+7956, U+7f8a, U+7ffc, U+80a2, U+80c3, U+83ca, U+8a02, U+8a13,
    U+8df5, U+9375, U+983b, U+99b4, U+ff4e, U+ff71, U+ff89, U+ff97;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.86.woff2) format('woff2');
  unicode-range:
    U+24, U+2022, U+2212, U+221f, U+2665, U+4ecf, U+5100, U+51cd, U+52d8, U+5378, U+53f6, U+574a, U+5982, U+5996,
    U+5c1a, U+5e1d, U+5f84, U+609f, U+61a7, U+61f8, U+6398, U+63ee, U+6676, U+6691, U+6eb6, U+7126, U+71e5, U+7687,
    U+7965, U+7d17, U+80a1, U+8107, U+8266, U+85a6, U+8987, U+8ca2, U+8cab, U+8e0a, U+9042, U+95c7, U+9810, U+9867,
    U+98fc, U+ff52-ff54, U+ff61, U+ff77, U+ff98-ff99;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.87.woff2) format('woff2');
  unicode-range:
    U+b0, U+226a, U+2462, U+4e39, U+4fc3, U+4fd7, U+50be, U+50da, U+5200, U+5211, U+54f2, U+5618, U+596a, U+5b22,
    U+5bb4, U+5d50, U+60a3, U+63fa, U+658e, U+65e8, U+6669, U+6795, U+679d, U+67a0, U+6b3a, U+6e09, U+757f, U+7cd6,
    U+7dbe, U+7ffb, U+83cc, U+83f1, U+840c, U+845b, U+8846, U+8972, U+8a34, U+8a50, U+8a87, U+8edf, U+8ff0, U+90a6,
    U+9154, U+95a3, U+9663, U+9686, U+96c7, U+ff3c, U+ff7c, U+ff8a;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.88.woff2) format('woff2');
  unicode-range:
    U+25bd, U+4e59, U+4ec1, U+4ff3, U+515a, U+518a, U+525b, U+5375, U+552f, U+57a3, U+5b9c, U+5c3d, U+5e3d, U+5e7b,
    U+5f0a, U+6094, U+6458, U+654f, U+67f3, U+6b8a, U+6bd2, U+6c37, U+6ce1, U+6e56, U+6e7f, U+6ed1, U+6ede, U+6f0f,
    U+70ad, U+7267, U+7363, U+786c, U+7a42, U+7db2, U+7f85, U+8178, U+829d, U+8896, U+8c5a, U+8cb0, U+8ce2, U+8ed2,
    U+9047, U+9177, U+970a, U+9ea6, U+ff1b, U+ff31, U+ff39, U+ff80;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.89.woff2) format('woff2');
  unicode-range:
    U+a5, U+4e80, U+4f34, U+4f73, U+4f75, U+511f, U+5192, U+52aa, U+53c8, U+570f, U+57cb, U+596e, U+5d8b, U+5f66,
    U+5fd9, U+62db, U+62f6, U+6328, U+633f, U+63a7, U+6469, U+6bbf, U+6c41, U+6c57, U+6d44, U+6dbc, U+706f, U+72c2,
    U+72ed, U+7551, U+75f4, U+7949, U+7e26, U+7fd4, U+8150, U+8af8, U+8b0e, U+8b72, U+8ca7, U+934b, U+9a0e, U+9a12,
    U+9b42, U+ff41, U+ff43, U+ff45, U+ff49, U+ff4f, U+ff62-ff63;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.90.woff2) format('woff2');
  unicode-range:
    U+4e18, U+4fb5, U+5104, U+52c7, U+5353, U+5374, U+53e5, U+587e, U+594f, U+5a20, U+5de1, U+5f18, U+5fcd, U+6291,
    U+62ab, U+6355, U+6392, U+63da, U+63e1, U+656c, U+6687, U+68b0-68b1, U+68d2, U+68da, U+6b27, U+6cbc, U+7159, U+7344,
    U+73cd, U+76df, U+790e, U+7cf8, U+8102, U+88c1, U+8aa0, U+8e0f, U+9178, U+92ad, U+9670, U+96c5, U+9cf4, U+9db4,
    U+ff3e, U+ff6f, U+ff72, U+ff78, U+ff7d, U+ff84, U+ff8c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.91.woff2) format('woff2');
  unicode-range:
    U+60, U+2200, U+226b, U+2461, U+517c, U+526f, U+5800, U+5b97, U+5bf8, U+5c01, U+5d29, U+5e4c, U+5e81, U+6065,
    U+61d0, U+667a, U+6696, U+6843, U+6c99, U+6d99, U+6ec5, U+6f22, U+6f6e, U+6fa4, U+6fef, U+71c3, U+72d9, U+7384,
    U+78e8, U+7a1a, U+7a32, U+7a3c, U+7adc, U+7ca7, U+7d2b, U+7dad, U+7e4b, U+80a9, U+8170, U+81ed, U+820e, U+8a17,
    U+8afe, U+90aa, U+914e, U+963f, U+99c4, U+9eba, U+9f3b, U+ff38;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.92.woff2) format('woff2');
  unicode-range:
    U+2460, U+4e5f, U+4e7e, U+4ed9, U+501f, U+502b, U+5968, U+5974, U+5ac1, U+5b99, U+5ba3, U+5be7, U+5be9, U+5c64,
    U+5cb8, U+5ec3, U+5f1f, U+616e, U+6297, U+62e0, U+62ec, U+6368, U+642d, U+65e6, U+6717, U+676f, U+6b04, U+732e,
    U+7652, U+76ca, U+76d7, U+7802, U+7e70, U+7f6a, U+8133, U+81e8, U+866b, U+878d, U+88f8, U+8a5e, U+8cdb, U+8d08,
    U+907a, U+90e1, U+96f2, U+9f8d, U+ff35, U+ff37, U+ff40, U+ff9d;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.93.woff2) format('woff2');
  unicode-range:
    U+21d2, U+25ce, U+300a-300b, U+4e89, U+4e9c, U+4ea1, U+5263, U+53cc, U+5426, U+5869, U+5947, U+598a, U+5999, U+5e55,
    U+5e72, U+5e79, U+5fae, U+5fb9, U+602a, U+6163, U+624d, U+6749, U+6c5a, U+6cbf, U+6d45, U+6dfb, U+6e7e, U+708e,
    U+725b, U+7763, U+79c0, U+7bc4, U+7c89, U+7e01, U+7e2e, U+8010, U+8033, U+8c6a, U+8cc3, U+8f1d, U+8f9b, U+8fb2,
    U+907f, U+90f7, U+9707, U+9818, U+9b3c, U+ff0a, U+ff4d;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.94.woff2) format('woff2');
  unicode-range:
    U+2015, U+2190, U+4e43, U+5019, U+5247, U+52e7, U+5438, U+54b2, U+55ab, U+57f7, U+5bd2, U+5e8a, U+5ef6, U+6016,
    U+60b2, U+6162, U+6319, U+6551, U+6607, U+66b4, U+675f, U+67d4, U+6b20, U+6b53, U+6ce3, U+719f, U+75b2, U+770b,
    U+7720, U+77ac, U+79d2, U+7af9, U+7d05, U+7dca, U+8056, U+80f8, U+81f3, U+8352, U+885d, U+8a70, U+8aa4, U+8cbc,
    U+900f, U+9084, U+91e3, U+9451, U+96c4, U+99c6, U+9ad4, U+ff70;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.95.woff2) format('woff2');
  unicode-range:
    U+2193, U+25b2, U+4e4b, U+516d, U+51c4, U+529f, U+52c9, U+5360, U+5442, U+5857, U+5915, U+59eb, U+5a9b, U+5c3b,
    U+6012, U+61b6, U+62b1, U+6311, U+6577, U+65e2, U+65ec, U+6613, U+6790, U+6cb9, U+7372, U+76ae, U+7d5e, U+7fcc,
    U+88ab, U+88d5, U+8caf, U+8ddd, U+8ecd, U+8f38, U+8f9e, U+8feb, U+9063, U+90f5, U+93e1, U+968a, U+968f, U+98fe,
    U+9ec4, U+ff1d, U+ff27, U+ff2a, U+ff36, U+ff3b, U+ff3d, U+ffe5;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.96.woff2) format('woff2');
  unicode-range:
    U+4e03, U+4f38, U+50b7, U+5264, U+5348, U+5371, U+585a, U+58ca, U+5951, U+59b9, U+59d4, U+5b98, U+5f8b, U+6388,
    U+64cd, U+65e7, U+6803, U+6b6f, U+6d66, U+6e0b, U+6ecb, U+6fc3, U+72ac, U+773c, U+77e2, U+7968, U+7a74, U+7dba,
    U+7dd1, U+7e3e, U+808c, U+811a, U+8179, U+8239, U+8584, U+8a0e, U+8a72, U+8b66, U+8c46, U+8f29, U+90a3, U+9234,
    U+96f0, U+9769, U+9774, U+9aa8, U+ff26, U+ff28, U+ff9e-ff9f;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.97.woff2) format('woff2');
  unicode-range:
    U+7e, U+b4, U+25c6, U+2661, U+4e92, U+4eee, U+4ffa, U+5144, U+5237, U+5287, U+52b4, U+58c1, U+5bff, U+5c04, U+5c06,
    U+5e95, U+5f31, U+5f93, U+63c3, U+640d, U+6557, U+6614, U+662f, U+67d3, U+690d, U+6bba, U+6e6f, U+72af, U+732b,
    U+7518, U+7ae0, U+7ae5, U+7af6, U+822a, U+89e6, U+8a3a, U+8a98, U+8cb8, U+8de1, U+8e8d, U+95d8, U+961c, U+96a3,
    U+96ea, U+9bae, U+ff20, U+ff22, U+ff29, U+ff2b-ff2c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.98.woff2) format('woff2');
  unicode-range:
    U+25cb, U+4e71, U+4f59, U+50d5, U+520a, U+5217, U+5230, U+523a-523b, U+541b, U+5439, U+5747, U+59c9, U+5bdf, U+5c31,
    U+5de8, U+5e7c, U+5f69, U+6050, U+60d1, U+63cf, U+663c, U+67c4, U+6885, U+6c38, U+6d6e, U+6db2, U+6df7, U+6e2c,
    U+6f5f, U+7532, U+76e3-76e4, U+7701, U+793c, U+79f0, U+7a93, U+7d00, U+7de0, U+7e54, U+8328, U+8840, U+969c, U+96e8,
    U+9811, U+9aea, U+9b5a, U+ff24, U+ff2e, U+ff57;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.99.woff2) format('woff2');
  unicode-range:
    U+2191, U+505c, U+52e4, U+5305, U+535a, U+56e0, U+59bb, U+5acc, U+5b09, U+5b87, U+5c90, U+5df1, U+5e2d, U+5e33,
    U+5f3e, U+6298, U+6383, U+653b, U+6697, U+6804, U+6a39, U+6cca, U+6e90, U+6f2b, U+702c, U+7206, U+7236, U+7559,
    U+7565, U+7591, U+75c7, U+75db, U+7b4b, U+7bb1, U+7d99, U+7fbd, U+8131, U+885b, U+8b1d, U+8ff7, U+9003, U+9045,
    U+96a0, U+9732, U+990a, U+99d0, U+9e97, U+9f62, U+ff25, U+ff2d;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.100.woff2) format('woff2');
  unicode-range:
    U+4e08, U+4f9d, U+5012, U+514d, U+51b7, U+5275, U+53ca, U+53f8, U+5584, U+57fc, U+5b9d, U+5bfa, U+5c3e, U+5f01,
    U+5fb4, U+5fd7, U+606f, U+62e1, U+6563, U+6674, U+6cb3, U+6d3e, U+6d74, U+6e1b, U+6e2f, U+718a, U+7247, U+79d8,
    U+7d14, U+7d66, U+7d71, U+7df4, U+7e41, U+80cc, U+8155, U+83d3, U+8a95, U+8ab2, U+8ad6, U+8ca1, U+9000, U+9006,
    U+9678, U+97d3, U+9808, U+98ef, U+9a5a, U+9b45, U+ff23, U+ff30;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.101.woff2) format('woff2');
  unicode-range:
    U+25bc, U+3012, U+4ef2, U+4f0a, U+516b, U+5373, U+539a, U+53b3, U+559c, U+56f0, U+5727, U+5742, U+5965, U+59ff,
    U+5bc6, U+5dfb, U+5e45, U+5ead, U+5fb3, U+6211, U+6253, U+639b, U+63a8, U+6545, U+6575, U+6628, U+672d, U+68a8,
    U+6bdb, U+6d25, U+707d, U+767e, U+7834, U+7b46, U+7bc9, U+8074, U+82e6, U+8349, U+8a2a, U+8d70, U+8da3, U+8fce,
    U+91cc, U+967d, U+97ff, U+9996, U+ff1c, U+ff2f, U+ff32, U+ff34;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.102.woff2) format('woff2');
  unicode-range:
    U+3d, U+5e, U+25cf, U+4e0e, U+4e5d, U+4e73, U+4e94, U+4f3c, U+5009, U+5145, U+51ac, U+5238, U+524a, U+53f3, U+547c,
    U+5802, U+5922, U+5a66, U+5c0e, U+5de6, U+5fd8, U+5feb, U+6797, U+685c, U+6b7b, U+6c5f-6c60, U+6cc9, U+6ce2, U+6d17,
    U+6e21, U+7167, U+7642, U+76db, U+8001, U+821e, U+8857, U+89d2, U+8b1b, U+8b70, U+8cb4, U+8cde, U+8f03, U+8f2a,
    U+968e, U+9b54, U+9e7f, U+9ebb, U+ff05, U+ff33;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.103.woff2) format('woff2');
  unicode-range:
    U+500d, U+5074, U+50cd, U+5175, U+52e2, U+5352, U+5354, U+53f2, U+5409, U+56fa, U+5a18, U+5b88, U+5bdd, U+5ca9,
    U+5f92, U+5fa9, U+60a9, U+623f, U+6483, U+653f, U+666f, U+66ae, U+66f2, U+6a21, U+6b66, U+6bcd, U+6d5c, U+796d,
    U+7a4d, U+7aef, U+7b56, U+7b97, U+7c4d, U+7e04, U+7fa9, U+8377, U+83dc, U+83ef, U+8535, U+8863, U+88cf, U+88dc,
    U+8907, U+8acb, U+90ce, U+91dd, U+ff0b, U+ff0d, U+ff19, U+ff65;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.104.woff2) format('woff2');
  unicode-range:
    U+4e01, U+4e21, U+4e38, U+52a9, U+547d, U+592e, U+5931, U+5b63, U+5c40, U+5dde, U+5e78, U+5efa, U+5fa1, U+604b,
    U+6075, U+62c5, U+632f, U+6a19, U+6c0f, U+6c11, U+6c96, U+6e05, U+70ba, U+71b1, U+7387, U+7403, U+75c5, U+77ed,
    U+795d, U+7b54, U+7cbe, U+7d19, U+7fa4, U+8089, U+81f4, U+8208, U+8336, U+8457, U+8a33, U+8c4a, U+8ca0, U+8ca8,
    U+8cc0, U+9014, U+964d, U+9803, U+983c, U+98db, U+ff17, U+ff21;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.105.woff2) format('woff2');
  unicode-range:
    U+25, U+25a0, U+4e26, U+4f4e, U+5341, U+56f2, U+5bbf, U+5c45, U+5c55, U+5c5e, U+5dee, U+5e9c, U+5f7c, U+6255,
    U+627f, U+62bc, U+65cf, U+661f, U+666e, U+66dc, U+67fb, U+6975, U+6a4b, U+6b32, U+6df1, U+6e29, U+6fc0, U+738b,
    U+7686, U+7a76, U+7a81, U+7c73, U+7d75, U+7dd2, U+82e5, U+82f1, U+85ac, U+888b, U+899a, U+8a31, U+8a8c, U+8ab0,
    U+8b58, U+904a, U+9060, U+9280, U+95b2, U+984d, U+9ce5, U+ff18;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.106.woff2) format('woff2');
  unicode-range:
    U+30f6, U+50ac, U+5178, U+51e6, U+5224, U+52dd, U+5883, U+5897, U+590f, U+5a5a, U+5bb3, U+5c65, U+5e03, U+5e2b,
    U+5e30, U+5eb7, U+6271, U+63f4, U+64ae, U+6574, U+672b, U+679a, U+6a29-6a2a, U+6ca2, U+6cc1, U+6d0b, U+713c, U+74b0,
    U+7981, U+7a0b, U+7bc0, U+7d1a, U+7d61, U+7fd2, U+822c, U+8996, U+89aa, U+8cac, U+8cbb, U+8d77, U+8def, U+9020,
    U+9152, U+9244, U+9662, U+967a, U+96e3, U+9759, U+ff16;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.107.woff2) format('woff2');
  unicode-range:
    U+23, U+3c, U+2192, U+4e45, U+4efb, U+4f50, U+4f8b, U+4fc2, U+5024, U+5150, U+5272, U+5370, U+53bb, U+542b, U+56db,
    U+56e3, U+57ce, U+5bc4, U+5bcc, U+5f71, U+60aa, U+6238, U+6280, U+629c, U+6539, U+66ff, U+670d, U+677e-677f, U+6839,
    U+69cb, U+6b4c, U+6bb5, U+6e96, U+6f14, U+72ec, U+7389, U+7814, U+79cb, U+79d1, U+79fb, U+7a0e, U+7d0d, U+85e4,
    U+8d64, U+9632, U+96e2, U+9805, U+99ac, U+ff1e;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.108.woff2) format('woff2');
  unicode-range:
    U+2605-2606, U+301c, U+4e57, U+4fee, U+5065, U+52df, U+533b, U+5357, U+57df, U+58eb, U+58f0, U+591c, U+592a-592b,
    U+5948, U+5b85, U+5d0e, U+5ea7, U+5ff5, U+6025, U+63a1, U+63a5, U+63db, U+643a, U+65bd, U+671d, U+68ee, U+6982,
    U+6b73, U+6bd4, U+6d88, U+7570, U+7b11, U+7d76, U+8077, U+8217, U+8c37, U+8c61, U+8cc7, U+8d85, U+901f, U+962a,
    U+9802, U+9806, U+9854, U+98f2, U+9928, U+99c5, U+9ed2;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.109.woff2) format('woff2');
  unicode-range:
    U+266a, U+4f11, U+533a, U+5343, U+534a, U+53cd, U+5404, U+56f3, U+5b57-5b58, U+5bae, U+5c4a, U+5e0c, U+5e2f, U+5eab,
    U+5f35, U+5f79, U+614b, U+6226, U+629e, U+65c5, U+6625, U+6751, U+6821, U+6b69, U+6b8b, U+6bce, U+6c42, U+706b,
    U+7c21, U+7cfb, U+805e, U+80b2, U+82b8, U+843d, U+8853, U+88c5, U+8a3c, U+8a66, U+8d8a, U+8fba, U+9069, U+91cf,
    U+9752, U+975e, U+9999, U+ff0f-ff10, U+ff14-ff15;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.110.woff2) format('woff2');
  unicode-range:
    U+40, U+4e86, U+4e95, U+4f01, U+4f1d, U+4fbf, U+5099, U+5171, U+5177, U+53cb, U+53ce, U+53f0, U+5668, U+5712,
    U+5ba4, U+5ca1, U+5f85, U+60f3, U+653e, U+65ad, U+65e9, U+6620, U+6750, U+6761, U+6b62, U+6b74, U+6e08, U+6e80,
    U+7248, U+7531, U+7533, U+753a, U+77f3, U+798f, U+7f6e, U+8449, U+88fd, U+89b3, U+8a55, U+8ac7, U+8b77, U+8db3,
    U+8efd, U+8fd4, U+9031-9032, U+9580, U+9589, U+96d1, U+985e;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.111.woff2) format('woff2');
  unicode-range:
    U+2b, U+d7, U+300e-300f, U+4e07, U+4e8c, U+512a, U+5149, U+518d, U+5236, U+52b9, U+52d9, U+5468, U+578b, U+57fa,
    U+5b8c, U+5ba2, U+5c02, U+5de5, U+5f37, U+5f62, U+623b, U+63d0, U+652f, U+672a, U+6848, U+6d41, U+7136, U+7537,
    U+754c, U+76f4, U+79c1, U+7ba1, U+7d44, U+7d4c, U+7dcf, U+7dda, U+7de8, U+82b1, U+897f, U+8ca9, U+8cfc, U+904e,
    U+9664, U+982d, U+9858, U+98a8, U+9a13, U+ff13, U+ff5c;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.112.woff2) format('woff2');
  unicode-range:
    U+4e16, U+4e3b, U+4ea4, U+4ee4, U+4f4d, U+4f4f, U+4f55, U+4f9b, U+5317, U+5358, U+53c2, U+53e4, U+548c, U+571f,
    U+59cb, U+5cf6, U+5e38, U+63a2, U+63b2, U+6559, U+662d, U+679c, U+6c7a, U+72b6, U+7523, U+767d, U+770c, U+7a2e,
    U+7a3f, U+7a7a, U+7b2c, U+7b49, U+7d20, U+7d42, U+8003, U+8272, U+8a08, U+8aac, U+8cb7, U+8eab, U+8ee2, U+9054-9055,
    U+90fd, U+914d, U+91cd, U+969b, U+97f3, U+984c, U+ff06;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.113.woff2) format('woff2');
  unicode-range:
    U+26, U+5f, U+2026, U+203b, U+4e09, U+4eac, U+4ed5, U+4fa1, U+5143, U+5199, U+5207, U+539f, U+53e3, U+53f7, U+5411,
    U+5473, U+5546, U+55b6, U+5929, U+597d, U+5bb9, U+5c11, U+5c4b, U+5ddd, U+5f97, U+5fc5, U+6295, U+6301, U+6307,
    U+671b, U+76f8, U+78ba, U+795e, U+7d30, U+7d39, U+7d9a, U+89e3, U+8a00, U+8a73, U+8a8d, U+8a9e, U+8aad, U+8abf,
    U+8cea, U+8eca, U+8ffd, U+904b, U+9650, U+ff11-ff12;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.114.woff2) format('woff2');
  unicode-range:
    U+3e, U+3005, U+4e0d, U+4e88, U+4ecb, U+4ee3, U+4ef6, U+4fdd, U+4fe1, U+500b, U+50cf, U+5186, U+5316, U+53d7,
    U+540c, U+544a, U+54e1, U+5728, U+58f2, U+5973, U+5b89, U+5c71, U+5e02, U+5e97, U+5f15, U+5fc3, U+5fdc, U+601d,
    U+611b, U+611f, U+671f, U+6728, U+6765, U+683c, U+6b21, U+6ce8, U+6d3b, U+6d77, U+7530, U+7740, U+7acb, U+7d50,
    U+826f, U+8f09, U+8fbc, U+9001, U+9053, U+91ce, U+9762, U+98df;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.115.woff2) format('woff2');
  unicode-range:
    U+7c, U+3080, U+4ee5, U+5148, U+516c, U+521d, U+5225, U+529b, U+52a0, U+53ef, U+56de, U+56fd, U+5909, U+591a,
    U+5b66, U+5b9f, U+5bb6, U+5bfe, U+5e73, U+5e83, U+5ea6, U+5f53, U+6027, U+610f, U+6210, U+6240, U+660e, U+66f4,
    U+66f8, U+6709, U+6771, U+697d, U+69d8, U+6a5f, U+6c34, U+6cbb, U+73fe, U+756a, U+7684, U+771f, U+793a, U+7f8e,
    U+898f, U+8a2d, U+8a71, U+8fd1, U+9078, U+9577, U+96fb, U+ff5e;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.116.woff2) format('woff2');
  unicode-range:
    U+a9, U+3010-3011, U+30e2, U+4e0b, U+4eca, U+4ed6, U+4ed8, U+4f53, U+4f5c, U+4f7f, U+53d6, U+540d, U+54c1, U+5730,
    U+5916, U+5b50, U+5c0f, U+5f8c, U+624b, U+6570, U+6587, U+6599, U+691c, U+696d, U+6cd5, U+7269, U+7279, U+7406,
    U+767a-767b, U+77e5, U+7d04, U+7d22, U+8005, U+80fd, U+81ea, U+8868, U+8981, U+89a7, U+901a, U+9023, U+90e8, U+91d1,
    U+9332, U+958b, U+96c6, U+9ad8, U+ff1a, U+ff1f;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.117.woff2) format('woff2');
  unicode-range:
    U+4e, U+a0, U+3000, U+300c-300d, U+4e00, U+4e0a, U+4e2d, U+4e8b, U+4eba, U+4f1a, U+5165, U+5168, U+5185, U+51fa,
    U+5206, U+5229, U+524d, U+52d5, U+5408, U+554f, U+5831, U+5834, U+5927, U+5b9a, U+5e74, U+5f0f, U+60c5, U+65b0,
    U+65b9, U+6642, U+6700, U+672c, U+682a, U+6b63, U+6c17, U+7121, U+751f, U+7528, U+753b, U+76ee, U+793e, U+884c,
    U+898b, U+8a18, U+9593, U+95a2, U+ff01, U+ff08-ff09;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.118.woff2) format('woff2');
  unicode-range:
    U+21-22, U+27-2a, U+2c-3b, U+3f, U+41-4d, U+4f-5d, U+61-7b, U+7d, U+ab, U+ae, U+b2-b3, U+b7, U+bb, U+c9, U+cd, U+d6,
    U+d8, U+dc, U+e0-e5, U+e7-ed, U+ef, U+f1-f4, U+f6, U+f8, U+fa, U+fc-fd, U+103, U+14d, U+1b0, U+300-301, U+1ebf,
    U+1ec7, U+2013-2014, U+201c-201d, U+2039-203a, U+203c, U+2048-2049, U+2113, U+2122, U+65e5, U+6708, U+70b9;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFowwII2lcnk-AFfrgQrvWXpdFg3KXxAMsKMbdN.119.woff2) format('woff2');
  unicode-range:
    U+20, U+2027, U+3001-3002, U+3041-307f, U+3081-308f, U+3091-3093, U+3099-309a, U+309d-309e, U+30a1-30e1,
    U+30e3-30ed, U+30ef-30f0, U+30f2-30f4, U+30fb-30fe, U+ff0c, U+ff0e;
}
/* cyrillic */
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFYxQgP-FVth9IU.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFYzggP-FVth9IU.woff2) format('woff2');
  unicode-range:
    U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309,
    U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFYzwgP-FVth9IU.woff2) format('woff2');
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
    U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/noto-sans-jp/-F62fjtqLzI2JPCgQBnw7HFYwQgP-FVthw.woff2) format('woff2');
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC,
    U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.0.woff2)
    format('woff2');
  unicode-range:
    U+25ee8, U+25f23, U+25f5c, U+25fd4, U+25fe0, U+25ffb, U+2600c, U+26017, U+26060, U+260ed, U+26222, U+2626a, U+26270,
    U+26286, U+2634c, U+26402, U+2667e, U+266b0, U+2671d, U+268dd, U+268ea, U+26951, U+2696f, U+26999, U+269dd, U+26a1e,
    U+26a58, U+26a8c, U+26ab7, U+26aff, U+26c29, U+26c73, U+26c9e, U+26cdd, U+26e40, U+26e65, U+26f94, U+26ff6-26ff8,
    U+270f4, U+2710d, U+27139, U+273da-273db, U+273fe, U+27410, U+27449, U+27614-27615, U+27631, U+27684, U+27693,
    U+2770e, U+27723, U+27752, U+278b2, U+27985, U+279b4, U+27a84, U+27bb3, U+27bbe, U+27bc7, U+27c3c, U+27cb8, U+27d73,
    U+27da0, U+27e10, U+27eaf, U+27fb7, U+2808a, U+280bb, U+28277, U+28282, U+282f3, U+283cd, U+2840c, U+28455, U+284dc,
    U+2856b, U+285c8-285c9, U+286d7, U+286fa, U+28946, U+28949, U+2896b, U+28987-28988, U+289ba-289bb, U+28a1e, U+28a29,
    U+28a43, U+28a71, U+28a99, U+28acd, U+28add, U+28ae4, U+28bc1, U+28bef, U+28cdd, U+28d10, U+28d71, U+28dfb, U+28e0f,
    U+28e17, U+28e1f, U+28e36, U+28e89, U+28eeb, U+28ef6, U+28f32, U+28ff8, U+292a0, U+292b1, U+29490, U+295cf, U+2967f,
    U+296f0, U+29719, U+29750, U+29810, U+298c6, U+29a72, U+29d4b, U+29ddb, U+29e15, U+29e3d, U+29e49, U+29e8a, U+29ec4,
    U+29edb, U+29ee9, U+29fce, U+29fd7, U+2a01a, U+2a02f, U+2a082, U+2a0f9, U+2a190, U+2a2b2, U+2a38c, U+2a437, U+2a5f1,
    U+2a602, U+2a61a, U+2a6b2, U+2a9e6, U+2b746, U+2b751, U+2b753, U+2b75a, U+2b75c, U+2b765, U+2b776-2b777, U+2b77c,
    U+2b782, U+2b789, U+2b78b, U+2b78e, U+2b794, U+2b7ac, U+2b7af, U+2b7bd, U+2b7c9, U+2b7cf, U+2b7d2, U+2b7d8, U+2b7f0,
    U+2b80d, U+2b817, U+2b81a, U+2d544, U+2e278, U+2e569, U+2e6ea, U+2f804, U+2f80f, U+2f815, U+2f818, U+2f81a, U+2f822,
    U+2f828, U+2f82c, U+2f833, U+2f83f, U+2f846, U+2f852, U+2f862, U+2f86d, U+2f873, U+2f877, U+2f884, U+2f899-2f89a,
    U+2f8a6, U+2f8ac, U+2f8b2, U+2f8b6, U+2f8d3, U+2f8db-2f8dc, U+2f8e1, U+2f8e5, U+2f8ea, U+2f8ed, U+2f8fc, U+2f903,
    U+2f90b, U+2f90f, U+2f91a, U+2f920-2f921, U+2f945, U+2f947, U+2f96c, U+2f995, U+2f9d0, U+2f9de-2f9df, U+2f9f4;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.1.woff2)
    format('woff2');
  unicode-range:
    U+1f235-1f23b, U+1f240-1f248, U+1f250-1f251, U+2000b, U+20089-2008a, U+200a2, U+200a4, U+200b0, U+200f5, U+20158,
    U+201a2, U+20213, U+2032b, U+20371, U+20381, U+203f9, U+2044a, U+20509, U+2053f, U+205b1, U+205d6, U+20611, U+20628,
    U+206ec, U+2074f, U+207c8, U+20807, U+2083a, U+208b9, U+2090e, U+2097c, U+20984, U+2099d, U+20a64, U+20ad3, U+20b1d,
    U+20b9f, U+20bb7, U+20d45, U+20d58, U+20de1, U+20e64, U+20e6d, U+20e95, U+20f5f, U+21201, U+2123d, U+21255, U+21274,
    U+2127b, U+212d7, U+212e4, U+212fd, U+2131b, U+21336, U+21344, U+213c4, U+2146d-2146e, U+215d7, U+21647, U+216b4,
    U+21706, U+21742, U+218bd, U+219c3, U+21a1a, U+21c56, U+21d2d, U+21d45, U+21d62, U+21d78, U+21d92, U+21d9c, U+21da1,
    U+21db7, U+21de0, U+21e33-21e34, U+21f1e, U+21f76, U+21ffa, U+2217b, U+22218, U+2231e, U+223ad, U+22609, U+226f3,
    U+2285b, U+228ab, U+2298f, U+22ab8, U+22b46, U+22b4f-22b50, U+22ba6, U+22c1d, U+22c24, U+22de1, U+22e42, U+22feb,
    U+231b6, U+231c3-231c4, U+231f5, U+23372, U+233cc, U+233d0, U+233d2-233d3, U+233d5, U+233da, U+233df, U+233e4,
    U+233fe, U+2344a-2344b, U+23451, U+23465, U+234e4, U+2355a, U+23594, U+235c4, U+23638-2363a, U+23647, U+2370c,
    U+2371c, U+2373f, U+23763-23764, U+237e7, U+237f1, U+237ff, U+23824, U+2383d, U+23a98, U+23c7f, U+23cbe, U+23cfe,
    U+23d00, U+23d0e, U+23d40, U+23dd3, U+23df9-23dfa, U+23f7e, U+2404b, U+24096, U+24103, U+241c6, U+241fe, U+242ee,
    U+243bc, U+243d0, U+24629, U+246a5, U+247f1, U+24896, U+248e9, U+24a4d, U+24b56, U+24b6f, U+24c16, U+24d14, U+24e04,
    U+24e0e, U+24e37, U+24e6a, U+24e8b, U+24ff2, U+2504a, U+25055, U+25122, U+251a9, U+251cd, U+251e5, U+2521e, U+2524c,
    U+2542e, U+2548e, U+254d9, U+2550e, U+255a7, U+2567f, U+25771, U+257a9, U+257b4, U+25874, U+259c4, U+259cc, U+259d4,
    U+25ad7, U+25ae3-25ae4, U+25af1, U+25bb2, U+25c4b, U+25c64, U+25da1, U+25e2e, U+25e56, U+25e62, U+25e65, U+25ec2,
    U+25ed8;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.2.woff2)
    format('woff2');
  unicode-range:
    U+ffd7, U+ffda-ffdc, U+ffe0-ffe2, U+ffe4, U+ffe6, U+ffe8-ffee, U+1f100-1f10c, U+1f110-1f16c, U+1f170-1f1ac,
    U+1f200-1f202, U+1f210-1f234;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.3.woff2)
    format('woff2');
  unicode-range:
    U+fa10, U+fa12-fa6d, U+fb00-fb04, U+fe10-fe19, U+fe30-fe42, U+fe44-fe52, U+fe54-fe66, U+fe68-fe6b, U+ff02, U+ff04,
    U+ff07, U+ff51, U+ff5b, U+ff5d, U+ff5f-ff60, U+ff66, U+ff69, U+ff87, U+ffa1-ffbe, U+ffc2-ffc7, U+ffca-ffcf,
    U+ffd2-ffd6;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.4.woff2)
    format('woff2');
  unicode-range: U+f92d-f959, U+f95b-f9f2, U+f9f4-fa0b, U+fa0e-fa0f;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.5.woff2)
    format('woff2');
  unicode-range:
    U+9e8b-9e8c, U+9e8e-9e8f, U+9e91-9e92, U+9e95-9e96, U+9e98, U+9e9b, U+9e9d-9e9e, U+9ea4-9ea5, U+9ea8-9eaa,
    U+9eac-9eb0, U+9eb3-9eb5, U+9eb8, U+9ebc-9ebf, U+9ec3, U+9ec6, U+9ec8, U+9ecb-9ecd, U+9ecf-9ed1, U+9ed4-9ed5,
    U+9ed8, U+9edb-9ee0, U+9ee4-9ee5, U+9ee7-9ee8, U+9eec-9ef2, U+9ef4-9ef9, U+9efb-9eff, U+9f02-9f03, U+9f07-9f09,
    U+9f0e-9f12, U+9f14-9f17, U+9f19-9f1b, U+9f1f-9f22, U+9f26, U+9f2a-9f2c, U+9f2f, U+9f31-9f32, U+9f34, U+9f37,
    U+9f39-9f3a, U+9f3c-9f3f, U+9f41, U+9f43-9f47, U+9f4a, U+9f4e-9f50, U+9f52-9f58, U+9f5a, U+9f5d-9f61, U+9f63,
    U+9f66-9f6a, U+9f6c-9f73, U+9f75-9f77, U+9f7a, U+9f7d, U+9f7f, U+9f8f-9f92, U+9f94-9f97, U+9f99, U+9f9c-9fa3,
    U+9fa5, U+9fb4, U+9fbc-9fc2, U+9fc4, U+9fc6, U+9fcc, U+f900-f92c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.6.woff2)
    format('woff2');
  unicode-range:
    U+9c3e, U+9c41, U+9c43-9c4a, U+9c4e-9c50, U+9c52-9c54, U+9c56, U+9c58, U+9c5a-9c61, U+9c63, U+9c65, U+9c67-9c6b,
    U+9c6d-9c6e, U+9c70, U+9c72, U+9c75-9c78, U+9c7a-9c7c, U+9ce6-9ce7, U+9ceb-9cec, U+9cf0, U+9cf2, U+9cf6-9cf7,
    U+9cf9, U+9d02-9d03, U+9d06-9d09, U+9d0b, U+9d0e, U+9d11-9d12, U+9d15, U+9d17-9d18, U+9d1b-9d1f, U+9d23, U+9d26,
    U+9d2a-9d2c, U+9d2f-9d30, U+9d32-9d34, U+9d3a, U+9d3c-9d3f, U+9d41-9d48, U+9d4a, U+9d50-9d54, U+9d59, U+9d5d-9d65,
    U+9d69-9d6c, U+9d6f-9d70, U+9d72-9d73, U+9d76-9d77, U+9d7a-9d7c, U+9d7e, U+9d83-9d84, U+9d86-9d87, U+9d89-9d8a,
    U+9d8d-9d8e, U+9d92-9d93, U+9d95-9d9a, U+9da1, U+9da4, U+9da9-9dac, U+9dae, U+9db1-9db2, U+9db5, U+9db8-9dbd,
    U+9dbf-9dc4, U+9dc6-9dc7, U+9dc9-9dca, U+9dcf, U+9dd3-9dd7, U+9dd9-9dda, U+9dde-9de0, U+9de3, U+9de5-9de7, U+9de9,
    U+9deb, U+9ded-9df0, U+9df3-9df4, U+9df8, U+9dfd-9dfe, U+9e02, U+9e07, U+9e0a, U+9e0d-9e0e, U+9e10-9e12,
    U+9e15-9e16, U+9e19-9e1f, U+9e75, U+9e79-9e7d, U+9e80-9e85, U+9e87-9e88;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.7.woff2)
    format('woff2');
  unicode-range:
    U+9ae5-9ae7, U+9ae9, U+9aeb-9aec, U+9aee-9aef, U+9af1-9af5, U+9af7, U+9af9-9afb, U+9afd, U+9aff-9b06, U+9b08-9b09,
    U+9b0b-9b0e, U+9b10, U+9b12, U+9b16, U+9b18-9b1d, U+9b1f-9b20, U+9b22-9b23, U+9b25-9b2f, U+9b32-9b35, U+9b37,
    U+9b39-9b3b, U+9b3d, U+9b43-9b44, U+9b48, U+9b4b-9b4f, U+9b51, U+9b55-9b58, U+9b5b, U+9b5e, U+9b61, U+9b63,
    U+9b65-9b66, U+9b68, U+9b6a-9b6f, U+9b72-9b79, U+9b7f-9b80, U+9b83-9b87, U+9b89-9b8b, U+9b8d, U+9b8f-9b94,
    U+9b96-9b97, U+9b9a, U+9b9d-9ba0, U+9ba6-9ba7, U+9ba9-9baa, U+9bac, U+9bb0-9bb2, U+9bb4, U+9bb7-9bb9, U+9bbb-9bbc,
    U+9bbe-9bc1, U+9bc6-9bc8, U+9bca, U+9bce-9bd2, U+9bd4, U+9bd7-9bd8, U+9bdd, U+9bdf, U+9be1-9be5, U+9be7,
    U+9bea-9beb, U+9bee-9bf3, U+9bf5, U+9bf7-9bfa, U+9bfd, U+9bff-9c00, U+9c02, U+9c04, U+9c06, U+9c08-9c0d,
    U+9c0f-9c16, U+9c18-9c1e, U+9c21-9c2a, U+9c2d-9c32, U+9c35-9c37, U+9c39-9c3a, U+9c3d;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.8.woff2)
    format('woff2');
  unicode-range:
    U+98eb, U+98ed-98ee, U+98f0-98f1, U+98f3, U+98f6, U+9902, U+9907-9909, U+9911-9912, U+9914-9918, U+991a-9922,
    U+9924, U+9926-9927, U+992b-992c, U+992e, U+9931-9935, U+9939-993e, U+9940-9942, U+9945-9949, U+994b-994e,
    U+9950-9952, U+9954-9955, U+9958-9959, U+995b-995c, U+995e-9960, U+9963, U+9997-9998, U+999b, U+999d-999f, U+99a3,
    U+99a5-99a6, U+99a8, U+99ad-99ae, U+99b0-99b2, U+99b5, U+99b9-99ba, U+99bc-99bd, U+99bf, U+99c1, U+99c3,
    U+99c8-99c9, U+99d1, U+99d3-99d5, U+99d8-99df, U+99e1-99e2, U+99e7, U+99ea-99ee, U+99f0-99f2, U+99f4-99f5,
    U+99f8-99f9, U+99fb-99fe, U+9a01-9a05, U+9a08, U+9a0a-9a0c, U+9a0f-9a11, U+9a16, U+9a1a, U+9a1e, U+9a20,
    U+9a22-9a24, U+9a27, U+9a2b, U+9a2d-9a2e, U+9a31, U+9a33, U+9a35-9a38, U+9a3e, U+9a40-9a45, U+9a47, U+9a4a-9a4e,
    U+9a51-9a52, U+9a54-9a58, U+9a5b, U+9a5d, U+9a5f, U+9a62, U+9a64-9a65, U+9a69-9a6c, U+9aaa, U+9aac-9ab0, U+9ab2,
    U+9ab4-9ab7, U+9ab9, U+9abb-9ac1, U+9ac3, U+9ac6, U+9ac8, U+9ace-9ad3, U+9ad5-9ad7, U+9adb-9adc, U+9ade-9ae0,
    U+9ae2-9ae4;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.9.woff2)
    format('woff2');
  unicode-range:
    U+971d, U+9721-9724, U+9728, U+972a, U+9730-9731, U+9733, U+9736, U+9738-9739, U+973b, U+973d-973e, U+9741-9744,
    U+9746-974a, U+974d-974f, U+9751, U+9755, U+9757-9758, U+975a-975c, U+9760-9761, U+9763-9764, U+9766-9768,
    U+976a-976b, U+976e, U+9771, U+9773, U+9776-977d, U+977f-9781, U+9785-9786, U+9789, U+978b, U+978f-9790,
    U+9795-9797, U+9799-979a, U+979c, U+979e-97a0, U+97a2-97a3, U+97a6, U+97a8, U+97ab-97ac, U+97ae, U+97b1-97b6,
    U+97b8-97ba, U+97bc, U+97be-97bf, U+97c1, U+97c3-97ce, U+97d0-97d1, U+97d4, U+97d7-97d9, U+97db-97de, U+97e0-97e1,
    U+97e4, U+97e6, U+97ed-97ef, U+97f1-97f2, U+97f4-97f8, U+97fa, U+9804, U+9807, U+980a, U+980c-980f, U+9814,
    U+9816-9817, U+9819-981a, U+981c, U+981e, U+9820-9821, U+9823-9826, U+982b, U+982e-9830, U+9832-9835, U+9837,
    U+9839, U+983d-983e, U+9844, U+9846-9847, U+984a-984b, U+984f, U+9851-9853, U+9856-9857, U+9859-985b, U+9862-9863,
    U+9865-9866, U+986a-986c, U+986f-9871, U+9873-9875, U+98aa-98ab, U+98ad-98ae, U+98b0-98b1, U+98b4, U+98b6-98b8,
    U+98ba-98bc, U+98bf, U+98c2-98c8, U+98cb-98cc, U+98ce, U+98dc, U+98de, U+98e0-98e1, U+98e3, U+98e5-98e7, U+98e9-98ea;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.10.woff2)
    format('woff2');
  unicode-range:
    U+944a, U+944c, U+9452-9453, U+9455, U+9459-945c, U+945e-9463, U+9468, U+946a-946b, U+946d-9472, U+9475, U+9477,
    U+947c-947f, U+9481, U+9483-9485, U+9578-9579, U+957e-957f, U+9582, U+9584, U+9586-9588, U+958a, U+958c-958f,
    U+9592, U+9594, U+9596, U+9598-9599, U+959d-95a1, U+95a4, U+95a6-95a9, U+95ab-95ad, U+95b1, U+95b4, U+95b6,
    U+95b9-95bf, U+95c3, U+95c6, U+95c8-95cd, U+95d0-95d6, U+95d9-95da, U+95dc-95e2, U+95e4-95e6, U+95e8, U+961d-961e,
    U+9621-9622, U+9624-9626, U+9628, U+962c, U+962e-962f, U+9631, U+9633-9634, U+9637-963a, U+963c-963d, U+9641-9642,
    U+964b-964c, U+964f, U+9652, U+9654, U+9656-9658, U+965c-965f, U+9661, U+9666, U+966a, U+966c, U+966e, U+9672,
    U+9674, U+9677, U+967b-967c, U+967e-967f, U+9681-9684, U+9689, U+968b, U+968d, U+9691, U+9695-9698, U+969a, U+969d,
    U+969f, U+96a4-96aa, U+96ae-96b4, U+96b6, U+96b8-96bb, U+96bd, U+96c1, U+96c9-96cb, U+96cd-96ce, U+96d2,
    U+96d5-96d6, U+96d8-96da, U+96dc-96df, U+96e9, U+96ef, U+96f1, U+96f9-96fa, U+9702-9706, U+9708-9709, U+970d-970f,
    U+9711, U+9713-9714, U+9716, U+9719-971b;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.11.woff2)
    format('woff2');
  unicode-range:
    U+92bc-92bd, U+92bf-92c3, U+92c5-92c8, U+92cb-92d0, U+92d2-92d3, U+92d5, U+92d7-92d9, U+92dc-92dd, U+92df-92e1,
    U+92e3-92e5, U+92e7-92ea, U+92ec, U+92ee, U+92f0, U+92f2, U+92f7-92fb, U+92ff-9300, U+9302, U+9304, U+9308, U+930d,
    U+930f-9311, U+9314-9315, U+9318-931a, U+931c-931f, U+9321-9325, U+9327-932b, U+932e, U+9333-9337, U+933a-933b,
    U+9344, U+9347-934a, U+934d, U+9350-9352, U+9354-9358, U+935a, U+935c, U+935e, U+9360, U+9364-9365, U+9367,
    U+9369-936d, U+936f-9371, U+9373-9374, U+9376, U+937a, U+937d-9382, U+9388, U+938a-938b, U+938d, U+938f, U+9392,
    U+9394-9395, U+9397-9398, U+939a-939b, U+939e, U+93a1, U+93a3-93a4, U+93a6, U+93a8-93a9, U+93ab-93ad, U+93b0,
    U+93b4-93b6, U+93b9-93bb, U+93c1, U+93c3-93cd, U+93d0-93d1, U+93d3, U+93d6-93d9, U+93dc-93df, U+93e2, U+93e4-93e8,
    U+93f1, U+93f5, U+93f7-93fb, U+93fd, U+9401-9404, U+9407-9409, U+940d-9410, U+9413-9417, U+9419-941a, U+941f,
    U+9421, U+942b, U+942e-942f, U+9431-9434, U+9436, U+9438, U+943a-943b, U+943d, U+943f, U+9441, U+9443-9445, U+9448;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.12.woff2)
    format('woff2');
  unicode-range:
    U+9143, U+9146-914c, U+914f, U+9153, U+9156-915b, U+9161, U+9163-9165, U+9167, U+9169, U+916d, U+9172-9174,
    U+9179-917b, U+9181-9183, U+9185-9187, U+9189-918b, U+918e, U+9191, U+9193-9195, U+9197-9198, U+919e, U+91a1-91a2,
    U+91a6, U+91a8, U+91aa-91b6, U+91ba-91bd, U+91bf-91c6, U+91c9, U+91cb, U+91d0, U+91d3-91d4, U+91d6-91d7,
    U+91d9-91db, U+91de-91df, U+91e1, U+91e4-91e6, U+91e9-91ea, U+91ec-91f1, U+91f5-91f7, U+91f9, U+91fb-91fd,
    U+91ff-9201, U+9204-9207, U+9209-920a, U+920c, U+920e, U+9210-9218, U+921c-921e, U+9223-9226, U+9228-9229, U+922c,
    U+922e-9230, U+9233, U+9235-923a, U+923c, U+923e-9240, U+9242-9243, U+9245-924b, U+924d-9251, U+9256-925a,
    U+925c-925e, U+9260-9261, U+9264-9269, U+926e-9270, U+9275-9279, U+927b-927f, U+9288-928a, U+928d-928e, U+9291-9293,
    U+9295-9297, U+9299, U+929b-929c, U+929f-92a0, U+92a4-92a5, U+92a7-92a8, U+92ab, U+92af, U+92b2-92b3, U+92b6-92bb;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.13.woff2)
    format('woff2');
  unicode-range:
    U+8f52-8f55, U+8f57-8f58, U+8f5c-8f5e, U+8f61-8f66, U+8f9c-8f9d, U+8f9f-8fa2, U+8fa4-8fa8, U+8fad-8faf, U+8fb4-8fb8,
    U+8fbe, U+8fc0-8fc2, U+8fc6, U+8fc8, U+8fca-8fcb, U+8fcd, U+8fd0, U+8fd2-8fd3, U+8fd5, U+8fda, U+8fe0, U+8fe2-8fe5,
    U+8fe8-8fea, U+8fed-8fef, U+8ff1, U+8ff4-8ff6, U+8ff8-8ffb, U+8ffe, U+9002, U+9004-9005, U+9008, U+900b-900e,
    U+9011, U+9013, U+9015-9016, U+9018, U+901b, U+901e, U+9021, U+9027-902a, U+902c-902d, U+902f, U+9033-9037, U+9039,
    U+903c, U+903e-903f, U+9041, U+9043-9044, U+9049, U+904c, U+904f-9052, U+9056, U+9058, U+905b-905e, U+9062,
    U+9066-9068, U+906c, U+906f-9070, U+9072, U+9074, U+9076, U+9079, U+9080-9083, U+9085, U+9087-9088, U+908b-908c,
    U+908e-9090, U+9095, U+9097-9099, U+909b, U+90a0-90a2, U+90a5, U+90a8, U+90af-90b6, U+90bd-90be, U+90c3-90c5,
    U+90c7-90c9, U+90cc, U+90d2, U+90d5, U+90d7-90d9, U+90db-90df, U+90e2, U+90e4-90e5, U+90eb, U+90ef-90f0, U+90f2,
    U+90f4, U+90f6, U+90fe-9100, U+9102, U+9104-9106, U+9108, U+910d, U+9110, U+9112, U+9114-911a, U+911c, U+911e,
    U+9120, U+9122-9123, U+9125, U+9127, U+9129, U+912d-9132, U+9134, U+9136-9137, U+9139-913a, U+913c-913d;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.14.woff2)
    format('woff2');
  unicode-range:
    U+8dc0, U+8dc2, U+8dc5-8dc8, U+8dca-8dcc, U+8dce-8dcf, U+8dd1, U+8dd4-8dd7, U+8dd9-8ddb, U+8ddf, U+8de3-8de5,
    U+8de7, U+8dea-8dec, U+8df0-8df2, U+8df4, U+8dfc-8dfd, U+8dff, U+8e01, U+8e04-8e06, U+8e08-8e09, U+8e0b-8e0c,
    U+8e10-8e11, U+8e14, U+8e16, U+8e1d-8e23, U+8e26-8e27, U+8e30-8e31, U+8e33-8e39, U+8e3d, U+8e40-8e42, U+8e44,
    U+8e47-8e50, U+8e54-8e55, U+8e59, U+8e5b-8e64, U+8e69, U+8e6c-8e6d, U+8e6f-8e72, U+8e75-8e77, U+8e79-8e7c,
    U+8e81-8e85, U+8e89, U+8e8b, U+8e90-8e95, U+8e98-8e9b, U+8e9d-8e9e, U+8ea1-8ea2, U+8ea7, U+8ea9-8eaa, U+8eac-8eb1,
    U+8eb3, U+8eb5-8eb6, U+8eba-8ebb, U+8ebe, U+8ec0-8ec1, U+8ec3-8ec8, U+8ecb, U+8ecf, U+8ed1, U+8ed4, U+8edb-8edc,
    U+8ee3, U+8ee8, U+8eeb, U+8eed-8eee, U+8ef0-8ef1, U+8ef7, U+8ef9-8efc, U+8efe, U+8f00, U+8f02, U+8f05, U+8f07-8f08,
    U+8f0a, U+8f0f-8f10, U+8f12-8f13, U+8f15-8f19, U+8f1b-8f1c, U+8f1e-8f21, U+8f23, U+8f25-8f28, U+8f2b-8f2f,
    U+8f33-8f37, U+8f39-8f3b, U+8f3e, U+8f40-8f43, U+8f45-8f47, U+8f49-8f4a, U+8f4c-8f4f, U+8f51;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.15.woff2)
    format('woff2');
  unicode-range:
    U+8b2d, U+8b30, U+8b37, U+8b3c, U+8b3e, U+8b41-8b46, U+8b48-8b49, U+8b4c-8b4f, U+8b51-8b54, U+8b56, U+8b59, U+8b5b,
    U+8b5e-8b5f, U+8b63, U+8b69, U+8b6b-8b6d, U+8b6f, U+8b71, U+8b74, U+8b76, U+8b78-8b79, U+8b7c-8b81, U+8b84-8b85,
    U+8b8a-8b8f, U+8b92-8b96, U+8b99-8b9a, U+8b9c-8ba0, U+8c38-8c3a, U+8c3d-8c3f, U+8c41, U+8c45, U+8c47-8c49,
    U+8c4b-8c4c, U+8c4e-8c51, U+8c53-8c55, U+8c57-8c59, U+8c5b, U+8c5d, U+8c62-8c64, U+8c66, U+8c68-8c69, U+8c6b-8c6d,
    U+8c73, U+8c75-8c76, U+8c78, U+8c7a-8c7c, U+8c7e, U+8c82, U+8c85-8c87, U+8c89-8c8b, U+8c8d-8c8e, U+8c90,
    U+8c92-8c94, U+8c98-8c99, U+8c9b-8c9c, U+8c9f, U+8ca4, U+8cad-8cae, U+8cb2-8cb3, U+8cb6, U+8cb9-8cba, U+8cbd,
    U+8cc1-8cc2, U+8cc4-8cc6, U+8cc8-8cc9, U+8ccb, U+8ccd-8ccf, U+8cd2, U+8cd5-8cd6, U+8cd9-8cda, U+8cdd, U+8ce1,
    U+8ce3-8ce4, U+8ce6, U+8ce8, U+8cec, U+8cef-8cf2, U+8cf4-8cf5, U+8cf7-8cf8, U+8cfa-8cfb, U+8cfd-8cff, U+8d01,
    U+8d03-8d04, U+8d07, U+8d09-8d0b, U+8d0d-8d10, U+8d12-8d14, U+8d16-8d17, U+8d1b-8d1d, U+8d65, U+8d67, U+8d69,
    U+8d6b-8d6e, U+8d71, U+8d73, U+8d76, U+8d7f, U+8d81-8d82, U+8d84, U+8d88, U+8d8d, U+8d90-8d91, U+8d95, U+8d99,
    U+8d9e-8da0, U+8da6, U+8da8, U+8dab-8dac, U+8daf, U+8db2, U+8db5, U+8db7, U+8db9-8dbc, U+8dbe;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.16.woff2)
    format('woff2');
  unicode-range:
    U+8973-8975, U+8977, U+897a-897e, U+8980, U+8983, U+8988-898a, U+898d, U+8990, U+8993-8995, U+8998, U+899b-899c,
    U+899f-89a1, U+89a5-89a6, U+89a9, U+89ac, U+89af-89b0, U+89b2, U+89b4-89b7, U+89ba, U+89bc-89bd, U+89bf-89c1,
    U+89d4-89d8, U+89da, U+89dc-89dd, U+89e5, U+89e7, U+89e9, U+89eb, U+89ed, U+89f1, U+89f3-89f4, U+89f6, U+89f8-89f9,
    U+89fd, U+89ff, U+8a01, U+8a04-8a05, U+8a07, U+8a0c, U+8a0f-8a12, U+8a14-8a16, U+8a1b, U+8a1d-8a1e, U+8a20-8a22,
    U+8a24-8a26, U+8a2b-8a2c, U+8a2f, U+8a35-8a37, U+8a3b, U+8a3d-8a3e, U+8a40-8a41, U+8a43, U+8a45-8a49, U+8a4d-8a4e,
    U+8a51-8a54, U+8a56-8a58, U+8a5b-8a5d, U+8a61-8a62, U+8a65, U+8a67, U+8a6c-8a6d, U+8a75-8a77, U+8a79-8a7c,
    U+8a7e-8a80, U+8a82-8a86, U+8a8b, U+8a8f-8a92, U+8a96-8a97, U+8a99-8a9a, U+8a9f, U+8aa1, U+8aa3, U+8aa5-8aaa,
    U+8aae-8aaf, U+8ab3, U+8ab6-8ab7, U+8abb-8abc, U+8abe, U+8ac2-8ac4, U+8ac6, U+8ac8-8aca, U+8acc-8acd, U+8ad0-8ad1,
    U+8ad3-8ad5, U+8ad7, U+8ada-8ae2, U+8ae4, U+8ae7, U+8aeb-8aec, U+8aee, U+8af0-8af1, U+8af3-8af7, U+8afa, U+8afc,
    U+8aff, U+8b01-8b02, U+8b04-8b07, U+8b0a-8b0d, U+8b0f-8b11, U+8b14, U+8b16, U+8b1a, U+8b1c, U+8b1e-8b20, U+8b26,
    U+8b28, U+8b2b-8b2c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.17.woff2)
    format('woff2');
  unicode-range:
    U+87e2-87e6, U+87ea-87ed, U+87ef, U+87f1, U+87f3, U+87f5-87f8, U+87fa-87fb, U+87fe-87ff, U+8801, U+8803,
    U+8805-8807, U+8809-880b, U+880d-8816, U+8818-881c, U+881e-881f, U+8821-8822, U+8827-8828, U+882d-882e, U+8830-8832,
    U+8835-8836, U+8839-883c, U+8841-8845, U+8848-884b, U+884d-884e, U+8851-8852, U+8855-8856, U+8858-885a, U+885c,
    U+885e-8860, U+8862, U+8864, U+8869, U+886b, U+886e-886f, U+8871-8872, U+8875, U+8877, U+8879, U+887b, U+887d-887e,
    U+8880-8882, U+8888, U+888d, U+8892, U+8897-889c, U+889e-88a0, U+88a2, U+88a4, U+88a8, U+88aa, U+88ae, U+88b0-88b1,
    U+88b5, U+88b7, U+88ba, U+88bc-88c0, U+88c3-88c4, U+88c6, U+88ca-88ce, U+88d1-88d4, U+88d8-88d9, U+88db,
    U+88dd-88e1, U+88e7-88e8, U+88ef-88f2, U+88f4-88f5, U+88f7, U+88f9, U+88fc, U+8901-8902, U+8904, U+8906, U+890a,
    U+890c-890f, U+8913, U+8915-8916, U+8918-891a, U+891c-891e, U+8920, U+8925-8928, U+892a-892b, U+8930-8932,
    U+8935-893b, U+893e, U+8940-8946, U+8949, U+894c-894d, U+894f, U+8952, U+8956-8957, U+895a-895c, U+895e,
    U+8960-8964, U+8966, U+896a-896b, U+896d-8970;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.18.woff2)
    format('woff2');
  unicode-range:
    U+8655-8659, U+865b, U+865d-8664, U+8667, U+8669, U+866c, U+866f, U+8671, U+8675-8677, U+867a-867b, U+867d,
    U+8687-8689, U+868b-868d, U+8691, U+8693, U+8695-8696, U+8698, U+869a, U+869c-869d, U+86a1, U+86a3-86a4,
    U+86a6-86ab, U+86ad, U+86af-86b1, U+86b3-86b9, U+86bf-86c1, U+86c3-86c6, U+86c9, U+86cb, U+86ce, U+86d1-86d2,
    U+86d4-86d5, U+86d7, U+86da, U+86dc, U+86de-86e0, U+86e3-86e7, U+86e9, U+86ec-86ed, U+86ef, U+86f8-86fe, U+8700,
    U+8703-870b, U+870d-8714, U+8719-871a, U+871e-871f, U+8721-8723, U+8725, U+8728-8729, U+872e-872f, U+8731-8732,
    U+8734, U+8737, U+8739-8740, U+8743, U+8745, U+8749, U+874b-874e, U+8751, U+8753, U+8755, U+8757-8759, U+875d,
    U+875f-8761, U+8763-8766, U+8768, U+876a, U+876e-876f, U+8771-8772, U+8774, U+8778, U+877b-877c, U+877f,
    U+8782-8789, U+878b-878c, U+878e, U+8790, U+8793, U+8795, U+8797-8799, U+879e-87a0, U+87a2-87a3, U+87a7,
    U+87ab-87af, U+87b1, U+87b3, U+87b5, U+87bb, U+87bd-87c1, U+87c4, U+87c6-87cb, U+87ce, U+87d0, U+87d2, U+87d5-87d6,
    U+87d9-87da, U+87dc, U+87df-87e0;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.19.woff2)
    format('woff2');
  unicode-range:
    U+84b4, U+84b9-84bb, U+84bd-84c2, U+84c6-84ca, U+84cc-84d1, U+84d3, U+84d6, U+84d9-84da, U+84dc, U+84e7, U+84ea,
    U+84ec, U+84ef-84f2, U+84f4, U+84f7, U+84fa-84fd, U+84ff-8500, U+8502-8503, U+8506-8507, U+850c, U+850e, U+8510,
    U+8514-8515, U+8517-8518, U+851a-851c, U+851e-851f, U+8521-8525, U+8527, U+852a-852c, U+852f, U+8532-8534, U+8536,
    U+853e-8541, U+8543, U+8546, U+8548, U+854a-854b, U+854f-8553, U+8555-855a, U+855c-8564, U+8569-856b, U+856d,
    U+856f, U+8577, U+8579-857b, U+857d-8581, U+8585-8586, U+8588-858c, U+858f-8591, U+8593, U+8597-8598, U+859b-859d,
    U+859f-85a0, U+85a2, U+85a4-85a5, U+85a7-85a8, U+85ad-85b0, U+85b4, U+85b6-85ba, U+85bc-85bf, U+85c1-85c2, U+85c7,
    U+85c9-85cb, U+85ce-85d0, U+85d5, U+85d8-85da, U+85dc, U+85df-85e1, U+85e5-85e6, U+85e8, U+85ed, U+85f3-85f4,
    U+85f6-85f7, U+85f9-85fa, U+85fc, U+85fe-8600, U+8602, U+8604-8606, U+860a-860b, U+860d-860e, U+8610-8613,
    U+8616-861b, U+861e, U+8621-8622, U+8624, U+8627, U+8629, U+862f-8630, U+8636, U+8638-863a, U+863c-863d,
    U+863f-8642, U+8646, U+864d, U+8652-8654;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.20.woff2)
    format('woff2');
  unicode-range:
    U+82e8, U+82ea, U+82ed, U+82ef, U+82f3-82f4, U+82f6-82f7, U+82f9, U+82fb, U+82fd-82fe, U+8300-8301, U+8303,
    U+8306-8308, U+830a-830c, U+8316-8318, U+831b, U+831d-831f, U+8321-8323, U+832b-8335, U+8337, U+833a, U+833c-833d,
    U+8340, U+8342-8347, U+834a, U+834d-8351, U+8353-8357, U+835a, U+8362-8363, U+8370, U+8373, U+8375, U+8378,
    U+837c-837d, U+837f-8380, U+8382, U+8384-8387, U+838a, U+838d-838e, U+8392-8396, U+8398-83a0, U+83a2, U+83a6-83ad,
    U+83b1, U+83b5, U+83bd-83c1, U+83c7, U+83c9, U+83ce-83d1, U+83d4, U+83d6, U+83d8, U+83dd, U+83df-83e1, U+83e5,
    U+83e8, U+83ea-83eb, U+83f0, U+83f2, U+83f4, U+83f6-83f9, U+83fb-83fd, U+8401, U+8403-8404, U+8406-8407,
    U+840a-840b, U+840d, U+840f, U+8411, U+8413, U+8415, U+8417, U+8419, U+8420, U+8422, U+842a, U+842f, U+8431, U+8435,
    U+8438-8439, U+843c, U+8445-8448, U+844a, U+844d-844f, U+8451-8452, U+8456, U+8458-845a, U+845c, U+845f-8462,
    U+8464-8467, U+8469-846b, U+846d-8470, U+8473-8474, U+8476-847a, U+847c-847d, U+8481-8482, U+8484-8485, U+848b,
    U+8490, U+8492-8493, U+8495, U+8497, U+849c, U+849e-849f, U+84a1, U+84a6, U+84a8-84aa, U+84ad, U+84af, U+84b1;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.21.woff2)
    format('woff2');
  unicode-range:
    U+814a, U+814c, U+8151-8153, U+8157, U+815f-8161, U+8165-8169, U+816d-816f, U+8171, U+8173-8174, U+8177,
    U+8180-8186, U+8188, U+818a-818b, U+818e, U+8190, U+8193, U+8195-8196, U+8198, U+819b, U+819e, U+81a0, U+81a2,
    U+81a4, U+81a9, U+81ae, U+81b0, U+81b2, U+81b4-81b5, U+81b8, U+81ba-81bb, U+81bd-81be, U+81c0-81c3, U+81c5-81c6,
    U+81c8-81cb, U+81cd-81cf, U+81d1, U+81d5-81db, U+81dd-81e1, U+81e4-81e5, U+81e7, U+81eb-81ec, U+81ef-81f2,
    U+81f5-81f6, U+81f8-81fb, U+81fd-8205, U+8209-820b, U+820d, U+820f, U+8212-8214, U+8216, U+8219-821d, U+8221-8222,
    U+8228-8229, U+822b, U+822e, U+8232-8235, U+8237-8238, U+823a, U+823c, U+8240, U+8243-8246, U+8249, U+824b,
    U+824e-824f, U+8251, U+8256-825a, U+825c-825d, U+825f-8260, U+8262-8264, U+8267-8268, U+826a-826b, U+826d-826e,
    U+8271, U+8274, U+8277, U+8279, U+827b, U+827d-8281, U+8283-8284, U+8287, U+8289-828a, U+828d-828e, U+8291-8294,
    U+8296, U+8298-829b, U+829f-82a1, U+82a3-82a4, U+82a7-82ac, U+82ae, U+82b0, U+82b2, U+82b4, U+82b7, U+82ba-82bc,
    U+82be-82bf, U+82c5-82c6, U+82d0, U+82d2-82d3, U+82d5, U+82d9-82da, U+82dc, U+82de-82e4, U+82e7;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.22.woff2)
    format('woff2');
  unicode-range:
    U+7f77-7f79, U+7f7d-7f80, U+7f82-7f83, U+7f86-7f88, U+7f8b-7f8d, U+7f8f-7f91, U+7f94, U+7f96-7f97, U+7f9a,
    U+7f9c-7f9d, U+7fa1-7fa3, U+7fa6, U+7faa, U+7fad-7faf, U+7fb2, U+7fb4, U+7fb6, U+7fb8-7fb9, U+7fbc, U+7fbf-7fc0,
    U+7fc3, U+7fc5-7fc6, U+7fc8, U+7fca, U+7fce-7fcf, U+7fd5, U+7fdb, U+7fdf, U+7fe1, U+7fe3, U+7fe5-7fe6, U+7fe8-7fe9,
    U+7feb-7fec, U+7fee-7ff0, U+7ff2-7ff3, U+7ff9-7ffa, U+7ffd-7fff, U+8002, U+8004, U+8006-8008, U+800a-800f,
    U+8011-8014, U+8016, U+8018-8019, U+801c-8021, U+8024, U+8026, U+8028, U+802c, U+802e, U+8030, U+8034-8035, U+8037,
    U+8039-8040, U+8043-8044, U+8046, U+804a, U+8052, U+8058, U+805a, U+805f-8060, U+8062, U+8064, U+8066, U+8068,
    U+806d, U+806f-8073, U+8075-8076, U+8079, U+807b, U+807d-8081, U+8084-8088, U+808b, U+808e, U+8093, U+8099-809a,
    U+809c, U+809e, U+80a4, U+80a6-80a7, U+80ab-80ad, U+80b1, U+80b8-80b9, U+80c4-80c5, U+80c8, U+80ca, U+80cd, U+80cf,
    U+80d2, U+80d4-80db, U+80dd, U+80e0, U+80e4-80e6, U+80ed-80f3, U+80f5-80f7, U+80f9-80fc, U+80fe, U+8101, U+8103,
    U+8109, U+810b, U+810d, U+8116-8118, U+811b-811c, U+811e, U+8120, U+8123-8124, U+8127, U+8129, U+812b-812c,
    U+812f-8130, U+8135, U+8139-813a, U+813c-813e, U+8141, U+8145-8147;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.23.woff2)
    format('woff2');
  unicode-range:
    U+7d57, U+7d59-7d5d, U+7d63, U+7d65, U+7d67, U+7d6a, U+7d6e, U+7d70, U+7d72-7d73, U+7d78, U+7d7a-7d7b, U+7d7d,
    U+7d7f, U+7d81-7d83, U+7d85-7d86, U+7d88-7d89, U+7d8b-7d8d, U+7d8f, U+7d91, U+7d93, U+7d96-7d97, U+7d9b-7da0,
    U+7da2-7da3, U+7da6-7da7, U+7daa-7dac, U+7dae-7db0, U+7db3, U+7db5-7db9, U+7dbd, U+7dc0, U+7dc2-7dc7, U+7dcc-7dce,
    U+7dd0, U+7dd5-7dd9, U+7ddc-7dde, U+7de1-7de6, U+7dea-7ded, U+7df1-7df2, U+7df5-7df6, U+7df9-7dfa, U+7e00, U+7e05,
    U+7e08-7e0b, U+7e10-7e12, U+7e15, U+7e17, U+7e1c-7e1d, U+7e1f-7e23, U+7e27-7e28, U+7e2c-7e2d, U+7e2f, U+7e31-7e33,
    U+7e35-7e37, U+7e39-7e3b, U+7e3d, U+7e3f, U+7e43-7e48, U+7e4e, U+7e50, U+7e52, U+7e56, U+7e58-7e5a, U+7e5d-7e5f,
    U+7e61-7e62, U+7e65-7e67, U+7e69-7e6b, U+7e6d-7e6f, U+7e73, U+7e75, U+7e78-7e79, U+7e7b-7e7f, U+7e81-7e83,
    U+7e86-7e8a, U+7e8c-7e8e, U+7e90-7e96, U+7e98, U+7e9a-7e9f, U+7f38, U+7f3a-7f3f, U+7f43-7f45, U+7f47, U+7f4c-7f50,
    U+7f52-7f55, U+7f58, U+7f5b-7f5d, U+7f5f, U+7f61, U+7f63-7f69, U+7f6b, U+7f6d, U+7f71;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.24.woff2)
    format('woff2');
  unicode-range:
    U+7bc8, U+7bca-7bcc, U+7bcf, U+7bd4, U+7bd6-7bd7, U+7bd9-7bdb, U+7bdd, U+7be5-7be6, U+7be8-7bea, U+7bf0,
    U+7bf2-7bfa, U+7bfc, U+7bfe, U+7c00-7c04, U+7c06-7c07, U+7c09, U+7c0b-7c0f, U+7c11-7c14, U+7c17, U+7c19, U+7c1b,
    U+7c1e-7c20, U+7c23, U+7c25-7c28, U+7c2a-7c2c, U+7c2f, U+7c31, U+7c33-7c34, U+7c36-7c3a, U+7c3d-7c3e, U+7c40,
    U+7c42-7c43, U+7c45-7c46, U+7c4a, U+7c4c, U+7c4f-7c5f, U+7c61, U+7c63-7c65, U+7c67, U+7c69, U+7c6c-7c70, U+7c72,
    U+7c75, U+7c79, U+7c7b-7c7e, U+7c81-7c83, U+7c86-7c87, U+7c8d, U+7c8f-7c90, U+7c94, U+7c9e, U+7ca0-7ca2,
    U+7ca4-7ca6, U+7ca8, U+7cab, U+7cad-7cae, U+7cb0-7cb3, U+7cb6-7cb7, U+7cb9-7cbd, U+7cbf-7cc0, U+7cc2, U+7cc4-7cc5,
    U+7cc7-7cca, U+7ccd-7ccf, U+7cd2-7cd5, U+7cd7-7cda, U+7cdc-7cdd, U+7cdf-7ce0, U+7ce2, U+7ce6, U+7ce9, U+7ceb,
    U+7cef, U+7cf2, U+7cf4-7cf6, U+7cf9-7cfa, U+7cfe, U+7d02-7d03, U+7d06-7d0a, U+7d0f, U+7d11-7d13, U+7d15-7d16,
    U+7d1c-7d1e, U+7d23, U+7d26, U+7d2a, U+7d2c-7d2e, U+7d31-7d32, U+7d35, U+7d3c-7d41, U+7d43, U+7d45, U+7d47-7d48,
    U+7d4b, U+7d4d-7d4f, U+7d51, U+7d53, U+7d55-7d56;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.25.woff2)
    format('woff2');
  unicode-range:
    U+7a17-7a19, U+7a1b, U+7a1e-7a21, U+7a27, U+7a2b, U+7a2d, U+7a2f-7a31, U+7a34-7a35, U+7a37-7a3b, U+7a3e,
    U+7a43-7a49, U+7a4c, U+7a4e, U+7a50, U+7a55-7a57, U+7a59, U+7a5c-7a5d, U+7a5f-7a63, U+7a65, U+7a67, U+7a69-7a6a,
    U+7a6d, U+7a70, U+7a75, U+7a78-7a79, U+7a7d-7a7e, U+7a80, U+7a82, U+7a84-7a86, U+7a88, U+7a8a-7a8b, U+7a90-7a91,
    U+7a94-7a98, U+7a9e, U+7aa0, U+7aa3, U+7aa9, U+7aac, U+7ab0, U+7ab3, U+7ab5-7ab6, U+7ab9-7abf, U+7ac3, U+7ac5-7aca,
    U+7acc-7acf, U+7ad1-7ad3, U+7ad5, U+7ada-7adb, U+7add, U+7adf, U+7ae1-7ae2, U+7ae6-7aed, U+7af0-7af1, U+7af4,
    U+7af8, U+7afa-7afb, U+7afd-7afe, U+7b02, U+7b04, U+7b06-7b08, U+7b0a-7b0b, U+7b0f, U+7b12, U+7b14, U+7b18-7b19,
    U+7b1e-7b1f, U+7b23, U+7b25, U+7b27-7b2b, U+7b2d-7b31, U+7b33-7b36, U+7b3b, U+7b3d, U+7b3f-7b41, U+7b45, U+7b47,
    U+7b4c-7b50, U+7b53, U+7b55, U+7b5d, U+7b60, U+7b64-7b66, U+7b69-7b6a, U+7b6c-7b75, U+7b77, U+7b79-7b7a, U+7b7f,
    U+7b84, U+7b86, U+7b89, U+7b8d-7b92, U+7b96, U+7b98-7ba0, U+7ba5, U+7bac-7bad, U+7baf-7bb0, U+7bb2, U+7bb4-7bb6,
    U+7bba-7bbd, U+7bc1-7bc2, U+7bc5-7bc6;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.26.woff2)
    format('woff2');
  unicode-range:
    U+7851-7852, U+785c, U+785e, U+7860-7861, U+7863-7864, U+7868, U+786a, U+786e-786f, U+7872, U+7874, U+787a, U+787c,
    U+787e, U+7886-7887, U+788a, U+788c-788f, U+7893-7895, U+7898, U+789a, U+789d-789f, U+78a1, U+78a3-78a4,
    U+78a8-78aa, U+78ac-78ad, U+78af-78b3, U+78b5, U+78bb-78bf, U+78c5-78cc, U+78ce, U+78d1-78d6, U+78da-78db,
    U+78df-78e1, U+78e4, U+78e6-78e7, U+78ea, U+78ec, U+78f2-78f4, U+78f6-78f7, U+78f9-78fb, U+78fd-7901, U+7906-7907,
    U+790c, U+7910-7912, U+7919-791c, U+791e-7920, U+7925-792e, U+7930-7931, U+7934-7935, U+793b, U+793d, U+793f,
    U+7941-7942, U+7944-7946, U+794a-794b, U+794f, U+7951, U+7954-7955, U+7957-7958, U+795a-795c, U+795f-7960, U+7962,
    U+7967, U+7969, U+796b, U+7972, U+7977, U+7979-797c, U+797e-7980, U+798a-798e, U+7991, U+7993-7996, U+7998,
    U+799b-799d, U+79a1, U+79a6-79ab, U+79ae-79b1, U+79b3-79b4, U+79b8-79bb, U+79bd-79be, U+79c2, U+79c4, U+79c7-79ca,
    U+79cc-79cd, U+79cf, U+79d4-79d6, U+79da, U+79dd-79e3, U+79e5, U+79e7, U+79ea-79ed, U+79f1, U+79f8, U+79fc,
    U+7a02-7a03, U+7a05, U+7a07-7a0a, U+7a0c-7a0d, U+7a11, U+7a15;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.27.woff2)
    format('woff2');
  unicode-range:
    U+768c-768e, U+7690, U+7693, U+7695-7696, U+7699-76a8, U+76aa, U+76ad, U+76af-76b0, U+76b4, U+76b6-76ba, U+76bd,
    U+76c1-76c3, U+76c5, U+76c8-76c9, U+76cb-76ce, U+76d2, U+76d4, U+76d6, U+76d9, U+76dc, U+76de, U+76e0-76e1,
    U+76e5-76e8, U+76ea-76ec, U+76f0-76f1, U+76f6, U+76f9, U+76fb-76fc, U+7700, U+7704, U+7706-7708, U+770a, U+770e,
    U+7712, U+7714-7715, U+7717, U+7719-771c, U+7722, U+7724-7726, U+7728, U+772d-772f, U+7734-7739, U+773d-773e,
    U+7742, U+7745-7747, U+774a, U+774d-774f, U+7752, U+7756-7758, U+775a-775c, U+775e-7760, U+7762, U+7764-7765,
    U+7767, U+776a-776c, U+7770, U+7772-7774, U+7779-777a, U+777c-7780, U+7784, U+778b-778e, U+7794-7796, U+779a,
    U+779e-77a0, U+77a2, U+77a4-77a5, U+77a7, U+77a9-77aa, U+77ae-77b1, U+77b5-77b7, U+77b9, U+77bb-77bf, U+77c3,
    U+77c7, U+77c9, U+77cd, U+77d1-77d2, U+77d5, U+77d7, U+77d9-77da, U+77dc, U+77de-77e0, U+77e3-77e4, U+77e6-77e7,
    U+77e9-77ea, U+77ec, U+77ee, U+77f0-77f1, U+77f4, U+77f8, U+77fb-77fc, U+7805-7806, U+7809, U+780c-780e,
    U+7811-7812, U+7819, U+781d, U+7820-7823, U+7826-7827, U+782c-782e, U+7830, U+7835, U+7837, U+783a, U+783f,
    U+7843-7845, U+7847-7848, U+784c, U+784e-784f;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.28.woff2)
    format('woff2');
  unicode-range:
    U+7511-7513, U+7515-7517, U+751c, U+751e, U+7520-7522, U+7524, U+7526-7527, U+7529-752c, U+752f, U+7536,
    U+7538-7539, U+753c-7540, U+7543-7544, U+7546-754b, U+754d-7550, U+7552, U+7557, U+755a-755b, U+755d-755f,
    U+7561-7562, U+7564, U+7566-7567, U+7569, U+756b-756d, U+756f, U+7571-7572, U+7574-757e, U+7581-7582, U+7585-7587,
    U+7589-758c, U+758f-7590, U+7592-7595, U+7599-759a, U+759c-759d, U+75a2-75a5, U+75b0-75b1, U+75b3-75b5, U+75b7-75b8,
    U+75ba, U+75bd, U+75bf-75c4, U+75c6, U+75ca, U+75cc-75cf, U+75d3-75d4, U+75d7-75d8, U+75dc-75e1, U+75e3-75e4,
    U+75e7, U+75ec, U+75ee-75f3, U+75f9, U+75fc, U+75fe-7604, U+7607-760c, U+760f, U+7612-7613, U+7615-7616,
    U+7618-7619, U+761b-7629, U+762d, U+7630, U+7632-7635, U+7638-763c, U+7640-7641, U+7643-764b, U+764e, U+7655,
    U+7658-7659, U+765c, U+765f, U+7661-7662, U+7664-7665, U+7667-766a, U+766c-7672, U+7674, U+7676, U+7678,
    U+7680-7683, U+7685, U+7688, U+768b;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.29.woff2)
    format('woff2');
  unicode-range:
    U+736c, U+736e-7371, U+7375, U+7377-737c, U+7380-7381, U+7383, U+7385-7386, U+738a, U+738e, U+7390, U+7393-7398,
    U+739c, U+739e-73a0, U+73a2, U+73a5-73a6, U+73a8, U+73aa-73ab, U+73ad, U+73b3, U+73b5, U+73b7, U+73b9-73bd, U+73bf,
    U+73c5-73c6, U+73c9-73cc, U+73ce-73cf, U+73d2-73d3, U+73d6, U+73d9, U+73dd-73de, U+73e1, U+73e3-73e7, U+73e9-73ea,
    U+73ee, U+73f1, U+73f4-73f5, U+73f7-73fb, U+73fd, U+73ff-7401, U+7404-7405, U+7407, U+740a, U+7411, U+7413,
    U+741a-741b, U+7421, U+7424, U+7426, U+7428-7431, U+7433, U+7439-743a, U+743f-7441, U+7443-7444, U+7446-7447,
    U+744b, U+744d, U+7451-7453, U+7455, U+7457, U+7459-745a, U+745c-745d, U+745f, U+7462-7464, U+7466-746b,
    U+746d-7473, U+7476, U+747e, U+7480-7481, U+7485-7489, U+748b, U+748f-7492, U+7497-749a, U+749c, U+749e-74a3,
    U+74a5-74a6, U+74a8-74ab, U+74ae-74af, U+74b1-74b2, U+74b5, U+74b9-74bb, U+74bd, U+74bf, U+74c8-74ca, U+74cc,
    U+74cf-74d0, U+74d3-74d4, U+74d6, U+74d8, U+74da-74db, U+74de-74e0, U+74e3-74e4, U+74e7-74eb, U+74ee-74f2, U+74f4,
    U+74f7-74f8, U+74fa-74fc, U+74ff, U+7501, U+7503-7506, U+750c-750e;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.30.woff2)
    format('woff2');
  unicode-range:
    U+7166, U+7168, U+716c, U+7179, U+7180, U+7184-7185, U+7187-7188, U+718c, U+718f, U+7192, U+7194-7196, U+7199-719b,
    U+71a0, U+71a2, U+71a8, U+71ac, U+71ae-71b0, U+71b2-71b3, U+71b9-71ba, U+71be-71c1, U+71c4, U+71c9, U+71cb-71cc,
    U+71ce, U+71d0, U+71d2-71d4, U+71d6-71d7, U+71d9-71da, U+71dc, U+71df-71e0, U+71e6-71e7, U+71ec-71ee, U+71f4-71f5,
    U+71f8-71f9, U+71fc, U+71fe-7200, U+7207-7209, U+720d, U+7210, U+7213, U+7215, U+7217, U+721a, U+721d, U+721f,
    U+7224, U+7228, U+722b, U+722d, U+722f-7230, U+7232, U+7234, U+7238-7239, U+723b-723c, U+723e-7243, U+7245-7246,
    U+724b, U+724e-7250, U+7252-7253, U+7255-7258, U+725a, U+725c, U+725e, U+7260, U+7263, U+7268, U+726b, U+726e-726f,
    U+7271, U+7274, U+7277-7278, U+727b-727c, U+727e-7282, U+7284, U+7287, U+7289, U+728d-728e, U+7292-7293, U+7296,
    U+729b, U+72a2, U+72a7-72a8, U+72ad-72ae, U+72b0-72b2, U+72b4, U+72b9, U+72be, U+72c0-72c1, U+72c3-72c4,
    U+72c6-72c7, U+72c9, U+72cc, U+72ce, U+72d2, U+72d5-72d6, U+72d8, U+72df-72e2, U+72e5, U+72f3-72f4, U+72f7,
    U+72f9-72fb, U+72fd-72fe, U+7302, U+7304-7305, U+7307, U+730a-730b, U+730d, U+7312-7313, U+7316-7319, U+731c-731e,
    U+7322, U+7324, U+7327-7329, U+732c, U+732f, U+7331-7337, U+7339-733b, U+733d-733e, U+7343, U+734d-7350, U+7352,
    U+7356-7358, U+735d-7360, U+7366-736b;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.31.woff2)
    format('woff2');
  unicode-range:
    U+6f58-6f5b, U+6f5d-6f5e, U+6f60-6f62, U+6f66, U+6f68, U+6f6c-6f6d, U+6f6f, U+6f74, U+6f78, U+6f7a, U+6f7c-6f7e,
    U+6f80, U+6f82-6f83, U+6f86-6f88, U+6f8b-6f8e, U+6f90-6f94, U+6f96-6f98, U+6f9a, U+6f9d, U+6f9f-6fa1, U+6fa3,
    U+6fa5-6fa8, U+6fae-6fb1, U+6fb3, U+6fb5-6fb7, U+6fb9, U+6fbc, U+6fbe, U+6fc2, U+6fc5-6fca, U+6fd4-6fd5, U+6fd8,
    U+6fda-6fdb, U+6fde-6fe0, U+6fe4, U+6fe8-6fe9, U+6feb-6fec, U+6fee, U+6ff0, U+6ff3, U+6ff5-6ff6, U+6ff9-6ffa,
    U+6ffc-6ffe, U+7000-7001, U+7005-7007, U+7009-700b, U+700d, U+700f, U+7011, U+7015, U+7017-7018, U+701a-701b,
    U+701d-7020, U+7023, U+7026, U+7028, U+702f-7030, U+7032, U+7034, U+7037, U+7039-703a, U+703c, U+703e, U+7043-7044,
    U+7047-704c, U+704e, U+7051, U+7054-7055, U+705d-705e, U+7064-7065, U+7069, U+706c, U+706e, U+7075-7076, U+707e,
    U+7081, U+7085-7086, U+7094-7098, U+709b, U+709f, U+70a4, U+70ab-70ac, U+70ae-70b1, U+70b3-70b4, U+70b7, U+70bb,
    U+70ca-70cb, U+70d1, U+70d3-70d6, U+70d8-70d9, U+70dc-70dd, U+70df, U+70e4, U+70ec, U+70f1, U+70fa, U+70fd,
    U+7103-7108, U+710b-710c, U+710f, U+7114, U+7119, U+711c, U+711e, U+7120, U+712b, U+712d-7131, U+7138, U+7141,
    U+7145-7147, U+7149-714b, U+7150-7153, U+7155-7157, U+715a, U+715c, U+715e, U+7160, U+7162, U+7164-7165;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.32.woff2)
    format('woff2');
  unicode-range:
    U+6d7c, U+6d80-6d82, U+6d85, U+6d87, U+6d89-6d8a, U+6d8c-6d8e, U+6d91-6d98, U+6d9c, U+6daa-6dac, U+6dae,
    U+6db4-6db5, U+6db7-6db9, U+6dbd, U+6dbf, U+6dc2, U+6dc4-6dc8, U+6dca, U+6dcc, U+6dce-6dd0, U+6dd2, U+6dd5-6dd6,
    U+6dd8-6ddb, U+6ddd-6de0, U+6de2, U+6de4-6de6, U+6de8-6dea, U+6dec, U+6dee-6df0, U+6df2, U+6df4, U+6df6,
    U+6df8-6dfa, U+6dfc, U+6e00, U+6e04, U+6e0a, U+6e17, U+6e19, U+6e1d-6e20, U+6e22-6e25, U+6e27, U+6e2b, U+6e2d-6e2e,
    U+6e32, U+6e34, U+6e36, U+6e38-6e3c, U+6e42-6e45, U+6e48-6e49, U+6e4b-6e4f, U+6e51-6e54, U+6e57, U+6e5b-6e5f,
    U+6e62-6e63, U+6e68, U+6e6b, U+6e6e, U+6e72-6e73, U+6e76, U+6e7b, U+6e7d, U+6e82, U+6e89, U+6e8c-6e8d, U+6e8f,
    U+6e93, U+6e98-6e99, U+6e9f-6ea0, U+6ea5, U+6ea7, U+6eaa-6eab, U+6ead-6eaf, U+6eb1-6eb4, U+6eb7, U+6ebb-6ebd,
    U+6ebf-6ec4, U+6ec7-6eca, U+6ecc-6ecf, U+6ed3-6ed5, U+6ed9-6edb, U+6ee6, U+6eeb-6eef, U+6ef7-6ef9, U+6efb,
    U+6efd-6eff, U+6f04, U+6f08-6f0a, U+6f0c-6f0d, U+6f10-6f11, U+6f13, U+6f15-6f16, U+6f18, U+6f1a-6f1b, U+6f25-6f26,
    U+6f29-6f2a, U+6f2d, U+6f2f-6f33, U+6f35-6f36, U+6f38, U+6f3b-6f3c, U+6f3e-6f3f, U+6f41, U+6f45, U+6f4f,
    U+6f51-6f53, U+6f57;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.33.woff2)
    format('woff2');
  unicode-range:
    U+6b85, U+6b89, U+6b8d, U+6b95, U+6b97-6b98, U+6b9b, U+6b9e-6ba0, U+6ba2-6ba4, U+6ba8-6bb3, U+6bb7-6bb9,
    U+6bbc-6bbe, U+6bc0, U+6bc3-6bc4, U+6bc6-6bc9, U+6bcb-6bcc, U+6bcf, U+6bd3, U+6bd6-6bd8, U+6bda, U+6bdf, U+6be1,
    U+6be3, U+6be6-6be7, U+6beb-6bec, U+6bee, U+6bf1, U+6bf3, U+6bf7, U+6bf9, U+6bff, U+6c02, U+6c04-6c05, U+6c08-6c0a,
    U+6c0d-6c0e, U+6c10, U+6c12-6c14, U+6c19, U+6c1b, U+6c1f, U+6c24, U+6c26-6c28, U+6c2c, U+6c2e, U+6c33, U+6c35-6c36,
    U+6c3a-6c3b, U+6c3e-6c40, U+6c4a-6c4b, U+6c4d, U+6c4f, U+6c52, U+6c54-6c55, U+6c59, U+6c5b-6c5e, U+6c62,
    U+6c67-6c68, U+6c6a-6c6b, U+6c6d, U+6c6f, U+6c73-6c74, U+6c76, U+6c78-6c79, U+6c7b, U+6c7e, U+6c81-6c87, U+6c89,
    U+6c8c-6c8d, U+6c90, U+6c92-6c95, U+6c97-6c98, U+6c9a-6c9c, U+6c9f, U+6caa-6cae, U+6cb0-6cb2, U+6cb4, U+6cba,
    U+6cbd-6cbe, U+6cc2, U+6cc5-6cc6, U+6ccd, U+6ccf-6cd4, U+6cd6-6cd7, U+6cd9-6cdd, U+6ce0, U+6ce7, U+6ce9-6cef,
    U+6cf1-6cf2, U+6cf4, U+6cfb, U+6d00-6d01, U+6d04, U+6d07, U+6d0a, U+6d0c, U+6d0e-6d0f, U+6d11, U+6d13, U+6d19-6d1a,
    U+6d1f, U+6d24, U+6d26-6d28, U+6d2b, U+6d2e-6d2f, U+6d31, U+6d33-6d36, U+6d38-6d39, U+6d3c-6d3d, U+6d3f,
    U+6d57-6d5b, U+6d5e-6d61, U+6d64-6d65, U+6d67, U+6d6c, U+6d6f-6d70, U+6d79;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.34.woff2)
    format('woff2');
  unicode-range:
    U+69dd-69de, U+69e2-69e3, U+69e5, U+69e7-69eb, U+69ed-69ef, U+69f1-69f6, U+69f9, U+69fe-6a01, U+6a03, U+6a05,
    U+6a0a, U+6a0c, U+6a0f, U+6a11-6a15, U+6a17, U+6a1a-6a1b, U+6a1d-6a20, U+6a22-6a24, U+6a28, U+6a2e, U+6a30,
    U+6a32-6a38, U+6a3b, U+6a3e-6a3f, U+6a44-6a4a, U+6a4e, U+6a50-6a52, U+6a54-6a56, U+6a5b, U+6a61-6a62, U+6a64,
    U+6a66-6a67, U+6a6a-6a6b, U+6a71-6a73, U+6a78, U+6a7a, U+6a7e-6a7f, U+6a81, U+6a83-6a84, U+6a86-6a87, U+6a89,
    U+6a8b, U+6a8d, U+6a90-6a91, U+6a94, U+6a97, U+6a9b, U+6a9d-6aa3, U+6aa5, U+6aaa-6aac, U+6aae-6ab1, U+6ab3-6ab4,
    U+6ab8, U+6abb, U+6abd-6abf, U+6ac1-6ac3, U+6ac6, U+6ac8-6ac9, U+6acc, U+6ad0-6ad1, U+6ad3-6ad6, U+6ada-6adf,
    U+6ae2, U+6ae4, U+6ae7-6ae8, U+6aea, U+6aec, U+6af0-6af3, U+6af8, U+6afa, U+6afc-6afd, U+6b02-6b03, U+6b06-6b07,
    U+6b09-6b0b, U+6b0f-6b12, U+6b16-6b17, U+6b1b, U+6b1d-6b1f, U+6b23-6b24, U+6b28, U+6b2b-6b2c, U+6b2f, U+6b35-6b39,
    U+6b3b, U+6b3d, U+6b3f, U+6b43, U+6b46-6b47, U+6b49-6b4a, U+6b4d-6b4e, U+6b50, U+6b52, U+6b54, U+6b56, U+6b58-6b59,
    U+6b5b, U+6b5d, U+6b5f-6b61, U+6b65, U+6b67, U+6b6b-6b6c, U+6b6e, U+6b70, U+6b72, U+6b75, U+6b77-6b7a, U+6b7d-6b84;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.35.woff2)
    format('woff2');
  unicode-range:
    U+6855, U+6857-6859, U+685b, U+685d, U+685f, U+6863, U+6867, U+686b, U+686e-6872, U+6874-6875, U+6877, U+6879-687c,
    U+687e-687f, U+6882-6884, U+6886, U+6888, U+688d-6890, U+6894, U+6896, U+6898-689c, U+689f-68a3, U+68a5-68a7,
    U+68a9-68ab, U+68ad-68af, U+68b2-68b5, U+68b9-68bc, U+68c3, U+68c5-68c6, U+68c8-68ca, U+68cc-68cd, U+68cf-68d1,
    U+68d3-68d9, U+68dc-68dd, U+68e0-68e1, U+68e3-68e5, U+68e7-68e8, U+68ea-68ed, U+68ef-68f1, U+68f5-68f7, U+68f9,
    U+68fb-68fd, U+6900-6901, U+6903-6904, U+6906-690c, U+690f-6911, U+6913, U+6916-6917, U+6919-691b, U+6921-6923,
    U+6925-6926, U+6928, U+692a, U+6930-6931, U+6933-6936, U+6938-6939, U+693b, U+693d, U+6942, U+6945-6946, U+6949,
    U+694e, U+6954, U+6957, U+6959, U+695b-695e, U+6961-6966, U+6968-696c, U+696e-6974, U+6977-697b, U+697e-6981,
    U+6986, U+698d, U+6991-6992, U+6994-6996, U+6998, U+699c, U+69a0-69a1, U+69a5-69a8, U+69ab, U+69ad, U+69af-69b2,
    U+69b4, U+69b7-69b8, U+69ba-69bc, U+69be-69c1, U+69c3, U+69c5, U+69c7-69c8, U+69ca, U+69ce-69d1, U+69d3,
    U+69d6-69d7, U+69d9;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.36.woff2)
    format('woff2');
  unicode-range:
    U+667e-6680, U+6683-6684, U+6688, U+668b-668e, U+6690, U+6692, U+6698-669d, U+669f-66a0, U+66a2, U+66a4, U+66ad,
    U+66b1-66b3, U+66b5, U+66b8-66b9, U+66bb-66bc, U+66be-66c4, U+66c6, U+66c8-66c9, U+66cc, U+66ce-66cf, U+66d4,
    U+66da-66db, U+66dd, U+66df-66e0, U+66e6, U+66e8-66e9, U+66eb-66ec, U+66ee, U+66f5, U+66f7, U+66fa-66fc, U+6701,
    U+6705, U+6707, U+670c, U+670e-6710, U+6712-6716, U+6719, U+671c, U+671e, U+6720, U+6722, U+6725-6726, U+672e,
    U+6733, U+6735-6738, U+673e-673f, U+6741, U+6743, U+6745-6748, U+674c-674d, U+6753-6755, U+6759, U+675d-675e,
    U+6760, U+6762-6764, U+6766, U+676a, U+676c, U+676e, U+6770, U+6772-6774, U+6776-6777, U+677b-677c, U+6780-6781,
    U+6784-6785, U+6787, U+6789, U+678b-678c, U+678e-678f, U+6791-6793, U+6796, U+6798-6799, U+679b, U+67a1, U+67a4,
    U+67a6, U+67a9, U+67b0-67b5, U+67b7-67b9, U+67bb-67be, U+67c0-67c3, U+67c5-67c6, U+67c8-67c9, U+67ce, U+67d2,
    U+67d7-67d9, U+67db-67de, U+67e1-67e2, U+67e4, U+67e6-67e7, U+67e9, U+67ec, U+67ee-67f0, U+67f2, U+67f6-67f7,
    U+67f9-67fa, U+67fc, U+67fe, U+6801-6802, U+6805, U+6810, U+6814, U+6818-6819, U+681d, U+681f, U+6822, U+6827-6829,
    U+682b-682d, U+682f-6834, U+683b, U+683e-6840, U+6844-6846, U+6849-684a, U+684c-684e, U+6852-6854;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.37.woff2)
    format('woff2');
  unicode-range:
    U+64d2, U+64d4-64d5, U+64d7-64d8, U+64da, U+64e0-64e1, U+64e3-64e5, U+64e7, U+64e9-64ea, U+64ed, U+64ef-64f2,
    U+64f4-64f7, U+64fa-64fb, U+64fd-6501, U+6504-6505, U+6508-650a, U+650f, U+6513-6514, U+6516, U+6518-6519,
    U+651b-651f, U+6522, U+6524, U+6526, U+6529-652c, U+652e, U+6531-6532, U+6534-6538, U+653a, U+653c-653d,
    U+6543-6544, U+6547-6549, U+654d-654e, U+6550, U+6552, U+6554-6556, U+6558, U+655d-6560, U+6567, U+656b, U+6572,
    U+6578, U+657a, U+657d, U+6581-6585, U+6588, U+658a, U+658c, U+6592, U+6595, U+6598, U+659b, U+659d, U+659f-65a1,
    U+65a3-65a6, U+65ab, U+65ae, U+65b2-65b5, U+65b7-65b8, U+65be-65bf, U+65c1-65c4, U+65c6, U+65c8-65c9, U+65cc,
    U+65ce, U+65d0, U+65d2, U+65d4, U+65d6, U+65d8-65d9, U+65db, U+65df-65e1, U+65e3, U+65f0-65f2, U+65f4-65f5, U+65f9,
    U+65fb-65fc, U+65fe-6600, U+6603-6604, U+6608-660a, U+660d, U+6611-6612, U+6615-6616, U+661c-661e, U+6621-6624,
    U+6626, U+6629-662c, U+662e, U+6630-6631, U+6633-6637, U+6639-663b, U+663f-6641, U+6644-6646, U+6648-664a, U+664c,
    U+664e-664f, U+6651, U+6657-6665, U+6667-6668, U+666a-666d, U+6670, U+6673, U+6675, U+6677-6679, U+667b-667c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.38.woff2)
    format('woff2');
  unicode-range:
    U+62cf, U+62d1, U+62d4-62d6, U+62da, U+62dc, U+62ea, U+62ee-62ef, U+62f1-62f2, U+62f4-62f5, U+62fc-62fd, U+62ff,
    U+6302-6304, U+6308-630d, U+6310, U+6313, U+6316, U+6318, U+631b, U+6327, U+6329-632a, U+632d, U+6332, U+6335-6336,
    U+6339-633c, U+633e, U+6341-6344, U+6346, U+634a-634e, U+6350, U+6352-6354, U+6358-6359, U+635b, U+6365-6366,
    U+6369, U+636b-636d, U+6371-6372, U+6374-6378, U+637a, U+637c-637d, U+637f-6380, U+6382, U+6384, U+6387,
    U+6389-638a, U+638e-6390, U+6394-6396, U+6399-639a, U+639e, U+63a0, U+63a3-63a4, U+63a6, U+63a9, U+63ab-63af,
    U+63b5, U+63bd-63be, U+63c0-63c1, U+63c4-63c6, U+63c8, U+63ce, U+63d1-63d6, U+63dc, U+63e0, U+63e3, U+63e5,
    U+63e9-63ed, U+63f2-63f3, U+63f5-63f9, U+6406, U+6409-640a, U+640f-6410, U+6412-6414, U+6416-6418, U+641e, U+6420,
    U+6422, U+6424-6426, U+6428-642a, U+642f-6430, U+6434-6436, U+643d, U+643f, U+644b, U+644e-644f, U+6451-6454,
    U+645a-645d, U+645f-6461, U+6463, U+6467, U+646d, U+6473-6474, U+6476, U+6478-6479, U+647b, U+647d, U+6485,
    U+6487-6488, U+648f-6491, U+6493, U+6495, U+6498-649b, U+649d-649f, U+64a1, U+64a3, U+64a6, U+64a8-64a9, U+64ac,
    U+64b3, U+64bb-64bf, U+64c2, U+64c4-64c5, U+64c7, U+64c9-64cc, U+64ce, U+64d0-64d1;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.39.woff2)
    format('woff2');
  unicode-range:
    U+6117, U+6119, U+611c, U+611e, U+6120-6122, U+6127-6128, U+612a-612c, U+6130-6131, U+6134-6137, U+6139-613a,
    U+613c-613f, U+6141-6142, U+6144-6147, U+6149-614a, U+614d, U+6153, U+6158-615a, U+615d-6160, U+6164-6165,
    U+616b-616c, U+616f, U+6171-6175, U+6177-6178, U+617b-6181, U+6183-6184, U+6187, U+618a-618b, U+618d, U+6192-6194,
    U+6196-619a, U+619c-619d, U+619f-61a0, U+61a5, U+61a8, U+61aa-61ae, U+61b8-61ba, U+61bc, U+61be, U+61c0-61c3,
    U+61c6, U+61c8, U+61ca-61cf, U+61d5, U+61dc-61df, U+61e1-61e3, U+61e5-61e9, U+61ec-61ed, U+61ef, U+61f4-61f7,
    U+61fa, U+61fc-6201, U+6203-6204, U+6207-620a, U+620d-620e, U+6213-6215, U+621b-621e, U+6220-6223, U+6227,
    U+6229-622b, U+622e, U+6230-6233, U+6236, U+6239, U+623d-623e, U+6241-6244, U+6246, U+6248, U+624c, U+624e,
    U+6250-6252, U+6254, U+6256, U+6258, U+625a-625c, U+625e, U+6260-6261, U+6263-6264, U+6268, U+626d, U+626f, U+6273,
    U+627a-627e, U+6282-6283, U+6285, U+6289, U+628d-6290, U+6292-6294, U+6296, U+6299, U+629b, U+62a6, U+62a8, U+62ac,
    U+62b3, U+62b6-62b7, U+62ba-62bb, U+62be-62bf, U+62c2, U+62c4, U+62c6-62c8, U+62ca, U+62ce;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.40.woff2)
    format('woff2');
  unicode-range:
    U+5f6c-5f6d, U+5f6f, U+5f72-5f75, U+5f78, U+5f7a, U+5f7d-5f7f, U+5f82-5f83, U+5f87-5f89, U+5f8d, U+5f8f, U+5f91,
    U+5f96, U+5f99, U+5f9c-5f9d, U+5fa0, U+5fa2, U+5fa4, U+5fa7-5fa8, U+5fab-5fad, U+5faf-5fb1, U+5fb5, U+5fb7-5fb8,
    U+5fbc-5fbd, U+5fc4, U+5fc7-5fc9, U+5fcb, U+5fd0-5fd4, U+5fdd-5fde, U+5fe1-5fe2, U+5fe4, U+5fe8-5fea, U+5fec-5ff3,
    U+5ff6, U+5ff8, U+5ffa-5ffd, U+5fff, U+6007, U+600a, U+600d-6010, U+6013-6015, U+6017-601b, U+601f, U+6021-6022,
    U+6024, U+6026, U+6029, U+602b, U+602d, U+6031, U+6033, U+6035, U+603a, U+6040-6043, U+6046-604a, U+604c-604d,
    U+6051, U+6054-6057, U+6059-605a, U+605d, U+605f-6064, U+6067, U+606a-606c, U+6070-6071, U+6077, U+607e-607f,
    U+6081-6086, U+6088-608e, U+6091-6093, U+6095-6098, U+609a-609b, U+609d-609e, U+60a2, U+60a4-60a5, U+60a7-60a8,
    U+60b0-60b1, U+60b3-60b5, U+60b7-60b8, U+60bb, U+60bd-60be, U+60c2, U+60c4, U+60c6-60cb, U+60ce-60cf, U+60d3-60d5,
    U+60d8-60d9, U+60db, U+60dd-60df, U+60e1-60e2, U+60e5, U+60ee, U+60f0-60f2, U+60f4-60f8, U+60fa-60fd, U+6100,
    U+6102-6103, U+6106-6108, U+610a, U+610c-610e, U+6110-6114, U+6116;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.41.woff2)
    format('woff2');
  unicode-range:
    U+5d9b, U+5d9d, U+5d9f-5da0, U+5da2, U+5da4, U+5da7, U+5dab-5dac, U+5dae, U+5db0, U+5db2, U+5db4, U+5db7-5db9,
    U+5dbc-5dbd, U+5dc3, U+5dc7, U+5dc9, U+5dcb-5dce, U+5dd0-5dd3, U+5dd6-5dd9, U+5ddb, U+5de0, U+5de2, U+5de4, U+5de9,
    U+5df2, U+5df5, U+5df8-5df9, U+5dfd, U+5dff-5e00, U+5e07, U+5e0b, U+5e0d, U+5e11-5e12, U+5e14-5e15, U+5e18-5e1b,
    U+5e1f-5e20, U+5e25, U+5e28, U+5e2e, U+5e32, U+5e35-5e37, U+5e3e, U+5e40, U+5e43-5e44, U+5e47, U+5e49, U+5e4b,
    U+5e4e, U+5e50-5e51, U+5e54, U+5e56-5e58, U+5e5b-5e5c, U+5e5e-5e5f, U+5e62, U+5e64, U+5e68, U+5e6a-5e6e, U+5e70,
    U+5e75-5e77, U+5e7a, U+5e7f-5e80, U+5e87, U+5e8b, U+5e8e, U+5e96, U+5e99-5e9a, U+5ea0, U+5ea2, U+5ea4-5ea5, U+5ea8,
    U+5eaa, U+5eac, U+5eb1, U+5eb3, U+5eb8-5eb9, U+5ebd-5ebf, U+5ec1-5ec2, U+5ec6, U+5ec8, U+5ecb-5ecc, U+5ece-5ed6,
    U+5ed9-5ee2, U+5ee5, U+5ee8-5ee9, U+5eeb-5eec, U+5ef0-5ef1, U+5ef3-5ef4, U+5ef8-5ef9, U+5efc-5f00, U+5f02-5f03,
    U+5f06-5f09, U+5f0b-5f0e, U+5f11, U+5f16-5f17, U+5f19, U+5f1b-5f1e, U+5f21-5f24, U+5f27-5f29, U+5f2b-5f30, U+5f34,
    U+5f36, U+5f38, U+5f3a-5f3d, U+5f3f-5f41, U+5f44-5f45, U+5f47-5f48, U+5f4a, U+5f4c-5f4e, U+5f50-5f51, U+5f54,
    U+5f56-5f58, U+5f5b-5f5d, U+5f60, U+5f63-5f65, U+5f67, U+5f6a;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.42.woff2)
    format('woff2');
  unicode-range:
    U+5bbc, U+5bc0-5bc1, U+5bc3, U+5bc7, U+5bc9, U+5bcd-5bd0, U+5bd3-5bd4, U+5bd6-5bda, U+5bde, U+5be0-5be2,
    U+5be4-5be6, U+5be8, U+5beb-5bec, U+5bef-5bf1, U+5bf3-5bf6, U+5bfd, U+5c03, U+5c05, U+5c07-5c09, U+5c0c-5c0d,
    U+5c12-5c14, U+5c17, U+5c19, U+5c1e-5c20, U+5c22-5c24, U+5c26, U+5c28-5c2e, U+5c30, U+5c32, U+5c35-5c36,
    U+5c38-5c39, U+5c46, U+5c4d-5c50, U+5c53, U+5c59-5c5c, U+5c5f-5c63, U+5c67-5c69, U+5c6c-5c70, U+5c74-5c76,
    U+5c79-5c7d, U+5c87-5c88, U+5c8a, U+5c8c, U+5c8f, U+5c91-5c92, U+5c94, U+5c9d, U+5c9f-5ca0, U+5ca2-5ca3,
    U+5ca6-5ca8, U+5caa-5cab, U+5cad, U+5cb1-5cb2, U+5cb4-5cb7, U+5cba-5cbc, U+5cbe, U+5cc5, U+5cc7, U+5cc9, U+5ccb,
    U+5cd0, U+5cd2, U+5cd7, U+5cd9, U+5cdd, U+5ce6, U+5ce8-5cea, U+5ced-5cee, U+5cf1-5cf2, U+5cf4-5cf5, U+5cfa-5cfb,
    U+5cfd, U+5d01, U+5d06, U+5d0b, U+5d0d, U+5d10-5d12, U+5d14-5d15, U+5d17-5d1b, U+5d1d, U+5d1f-5d20, U+5d22-5d24,
    U+5d26-5d27, U+5d2b, U+5d31, U+5d34, U+5d39, U+5d3d, U+5d3f, U+5d42-5d43, U+5d46-5d48, U+5d4a-5d4b, U+5d4e,
    U+5d51-5d53, U+5d55, U+5d59, U+5d5c, U+5d5f-5d62, U+5d64, U+5d69-5d6a, U+5d6c-5d6d, U+5d6f-5d70, U+5d73, U+5d76,
    U+5d79-5d7a, U+5d7e-5d7f, U+5d81-5d84, U+5d87-5d88, U+5d8a, U+5d8c, U+5d90, U+5d92-5d95, U+5d97, U+5d99;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.43.woff2)
    format('woff2');
  unicode-range:
    U+598b-598e, U+5992, U+5995, U+5997, U+599b, U+599d, U+599f, U+59a3-59a4, U+59a7, U+59ad-59b0, U+59b2-59b3, U+59b7,
    U+59ba, U+59bc, U+59be, U+59c1, U+59c3-59c4, U+59c6, U+59c8, U+59ca, U+59cd, U+59d2, U+59d9-59da, U+59dd-59df,
    U+59e3-59e5, U+59e7-59e8, U+59ec, U+59ee-59ef, U+59f1-59f2, U+59f4, U+59f6-59f8, U+5a00, U+5a03-5a04, U+5a09,
    U+5a0c-5a0e, U+5a11-5a13, U+5a17, U+5a1a-5a1c, U+5a1e-5a1f, U+5a23-5a25, U+5a27-5a28, U+5a2a, U+5a2d, U+5a30,
    U+5a35-5a36, U+5a40-5a41, U+5a44-5a45, U+5a47-5a49, U+5a4c, U+5a50, U+5a55, U+5a5e, U+5a62-5a63, U+5a65, U+5a67,
    U+5a6a, U+5a6c-5a6d, U+5a77, U+5a7a-5a7b, U+5a7e, U+5a84, U+5a8b, U+5a90, U+5a93, U+5a96, U+5a99, U+5a9c,
    U+5a9e-5aa0, U+5aa2, U+5aa7, U+5aac, U+5ab1-5ab3, U+5ab5, U+5ab8, U+5aba-5abf, U+5ac2, U+5ac4, U+5ac6, U+5ac8,
    U+5acb, U+5acf-5ad0, U+5ad6-5ad7, U+5ada, U+5adc, U+5ae0-5ae1, U+5ae3, U+5ae5-5ae6, U+5ae9-5aea, U+5aee, U+5af0,
    U+5af5-5af6, U+5afa-5afb, U+5afd, U+5b00-5b01, U+5b08, U+5b0b, U+5b16-5b17, U+5b19, U+5b1b, U+5b1d, U+5b21, U+5b25,
    U+5b2a, U+5b2c-5b2d, U+5b30, U+5b32, U+5b34, U+5b36, U+5b38, U+5b3e, U+5b40-5b41, U+5b43, U+5b45, U+5b4b-5b4c,
    U+5b51-5b52, U+5b56, U+5b5a-5b5c, U+5b5e-5b5f, U+5b65, U+5b68-5b69, U+5b6e-5b71, U+5b73, U+5b75-5b76, U+5b7a,
    U+5b7c-5b84, U+5b86, U+5b8a-5b8b, U+5b8d-5b8e, U+5b90-5b91, U+5b93-5b94, U+5b96, U+5ba5-5ba6, U+5ba8-5ba9,
    U+5bac-5bad, U+5baf, U+5bb1-5bb2, U+5bb7-5bb8, U+5bba;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.44.woff2)
    format('woff2');
  unicode-range:
    U+57b3, U+57b8, U+57bd, U+57c0, U+57c3, U+57c6-57c8, U+57cc, U+57cf, U+57d2-57d7, U+57dc-57de, U+57e0-57e1,
    U+57e3-57e4, U+57e6-57e7, U+57e9, U+57ed, U+57f0, U+57f4-57f6, U+57f8, U+57fb, U+57fd-57ff, U+5803-5804,
    U+5808-580d, U+5819, U+581b, U+581d-5821, U+5826-5827, U+582d, U+582f-5830, U+5832, U+5835, U+5839, U+583d,
    U+583f-5840, U+5849, U+584b-584d, U+584f-5852, U+5855, U+5858-5859, U+585f, U+5861-5862, U+5864, U+5867-5868,
    U+586d, U+5870, U+5872, U+5878-5879, U+587c, U+587f-5881, U+5885, U+5887-588d, U+588f-5890, U+5894, U+5896, U+5898,
    U+589d-589e, U+58a0-58a2, U+58a6, U+58a9-58ab, U+58ae, U+58b1-58b3, U+58b8-58bc, U+58be, U+58c2-58c5, U+58c8,
    U+58cd-58ce, U+58d0-58da, U+58dc-58e2, U+58e4-58e5, U+58e9, U+58ec, U+58ef, U+58f3-58f4, U+58f7, U+58f9,
    U+58fb-58fd, U+5902, U+5905-5906, U+590a-590d, U+5910, U+5912-5914, U+5918-5919, U+591b, U+591d, U+591f, U+5921,
    U+5923-5925, U+5928, U+592c-592d, U+592f-5930, U+5932-5933, U+5935-5936, U+5938-5939, U+593d-593f, U+5943, U+5946,
    U+594e, U+5950, U+5952-5953, U+5955, U+5957-595b, U+595d-5961, U+5963, U+5967, U+5969, U+596b-596d, U+596f, U+5972,
    U+5975-5976, U+5978-5979, U+597b-597c, U+5981;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.45.woff2)
    format('woff2');
  unicode-range:
    U+5616-5617, U+5619, U+561b, U+5620, U+5628, U+562c, U+562f-5639, U+563b-563d, U+563f-5641, U+5643-5644,
    U+5646-5647, U+5649, U+564b, U+564d-5650, U+5653-5654, U+565e, U+5660-5664, U+5666, U+5669-566d, U+566f,
    U+5671-5672, U+5675-5676, U+5678, U+567a, U+5680, U+5684-5688, U+568a-568c, U+568f, U+5694-5695, U+5699-569a,
    U+569d-56a0, U+56a5-56a9, U+56ab-56ae, U+56b1-56b4, U+56b6-56b7, U+56bc, U+56be, U+56c0, U+56c2-56c3, U+56c5,
    U+56c8-56d1, U+56d3, U+56d7-56d9, U+56dc-56dd, U+56df, U+56e1, U+56e4-56e8, U+56eb, U+56ed-56ee, U+56f1,
    U+56f6-56f7, U+56f9, U+56ff-5704, U+5707-570a, U+570c-570d, U+5711, U+5713, U+5715-5716, U+5718, U+571a-571d,
    U+5720-5726, U+5729-572a, U+572c, U+572e-572f, U+5733-5734, U+5737-5738, U+573b, U+573d-573f, U+5745-5746,
    U+574c-574f, U+5751-5752, U+5759, U+575f, U+5761-5762, U+5764-5765, U+5767-5769, U+576b, U+576d-5771, U+5773-5775,
    U+5777, U+5779-577c, U+577e-577f, U+5781, U+5783, U+5788-5789, U+578c, U+5793-5795, U+5797, U+5799-579a,
    U+579c-57a1, U+57a4, U+57a7-57aa, U+57ac, U+57ae, U+57b0;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.46.woff2)
    format('woff2');
  unicode-range:
    U+543f-5440, U+5443-5444, U+5447, U+544c-544f, U+5455, U+545e, U+5462, U+5464, U+5466-5467, U+5469, U+546b-546e,
    U+5470-5471, U+5474-5477, U+547b, U+547f-5481, U+5483-5486, U+5488-548b, U+548d-5492, U+5495-5496, U+549c,
    U+549f-54a2, U+54a4, U+54a6-54af, U+54b1, U+54b7-54bc, U+54be-54bf, U+54c2-54c4, U+54c6-54c8, U+54ca, U+54cd-54ce,
    U+54d8, U+54e0, U+54e2, U+54e5-54e6, U+54e8-54ea, U+54ec-54ef, U+54f1, U+54f3, U+54f6, U+54fc-5501, U+5505,
    U+5508-5509, U+550c-550f, U+5514-5516, U+5527, U+552a-552b, U+552e, U+5532-5533, U+5535-5536, U+5538-5539,
    U+553b-553d, U+5540-5541, U+5544-5545, U+5547, U+5549-554a, U+554c-554d, U+5550-5551, U+5556-5558, U+555a-555e,
    U+5560-5561, U+5563-5564, U+5566, U+557b-5583, U+5586-5588, U+558a, U+558e-558f, U+5591-5594, U+5597, U+5599,
    U+559e-559f, U+55a3-55a4, U+55a8-55a9, U+55ac-55ae, U+55b2, U+55bf, U+55c1, U+55c3-55c4, U+55c6-55c7, U+55c9,
    U+55cb-55cc, U+55ce, U+55d1-55d4, U+55d7-55d8, U+55da-55db, U+55dd-55df, U+55e2, U+55e4, U+55e9, U+55ec, U+55ee,
    U+55f1, U+55f6-55f9, U+55fd-55ff, U+5605, U+5607-5608, U+560a, U+560d-5612;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.47.woff2)
    format('woff2');
  unicode-range:
    U+528d, U+5291-5298, U+529a, U+529c, U+52a4-52a7, U+52ab-52ad, U+52af-52b0, U+52b5-52b8, U+52ba-52be, U+52c0-52c1,
    U+52c4-52c6, U+52c8, U+52ca, U+52cc-52cd, U+52cf-52d2, U+52d4, U+52d6-52d7, U+52db-52dc, U+52de, U+52e0-52e1,
    U+52e3, U+52e5-52e6, U+52e8-52ea, U+52ec, U+52f0-52f1, U+52f3-52fb, U+5300-5301, U+5303, U+5306-5308, U+530a-530d,
    U+530f-5311, U+5313, U+5315, U+5318-531f, U+5321, U+5323-5325, U+5327-532d, U+532f-5333, U+5335, U+5338,
    U+533c-533e, U+5340, U+5342, U+5345-5346, U+5349, U+534b-534c, U+5359, U+535b, U+535e, U+5361, U+5363-5367, U+5369,
    U+536c-536e, U+5372, U+5377, U+5379-537b, U+537d-537f, U+5382-5383, U+5387-5389, U+538e, U+5393-5394, U+5396,
    U+5398-5399, U+539d, U+53a0-53a1, U+53a4-53a6, U+53a9-53ab, U+53ad-53b0, U+53b2, U+53b4-53b8, U+53ba, U+53bd,
    U+53c0-53c1, U+53c3-53c5, U+53cf, U+53d2-53d3, U+53d5, U+53da-53db, U+53dd-53e0, U+53e2, U+53e6-53e8, U+53ed-53ee,
    U+53f4-53f5, U+53fa, U+5401-5403, U+540b, U+540f, U+5412-5413, U+541a, U+541d-541e, U+5421, U+5424, U+5427-542a,
    U+542c-542f, U+5431, U+5433-5436, U+543c-543d;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.48.woff2)
    format('woff2');
  unicode-range:
    U+50dd-50df, U+50e1-50e6, U+50e8-50e9, U+50ed-50f6, U+50f9-50fb, U+50fe, U+5101-5103, U+5106-5109, U+510b-510e,
    U+5110, U+5112, U+5114-511e, U+5121, U+5123, U+5127-5128, U+512c-512d, U+512f, U+5131, U+5133-5135, U+5137-513c,
    U+513f-5142, U+5147, U+514a, U+514c, U+514f, U+5152-5155, U+5157-5158, U+515f-5160, U+5162, U+5164, U+5166-5167,
    U+5169-516a, U+516e, U+5173-5174, U+5179, U+517b, U+517e, U+5180, U+5182-5184, U+5189, U+518b-518c, U+518e-5191,
    U+5193, U+5195-5196, U+5198, U+519d, U+51a1-51a4, U+51a6, U+51a9-51ab, U+51ad, U+51b0-51b3, U+51b5, U+51b8, U+51ba,
    U+51bc-51bf, U+51c2-51c3, U+51c5, U+51c8-51cb, U+51cf, U+51d1-51d6, U+51d8, U+51de-51e0, U+51e2, U+51e5, U+51e7,
    U+51e9, U+51ec-51ee, U+51f2-51f5, U+51f7, U+51fe, U+5201-5202, U+5204-5205, U+520b, U+520e, U+5212-5216, U+5218,
    U+5222, U+5226-5228, U+522a-522b, U+522e, U+5231-5233, U+5235, U+523c, U+5244-5245, U+5249, U+524b-524c, U+524f,
    U+5254-5255, U+5257-5258, U+525a, U+525c-5261, U+5266, U+5269, U+526c, U+526e, U+5271, U+5273-5274, U+5277-5279,
    U+527d, U+527f-5280, U+5282-5285, U+5288-528a, U+528c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.49.woff2)
    format('woff2');
  unicode-range:
    U+4f57-4f58, U+4f5a-4f5b, U+4f5d-4f5f, U+4f63-4f64, U+4f69-4f6a, U+4f6c, U+4f6e-4f71, U+4f76-4f7e, U+4f81-4f85,
    U+4f88-4f8a, U+4f8c, U+4f8e-4f90, U+4f92-4f94, U+4f96-4f9a, U+4f9e-4fa0, U+4fab, U+4fad, U+4faf, U+4fb2, U+4fb7,
    U+4fb9, U+4fbb-4fbe, U+4fc0-4fc1, U+4fc4-4fc6, U+4fc8-4fc9, U+4fcb-4fd4, U+4fd8, U+4fda-4fdc, U+4fdf-4fe0, U+4fe2,
    U+4fe4-4fe6, U+4fef-4ff2, U+4ff6, U+4ffc-5002, U+5004-5007, U+500a, U+500c, U+500e-5011, U+5013-5014, U+5016-5018,
    U+501a-501e, U+5021-5023, U+5025-502a, U+502c-502e, U+5030, U+5032-5033, U+5035, U+5039, U+503b, U+5040-5043,
    U+5045-5048, U+504a, U+504c, U+504e, U+5050-5053, U+5055-5057, U+5059-505a, U+505f-5060, U+5062-5063, U+5066-5067,
    U+506a, U+506c-506d, U+5070-5072, U+5077-5078, U+5080-5081, U+5083-5086, U+5088, U+508a, U+508e-5090, U+5092-5096,
    U+509a-509c, U+509e-50a3, U+50aa, U+50ad, U+50af-50b4, U+50b9-50bb, U+50bd, U+50c0, U+50c2-50c4, U+50c7,
    U+50c9-50ca, U+50cc, U+50ce, U+50d0-50d1, U+50d3-50d4, U+50d6, U+50d8-50d9, U+50dc;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.50.woff2)
    format('woff2');
  unicode-range:
    U+4093, U+4103, U+4105, U+4148, U+414f, U+4163, U+41b4, U+41bf, U+41e6, U+41ee, U+41f3, U+4207, U+420e, U+4264,
    U+4293, U+42c6, U+42d6, U+42dd, U+4302, U+432b, U+4343, U+43ee, U+43f0, U+4408, U+440c, U+4417, U+441c, U+4422,
    U+4453, U+445b, U+4476, U+447a, U+4491, U+44b3, U+44be, U+44d4, U+4508, U+450d, U+4525, U+4543, U+457a, U+459d,
    U+45b8, U+45be, U+45e5, U+45ea, U+460f-4610, U+4641, U+4665, U+46a1, U+46ae-46af, U+470c, U+471f, U+4764, U+47e6,
    U+47fd, U+4816, U+481e, U+4844, U+484e, U+48b5, U+49b0, U+49e7, U+49fa, U+4a04, U+4a29, U+4abc, U+4b38, U+4b3b,
    U+4b7e, U+4bc2, U+4bca, U+4bd2, U+4be8, U+4c17, U+4c20, U+4c38, U+4cc4, U+4cd1, U+4ce1, U+4d07, U+4d77, U+4e02,
    U+4e04-4e05, U+4e0c, U+4e0f-4e12, U+4e15, U+4e17, U+4e19, U+4e1e-4e1f, U+4e23-4e24, U+4e28-4e2c, U+4e2e-4e31,
    U+4e35-4e37, U+4e3f-4e42, U+4e44, U+4e47-4e48, U+4e4d-4e4e, U+4e51, U+4e55-4e56, U+4e58, U+4e5a-4e5c, U+4e62-4e63,
    U+4e68-4e69, U+4e74-4e75, U+4e79, U+4e7f, U+4e82, U+4e85, U+4e8a, U+4e8d-4e8e, U+4e96-4e99, U+4e9d-4ea0, U+4ea2,
    U+4ea5-4ea6, U+4ea8, U+4eaf-4eb0, U+4eb3, U+4eb6, U+4eb9, U+4ebb-4ebc, U+4ec2-4ec4, U+4ec6-4ec8, U+4ecd, U+4ed0,
    U+4ed7, U+4eda-4edb, U+4edd-4ee2, U+4ee8, U+4eeb, U+4eed, U+4eef, U+4ef1, U+4ef3, U+4ef5, U+4ef7, U+4efc-4f00,
    U+4f02-4f03, U+4f08-4f09, U+4f0b-4f0d, U+4f12, U+4f15-4f17, U+4f19, U+4f1c, U+4f2b, U+4f2e, U+4f30-4f31, U+4f33,
    U+4f35-4f37, U+4f39, U+4f3b, U+4f3e, U+4f40, U+4f42-4f43, U+4f48-4f49, U+4f4b-4f4c, U+4f52, U+4f54, U+4f56;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.51.woff2)
    format('woff2');
  unicode-range:
    U+3395-339b, U+339e-33a0, U+33a2-33ff, U+3402, U+3405-3406, U+3427, U+342c, U+342e, U+3468, U+346a, U+3488, U+3492,
    U+34b5, U+34bc, U+34c1, U+34c7, U+34db, U+351f, U+353e, U+355d-355e, U+3563, U+356e, U+35a6, U+35a8, U+35c5, U+35da,
    U+35de, U+35f4, U+3605, U+3614, U+364a, U+3691, U+3696, U+3699, U+36cf, U+3761-3762, U+376b-376c, U+3775, U+378d,
    U+37c1, U+37e2, U+37e8, U+37f4, U+37fd, U+3800, U+382f, U+3836, U+3840, U+385c, U+3861, U+38a1, U+38ad, U+38fa,
    U+3917, U+391a, U+396f, U+39a4, U+39b8, U+3a5c, U+3a6e, U+3a73, U+3a85, U+3ac4, U+3acb, U+3ad6-3ad7, U+3aea, U+3af3,
    U+3b0e, U+3b1a, U+3b1c, U+3b22, U+3b35, U+3b6d, U+3b77, U+3b87-3b88, U+3b8d, U+3ba4, U+3bb6, U+3bc3, U+3bcd, U+3bf0,
    U+3bf3, U+3c0f, U+3c26, U+3cc3, U+3cd2, U+3d11, U+3d1e, U+3d31, U+3d4e, U+3d64, U+3d9a, U+3dc0, U+3dcc, U+3dd4,
    U+3e05, U+3e3f-3e40, U+3e60, U+3e66, U+3e68, U+3e83, U+3e8a, U+3e94, U+3eda, U+3f57, U+3f72, U+3f75, U+3f77, U+3fae,
    U+3fb1, U+3fc9, U+3fd7, U+3fdc, U+4039, U+4058;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.52.woff2)
    format('woff2');
  unicode-range: U+32b5-332b, U+332d-3394;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.53.woff2)
    format('woff2');
  unicode-range: U+31c8-31e3, U+31f0-321e, U+3220-3230, U+3232-32b4;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.54.woff2)
    format('woff2');
  unicode-range:
    U+3028-303f, U+3094-3096, U+309f-30a0, U+30ee, U+30f7-30fa, U+30ff, U+3105-312f, U+3131-3163, U+3165-318e,
    U+3190-31bb, U+31c0-31c7;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.55.woff2)
    format('woff2');
  unicode-range: U+2f14-2fd5, U+2ff0-2ffb, U+3004, U+3013, U+3016-301b, U+301e, U+3020-3027;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.56.woff2)
    format('woff2');
  unicode-range:
    U+25e4-25e6, U+2601-2603, U+2609, U+260e-260f, U+2616-2617, U+261c-261f, U+262f, U+2641, U+2660, U+2662-2664,
    U+2666-2668, U+266d-266e, U+2672-267d, U+26bd-26be, U+2702, U+271a, U+273d, U+2740, U+2756, U+2776-2793, U+27a1,
    U+2934-2935, U+29bf, U+29fa-29fb, U+2b05-2b07, U+2b1a, U+2b95, U+2e3a-2e3b, U+2e80-2e99, U+2e9b-2ef3, U+2f00-2f13;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.57.woff2)
    format('woff2');
  unicode-range:
    U+24d1-24ff, U+2503-2513, U+2515-2516, U+2518-251b, U+251d-2522, U+2524-259f, U+25a2-25ab, U+25b1, U+25b7,
    U+25c0-25c1, U+25c9-25ca, U+25cc, U+25d0-25d3, U+25e2-25e3;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.58.woff2)
    format('woff2');
  unicode-range:
    U+2105, U+2109-210a, U+210f, U+2116, U+2121, U+2126-2127, U+212b, U+212e, U+2135, U+213b, U+2194-2199, U+21b8-21b9,
    U+21c4-21c6, U+21cb-21cc, U+21d0, U+21e6-21e9, U+21f5, U+2202-2203, U+2205-2206, U+2208-220b, U+220f, U+2211,
    U+2213, U+2215, U+221a, U+221d, U+2220, U+2223, U+2225-2226, U+2228, U+222a-222e, U+2234-2237, U+223d, U+2243,
    U+2245, U+2248, U+224c, U+2260, U+2262, U+2264-2265, U+226e-226f, U+2272-2273, U+2276-2277, U+2283-2287,
    U+228a-228b, U+2295-2299, U+22a0, U+22a5, U+22bf, U+22da-22db, U+22ef, U+2305-2307, U+2318, U+2329-232a,
    U+23b0-23b1, U+23be-23cc, U+23ce, U+23da-23db, U+2423, U+2469-24d0;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.59.woff2)
    format('woff2');
  unicode-range:
    U+a1-a4, U+a6-a7, U+aa, U+ac-ad, U+b5-b6, U+b8-ba, U+bc-c8, U+ca-cc, U+ce-d5, U+d9-db, U+dd-df, U+e6, U+ee, U+f0,
    U+f5, U+f7, U+f9, U+fb, U+fe-102, U+110-113, U+11a-11b, U+128-12b, U+143-144, U+147-148, U+14c, U+14e-14f,
    U+152-153, U+168-16d, U+192, U+1a0-1a1, U+1af, U+1cd-1dc, U+1f8-1f9, U+251, U+261, U+2bb, U+2c7, U+2c9, U+2ea-2eb,
    U+304, U+307, U+30c, U+1e3e-1e3f, U+1ea0-1ebe, U+1ec0-1ec6, U+1ec8-1ef9, U+2011-2012, U+2016, U+2018-201a, U+201e,
    U+2021, U+2030, U+2033, U+2035, U+2042, U+2047, U+2051, U+2074, U+20a9, U+20ab-20ac, U+20dd-20de, U+2100;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.60.woff2)
    format('woff2');
  unicode-range:
    U+2227, U+26a0, U+2713, U+301f, U+4ff8, U+5239, U+526a, U+54fa, U+5740, U+5937, U+5993, U+59fb, U+5a3c, U+5c41,
    U+6028, U+626e, U+646f, U+647a, U+64b0, U+64e2, U+65a7, U+66fe, U+6727, U+6955, U+6bef, U+6f23, U+724c, U+767c,
    U+7a83, U+7ac4, U+7b67, U+8000, U+8471, U+8513, U+8599, U+86db, U+8718, U+87f2, U+88f3, U+8ad2, U+8e2a, U+8fa3,
    U+95a5, U+9798, U+9910, U+9957, U+9bab, U+9c3b, U+9daf, U+ff95;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.61.woff2)
    format('woff2');
  unicode-range:
    U+a8, U+2032, U+2261, U+2282, U+3090, U+30f1, U+339c, U+535c, U+53d9, U+56a2, U+56c1, U+5806, U+589f, U+59d0,
    U+5a7f, U+60e0, U+639f, U+65af, U+68fa, U+69ae, U+6d1b, U+6ef2, U+71fb, U+725d, U+7262, U+75bc, U+7768, U+7940,
    U+79bf, U+7bed, U+7d68, U+7dfb, U+814b, U+8207, U+83e9, U+8494, U+8526, U+8568, U+85ea, U+86d9, U+87ba, U+8861,
    U+887f, U+8fe6, U+9059, U+9061, U+916a, U+976d, U+97ad, U+9ece;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.62.woff2)
    format('woff2');
  unicode-range:
    U+2d9, U+21d4, U+301d, U+515c, U+52fe, U+5420, U+5750, U+5766, U+5954, U+5b95, U+5f8a, U+5f98, U+620c, U+621f,
    U+641c, U+66d9, U+676d, U+6775, U+67f5, U+694a, U+6a02, U+6a3a, U+6a80, U+6c23, U+6c72, U+6dcb, U+6faa, U+707c,
    U+71c8, U+7422, U+74e2, U+7791, U+7825, U+7a14, U+7a1c, U+7c95, U+7fc1, U+82a5, U+82db, U+8304, U+853d, U+8cd3,
    U+8de8, U+8f0c, U+8f3f, U+9091, U+91c7, U+929a, U+98af, U+9913;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.63.woff2)
    format('woff2');
  unicode-range:
    U+2ca-2cb, U+2229, U+2468, U+2669, U+266f, U+273f, U+4ec0, U+4f60, U+4fb6, U+5347, U+540e, U+543b, U+5b0c, U+5d4c,
    U+5f14, U+5f9e, U+6155, U+62d0, U+6602, U+6666, U+66f3, U+67a2, U+67ca, U+69cc, U+6d29, U+6d9b, U+6e3e, U+6f81,
    U+7109, U+73c0, U+73c2, U+7425, U+7435-7436, U+7525, U+7554, U+785d, U+786b, U+7ae3, U+7b94, U+7d18, U+81bf, U+8511,
    U+8549, U+9075, U+9640, U+98e2, U+9e9f, U+ff96;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.64.woff2)
    format('woff2');
  unicode-range:
    U+2467, U+4ece, U+4ed4, U+4f91, U+4fae, U+534d, U+53c9, U+54b3, U+586b, U+5944, U+5b78, U+5df7, U+5f77, U+6101,
    U+6167-6168, U+61a4, U+62d9, U+698a, U+699b, U+6a59, U+6cc4, U+6e07, U+7099, U+75d2, U+77ad, U+7953, U+7984, U+7a92,
    U+7baa, U+7dbb, U+817f, U+82ad, U+85e9, U+868a, U+8caa, U+8f44, U+9017, U+907c, U+908a, U+92f3, U+936e, U+9435,
    U+978d, U+9838, U+9a28, U+9b41, U+9ba8, U+9c57, U+9eb9;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.65.woff2)
    format('woff2');
  unicode-range:
    U+b1, U+309b, U+4e5e, U+51f1, U+5506, U+55c5, U+58cc, U+59d1, U+5c51, U+5ef7, U+6284, U+62d7, U+6689, U+673d,
    U+6a2b, U+6a8e, U+6a9c, U+6d63, U+6dd1, U+70b8, U+7235, U+72db, U+72f8, U+7560, U+7c9b, U+7ce7, U+7e1e, U+80af,
    U+82eb, U+8463, U+8499, U+85dd, U+86ee, U+8a60, U+8a6e, U+8c79, U+8e87, U+8e8a, U+8f5f, U+9010, U+918d, U+9190,
    U+965b, U+97fb, U+9ab8, U+9bad, U+9d3b, U+9d5c, U+9dfa, U+9e93;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.66.woff2)
    format('woff2');
  unicode-range:
    U+2020, U+3003, U+3231, U+4e9b, U+4f3d, U+4f47, U+51b6, U+51dc, U+53e1, U+5bc5, U+602f, U+60bc, U+61c9, U+633d,
    U+637b, U+6492, U+65fa, U+660f, U+66f0, U+6703, U+681e, U+6876, U+6893, U+6912, U+698e, U+6c7d, U+714c, U+7169,
    U+71d5, U+725f, U+72d7, U+745b, U+74dc, U+75e2, U+7891, U+7897, U+7dcb, U+810a, U+8218, U+8339, U+840e, U+852d,
    U+8823, U+8a0a, U+9089, U+919c, U+971c, U+9ad9, U+ff4a, U+ff5a;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.67.woff2)
    format('woff2');
  unicode-range:
    U+2466, U+2600, U+4eab, U+4fe3, U+4ff5, U+51a5, U+51f0, U+536f, U+53d4, U+53f1, U+54a5, U+559d, U+55e3, U+58fa,
    U+5962, U+59ea, U+5c16, U+5cef, U+5d16, U+5f10, U+5fd6, U+6190, U+6216, U+634f, U+63bb, U+66d6, U+6756, U+6bc5,
    U+6e26, U+727d, U+731f, U+76f2, U+7729, U+7a7f, U+7aff, U+7c9f, U+818f, U+8236, U+82b9, U+8338, U+85aa, U+88b4,
    U+8b33, U+904d, U+93a7, U+96cc, U+96eb, U+9aed, U+9b8e, U+fa11;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.68.woff2)
    format('woff2');
  unicode-range:
    U+251c, U+2523, U+4e14, U+545f, U+54bd, U+553e, U+55dc, U+56da, U+589c, U+5b55, U+5bb5, U+5ce1, U+5df4, U+5eb6,
    U+5ec9, U+6191, U+62f7, U+6357, U+64a5, U+6591, U+65bc, U+6897, U+6e1a, U+7063, U+711a, U+721b, U+722c, U+75b9,
    U+75d5, U+75fa, U+7766, U+7aae, U+7b48, U+7b8b, U+7d21, U+7e55, U+7f75, U+842c, U+8910, U+8a63, U+8b39, U+8b5a,
    U+8cdc, U+8d74, U+907d, U+91e7, U+9306, U+96bc, U+98f4, U+9ac4;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.69.woff2)
    format('woff2');
  unicode-range:
    U+2003, U+2312, U+266c, U+4f86, U+51ea, U+5243, U+5256, U+541f, U+5841, U+59dc, U+5df3, U+601c, U+60e7, U+632b,
    U+638c, U+64ad, U+6881, U+697c, U+69cd, U+6c50, U+6d2a, U+6fc1, U+7027, U+7058, U+70f9, U+714e, U+7345, U+751a,
    U+760d, U+764c, U+77db, U+7d79, U+7e8f, U+80ce, U+814e, U+81fc, U+8247, U+8278, U+85a9, U+8a03, U+90ed, U+9784,
    U+9801, U+984e, U+99b3, U+9bc9, U+9bdb, U+9be8, U+9e78, U+ff6b;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.70.woff2)
    format('woff2');
  unicode-range:
    U+266b, U+3006, U+5176, U+5197, U+51a8, U+51c6, U+52f2, U+5614, U+5875, U+5a2f, U+5b54, U+5ce0, U+5dba, U+5deb,
    U+5e63, U+5f59, U+5fcc, U+6068, U+6367, U+68b6, U+6a0b, U+6b64, U+6e15, U+6eba, U+7272, U+72a0, U+7947, U+7985,
    U+79e6, U+79e9, U+7a3d, U+7a9f, U+7aaf, U+7b95, U+7f60, U+7f9e, U+7fe0, U+8098, U+80ba, U+8106, U+82d4, U+831c,
    U+87f9, U+8a1f, U+8acf, U+90c1, U+920d, U+9756, U+fe43, U+ff94;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.71.woff2)
    format('woff2');
  unicode-range:
    U+af, U+2465, U+2517, U+33a1, U+4f10, U+50c5, U+51b4, U+5384, U+5606, U+5bb0, U+5cac, U+5ee3, U+618e, U+61f2,
    U+62c9, U+66ab, U+66f9, U+6816, U+6960, U+6b3e, U+6f20, U+7078, U+72d0, U+73ed, U+7ad9, U+7b1b, U+7be4, U+7d62,
    U+7f51, U+80b4, U+80f4, U+8154, U+85fb, U+865c, U+8702, U+895f, U+8aed, U+8b90, U+8ced, U+8fbf, U+91d8, U+9418,
    U+9583, U+9591, U+9813, U+982c, U+9bd6, U+ff46, U+ff7f, U+ff88;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.72.woff2)
    format('woff2');
  unicode-range:
    U+4e91, U+508d, U+50e7, U+514e, U+51f6, U+5446, U+5504, U+584a, U+59a8, U+59d3, U+5a46, U+5ac9, U+6020, U+60a6,
    U+6148, U+621a, U+6234, U+64c1, U+6523, U+675c, U+67d1, U+6953, U+6ccc, U+6df5, U+6e13, U+6f06, U+723a, U+7325,
    U+74e6, U+758e, U+75ab, U+75d9, U+7a40, U+8096, U+82fa, U+8587, U+8594, U+8a6b, U+8ab9, U+8b17, U+8b83, U+937c,
    U+963b, U+9673, U+96db, U+9ce9, U+9f4b, U+ff67, U+ff82, U+ff93;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.73.woff2)
    format('woff2');
  unicode-range:
    U+221e, U+2514, U+51f9, U+5270, U+5449, U+5824, U+59a5, U+5a29, U+5d07, U+5e16, U+60e3, U+614c, U+6276, U+643e,
    U+64ab, U+6562, U+6681, U+670b, U+6734, U+67af, U+6a3d, U+6b05, U+6dc0, U+6e4a, U+7259, U+732a, U+7409, U+78a7,
    U+7a6b, U+8015, U+809b, U+817a, U+830e, U+837b, U+85ab, U+8a23, U+8a93, U+8b00, U+8b19, U+8b21, U+8cbf, U+8fb0,
    U+901d, U+91b8, U+9320, U+932c, U+9688, U+96f6, U+9df2, U+ff6a;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.74.woff2)
    format('woff2');
  unicode-range:
    U+2002, U+2025, U+4f8d, U+51e1, U+51f8, U+5507, U+5598, U+58f1, U+5983, U+59ac, U+5c3c, U+5de7, U+5e7d, U+5eca,
    U+5f61, U+606d, U+60f9, U+636e, U+64ec, U+67da, U+67ff, U+6813, U+68f2, U+693f, U+6b6a, U+6bbb, U+6ef4, U+7092,
    U+717d, U+7261, U+73c8, U+7432, U+7483, U+76fe, U+7709, U+78d0, U+81a3, U+81b3, U+82af, U+8305, U+8309, U+8870,
    U+88fe, U+8cd1, U+8d66, U+906e, U+971e, U+9812, U+ff79, U+ff90;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.75.woff2)
    format('woff2');
  unicode-range:
    U+2464, U+2501, U+2640, U+2642, U+339d, U+4f0e, U+5091, U+50b5, U+5132, U+51cc, U+558b, U+55aa, U+585e, U+5bee,
    U+5dfe, U+60b6, U+62b9, U+6349, U+6566, U+6590, U+6842, U+689d, U+6a58, U+6c70, U+6ff1, U+7815, U+7881, U+7aaa,
    U+7bc7, U+7def, U+7fa8, U+8017, U+8036, U+8061, U+821f, U+8429, U+8ce0, U+8e74, U+9019, U+90ca, U+9162, U+932f,
    U+93ae, U+9644, U+990c, U+9cf3, U+ff56, U+ff6e, U+ff7e, U+ff85;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.76.woff2)
    format('woff2');
  unicode-range:
    U+2266-2267, U+4f2f, U+5208, U+5451, U+546a, U+5589, U+576a, U+5815, U+5a9a, U+5b9b, U+5c3a, U+5efb, U+5faa, U+6109,
    U+6643, U+6652, U+695a, U+69fd, U+6b86, U+6bb4, U+6daf, U+7089, U+70cf, U+7a00, U+7a4f, U+7b39, U+7d33, U+80e1,
    U+828b, U+82a6, U+86cd, U+8c8c, U+8cca, U+8df3, U+9077, U+9175, U+91dc, U+925b, U+9262, U+9271, U+92ed, U+9855,
    U+9905, U+9d28, U+ff3f, U+ff58, U+ff68, U+ff6d, U+ff9c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.77.woff2)
    format('woff2');
  unicode-range:
    U+2207, U+25ef, U+309c, U+4e4f, U+5146, U+51dd, U+5351, U+540a, U+5629, U+5eb5, U+5f04, U+5f13, U+60dc, U+6212,
    U+63b4, U+642c, U+6627, U+66a6, U+66c7, U+66fd, U+674e, U+6b96, U+6c4e, U+6df3, U+6e67, U+6f84, U+72fc, U+733f,
    U+7c97, U+7db1, U+7e4d, U+816b, U+82d1, U+84cb, U+854e, U+8607, U+86c7, U+871c, U+8776, U+8a89, U+8fc4, U+91a4,
    U+9285, U+9685, U+9903, U+9b31, U+9f13, U+ff42, U+ff74, U+ff91;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.78.woff2)
    format('woff2');
  unicode-range:
    U+4e32, U+51db, U+53a8, U+53ea, U+5609, U+5674, U+5a92, U+5e7e, U+6115, U+611a, U+62cc, U+62ed, U+63c9, U+64b9,
    U+64e6, U+65cb, U+6606, U+6731, U+683d, U+6afb, U+7460, U+771e, U+78ef, U+7b26, U+7b51, U+7cde, U+7d10, U+7d2f,
    U+7d46, U+80de, U+819c, U+84b2, U+85cd, U+865a, U+8ecc, U+9022, U+90b8, U+9192, U+9675, U+96b7, U+99ff, U+ff44,
    U+ff55, U+ff6c, U+ff73, U+ff75, U+ff86, U+ff8d, U+ff92, U+ffe3;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.79.woff2)
    format('woff2');
  unicode-range:
    U+25b3, U+30f5, U+4eae, U+4f46, U+4f51, U+5203, U+52ff, U+55a7, U+564c, U+565b, U+57f9, U+5805, U+5b64, U+5e06,
    U+5f70, U+5f90, U+60e8, U+6182, U+62f3, U+62fe, U+63aa, U+64a4, U+65d7, U+673a, U+6851, U+68cb, U+68df, U+6d1e,
    U+6e58, U+6e9d, U+77b3, U+7832, U+7c3f, U+7db4, U+7f70, U+80aa, U+80c6, U+8105, U+819d, U+8276, U+8679, U+8986,
    U+8c9d, U+8fc5, U+916c, U+9665, U+9699, U+96c0, U+9a19, U+ff8b;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.80.woff2)
    format('woff2');
  unicode-range:
    U+2463, U+25a1, U+4ef0, U+5076, U+5098, U+51fd, U+5302, U+5448, U+54c9, U+570b, U+583a, U+5893, U+58a8, U+58ee,
    U+5949, U+5bdb, U+5f26, U+5f81, U+6052, U+6170, U+61c7, U+631f, U+635c, U+664b, U+69fb, U+6f01, U+7070, U+722a,
    U+745e, U+755c, U+76c6, U+78c1, U+79e4, U+7bb8, U+7d0b, U+81a8, U+82d7, U+8b5c, U+8f14, U+8fb1, U+8fbb, U+9283,
    U+9298, U+9a30, U+ff03, U+ff50, U+ff59, U+ff7b, U+ff8e-ff8f;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.81.woff2)
    format('woff2');
  unicode-range:
    U+2010, U+2502, U+25b6, U+4f3a, U+514b, U+5265, U+52c3, U+5339, U+53ec, U+54c0, U+55b0, U+5854, U+5b8f, U+5cb3,
    U+5e84, U+60da, U+6247, U+6249, U+628a, U+62cd, U+65ac, U+6838, U+690e, U+6cf0, U+6f02, U+6f2c, U+6f70, U+708a,
    U+7434, U+75be, U+77ef, U+7c60, U+7c98, U+7d1b, U+7e2b, U+80a5, U+81e3, U+820c, U+8210, U+8475, U+862d, U+8650,
    U+8997, U+906d, U+91c8, U+9700, U+9727, U+9df9, U+ff3a, U+ff9a;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.82.woff2)
    format('woff2');
  unicode-range:
    U+2103, U+5049, U+52b1, U+5320, U+5553, U+572d, U+58c7, U+5b5d, U+5bc2, U+5de3, U+5e61, U+5f80, U+61a9, U+67d0,
    U+67f4, U+6c88, U+6ca1, U+6ce5, U+6d78, U+6e9c, U+6f54, U+731b, U+73b2, U+74a7, U+74f6, U+75e9, U+7b20, U+7c8b,
    U+7f72, U+809d, U+8108, U+82b3, U+82bd, U+84b8, U+84c4, U+88c2, U+8ae6, U+8ef8, U+902e, U+9065, U+9326, U+935b,
    U+938c, U+9676, U+9694, U+96f7, U+9ed9, U+ff48, U+ff4c, U+ff81;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.83.woff2)
    format('woff2');
  unicode-range:
    U+2500, U+3008-3009, U+4ead, U+4f0f, U+4fca, U+53eb, U+543e, U+57a2, U+5cf0, U+5e8f, U+5fe0, U+61b2, U+62d8, U+6442,
    U+64b2, U+6589, U+659c, U+67f1, U+68c4, U+6cb8, U+6d12, U+6de1, U+6fe1, U+70c8, U+723d, U+73e0, U+7656, U+773a,
    U+7948, U+7b87, U+7c92, U+7d3a, U+7e1b, U+7e4a, U+819a, U+8358, U+83c5, U+84bc, U+864e, U+8912, U+8c9e, U+8d05,
    U+92fc, U+9396, U+98fd, U+99d2, U+ff64, U+ff7a, U+ff83;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.84.woff2)
    format('woff2');
  unicode-range:
    U+3014-3015, U+4e3c, U+5036, U+5075, U+533f, U+53e9, U+5531, U+5642, U+5984, U+59e6, U+5a01, U+5b6b, U+5c0b, U+5f25,
    U+6069, U+60a0, U+614e, U+62b5, U+62d2-62d3, U+6597, U+660c, U+674f, U+67cf, U+6841, U+6905, U+6cf3, U+6d32, U+6d69,
    U+6f64, U+716e, U+7761, U+7b52, U+7be0, U+7dbf, U+7de9, U+7f36, U+81d3, U+8302, U+8389, U+846c, U+84ee, U+8a69,
    U+9038, U+9d8f, U+ff47, U+ff4b, U+ff76, U+ff9b;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.85.woff2)
    format('woff2');
  unicode-range:
    U+25c7, U+3007, U+504f, U+507d, U+51a0, U+52a3, U+5410, U+5510, U+559a, U+5782, U+582a, U+5c0a, U+5c3f, U+5c48,
    U+5f6b, U+6176, U+622f, U+6279, U+62bd, U+62dd, U+65ed, U+67b6, U+6817, U+6850, U+6d6a, U+6deb, U+6ea2, U+6edd,
    U+6f5c, U+72e9, U+73a9, U+7573, U+76bf, U+7950, U+7956, U+7f8a, U+7ffc, U+80a2, U+80c3, U+83ca, U+8a02, U+8a13,
    U+8df5, U+9375, U+983b, U+99b4, U+ff4e, U+ff71, U+ff89, U+ff97;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.86.woff2)
    format('woff2');
  unicode-range:
    U+24, U+2022, U+2212, U+221f, U+2665, U+4ecf, U+5100, U+51cd, U+52d8, U+5378, U+53f6, U+574a, U+5982, U+5996,
    U+5c1a, U+5e1d, U+5f84, U+609f, U+61a7, U+61f8, U+6398, U+63ee, U+6676, U+6691, U+6eb6, U+7126, U+71e5, U+7687,
    U+7965, U+7d17, U+80a1, U+8107, U+8266, U+85a6, U+8987, U+8ca2, U+8cab, U+8e0a, U+9042, U+95c7, U+9810, U+9867,
    U+98fc, U+ff52-ff54, U+ff61, U+ff77, U+ff98-ff99;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.87.woff2)
    format('woff2');
  unicode-range:
    U+b0, U+226a, U+2462, U+4e39, U+4fc3, U+4fd7, U+50be, U+50da, U+5200, U+5211, U+54f2, U+5618, U+596a, U+5b22,
    U+5bb4, U+5d50, U+60a3, U+63fa, U+658e, U+65e8, U+6669, U+6795, U+679d, U+67a0, U+6b3a, U+6e09, U+757f, U+7cd6,
    U+7dbe, U+7ffb, U+83cc, U+83f1, U+840c, U+845b, U+8846, U+8972, U+8a34, U+8a50, U+8a87, U+8edf, U+8ff0, U+90a6,
    U+9154, U+95a3, U+9663, U+9686, U+96c7, U+ff3c, U+ff7c, U+ff8a;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.88.woff2)
    format('woff2');
  unicode-range:
    U+25bd, U+4e59, U+4ec1, U+4ff3, U+515a, U+518a, U+525b, U+5375, U+552f, U+57a3, U+5b9c, U+5c3d, U+5e3d, U+5e7b,
    U+5f0a, U+6094, U+6458, U+654f, U+67f3, U+6b8a, U+6bd2, U+6c37, U+6ce1, U+6e56, U+6e7f, U+6ed1, U+6ede, U+6f0f,
    U+70ad, U+7267, U+7363, U+786c, U+7a42, U+7db2, U+7f85, U+8178, U+829d, U+8896, U+8c5a, U+8cb0, U+8ce2, U+8ed2,
    U+9047, U+9177, U+970a, U+9ea6, U+ff1b, U+ff31, U+ff39, U+ff80;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.89.woff2)
    format('woff2');
  unicode-range:
    U+a5, U+4e80, U+4f34, U+4f73, U+4f75, U+511f, U+5192, U+52aa, U+53c8, U+570f, U+57cb, U+596e, U+5d8b, U+5f66,
    U+5fd9, U+62db, U+62f6, U+6328, U+633f, U+63a7, U+6469, U+6bbf, U+6c41, U+6c57, U+6d44, U+6dbc, U+706f, U+72c2,
    U+72ed, U+7551, U+75f4, U+7949, U+7e26, U+7fd4, U+8150, U+8af8, U+8b0e, U+8b72, U+8ca7, U+934b, U+9a0e, U+9a12,
    U+9b42, U+ff41, U+ff43, U+ff45, U+ff49, U+ff4f, U+ff62-ff63;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.90.woff2)
    format('woff2');
  unicode-range:
    U+4e18, U+4fb5, U+5104, U+52c7, U+5353, U+5374, U+53e5, U+587e, U+594f, U+5a20, U+5de1, U+5f18, U+5fcd, U+6291,
    U+62ab, U+6355, U+6392, U+63da, U+63e1, U+656c, U+6687, U+68b0-68b1, U+68d2, U+68da, U+6b27, U+6cbc, U+7159, U+7344,
    U+73cd, U+76df, U+790e, U+7cf8, U+8102, U+88c1, U+8aa0, U+8e0f, U+9178, U+92ad, U+9670, U+96c5, U+9cf4, U+9db4,
    U+ff3e, U+ff6f, U+ff72, U+ff78, U+ff7d, U+ff84, U+ff8c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.91.woff2)
    format('woff2');
  unicode-range:
    U+60, U+2200, U+226b, U+2461, U+517c, U+526f, U+5800, U+5b97, U+5bf8, U+5c01, U+5d29, U+5e4c, U+5e81, U+6065,
    U+61d0, U+667a, U+6696, U+6843, U+6c99, U+6d99, U+6ec5, U+6f22, U+6f6e, U+6fa4, U+6fef, U+71c3, U+72d9, U+7384,
    U+78e8, U+7a1a, U+7a32, U+7a3c, U+7adc, U+7ca7, U+7d2b, U+7dad, U+7e4b, U+80a9, U+8170, U+81ed, U+820e, U+8a17,
    U+8afe, U+90aa, U+914e, U+963f, U+99c4, U+9eba, U+9f3b, U+ff38;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.92.woff2)
    format('woff2');
  unicode-range:
    U+2460, U+4e5f, U+4e7e, U+4ed9, U+501f, U+502b, U+5968, U+5974, U+5ac1, U+5b99, U+5ba3, U+5be7, U+5be9, U+5c64,
    U+5cb8, U+5ec3, U+5f1f, U+616e, U+6297, U+62e0, U+62ec, U+6368, U+642d, U+65e6, U+6717, U+676f, U+6b04, U+732e,
    U+7652, U+76ca, U+76d7, U+7802, U+7e70, U+7f6a, U+8133, U+81e8, U+866b, U+878d, U+88f8, U+8a5e, U+8cdb, U+8d08,
    U+907a, U+90e1, U+96f2, U+9f8d, U+ff35, U+ff37, U+ff40, U+ff9d;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.93.woff2)
    format('woff2');
  unicode-range:
    U+21d2, U+25ce, U+300a-300b, U+4e89, U+4e9c, U+4ea1, U+5263, U+53cc, U+5426, U+5869, U+5947, U+598a, U+5999, U+5e55,
    U+5e72, U+5e79, U+5fae, U+5fb9, U+602a, U+6163, U+624d, U+6749, U+6c5a, U+6cbf, U+6d45, U+6dfb, U+6e7e, U+708e,
    U+725b, U+7763, U+79c0, U+7bc4, U+7c89, U+7e01, U+7e2e, U+8010, U+8033, U+8c6a, U+8cc3, U+8f1d, U+8f9b, U+8fb2,
    U+907f, U+90f7, U+9707, U+9818, U+9b3c, U+ff0a, U+ff4d;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.94.woff2)
    format('woff2');
  unicode-range:
    U+2015, U+2190, U+4e43, U+5019, U+5247, U+52e7, U+5438, U+54b2, U+55ab, U+57f7, U+5bd2, U+5e8a, U+5ef6, U+6016,
    U+60b2, U+6162, U+6319, U+6551, U+6607, U+66b4, U+675f, U+67d4, U+6b20, U+6b53, U+6ce3, U+719f, U+75b2, U+770b,
    U+7720, U+77ac, U+79d2, U+7af9, U+7d05, U+7dca, U+8056, U+80f8, U+81f3, U+8352, U+885d, U+8a70, U+8aa4, U+8cbc,
    U+900f, U+9084, U+91e3, U+9451, U+96c4, U+99c6, U+9ad4, U+ff70;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.95.woff2)
    format('woff2');
  unicode-range:
    U+2193, U+25b2, U+4e4b, U+516d, U+51c4, U+529f, U+52c9, U+5360, U+5442, U+5857, U+5915, U+59eb, U+5a9b, U+5c3b,
    U+6012, U+61b6, U+62b1, U+6311, U+6577, U+65e2, U+65ec, U+6613, U+6790, U+6cb9, U+7372, U+76ae, U+7d5e, U+7fcc,
    U+88ab, U+88d5, U+8caf, U+8ddd, U+8ecd, U+8f38, U+8f9e, U+8feb, U+9063, U+90f5, U+93e1, U+968a, U+968f, U+98fe,
    U+9ec4, U+ff1d, U+ff27, U+ff2a, U+ff36, U+ff3b, U+ff3d, U+ffe5;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.96.woff2)
    format('woff2');
  unicode-range:
    U+4e03, U+4f38, U+50b7, U+5264, U+5348, U+5371, U+585a, U+58ca, U+5951, U+59b9, U+59d4, U+5b98, U+5f8b, U+6388,
    U+64cd, U+65e7, U+6803, U+6b6f, U+6d66, U+6e0b, U+6ecb, U+6fc3, U+72ac, U+773c, U+77e2, U+7968, U+7a74, U+7dba,
    U+7dd1, U+7e3e, U+808c, U+811a, U+8179, U+8239, U+8584, U+8a0e, U+8a72, U+8b66, U+8c46, U+8f29, U+90a3, U+9234,
    U+96f0, U+9769, U+9774, U+9aa8, U+ff26, U+ff28, U+ff9e-ff9f;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.97.woff2)
    format('woff2');
  unicode-range:
    U+7e, U+b4, U+25c6, U+2661, U+4e92, U+4eee, U+4ffa, U+5144, U+5237, U+5287, U+52b4, U+58c1, U+5bff, U+5c04, U+5c06,
    U+5e95, U+5f31, U+5f93, U+63c3, U+640d, U+6557, U+6614, U+662f, U+67d3, U+690d, U+6bba, U+6e6f, U+72af, U+732b,
    U+7518, U+7ae0, U+7ae5, U+7af6, U+822a, U+89e6, U+8a3a, U+8a98, U+8cb8, U+8de1, U+8e8d, U+95d8, U+961c, U+96a3,
    U+96ea, U+9bae, U+ff20, U+ff22, U+ff29, U+ff2b-ff2c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.98.woff2)
    format('woff2');
  unicode-range:
    U+25cb, U+4e71, U+4f59, U+50d5, U+520a, U+5217, U+5230, U+523a-523b, U+541b, U+5439, U+5747, U+59c9, U+5bdf, U+5c31,
    U+5de8, U+5e7c, U+5f69, U+6050, U+60d1, U+63cf, U+663c, U+67c4, U+6885, U+6c38, U+6d6e, U+6db2, U+6df7, U+6e2c,
    U+6f5f, U+7532, U+76e3-76e4, U+7701, U+793c, U+79f0, U+7a93, U+7d00, U+7de0, U+7e54, U+8328, U+8840, U+969c, U+96e8,
    U+9811, U+9aea, U+9b5a, U+ff24, U+ff2e, U+ff57;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.99.woff2)
    format('woff2');
  unicode-range:
    U+2191, U+505c, U+52e4, U+5305, U+535a, U+56e0, U+59bb, U+5acc, U+5b09, U+5b87, U+5c90, U+5df1, U+5e2d, U+5e33,
    U+5f3e, U+6298, U+6383, U+653b, U+6697, U+6804, U+6a39, U+6cca, U+6e90, U+6f2b, U+702c, U+7206, U+7236, U+7559,
    U+7565, U+7591, U+75c7, U+75db, U+7b4b, U+7bb1, U+7d99, U+7fbd, U+8131, U+885b, U+8b1d, U+8ff7, U+9003, U+9045,
    U+96a0, U+9732, U+990a, U+99d0, U+9e97, U+9f62, U+ff25, U+ff2d;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.100.woff2)
    format('woff2');
  unicode-range:
    U+4e08, U+4f9d, U+5012, U+514d, U+51b7, U+5275, U+53ca, U+53f8, U+5584, U+57fc, U+5b9d, U+5bfa, U+5c3e, U+5f01,
    U+5fb4, U+5fd7, U+606f, U+62e1, U+6563, U+6674, U+6cb3, U+6d3e, U+6d74, U+6e1b, U+6e2f, U+718a, U+7247, U+79d8,
    U+7d14, U+7d66, U+7d71, U+7df4, U+7e41, U+80cc, U+8155, U+83d3, U+8a95, U+8ab2, U+8ad6, U+8ca1, U+9000, U+9006,
    U+9678, U+97d3, U+9808, U+98ef, U+9a5a, U+9b45, U+ff23, U+ff30;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.101.woff2)
    format('woff2');
  unicode-range:
    U+25bc, U+3012, U+4ef2, U+4f0a, U+516b, U+5373, U+539a, U+53b3, U+559c, U+56f0, U+5727, U+5742, U+5965, U+59ff,
    U+5bc6, U+5dfb, U+5e45, U+5ead, U+5fb3, U+6211, U+6253, U+639b, U+63a8, U+6545, U+6575, U+6628, U+672d, U+68a8,
    U+6bdb, U+6d25, U+707d, U+767e, U+7834, U+7b46, U+7bc9, U+8074, U+82e6, U+8349, U+8a2a, U+8d70, U+8da3, U+8fce,
    U+91cc, U+967d, U+97ff, U+9996, U+ff1c, U+ff2f, U+ff32, U+ff34;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.102.woff2)
    format('woff2');
  unicode-range:
    U+3d, U+5e, U+25cf, U+4e0e, U+4e5d, U+4e73, U+4e94, U+4f3c, U+5009, U+5145, U+51ac, U+5238, U+524a, U+53f3, U+547c,
    U+5802, U+5922, U+5a66, U+5c0e, U+5de6, U+5fd8, U+5feb, U+6797, U+685c, U+6b7b, U+6c5f-6c60, U+6cc9, U+6ce2, U+6d17,
    U+6e21, U+7167, U+7642, U+76db, U+8001, U+821e, U+8857, U+89d2, U+8b1b, U+8b70, U+8cb4, U+8cde, U+8f03, U+8f2a,
    U+968e, U+9b54, U+9e7f, U+9ebb, U+ff05, U+ff33;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.103.woff2)
    format('woff2');
  unicode-range:
    U+500d, U+5074, U+50cd, U+5175, U+52e2, U+5352, U+5354, U+53f2, U+5409, U+56fa, U+5a18, U+5b88, U+5bdd, U+5ca9,
    U+5f92, U+5fa9, U+60a9, U+623f, U+6483, U+653f, U+666f, U+66ae, U+66f2, U+6a21, U+6b66, U+6bcd, U+6d5c, U+796d,
    U+7a4d, U+7aef, U+7b56, U+7b97, U+7c4d, U+7e04, U+7fa9, U+8377, U+83dc, U+83ef, U+8535, U+8863, U+88cf, U+88dc,
    U+8907, U+8acb, U+90ce, U+91dd, U+ff0b, U+ff0d, U+ff19, U+ff65;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.104.woff2)
    format('woff2');
  unicode-range:
    U+4e01, U+4e21, U+4e38, U+52a9, U+547d, U+592e, U+5931, U+5b63, U+5c40, U+5dde, U+5e78, U+5efa, U+5fa1, U+604b,
    U+6075, U+62c5, U+632f, U+6a19, U+6c0f, U+6c11, U+6c96, U+6e05, U+70ba, U+71b1, U+7387, U+7403, U+75c5, U+77ed,
    U+795d, U+7b54, U+7cbe, U+7d19, U+7fa4, U+8089, U+81f4, U+8208, U+8336, U+8457, U+8a33, U+8c4a, U+8ca0, U+8ca8,
    U+8cc0, U+9014, U+964d, U+9803, U+983c, U+98db, U+ff17, U+ff21;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.105.woff2)
    format('woff2');
  unicode-range:
    U+25, U+25a0, U+4e26, U+4f4e, U+5341, U+56f2, U+5bbf, U+5c45, U+5c55, U+5c5e, U+5dee, U+5e9c, U+5f7c, U+6255,
    U+627f, U+62bc, U+65cf, U+661f, U+666e, U+66dc, U+67fb, U+6975, U+6a4b, U+6b32, U+6df1, U+6e29, U+6fc0, U+738b,
    U+7686, U+7a76, U+7a81, U+7c73, U+7d75, U+7dd2, U+82e5, U+82f1, U+85ac, U+888b, U+899a, U+8a31, U+8a8c, U+8ab0,
    U+8b58, U+904a, U+9060, U+9280, U+95b2, U+984d, U+9ce5, U+ff18;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.106.woff2)
    format('woff2');
  unicode-range:
    U+30f6, U+50ac, U+5178, U+51e6, U+5224, U+52dd, U+5883, U+5897, U+590f, U+5a5a, U+5bb3, U+5c65, U+5e03, U+5e2b,
    U+5e30, U+5eb7, U+6271, U+63f4, U+64ae, U+6574, U+672b, U+679a, U+6a29-6a2a, U+6ca2, U+6cc1, U+6d0b, U+713c, U+74b0,
    U+7981, U+7a0b, U+7bc0, U+7d1a, U+7d61, U+7fd2, U+822c, U+8996, U+89aa, U+8cac, U+8cbb, U+8d77, U+8def, U+9020,
    U+9152, U+9244, U+9662, U+967a, U+96e3, U+9759, U+ff16;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.107.woff2)
    format('woff2');
  unicode-range:
    U+23, U+3c, U+2192, U+4e45, U+4efb, U+4f50, U+4f8b, U+4fc2, U+5024, U+5150, U+5272, U+5370, U+53bb, U+542b, U+56db,
    U+56e3, U+57ce, U+5bc4, U+5bcc, U+5f71, U+60aa, U+6238, U+6280, U+629c, U+6539, U+66ff, U+670d, U+677e-677f, U+6839,
    U+69cb, U+6b4c, U+6bb5, U+6e96, U+6f14, U+72ec, U+7389, U+7814, U+79cb, U+79d1, U+79fb, U+7a0e, U+7d0d, U+85e4,
    U+8d64, U+9632, U+96e2, U+9805, U+99ac, U+ff1e;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.108.woff2)
    format('woff2');
  unicode-range:
    U+2605-2606, U+301c, U+4e57, U+4fee, U+5065, U+52df, U+533b, U+5357, U+57df, U+58eb, U+58f0, U+591c, U+592a-592b,
    U+5948, U+5b85, U+5d0e, U+5ea7, U+5ff5, U+6025, U+63a1, U+63a5, U+63db, U+643a, U+65bd, U+671d, U+68ee, U+6982,
    U+6b73, U+6bd4, U+6d88, U+7570, U+7b11, U+7d76, U+8077, U+8217, U+8c37, U+8c61, U+8cc7, U+8d85, U+901f, U+962a,
    U+9802, U+9806, U+9854, U+98f2, U+9928, U+99c5, U+9ed2;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.109.woff2)
    format('woff2');
  unicode-range:
    U+266a, U+4f11, U+533a, U+5343, U+534a, U+53cd, U+5404, U+56f3, U+5b57-5b58, U+5bae, U+5c4a, U+5e0c, U+5e2f, U+5eab,
    U+5f35, U+5f79, U+614b, U+6226, U+629e, U+65c5, U+6625, U+6751, U+6821, U+6b69, U+6b8b, U+6bce, U+6c42, U+706b,
    U+7c21, U+7cfb, U+805e, U+80b2, U+82b8, U+843d, U+8853, U+88c5, U+8a3c, U+8a66, U+8d8a, U+8fba, U+9069, U+91cf,
    U+9752, U+975e, U+9999, U+ff0f-ff10, U+ff14-ff15;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.110.woff2)
    format('woff2');
  unicode-range:
    U+40, U+4e86, U+4e95, U+4f01, U+4f1d, U+4fbf, U+5099, U+5171, U+5177, U+53cb, U+53ce, U+53f0, U+5668, U+5712,
    U+5ba4, U+5ca1, U+5f85, U+60f3, U+653e, U+65ad, U+65e9, U+6620, U+6750, U+6761, U+6b62, U+6b74, U+6e08, U+6e80,
    U+7248, U+7531, U+7533, U+753a, U+77f3, U+798f, U+7f6e, U+8449, U+88fd, U+89b3, U+8a55, U+8ac7, U+8b77, U+8db3,
    U+8efd, U+8fd4, U+9031-9032, U+9580, U+9589, U+96d1, U+985e;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.111.woff2)
    format('woff2');
  unicode-range:
    U+2b, U+d7, U+300e-300f, U+4e07, U+4e8c, U+512a, U+5149, U+518d, U+5236, U+52b9, U+52d9, U+5468, U+578b, U+57fa,
    U+5b8c, U+5ba2, U+5c02, U+5de5, U+5f37, U+5f62, U+623b, U+63d0, U+652f, U+672a, U+6848, U+6d41, U+7136, U+7537,
    U+754c, U+76f4, U+79c1, U+7ba1, U+7d44, U+7d4c, U+7dcf, U+7dda, U+7de8, U+82b1, U+897f, U+8ca9, U+8cfc, U+904e,
    U+9664, U+982d, U+9858, U+98a8, U+9a13, U+ff13, U+ff5c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.112.woff2)
    format('woff2');
  unicode-range:
    U+4e16, U+4e3b, U+4ea4, U+4ee4, U+4f4d, U+4f4f, U+4f55, U+4f9b, U+5317, U+5358, U+53c2, U+53e4, U+548c, U+571f,
    U+59cb, U+5cf6, U+5e38, U+63a2, U+63b2, U+6559, U+662d, U+679c, U+6c7a, U+72b6, U+7523, U+767d, U+770c, U+7a2e,
    U+7a3f, U+7a7a, U+7b2c, U+7b49, U+7d20, U+7d42, U+8003, U+8272, U+8a08, U+8aac, U+8cb7, U+8eab, U+8ee2, U+9054-9055,
    U+90fd, U+914d, U+91cd, U+969b, U+97f3, U+984c, U+ff06;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.113.woff2)
    format('woff2');
  unicode-range:
    U+26, U+5f, U+2026, U+203b, U+4e09, U+4eac, U+4ed5, U+4fa1, U+5143, U+5199, U+5207, U+539f, U+53e3, U+53f7, U+5411,
    U+5473, U+5546, U+55b6, U+5929, U+597d, U+5bb9, U+5c11, U+5c4b, U+5ddd, U+5f97, U+5fc5, U+6295, U+6301, U+6307,
    U+671b, U+76f8, U+78ba, U+795e, U+7d30, U+7d39, U+7d9a, U+89e3, U+8a00, U+8a73, U+8a8d, U+8a9e, U+8aad, U+8abf,
    U+8cea, U+8eca, U+8ffd, U+904b, U+9650, U+ff11-ff12;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.114.woff2)
    format('woff2');
  unicode-range:
    U+3e, U+3005, U+4e0d, U+4e88, U+4ecb, U+4ee3, U+4ef6, U+4fdd, U+4fe1, U+500b, U+50cf, U+5186, U+5316, U+53d7,
    U+540c, U+544a, U+54e1, U+5728, U+58f2, U+5973, U+5b89, U+5c71, U+5e02, U+5e97, U+5f15, U+5fc3, U+5fdc, U+601d,
    U+611b, U+611f, U+671f, U+6728, U+6765, U+683c, U+6b21, U+6ce8, U+6d3b, U+6d77, U+7530, U+7740, U+7acb, U+7d50,
    U+826f, U+8f09, U+8fbc, U+9001, U+9053, U+91ce, U+9762, U+98df;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.115.woff2)
    format('woff2');
  unicode-range:
    U+7c, U+3080, U+4ee5, U+5148, U+516c, U+521d, U+5225, U+529b, U+52a0, U+53ef, U+56de, U+56fd, U+5909, U+591a,
    U+5b66, U+5b9f, U+5bb6, U+5bfe, U+5e73, U+5e83, U+5ea6, U+5f53, U+6027, U+610f, U+6210, U+6240, U+660e, U+66f4,
    U+66f8, U+6709, U+6771, U+697d, U+69d8, U+6a5f, U+6c34, U+6cbb, U+73fe, U+756a, U+7684, U+771f, U+793a, U+7f8e,
    U+898f, U+8a2d, U+8a71, U+8fd1, U+9078, U+9577, U+96fb, U+ff5e;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.116.woff2)
    format('woff2');
  unicode-range:
    U+a9, U+3010-3011, U+30e2, U+4e0b, U+4eca, U+4ed6, U+4ed8, U+4f53, U+4f5c, U+4f7f, U+53d6, U+540d, U+54c1, U+5730,
    U+5916, U+5b50, U+5c0f, U+5f8c, U+624b, U+6570, U+6587, U+6599, U+691c, U+696d, U+6cd5, U+7269, U+7279, U+7406,
    U+767a-767b, U+77e5, U+7d04, U+7d22, U+8005, U+80fd, U+81ea, U+8868, U+8981, U+89a7, U+901a, U+9023, U+90e8, U+91d1,
    U+9332, U+958b, U+96c6, U+9ad8, U+ff1a, U+ff1f;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.117.woff2)
    format('woff2');
  unicode-range:
    U+4e, U+a0, U+3000, U+300c-300d, U+4e00, U+4e0a, U+4e2d, U+4e8b, U+4eba, U+4f1a, U+5165, U+5168, U+5185, U+51fa,
    U+5206, U+5229, U+524d, U+52d5, U+5408, U+554f, U+5831, U+5834, U+5927, U+5b9a, U+5e74, U+5f0f, U+60c5, U+65b0,
    U+65b9, U+6642, U+6700, U+672c, U+682a, U+6b63, U+6c17, U+7121, U+751f, U+7528, U+753b, U+76ee, U+793e, U+884c,
    U+898b, U+8a18, U+9593, U+95a2, U+ff01, U+ff08-ff09;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.118.woff2)
    format('woff2');
  unicode-range:
    U+21-22, U+27-2a, U+2c-3b, U+3f, U+41-4d, U+4f-5d, U+61-7b, U+7d, U+ab, U+ae, U+b2-b3, U+b7, U+bb, U+c9, U+cd, U+d6,
    U+d8, U+dc, U+e0-e5, U+e7-ed, U+ef, U+f1-f4, U+f6, U+f8, U+fa, U+fc-fd, U+103, U+14d, U+1b0, U+300-301, U+1ebf,
    U+1ec7, U+2013-2014, U+201c-201d, U+2039-203a, U+203c, U+2048-2049, U+2113, U+2122, U+65e5, U+6708, U+70b9;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.119.woff2)
    format('woff2');
  unicode-range:
    U+20, U+2027, U+3001-3002, U+3041-307f, U+3081-308f, U+3091-3093, U+3099-309a, U+309d-309e, U+30a1-30e1,
    U+30e3-30ed, U+30ef-30f0, U+30f2-30f4, U+30fb-30fe, U+ff0c, U+ff0e;
}
/* cyrillic */
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMbN2uY2Q3X8_92A.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMbNauY2Q3X8_92A.woff2) format('woff2');
  unicode-range:
    U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309,
    U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMbNeuY2Q3X8_92A.woff2) format('woff2');
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
    U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMbNmuY2Q3X88.woff2) format('woff2');
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC,
    U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.0.woff2)
    format('woff2');
  unicode-range:
    U+25ee8, U+25f23, U+25f5c, U+25fd4, U+25fe0, U+25ffb, U+2600c, U+26017, U+26060, U+260ed, U+26222, U+2626a, U+26270,
    U+26286, U+2634c, U+26402, U+2667e, U+266b0, U+2671d, U+268dd, U+268ea, U+26951, U+2696f, U+26999, U+269dd, U+26a1e,
    U+26a58, U+26a8c, U+26ab7, U+26aff, U+26c29, U+26c73, U+26c9e, U+26cdd, U+26e40, U+26e65, U+26f94, U+26ff6-26ff8,
    U+270f4, U+2710d, U+27139, U+273da-273db, U+273fe, U+27410, U+27449, U+27614-27615, U+27631, U+27684, U+27693,
    U+2770e, U+27723, U+27752, U+278b2, U+27985, U+279b4, U+27a84, U+27bb3, U+27bbe, U+27bc7, U+27c3c, U+27cb8, U+27d73,
    U+27da0, U+27e10, U+27eaf, U+27fb7, U+2808a, U+280bb, U+28277, U+28282, U+282f3, U+283cd, U+2840c, U+28455, U+284dc,
    U+2856b, U+285c8-285c9, U+286d7, U+286fa, U+28946, U+28949, U+2896b, U+28987-28988, U+289ba-289bb, U+28a1e, U+28a29,
    U+28a43, U+28a71, U+28a99, U+28acd, U+28add, U+28ae4, U+28bc1, U+28bef, U+28cdd, U+28d10, U+28d71, U+28dfb, U+28e0f,
    U+28e17, U+28e1f, U+28e36, U+28e89, U+28eeb, U+28ef6, U+28f32, U+28ff8, U+292a0, U+292b1, U+29490, U+295cf, U+2967f,
    U+296f0, U+29719, U+29750, U+29810, U+298c6, U+29a72, U+29d4b, U+29ddb, U+29e15, U+29e3d, U+29e49, U+29e8a, U+29ec4,
    U+29edb, U+29ee9, U+29fce, U+29fd7, U+2a01a, U+2a02f, U+2a082, U+2a0f9, U+2a190, U+2a2b2, U+2a38c, U+2a437, U+2a5f1,
    U+2a602, U+2a61a, U+2a6b2, U+2a9e6, U+2b746, U+2b751, U+2b753, U+2b75a, U+2b75c, U+2b765, U+2b776-2b777, U+2b77c,
    U+2b782, U+2b789, U+2b78b, U+2b78e, U+2b794, U+2b7ac, U+2b7af, U+2b7bd, U+2b7c9, U+2b7cf, U+2b7d2, U+2b7d8, U+2b7f0,
    U+2b80d, U+2b817, U+2b81a, U+2d544, U+2e278, U+2e569, U+2e6ea, U+2f804, U+2f80f, U+2f815, U+2f818, U+2f81a, U+2f822,
    U+2f828, U+2f82c, U+2f833, U+2f83f, U+2f846, U+2f852, U+2f862, U+2f86d, U+2f873, U+2f877, U+2f884, U+2f899-2f89a,
    U+2f8a6, U+2f8ac, U+2f8b2, U+2f8b6, U+2f8d3, U+2f8db-2f8dc, U+2f8e1, U+2f8e5, U+2f8ea, U+2f8ed, U+2f8fc, U+2f903,
    U+2f90b, U+2f90f, U+2f91a, U+2f920-2f921, U+2f945, U+2f947, U+2f96c, U+2f995, U+2f9d0, U+2f9de-2f9df, U+2f9f4;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.1.woff2)
    format('woff2');
  unicode-range:
    U+1f235-1f23b, U+1f240-1f248, U+1f250-1f251, U+2000b, U+20089-2008a, U+200a2, U+200a4, U+200b0, U+200f5, U+20158,
    U+201a2, U+20213, U+2032b, U+20371, U+20381, U+203f9, U+2044a, U+20509, U+2053f, U+205b1, U+205d6, U+20611, U+20628,
    U+206ec, U+2074f, U+207c8, U+20807, U+2083a, U+208b9, U+2090e, U+2097c, U+20984, U+2099d, U+20a64, U+20ad3, U+20b1d,
    U+20b9f, U+20bb7, U+20d45, U+20d58, U+20de1, U+20e64, U+20e6d, U+20e95, U+20f5f, U+21201, U+2123d, U+21255, U+21274,
    U+2127b, U+212d7, U+212e4, U+212fd, U+2131b, U+21336, U+21344, U+213c4, U+2146d-2146e, U+215d7, U+21647, U+216b4,
    U+21706, U+21742, U+218bd, U+219c3, U+21a1a, U+21c56, U+21d2d, U+21d45, U+21d62, U+21d78, U+21d92, U+21d9c, U+21da1,
    U+21db7, U+21de0, U+21e33-21e34, U+21f1e, U+21f76, U+21ffa, U+2217b, U+22218, U+2231e, U+223ad, U+22609, U+226f3,
    U+2285b, U+228ab, U+2298f, U+22ab8, U+22b46, U+22b4f-22b50, U+22ba6, U+22c1d, U+22c24, U+22de1, U+22e42, U+22feb,
    U+231b6, U+231c3-231c4, U+231f5, U+23372, U+233cc, U+233d0, U+233d2-233d3, U+233d5, U+233da, U+233df, U+233e4,
    U+233fe, U+2344a-2344b, U+23451, U+23465, U+234e4, U+2355a, U+23594, U+235c4, U+23638-2363a, U+23647, U+2370c,
    U+2371c, U+2373f, U+23763-23764, U+237e7, U+237f1, U+237ff, U+23824, U+2383d, U+23a98, U+23c7f, U+23cbe, U+23cfe,
    U+23d00, U+23d0e, U+23d40, U+23dd3, U+23df9-23dfa, U+23f7e, U+2404b, U+24096, U+24103, U+241c6, U+241fe, U+242ee,
    U+243bc, U+243d0, U+24629, U+246a5, U+247f1, U+24896, U+248e9, U+24a4d, U+24b56, U+24b6f, U+24c16, U+24d14, U+24e04,
    U+24e0e, U+24e37, U+24e6a, U+24e8b, U+24ff2, U+2504a, U+25055, U+25122, U+251a9, U+251cd, U+251e5, U+2521e, U+2524c,
    U+2542e, U+2548e, U+254d9, U+2550e, U+255a7, U+2567f, U+25771, U+257a9, U+257b4, U+25874, U+259c4, U+259cc, U+259d4,
    U+25ad7, U+25ae3-25ae4, U+25af1, U+25bb2, U+25c4b, U+25c64, U+25da1, U+25e2e, U+25e56, U+25e62, U+25e65, U+25ec2,
    U+25ed8;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.2.woff2)
    format('woff2');
  unicode-range:
    U+ffd7, U+ffda-ffdc, U+ffe0-ffe2, U+ffe4, U+ffe6, U+ffe8-ffee, U+1f100-1f10c, U+1f110-1f16c, U+1f170-1f1ac,
    U+1f200-1f202, U+1f210-1f234;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.3.woff2)
    format('woff2');
  unicode-range:
    U+fa10, U+fa12-fa6d, U+fb00-fb04, U+fe10-fe19, U+fe30-fe42, U+fe44-fe52, U+fe54-fe66, U+fe68-fe6b, U+ff02, U+ff04,
    U+ff07, U+ff51, U+ff5b, U+ff5d, U+ff5f-ff60, U+ff66, U+ff69, U+ff87, U+ffa1-ffbe, U+ffc2-ffc7, U+ffca-ffcf,
    U+ffd2-ffd6;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.4.woff2)
    format('woff2');
  unicode-range: U+f92d-f959, U+f95b-f9f2, U+f9f4-fa0b, U+fa0e-fa0f;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.5.woff2)
    format('woff2');
  unicode-range:
    U+9e8b-9e8c, U+9e8e-9e8f, U+9e91-9e92, U+9e95-9e96, U+9e98, U+9e9b, U+9e9d-9e9e, U+9ea4-9ea5, U+9ea8-9eaa,
    U+9eac-9eb0, U+9eb3-9eb5, U+9eb8, U+9ebc-9ebf, U+9ec3, U+9ec6, U+9ec8, U+9ecb-9ecd, U+9ecf-9ed1, U+9ed4-9ed5,
    U+9ed8, U+9edb-9ee0, U+9ee4-9ee5, U+9ee7-9ee8, U+9eec-9ef2, U+9ef4-9ef9, U+9efb-9eff, U+9f02-9f03, U+9f07-9f09,
    U+9f0e-9f12, U+9f14-9f17, U+9f19-9f1b, U+9f1f-9f22, U+9f26, U+9f2a-9f2c, U+9f2f, U+9f31-9f32, U+9f34, U+9f37,
    U+9f39-9f3a, U+9f3c-9f3f, U+9f41, U+9f43-9f47, U+9f4a, U+9f4e-9f50, U+9f52-9f58, U+9f5a, U+9f5d-9f61, U+9f63,
    U+9f66-9f6a, U+9f6c-9f73, U+9f75-9f77, U+9f7a, U+9f7d, U+9f7f, U+9f8f-9f92, U+9f94-9f97, U+9f99, U+9f9c-9fa3,
    U+9fa5, U+9fb4, U+9fbc-9fc2, U+9fc4, U+9fc6, U+9fcc, U+f900-f92c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.6.woff2)
    format('woff2');
  unicode-range:
    U+9c3e, U+9c41, U+9c43-9c4a, U+9c4e-9c50, U+9c52-9c54, U+9c56, U+9c58, U+9c5a-9c61, U+9c63, U+9c65, U+9c67-9c6b,
    U+9c6d-9c6e, U+9c70, U+9c72, U+9c75-9c78, U+9c7a-9c7c, U+9ce6-9ce7, U+9ceb-9cec, U+9cf0, U+9cf2, U+9cf6-9cf7,
    U+9cf9, U+9d02-9d03, U+9d06-9d09, U+9d0b, U+9d0e, U+9d11-9d12, U+9d15, U+9d17-9d18, U+9d1b-9d1f, U+9d23, U+9d26,
    U+9d2a-9d2c, U+9d2f-9d30, U+9d32-9d34, U+9d3a, U+9d3c-9d3f, U+9d41-9d48, U+9d4a, U+9d50-9d54, U+9d59, U+9d5d-9d65,
    U+9d69-9d6c, U+9d6f-9d70, U+9d72-9d73, U+9d76-9d77, U+9d7a-9d7c, U+9d7e, U+9d83-9d84, U+9d86-9d87, U+9d89-9d8a,
    U+9d8d-9d8e, U+9d92-9d93, U+9d95-9d9a, U+9da1, U+9da4, U+9da9-9dac, U+9dae, U+9db1-9db2, U+9db5, U+9db8-9dbd,
    U+9dbf-9dc4, U+9dc6-9dc7, U+9dc9-9dca, U+9dcf, U+9dd3-9dd7, U+9dd9-9dda, U+9dde-9de0, U+9de3, U+9de5-9de7, U+9de9,
    U+9deb, U+9ded-9df0, U+9df3-9df4, U+9df8, U+9dfd-9dfe, U+9e02, U+9e07, U+9e0a, U+9e0d-9e0e, U+9e10-9e12,
    U+9e15-9e16, U+9e19-9e1f, U+9e75, U+9e79-9e7d, U+9e80-9e85, U+9e87-9e88;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.7.woff2)
    format('woff2');
  unicode-range:
    U+9ae5-9ae7, U+9ae9, U+9aeb-9aec, U+9aee-9aef, U+9af1-9af5, U+9af7, U+9af9-9afb, U+9afd, U+9aff-9b06, U+9b08-9b09,
    U+9b0b-9b0e, U+9b10, U+9b12, U+9b16, U+9b18-9b1d, U+9b1f-9b20, U+9b22-9b23, U+9b25-9b2f, U+9b32-9b35, U+9b37,
    U+9b39-9b3b, U+9b3d, U+9b43-9b44, U+9b48, U+9b4b-9b4f, U+9b51, U+9b55-9b58, U+9b5b, U+9b5e, U+9b61, U+9b63,
    U+9b65-9b66, U+9b68, U+9b6a-9b6f, U+9b72-9b79, U+9b7f-9b80, U+9b83-9b87, U+9b89-9b8b, U+9b8d, U+9b8f-9b94,
    U+9b96-9b97, U+9b9a, U+9b9d-9ba0, U+9ba6-9ba7, U+9ba9-9baa, U+9bac, U+9bb0-9bb2, U+9bb4, U+9bb7-9bb9, U+9bbb-9bbc,
    U+9bbe-9bc1, U+9bc6-9bc8, U+9bca, U+9bce-9bd2, U+9bd4, U+9bd7-9bd8, U+9bdd, U+9bdf, U+9be1-9be5, U+9be7,
    U+9bea-9beb, U+9bee-9bf3, U+9bf5, U+9bf7-9bfa, U+9bfd, U+9bff-9c00, U+9c02, U+9c04, U+9c06, U+9c08-9c0d,
    U+9c0f-9c16, U+9c18-9c1e, U+9c21-9c2a, U+9c2d-9c32, U+9c35-9c37, U+9c39-9c3a, U+9c3d;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.8.woff2)
    format('woff2');
  unicode-range:
    U+98eb, U+98ed-98ee, U+98f0-98f1, U+98f3, U+98f6, U+9902, U+9907-9909, U+9911-9912, U+9914-9918, U+991a-9922,
    U+9924, U+9926-9927, U+992b-992c, U+992e, U+9931-9935, U+9939-993e, U+9940-9942, U+9945-9949, U+994b-994e,
    U+9950-9952, U+9954-9955, U+9958-9959, U+995b-995c, U+995e-9960, U+9963, U+9997-9998, U+999b, U+999d-999f, U+99a3,
    U+99a5-99a6, U+99a8, U+99ad-99ae, U+99b0-99b2, U+99b5, U+99b9-99ba, U+99bc-99bd, U+99bf, U+99c1, U+99c3,
    U+99c8-99c9, U+99d1, U+99d3-99d5, U+99d8-99df, U+99e1-99e2, U+99e7, U+99ea-99ee, U+99f0-99f2, U+99f4-99f5,
    U+99f8-99f9, U+99fb-99fe, U+9a01-9a05, U+9a08, U+9a0a-9a0c, U+9a0f-9a11, U+9a16, U+9a1a, U+9a1e, U+9a20,
    U+9a22-9a24, U+9a27, U+9a2b, U+9a2d-9a2e, U+9a31, U+9a33, U+9a35-9a38, U+9a3e, U+9a40-9a45, U+9a47, U+9a4a-9a4e,
    U+9a51-9a52, U+9a54-9a58, U+9a5b, U+9a5d, U+9a5f, U+9a62, U+9a64-9a65, U+9a69-9a6c, U+9aaa, U+9aac-9ab0, U+9ab2,
    U+9ab4-9ab7, U+9ab9, U+9abb-9ac1, U+9ac3, U+9ac6, U+9ac8, U+9ace-9ad3, U+9ad5-9ad7, U+9adb-9adc, U+9ade-9ae0,
    U+9ae2-9ae4;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.9.woff2)
    format('woff2');
  unicode-range:
    U+971d, U+9721-9724, U+9728, U+972a, U+9730-9731, U+9733, U+9736, U+9738-9739, U+973b, U+973d-973e, U+9741-9744,
    U+9746-974a, U+974d-974f, U+9751, U+9755, U+9757-9758, U+975a-975c, U+9760-9761, U+9763-9764, U+9766-9768,
    U+976a-976b, U+976e, U+9771, U+9773, U+9776-977d, U+977f-9781, U+9785-9786, U+9789, U+978b, U+978f-9790,
    U+9795-9797, U+9799-979a, U+979c, U+979e-97a0, U+97a2-97a3, U+97a6, U+97a8, U+97ab-97ac, U+97ae, U+97b1-97b6,
    U+97b8-97ba, U+97bc, U+97be-97bf, U+97c1, U+97c3-97ce, U+97d0-97d1, U+97d4, U+97d7-97d9, U+97db-97de, U+97e0-97e1,
    U+97e4, U+97e6, U+97ed-97ef, U+97f1-97f2, U+97f4-97f8, U+97fa, U+9804, U+9807, U+980a, U+980c-980f, U+9814,
    U+9816-9817, U+9819-981a, U+981c, U+981e, U+9820-9821, U+9823-9826, U+982b, U+982e-9830, U+9832-9835, U+9837,
    U+9839, U+983d-983e, U+9844, U+9846-9847, U+984a-984b, U+984f, U+9851-9853, U+9856-9857, U+9859-985b, U+9862-9863,
    U+9865-9866, U+986a-986c, U+986f-9871, U+9873-9875, U+98aa-98ab, U+98ad-98ae, U+98b0-98b1, U+98b4, U+98b6-98b8,
    U+98ba-98bc, U+98bf, U+98c2-98c8, U+98cb-98cc, U+98ce, U+98dc, U+98de, U+98e0-98e1, U+98e3, U+98e5-98e7, U+98e9-98ea;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.10.woff2)
    format('woff2');
  unicode-range:
    U+944a, U+944c, U+9452-9453, U+9455, U+9459-945c, U+945e-9463, U+9468, U+946a-946b, U+946d-9472, U+9475, U+9477,
    U+947c-947f, U+9481, U+9483-9485, U+9578-9579, U+957e-957f, U+9582, U+9584, U+9586-9588, U+958a, U+958c-958f,
    U+9592, U+9594, U+9596, U+9598-9599, U+959d-95a1, U+95a4, U+95a6-95a9, U+95ab-95ad, U+95b1, U+95b4, U+95b6,
    U+95b9-95bf, U+95c3, U+95c6, U+95c8-95cd, U+95d0-95d6, U+95d9-95da, U+95dc-95e2, U+95e4-95e6, U+95e8, U+961d-961e,
    U+9621-9622, U+9624-9626, U+9628, U+962c, U+962e-962f, U+9631, U+9633-9634, U+9637-963a, U+963c-963d, U+9641-9642,
    U+964b-964c, U+964f, U+9652, U+9654, U+9656-9658, U+965c-965f, U+9661, U+9666, U+966a, U+966c, U+966e, U+9672,
    U+9674, U+9677, U+967b-967c, U+967e-967f, U+9681-9684, U+9689, U+968b, U+968d, U+9691, U+9695-9698, U+969a, U+969d,
    U+969f, U+96a4-96aa, U+96ae-96b4, U+96b6, U+96b8-96bb, U+96bd, U+96c1, U+96c9-96cb, U+96cd-96ce, U+96d2,
    U+96d5-96d6, U+96d8-96da, U+96dc-96df, U+96e9, U+96ef, U+96f1, U+96f9-96fa, U+9702-9706, U+9708-9709, U+970d-970f,
    U+9711, U+9713-9714, U+9716, U+9719-971b;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.11.woff2)
    format('woff2');
  unicode-range:
    U+92bc-92bd, U+92bf-92c3, U+92c5-92c8, U+92cb-92d0, U+92d2-92d3, U+92d5, U+92d7-92d9, U+92dc-92dd, U+92df-92e1,
    U+92e3-92e5, U+92e7-92ea, U+92ec, U+92ee, U+92f0, U+92f2, U+92f7-92fb, U+92ff-9300, U+9302, U+9304, U+9308, U+930d,
    U+930f-9311, U+9314-9315, U+9318-931a, U+931c-931f, U+9321-9325, U+9327-932b, U+932e, U+9333-9337, U+933a-933b,
    U+9344, U+9347-934a, U+934d, U+9350-9352, U+9354-9358, U+935a, U+935c, U+935e, U+9360, U+9364-9365, U+9367,
    U+9369-936d, U+936f-9371, U+9373-9374, U+9376, U+937a, U+937d-9382, U+9388, U+938a-938b, U+938d, U+938f, U+9392,
    U+9394-9395, U+9397-9398, U+939a-939b, U+939e, U+93a1, U+93a3-93a4, U+93a6, U+93a8-93a9, U+93ab-93ad, U+93b0,
    U+93b4-93b6, U+93b9-93bb, U+93c1, U+93c3-93cd, U+93d0-93d1, U+93d3, U+93d6-93d9, U+93dc-93df, U+93e2, U+93e4-93e8,
    U+93f1, U+93f5, U+93f7-93fb, U+93fd, U+9401-9404, U+9407-9409, U+940d-9410, U+9413-9417, U+9419-941a, U+941f,
    U+9421, U+942b, U+942e-942f, U+9431-9434, U+9436, U+9438, U+943a-943b, U+943d, U+943f, U+9441, U+9443-9445, U+9448;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.12.woff2)
    format('woff2');
  unicode-range:
    U+9143, U+9146-914c, U+914f, U+9153, U+9156-915b, U+9161, U+9163-9165, U+9167, U+9169, U+916d, U+9172-9174,
    U+9179-917b, U+9181-9183, U+9185-9187, U+9189-918b, U+918e, U+9191, U+9193-9195, U+9197-9198, U+919e, U+91a1-91a2,
    U+91a6, U+91a8, U+91aa-91b6, U+91ba-91bd, U+91bf-91c6, U+91c9, U+91cb, U+91d0, U+91d3-91d4, U+91d6-91d7,
    U+91d9-91db, U+91de-91df, U+91e1, U+91e4-91e6, U+91e9-91ea, U+91ec-91f1, U+91f5-91f7, U+91f9, U+91fb-91fd,
    U+91ff-9201, U+9204-9207, U+9209-920a, U+920c, U+920e, U+9210-9218, U+921c-921e, U+9223-9226, U+9228-9229, U+922c,
    U+922e-9230, U+9233, U+9235-923a, U+923c, U+923e-9240, U+9242-9243, U+9245-924b, U+924d-9251, U+9256-925a,
    U+925c-925e, U+9260-9261, U+9264-9269, U+926e-9270, U+9275-9279, U+927b-927f, U+9288-928a, U+928d-928e, U+9291-9293,
    U+9295-9297, U+9299, U+929b-929c, U+929f-92a0, U+92a4-92a5, U+92a7-92a8, U+92ab, U+92af, U+92b2-92b3, U+92b6-92bb;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.13.woff2)
    format('woff2');
  unicode-range:
    U+8f52-8f55, U+8f57-8f58, U+8f5c-8f5e, U+8f61-8f66, U+8f9c-8f9d, U+8f9f-8fa2, U+8fa4-8fa8, U+8fad-8faf, U+8fb4-8fb8,
    U+8fbe, U+8fc0-8fc2, U+8fc6, U+8fc8, U+8fca-8fcb, U+8fcd, U+8fd0, U+8fd2-8fd3, U+8fd5, U+8fda, U+8fe0, U+8fe2-8fe5,
    U+8fe8-8fea, U+8fed-8fef, U+8ff1, U+8ff4-8ff6, U+8ff8-8ffb, U+8ffe, U+9002, U+9004-9005, U+9008, U+900b-900e,
    U+9011, U+9013, U+9015-9016, U+9018, U+901b, U+901e, U+9021, U+9027-902a, U+902c-902d, U+902f, U+9033-9037, U+9039,
    U+903c, U+903e-903f, U+9041, U+9043-9044, U+9049, U+904c, U+904f-9052, U+9056, U+9058, U+905b-905e, U+9062,
    U+9066-9068, U+906c, U+906f-9070, U+9072, U+9074, U+9076, U+9079, U+9080-9083, U+9085, U+9087-9088, U+908b-908c,
    U+908e-9090, U+9095, U+9097-9099, U+909b, U+90a0-90a2, U+90a5, U+90a8, U+90af-90b6, U+90bd-90be, U+90c3-90c5,
    U+90c7-90c9, U+90cc, U+90d2, U+90d5, U+90d7-90d9, U+90db-90df, U+90e2, U+90e4-90e5, U+90eb, U+90ef-90f0, U+90f2,
    U+90f4, U+90f6, U+90fe-9100, U+9102, U+9104-9106, U+9108, U+910d, U+9110, U+9112, U+9114-911a, U+911c, U+911e,
    U+9120, U+9122-9123, U+9125, U+9127, U+9129, U+912d-9132, U+9134, U+9136-9137, U+9139-913a, U+913c-913d;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.14.woff2)
    format('woff2');
  unicode-range:
    U+8dc0, U+8dc2, U+8dc5-8dc8, U+8dca-8dcc, U+8dce-8dcf, U+8dd1, U+8dd4-8dd7, U+8dd9-8ddb, U+8ddf, U+8de3-8de5,
    U+8de7, U+8dea-8dec, U+8df0-8df2, U+8df4, U+8dfc-8dfd, U+8dff, U+8e01, U+8e04-8e06, U+8e08-8e09, U+8e0b-8e0c,
    U+8e10-8e11, U+8e14, U+8e16, U+8e1d-8e23, U+8e26-8e27, U+8e30-8e31, U+8e33-8e39, U+8e3d, U+8e40-8e42, U+8e44,
    U+8e47-8e50, U+8e54-8e55, U+8e59, U+8e5b-8e64, U+8e69, U+8e6c-8e6d, U+8e6f-8e72, U+8e75-8e77, U+8e79-8e7c,
    U+8e81-8e85, U+8e89, U+8e8b, U+8e90-8e95, U+8e98-8e9b, U+8e9d-8e9e, U+8ea1-8ea2, U+8ea7, U+8ea9-8eaa, U+8eac-8eb1,
    U+8eb3, U+8eb5-8eb6, U+8eba-8ebb, U+8ebe, U+8ec0-8ec1, U+8ec3-8ec8, U+8ecb, U+8ecf, U+8ed1, U+8ed4, U+8edb-8edc,
    U+8ee3, U+8ee8, U+8eeb, U+8eed-8eee, U+8ef0-8ef1, U+8ef7, U+8ef9-8efc, U+8efe, U+8f00, U+8f02, U+8f05, U+8f07-8f08,
    U+8f0a, U+8f0f-8f10, U+8f12-8f13, U+8f15-8f19, U+8f1b-8f1c, U+8f1e-8f21, U+8f23, U+8f25-8f28, U+8f2b-8f2f,
    U+8f33-8f37, U+8f39-8f3b, U+8f3e, U+8f40-8f43, U+8f45-8f47, U+8f49-8f4a, U+8f4c-8f4f, U+8f51;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.15.woff2)
    format('woff2');
  unicode-range:
    U+8b2d, U+8b30, U+8b37, U+8b3c, U+8b3e, U+8b41-8b46, U+8b48-8b49, U+8b4c-8b4f, U+8b51-8b54, U+8b56, U+8b59, U+8b5b,
    U+8b5e-8b5f, U+8b63, U+8b69, U+8b6b-8b6d, U+8b6f, U+8b71, U+8b74, U+8b76, U+8b78-8b79, U+8b7c-8b81, U+8b84-8b85,
    U+8b8a-8b8f, U+8b92-8b96, U+8b99-8b9a, U+8b9c-8ba0, U+8c38-8c3a, U+8c3d-8c3f, U+8c41, U+8c45, U+8c47-8c49,
    U+8c4b-8c4c, U+8c4e-8c51, U+8c53-8c55, U+8c57-8c59, U+8c5b, U+8c5d, U+8c62-8c64, U+8c66, U+8c68-8c69, U+8c6b-8c6d,
    U+8c73, U+8c75-8c76, U+8c78, U+8c7a-8c7c, U+8c7e, U+8c82, U+8c85-8c87, U+8c89-8c8b, U+8c8d-8c8e, U+8c90,
    U+8c92-8c94, U+8c98-8c99, U+8c9b-8c9c, U+8c9f, U+8ca4, U+8cad-8cae, U+8cb2-8cb3, U+8cb6, U+8cb9-8cba, U+8cbd,
    U+8cc1-8cc2, U+8cc4-8cc6, U+8cc8-8cc9, U+8ccb, U+8ccd-8ccf, U+8cd2, U+8cd5-8cd6, U+8cd9-8cda, U+8cdd, U+8ce1,
    U+8ce3-8ce4, U+8ce6, U+8ce8, U+8cec, U+8cef-8cf2, U+8cf4-8cf5, U+8cf7-8cf8, U+8cfa-8cfb, U+8cfd-8cff, U+8d01,
    U+8d03-8d04, U+8d07, U+8d09-8d0b, U+8d0d-8d10, U+8d12-8d14, U+8d16-8d17, U+8d1b-8d1d, U+8d65, U+8d67, U+8d69,
    U+8d6b-8d6e, U+8d71, U+8d73, U+8d76, U+8d7f, U+8d81-8d82, U+8d84, U+8d88, U+8d8d, U+8d90-8d91, U+8d95, U+8d99,
    U+8d9e-8da0, U+8da6, U+8da8, U+8dab-8dac, U+8daf, U+8db2, U+8db5, U+8db7, U+8db9-8dbc, U+8dbe;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.16.woff2)
    format('woff2');
  unicode-range:
    U+8973-8975, U+8977, U+897a-897e, U+8980, U+8983, U+8988-898a, U+898d, U+8990, U+8993-8995, U+8998, U+899b-899c,
    U+899f-89a1, U+89a5-89a6, U+89a9, U+89ac, U+89af-89b0, U+89b2, U+89b4-89b7, U+89ba, U+89bc-89bd, U+89bf-89c1,
    U+89d4-89d8, U+89da, U+89dc-89dd, U+89e5, U+89e7, U+89e9, U+89eb, U+89ed, U+89f1, U+89f3-89f4, U+89f6, U+89f8-89f9,
    U+89fd, U+89ff, U+8a01, U+8a04-8a05, U+8a07, U+8a0c, U+8a0f-8a12, U+8a14-8a16, U+8a1b, U+8a1d-8a1e, U+8a20-8a22,
    U+8a24-8a26, U+8a2b-8a2c, U+8a2f, U+8a35-8a37, U+8a3b, U+8a3d-8a3e, U+8a40-8a41, U+8a43, U+8a45-8a49, U+8a4d-8a4e,
    U+8a51-8a54, U+8a56-8a58, U+8a5b-8a5d, U+8a61-8a62, U+8a65, U+8a67, U+8a6c-8a6d, U+8a75-8a77, U+8a79-8a7c,
    U+8a7e-8a80, U+8a82-8a86, U+8a8b, U+8a8f-8a92, U+8a96-8a97, U+8a99-8a9a, U+8a9f, U+8aa1, U+8aa3, U+8aa5-8aaa,
    U+8aae-8aaf, U+8ab3, U+8ab6-8ab7, U+8abb-8abc, U+8abe, U+8ac2-8ac4, U+8ac6, U+8ac8-8aca, U+8acc-8acd, U+8ad0-8ad1,
    U+8ad3-8ad5, U+8ad7, U+8ada-8ae2, U+8ae4, U+8ae7, U+8aeb-8aec, U+8aee, U+8af0-8af1, U+8af3-8af7, U+8afa, U+8afc,
    U+8aff, U+8b01-8b02, U+8b04-8b07, U+8b0a-8b0d, U+8b0f-8b11, U+8b14, U+8b16, U+8b1a, U+8b1c, U+8b1e-8b20, U+8b26,
    U+8b28, U+8b2b-8b2c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.17.woff2)
    format('woff2');
  unicode-range:
    U+87e2-87e6, U+87ea-87ed, U+87ef, U+87f1, U+87f3, U+87f5-87f8, U+87fa-87fb, U+87fe-87ff, U+8801, U+8803,
    U+8805-8807, U+8809-880b, U+880d-8816, U+8818-881c, U+881e-881f, U+8821-8822, U+8827-8828, U+882d-882e, U+8830-8832,
    U+8835-8836, U+8839-883c, U+8841-8845, U+8848-884b, U+884d-884e, U+8851-8852, U+8855-8856, U+8858-885a, U+885c,
    U+885e-8860, U+8862, U+8864, U+8869, U+886b, U+886e-886f, U+8871-8872, U+8875, U+8877, U+8879, U+887b, U+887d-887e,
    U+8880-8882, U+8888, U+888d, U+8892, U+8897-889c, U+889e-88a0, U+88a2, U+88a4, U+88a8, U+88aa, U+88ae, U+88b0-88b1,
    U+88b5, U+88b7, U+88ba, U+88bc-88c0, U+88c3-88c4, U+88c6, U+88ca-88ce, U+88d1-88d4, U+88d8-88d9, U+88db,
    U+88dd-88e1, U+88e7-88e8, U+88ef-88f2, U+88f4-88f5, U+88f7, U+88f9, U+88fc, U+8901-8902, U+8904, U+8906, U+890a,
    U+890c-890f, U+8913, U+8915-8916, U+8918-891a, U+891c-891e, U+8920, U+8925-8928, U+892a-892b, U+8930-8932,
    U+8935-893b, U+893e, U+8940-8946, U+8949, U+894c-894d, U+894f, U+8952, U+8956-8957, U+895a-895c, U+895e,
    U+8960-8964, U+8966, U+896a-896b, U+896d-8970;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.18.woff2)
    format('woff2');
  unicode-range:
    U+8655-8659, U+865b, U+865d-8664, U+8667, U+8669, U+866c, U+866f, U+8671, U+8675-8677, U+867a-867b, U+867d,
    U+8687-8689, U+868b-868d, U+8691, U+8693, U+8695-8696, U+8698, U+869a, U+869c-869d, U+86a1, U+86a3-86a4,
    U+86a6-86ab, U+86ad, U+86af-86b1, U+86b3-86b9, U+86bf-86c1, U+86c3-86c6, U+86c9, U+86cb, U+86ce, U+86d1-86d2,
    U+86d4-86d5, U+86d7, U+86da, U+86dc, U+86de-86e0, U+86e3-86e7, U+86e9, U+86ec-86ed, U+86ef, U+86f8-86fe, U+8700,
    U+8703-870b, U+870d-8714, U+8719-871a, U+871e-871f, U+8721-8723, U+8725, U+8728-8729, U+872e-872f, U+8731-8732,
    U+8734, U+8737, U+8739-8740, U+8743, U+8745, U+8749, U+874b-874e, U+8751, U+8753, U+8755, U+8757-8759, U+875d,
    U+875f-8761, U+8763-8766, U+8768, U+876a, U+876e-876f, U+8771-8772, U+8774, U+8778, U+877b-877c, U+877f,
    U+8782-8789, U+878b-878c, U+878e, U+8790, U+8793, U+8795, U+8797-8799, U+879e-87a0, U+87a2-87a3, U+87a7,
    U+87ab-87af, U+87b1, U+87b3, U+87b5, U+87bb, U+87bd-87c1, U+87c4, U+87c6-87cb, U+87ce, U+87d0, U+87d2, U+87d5-87d6,
    U+87d9-87da, U+87dc, U+87df-87e0;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.19.woff2)
    format('woff2');
  unicode-range:
    U+84b4, U+84b9-84bb, U+84bd-84c2, U+84c6-84ca, U+84cc-84d1, U+84d3, U+84d6, U+84d9-84da, U+84dc, U+84e7, U+84ea,
    U+84ec, U+84ef-84f2, U+84f4, U+84f7, U+84fa-84fd, U+84ff-8500, U+8502-8503, U+8506-8507, U+850c, U+850e, U+8510,
    U+8514-8515, U+8517-8518, U+851a-851c, U+851e-851f, U+8521-8525, U+8527, U+852a-852c, U+852f, U+8532-8534, U+8536,
    U+853e-8541, U+8543, U+8546, U+8548, U+854a-854b, U+854f-8553, U+8555-855a, U+855c-8564, U+8569-856b, U+856d,
    U+856f, U+8577, U+8579-857b, U+857d-8581, U+8585-8586, U+8588-858c, U+858f-8591, U+8593, U+8597-8598, U+859b-859d,
    U+859f-85a0, U+85a2, U+85a4-85a5, U+85a7-85a8, U+85ad-85b0, U+85b4, U+85b6-85ba, U+85bc-85bf, U+85c1-85c2, U+85c7,
    U+85c9-85cb, U+85ce-85d0, U+85d5, U+85d8-85da, U+85dc, U+85df-85e1, U+85e5-85e6, U+85e8, U+85ed, U+85f3-85f4,
    U+85f6-85f7, U+85f9-85fa, U+85fc, U+85fe-8600, U+8602, U+8604-8606, U+860a-860b, U+860d-860e, U+8610-8613,
    U+8616-861b, U+861e, U+8621-8622, U+8624, U+8627, U+8629, U+862f-8630, U+8636, U+8638-863a, U+863c-863d,
    U+863f-8642, U+8646, U+864d, U+8652-8654;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.20.woff2)
    format('woff2');
  unicode-range:
    U+82e8, U+82ea, U+82ed, U+82ef, U+82f3-82f4, U+82f6-82f7, U+82f9, U+82fb, U+82fd-82fe, U+8300-8301, U+8303,
    U+8306-8308, U+830a-830c, U+8316-8318, U+831b, U+831d-831f, U+8321-8323, U+832b-8335, U+8337, U+833a, U+833c-833d,
    U+8340, U+8342-8347, U+834a, U+834d-8351, U+8353-8357, U+835a, U+8362-8363, U+8370, U+8373, U+8375, U+8378,
    U+837c-837d, U+837f-8380, U+8382, U+8384-8387, U+838a, U+838d-838e, U+8392-8396, U+8398-83a0, U+83a2, U+83a6-83ad,
    U+83b1, U+83b5, U+83bd-83c1, U+83c7, U+83c9, U+83ce-83d1, U+83d4, U+83d6, U+83d8, U+83dd, U+83df-83e1, U+83e5,
    U+83e8, U+83ea-83eb, U+83f0, U+83f2, U+83f4, U+83f6-83f9, U+83fb-83fd, U+8401, U+8403-8404, U+8406-8407,
    U+840a-840b, U+840d, U+840f, U+8411, U+8413, U+8415, U+8417, U+8419, U+8420, U+8422, U+842a, U+842f, U+8431, U+8435,
    U+8438-8439, U+843c, U+8445-8448, U+844a, U+844d-844f, U+8451-8452, U+8456, U+8458-845a, U+845c, U+845f-8462,
    U+8464-8467, U+8469-846b, U+846d-8470, U+8473-8474, U+8476-847a, U+847c-847d, U+8481-8482, U+8484-8485, U+848b,
    U+8490, U+8492-8493, U+8495, U+8497, U+849c, U+849e-849f, U+84a1, U+84a6, U+84a8-84aa, U+84ad, U+84af, U+84b1;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.21.woff2)
    format('woff2');
  unicode-range:
    U+814a, U+814c, U+8151-8153, U+8157, U+815f-8161, U+8165-8169, U+816d-816f, U+8171, U+8173-8174, U+8177,
    U+8180-8186, U+8188, U+818a-818b, U+818e, U+8190, U+8193, U+8195-8196, U+8198, U+819b, U+819e, U+81a0, U+81a2,
    U+81a4, U+81a9, U+81ae, U+81b0, U+81b2, U+81b4-81b5, U+81b8, U+81ba-81bb, U+81bd-81be, U+81c0-81c3, U+81c5-81c6,
    U+81c8-81cb, U+81cd-81cf, U+81d1, U+81d5-81db, U+81dd-81e1, U+81e4-81e5, U+81e7, U+81eb-81ec, U+81ef-81f2,
    U+81f5-81f6, U+81f8-81fb, U+81fd-8205, U+8209-820b, U+820d, U+820f, U+8212-8214, U+8216, U+8219-821d, U+8221-8222,
    U+8228-8229, U+822b, U+822e, U+8232-8235, U+8237-8238, U+823a, U+823c, U+8240, U+8243-8246, U+8249, U+824b,
    U+824e-824f, U+8251, U+8256-825a, U+825c-825d, U+825f-8260, U+8262-8264, U+8267-8268, U+826a-826b, U+826d-826e,
    U+8271, U+8274, U+8277, U+8279, U+827b, U+827d-8281, U+8283-8284, U+8287, U+8289-828a, U+828d-828e, U+8291-8294,
    U+8296, U+8298-829b, U+829f-82a1, U+82a3-82a4, U+82a7-82ac, U+82ae, U+82b0, U+82b2, U+82b4, U+82b7, U+82ba-82bc,
    U+82be-82bf, U+82c5-82c6, U+82d0, U+82d2-82d3, U+82d5, U+82d9-82da, U+82dc, U+82de-82e4, U+82e7;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.22.woff2)
    format('woff2');
  unicode-range:
    U+7f77-7f79, U+7f7d-7f80, U+7f82-7f83, U+7f86-7f88, U+7f8b-7f8d, U+7f8f-7f91, U+7f94, U+7f96-7f97, U+7f9a,
    U+7f9c-7f9d, U+7fa1-7fa3, U+7fa6, U+7faa, U+7fad-7faf, U+7fb2, U+7fb4, U+7fb6, U+7fb8-7fb9, U+7fbc, U+7fbf-7fc0,
    U+7fc3, U+7fc5-7fc6, U+7fc8, U+7fca, U+7fce-7fcf, U+7fd5, U+7fdb, U+7fdf, U+7fe1, U+7fe3, U+7fe5-7fe6, U+7fe8-7fe9,
    U+7feb-7fec, U+7fee-7ff0, U+7ff2-7ff3, U+7ff9-7ffa, U+7ffd-7fff, U+8002, U+8004, U+8006-8008, U+800a-800f,
    U+8011-8014, U+8016, U+8018-8019, U+801c-8021, U+8024, U+8026, U+8028, U+802c, U+802e, U+8030, U+8034-8035, U+8037,
    U+8039-8040, U+8043-8044, U+8046, U+804a, U+8052, U+8058, U+805a, U+805f-8060, U+8062, U+8064, U+8066, U+8068,
    U+806d, U+806f-8073, U+8075-8076, U+8079, U+807b, U+807d-8081, U+8084-8088, U+808b, U+808e, U+8093, U+8099-809a,
    U+809c, U+809e, U+80a4, U+80a6-80a7, U+80ab-80ad, U+80b1, U+80b8-80b9, U+80c4-80c5, U+80c8, U+80ca, U+80cd, U+80cf,
    U+80d2, U+80d4-80db, U+80dd, U+80e0, U+80e4-80e6, U+80ed-80f3, U+80f5-80f7, U+80f9-80fc, U+80fe, U+8101, U+8103,
    U+8109, U+810b, U+810d, U+8116-8118, U+811b-811c, U+811e, U+8120, U+8123-8124, U+8127, U+8129, U+812b-812c,
    U+812f-8130, U+8135, U+8139-813a, U+813c-813e, U+8141, U+8145-8147;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.23.woff2)
    format('woff2');
  unicode-range:
    U+7d57, U+7d59-7d5d, U+7d63, U+7d65, U+7d67, U+7d6a, U+7d6e, U+7d70, U+7d72-7d73, U+7d78, U+7d7a-7d7b, U+7d7d,
    U+7d7f, U+7d81-7d83, U+7d85-7d86, U+7d88-7d89, U+7d8b-7d8d, U+7d8f, U+7d91, U+7d93, U+7d96-7d97, U+7d9b-7da0,
    U+7da2-7da3, U+7da6-7da7, U+7daa-7dac, U+7dae-7db0, U+7db3, U+7db5-7db9, U+7dbd, U+7dc0, U+7dc2-7dc7, U+7dcc-7dce,
    U+7dd0, U+7dd5-7dd9, U+7ddc-7dde, U+7de1-7de6, U+7dea-7ded, U+7df1-7df2, U+7df5-7df6, U+7df9-7dfa, U+7e00, U+7e05,
    U+7e08-7e0b, U+7e10-7e12, U+7e15, U+7e17, U+7e1c-7e1d, U+7e1f-7e23, U+7e27-7e28, U+7e2c-7e2d, U+7e2f, U+7e31-7e33,
    U+7e35-7e37, U+7e39-7e3b, U+7e3d, U+7e3f, U+7e43-7e48, U+7e4e, U+7e50, U+7e52, U+7e56, U+7e58-7e5a, U+7e5d-7e5f,
    U+7e61-7e62, U+7e65-7e67, U+7e69-7e6b, U+7e6d-7e6f, U+7e73, U+7e75, U+7e78-7e79, U+7e7b-7e7f, U+7e81-7e83,
    U+7e86-7e8a, U+7e8c-7e8e, U+7e90-7e96, U+7e98, U+7e9a-7e9f, U+7f38, U+7f3a-7f3f, U+7f43-7f45, U+7f47, U+7f4c-7f50,
    U+7f52-7f55, U+7f58, U+7f5b-7f5d, U+7f5f, U+7f61, U+7f63-7f69, U+7f6b, U+7f6d, U+7f71;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.24.woff2)
    format('woff2');
  unicode-range:
    U+7bc8, U+7bca-7bcc, U+7bcf, U+7bd4, U+7bd6-7bd7, U+7bd9-7bdb, U+7bdd, U+7be5-7be6, U+7be8-7bea, U+7bf0,
    U+7bf2-7bfa, U+7bfc, U+7bfe, U+7c00-7c04, U+7c06-7c07, U+7c09, U+7c0b-7c0f, U+7c11-7c14, U+7c17, U+7c19, U+7c1b,
    U+7c1e-7c20, U+7c23, U+7c25-7c28, U+7c2a-7c2c, U+7c2f, U+7c31, U+7c33-7c34, U+7c36-7c3a, U+7c3d-7c3e, U+7c40,
    U+7c42-7c43, U+7c45-7c46, U+7c4a, U+7c4c, U+7c4f-7c5f, U+7c61, U+7c63-7c65, U+7c67, U+7c69, U+7c6c-7c70, U+7c72,
    U+7c75, U+7c79, U+7c7b-7c7e, U+7c81-7c83, U+7c86-7c87, U+7c8d, U+7c8f-7c90, U+7c94, U+7c9e, U+7ca0-7ca2,
    U+7ca4-7ca6, U+7ca8, U+7cab, U+7cad-7cae, U+7cb0-7cb3, U+7cb6-7cb7, U+7cb9-7cbd, U+7cbf-7cc0, U+7cc2, U+7cc4-7cc5,
    U+7cc7-7cca, U+7ccd-7ccf, U+7cd2-7cd5, U+7cd7-7cda, U+7cdc-7cdd, U+7cdf-7ce0, U+7ce2, U+7ce6, U+7ce9, U+7ceb,
    U+7cef, U+7cf2, U+7cf4-7cf6, U+7cf9-7cfa, U+7cfe, U+7d02-7d03, U+7d06-7d0a, U+7d0f, U+7d11-7d13, U+7d15-7d16,
    U+7d1c-7d1e, U+7d23, U+7d26, U+7d2a, U+7d2c-7d2e, U+7d31-7d32, U+7d35, U+7d3c-7d41, U+7d43, U+7d45, U+7d47-7d48,
    U+7d4b, U+7d4d-7d4f, U+7d51, U+7d53, U+7d55-7d56;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.25.woff2)
    format('woff2');
  unicode-range:
    U+7a17-7a19, U+7a1b, U+7a1e-7a21, U+7a27, U+7a2b, U+7a2d, U+7a2f-7a31, U+7a34-7a35, U+7a37-7a3b, U+7a3e,
    U+7a43-7a49, U+7a4c, U+7a4e, U+7a50, U+7a55-7a57, U+7a59, U+7a5c-7a5d, U+7a5f-7a63, U+7a65, U+7a67, U+7a69-7a6a,
    U+7a6d, U+7a70, U+7a75, U+7a78-7a79, U+7a7d-7a7e, U+7a80, U+7a82, U+7a84-7a86, U+7a88, U+7a8a-7a8b, U+7a90-7a91,
    U+7a94-7a98, U+7a9e, U+7aa0, U+7aa3, U+7aa9, U+7aac, U+7ab0, U+7ab3, U+7ab5-7ab6, U+7ab9-7abf, U+7ac3, U+7ac5-7aca,
    U+7acc-7acf, U+7ad1-7ad3, U+7ad5, U+7ada-7adb, U+7add, U+7adf, U+7ae1-7ae2, U+7ae6-7aed, U+7af0-7af1, U+7af4,
    U+7af8, U+7afa-7afb, U+7afd-7afe, U+7b02, U+7b04, U+7b06-7b08, U+7b0a-7b0b, U+7b0f, U+7b12, U+7b14, U+7b18-7b19,
    U+7b1e-7b1f, U+7b23, U+7b25, U+7b27-7b2b, U+7b2d-7b31, U+7b33-7b36, U+7b3b, U+7b3d, U+7b3f-7b41, U+7b45, U+7b47,
    U+7b4c-7b50, U+7b53, U+7b55, U+7b5d, U+7b60, U+7b64-7b66, U+7b69-7b6a, U+7b6c-7b75, U+7b77, U+7b79-7b7a, U+7b7f,
    U+7b84, U+7b86, U+7b89, U+7b8d-7b92, U+7b96, U+7b98-7ba0, U+7ba5, U+7bac-7bad, U+7baf-7bb0, U+7bb2, U+7bb4-7bb6,
    U+7bba-7bbd, U+7bc1-7bc2, U+7bc5-7bc6;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.26.woff2)
    format('woff2');
  unicode-range:
    U+7851-7852, U+785c, U+785e, U+7860-7861, U+7863-7864, U+7868, U+786a, U+786e-786f, U+7872, U+7874, U+787a, U+787c,
    U+787e, U+7886-7887, U+788a, U+788c-788f, U+7893-7895, U+7898, U+789a, U+789d-789f, U+78a1, U+78a3-78a4,
    U+78a8-78aa, U+78ac-78ad, U+78af-78b3, U+78b5, U+78bb-78bf, U+78c5-78cc, U+78ce, U+78d1-78d6, U+78da-78db,
    U+78df-78e1, U+78e4, U+78e6-78e7, U+78ea, U+78ec, U+78f2-78f4, U+78f6-78f7, U+78f9-78fb, U+78fd-7901, U+7906-7907,
    U+790c, U+7910-7912, U+7919-791c, U+791e-7920, U+7925-792e, U+7930-7931, U+7934-7935, U+793b, U+793d, U+793f,
    U+7941-7942, U+7944-7946, U+794a-794b, U+794f, U+7951, U+7954-7955, U+7957-7958, U+795a-795c, U+795f-7960, U+7962,
    U+7967, U+7969, U+796b, U+7972, U+7977, U+7979-797c, U+797e-7980, U+798a-798e, U+7991, U+7993-7996, U+7998,
    U+799b-799d, U+79a1, U+79a6-79ab, U+79ae-79b1, U+79b3-79b4, U+79b8-79bb, U+79bd-79be, U+79c2, U+79c4, U+79c7-79ca,
    U+79cc-79cd, U+79cf, U+79d4-79d6, U+79da, U+79dd-79e3, U+79e5, U+79e7, U+79ea-79ed, U+79f1, U+79f8, U+79fc,
    U+7a02-7a03, U+7a05, U+7a07-7a0a, U+7a0c-7a0d, U+7a11, U+7a15;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.27.woff2)
    format('woff2');
  unicode-range:
    U+768c-768e, U+7690, U+7693, U+7695-7696, U+7699-76a8, U+76aa, U+76ad, U+76af-76b0, U+76b4, U+76b6-76ba, U+76bd,
    U+76c1-76c3, U+76c5, U+76c8-76c9, U+76cb-76ce, U+76d2, U+76d4, U+76d6, U+76d9, U+76dc, U+76de, U+76e0-76e1,
    U+76e5-76e8, U+76ea-76ec, U+76f0-76f1, U+76f6, U+76f9, U+76fb-76fc, U+7700, U+7704, U+7706-7708, U+770a, U+770e,
    U+7712, U+7714-7715, U+7717, U+7719-771c, U+7722, U+7724-7726, U+7728, U+772d-772f, U+7734-7739, U+773d-773e,
    U+7742, U+7745-7747, U+774a, U+774d-774f, U+7752, U+7756-7758, U+775a-775c, U+775e-7760, U+7762, U+7764-7765,
    U+7767, U+776a-776c, U+7770, U+7772-7774, U+7779-777a, U+777c-7780, U+7784, U+778b-778e, U+7794-7796, U+779a,
    U+779e-77a0, U+77a2, U+77a4-77a5, U+77a7, U+77a9-77aa, U+77ae-77b1, U+77b5-77b7, U+77b9, U+77bb-77bf, U+77c3,
    U+77c7, U+77c9, U+77cd, U+77d1-77d2, U+77d5, U+77d7, U+77d9-77da, U+77dc, U+77de-77e0, U+77e3-77e4, U+77e6-77e7,
    U+77e9-77ea, U+77ec, U+77ee, U+77f0-77f1, U+77f4, U+77f8, U+77fb-77fc, U+7805-7806, U+7809, U+780c-780e,
    U+7811-7812, U+7819, U+781d, U+7820-7823, U+7826-7827, U+782c-782e, U+7830, U+7835, U+7837, U+783a, U+783f,
    U+7843-7845, U+7847-7848, U+784c, U+784e-784f;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.28.woff2)
    format('woff2');
  unicode-range:
    U+7511-7513, U+7515-7517, U+751c, U+751e, U+7520-7522, U+7524, U+7526-7527, U+7529-752c, U+752f, U+7536,
    U+7538-7539, U+753c-7540, U+7543-7544, U+7546-754b, U+754d-7550, U+7552, U+7557, U+755a-755b, U+755d-755f,
    U+7561-7562, U+7564, U+7566-7567, U+7569, U+756b-756d, U+756f, U+7571-7572, U+7574-757e, U+7581-7582, U+7585-7587,
    U+7589-758c, U+758f-7590, U+7592-7595, U+7599-759a, U+759c-759d, U+75a2-75a5, U+75b0-75b1, U+75b3-75b5, U+75b7-75b8,
    U+75ba, U+75bd, U+75bf-75c4, U+75c6, U+75ca, U+75cc-75cf, U+75d3-75d4, U+75d7-75d8, U+75dc-75e1, U+75e3-75e4,
    U+75e7, U+75ec, U+75ee-75f3, U+75f9, U+75fc, U+75fe-7604, U+7607-760c, U+760f, U+7612-7613, U+7615-7616,
    U+7618-7619, U+761b-7629, U+762d, U+7630, U+7632-7635, U+7638-763c, U+7640-7641, U+7643-764b, U+764e, U+7655,
    U+7658-7659, U+765c, U+765f, U+7661-7662, U+7664-7665, U+7667-766a, U+766c-7672, U+7674, U+7676, U+7678,
    U+7680-7683, U+7685, U+7688, U+768b;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.29.woff2)
    format('woff2');
  unicode-range:
    U+736c, U+736e-7371, U+7375, U+7377-737c, U+7380-7381, U+7383, U+7385-7386, U+738a, U+738e, U+7390, U+7393-7398,
    U+739c, U+739e-73a0, U+73a2, U+73a5-73a6, U+73a8, U+73aa-73ab, U+73ad, U+73b3, U+73b5, U+73b7, U+73b9-73bd, U+73bf,
    U+73c5-73c6, U+73c9-73cc, U+73ce-73cf, U+73d2-73d3, U+73d6, U+73d9, U+73dd-73de, U+73e1, U+73e3-73e7, U+73e9-73ea,
    U+73ee, U+73f1, U+73f4-73f5, U+73f7-73fb, U+73fd, U+73ff-7401, U+7404-7405, U+7407, U+740a, U+7411, U+7413,
    U+741a-741b, U+7421, U+7424, U+7426, U+7428-7431, U+7433, U+7439-743a, U+743f-7441, U+7443-7444, U+7446-7447,
    U+744b, U+744d, U+7451-7453, U+7455, U+7457, U+7459-745a, U+745c-745d, U+745f, U+7462-7464, U+7466-746b,
    U+746d-7473, U+7476, U+747e, U+7480-7481, U+7485-7489, U+748b, U+748f-7492, U+7497-749a, U+749c, U+749e-74a3,
    U+74a5-74a6, U+74a8-74ab, U+74ae-74af, U+74b1-74b2, U+74b5, U+74b9-74bb, U+74bd, U+74bf, U+74c8-74ca, U+74cc,
    U+74cf-74d0, U+74d3-74d4, U+74d6, U+74d8, U+74da-74db, U+74de-74e0, U+74e3-74e4, U+74e7-74eb, U+74ee-74f2, U+74f4,
    U+74f7-74f8, U+74fa-74fc, U+74ff, U+7501, U+7503-7506, U+750c-750e;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.30.woff2)
    format('woff2');
  unicode-range:
    U+7166, U+7168, U+716c, U+7179, U+7180, U+7184-7185, U+7187-7188, U+718c, U+718f, U+7192, U+7194-7196, U+7199-719b,
    U+71a0, U+71a2, U+71a8, U+71ac, U+71ae-71b0, U+71b2-71b3, U+71b9-71ba, U+71be-71c1, U+71c4, U+71c9, U+71cb-71cc,
    U+71ce, U+71d0, U+71d2-71d4, U+71d6-71d7, U+71d9-71da, U+71dc, U+71df-71e0, U+71e6-71e7, U+71ec-71ee, U+71f4-71f5,
    U+71f8-71f9, U+71fc, U+71fe-7200, U+7207-7209, U+720d, U+7210, U+7213, U+7215, U+7217, U+721a, U+721d, U+721f,
    U+7224, U+7228, U+722b, U+722d, U+722f-7230, U+7232, U+7234, U+7238-7239, U+723b-723c, U+723e-7243, U+7245-7246,
    U+724b, U+724e-7250, U+7252-7253, U+7255-7258, U+725a, U+725c, U+725e, U+7260, U+7263, U+7268, U+726b, U+726e-726f,
    U+7271, U+7274, U+7277-7278, U+727b-727c, U+727e-7282, U+7284, U+7287, U+7289, U+728d-728e, U+7292-7293, U+7296,
    U+729b, U+72a2, U+72a7-72a8, U+72ad-72ae, U+72b0-72b2, U+72b4, U+72b9, U+72be, U+72c0-72c1, U+72c3-72c4,
    U+72c6-72c7, U+72c9, U+72cc, U+72ce, U+72d2, U+72d5-72d6, U+72d8, U+72df-72e2, U+72e5, U+72f3-72f4, U+72f7,
    U+72f9-72fb, U+72fd-72fe, U+7302, U+7304-7305, U+7307, U+730a-730b, U+730d, U+7312-7313, U+7316-7319, U+731c-731e,
    U+7322, U+7324, U+7327-7329, U+732c, U+732f, U+7331-7337, U+7339-733b, U+733d-733e, U+7343, U+734d-7350, U+7352,
    U+7356-7358, U+735d-7360, U+7366-736b;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.31.woff2)
    format('woff2');
  unicode-range:
    U+6f58-6f5b, U+6f5d-6f5e, U+6f60-6f62, U+6f66, U+6f68, U+6f6c-6f6d, U+6f6f, U+6f74, U+6f78, U+6f7a, U+6f7c-6f7e,
    U+6f80, U+6f82-6f83, U+6f86-6f88, U+6f8b-6f8e, U+6f90-6f94, U+6f96-6f98, U+6f9a, U+6f9d, U+6f9f-6fa1, U+6fa3,
    U+6fa5-6fa8, U+6fae-6fb1, U+6fb3, U+6fb5-6fb7, U+6fb9, U+6fbc, U+6fbe, U+6fc2, U+6fc5-6fca, U+6fd4-6fd5, U+6fd8,
    U+6fda-6fdb, U+6fde-6fe0, U+6fe4, U+6fe8-6fe9, U+6feb-6fec, U+6fee, U+6ff0, U+6ff3, U+6ff5-6ff6, U+6ff9-6ffa,
    U+6ffc-6ffe, U+7000-7001, U+7005-7007, U+7009-700b, U+700d, U+700f, U+7011, U+7015, U+7017-7018, U+701a-701b,
    U+701d-7020, U+7023, U+7026, U+7028, U+702f-7030, U+7032, U+7034, U+7037, U+7039-703a, U+703c, U+703e, U+7043-7044,
    U+7047-704c, U+704e, U+7051, U+7054-7055, U+705d-705e, U+7064-7065, U+7069, U+706c, U+706e, U+7075-7076, U+707e,
    U+7081, U+7085-7086, U+7094-7098, U+709b, U+709f, U+70a4, U+70ab-70ac, U+70ae-70b1, U+70b3-70b4, U+70b7, U+70bb,
    U+70ca-70cb, U+70d1, U+70d3-70d6, U+70d8-70d9, U+70dc-70dd, U+70df, U+70e4, U+70ec, U+70f1, U+70fa, U+70fd,
    U+7103-7108, U+710b-710c, U+710f, U+7114, U+7119, U+711c, U+711e, U+7120, U+712b, U+712d-7131, U+7138, U+7141,
    U+7145-7147, U+7149-714b, U+7150-7153, U+7155-7157, U+715a, U+715c, U+715e, U+7160, U+7162, U+7164-7165;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.32.woff2)
    format('woff2');
  unicode-range:
    U+6d7c, U+6d80-6d82, U+6d85, U+6d87, U+6d89-6d8a, U+6d8c-6d8e, U+6d91-6d98, U+6d9c, U+6daa-6dac, U+6dae,
    U+6db4-6db5, U+6db7-6db9, U+6dbd, U+6dbf, U+6dc2, U+6dc4-6dc8, U+6dca, U+6dcc, U+6dce-6dd0, U+6dd2, U+6dd5-6dd6,
    U+6dd8-6ddb, U+6ddd-6de0, U+6de2, U+6de4-6de6, U+6de8-6dea, U+6dec, U+6dee-6df0, U+6df2, U+6df4, U+6df6,
    U+6df8-6dfa, U+6dfc, U+6e00, U+6e04, U+6e0a, U+6e17, U+6e19, U+6e1d-6e20, U+6e22-6e25, U+6e27, U+6e2b, U+6e2d-6e2e,
    U+6e32, U+6e34, U+6e36, U+6e38-6e3c, U+6e42-6e45, U+6e48-6e49, U+6e4b-6e4f, U+6e51-6e54, U+6e57, U+6e5b-6e5f,
    U+6e62-6e63, U+6e68, U+6e6b, U+6e6e, U+6e72-6e73, U+6e76, U+6e7b, U+6e7d, U+6e82, U+6e89, U+6e8c-6e8d, U+6e8f,
    U+6e93, U+6e98-6e99, U+6e9f-6ea0, U+6ea5, U+6ea7, U+6eaa-6eab, U+6ead-6eaf, U+6eb1-6eb4, U+6eb7, U+6ebb-6ebd,
    U+6ebf-6ec4, U+6ec7-6eca, U+6ecc-6ecf, U+6ed3-6ed5, U+6ed9-6edb, U+6ee6, U+6eeb-6eef, U+6ef7-6ef9, U+6efb,
    U+6efd-6eff, U+6f04, U+6f08-6f0a, U+6f0c-6f0d, U+6f10-6f11, U+6f13, U+6f15-6f16, U+6f18, U+6f1a-6f1b, U+6f25-6f26,
    U+6f29-6f2a, U+6f2d, U+6f2f-6f33, U+6f35-6f36, U+6f38, U+6f3b-6f3c, U+6f3e-6f3f, U+6f41, U+6f45, U+6f4f,
    U+6f51-6f53, U+6f57;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.33.woff2)
    format('woff2');
  unicode-range:
    U+6b85, U+6b89, U+6b8d, U+6b95, U+6b97-6b98, U+6b9b, U+6b9e-6ba0, U+6ba2-6ba4, U+6ba8-6bb3, U+6bb7-6bb9,
    U+6bbc-6bbe, U+6bc0, U+6bc3-6bc4, U+6bc6-6bc9, U+6bcb-6bcc, U+6bcf, U+6bd3, U+6bd6-6bd8, U+6bda, U+6bdf, U+6be1,
    U+6be3, U+6be6-6be7, U+6beb-6bec, U+6bee, U+6bf1, U+6bf3, U+6bf7, U+6bf9, U+6bff, U+6c02, U+6c04-6c05, U+6c08-6c0a,
    U+6c0d-6c0e, U+6c10, U+6c12-6c14, U+6c19, U+6c1b, U+6c1f, U+6c24, U+6c26-6c28, U+6c2c, U+6c2e, U+6c33, U+6c35-6c36,
    U+6c3a-6c3b, U+6c3e-6c40, U+6c4a-6c4b, U+6c4d, U+6c4f, U+6c52, U+6c54-6c55, U+6c59, U+6c5b-6c5e, U+6c62,
    U+6c67-6c68, U+6c6a-6c6b, U+6c6d, U+6c6f, U+6c73-6c74, U+6c76, U+6c78-6c79, U+6c7b, U+6c7e, U+6c81-6c87, U+6c89,
    U+6c8c-6c8d, U+6c90, U+6c92-6c95, U+6c97-6c98, U+6c9a-6c9c, U+6c9f, U+6caa-6cae, U+6cb0-6cb2, U+6cb4, U+6cba,
    U+6cbd-6cbe, U+6cc2, U+6cc5-6cc6, U+6ccd, U+6ccf-6cd4, U+6cd6-6cd7, U+6cd9-6cdd, U+6ce0, U+6ce7, U+6ce9-6cef,
    U+6cf1-6cf2, U+6cf4, U+6cfb, U+6d00-6d01, U+6d04, U+6d07, U+6d0a, U+6d0c, U+6d0e-6d0f, U+6d11, U+6d13, U+6d19-6d1a,
    U+6d1f, U+6d24, U+6d26-6d28, U+6d2b, U+6d2e-6d2f, U+6d31, U+6d33-6d36, U+6d38-6d39, U+6d3c-6d3d, U+6d3f,
    U+6d57-6d5b, U+6d5e-6d61, U+6d64-6d65, U+6d67, U+6d6c, U+6d6f-6d70, U+6d79;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.34.woff2)
    format('woff2');
  unicode-range:
    U+69dd-69de, U+69e2-69e3, U+69e5, U+69e7-69eb, U+69ed-69ef, U+69f1-69f6, U+69f9, U+69fe-6a01, U+6a03, U+6a05,
    U+6a0a, U+6a0c, U+6a0f, U+6a11-6a15, U+6a17, U+6a1a-6a1b, U+6a1d-6a20, U+6a22-6a24, U+6a28, U+6a2e, U+6a30,
    U+6a32-6a38, U+6a3b, U+6a3e-6a3f, U+6a44-6a4a, U+6a4e, U+6a50-6a52, U+6a54-6a56, U+6a5b, U+6a61-6a62, U+6a64,
    U+6a66-6a67, U+6a6a-6a6b, U+6a71-6a73, U+6a78, U+6a7a, U+6a7e-6a7f, U+6a81, U+6a83-6a84, U+6a86-6a87, U+6a89,
    U+6a8b, U+6a8d, U+6a90-6a91, U+6a94, U+6a97, U+6a9b, U+6a9d-6aa3, U+6aa5, U+6aaa-6aac, U+6aae-6ab1, U+6ab3-6ab4,
    U+6ab8, U+6abb, U+6abd-6abf, U+6ac1-6ac3, U+6ac6, U+6ac8-6ac9, U+6acc, U+6ad0-6ad1, U+6ad3-6ad6, U+6ada-6adf,
    U+6ae2, U+6ae4, U+6ae7-6ae8, U+6aea, U+6aec, U+6af0-6af3, U+6af8, U+6afa, U+6afc-6afd, U+6b02-6b03, U+6b06-6b07,
    U+6b09-6b0b, U+6b0f-6b12, U+6b16-6b17, U+6b1b, U+6b1d-6b1f, U+6b23-6b24, U+6b28, U+6b2b-6b2c, U+6b2f, U+6b35-6b39,
    U+6b3b, U+6b3d, U+6b3f, U+6b43, U+6b46-6b47, U+6b49-6b4a, U+6b4d-6b4e, U+6b50, U+6b52, U+6b54, U+6b56, U+6b58-6b59,
    U+6b5b, U+6b5d, U+6b5f-6b61, U+6b65, U+6b67, U+6b6b-6b6c, U+6b6e, U+6b70, U+6b72, U+6b75, U+6b77-6b7a, U+6b7d-6b84;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.35.woff2)
    format('woff2');
  unicode-range:
    U+6855, U+6857-6859, U+685b, U+685d, U+685f, U+6863, U+6867, U+686b, U+686e-6872, U+6874-6875, U+6877, U+6879-687c,
    U+687e-687f, U+6882-6884, U+6886, U+6888, U+688d-6890, U+6894, U+6896, U+6898-689c, U+689f-68a3, U+68a5-68a7,
    U+68a9-68ab, U+68ad-68af, U+68b2-68b5, U+68b9-68bc, U+68c3, U+68c5-68c6, U+68c8-68ca, U+68cc-68cd, U+68cf-68d1,
    U+68d3-68d9, U+68dc-68dd, U+68e0-68e1, U+68e3-68e5, U+68e7-68e8, U+68ea-68ed, U+68ef-68f1, U+68f5-68f7, U+68f9,
    U+68fb-68fd, U+6900-6901, U+6903-6904, U+6906-690c, U+690f-6911, U+6913, U+6916-6917, U+6919-691b, U+6921-6923,
    U+6925-6926, U+6928, U+692a, U+6930-6931, U+6933-6936, U+6938-6939, U+693b, U+693d, U+6942, U+6945-6946, U+6949,
    U+694e, U+6954, U+6957, U+6959, U+695b-695e, U+6961-6966, U+6968-696c, U+696e-6974, U+6977-697b, U+697e-6981,
    U+6986, U+698d, U+6991-6992, U+6994-6996, U+6998, U+699c, U+69a0-69a1, U+69a5-69a8, U+69ab, U+69ad, U+69af-69b2,
    U+69b4, U+69b7-69b8, U+69ba-69bc, U+69be-69c1, U+69c3, U+69c5, U+69c7-69c8, U+69ca, U+69ce-69d1, U+69d3,
    U+69d6-69d7, U+69d9;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.36.woff2)
    format('woff2');
  unicode-range:
    U+667e-6680, U+6683-6684, U+6688, U+668b-668e, U+6690, U+6692, U+6698-669d, U+669f-66a0, U+66a2, U+66a4, U+66ad,
    U+66b1-66b3, U+66b5, U+66b8-66b9, U+66bb-66bc, U+66be-66c4, U+66c6, U+66c8-66c9, U+66cc, U+66ce-66cf, U+66d4,
    U+66da-66db, U+66dd, U+66df-66e0, U+66e6, U+66e8-66e9, U+66eb-66ec, U+66ee, U+66f5, U+66f7, U+66fa-66fc, U+6701,
    U+6705, U+6707, U+670c, U+670e-6710, U+6712-6716, U+6719, U+671c, U+671e, U+6720, U+6722, U+6725-6726, U+672e,
    U+6733, U+6735-6738, U+673e-673f, U+6741, U+6743, U+6745-6748, U+674c-674d, U+6753-6755, U+6759, U+675d-675e,
    U+6760, U+6762-6764, U+6766, U+676a, U+676c, U+676e, U+6770, U+6772-6774, U+6776-6777, U+677b-677c, U+6780-6781,
    U+6784-6785, U+6787, U+6789, U+678b-678c, U+678e-678f, U+6791-6793, U+6796, U+6798-6799, U+679b, U+67a1, U+67a4,
    U+67a6, U+67a9, U+67b0-67b5, U+67b7-67b9, U+67bb-67be, U+67c0-67c3, U+67c5-67c6, U+67c8-67c9, U+67ce, U+67d2,
    U+67d7-67d9, U+67db-67de, U+67e1-67e2, U+67e4, U+67e6-67e7, U+67e9, U+67ec, U+67ee-67f0, U+67f2, U+67f6-67f7,
    U+67f9-67fa, U+67fc, U+67fe, U+6801-6802, U+6805, U+6810, U+6814, U+6818-6819, U+681d, U+681f, U+6822, U+6827-6829,
    U+682b-682d, U+682f-6834, U+683b, U+683e-6840, U+6844-6846, U+6849-684a, U+684c-684e, U+6852-6854;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.37.woff2)
    format('woff2');
  unicode-range:
    U+64d2, U+64d4-64d5, U+64d7-64d8, U+64da, U+64e0-64e1, U+64e3-64e5, U+64e7, U+64e9-64ea, U+64ed, U+64ef-64f2,
    U+64f4-64f7, U+64fa-64fb, U+64fd-6501, U+6504-6505, U+6508-650a, U+650f, U+6513-6514, U+6516, U+6518-6519,
    U+651b-651f, U+6522, U+6524, U+6526, U+6529-652c, U+652e, U+6531-6532, U+6534-6538, U+653a, U+653c-653d,
    U+6543-6544, U+6547-6549, U+654d-654e, U+6550, U+6552, U+6554-6556, U+6558, U+655d-6560, U+6567, U+656b, U+6572,
    U+6578, U+657a, U+657d, U+6581-6585, U+6588, U+658a, U+658c, U+6592, U+6595, U+6598, U+659b, U+659d, U+659f-65a1,
    U+65a3-65a6, U+65ab, U+65ae, U+65b2-65b5, U+65b7-65b8, U+65be-65bf, U+65c1-65c4, U+65c6, U+65c8-65c9, U+65cc,
    U+65ce, U+65d0, U+65d2, U+65d4, U+65d6, U+65d8-65d9, U+65db, U+65df-65e1, U+65e3, U+65f0-65f2, U+65f4-65f5, U+65f9,
    U+65fb-65fc, U+65fe-6600, U+6603-6604, U+6608-660a, U+660d, U+6611-6612, U+6615-6616, U+661c-661e, U+6621-6624,
    U+6626, U+6629-662c, U+662e, U+6630-6631, U+6633-6637, U+6639-663b, U+663f-6641, U+6644-6646, U+6648-664a, U+664c,
    U+664e-664f, U+6651, U+6657-6665, U+6667-6668, U+666a-666d, U+6670, U+6673, U+6675, U+6677-6679, U+667b-667c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.38.woff2)
    format('woff2');
  unicode-range:
    U+62cf, U+62d1, U+62d4-62d6, U+62da, U+62dc, U+62ea, U+62ee-62ef, U+62f1-62f2, U+62f4-62f5, U+62fc-62fd, U+62ff,
    U+6302-6304, U+6308-630d, U+6310, U+6313, U+6316, U+6318, U+631b, U+6327, U+6329-632a, U+632d, U+6332, U+6335-6336,
    U+6339-633c, U+633e, U+6341-6344, U+6346, U+634a-634e, U+6350, U+6352-6354, U+6358-6359, U+635b, U+6365-6366,
    U+6369, U+636b-636d, U+6371-6372, U+6374-6378, U+637a, U+637c-637d, U+637f-6380, U+6382, U+6384, U+6387,
    U+6389-638a, U+638e-6390, U+6394-6396, U+6399-639a, U+639e, U+63a0, U+63a3-63a4, U+63a6, U+63a9, U+63ab-63af,
    U+63b5, U+63bd-63be, U+63c0-63c1, U+63c4-63c6, U+63c8, U+63ce, U+63d1-63d6, U+63dc, U+63e0, U+63e3, U+63e5,
    U+63e9-63ed, U+63f2-63f3, U+63f5-63f9, U+6406, U+6409-640a, U+640f-6410, U+6412-6414, U+6416-6418, U+641e, U+6420,
    U+6422, U+6424-6426, U+6428-642a, U+642f-6430, U+6434-6436, U+643d, U+643f, U+644b, U+644e-644f, U+6451-6454,
    U+645a-645d, U+645f-6461, U+6463, U+6467, U+646d, U+6473-6474, U+6476, U+6478-6479, U+647b, U+647d, U+6485,
    U+6487-6488, U+648f-6491, U+6493, U+6495, U+6498-649b, U+649d-649f, U+64a1, U+64a3, U+64a6, U+64a8-64a9, U+64ac,
    U+64b3, U+64bb-64bf, U+64c2, U+64c4-64c5, U+64c7, U+64c9-64cc, U+64ce, U+64d0-64d1;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.39.woff2)
    format('woff2');
  unicode-range:
    U+6117, U+6119, U+611c, U+611e, U+6120-6122, U+6127-6128, U+612a-612c, U+6130-6131, U+6134-6137, U+6139-613a,
    U+613c-613f, U+6141-6142, U+6144-6147, U+6149-614a, U+614d, U+6153, U+6158-615a, U+615d-6160, U+6164-6165,
    U+616b-616c, U+616f, U+6171-6175, U+6177-6178, U+617b-6181, U+6183-6184, U+6187, U+618a-618b, U+618d, U+6192-6194,
    U+6196-619a, U+619c-619d, U+619f-61a0, U+61a5, U+61a8, U+61aa-61ae, U+61b8-61ba, U+61bc, U+61be, U+61c0-61c3,
    U+61c6, U+61c8, U+61ca-61cf, U+61d5, U+61dc-61df, U+61e1-61e3, U+61e5-61e9, U+61ec-61ed, U+61ef, U+61f4-61f7,
    U+61fa, U+61fc-6201, U+6203-6204, U+6207-620a, U+620d-620e, U+6213-6215, U+621b-621e, U+6220-6223, U+6227,
    U+6229-622b, U+622e, U+6230-6233, U+6236, U+6239, U+623d-623e, U+6241-6244, U+6246, U+6248, U+624c, U+624e,
    U+6250-6252, U+6254, U+6256, U+6258, U+625a-625c, U+625e, U+6260-6261, U+6263-6264, U+6268, U+626d, U+626f, U+6273,
    U+627a-627e, U+6282-6283, U+6285, U+6289, U+628d-6290, U+6292-6294, U+6296, U+6299, U+629b, U+62a6, U+62a8, U+62ac,
    U+62b3, U+62b6-62b7, U+62ba-62bb, U+62be-62bf, U+62c2, U+62c4, U+62c6-62c8, U+62ca, U+62ce;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.40.woff2)
    format('woff2');
  unicode-range:
    U+5f6c-5f6d, U+5f6f, U+5f72-5f75, U+5f78, U+5f7a, U+5f7d-5f7f, U+5f82-5f83, U+5f87-5f89, U+5f8d, U+5f8f, U+5f91,
    U+5f96, U+5f99, U+5f9c-5f9d, U+5fa0, U+5fa2, U+5fa4, U+5fa7-5fa8, U+5fab-5fad, U+5faf-5fb1, U+5fb5, U+5fb7-5fb8,
    U+5fbc-5fbd, U+5fc4, U+5fc7-5fc9, U+5fcb, U+5fd0-5fd4, U+5fdd-5fde, U+5fe1-5fe2, U+5fe4, U+5fe8-5fea, U+5fec-5ff3,
    U+5ff6, U+5ff8, U+5ffa-5ffd, U+5fff, U+6007, U+600a, U+600d-6010, U+6013-6015, U+6017-601b, U+601f, U+6021-6022,
    U+6024, U+6026, U+6029, U+602b, U+602d, U+6031, U+6033, U+6035, U+603a, U+6040-6043, U+6046-604a, U+604c-604d,
    U+6051, U+6054-6057, U+6059-605a, U+605d, U+605f-6064, U+6067, U+606a-606c, U+6070-6071, U+6077, U+607e-607f,
    U+6081-6086, U+6088-608e, U+6091-6093, U+6095-6098, U+609a-609b, U+609d-609e, U+60a2, U+60a4-60a5, U+60a7-60a8,
    U+60b0-60b1, U+60b3-60b5, U+60b7-60b8, U+60bb, U+60bd-60be, U+60c2, U+60c4, U+60c6-60cb, U+60ce-60cf, U+60d3-60d5,
    U+60d8-60d9, U+60db, U+60dd-60df, U+60e1-60e2, U+60e5, U+60ee, U+60f0-60f2, U+60f4-60f8, U+60fa-60fd, U+6100,
    U+6102-6103, U+6106-6108, U+610a, U+610c-610e, U+6110-6114, U+6116;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.41.woff2)
    format('woff2');
  unicode-range:
    U+5d9b, U+5d9d, U+5d9f-5da0, U+5da2, U+5da4, U+5da7, U+5dab-5dac, U+5dae, U+5db0, U+5db2, U+5db4, U+5db7-5db9,
    U+5dbc-5dbd, U+5dc3, U+5dc7, U+5dc9, U+5dcb-5dce, U+5dd0-5dd3, U+5dd6-5dd9, U+5ddb, U+5de0, U+5de2, U+5de4, U+5de9,
    U+5df2, U+5df5, U+5df8-5df9, U+5dfd, U+5dff-5e00, U+5e07, U+5e0b, U+5e0d, U+5e11-5e12, U+5e14-5e15, U+5e18-5e1b,
    U+5e1f-5e20, U+5e25, U+5e28, U+5e2e, U+5e32, U+5e35-5e37, U+5e3e, U+5e40, U+5e43-5e44, U+5e47, U+5e49, U+5e4b,
    U+5e4e, U+5e50-5e51, U+5e54, U+5e56-5e58, U+5e5b-5e5c, U+5e5e-5e5f, U+5e62, U+5e64, U+5e68, U+5e6a-5e6e, U+5e70,
    U+5e75-5e77, U+5e7a, U+5e7f-5e80, U+5e87, U+5e8b, U+5e8e, U+5e96, U+5e99-5e9a, U+5ea0, U+5ea2, U+5ea4-5ea5, U+5ea8,
    U+5eaa, U+5eac, U+5eb1, U+5eb3, U+5eb8-5eb9, U+5ebd-5ebf, U+5ec1-5ec2, U+5ec6, U+5ec8, U+5ecb-5ecc, U+5ece-5ed6,
    U+5ed9-5ee2, U+5ee5, U+5ee8-5ee9, U+5eeb-5eec, U+5ef0-5ef1, U+5ef3-5ef4, U+5ef8-5ef9, U+5efc-5f00, U+5f02-5f03,
    U+5f06-5f09, U+5f0b-5f0e, U+5f11, U+5f16-5f17, U+5f19, U+5f1b-5f1e, U+5f21-5f24, U+5f27-5f29, U+5f2b-5f30, U+5f34,
    U+5f36, U+5f38, U+5f3a-5f3d, U+5f3f-5f41, U+5f44-5f45, U+5f47-5f48, U+5f4a, U+5f4c-5f4e, U+5f50-5f51, U+5f54,
    U+5f56-5f58, U+5f5b-5f5d, U+5f60, U+5f63-5f65, U+5f67, U+5f6a;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.42.woff2)
    format('woff2');
  unicode-range:
    U+5bbc, U+5bc0-5bc1, U+5bc3, U+5bc7, U+5bc9, U+5bcd-5bd0, U+5bd3-5bd4, U+5bd6-5bda, U+5bde, U+5be0-5be2,
    U+5be4-5be6, U+5be8, U+5beb-5bec, U+5bef-5bf1, U+5bf3-5bf6, U+5bfd, U+5c03, U+5c05, U+5c07-5c09, U+5c0c-5c0d,
    U+5c12-5c14, U+5c17, U+5c19, U+5c1e-5c20, U+5c22-5c24, U+5c26, U+5c28-5c2e, U+5c30, U+5c32, U+5c35-5c36,
    U+5c38-5c39, U+5c46, U+5c4d-5c50, U+5c53, U+5c59-5c5c, U+5c5f-5c63, U+5c67-5c69, U+5c6c-5c70, U+5c74-5c76,
    U+5c79-5c7d, U+5c87-5c88, U+5c8a, U+5c8c, U+5c8f, U+5c91-5c92, U+5c94, U+5c9d, U+5c9f-5ca0, U+5ca2-5ca3,
    U+5ca6-5ca8, U+5caa-5cab, U+5cad, U+5cb1-5cb2, U+5cb4-5cb7, U+5cba-5cbc, U+5cbe, U+5cc5, U+5cc7, U+5cc9, U+5ccb,
    U+5cd0, U+5cd2, U+5cd7, U+5cd9, U+5cdd, U+5ce6, U+5ce8-5cea, U+5ced-5cee, U+5cf1-5cf2, U+5cf4-5cf5, U+5cfa-5cfb,
    U+5cfd, U+5d01, U+5d06, U+5d0b, U+5d0d, U+5d10-5d12, U+5d14-5d15, U+5d17-5d1b, U+5d1d, U+5d1f-5d20, U+5d22-5d24,
    U+5d26-5d27, U+5d2b, U+5d31, U+5d34, U+5d39, U+5d3d, U+5d3f, U+5d42-5d43, U+5d46-5d48, U+5d4a-5d4b, U+5d4e,
    U+5d51-5d53, U+5d55, U+5d59, U+5d5c, U+5d5f-5d62, U+5d64, U+5d69-5d6a, U+5d6c-5d6d, U+5d6f-5d70, U+5d73, U+5d76,
    U+5d79-5d7a, U+5d7e-5d7f, U+5d81-5d84, U+5d87-5d88, U+5d8a, U+5d8c, U+5d90, U+5d92-5d95, U+5d97, U+5d99;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.43.woff2)
    format('woff2');
  unicode-range:
    U+598b-598e, U+5992, U+5995, U+5997, U+599b, U+599d, U+599f, U+59a3-59a4, U+59a7, U+59ad-59b0, U+59b2-59b3, U+59b7,
    U+59ba, U+59bc, U+59be, U+59c1, U+59c3-59c4, U+59c6, U+59c8, U+59ca, U+59cd, U+59d2, U+59d9-59da, U+59dd-59df,
    U+59e3-59e5, U+59e7-59e8, U+59ec, U+59ee-59ef, U+59f1-59f2, U+59f4, U+59f6-59f8, U+5a00, U+5a03-5a04, U+5a09,
    U+5a0c-5a0e, U+5a11-5a13, U+5a17, U+5a1a-5a1c, U+5a1e-5a1f, U+5a23-5a25, U+5a27-5a28, U+5a2a, U+5a2d, U+5a30,
    U+5a35-5a36, U+5a40-5a41, U+5a44-5a45, U+5a47-5a49, U+5a4c, U+5a50, U+5a55, U+5a5e, U+5a62-5a63, U+5a65, U+5a67,
    U+5a6a, U+5a6c-5a6d, U+5a77, U+5a7a-5a7b, U+5a7e, U+5a84, U+5a8b, U+5a90, U+5a93, U+5a96, U+5a99, U+5a9c,
    U+5a9e-5aa0, U+5aa2, U+5aa7, U+5aac, U+5ab1-5ab3, U+5ab5, U+5ab8, U+5aba-5abf, U+5ac2, U+5ac4, U+5ac6, U+5ac8,
    U+5acb, U+5acf-5ad0, U+5ad6-5ad7, U+5ada, U+5adc, U+5ae0-5ae1, U+5ae3, U+5ae5-5ae6, U+5ae9-5aea, U+5aee, U+5af0,
    U+5af5-5af6, U+5afa-5afb, U+5afd, U+5b00-5b01, U+5b08, U+5b0b, U+5b16-5b17, U+5b19, U+5b1b, U+5b1d, U+5b21, U+5b25,
    U+5b2a, U+5b2c-5b2d, U+5b30, U+5b32, U+5b34, U+5b36, U+5b38, U+5b3e, U+5b40-5b41, U+5b43, U+5b45, U+5b4b-5b4c,
    U+5b51-5b52, U+5b56, U+5b5a-5b5c, U+5b5e-5b5f, U+5b65, U+5b68-5b69, U+5b6e-5b71, U+5b73, U+5b75-5b76, U+5b7a,
    U+5b7c-5b84, U+5b86, U+5b8a-5b8b, U+5b8d-5b8e, U+5b90-5b91, U+5b93-5b94, U+5b96, U+5ba5-5ba6, U+5ba8-5ba9,
    U+5bac-5bad, U+5baf, U+5bb1-5bb2, U+5bb7-5bb8, U+5bba;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.44.woff2)
    format('woff2');
  unicode-range:
    U+57b3, U+57b8, U+57bd, U+57c0, U+57c3, U+57c6-57c8, U+57cc, U+57cf, U+57d2-57d7, U+57dc-57de, U+57e0-57e1,
    U+57e3-57e4, U+57e6-57e7, U+57e9, U+57ed, U+57f0, U+57f4-57f6, U+57f8, U+57fb, U+57fd-57ff, U+5803-5804,
    U+5808-580d, U+5819, U+581b, U+581d-5821, U+5826-5827, U+582d, U+582f-5830, U+5832, U+5835, U+5839, U+583d,
    U+583f-5840, U+5849, U+584b-584d, U+584f-5852, U+5855, U+5858-5859, U+585f, U+5861-5862, U+5864, U+5867-5868,
    U+586d, U+5870, U+5872, U+5878-5879, U+587c, U+587f-5881, U+5885, U+5887-588d, U+588f-5890, U+5894, U+5896, U+5898,
    U+589d-589e, U+58a0-58a2, U+58a6, U+58a9-58ab, U+58ae, U+58b1-58b3, U+58b8-58bc, U+58be, U+58c2-58c5, U+58c8,
    U+58cd-58ce, U+58d0-58da, U+58dc-58e2, U+58e4-58e5, U+58e9, U+58ec, U+58ef, U+58f3-58f4, U+58f7, U+58f9,
    U+58fb-58fd, U+5902, U+5905-5906, U+590a-590d, U+5910, U+5912-5914, U+5918-5919, U+591b, U+591d, U+591f, U+5921,
    U+5923-5925, U+5928, U+592c-592d, U+592f-5930, U+5932-5933, U+5935-5936, U+5938-5939, U+593d-593f, U+5943, U+5946,
    U+594e, U+5950, U+5952-5953, U+5955, U+5957-595b, U+595d-5961, U+5963, U+5967, U+5969, U+596b-596d, U+596f, U+5972,
    U+5975-5976, U+5978-5979, U+597b-597c, U+5981;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.45.woff2)
    format('woff2');
  unicode-range:
    U+5616-5617, U+5619, U+561b, U+5620, U+5628, U+562c, U+562f-5639, U+563b-563d, U+563f-5641, U+5643-5644,
    U+5646-5647, U+5649, U+564b, U+564d-5650, U+5653-5654, U+565e, U+5660-5664, U+5666, U+5669-566d, U+566f,
    U+5671-5672, U+5675-5676, U+5678, U+567a, U+5680, U+5684-5688, U+568a-568c, U+568f, U+5694-5695, U+5699-569a,
    U+569d-56a0, U+56a5-56a9, U+56ab-56ae, U+56b1-56b4, U+56b6-56b7, U+56bc, U+56be, U+56c0, U+56c2-56c3, U+56c5,
    U+56c8-56d1, U+56d3, U+56d7-56d9, U+56dc-56dd, U+56df, U+56e1, U+56e4-56e8, U+56eb, U+56ed-56ee, U+56f1,
    U+56f6-56f7, U+56f9, U+56ff-5704, U+5707-570a, U+570c-570d, U+5711, U+5713, U+5715-5716, U+5718, U+571a-571d,
    U+5720-5726, U+5729-572a, U+572c, U+572e-572f, U+5733-5734, U+5737-5738, U+573b, U+573d-573f, U+5745-5746,
    U+574c-574f, U+5751-5752, U+5759, U+575f, U+5761-5762, U+5764-5765, U+5767-5769, U+576b, U+576d-5771, U+5773-5775,
    U+5777, U+5779-577c, U+577e-577f, U+5781, U+5783, U+5788-5789, U+578c, U+5793-5795, U+5797, U+5799-579a,
    U+579c-57a1, U+57a4, U+57a7-57aa, U+57ac, U+57ae, U+57b0;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.46.woff2)
    format('woff2');
  unicode-range:
    U+543f-5440, U+5443-5444, U+5447, U+544c-544f, U+5455, U+545e, U+5462, U+5464, U+5466-5467, U+5469, U+546b-546e,
    U+5470-5471, U+5474-5477, U+547b, U+547f-5481, U+5483-5486, U+5488-548b, U+548d-5492, U+5495-5496, U+549c,
    U+549f-54a2, U+54a4, U+54a6-54af, U+54b1, U+54b7-54bc, U+54be-54bf, U+54c2-54c4, U+54c6-54c8, U+54ca, U+54cd-54ce,
    U+54d8, U+54e0, U+54e2, U+54e5-54e6, U+54e8-54ea, U+54ec-54ef, U+54f1, U+54f3, U+54f6, U+54fc-5501, U+5505,
    U+5508-5509, U+550c-550f, U+5514-5516, U+5527, U+552a-552b, U+552e, U+5532-5533, U+5535-5536, U+5538-5539,
    U+553b-553d, U+5540-5541, U+5544-5545, U+5547, U+5549-554a, U+554c-554d, U+5550-5551, U+5556-5558, U+555a-555e,
    U+5560-5561, U+5563-5564, U+5566, U+557b-5583, U+5586-5588, U+558a, U+558e-558f, U+5591-5594, U+5597, U+5599,
    U+559e-559f, U+55a3-55a4, U+55a8-55a9, U+55ac-55ae, U+55b2, U+55bf, U+55c1, U+55c3-55c4, U+55c6-55c7, U+55c9,
    U+55cb-55cc, U+55ce, U+55d1-55d4, U+55d7-55d8, U+55da-55db, U+55dd-55df, U+55e2, U+55e4, U+55e9, U+55ec, U+55ee,
    U+55f1, U+55f6-55f9, U+55fd-55ff, U+5605, U+5607-5608, U+560a, U+560d-5612;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.47.woff2)
    format('woff2');
  unicode-range:
    U+528d, U+5291-5298, U+529a, U+529c, U+52a4-52a7, U+52ab-52ad, U+52af-52b0, U+52b5-52b8, U+52ba-52be, U+52c0-52c1,
    U+52c4-52c6, U+52c8, U+52ca, U+52cc-52cd, U+52cf-52d2, U+52d4, U+52d6-52d7, U+52db-52dc, U+52de, U+52e0-52e1,
    U+52e3, U+52e5-52e6, U+52e8-52ea, U+52ec, U+52f0-52f1, U+52f3-52fb, U+5300-5301, U+5303, U+5306-5308, U+530a-530d,
    U+530f-5311, U+5313, U+5315, U+5318-531f, U+5321, U+5323-5325, U+5327-532d, U+532f-5333, U+5335, U+5338,
    U+533c-533e, U+5340, U+5342, U+5345-5346, U+5349, U+534b-534c, U+5359, U+535b, U+535e, U+5361, U+5363-5367, U+5369,
    U+536c-536e, U+5372, U+5377, U+5379-537b, U+537d-537f, U+5382-5383, U+5387-5389, U+538e, U+5393-5394, U+5396,
    U+5398-5399, U+539d, U+53a0-53a1, U+53a4-53a6, U+53a9-53ab, U+53ad-53b0, U+53b2, U+53b4-53b8, U+53ba, U+53bd,
    U+53c0-53c1, U+53c3-53c5, U+53cf, U+53d2-53d3, U+53d5, U+53da-53db, U+53dd-53e0, U+53e2, U+53e6-53e8, U+53ed-53ee,
    U+53f4-53f5, U+53fa, U+5401-5403, U+540b, U+540f, U+5412-5413, U+541a, U+541d-541e, U+5421, U+5424, U+5427-542a,
    U+542c-542f, U+5431, U+5433-5436, U+543c-543d;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.48.woff2)
    format('woff2');
  unicode-range:
    U+50dd-50df, U+50e1-50e6, U+50e8-50e9, U+50ed-50f6, U+50f9-50fb, U+50fe, U+5101-5103, U+5106-5109, U+510b-510e,
    U+5110, U+5112, U+5114-511e, U+5121, U+5123, U+5127-5128, U+512c-512d, U+512f, U+5131, U+5133-5135, U+5137-513c,
    U+513f-5142, U+5147, U+514a, U+514c, U+514f, U+5152-5155, U+5157-5158, U+515f-5160, U+5162, U+5164, U+5166-5167,
    U+5169-516a, U+516e, U+5173-5174, U+5179, U+517b, U+517e, U+5180, U+5182-5184, U+5189, U+518b-518c, U+518e-5191,
    U+5193, U+5195-5196, U+5198, U+519d, U+51a1-51a4, U+51a6, U+51a9-51ab, U+51ad, U+51b0-51b3, U+51b5, U+51b8, U+51ba,
    U+51bc-51bf, U+51c2-51c3, U+51c5, U+51c8-51cb, U+51cf, U+51d1-51d6, U+51d8, U+51de-51e0, U+51e2, U+51e5, U+51e7,
    U+51e9, U+51ec-51ee, U+51f2-51f5, U+51f7, U+51fe, U+5201-5202, U+5204-5205, U+520b, U+520e, U+5212-5216, U+5218,
    U+5222, U+5226-5228, U+522a-522b, U+522e, U+5231-5233, U+5235, U+523c, U+5244-5245, U+5249, U+524b-524c, U+524f,
    U+5254-5255, U+5257-5258, U+525a, U+525c-5261, U+5266, U+5269, U+526c, U+526e, U+5271, U+5273-5274, U+5277-5279,
    U+527d, U+527f-5280, U+5282-5285, U+5288-528a, U+528c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.49.woff2)
    format('woff2');
  unicode-range:
    U+4f57-4f58, U+4f5a-4f5b, U+4f5d-4f5f, U+4f63-4f64, U+4f69-4f6a, U+4f6c, U+4f6e-4f71, U+4f76-4f7e, U+4f81-4f85,
    U+4f88-4f8a, U+4f8c, U+4f8e-4f90, U+4f92-4f94, U+4f96-4f9a, U+4f9e-4fa0, U+4fab, U+4fad, U+4faf, U+4fb2, U+4fb7,
    U+4fb9, U+4fbb-4fbe, U+4fc0-4fc1, U+4fc4-4fc6, U+4fc8-4fc9, U+4fcb-4fd4, U+4fd8, U+4fda-4fdc, U+4fdf-4fe0, U+4fe2,
    U+4fe4-4fe6, U+4fef-4ff2, U+4ff6, U+4ffc-5002, U+5004-5007, U+500a, U+500c, U+500e-5011, U+5013-5014, U+5016-5018,
    U+501a-501e, U+5021-5023, U+5025-502a, U+502c-502e, U+5030, U+5032-5033, U+5035, U+5039, U+503b, U+5040-5043,
    U+5045-5048, U+504a, U+504c, U+504e, U+5050-5053, U+5055-5057, U+5059-505a, U+505f-5060, U+5062-5063, U+5066-5067,
    U+506a, U+506c-506d, U+5070-5072, U+5077-5078, U+5080-5081, U+5083-5086, U+5088, U+508a, U+508e-5090, U+5092-5096,
    U+509a-509c, U+509e-50a3, U+50aa, U+50ad, U+50af-50b4, U+50b9-50bb, U+50bd, U+50c0, U+50c2-50c4, U+50c7,
    U+50c9-50ca, U+50cc, U+50ce, U+50d0-50d1, U+50d3-50d4, U+50d6, U+50d8-50d9, U+50dc;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.50.woff2)
    format('woff2');
  unicode-range:
    U+4093, U+4103, U+4105, U+4148, U+414f, U+4163, U+41b4, U+41bf, U+41e6, U+41ee, U+41f3, U+4207, U+420e, U+4264,
    U+4293, U+42c6, U+42d6, U+42dd, U+4302, U+432b, U+4343, U+43ee, U+43f0, U+4408, U+440c, U+4417, U+441c, U+4422,
    U+4453, U+445b, U+4476, U+447a, U+4491, U+44b3, U+44be, U+44d4, U+4508, U+450d, U+4525, U+4543, U+457a, U+459d,
    U+45b8, U+45be, U+45e5, U+45ea, U+460f-4610, U+4641, U+4665, U+46a1, U+46ae-46af, U+470c, U+471f, U+4764, U+47e6,
    U+47fd, U+4816, U+481e, U+4844, U+484e, U+48b5, U+49b0, U+49e7, U+49fa, U+4a04, U+4a29, U+4abc, U+4b38, U+4b3b,
    U+4b7e, U+4bc2, U+4bca, U+4bd2, U+4be8, U+4c17, U+4c20, U+4c38, U+4cc4, U+4cd1, U+4ce1, U+4d07, U+4d77, U+4e02,
    U+4e04-4e05, U+4e0c, U+4e0f-4e12, U+4e15, U+4e17, U+4e19, U+4e1e-4e1f, U+4e23-4e24, U+4e28-4e2c, U+4e2e-4e31,
    U+4e35-4e37, U+4e3f-4e42, U+4e44, U+4e47-4e48, U+4e4d-4e4e, U+4e51, U+4e55-4e56, U+4e58, U+4e5a-4e5c, U+4e62-4e63,
    U+4e68-4e69, U+4e74-4e75, U+4e79, U+4e7f, U+4e82, U+4e85, U+4e8a, U+4e8d-4e8e, U+4e96-4e99, U+4e9d-4ea0, U+4ea2,
    U+4ea5-4ea6, U+4ea8, U+4eaf-4eb0, U+4eb3, U+4eb6, U+4eb9, U+4ebb-4ebc, U+4ec2-4ec4, U+4ec6-4ec8, U+4ecd, U+4ed0,
    U+4ed7, U+4eda-4edb, U+4edd-4ee2, U+4ee8, U+4eeb, U+4eed, U+4eef, U+4ef1, U+4ef3, U+4ef5, U+4ef7, U+4efc-4f00,
    U+4f02-4f03, U+4f08-4f09, U+4f0b-4f0d, U+4f12, U+4f15-4f17, U+4f19, U+4f1c, U+4f2b, U+4f2e, U+4f30-4f31, U+4f33,
    U+4f35-4f37, U+4f39, U+4f3b, U+4f3e, U+4f40, U+4f42-4f43, U+4f48-4f49, U+4f4b-4f4c, U+4f52, U+4f54, U+4f56;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.51.woff2)
    format('woff2');
  unicode-range:
    U+3395-339b, U+339e-33a0, U+33a2-33ff, U+3402, U+3405-3406, U+3427, U+342c, U+342e, U+3468, U+346a, U+3488, U+3492,
    U+34b5, U+34bc, U+34c1, U+34c7, U+34db, U+351f, U+353e, U+355d-355e, U+3563, U+356e, U+35a6, U+35a8, U+35c5, U+35da,
    U+35de, U+35f4, U+3605, U+3614, U+364a, U+3691, U+3696, U+3699, U+36cf, U+3761-3762, U+376b-376c, U+3775, U+378d,
    U+37c1, U+37e2, U+37e8, U+37f4, U+37fd, U+3800, U+382f, U+3836, U+3840, U+385c, U+3861, U+38a1, U+38ad, U+38fa,
    U+3917, U+391a, U+396f, U+39a4, U+39b8, U+3a5c, U+3a6e, U+3a73, U+3a85, U+3ac4, U+3acb, U+3ad6-3ad7, U+3aea, U+3af3,
    U+3b0e, U+3b1a, U+3b1c, U+3b22, U+3b35, U+3b6d, U+3b77, U+3b87-3b88, U+3b8d, U+3ba4, U+3bb6, U+3bc3, U+3bcd, U+3bf0,
    U+3bf3, U+3c0f, U+3c26, U+3cc3, U+3cd2, U+3d11, U+3d1e, U+3d31, U+3d4e, U+3d64, U+3d9a, U+3dc0, U+3dcc, U+3dd4,
    U+3e05, U+3e3f-3e40, U+3e60, U+3e66, U+3e68, U+3e83, U+3e8a, U+3e94, U+3eda, U+3f57, U+3f72, U+3f75, U+3f77, U+3fae,
    U+3fb1, U+3fc9, U+3fd7, U+3fdc, U+4039, U+4058;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.52.woff2)
    format('woff2');
  unicode-range: U+32b5-332b, U+332d-3394;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.53.woff2)
    format('woff2');
  unicode-range: U+31c8-31e3, U+31f0-321e, U+3220-3230, U+3232-32b4;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.54.woff2)
    format('woff2');
  unicode-range:
    U+3028-303f, U+3094-3096, U+309f-30a0, U+30ee, U+30f7-30fa, U+30ff, U+3105-312f, U+3131-3163, U+3165-318e,
    U+3190-31bb, U+31c0-31c7;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.55.woff2)
    format('woff2');
  unicode-range: U+2f14-2fd5, U+2ff0-2ffb, U+3004, U+3013, U+3016-301b, U+301e, U+3020-3027;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.56.woff2)
    format('woff2');
  unicode-range:
    U+25e4-25e6, U+2601-2603, U+2609, U+260e-260f, U+2616-2617, U+261c-261f, U+262f, U+2641, U+2660, U+2662-2664,
    U+2666-2668, U+266d-266e, U+2672-267d, U+26bd-26be, U+2702, U+271a, U+273d, U+2740, U+2756, U+2776-2793, U+27a1,
    U+2934-2935, U+29bf, U+29fa-29fb, U+2b05-2b07, U+2b1a, U+2b95, U+2e3a-2e3b, U+2e80-2e99, U+2e9b-2ef3, U+2f00-2f13;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.57.woff2)
    format('woff2');
  unicode-range:
    U+24d1-24ff, U+2503-2513, U+2515-2516, U+2518-251b, U+251d-2522, U+2524-259f, U+25a2-25ab, U+25b1, U+25b7,
    U+25c0-25c1, U+25c9-25ca, U+25cc, U+25d0-25d3, U+25e2-25e3;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.58.woff2)
    format('woff2');
  unicode-range:
    U+2105, U+2109-210a, U+210f, U+2116, U+2121, U+2126-2127, U+212b, U+212e, U+2135, U+213b, U+2194-2199, U+21b8-21b9,
    U+21c4-21c6, U+21cb-21cc, U+21d0, U+21e6-21e9, U+21f5, U+2202-2203, U+2205-2206, U+2208-220b, U+220f, U+2211,
    U+2213, U+2215, U+221a, U+221d, U+2220, U+2223, U+2225-2226, U+2228, U+222a-222e, U+2234-2237, U+223d, U+2243,
    U+2245, U+2248, U+224c, U+2260, U+2262, U+2264-2265, U+226e-226f, U+2272-2273, U+2276-2277, U+2283-2287,
    U+228a-228b, U+2295-2299, U+22a0, U+22a5, U+22bf, U+22da-22db, U+22ef, U+2305-2307, U+2318, U+2329-232a,
    U+23b0-23b1, U+23be-23cc, U+23ce, U+23da-23db, U+2423, U+2469-24d0;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.59.woff2)
    format('woff2');
  unicode-range:
    U+a1-a4, U+a6-a7, U+aa, U+ac-ad, U+b5-b6, U+b8-ba, U+bc-c8, U+ca-cc, U+ce-d5, U+d9-db, U+dd-df, U+e6, U+ee, U+f0,
    U+f5, U+f7, U+f9, U+fb, U+fe-102, U+110-113, U+11a-11b, U+128-12b, U+143-144, U+147-148, U+14c, U+14e-14f,
    U+152-153, U+168-16d, U+192, U+1a0-1a1, U+1af, U+1cd-1dc, U+1f8-1f9, U+251, U+261, U+2bb, U+2c7, U+2c9, U+2ea-2eb,
    U+304, U+307, U+30c, U+1e3e-1e3f, U+1ea0-1ebe, U+1ec0-1ec6, U+1ec8-1ef9, U+2011-2012, U+2016, U+2018-201a, U+201e,
    U+2021, U+2030, U+2033, U+2035, U+2042, U+2047, U+2051, U+2074, U+20a9, U+20ab-20ac, U+20dd-20de, U+2100;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.60.woff2)
    format('woff2');
  unicode-range:
    U+2227, U+26a0, U+2713, U+301f, U+4ff8, U+5239, U+526a, U+54fa, U+5740, U+5937, U+5993, U+59fb, U+5a3c, U+5c41,
    U+6028, U+626e, U+646f, U+647a, U+64b0, U+64e2, U+65a7, U+66fe, U+6727, U+6955, U+6bef, U+6f23, U+724c, U+767c,
    U+7a83, U+7ac4, U+7b67, U+8000, U+8471, U+8513, U+8599, U+86db, U+8718, U+87f2, U+88f3, U+8ad2, U+8e2a, U+8fa3,
    U+95a5, U+9798, U+9910, U+9957, U+9bab, U+9c3b, U+9daf, U+ff95;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.61.woff2)
    format('woff2');
  unicode-range:
    U+a8, U+2032, U+2261, U+2282, U+3090, U+30f1, U+339c, U+535c, U+53d9, U+56a2, U+56c1, U+5806, U+589f, U+59d0,
    U+5a7f, U+60e0, U+639f, U+65af, U+68fa, U+69ae, U+6d1b, U+6ef2, U+71fb, U+725d, U+7262, U+75bc, U+7768, U+7940,
    U+79bf, U+7bed, U+7d68, U+7dfb, U+814b, U+8207, U+83e9, U+8494, U+8526, U+8568, U+85ea, U+86d9, U+87ba, U+8861,
    U+887f, U+8fe6, U+9059, U+9061, U+916a, U+976d, U+97ad, U+9ece;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.62.woff2)
    format('woff2');
  unicode-range:
    U+2d9, U+21d4, U+301d, U+515c, U+52fe, U+5420, U+5750, U+5766, U+5954, U+5b95, U+5f8a, U+5f98, U+620c, U+621f,
    U+641c, U+66d9, U+676d, U+6775, U+67f5, U+694a, U+6a02, U+6a3a, U+6a80, U+6c23, U+6c72, U+6dcb, U+6faa, U+707c,
    U+71c8, U+7422, U+74e2, U+7791, U+7825, U+7a14, U+7a1c, U+7c95, U+7fc1, U+82a5, U+82db, U+8304, U+853d, U+8cd3,
    U+8de8, U+8f0c, U+8f3f, U+9091, U+91c7, U+929a, U+98af, U+9913;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.63.woff2)
    format('woff2');
  unicode-range:
    U+2ca-2cb, U+2229, U+2468, U+2669, U+266f, U+273f, U+4ec0, U+4f60, U+4fb6, U+5347, U+540e, U+543b, U+5b0c, U+5d4c,
    U+5f14, U+5f9e, U+6155, U+62d0, U+6602, U+6666, U+66f3, U+67a2, U+67ca, U+69cc, U+6d29, U+6d9b, U+6e3e, U+6f81,
    U+7109, U+73c0, U+73c2, U+7425, U+7435-7436, U+7525, U+7554, U+785d, U+786b, U+7ae3, U+7b94, U+7d18, U+81bf, U+8511,
    U+8549, U+9075, U+9640, U+98e2, U+9e9f, U+ff96;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.64.woff2)
    format('woff2');
  unicode-range:
    U+2467, U+4ece, U+4ed4, U+4f91, U+4fae, U+534d, U+53c9, U+54b3, U+586b, U+5944, U+5b78, U+5df7, U+5f77, U+6101,
    U+6167-6168, U+61a4, U+62d9, U+698a, U+699b, U+6a59, U+6cc4, U+6e07, U+7099, U+75d2, U+77ad, U+7953, U+7984, U+7a92,
    U+7baa, U+7dbb, U+817f, U+82ad, U+85e9, U+868a, U+8caa, U+8f44, U+9017, U+907c, U+908a, U+92f3, U+936e, U+9435,
    U+978d, U+9838, U+9a28, U+9b41, U+9ba8, U+9c57, U+9eb9;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.65.woff2)
    format('woff2');
  unicode-range:
    U+b1, U+309b, U+4e5e, U+51f1, U+5506, U+55c5, U+58cc, U+59d1, U+5c51, U+5ef7, U+6284, U+62d7, U+6689, U+673d,
    U+6a2b, U+6a8e, U+6a9c, U+6d63, U+6dd1, U+70b8, U+7235, U+72db, U+72f8, U+7560, U+7c9b, U+7ce7, U+7e1e, U+80af,
    U+82eb, U+8463, U+8499, U+85dd, U+86ee, U+8a60, U+8a6e, U+8c79, U+8e87, U+8e8a, U+8f5f, U+9010, U+918d, U+9190,
    U+965b, U+97fb, U+9ab8, U+9bad, U+9d3b, U+9d5c, U+9dfa, U+9e93;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.66.woff2)
    format('woff2');
  unicode-range:
    U+2020, U+3003, U+3231, U+4e9b, U+4f3d, U+4f47, U+51b6, U+51dc, U+53e1, U+5bc5, U+602f, U+60bc, U+61c9, U+633d,
    U+637b, U+6492, U+65fa, U+660f, U+66f0, U+6703, U+681e, U+6876, U+6893, U+6912, U+698e, U+6c7d, U+714c, U+7169,
    U+71d5, U+725f, U+72d7, U+745b, U+74dc, U+75e2, U+7891, U+7897, U+7dcb, U+810a, U+8218, U+8339, U+840e, U+852d,
    U+8823, U+8a0a, U+9089, U+919c, U+971c, U+9ad9, U+ff4a, U+ff5a;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.67.woff2)
    format('woff2');
  unicode-range:
    U+2466, U+2600, U+4eab, U+4fe3, U+4ff5, U+51a5, U+51f0, U+536f, U+53d4, U+53f1, U+54a5, U+559d, U+55e3, U+58fa,
    U+5962, U+59ea, U+5c16, U+5cef, U+5d16, U+5f10, U+5fd6, U+6190, U+6216, U+634f, U+63bb, U+66d6, U+6756, U+6bc5,
    U+6e26, U+727d, U+731f, U+76f2, U+7729, U+7a7f, U+7aff, U+7c9f, U+818f, U+8236, U+82b9, U+8338, U+85aa, U+88b4,
    U+8b33, U+904d, U+93a7, U+96cc, U+96eb, U+9aed, U+9b8e, U+fa11;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.68.woff2)
    format('woff2');
  unicode-range:
    U+251c, U+2523, U+4e14, U+545f, U+54bd, U+553e, U+55dc, U+56da, U+589c, U+5b55, U+5bb5, U+5ce1, U+5df4, U+5eb6,
    U+5ec9, U+6191, U+62f7, U+6357, U+64a5, U+6591, U+65bc, U+6897, U+6e1a, U+7063, U+711a, U+721b, U+722c, U+75b9,
    U+75d5, U+75fa, U+7766, U+7aae, U+7b48, U+7b8b, U+7d21, U+7e55, U+7f75, U+842c, U+8910, U+8a63, U+8b39, U+8b5a,
    U+8cdc, U+8d74, U+907d, U+91e7, U+9306, U+96bc, U+98f4, U+9ac4;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.69.woff2)
    format('woff2');
  unicode-range:
    U+2003, U+2312, U+266c, U+4f86, U+51ea, U+5243, U+5256, U+541f, U+5841, U+59dc, U+5df3, U+601c, U+60e7, U+632b,
    U+638c, U+64ad, U+6881, U+697c, U+69cd, U+6c50, U+6d2a, U+6fc1, U+7027, U+7058, U+70f9, U+714e, U+7345, U+751a,
    U+760d, U+764c, U+77db, U+7d79, U+7e8f, U+80ce, U+814e, U+81fc, U+8247, U+8278, U+85a9, U+8a03, U+90ed, U+9784,
    U+9801, U+984e, U+99b3, U+9bc9, U+9bdb, U+9be8, U+9e78, U+ff6b;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.70.woff2)
    format('woff2');
  unicode-range:
    U+266b, U+3006, U+5176, U+5197, U+51a8, U+51c6, U+52f2, U+5614, U+5875, U+5a2f, U+5b54, U+5ce0, U+5dba, U+5deb,
    U+5e63, U+5f59, U+5fcc, U+6068, U+6367, U+68b6, U+6a0b, U+6b64, U+6e15, U+6eba, U+7272, U+72a0, U+7947, U+7985,
    U+79e6, U+79e9, U+7a3d, U+7a9f, U+7aaf, U+7b95, U+7f60, U+7f9e, U+7fe0, U+8098, U+80ba, U+8106, U+82d4, U+831c,
    U+87f9, U+8a1f, U+8acf, U+90c1, U+920d, U+9756, U+fe43, U+ff94;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.71.woff2)
    format('woff2');
  unicode-range:
    U+af, U+2465, U+2517, U+33a1, U+4f10, U+50c5, U+51b4, U+5384, U+5606, U+5bb0, U+5cac, U+5ee3, U+618e, U+61f2,
    U+62c9, U+66ab, U+66f9, U+6816, U+6960, U+6b3e, U+6f20, U+7078, U+72d0, U+73ed, U+7ad9, U+7b1b, U+7be4, U+7d62,
    U+7f51, U+80b4, U+80f4, U+8154, U+85fb, U+865c, U+8702, U+895f, U+8aed, U+8b90, U+8ced, U+8fbf, U+91d8, U+9418,
    U+9583, U+9591, U+9813, U+982c, U+9bd6, U+ff46, U+ff7f, U+ff88;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.72.woff2)
    format('woff2');
  unicode-range:
    U+4e91, U+508d, U+50e7, U+514e, U+51f6, U+5446, U+5504, U+584a, U+59a8, U+59d3, U+5a46, U+5ac9, U+6020, U+60a6,
    U+6148, U+621a, U+6234, U+64c1, U+6523, U+675c, U+67d1, U+6953, U+6ccc, U+6df5, U+6e13, U+6f06, U+723a, U+7325,
    U+74e6, U+758e, U+75ab, U+75d9, U+7a40, U+8096, U+82fa, U+8587, U+8594, U+8a6b, U+8ab9, U+8b17, U+8b83, U+937c,
    U+963b, U+9673, U+96db, U+9ce9, U+9f4b, U+ff67, U+ff82, U+ff93;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.73.woff2)
    format('woff2');
  unicode-range:
    U+221e, U+2514, U+51f9, U+5270, U+5449, U+5824, U+59a5, U+5a29, U+5d07, U+5e16, U+60e3, U+614c, U+6276, U+643e,
    U+64ab, U+6562, U+6681, U+670b, U+6734, U+67af, U+6a3d, U+6b05, U+6dc0, U+6e4a, U+7259, U+732a, U+7409, U+78a7,
    U+7a6b, U+8015, U+809b, U+817a, U+830e, U+837b, U+85ab, U+8a23, U+8a93, U+8b00, U+8b19, U+8b21, U+8cbf, U+8fb0,
    U+901d, U+91b8, U+9320, U+932c, U+9688, U+96f6, U+9df2, U+ff6a;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.74.woff2)
    format('woff2');
  unicode-range:
    U+2002, U+2025, U+4f8d, U+51e1, U+51f8, U+5507, U+5598, U+58f1, U+5983, U+59ac, U+5c3c, U+5de7, U+5e7d, U+5eca,
    U+5f61, U+606d, U+60f9, U+636e, U+64ec, U+67da, U+67ff, U+6813, U+68f2, U+693f, U+6b6a, U+6bbb, U+6ef4, U+7092,
    U+717d, U+7261, U+73c8, U+7432, U+7483, U+76fe, U+7709, U+78d0, U+81a3, U+81b3, U+82af, U+8305, U+8309, U+8870,
    U+88fe, U+8cd1, U+8d66, U+906e, U+971e, U+9812, U+ff79, U+ff90;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.75.woff2)
    format('woff2');
  unicode-range:
    U+2464, U+2501, U+2640, U+2642, U+339d, U+4f0e, U+5091, U+50b5, U+5132, U+51cc, U+558b, U+55aa, U+585e, U+5bee,
    U+5dfe, U+60b6, U+62b9, U+6349, U+6566, U+6590, U+6842, U+689d, U+6a58, U+6c70, U+6ff1, U+7815, U+7881, U+7aaa,
    U+7bc7, U+7def, U+7fa8, U+8017, U+8036, U+8061, U+821f, U+8429, U+8ce0, U+8e74, U+9019, U+90ca, U+9162, U+932f,
    U+93ae, U+9644, U+990c, U+9cf3, U+ff56, U+ff6e, U+ff7e, U+ff85;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.76.woff2)
    format('woff2');
  unicode-range:
    U+2266-2267, U+4f2f, U+5208, U+5451, U+546a, U+5589, U+576a, U+5815, U+5a9a, U+5b9b, U+5c3a, U+5efb, U+5faa, U+6109,
    U+6643, U+6652, U+695a, U+69fd, U+6b86, U+6bb4, U+6daf, U+7089, U+70cf, U+7a00, U+7a4f, U+7b39, U+7d33, U+80e1,
    U+828b, U+82a6, U+86cd, U+8c8c, U+8cca, U+8df3, U+9077, U+9175, U+91dc, U+925b, U+9262, U+9271, U+92ed, U+9855,
    U+9905, U+9d28, U+ff3f, U+ff58, U+ff68, U+ff6d, U+ff9c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.77.woff2)
    format('woff2');
  unicode-range:
    U+2207, U+25ef, U+309c, U+4e4f, U+5146, U+51dd, U+5351, U+540a, U+5629, U+5eb5, U+5f04, U+5f13, U+60dc, U+6212,
    U+63b4, U+642c, U+6627, U+66a6, U+66c7, U+66fd, U+674e, U+6b96, U+6c4e, U+6df3, U+6e67, U+6f84, U+72fc, U+733f,
    U+7c97, U+7db1, U+7e4d, U+816b, U+82d1, U+84cb, U+854e, U+8607, U+86c7, U+871c, U+8776, U+8a89, U+8fc4, U+91a4,
    U+9285, U+9685, U+9903, U+9b31, U+9f13, U+ff42, U+ff74, U+ff91;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.78.woff2)
    format('woff2');
  unicode-range:
    U+4e32, U+51db, U+53a8, U+53ea, U+5609, U+5674, U+5a92, U+5e7e, U+6115, U+611a, U+62cc, U+62ed, U+63c9, U+64b9,
    U+64e6, U+65cb, U+6606, U+6731, U+683d, U+6afb, U+7460, U+771e, U+78ef, U+7b26, U+7b51, U+7cde, U+7d10, U+7d2f,
    U+7d46, U+80de, U+819c, U+84b2, U+85cd, U+865a, U+8ecc, U+9022, U+90b8, U+9192, U+9675, U+96b7, U+99ff, U+ff44,
    U+ff55, U+ff6c, U+ff73, U+ff75, U+ff86, U+ff8d, U+ff92, U+ffe3;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.79.woff2)
    format('woff2');
  unicode-range:
    U+25b3, U+30f5, U+4eae, U+4f46, U+4f51, U+5203, U+52ff, U+55a7, U+564c, U+565b, U+57f9, U+5805, U+5b64, U+5e06,
    U+5f70, U+5f90, U+60e8, U+6182, U+62f3, U+62fe, U+63aa, U+64a4, U+65d7, U+673a, U+6851, U+68cb, U+68df, U+6d1e,
    U+6e58, U+6e9d, U+77b3, U+7832, U+7c3f, U+7db4, U+7f70, U+80aa, U+80c6, U+8105, U+819d, U+8276, U+8679, U+8986,
    U+8c9d, U+8fc5, U+916c, U+9665, U+9699, U+96c0, U+9a19, U+ff8b;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.80.woff2)
    format('woff2');
  unicode-range:
    U+2463, U+25a1, U+4ef0, U+5076, U+5098, U+51fd, U+5302, U+5448, U+54c9, U+570b, U+583a, U+5893, U+58a8, U+58ee,
    U+5949, U+5bdb, U+5f26, U+5f81, U+6052, U+6170, U+61c7, U+631f, U+635c, U+664b, U+69fb, U+6f01, U+7070, U+722a,
    U+745e, U+755c, U+76c6, U+78c1, U+79e4, U+7bb8, U+7d0b, U+81a8, U+82d7, U+8b5c, U+8f14, U+8fb1, U+8fbb, U+9283,
    U+9298, U+9a30, U+ff03, U+ff50, U+ff59, U+ff7b, U+ff8e-ff8f;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.81.woff2)
    format('woff2');
  unicode-range:
    U+2010, U+2502, U+25b6, U+4f3a, U+514b, U+5265, U+52c3, U+5339, U+53ec, U+54c0, U+55b0, U+5854, U+5b8f, U+5cb3,
    U+5e84, U+60da, U+6247, U+6249, U+628a, U+62cd, U+65ac, U+6838, U+690e, U+6cf0, U+6f02, U+6f2c, U+6f70, U+708a,
    U+7434, U+75be, U+77ef, U+7c60, U+7c98, U+7d1b, U+7e2b, U+80a5, U+81e3, U+820c, U+8210, U+8475, U+862d, U+8650,
    U+8997, U+906d, U+91c8, U+9700, U+9727, U+9df9, U+ff3a, U+ff9a;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.82.woff2)
    format('woff2');
  unicode-range:
    U+2103, U+5049, U+52b1, U+5320, U+5553, U+572d, U+58c7, U+5b5d, U+5bc2, U+5de3, U+5e61, U+5f80, U+61a9, U+67d0,
    U+67f4, U+6c88, U+6ca1, U+6ce5, U+6d78, U+6e9c, U+6f54, U+731b, U+73b2, U+74a7, U+74f6, U+75e9, U+7b20, U+7c8b,
    U+7f72, U+809d, U+8108, U+82b3, U+82bd, U+84b8, U+84c4, U+88c2, U+8ae6, U+8ef8, U+902e, U+9065, U+9326, U+935b,
    U+938c, U+9676, U+9694, U+96f7, U+9ed9, U+ff48, U+ff4c, U+ff81;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.83.woff2)
    format('woff2');
  unicode-range:
    U+2500, U+3008-3009, U+4ead, U+4f0f, U+4fca, U+53eb, U+543e, U+57a2, U+5cf0, U+5e8f, U+5fe0, U+61b2, U+62d8, U+6442,
    U+64b2, U+6589, U+659c, U+67f1, U+68c4, U+6cb8, U+6d12, U+6de1, U+6fe1, U+70c8, U+723d, U+73e0, U+7656, U+773a,
    U+7948, U+7b87, U+7c92, U+7d3a, U+7e1b, U+7e4a, U+819a, U+8358, U+83c5, U+84bc, U+864e, U+8912, U+8c9e, U+8d05,
    U+92fc, U+9396, U+98fd, U+99d2, U+ff64, U+ff7a, U+ff83;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.84.woff2)
    format('woff2');
  unicode-range:
    U+3014-3015, U+4e3c, U+5036, U+5075, U+533f, U+53e9, U+5531, U+5642, U+5984, U+59e6, U+5a01, U+5b6b, U+5c0b, U+5f25,
    U+6069, U+60a0, U+614e, U+62b5, U+62d2-62d3, U+6597, U+660c, U+674f, U+67cf, U+6841, U+6905, U+6cf3, U+6d32, U+6d69,
    U+6f64, U+716e, U+7761, U+7b52, U+7be0, U+7dbf, U+7de9, U+7f36, U+81d3, U+8302, U+8389, U+846c, U+84ee, U+8a69,
    U+9038, U+9d8f, U+ff47, U+ff4b, U+ff76, U+ff9b;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.85.woff2)
    format('woff2');
  unicode-range:
    U+25c7, U+3007, U+504f, U+507d, U+51a0, U+52a3, U+5410, U+5510, U+559a, U+5782, U+582a, U+5c0a, U+5c3f, U+5c48,
    U+5f6b, U+6176, U+622f, U+6279, U+62bd, U+62dd, U+65ed, U+67b6, U+6817, U+6850, U+6d6a, U+6deb, U+6ea2, U+6edd,
    U+6f5c, U+72e9, U+73a9, U+7573, U+76bf, U+7950, U+7956, U+7f8a, U+7ffc, U+80a2, U+80c3, U+83ca, U+8a02, U+8a13,
    U+8df5, U+9375, U+983b, U+99b4, U+ff4e, U+ff71, U+ff89, U+ff97;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.86.woff2)
    format('woff2');
  unicode-range:
    U+24, U+2022, U+2212, U+221f, U+2665, U+4ecf, U+5100, U+51cd, U+52d8, U+5378, U+53f6, U+574a, U+5982, U+5996,
    U+5c1a, U+5e1d, U+5f84, U+609f, U+61a7, U+61f8, U+6398, U+63ee, U+6676, U+6691, U+6eb6, U+7126, U+71e5, U+7687,
    U+7965, U+7d17, U+80a1, U+8107, U+8266, U+85a6, U+8987, U+8ca2, U+8cab, U+8e0a, U+9042, U+95c7, U+9810, U+9867,
    U+98fc, U+ff52-ff54, U+ff61, U+ff77, U+ff98-ff99;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.87.woff2)
    format('woff2');
  unicode-range:
    U+b0, U+226a, U+2462, U+4e39, U+4fc3, U+4fd7, U+50be, U+50da, U+5200, U+5211, U+54f2, U+5618, U+596a, U+5b22,
    U+5bb4, U+5d50, U+60a3, U+63fa, U+658e, U+65e8, U+6669, U+6795, U+679d, U+67a0, U+6b3a, U+6e09, U+757f, U+7cd6,
    U+7dbe, U+7ffb, U+83cc, U+83f1, U+840c, U+845b, U+8846, U+8972, U+8a34, U+8a50, U+8a87, U+8edf, U+8ff0, U+90a6,
    U+9154, U+95a3, U+9663, U+9686, U+96c7, U+ff3c, U+ff7c, U+ff8a;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.88.woff2)
    format('woff2');
  unicode-range:
    U+25bd, U+4e59, U+4ec1, U+4ff3, U+515a, U+518a, U+525b, U+5375, U+552f, U+57a3, U+5b9c, U+5c3d, U+5e3d, U+5e7b,
    U+5f0a, U+6094, U+6458, U+654f, U+67f3, U+6b8a, U+6bd2, U+6c37, U+6ce1, U+6e56, U+6e7f, U+6ed1, U+6ede, U+6f0f,
    U+70ad, U+7267, U+7363, U+786c, U+7a42, U+7db2, U+7f85, U+8178, U+829d, U+8896, U+8c5a, U+8cb0, U+8ce2, U+8ed2,
    U+9047, U+9177, U+970a, U+9ea6, U+ff1b, U+ff31, U+ff39, U+ff80;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.89.woff2)
    format('woff2');
  unicode-range:
    U+a5, U+4e80, U+4f34, U+4f73, U+4f75, U+511f, U+5192, U+52aa, U+53c8, U+570f, U+57cb, U+596e, U+5d8b, U+5f66,
    U+5fd9, U+62db, U+62f6, U+6328, U+633f, U+63a7, U+6469, U+6bbf, U+6c41, U+6c57, U+6d44, U+6dbc, U+706f, U+72c2,
    U+72ed, U+7551, U+75f4, U+7949, U+7e26, U+7fd4, U+8150, U+8af8, U+8b0e, U+8b72, U+8ca7, U+934b, U+9a0e, U+9a12,
    U+9b42, U+ff41, U+ff43, U+ff45, U+ff49, U+ff4f, U+ff62-ff63;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.90.woff2)
    format('woff2');
  unicode-range:
    U+4e18, U+4fb5, U+5104, U+52c7, U+5353, U+5374, U+53e5, U+587e, U+594f, U+5a20, U+5de1, U+5f18, U+5fcd, U+6291,
    U+62ab, U+6355, U+6392, U+63da, U+63e1, U+656c, U+6687, U+68b0-68b1, U+68d2, U+68da, U+6b27, U+6cbc, U+7159, U+7344,
    U+73cd, U+76df, U+790e, U+7cf8, U+8102, U+88c1, U+8aa0, U+8e0f, U+9178, U+92ad, U+9670, U+96c5, U+9cf4, U+9db4,
    U+ff3e, U+ff6f, U+ff72, U+ff78, U+ff7d, U+ff84, U+ff8c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.91.woff2)
    format('woff2');
  unicode-range:
    U+60, U+2200, U+226b, U+2461, U+517c, U+526f, U+5800, U+5b97, U+5bf8, U+5c01, U+5d29, U+5e4c, U+5e81, U+6065,
    U+61d0, U+667a, U+6696, U+6843, U+6c99, U+6d99, U+6ec5, U+6f22, U+6f6e, U+6fa4, U+6fef, U+71c3, U+72d9, U+7384,
    U+78e8, U+7a1a, U+7a32, U+7a3c, U+7adc, U+7ca7, U+7d2b, U+7dad, U+7e4b, U+80a9, U+8170, U+81ed, U+820e, U+8a17,
    U+8afe, U+90aa, U+914e, U+963f, U+99c4, U+9eba, U+9f3b, U+ff38;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.92.woff2)
    format('woff2');
  unicode-range:
    U+2460, U+4e5f, U+4e7e, U+4ed9, U+501f, U+502b, U+5968, U+5974, U+5ac1, U+5b99, U+5ba3, U+5be7, U+5be9, U+5c64,
    U+5cb8, U+5ec3, U+5f1f, U+616e, U+6297, U+62e0, U+62ec, U+6368, U+642d, U+65e6, U+6717, U+676f, U+6b04, U+732e,
    U+7652, U+76ca, U+76d7, U+7802, U+7e70, U+7f6a, U+8133, U+81e8, U+866b, U+878d, U+88f8, U+8a5e, U+8cdb, U+8d08,
    U+907a, U+90e1, U+96f2, U+9f8d, U+ff35, U+ff37, U+ff40, U+ff9d;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.93.woff2)
    format('woff2');
  unicode-range:
    U+21d2, U+25ce, U+300a-300b, U+4e89, U+4e9c, U+4ea1, U+5263, U+53cc, U+5426, U+5869, U+5947, U+598a, U+5999, U+5e55,
    U+5e72, U+5e79, U+5fae, U+5fb9, U+602a, U+6163, U+624d, U+6749, U+6c5a, U+6cbf, U+6d45, U+6dfb, U+6e7e, U+708e,
    U+725b, U+7763, U+79c0, U+7bc4, U+7c89, U+7e01, U+7e2e, U+8010, U+8033, U+8c6a, U+8cc3, U+8f1d, U+8f9b, U+8fb2,
    U+907f, U+90f7, U+9707, U+9818, U+9b3c, U+ff0a, U+ff4d;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.94.woff2)
    format('woff2');
  unicode-range:
    U+2015, U+2190, U+4e43, U+5019, U+5247, U+52e7, U+5438, U+54b2, U+55ab, U+57f7, U+5bd2, U+5e8a, U+5ef6, U+6016,
    U+60b2, U+6162, U+6319, U+6551, U+6607, U+66b4, U+675f, U+67d4, U+6b20, U+6b53, U+6ce3, U+719f, U+75b2, U+770b,
    U+7720, U+77ac, U+79d2, U+7af9, U+7d05, U+7dca, U+8056, U+80f8, U+81f3, U+8352, U+885d, U+8a70, U+8aa4, U+8cbc,
    U+900f, U+9084, U+91e3, U+9451, U+96c4, U+99c6, U+9ad4, U+ff70;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.95.woff2)
    format('woff2');
  unicode-range:
    U+2193, U+25b2, U+4e4b, U+516d, U+51c4, U+529f, U+52c9, U+5360, U+5442, U+5857, U+5915, U+59eb, U+5a9b, U+5c3b,
    U+6012, U+61b6, U+62b1, U+6311, U+6577, U+65e2, U+65ec, U+6613, U+6790, U+6cb9, U+7372, U+76ae, U+7d5e, U+7fcc,
    U+88ab, U+88d5, U+8caf, U+8ddd, U+8ecd, U+8f38, U+8f9e, U+8feb, U+9063, U+90f5, U+93e1, U+968a, U+968f, U+98fe,
    U+9ec4, U+ff1d, U+ff27, U+ff2a, U+ff36, U+ff3b, U+ff3d, U+ffe5;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.96.woff2)
    format('woff2');
  unicode-range:
    U+4e03, U+4f38, U+50b7, U+5264, U+5348, U+5371, U+585a, U+58ca, U+5951, U+59b9, U+59d4, U+5b98, U+5f8b, U+6388,
    U+64cd, U+65e7, U+6803, U+6b6f, U+6d66, U+6e0b, U+6ecb, U+6fc3, U+72ac, U+773c, U+77e2, U+7968, U+7a74, U+7dba,
    U+7dd1, U+7e3e, U+808c, U+811a, U+8179, U+8239, U+8584, U+8a0e, U+8a72, U+8b66, U+8c46, U+8f29, U+90a3, U+9234,
    U+96f0, U+9769, U+9774, U+9aa8, U+ff26, U+ff28, U+ff9e-ff9f;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.97.woff2)
    format('woff2');
  unicode-range:
    U+7e, U+b4, U+25c6, U+2661, U+4e92, U+4eee, U+4ffa, U+5144, U+5237, U+5287, U+52b4, U+58c1, U+5bff, U+5c04, U+5c06,
    U+5e95, U+5f31, U+5f93, U+63c3, U+640d, U+6557, U+6614, U+662f, U+67d3, U+690d, U+6bba, U+6e6f, U+72af, U+732b,
    U+7518, U+7ae0, U+7ae5, U+7af6, U+822a, U+89e6, U+8a3a, U+8a98, U+8cb8, U+8de1, U+8e8d, U+95d8, U+961c, U+96a3,
    U+96ea, U+9bae, U+ff20, U+ff22, U+ff29, U+ff2b-ff2c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.98.woff2)
    format('woff2');
  unicode-range:
    U+25cb, U+4e71, U+4f59, U+50d5, U+520a, U+5217, U+5230, U+523a-523b, U+541b, U+5439, U+5747, U+59c9, U+5bdf, U+5c31,
    U+5de8, U+5e7c, U+5f69, U+6050, U+60d1, U+63cf, U+663c, U+67c4, U+6885, U+6c38, U+6d6e, U+6db2, U+6df7, U+6e2c,
    U+6f5f, U+7532, U+76e3-76e4, U+7701, U+793c, U+79f0, U+7a93, U+7d00, U+7de0, U+7e54, U+8328, U+8840, U+969c, U+96e8,
    U+9811, U+9aea, U+9b5a, U+ff24, U+ff2e, U+ff57;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.99.woff2)
    format('woff2');
  unicode-range:
    U+2191, U+505c, U+52e4, U+5305, U+535a, U+56e0, U+59bb, U+5acc, U+5b09, U+5b87, U+5c90, U+5df1, U+5e2d, U+5e33,
    U+5f3e, U+6298, U+6383, U+653b, U+6697, U+6804, U+6a39, U+6cca, U+6e90, U+6f2b, U+702c, U+7206, U+7236, U+7559,
    U+7565, U+7591, U+75c7, U+75db, U+7b4b, U+7bb1, U+7d99, U+7fbd, U+8131, U+885b, U+8b1d, U+8ff7, U+9003, U+9045,
    U+96a0, U+9732, U+990a, U+99d0, U+9e97, U+9f62, U+ff25, U+ff2d;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.100.woff2)
    format('woff2');
  unicode-range:
    U+4e08, U+4f9d, U+5012, U+514d, U+51b7, U+5275, U+53ca, U+53f8, U+5584, U+57fc, U+5b9d, U+5bfa, U+5c3e, U+5f01,
    U+5fb4, U+5fd7, U+606f, U+62e1, U+6563, U+6674, U+6cb3, U+6d3e, U+6d74, U+6e1b, U+6e2f, U+718a, U+7247, U+79d8,
    U+7d14, U+7d66, U+7d71, U+7df4, U+7e41, U+80cc, U+8155, U+83d3, U+8a95, U+8ab2, U+8ad6, U+8ca1, U+9000, U+9006,
    U+9678, U+97d3, U+9808, U+98ef, U+9a5a, U+9b45, U+ff23, U+ff30;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.101.woff2)
    format('woff2');
  unicode-range:
    U+25bc, U+3012, U+4ef2, U+4f0a, U+516b, U+5373, U+539a, U+53b3, U+559c, U+56f0, U+5727, U+5742, U+5965, U+59ff,
    U+5bc6, U+5dfb, U+5e45, U+5ead, U+5fb3, U+6211, U+6253, U+639b, U+63a8, U+6545, U+6575, U+6628, U+672d, U+68a8,
    U+6bdb, U+6d25, U+707d, U+767e, U+7834, U+7b46, U+7bc9, U+8074, U+82e6, U+8349, U+8a2a, U+8d70, U+8da3, U+8fce,
    U+91cc, U+967d, U+97ff, U+9996, U+ff1c, U+ff2f, U+ff32, U+ff34;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.102.woff2)
    format('woff2');
  unicode-range:
    U+3d, U+5e, U+25cf, U+4e0e, U+4e5d, U+4e73, U+4e94, U+4f3c, U+5009, U+5145, U+51ac, U+5238, U+524a, U+53f3, U+547c,
    U+5802, U+5922, U+5a66, U+5c0e, U+5de6, U+5fd8, U+5feb, U+6797, U+685c, U+6b7b, U+6c5f-6c60, U+6cc9, U+6ce2, U+6d17,
    U+6e21, U+7167, U+7642, U+76db, U+8001, U+821e, U+8857, U+89d2, U+8b1b, U+8b70, U+8cb4, U+8cde, U+8f03, U+8f2a,
    U+968e, U+9b54, U+9e7f, U+9ebb, U+ff05, U+ff33;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.103.woff2)
    format('woff2');
  unicode-range:
    U+500d, U+5074, U+50cd, U+5175, U+52e2, U+5352, U+5354, U+53f2, U+5409, U+56fa, U+5a18, U+5b88, U+5bdd, U+5ca9,
    U+5f92, U+5fa9, U+60a9, U+623f, U+6483, U+653f, U+666f, U+66ae, U+66f2, U+6a21, U+6b66, U+6bcd, U+6d5c, U+796d,
    U+7a4d, U+7aef, U+7b56, U+7b97, U+7c4d, U+7e04, U+7fa9, U+8377, U+83dc, U+83ef, U+8535, U+8863, U+88cf, U+88dc,
    U+8907, U+8acb, U+90ce, U+91dd, U+ff0b, U+ff0d, U+ff19, U+ff65;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.104.woff2)
    format('woff2');
  unicode-range:
    U+4e01, U+4e21, U+4e38, U+52a9, U+547d, U+592e, U+5931, U+5b63, U+5c40, U+5dde, U+5e78, U+5efa, U+5fa1, U+604b,
    U+6075, U+62c5, U+632f, U+6a19, U+6c0f, U+6c11, U+6c96, U+6e05, U+70ba, U+71b1, U+7387, U+7403, U+75c5, U+77ed,
    U+795d, U+7b54, U+7cbe, U+7d19, U+7fa4, U+8089, U+81f4, U+8208, U+8336, U+8457, U+8a33, U+8c4a, U+8ca0, U+8ca8,
    U+8cc0, U+9014, U+964d, U+9803, U+983c, U+98db, U+ff17, U+ff21;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.105.woff2)
    format('woff2');
  unicode-range:
    U+25, U+25a0, U+4e26, U+4f4e, U+5341, U+56f2, U+5bbf, U+5c45, U+5c55, U+5c5e, U+5dee, U+5e9c, U+5f7c, U+6255,
    U+627f, U+62bc, U+65cf, U+661f, U+666e, U+66dc, U+67fb, U+6975, U+6a4b, U+6b32, U+6df1, U+6e29, U+6fc0, U+738b,
    U+7686, U+7a76, U+7a81, U+7c73, U+7d75, U+7dd2, U+82e5, U+82f1, U+85ac, U+888b, U+899a, U+8a31, U+8a8c, U+8ab0,
    U+8b58, U+904a, U+9060, U+9280, U+95b2, U+984d, U+9ce5, U+ff18;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.106.woff2)
    format('woff2');
  unicode-range:
    U+30f6, U+50ac, U+5178, U+51e6, U+5224, U+52dd, U+5883, U+5897, U+590f, U+5a5a, U+5bb3, U+5c65, U+5e03, U+5e2b,
    U+5e30, U+5eb7, U+6271, U+63f4, U+64ae, U+6574, U+672b, U+679a, U+6a29-6a2a, U+6ca2, U+6cc1, U+6d0b, U+713c, U+74b0,
    U+7981, U+7a0b, U+7bc0, U+7d1a, U+7d61, U+7fd2, U+822c, U+8996, U+89aa, U+8cac, U+8cbb, U+8d77, U+8def, U+9020,
    U+9152, U+9244, U+9662, U+967a, U+96e3, U+9759, U+ff16;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.107.woff2)
    format('woff2');
  unicode-range:
    U+23, U+3c, U+2192, U+4e45, U+4efb, U+4f50, U+4f8b, U+4fc2, U+5024, U+5150, U+5272, U+5370, U+53bb, U+542b, U+56db,
    U+56e3, U+57ce, U+5bc4, U+5bcc, U+5f71, U+60aa, U+6238, U+6280, U+629c, U+6539, U+66ff, U+670d, U+677e-677f, U+6839,
    U+69cb, U+6b4c, U+6bb5, U+6e96, U+6f14, U+72ec, U+7389, U+7814, U+79cb, U+79d1, U+79fb, U+7a0e, U+7d0d, U+85e4,
    U+8d64, U+9632, U+96e2, U+9805, U+99ac, U+ff1e;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.108.woff2)
    format('woff2');
  unicode-range:
    U+2605-2606, U+301c, U+4e57, U+4fee, U+5065, U+52df, U+533b, U+5357, U+57df, U+58eb, U+58f0, U+591c, U+592a-592b,
    U+5948, U+5b85, U+5d0e, U+5ea7, U+5ff5, U+6025, U+63a1, U+63a5, U+63db, U+643a, U+65bd, U+671d, U+68ee, U+6982,
    U+6b73, U+6bd4, U+6d88, U+7570, U+7b11, U+7d76, U+8077, U+8217, U+8c37, U+8c61, U+8cc7, U+8d85, U+901f, U+962a,
    U+9802, U+9806, U+9854, U+98f2, U+9928, U+99c5, U+9ed2;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.109.woff2)
    format('woff2');
  unicode-range:
    U+266a, U+4f11, U+533a, U+5343, U+534a, U+53cd, U+5404, U+56f3, U+5b57-5b58, U+5bae, U+5c4a, U+5e0c, U+5e2f, U+5eab,
    U+5f35, U+5f79, U+614b, U+6226, U+629e, U+65c5, U+6625, U+6751, U+6821, U+6b69, U+6b8b, U+6bce, U+6c42, U+706b,
    U+7c21, U+7cfb, U+805e, U+80b2, U+82b8, U+843d, U+8853, U+88c5, U+8a3c, U+8a66, U+8d8a, U+8fba, U+9069, U+91cf,
    U+9752, U+975e, U+9999, U+ff0f-ff10, U+ff14-ff15;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.110.woff2)
    format('woff2');
  unicode-range:
    U+40, U+4e86, U+4e95, U+4f01, U+4f1d, U+4fbf, U+5099, U+5171, U+5177, U+53cb, U+53ce, U+53f0, U+5668, U+5712,
    U+5ba4, U+5ca1, U+5f85, U+60f3, U+653e, U+65ad, U+65e9, U+6620, U+6750, U+6761, U+6b62, U+6b74, U+6e08, U+6e80,
    U+7248, U+7531, U+7533, U+753a, U+77f3, U+798f, U+7f6e, U+8449, U+88fd, U+89b3, U+8a55, U+8ac7, U+8b77, U+8db3,
    U+8efd, U+8fd4, U+9031-9032, U+9580, U+9589, U+96d1, U+985e;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.111.woff2)
    format('woff2');
  unicode-range:
    U+2b, U+d7, U+300e-300f, U+4e07, U+4e8c, U+512a, U+5149, U+518d, U+5236, U+52b9, U+52d9, U+5468, U+578b, U+57fa,
    U+5b8c, U+5ba2, U+5c02, U+5de5, U+5f37, U+5f62, U+623b, U+63d0, U+652f, U+672a, U+6848, U+6d41, U+7136, U+7537,
    U+754c, U+76f4, U+79c1, U+7ba1, U+7d44, U+7d4c, U+7dcf, U+7dda, U+7de8, U+82b1, U+897f, U+8ca9, U+8cfc, U+904e,
    U+9664, U+982d, U+9858, U+98a8, U+9a13, U+ff13, U+ff5c;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.112.woff2)
    format('woff2');
  unicode-range:
    U+4e16, U+4e3b, U+4ea4, U+4ee4, U+4f4d, U+4f4f, U+4f55, U+4f9b, U+5317, U+5358, U+53c2, U+53e4, U+548c, U+571f,
    U+59cb, U+5cf6, U+5e38, U+63a2, U+63b2, U+6559, U+662d, U+679c, U+6c7a, U+72b6, U+7523, U+767d, U+770c, U+7a2e,
    U+7a3f, U+7a7a, U+7b2c, U+7b49, U+7d20, U+7d42, U+8003, U+8272, U+8a08, U+8aac, U+8cb7, U+8eab, U+8ee2, U+9054-9055,
    U+90fd, U+914d, U+91cd, U+969b, U+97f3, U+984c, U+ff06;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.113.woff2)
    format('woff2');
  unicode-range:
    U+26, U+5f, U+2026, U+203b, U+4e09, U+4eac, U+4ed5, U+4fa1, U+5143, U+5199, U+5207, U+539f, U+53e3, U+53f7, U+5411,
    U+5473, U+5546, U+55b6, U+5929, U+597d, U+5bb9, U+5c11, U+5c4b, U+5ddd, U+5f97, U+5fc5, U+6295, U+6301, U+6307,
    U+671b, U+76f8, U+78ba, U+795e, U+7d30, U+7d39, U+7d9a, U+89e3, U+8a00, U+8a73, U+8a8d, U+8a9e, U+8aad, U+8abf,
    U+8cea, U+8eca, U+8ffd, U+904b, U+9650, U+ff11-ff12;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.114.woff2)
    format('woff2');
  unicode-range:
    U+3e, U+3005, U+4e0d, U+4e88, U+4ecb, U+4ee3, U+4ef6, U+4fdd, U+4fe1, U+500b, U+50cf, U+5186, U+5316, U+53d7,
    U+540c, U+544a, U+54e1, U+5728, U+58f2, U+5973, U+5b89, U+5c71, U+5e02, U+5e97, U+5f15, U+5fc3, U+5fdc, U+601d,
    U+611b, U+611f, U+671f, U+6728, U+6765, U+683c, U+6b21, U+6ce8, U+6d3b, U+6d77, U+7530, U+7740, U+7acb, U+7d50,
    U+826f, U+8f09, U+8fbc, U+9001, U+9053, U+91ce, U+9762, U+98df;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.115.woff2)
    format('woff2');
  unicode-range:
    U+7c, U+3080, U+4ee5, U+5148, U+516c, U+521d, U+5225, U+529b, U+52a0, U+53ef, U+56de, U+56fd, U+5909, U+591a,
    U+5b66, U+5b9f, U+5bb6, U+5bfe, U+5e73, U+5e83, U+5ea6, U+5f53, U+6027, U+610f, U+6210, U+6240, U+660e, U+66f4,
    U+66f8, U+6709, U+6771, U+697d, U+69d8, U+6a5f, U+6c34, U+6cbb, U+73fe, U+756a, U+7684, U+771f, U+793a, U+7f8e,
    U+898f, U+8a2d, U+8a71, U+8fd1, U+9078, U+9577, U+96fb, U+ff5e;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.116.woff2)
    format('woff2');
  unicode-range:
    U+a9, U+3010-3011, U+30e2, U+4e0b, U+4eca, U+4ed6, U+4ed8, U+4f53, U+4f5c, U+4f7f, U+53d6, U+540d, U+54c1, U+5730,
    U+5916, U+5b50, U+5c0f, U+5f8c, U+624b, U+6570, U+6587, U+6599, U+691c, U+696d, U+6cd5, U+7269, U+7279, U+7406,
    U+767a-767b, U+77e5, U+7d04, U+7d22, U+8005, U+80fd, U+81ea, U+8868, U+8981, U+89a7, U+901a, U+9023, U+90e8, U+91d1,
    U+9332, U+958b, U+96c6, U+9ad8, U+ff1a, U+ff1f;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.117.woff2)
    format('woff2');
  unicode-range:
    U+4e, U+a0, U+3000, U+300c-300d, U+4e00, U+4e0a, U+4e2d, U+4e8b, U+4eba, U+4f1a, U+5165, U+5168, U+5185, U+51fa,
    U+5206, U+5229, U+524d, U+52d5, U+5408, U+554f, U+5831, U+5834, U+5927, U+5b9a, U+5e74, U+5f0f, U+60c5, U+65b0,
    U+65b9, U+6642, U+6700, U+672c, U+682a, U+6b63, U+6c17, U+7121, U+751f, U+7528, U+753b, U+76ee, U+793e, U+884c,
    U+898b, U+8a18, U+9593, U+95a2, U+ff01, U+ff08-ff09;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.118.woff2)
    format('woff2');
  unicode-range:
    U+21-22, U+27-2a, U+2c-3b, U+3f, U+41-4d, U+4f-5d, U+61-7b, U+7d, U+ab, U+ae, U+b2-b3, U+b7, U+bb, U+c9, U+cd, U+d6,
    U+d8, U+dc, U+e0-e5, U+e7-ed, U+ef, U+f1-f4, U+f6, U+f8, U+fa, U+fc-fd, U+103, U+14d, U+1b0, U+300-301, U+1ebf,
    U+1ec7, U+2013-2014, U+201c-201d, U+2039-203a, U+203c, U+2048-2049, U+2113, U+2122, U+65e5, U+6708, U+70b9;
}
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMXNukZEY1FdvPydaYCaeub8TUnmzwwRURhX8K-w.119.woff2)
    format('woff2');
  unicode-range:
    U+20, U+2027, U+3001-3002, U+3041-307f, U+3081-308f, U+3091-3093, U+3099-309a, U+309d-309e, U+30a1-30e1,
    U+30e3-30ed, U+30ef-30f0, U+30f2-30f4, U+30fb-30fe, U+ff0c, U+ff0e;
}
/* cyrillic */
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMbN2uY2Q3X8_92A.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMbNauY2Q3X8_92A.woff2) format('woff2');
  unicode-range:
    U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309,
    U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMbNeuY2Q3X8_92A.woff2) format('woff2');
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F,
    U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Noto Serif JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/noto-serif-jp/xn7mYHs72GKoTvER4Gn3b5eMbNmuY2Q3X88.woff2) format('woff2');
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC,
    U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* ==== css/variables.css ==== */
:root {
  /* フォントサイズと行間 (utils/font-size.ts の applyFontSize がセットで書き換える)。
     行間は基準 + そこから詰めた 3 段。 用途で選ぶ:
     tight = 1 件が短く件数が多いもの / normal = 一覧の抜粋・コメント・モバイル本文 /
     relaxed = まとまった文章 */
  --base-font-size: 16px;
  --base-line-height: 1.7;
  --line-height-tight: 1.4;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.6;

  color-scheme: light;

  /* プリミティブカラー */
  --color-accent-base: #a4b2dd;
  --color-accent-strong: #7986cb;
  --color-accent-hover: #8fa3e3;
  --color-accent-rgb: 168, 184, 232;

  /* セマンティックカラー */
  --color-accent: var(--color-accent-base);
  --color-accent-text: var(--color-accent-base);
  --color-accent-bg: var(--color-accent-base);
  --color-accent-border: var(--color-accent-base);
  --color-primary: var(--color-accent-strong);

  /* ベースカラー */
  --color-bg: #f5f6f8;
  --color-bg-rgb: 245, 246, 248;
  --color-surface: #fafbfc;
  --color-border: #d1d5db;
  /* 区切りの弱い線 (行間の罫線など)。半透明なのでどの面の上でも沈む */
  --color-border-soft: rgba(44, 62, 80, 0.12);
  --color-text: #2c3e50;
  --color-muted: #7f8c8d;
  --color-target: #e8f0ff;
  --color-self: #f0f4ff;
  --color-surface-alt: #f0f2f5;
  --color-text-secondary: #596275;
  --color-link: #2563eb;
  --color-status-warn: #969696;
  --color-status-ok: #27ae60;
  --color-status-off: #e74c3c;
  --color-status-error: #d57272;
  --color-status-error-rgb: 213, 114, 114;
  --color-text-tertiary: #8a94a6;
  --color-button-text: #ffffff;
  --color-icon: #666666;

  /* コードブロック */
  --color-code-bg: rgba(0, 0, 0, 0.06);
  --color-code-text: #1a1a1a;

  /* アクションカラー */
  /* 明るい下地では #d07d7d が薄く、白文字を乗せると 3.04 しか出ないため濃くする
     (文字として 6.12 / 白文字を乗せて 5.27。 くすみは保ったまま濃さだけ上げた) */
  --color-danger: #a35555;
  --color-danger-rgb: 163, 85, 85;
  --color-danger-hover: #864646;
  /* 赤で塗りつぶして白文字を乗せる用。 文字用の赤とは目的が違うので分ける */
  --color-danger-fill: #a35555;
  --color-danger-fill-hover: #864646;
  --color-warning: #ffc107;
  --color-warning-hover: #e0a800;
  /* B-致命-1 (2026-05-17): 機能色変数を semantic 層で正式定義 (旧 fallback 散在を解消) */
  --color-success: #27ae60;
  --color-success-hover: #229954;
  --color-error: #e74c3c;
  --color-error-hover: #c0392b;
  --color-info: #2980b9;
  --color-info-hover: #1f6390;

  /* B-致命-2 (2026-05-17): タッチターゲット最小値 (WCAG 2.5.5 AAA = 44x44px) */
  --touch-target-min: 44px;

  /* タスクステータスカラー */
  --color-task-open: #9ba4b5;
  --color-task-active: #8b9dc3;
  --color-task-done: #7dab8e;
  --color-task-due-overdue: #c97070;
  --color-task-due-soon: #6bab7d;

  /* アニメーション・レイアウト */
  --animation-duration: 0.2s;
  --message-motion-duration: 0s;
  --border-radius: 12px;
  --shadow-soft: 0 2px 12px rgba(0, 0, 0, 0.08);
  --shadow-hover: 0 4px 20px rgba(0, 0, 0, 0.12);

  /* アプリ更新通知バー（ライト/ダーク共通の数値・レイアウト） */
  /* 表示中のみ JS で 40px に切り替え。fixed/sticky 要素の top 計算に使う */
  --app-update-bar-height: 0px;
  /* 既存 z-index 階層: 再認証モーダル 10500 / 通知ポップアップ 10300 / image-editor 10200 / popup-overlay 10100 / ヘッダー 100 */
  --z-app-update-bar: 10150;
}

.theme-dark {
  color-scheme: dark;

  /* プリミティブカラー */
  --color-accent-base: #7282bb;
  --color-accent-strong: #8298e7;
  --color-accent-hover: #8091d4;
  --color-accent-rgb: 114, 130, 187;

  /* セマンティックカラー */
  --color-accent: var(--color-accent-base);
  --color-accent-text: var(--color-accent-base);
  --color-accent-bg: var(--color-accent-strong);
  --color-accent-border: var(--color-accent-base);

  /* ベースカラー */
  --color-bg: #1c1d24;
  --color-bg-rgb: 28, 29, 36;
  --color-surface: #22252d;
  --color-border: #2f3138;
  --color-border-soft: rgba(255, 255, 255, 0.08);
  --color-text: #f2f3f8;
  --color-muted: #afb3c5;
  --color-target: #2e3440;
  --color-self: #252832;
  --color-surface-alt: #2b2d36;
  --color-text-secondary: #c0c4d6;
  --color-link: #2e6dba;
  --color-status-warn: #2e363f;
  --color-status-ok: #6db49b;
  --color-status-off: #d07d7d;
  --color-status-error: #a76b6b;
  --color-status-error-rgb: 167, 107, 107;
  --color-text-tertiary: #9aa1b3;
  --color-button-text: #ffffff;
  --color-icon: #9aa1b3;

  /* コードブロック */
  --color-code-bg: #2d3748;
  --color-code-text: #e2e8f0;

  /* タスクステータスカラー */
  --color-task-open: #8a94a8;
  --color-task-active: #7b8db8;
  --color-task-done: #6d9b80;
  --color-task-due-overdue: #b86868;
  --color-task-due-soon: #5e9970;

  /* アクションカラー */
  --color-danger: #d07d7d;
  --color-danger-rgb: 208, 125, 125;
  --color-danger-hover: #a76b6b;
  /* 暗い下地では文字用の赤 (#d07d7d) に白文字を乗せると 3.04 しか出ないため、 塗りは濃い方を使う */
  --color-danger-fill: #a35555;
  --color-danger-fill-hover: #864646;
  --color-warning: #ffc107;
  --color-warning-hover: #e0a800;
  /* B-致命-1 (2026-05-17): ダーク版機能色 (WCAG 4.5:1 以上を検算済、 設計書参照) */
  --color-success: #2ecc71;
  --color-success-hover: #27ae60;
  --color-error: #ff6b6b;
  --color-error-hover: #ee5a5a;
  --color-info: #5dade2;
  --color-info-hover: #3498db;
}


/* ==== css/components/base.css ==== */
/* bundled: ../variables.css */
html {
  font-size: var(--base-font-size, 16px);
  overscroll-behavior-x: none;
}

* {
  box-sizing: border-box;
}

/* アクセシビリティ: 動きを減らす設定を持つユーザーにはアニメーションを抑制
 * - OS 設定「視差効果を減らす」「動きを減らす」相当
 * - VR 酔い・前庭疾患・集中力 への配慮
 * - ショートコード: 速度/遅延 を 0.01ms にして実質無効化（完全 none だと JS が期待する完了イベントが出ないため微小値を残す） */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

a,
button,
[role='button'],
input,
select,
textarea,
label {
  touch-action: manipulation;
}

*:focus-visible {
  outline: 2px solid var(--color-accent-strong);
  outline-offset: 2px;
  border-radius: 4px;
}

button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 2px solid var(--color-accent-strong);
  outline-offset: 2px;
}

body {
  font-family: 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', 'Yu Gothic', 'Noto Sans JP', system-ui, sans-serif;
  margin: 0;
  background: var(--color-bg);
  color: var(--color-text);
  /* 文字サイズ設定と連動 (utils/font-size.ts の LINE_HEIGHT_MAP)。
     大きい文字ほど行間の倍率も上げる */
  line-height: var(--base-line-height, 1.7);
  font-feature-settings: 'palt';
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: all var(--animation-duration) ease;
  display: flex;
  flex-direction: column;
  height: 100vh;
}

/* 背景画像オーバーレイ */
#app-bg-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 0;
  background-size: cover;
  background-position: center;
  background-attachment: fixed;
}

#main-app {
  position: relative;
  z-index: 1;
}

.app-header {
  background: var(--color-surface);
  color: var(--color-text);
  padding: 12px;
  border-bottom: 1px solid var(--color-border);
  box-shadow: var(--shadow-soft);
  position: sticky;
  top: var(--app-update-bar-height);
  z-index: 100;
  backdrop-filter: blur(10px);
}

.app-header .page {
  max-width: 100%;
}

body.chat-active .app-header {
  position: fixed;
  width: 100%;
  left: 0;
  top: var(--app-update-bar-height);
  z-index: 100;
}

body.chat-active .main-content {
  height: calc(100vh - var(--app-update-bar-height));
  padding-top: calc(70px + var(--app-update-bar-height));
  padding-bottom: 0;
  overflow: hidden;
  gap: 0;
}

body.chat-active .page {
  height: 100%;
}

body.chat-active #chat-view {
  height: 100%;
  margin-bottom: 0;
}

/* チャットレイアウト: ツールバー / (AI検索結果) / メッセージ / フォーム を縦に積む。
   旧: grid + grid-template-rows: auto auto 1fr auto。 4 行を前提にしていたが .chat-layout の
   直下の子は 3 つしかなく (AI 検索結果は ai-chatbot が後から挿し、隠れている間は display: none で
   アイテムにならない)、 伸びる行 (1fr) がメッセージではなく入力フォームに当たっていた。
   メッセージが画面より短いチャンネルでは余りが全部フォームの行に行き、 下が空いて壁紙が見えていた
   (2026-08-26 / カンバン task-1787721785306-z1bqa、 設計 docs/design/2026-08-26_chat_mobile_overflow_design.md 9 章)。
   行番号に頼るのをやめ、 伸びるのは #messages と名指しする (下の flex: 1 1 0%)。
   子の数が変わっても (固定メッセージのバー / AI 検索結果 / 将来の追加) 壊れない。
   縦の flex では子の幅は入れ物に固定されるので、 旧 grid-template-columns: minmax(0, 1fr) の
   役目 (右端が切れるのを防ぐ) もそのまま保たれる。 */
body.chat-active .chat-layout {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
}

/* AI検索結果が非表示の時は行を潰す */
body.chat-active .chat-layout > .chat-ai-search-result.hidden {
  display: none;
}

body.chat-active #messages {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  margin: 0;
  /* 余りの高さをもらうのはここ (上のコメント参照)。 min-height: 0 と対で使う */
  flex: 1 1 0%;
  min-height: 0;
  max-height: none;
}

body.chat-active #message-form {
  padding: 12px 24px 24px;
  max-width: 780px;
  margin: 0 auto;
  width: 100%;
}

.app-header__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
}

.status-badge {
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  padding: 5px 12px;
  border-radius: 999px;
  border: 1px solid currentColor;
  background: transparent;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: color 0.2s ease;
}

.status-badge::before {
  content: '';
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: currentColor;
  display: inline-block;
}

.status-badge--connecting {
  color: var(--color-status-warn);
}

.status-badge--online {
  color: var(--color-status-ok);
}

.status-badge--offline {
  color: var(--color-status-off);
}

.app-header__hint {
  margin: 8px 0 0;
  font-size: 0.82rem;
  color: var(--color-muted);
}

.app-container {
  display: flex;
  flex: 1;
  overflow: hidden;
  margin-left: 300px;
  /* 80px (main) + 220px (sub) = サイドメニュー実幅ぴったり。過剰だと左余白だけ広くなる */
}

.sidebar {
  width: 280px;
  background: var(--color-surface);
  border-right: 1px solid var(--color-border);
  display: flex;
  flex-direction: column;
  box-shadow: var(--shadow-soft);
  z-index: 50;
  height: 100vh;
  position: fixed;
  left: 0;
  top: 0;
}

.sidebar__header {
  padding: 24px;
  border-bottom: 1px solid var(--color-border);
}

.sidebar__mobile-toggle {
  display: none;
}

.sidebar__title {
  font-size: 1.1rem;
  font-weight: 600;
  margin: 0 0 4px 0;
  color: var(--color-text);
}

.sidebar__subtitle {
  font-size: 0.8rem;
  color: var(--color-muted);
  margin: 0;
}

.sidebar__content {
  flex: 1;
  overflow-y: auto;
  padding: 16px;
}

.sidebar__section {
  margin-bottom: 24px;
}

.sidebar__section-title {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-muted);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin: 0 0 12px 0;
  padding: 0 8px;
}

.sidebar__menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

.sidebar__menu-item {
  margin-bottom: 4px;
}

.sidebar__section-header {
  padding: 12px 16px 8px;
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  color: var(--color-muted);
  letter-spacing: 0.05em;
  border-top: 1px solid var(--color-border);
  margin-top: 8px;
  list-style: none;
}

.sidebar__section-header:first-child {
  border-top: none;
  margin-top: 0;
}

/* グループ / ダイレクトの見出し (「+ セクション」を右端に寄せる。両方に同じ形を当てる) */
.sidebar__section-header--groups,
.sidebar__section-header--directs {
  display: flex;
  align-items: center;
  gap: 4px;
  padding-right: 8px;
}

/* 見出しのラベル: クリックで配下セクションを一括開閉する */
.sidebar__section-toggle-label {
  cursor: pointer;
}

/* 最近見たチャット (自分専用ショートカット。既存リストと分離、非 draggable) */
.sidebar__section-header--recent-views {
  display: flex;
  align-items: center;
  gap: 4px;
}

.sidebar__section-recent-label {
  cursor: pointer;
}

.chat-recent-view-link {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
}

.chat-recent-view-title {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: left;
}

.chat-recent-view-time {
  flex-shrink: 0;
  font-size: 0.6875rem;
  color: var(--color-text-tertiary, #8a94a6);
}

.sidebar__section-header--custom {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 4px 8px 4px 8px;
  background: var(--color-surface);
  border-top: none;
  margin-top: 8px;
}

.sidebar__section-add-btn {
  margin-left: auto;
  padding: 2px 6px;
  border: none;
  background: transparent;
  color: var(--color-muted);
  font-size: 0.6875rem;
  cursor: pointer;
  border-radius: 4px;
  white-space: nowrap;
  opacity: 0.35;
  transition: opacity 0.15s;
}

.sidebar__section-header--groups:hover .sidebar__section-add-btn,
.sidebar__section-header--directs:hover .sidebar__section-add-btn {
  opacity: 1;
}

.sidebar__section-chevron {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  background: transparent;
  cursor: pointer;
  padding: 0;
  color: var(--color-muted);
}

.sidebar__section-chevron-icon {
  transition: transform 0.2s ease;
  transform: rotate(90deg);
}

.sidebar__section-chevron.collapsed .sidebar__section-chevron-icon {
  transform: rotate(0deg);
}

.sidebar__section-custom-name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
  text-transform: none;
}

.sidebar__section-actions {
  display: flex;
  align-items: center;
  gap: 2px;
  opacity: 0.35;
  transition: opacity 0.15s;
  flex-shrink: 0;
}

.sidebar__section-header--custom:hover .sidebar__section-actions {
  opacity: 1;
}

.sidebar__section-action-btn {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  background: transparent;
  cursor: pointer;
  padding: 0;
  border-radius: 3px;
  color: var(--color-muted);
}

.sidebar__section-action-btn:hover {
  background: var(--color-surface-alt);
  color: var(--color-text);
}

.sidebar__section-action-btn--danger:hover {
  color: var(--color-error, #e53e3e);
}

/* セクション折りたたみ時の未読合計バッジ */
.sidebar__section-unread-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 16px;
  padding: 0 5px;
  font-size: 0.65rem;
  font-weight: 600;
  background: var(--color-accent-strong, #7986cb);
  color: var(--color-button-text);
  border-radius: 8px;
  flex-shrink: 0;
  margin-right: 2px;
}

/* セクションヘッダーのドラッグ操作 */
.sidebar__section-header--custom[draggable='true'] {
  cursor: grab;
  user-select: none;
}

.sidebar__section-header--custom.section-dragging {
  opacity: 0.4;
  cursor: grabbing;
}

.sidebar__section-header--custom.section-drag-over {
  box-shadow: 0 -2px 0 0 rgba(100, 150, 255, 0.9);
}

/* 空セクションでもチャットをドロップできるよう最小高さを確保 */
.chat-section-container:not(.collapsed) {
  min-height: 24px;
  padding-top: 4px;
}

.chat-section-name-popup {
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow:
    0 8px 24px rgba(0, 0, 0, 0.2),
    0 2px 8px rgba(0, 0, 0, 0.12);
  padding: 10px;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.chat-section-name-popup__input {
  width: 100%;
  padding: 6px 8px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.8125rem;
  box-sizing: border-box;
}

.chat-section-name-popup__input:focus {
  outline: none;
  border-color: var(--color-accent);
}

.chat-section-name-popup__actions {
  display: flex;
  justify-content: flex-end;
  gap: 6px;
}

.chat-section-name-popup__btn {
  padding: 4px 10px;
  border-radius: 5px;
  font-size: 0.75rem;
  cursor: pointer;
  border: 1px solid var(--color-border);
  background: transparent;
  color: var(--color-text);
}

.chat-section-name-popup__btn--primary {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: var(--color-button-text);
}

.chat-move-section-panel {
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow:
    0 8px 24px rgba(0, 0, 0, 0.2),
    0 2px 8px rgba(0, 0, 0, 0.12);
  z-index: 9999;
  min-width: 180px;
  overflow: hidden;
}

.chat-move-section-panel__title {
  padding: 8px 12px 6px;
  font-size: 0.6875rem;
  font-weight: 600;
  text-transform: uppercase;
  color: var(--color-muted);
  letter-spacing: 0.05em;
  border-bottom: 1px solid var(--color-border);
}

.chat-move-section-panel__list {
  list-style: none;
  margin: 0;
  padding: 4px 0;
}

.chat-move-section-panel__item {
  display: block;
  width: 100%;
  padding: 7px 12px;
  text-align: left;
  border: none;
  background: transparent;
  color: var(--color-text);
  font-size: 0.8125rem;
  cursor: pointer;
}

.chat-move-section-panel__item:hover {
  background: var(--color-target);
}

.chat-move-section-panel__item.current {
  color: var(--color-accent-strong);
  font-weight: 500;
}

.guest-chat-message {
  background: var(--color-surface);
  border: 2px dashed var(--color-border);
  border-radius: 12px;
  margin: 16px 0;
}

.guest-chat-message button:hover {
  background: var(--color-accent-strong) !important;
}

.sidebar__menu-link {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  border-radius: 8px;
  text-decoration: none;
  color: var(--color-text);
  font-size: 0.85rem;
  transition: all var(--animation-duration) ease;
  cursor: pointer;
  border: none;
  background: transparent;
  width: 100%;
  text-align: left;
  position: relative;
}

@media (hover: hover) and (pointer: fine) {
  .sidebar__menu-link:hover {
    background: var(--color-target);
    color: var(--color-accent-strong);
  }

  .sidebar__menu-link--active:hover {
    background: var(--color-target);
    color: var(--color-accent-strong);
  }
}

.sidebar__menu-link--active {
  background: rgba(168, 184, 232, 0.12);
  color: var(--color-accent-strong);
  border-radius: 8px;
  font-weight: 500;
}

/* ホームチャット（デフォルトチャット）の特別スタイル */
.sidebar__menu-link--home {
  font-weight: 500;
}

.sidebar__menu-icon {
  width: 1.125rem !important;
  height: 1.125rem !important;
  max-width: 1.125rem !important;
  max-height: 1.125rem !important;
  min-width: 1.125rem !important;
  min-height: 1.125rem !important;
  flex-shrink: 0;
  display: block !important;
}

/* 1対1チャットのアバター画像 */
.sidebar__menu-avatar {
  width: 18px !important;
  height: 18px !important;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  display: block !important;
}

/* プライベートチャット専用スタイル */
.sidebar__menu-link--private {
  position: relative;
}

.sidebar__menu-link--private::after {
  content: '';
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  width: 4px;
  height: 4px;
  background: var(--color-primary);
  border-radius: 50%;
  opacity: 0.7;
}

.sidebar__menu-link--private .sidebar__menu-icon {
  color: var(--color-primary);
  opacity: 0.9;
}

/* 未読チャット表示 */
.chat-name {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chat-name--unread {
  font-weight: 700;
}

.chat-unread-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  padding: 0 6px;
  font-size: 0.7rem;
  font-weight: 600;
  background: var(--color-accent-strong, #7986cb);
  color: var(--color-button-text);
  border-radius: 10px;

  /* Absolute positioning for consistent alignment */
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  transition: opacity 0.2s ease;
}

/* Hide badge when hovering over the link (to show options button) */
@media (hover: hover) and (pointer: fine) {
  .sidebar__menu-link:hover .chat-unread-badge {
    opacity: 0;
  }
}

/* SVGアイコンの強制サイズ調整。
   包む .sidebar__menu-icon と同じ値にする (片方だけ px で残すと枠から突き出る) */
.sidebar__menu-link svg {
  width: 1.125rem !important;
  height: 1.125rem !important;
  max-width: 1.125rem !important;
  max-height: 1.125rem !important;
  min-width: 1.125rem !important;
  min-height: 1.125rem !important;
  flex-shrink: 0;
}

/* お気に入りアイコンコンテナ */
.chat-icon-container {
  position: relative;
  display: inline-block;
}

/* お気に入り星バッジ（上記ルールから除外） */
.sidebar__menu-link svg.chat-favorite-star-badge {
  position: absolute !important;
  bottom: -3px !important;
  right: -3px !important;
  width: 10px !important;
  height: 10px !important;
  max-width: 10px !important;
  max-height: 10px !important;
  min-width: 10px !important;
  min-height: 10px !important;
  background-color: var(--sidebar-bg, #2c2c2c) !important;
  border-radius: 50% !important;
  padding: 1px !important;
}

/* タグ削除ボタン */
.sidebar__menu-item {
  position: relative;
}

.tag-edit-btn,
.tag-delete-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 20px;
  height: 20px;
  border: none;
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
  opacity: 0;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  padding: 0;
  z-index: 10;
}

.tag-edit-btn {
  right: 32px;
}

.tag-edit-btn svg {
  width: 14px;
  height: 14px;
}

.tag-delete-btn {
  right: 8px;
  font-size: 0.875rem;
  font-weight: bold;
}

@media (hover: hover) and (pointer: fine) {
  .sidebar__menu-item:hover .tag-edit-btn,
  .sidebar__menu-item:hover .tag-delete-btn {
    opacity: 1;
  }

  .tag-edit-btn:hover {
    background: var(--color-accent);
    color: var(--color-button-text);
    transform: translateY(-50%) scale(1.1);
  }

  .tag-delete-btn:hover {
    background: var(--color-danger-fill);
    color: var(--color-button-text);
    transform: translateY(-50%) scale(1.1);
  }
}

/* チャットアイテムコンテナ */
.chat-item-container {
  display: flex;
  align-items: center;
  position: relative;
}

.chat-item-container .sidebar__menu-link {
  flex: 1;
  margin-right: 4px;
}

/* チャットオプションボタン */
.chat-options-btn {
  width: 24px;
  height: 24px;
  border: none;
  background: transparent;
  color: var(--color-text);
  font-size: 1rem;
  font-weight: bold;
  border-radius: 4px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: all var(--animation-duration) ease;
  flex-shrink: 0;

  /* Absolute positioning */
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
}

@media (hover: hover) and (pointer: fine) {
  .chat-item:hover .chat-options-btn {
    opacity: 1;
  }

  .chat-options-btn:hover {
    background: var(--color-target);
    color: var(--color-accent-strong);
  }
}

/* チャットオプションメニュー */
.chat-options-menu {
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow:
    0 8px 24px rgba(0, 0, 0, 0.2),
    0 2px 8px rgba(0, 0, 0, 0.12);
  padding: 8px 0;
  z-index: 1000;
  min-width: 140px;
  position: absolute;
}

.chat-options-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.chat-options-list li {
  margin: 0;
}

.chat-options-list button {
  width: 100%;
  border: none;
  background: transparent;
  padding: 8px 16px;
  text-align: left;
  color: var(--color-text);
  font-size: 0.875rem;
  cursor: pointer;
  transition: all var(--animation-duration) ease;
}

.chat-options-list button:hover {
  background: var(--color-target);
  transform: translateX(2px);
}

.chat-options-list button.delete-option {
  color: #dc3545;
}

.chat-options-list button.delete-option:hover {
  background: #dc3545;
  color: var(--color-button-text);
  transform: translateX(2px);
}

.main-content {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transition: padding-right 0.25s ease;
}

.page {
  max-width: 1120px;
  margin: 0 auto;
  width: 100%;
  padding: 0 24px;
  flex: 1;
}

/* サイドパネルが開いてる時はコンテンツを左寄せ */
body.side-panel-open .page {
  max-width: none;
  margin: 0;
  display: flex;
  flex-direction: column;
}

.page--full-width {
  max-width: none;
  padding: 0;
}

main {
  padding: 12px 0 36px;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 16px;
  overflow: hidden;
}

#chat-view {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  align-items: flex-end;
}

/* ビュー切り替えフェードアニメーション */
#dashboard-view,
#profile-view,
#admin-view,
#media-view,
#knowledge-detail-view,
#knowledge-editor-view {
  display: none;
}

#dashboard-view.active,
#profile-view.active,
#admin-view.active,
#media-view.active,
#chat-view.active,
#knowledge-view.active,
#knowledge-detail-view.active,
#knowledge-editor-view.active {
  display: block;
  animation: view-fade-in 0.15s ease-out;
}

@keyframes view-fade-in {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

.toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
  color: var(--color-muted);
}

.toolbar__left {
  display: flex;
  align-items: flex-end;
  gap: 6px;
  flex: 1;
  min-width: 0;
}

.toolbar__right {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
}

.toolbar__filter {
  display: flex;
  flex-direction: row;
  gap: 6px;
  margin: 16px 0 8px;
  align-items: center;
  font-size: 0.7rem;
  color: var(--color-muted);
}

.toolbar__filter span {
  white-space: nowrap;
  font-weight: 400;
}

.toolbar__filter select {
  font-size: 0.75rem;
  padding: 6px 10px;
  border-width: 1px;
}

select,
input[type='text'],
textarea {
  background: var(--color-surface);
  border: 2px solid var(--color-border);
  border-radius: 0.5rem;
  /* 余白と角丸も文字サイズ設定に連動させる (標準 = 8px 12px / 8px で従来どおり)。
     モバイルは iOS のズーム対策で文字だけ 16px に底上げされるため、
     余白まで固定すると「小さめ」を選んでも入力欄だけ大きいまま浮く */
  padding: 0.5rem 0.75rem;
  font-size: 0.92rem;
  transition: all var(--animation-duration) cubic-bezier(0.4, 0, 0.2, 1);
  color: var(--color-text);
  font-family: inherit;
}

select {
  padding-right: 40px;
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 12px;
}

.theme-dark select {
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 12px;
}

select:focus,
input[type='text']:focus,
textarea:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

#messages {
  flex: 1;
  overflow-y: auto;
  background: var(--color-surface);
  border-radius: var(--border-radius);
  border: 1px solid var(--color-border);
  padding: 20px;
  margin: 8px 0 240px 0;
  display: flex;
  flex-direction: column;
  gap: 18px;
  box-shadow: var(--shadow-soft);
  max-height: calc(100vh - 280px);
  min-height: 74vh;
}

#messages::-webkit-scrollbar {
  width: 8px;
}

#messages::-webkit-scrollbar-track {
  background: var(--color-bg);
  border-radius: 4px;
}

#messages::-webkit-scrollbar-thumb {
  background: var(--color-border);
  border-radius: 4px;
  transition: background var(--animation-duration);
}

#messages::-webkit-scrollbar-thumb:hover {
  background: var(--color-muted);
}

.messages__empty {
  color: var(--color-muted);
  font-size: 0.88rem;
  text-align: center;
  padding: 32px 0;
}

.message {
  margin-bottom: 18px;
  position: relative;
  display: flex;
  flex-direction: column;
  transform: translateY(0);
  will-change: transform;
  --bubble-bg: var(--color-surface);
  --bubble-border: var(--color-border);
  --bubble-text: var(--color-text);
  --bubble-shadow: var(--shadow-soft);
  animation: messageSlide var(--message-motion-duration) cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
}

.message::after {
  content: '';
  position: absolute;
  bottom: -40px;
  left: 0;
  right: 0;
  height: 40px;
  z-index: 5;
  pointer-events: none;
}

@keyframes messageSlide {
  to {
    transform: translateY(0);
  }
}

.message:last-child {
  margin-bottom: 0;
}

.message__bubble {
  padding: 14px 18px;
  border-radius: 24px;
  position: relative;
  word-wrap: break-word;
  border: 1px solid var(--bubble-border);
  background: var(--bubble-bg);
  color: var(--bubble-text);
  box-shadow: var(--bubble-shadow);
  transition: all var(--animation-duration) ease;
  backdrop-filter: blur(10px);
  width: fit-content;
  /* 短文でも一定の見た目の安定感を確保するため min-width を引き上げ。
     120px だとアバターの右に小さな点のような吹き出しになり、
     コンテンツによってサイズがバラついて見える原因になっていた。 */
  min-width: 240px;
  max-width: 65%;
}

.message:hover .message__bubble {
  box-shadow: var(--shadow-hover);
}

.theme-dark .message__bubble {
  border: 1px solid var(--bubble-border);
  background: var(--bubble-bg);
  box-shadow: var(--bubble-shadow);
}

/* ピン留めメッセージバー */
.pinned-message-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  background: var(--color-surface);
  border: 2px solid rgba(var(--color-accent-rgb), 0.8);
  border-radius: 8px;
  font-size: 0.82rem;
  flex-shrink: 0;
  margin-bottom: 4px;
}

.pinned-message-bar__icon {
  flex-shrink: 0;
  opacity: 0.85;
  color: var(--color-accent);
}

.pinned-message-bar__body {
  flex: 1;
  cursor: pointer;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  color: var(--color-text);
}

.pinned-message-bar__body:hover {
  text-decoration: underline;
}

.pinned-message-bar__unpin {
  flex-shrink: 0;
  background: none;
  border: none;
  cursor: pointer;
  color: var(--color-muted);
  font-size: 1rem;
  line-height: 1;
  padding: 0 2px;
  opacity: 0.6;
}

.pinned-message-bar__unpin:hover {
  opacity: 1;
}

/* ピンボタン（アクティブ状態） */
.message__action-btn.pin.pinned svg {
  stroke: var(--color-accent);
}

/* システムメッセージ（ウェルカムメッセージ等） */
.message--system {
  align-self: center;
  align-items: center;
  width: 100%;
  max-width: 540px;
}

.message--system .message__bubble {
  background: transparent;
  border: 1px solid rgba(128, 128, 128, 0.3);
  border-radius: 12px;
  color: var(--color-text-muted, #999);
  font-size: 0.85rem;
  text-align: center;
  box-shadow: none;
  padding: 12px 20px;
  /* 鬼教官 H-1（チャット吹き出しレビュー）対応:
     通常 bubble の min-width: 240px を継承すると system メッセージ（短文中央寄せ）
     で余白過多になるため上書き解除。 */
  min-width: 0;
}

.theme-dark .message--system .message__bubble {
  border-color: rgba(255, 255, 255, 0.12);
  color: rgba(255, 255, 255, 0.5);
}

.message--system .message__actions,
.message--system .message__reactions {
  display: none;
}

.message--other {
  /* align-self: flex-start は親 (#messages の stretch) を override して
     .message--other の幅を content size に縛るため、 中の bubble の
     max-width: 65% が「親の 65%」ではなく「中身なりの幅の 65%」になっていた。
     短い日本語は min-width: 240px まで潰れ、 折り返さない pre (コードブロック)
     を含むと逆に 918px まで膨らんで横スクロールが出る原因。
     .message--self は同じ理由で既に align-self を外してあり、 こちらが直し漏れ。
     左寄せは下の align-items: flex-start (横軸方向の子の寄せ) だけで足りる。 */
  align-items: flex-start;
}

.message--other .message__bubble {
  border-radius: 4px 24px 24px 24px;
}

.message--self {
  /* align-self: flex-end は親 (#messages の stretch) を override して
     .message--self の幅を content size (= bubble の min-width 240px) に
     縛ってしまい、 中の bubble の max-width: 65% が本来の 65% を取れない
     原因だった。 親の stretch に任せて、 中の bubble の右寄せは
     align-items: flex-end (cross-axis: 横軸方向の子の寄せ) だけで十分。 */
  align-items: flex-end;
}

.message--self .message__bubble {
  justify-self: flex-end;
  border-radius: 24px 4px 24px 24px;
}

.message--target:not(.message--self) {
  --bubble-shadow: 0 0 0 2px rgba(101, 116, 205, 0.28), var(--shadow-soft);
}

/* 送信メッセージ（自分） */
.message--self .message__bubble {
  --bubble-bg: var(--self-bg-light, #e8e7e6);
  --bubble-border: var(--self-border-light, #585858);
  --bubble-text: var(--self-text-light, #121110);
  --bubble-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
}

.theme-dark .message--self .message__bubble {
  --bubble-bg: var(--self-bg, #424749);
  --bubble-border: var(--self-border, #a7a7a7);
  --bubble-text: var(--self-text, #edeef1);
  --bubble-shadow: 0 2px 12px rgba(0, 0, 0, 0.25);
}

/* 受信メッセージ（他人） */
.message--other .message__bubble {
  --bubble-bg: var(--other-bg-light, #c9cac6);
  --bubble-border: var(--other-border-light, #8e8f80);
  --bubble-text: var(--other-text-light, #121110);
  --bubble-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
}

.theme-dark .message--other .message__bubble {
  --bubble-bg: var(--other-bg, #363539);
  --bubble-border: var(--other-border, #71707f);
  --bubble-text: var(--other-text, #edeef1);
  --bubble-shadow: 0 2px 12px rgba(0, 0, 0, 0.25);
}

.message__header {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  align-items: baseline;
  font-size: 0.75rem;
  color: var(--color-muted);
  margin-bottom: 4px;
}

.message--self .message__header {
  justify-content: flex-end;
}

.message__from {
  font-weight: 600;
  color: var(--color-text);
}

.message__arrow {
  color: var(--color-text-tertiary);
}

.message__to {
  font-weight: 500;
  color: var(--color-text-secondary);
}

/* クリック可能なユーザーのホバー効果（イベント委譲で処理） */
.message__sender-username,
.message__recipient-name {
  cursor: pointer;
  transition: all 0.2s ease;
  border-radius: 3px;
  padding: 1px 4px;
  margin: -1px -4px;
}

.message__sender-username:hover,
.message__recipient-name:hover {
  background: var(--color-surface-alt);
  color: var(--color-accent-text);
  text-decoration: underline;
  text-decoration-style: dotted;
  text-underline-offset: 2px;
}

.message__time {
  font-variant-numeric: tabular-nums;
  color: var(--color-text-tertiary);
}

.message__avatar {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  object-fit: cover;
  margin-left: 4px;
}

.message--other .message__avatar {
  margin-left: 0;
  margin-right: 4px;
}

.message__avatar--clickable {
  cursor: pointer;
  transition:
    transform 0.15s ease,
    box-shadow 0.15s ease;
}

.message__avatar--clickable:hover {
  transform: scale(1.1);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}

.message__body {
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 0.88rem;
  /* 本文は文字サイズ設定に連動させる (標準 = 1.4 で従来どおり、 大きくすると行間も広がる) */
  line-height: var(--line-height-tight, 1.4);
}

/* Markdown対応メッセージのスタイル */
.message__body--markdown {
  white-space: normal;
}

.message__body--markdown h2,
.message__body--markdown h3,
.message__body--markdown h4 {
  margin: 0.5em 0 0.25em;
  font-weight: 600;
}
.message__body--markdown h2 {
  font-size: 1.2em;
}
.message__body--markdown h3 {
  font-size: 1.1em;
}
.message__body--markdown h4 {
  font-size: 1em;
}

.message__body--markdown ul,
.message__body--markdown ol {
  margin: 0.5em 0;
  padding-left: 1.5em;
}
.message__body--markdown li {
  margin: 0.25em 0;
}

.message__body--markdown code {
  background: var(--color-code-bg, rgba(127, 127, 127, 0.15));
  color: var(--color-code-text, inherit);
  padding: 0.1em 0.3em;
  border-radius: 3px;
  font-family: monospace;
  font-size: 0.9em;
}

.message__body--markdown pre {
  background: var(--color-code-bg, rgba(127, 127, 127, 0.15));
  color: var(--color-code-text, inherit);
  padding: 0.75em;
  border-radius: 6px;
  /* 既定の white-space: pre は行を折り返さないため、 長い英文やログを貼ると
     右端で見切れて横スクロールしないと読めなかった。 pre-wrap にすると
     改行とインデントは保持したまま、 幅に収まらない行だけ折り返す。
     overflow-wrap は改行もスペースも無い長い一続き (URL / トークン) の保険。
     overflow-x は それでも収まらないとき (表など) のための最終手段として残す。
     task-manager のコメント欄が同じ pre-wrap + anywhere で先行しているため揃える。 */
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  overflow-x: auto;
  margin: 0.5em 0;
}
.message__body--markdown pre code {
  background: none;
  padding: 0;
  color: inherit;
}

.message__body--markdown blockquote {
  border: 1px solid var(--color-border);
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.04);
  border-radius: 6px;
  margin: 0.5em 0;
  padding: 0.6em 1em;
  color: var(--color-text-secondary);
}

.message__body--markdown table {
  border-collapse: collapse;
  margin: 0.5em 0;
  width: 100%;
}
.message__body--markdown th,
.message__body--markdown td {
  border: 1px solid var(--color-border);
  padding: 0.4em 0.6em;
  text-align: left;
}
.message__body--markdown th {
  background: var(--color-surface);
  font-weight: 600;
}

.message__body--markdown p {
  margin: 0.5em 0;
}
.message__body--markdown p:first-child {
  margin-top: 0;
}
.message__body--markdown p:last-child {
  margin-bottom: 0;
}

.mention {
  background: rgba(var(--color-bg-rgb), 0.2);
  color: var(--color-accent-text);
  padding: 1px 4px;
  border-radius: 4px;
  font-weight: 600;
  text-decoration: none;
  transition: all 0.2s ease;
}

.mention:hover {
  background: rgba(var(--color-bg-rgb), 0.4);
  color: var(--color-accent-hover);
}

.theme-dark .mention {
  background: rgba(var(--color-bg-rgb), 0.04);
  color: var(--color-accent-text);
}

.theme-dark .mention:hover {
  background: rgba(var(--color-bg-rgb), 0.12);
  color: var(--color-accent-hover);
}

/* メッセージ内のリンク */
.message-link,
.auto-link {
  color: var(--color-link);
  text-decoration: none;
  /* word-break: break-all はリンクの min-content を 1 文字幅まで縮めるため、
     親の `.message__bubble { width: fit-content }` が極端に狭くなる原因になっていた。
     overflow-wrap でコンテナを溢れたときだけ切る方針に変更し、 URL 全体の幅を
     min-content として保持する。 max-width (65%) を超えたら自然に折り返される。 */
  word-break: normal;
  overflow-wrap: break-word;
  transition: all 0.2s ease;
}

.message-link:hover,
.auto-link:hover {
  text-decoration: underline;
}

.message__actions {
  display: flex;
  gap: 6px;
  margin-top: 4px;
  opacity: 0.5;
  transition: opacity 0.2s ease;
}

.message__actions:hover {
  opacity: 0.8;
}

.message__action-btn {
  background: transparent;
  border: none;
  color: rgba(var(--color-text-rgb, 128, 128, 128), 0.95);
  padding: 2px;
  border-radius: 4px;
  font-size: 0.7rem;
  cursor: pointer;
  transition: all 0.2s ease;
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.message__action-btn:hover {
  color: var(--color-accent-text);
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.1);
}

.message__action-btn.delete:hover {
  color: rgba(222, 147, 147, 1);
  background: rgba(222, 147, 147, 0.1);
}

/* リアクション関連スタイル */
.message__reactions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
  align-items: center;
}

.message__reaction-item {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 4px 8px;
  border-radius: 12px;
  border: 1px solid rgba(var(--color-text-rgb, 128, 128, 128), 0.2);
  background: rgba(var(--color-surface-rgb, 255, 255, 255), 0.5);
  color: var(--color-text);
  font-size: 0.85rem;
  cursor: pointer;
  transition: all 0.2s ease;
}

.message__reaction-item:hover {
  border-color: var(--color-accent-text);
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.1);
  transform: scale(1.05);
}

.message__reaction-item--active {
  border-color: var(--color-accent-text);
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.2);
}

.message__reaction-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
}

.message__reaction-icon svg {
  width: 100%;
  height: 100%;
}

.message__reaction-count {
  font-weight: 500;
  font-size: 0.8rem;
  min-width: 12px;
  text-align: center;
}

.message__reaction-add-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 1px dashed rgba(var(--color-text-rgb, 128, 128, 128), 0.3);
  background: transparent;
  color: rgba(var(--color-text-rgb, 128, 128, 128), 0.5);
  cursor: pointer;
  transition: all 0.2s ease;
}

.message__reaction-add-btn:hover {
  border-color: var(--color-accent-text);
  color: var(--color-accent-text);
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.1);
  transform: scale(1.1);
}

/* リアクションピッカー */
.reaction-picker {
  position: fixed;
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  gap: 6px;
  padding: 12px;
  background: var(--color-surface);
  border: 1px solid rgba(var(--color-text-rgb, 128, 128, 128), 0.2);
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
  z-index: 10000;
  max-width: 360px;
  animation: pickerFadeIn 0.15s ease-out;
}

/* ピッカーのフェードインアニメーション */
@keyframes pickerFadeIn {
  from {
    opacity: 0;
    transform: translateY(8px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* 下に表示される場合のアニメーション */
.reaction-picker--below {
  animation: pickerFadeInBelow 0.15s ease-out;
}

@keyframes pickerFadeInBelow {
  from {
    opacity: 0;
    transform: translateY(-8px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.reaction-picker__item {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 8px;
  border: 1px solid transparent;
  background: transparent;
  cursor: pointer;
  transition: all 0.2s ease;
}

.reaction-picker__item svg {
  width: 24px;
  height: 24px;
}

.reaction-picker__item:hover {
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.1);
  border-color: var(--color-accent-text);
  transform: scale(1.15);
}

/* ダークテーマ対応 */
.theme-dark .message__reaction-item {
  background: rgba(31, 31, 31, 0.5);
  border-color: rgba(255, 255, 255, 0.2);
}

.theme-dark .message__reaction-item:hover {
  background: rgba(101, 116, 205, 0.2);
}

.theme-dark .message__reaction-item--active {
  background: rgba(101, 116, 205, 0.3);
}

.theme-dark .reaction-picker {
  background: rgba(31, 31, 31, 0.95);
  border-color: rgba(255, 255, 255, 0.2);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
}

.theme-dark .reaction-picker__item:hover {
  background: rgba(101, 116, 205, 0.2);
}

/* 汎用リアクションバー（ノート・メディア等、チャット以外のコンテンツ向け） */
/* 既存 .message__reaction-* とは別の中立名前空間。見た目は揃える。 */
.reaction-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}

.reaction-bar__item {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 4px 8px;
  border-radius: 12px;
  border: 1px solid rgba(var(--color-text-rgb, 128, 128, 128), 0.2);
  background: rgba(var(--color-surface-rgb, 255, 255, 255), 0.5);
  color: var(--color-text);
  font-size: 0.85rem;
  cursor: pointer;
  transition: all 0.2s ease;
}

.reaction-bar__item:hover {
  border-color: var(--color-accent-text);
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.1);
  transform: scale(1.05);
}

.reaction-bar__item--active {
  border-color: var(--color-accent-text);
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.2);
}

.reaction-bar__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
}

.reaction-bar__icon svg {
  width: 100%;
  height: 100%;
}

.reaction-bar__count {
  font-weight: 500;
  font-size: 0.8rem;
  min-width: 12px;
  text-align: center;
}

.reaction-bar__add {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 1px dashed rgba(var(--color-text-rgb, 128, 128, 128), 0.3);
  background: transparent;
  color: rgba(var(--color-text-rgb, 128, 128, 128), 0.5);
  cursor: pointer;
  transition: all 0.2s ease;
}

.reaction-bar__add:hover {
  border-color: var(--color-accent-text);
  color: var(--color-accent-text);
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.1);
  transform: scale(1.1);
}

.theme-dark .reaction-bar__item {
  background: rgba(31, 31, 31, 0.5);
  border-color: rgba(255, 255, 255, 0.2);
}

.theme-dark .reaction-bar__item:hover {
  background: rgba(101, 116, 205, 0.2);
}

.theme-dark .reaction-bar__item--active {
  background: rgba(101, 116, 205, 0.3);
}

/* ノート閲覧モードのリアクションバー配置 */
.knowledge-detail-reactions {
  margin-top: 20px;
}

/* 上部バー（メタ情報の直下）はタイトル付近に寄せるため余白を詰める */
.knowledge-detail-reactions--top {
  margin-top: 10px;
  margin-bottom: 4px;
}

/* メディア詳細パネルのリアクションバー配置 (プレビュー直下アクション行の左端) */
.media-side-panel-reactions {
  display: inline-flex;
  align-items: center;
  margin-right: auto;
}
.media-side-panel-reactions:empty {
  display: none;
}

/* ナレッジから元メッセージへのリンク */
.knowledge-source-message {
  margin: 12px 0;
  padding: 10px 14px;
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.08);
  border: 1px solid rgba(var(--color-accent-rgb, 101, 116, 205), 0.4);
  border-radius: 6px;
}

.knowledge-source-message-link {
  color: var(--color-accent-text);
  text-decoration: none;
  font-size: 0.9rem;
  transition: opacity 0.2s ease;
}

.knowledge-source-message-link:hover {
  opacity: 0.8;
  text-decoration: underline;
}

.theme-dark .knowledge-source-message {
  background: rgba(101, 116, 205, 0.1);
}

/* 編集モード用スタイル */
.message__edit-form {
  display: none;
  width: 100%;
  margin-top: 8px;
}

.message__edit-textarea {
  width: 100%;
  /* min-width: 400px は親 .message__bubble (max-width: 65%) を押し広げて
     編集 textarea が吹き出しからはみ出る原因だった。
     親 bubble 幅に追従させるため min-width を解除。
     編集モード時は .message--editing .message__bubble 側で十分な幅を確保する。 */
  min-width: 0;
  min-height: 180px;
  height: auto;
  max-height: 400px;
  padding: 12px 16px;
  border: 2px solid var(--color-accent-border);
  border-radius: 8px;
  background: var(--color-surface);
  color: var(--color-text);
  font-family: inherit;
  font-size: 0.9rem;
  line-height: 1.6;
  /* 鬼教官 M-3（チャット吹き出しレビュー）対応:
     resize: vertical だとユーザーが手動で textarea を伸ばし bubble の
     max-height を超えて見切れる事故が起きる。max-height で十分なスクロールが
     提供されるため手動リサイズは不要。 */
  resize: none;
  outline: none;
  box-sizing: border-box;
  transition: border-color 0.2s ease;
}

.message__edit-textarea:focus {
  border-color: var(--color-accent-strong);
}

.message__edit-buttons {
  display: flex;
  gap: 8px;
  margin-top: 8px;
  justify-content: flex-end;
}

.message__edit-btn {
  padding: 6px 12px;
  border: none;
  border-radius: 6px;
  font-size: 0.8rem;
  cursor: pointer;
  transition: all 0.2s ease;
}

.message__edit-btn--save {
  background: var(--color-accent-bg);
  color: var(--color-button-text);
}

.message__edit-btn--save:hover {
  background: var(--color-accent-strong);
}

.message__edit-btn--cancel {
  background: var(--color-surface);
  color: var(--color-text);
  border: 1px solid var(--color-border);
}

.message__edit-btn--cancel:hover {
  background: var(--color-target);
}

.message--editing .message__body {
  display: none;
}

.message--editing .message__edit-form {
  display: block;
}

/* 編集モード時、textarea を快適に編集できる幅を吹き出し側で確保する。
   通常時は fit-content + max-width: 65% でコンテンツに合わせるが、
   編集中は十分な編集領域を確保しつつ、self/other の左右寄せ（align-self）が
   壊れないよう width: fit-content を維持して min-width で底上げする。
   - min-width 420px: textarea が快適に書ける最低幅
   - max-width 720px: 4K 等の超ワイド画面で過大に広がるのを抑える上限
   鬼教官 H-2 対応で width: 100% は使わない（self の右寄せが消えるため）。 */
.message--editing .message__bubble {
  min-width: 420px;
  max-width: 720px;
}

/* 鬼教官 L-1 対応: 編集中はホバーシャドウを抑止（広い bubble で目立つため） */
.message--editing:hover .message__bubble {
  box-shadow: var(--bubble-shadow);
}

/* 退職済みユーザーのアバター */
.avatar--deleted {
  filter: grayscale(1);
  opacity: 0.5;
}

/* チャット 日付セパレーター (sticky で上端追従、 Slack 風)
 * 通常時 (フロー内) は中央ラベル + 両側の薄い横線。
 * 上端に貼り付いた時 (is-stuck) は横線を消してラベルだけにする
 * (横線がコンテンツに被って見づらくなるのを避けるため)。
 * `top: -1px` トリックで IntersectionObserver が threshold:[1] で stuck を検出できる。
 */
.message-date-separator {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  margin: 0.75rem 0 0.5rem;
  pointer-events: none;
}
.message-date-separator::before,
.message-date-separator::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--color-border);
}
/* 上端に貼り付いてる時は横線を消す (コンテンツとの被り回避) */
.message-date-separator.is-stuck::before,
.message-date-separator.is-stuck::after {
  content: none;
}
.message-date-separator__label {
  background: var(--color-surface);
  color: var(--color-muted);
  font-size: 0.75rem;
  font-weight: 500;
  padding: 0.25rem 0.75rem;
  border-radius: 999px;
  border: 1px solid var(--color-border);
  white-space: nowrap;
  pointer-events: auto;
}

/* ===== PWA インストールヒント (ログイン画面) ===== */
.pwa-login-hint {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  margin-top: 14px;
}

.pwa-login-hint__label {
  background: none;
  border: none;
  color: var(--color-text-secondary, #8a93a5);
  font-size: 0.8rem;
  text-decoration: underline;
  cursor: pointer;
  padding: 6px 4px;
}

.pwa-login-hint__label:hover {
  color: var(--color-text, #e0e0e0);
}

.pwa-login-hint__dismiss {
  background: none;
  border: none;
  color: var(--color-text-secondary, #8a93a5);
  font-size: 0.75rem;
  cursor: pointer;
  padding: 6px 8px;
}

/* マイページ: PWA カードの説明文 */
.profile-pwa-status {
  font-size: 0.85rem;
  color: var(--color-text-secondary, #8a93a5);
  margin: 0 0 10px;
}


/* ==== css/components/ui.css ==== */
/* 共通ボタンシステム (.button / --primary / --secondary / --danger / --link) は
   2026-08-11 に削除した。 コアが「共通ボタン」 と名乗る定義を 2 つ持っていた
   (ここと media.css の .btn) ことが、 各プラグインが自前のボタンを作り続けた原因。
   ボタンは window.buttonHtml / buttonEl (public/css/components/button.css) が正典。
   docs/design/2026-08-08_button_component_design.md 2-5 / Step 4 */

/* ログイン画面スタイル */
.login-screen {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(135deg, var(--color-bg) 0%, var(--color-surface) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10000;
}

.login-container {
  background: var(--color-surface);
  border-radius: 16px;
  padding: 36px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
  border: 1px solid var(--color-border);
  max-width: 480px;
  width: 95%;
}

.login-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 24px;
  gap: 16px;
}

.login-header__content {
  flex: 1;
  text-align: center;
}

.login-theme-toggle {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--color-text);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all var(--animation-duration) ease;
  position: relative;
}

.login-theme-toggle:hover {
  background: var(--color-target);
  transform: scale(1.05);
}

.theme-icon {
  position: absolute;
  transition: all var(--animation-duration) ease;
}

.theme-icon--sun {
  opacity: 1;
  transform: rotate(0deg) scale(1);
}

.theme-dark .theme-icon--sun {
  opacity: 0;
  transform: rotate(180deg) scale(0);
}

.theme-icon--moon {
  opacity: 0;
  transform: rotate(-180deg) scale(0);
}

.theme-dark .theme-icon--moon {
  opacity: 1;
  transform: rotate(0deg) scale(1);
}

.login-title {
  margin: 0 0 8px 0;
  font-size: 1.8rem;
  font-weight: 600;
  color: var(--color-text);
}

.login-subtitle {
  margin: 0;
  color: var(--color-muted);
  font-size: 0.9rem;
}

.login-form {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.login-field {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.login-label {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--color-text);
}

.login-select,
.login-input {
  padding: 16px 20px;
  border: 2px solid var(--color-border);
  border-radius: 12px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 1rem;
  line-height: 1.5;
  min-height: 56px;
  width: 100%;
  transition: all 0.2s ease;
  box-sizing: border-box;
}

.login-select:focus,
.login-input:focus {
  outline: none;
  border-color: var(--color-accent-text);
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
  transform: translateY(-1px);
}

/* ユーザーID検索入力欄専用スタイル */
#username-search {
  width: 100%;
  padding: 16px 20px;
  border: 2px solid var(--color-border);
  border-radius: 12px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 1rem;
  line-height: 1.5;
  min-height: 60px;
  transition: all 0.2s ease;
  box-sizing: border-box;
  font-weight: 500;
}

#username-search:focus {
  outline: none;
  border-color: var(--color-accent-text);
  box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.12);
  transform: translateY(-2px);
}

.login-button {
  padding: 16px 32px;
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  border: none;
  border-radius: 12px;
  font-size: 1.1rem;
  font-weight: 600;
  cursor: pointer;
  transition: all var(--animation-duration) ease;
  margin-top: 16px;
  min-height: 56px;
  letter-spacing: 0.5px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-family: inherit;
}

.login-button:hover {
  background: var(--color-accent-strong);
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(var(--color-accent-rgb), 0.3);
}

.login-button:active {
  transform: translateY(0);
}

.login-error-message {
  margin-top: 16px;
  padding: 12px 16px;
  background-color: rgba(231, 76, 60, 0.1);
  border: 1px solid var(--color-status-off);
  border-radius: var(--border-radius, 8px);
  color: var(--color-status-off);
  font-size: 0.8rem;
  text-align: center;
  line-height: 1.5;
  animation: fadeIn var(--animation-duration, 0.3s) ease;
}

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* 新しいログイン画面スタイル */

.username-search-container {
  position: relative;
}

.username-suggestions {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow: var(--shadow-hover);
  max-height: 200px;
  overflow-y: auto;
  z-index: 1000;
  margin-top: 4px;
}

.username-suggestion {
  padding: 16px 20px;
  border-bottom: 1px solid var(--color-border);
  cursor: pointer;
  transition: all 0.2s ease;
  min-height: 56px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.username-suggestion:last-child {
  border-bottom: none;
}

.username-suggestion:hover,
.username-suggestion.selected {
  background: var(--color-target);
}

.suggestion-name {
  font-weight: 600;
  color: var(--color-text);
  font-size: 1rem;
  line-height: 1.4;
}

.suggestion-role {
  font-size: 0.85rem;
  color: var(--color-muted);
  margin-top: 2px;
}

.suggestion-create {
  padding: 12px 16px;
  border-bottom: 1px solid var(--color-border);
  cursor: pointer;
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  font-weight: 600;
  font-size: 0.85rem;
}

.suggestion-create:hover {
  background: var(--color-accent-strong);
}

/* ヘッダーウィジェットコンテナ */
.header-widgets-container {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
}

.header-widgets-left,
.header-widgets-center,
.header-widgets-right {
  display: flex;
  align-items: center;
  gap: 8px;
}

.header-widgets-left {
  justify-content: flex-start;
}

.header-widgets-center {
  justify-content: center;
  flex: 1;
}

.header-widgets-right {
  justify-content: flex-end;
}

.header-widget {
  display: flex;
  align-items: center;
}

/* ヘッダーユーザー情報 */
.header-user-info {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0;
}

.current-user {
  font-size: 0.85rem;
  color: var(--color-muted);
  display: flex;
  align-items: center;
  gap: 6px;
}

.header-user-avatar {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid var(--color-border);
}

.current-role {
  font-size: 0.78rem;
  color: var(--color-accent-strong);
  background: rgba(168, 184, 232, 0.16);
  padding: 4px 8px;
  border-radius: 999px;
  border: 1px solid rgba(168, 184, 232, 0.4);
}

.logout-button {
  padding: 4px 12px;
  background: transparent;
  color: var(--color-text);
  border: 1px solid var(--color-border);
  border-radius: 4px;
  font-size: 0.8rem;
  cursor: pointer;
  transition: all 0.2s ease;
}

.logout-button:hover {
  background: var(--color-target);
  border-color: var(--color-accent-text);
}

.theme-dark .message__actions {
  background: rgba(31, 31, 31, 0.95);
  border-color: rgba(255, 255, 255, 0.15);
}

.theme-dark .message__action-btn {
  color: var(--color-text);
}

.theme-dark .message__action-btn:hover {
  background: var(--color-accent-bg);
  color: var(--color-button-text);
}

/* ダークテーマでのアクティブチャットスタイル */
.theme-dark .sidebar__menu-link--active {
  background: rgba(154, 166, 228, 0.15);
  color: var(--color-accent-text);
  border-radius: 8px;
}

@media (hover: hover) and (pointer: fine) {
  .theme-dark .sidebar__menu-link--active:hover {
    background: var(--color-target);
    color: var(--color-accent-strong);
  }
}

form {
  background: var(--color-surface);
  border-radius: var(--border-radius);
  border: 1px solid var(--color-border);
  padding: 22px 24px;
  margin: 14px 0;
  display: flex;
  flex-direction: column;
  gap: 18px;
  box-shadow: var(--shadow-soft);
  transition: all var(--animation-duration) ease;
}

.message-form-row {
  display: flex;
  gap: 12px;
  /* 行全体をフッター位置 (底辺) に固定する。 textarea が複数行に展開しても
     宛先選択ボックスと予約ボタンは底辺に張り付いたまま動かない。 textarea 内
     ボタン (送信 / 添付) は wrapper の align-items: center で textarea の中央軸
     追従を維持。 */
  align-items: flex-end;
  width: 100%;
}

.recipients-compact {
  position: relative;
  display: flex;
  min-width: 180px;
  max-width: 250px;
  min-height: 48px;
}

/* ===== 添付メディアの公開範囲表示 (メッセージ入力欄の上、添付があるときだけ) =====
   設計: docs/design/2026-08-01_visibility_inline_control_design.md 6-8
   添付プレビューの直上に出て、「今添付したものの話」だと説明なしで伝わる位置。
   メニューの基準にするため relative */
.chat-visibility-control {
  position: relative;
  margin-bottom: 4px;
  width: max-content;
}

.visibility-control {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-muted);
  font-size: 0.7rem;
  white-space: nowrap;
  cursor: pointer;
  border-radius: 10px;
}

.visibility-control:hover {
  color: var(--color-text);
}

/* 見られる人が限定されるときは色で気づきやすくする (装飾記号は使わない) */
.visibility-control--restricted .visibility-control__value {
  color: var(--color-accent-text);
  font-weight: 600;
}

.visibility-control__menu {
  position: absolute;
  left: 0;
  bottom: calc(100% + 4px);
  width: 280px;
  max-height: 380px;
  overflow-y: auto;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
  padding: 4px;
  z-index: 1000;
}

.visibility-control__item {
  display: block;
  width: 100%;
  text-align: left;
  padding: 8px 10px;
  background: none;
  border: none;
  border-radius: 6px;
  cursor: pointer;
  color: var(--color-text);
}

.visibility-control__item:hover {
  background: var(--color-bg);
}

.visibility-control__item--active {
  background: var(--color-bg);
}

.visibility-control__item-title {
  display: block;
  font-size: 0.8rem;
  font-weight: 600;
}

.visibility-control__item-detail {
  display: block;
  font-size: 0.7rem;
  color: var(--color-muted);
  margin-top: 2px;
}

.visibility-control__manual {
  padding: 8px;
}

/* 確定とキャンセルは物理的に離す (誤操作防止) */
.visibility-control__manual-actions {
  display: flex;
  justify-content: space-between;
  margin-top: 10px;
}

.visibility-control__manual-cancel,
.visibility-control__manual-apply {
  padding: 6px 12px;
  border-radius: 6px;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.75rem;
  cursor: pointer;
}

.visibility-control__manual-apply {
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  border-color: transparent;
}

.visibility-control__manual-note {
  font-size: 0.68rem;
  color: var(--color-muted);
  margin: 8px 0 0;
}

.recipients-compact-label {
  font-size: 0.65rem;
  font-weight: 500;
  color: var(--color-muted);
}

.message-input-container {
  flex: 1;
  /* 幅 320 級の画面で入力欄が縮めず右端がはみ出していた (2026-08-26、カンバン task-1787714894178-jjdnh)。
     flex の子は既定で中身の最小幅までしか縮まないため、明示的に下限を外す。
     設計: docs/design/2026-08-26_chat_mobile_overflow_design.md 3-4 / 変更 D */
  min-width: 0;
}

/* 参加者アイコン表示 */
.chat-participants {
  display: flex;
  align-items: center;
  gap: 4px;
  opacity: 1;
  margin-left: auto;
}

.chat-participants.hidden {
  display: none;
}

/* 丸のサイズも文字サイズに追従させる (rem)。 px 固定だと文字だけ大きくなって円からはみ出す */
.participant-avatar {
  width: 1.625rem;
  height: 1.625rem;
  border-radius: 50%;
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.7rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
  border: 2px solid var(--color-surface);
  margin-left: -8px;
  position: relative;
}

.participant-avatar:first-child {
  margin-left: 0;
}

.participant-avatar:hover {
  transform: translateY(-2px);
  z-index: 10;
  opacity: 1;
}

.participant-avatar.self {
  border-color: var(--color-accent-text);
  box-shadow: 0 0 0 1px var(--color-accent-border);
}

.participant-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
}

/* 隣に並ぶ .participant-avatar と同寸で重ねる丸なので、サイズ指定も揃える */
.participant-count {
  width: 1.625rem;
  height: 1.625rem;
  border-radius: 50%;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  color: var(--color-text);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.7rem;
  font-weight: 500;
  margin-left: -8px;
  cursor: pointer;
  transition: all 0.2s ease;
}

.participant-count:hover {
  background: var(--color-surface);
  transform: translateY(-2px);
}

/* ツールチップ */
.participant-avatar::after {
  content: attr(data-name);
  position: absolute;
  top: 110%;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(0, 0, 0, 0.9);
  color: var(--color-button-text);
  padding: 4px 8px;
  border-radius: 4px;
  font-size: 0.75rem;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease;
  margin-bottom: 4px;
}

.participant-avatar:hover::after {
  opacity: 1;
}

#message-form {
  display: flex;
  flex-direction: column;
  gap: 12px;
  background: transparent;
  border: none;
  box-shadow: none;
  padding: 0 0 24px;
}

.admin-view-active #message-form {
  display: none !important;
}

label {
  font-size: 0.7rem;
  font-weight: 500;
  color: var(--color-muted);
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* 全 textarea でリサイズハンドルを無効化 (C-HUB はほぼすべての textarea で
   auto-resize or 固定サイズ運用、 ユーザー手動リサイズは UI 上意図しない挙動になる)。
   旧: ここに min-height: 60px / max-height: 150px もあったが、 chat の正規スタイルは
   下方の `.message-input-wrapper textarea` (ui.css 内別ブロック) で完結しており、
   グローバル制約は quick-memo / メディア説明 等で意図しない高さ制限の漏れを起こすため
   2026-05-12 撤去。 resize: none のみグローバル維持。 */
textarea {
  resize: none;
}

.message-input-wrapper {
  /* mention-suggestions の絶対配置基準として relative 必須 (chat-mention.ts が style.bottom/left を wrapper 基準で計算) */
  position: relative;
  display: flex;
  /* 全要素 (添付ボタン / textarea / 送信ボタン) を縦中央軸に揃える (1 行入力時は完全整列、 複数行入力時もボタンが textarea の中央に追従) */
  align-items: center;
  gap: 8px;
  padding: 0 8px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: var(--color-surface);
  transition: border-color var(--animation-duration) ease;
  width: 100%;
  box-sizing: border-box;
}

.message-input-wrapper:focus-within {
  /* シンプルに border-color 変化のみ (二重 box-shadow を撤去、 アクセシビリティ用に色変化は残す) */
  border-color: var(--color-accent-strong);
}

/* チャット入力欄は wrapper:focus-within の border-color 変化で focus 表現するため、 textarea 本体は透明 */
.message-input-wrapper textarea:focus {
  border-color: transparent;
}

.message-input-wrapper.drag-over {
  border-color: var(--color-accent-strong);
  background: var(--color-target);
  box-shadow: 0 0 0 3px rgba(121, 134, 203, 0.2);
}

.message-input-wrapper textarea {
  flex: 1;
  /* flex の子は既定で「中身の最小幅」までしか縮まない。textarea に cols が無いと
     既定の 20 文字 (180px) が下限になり、幅 420px 未満のスマホで入力欄が入れ物を
     はみ出して右端が切れる (2026-08-26 / カンバン task-1787714894178-jjdnh、
     設計 docs/design/2026-08-26_chat_mobile_overflow_design.md) */
  min-width: 0;
  border: none;
  background: transparent;
  resize: none;
  /* テキスト 1 行分 + 上下 padding を意味的に表現 (line-height 1.4em + padding 12*2) */
  padding: 12px 0;
  min-height: calc(1.4em + 24px);
  /* 入力欄の縦伸びを画面の 3 割までに抑え、メッセージ閲覧エリアを確保する (超過分は内部スクロール) */
  max-height: min(30vh, 240px);
  line-height: 1.4;
  outline: none;
  font-family: inherit;
  /* 物理 px に固定: ユーザーのブラウザ最小フォントサイズ変更で破綻しない */
  font-size: 0.875rem;
  box-sizing: border-box;
  overflow-y: hidden;
  word-wrap: break-word;
  transition: none;
}

.message-input-wrapper textarea.textarea-scrollable {
  overflow-y: auto;
}

.send-button {
  /* flex 子: 右端配置 (wrapper の align-items: center で縦中央) */
  order: 1;
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border: none;
  border-radius: 8px;
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all var(--animation-duration) ease;
  opacity: 0.7;
}

/* 送れる状態は**色の濃さだけ**で伝える。
   2026-08-13 ラケ判断: 「膨らみは無くして、 色の変化だけで送信可能な状態を伝える形でいい。
   そのほうがミニマルで落ち着いて見えるし、 十分わかりやすい」。
   光る条件は hasSendableContent (本文 or 画像 or ノート) が決める */
.send-button:hover,
.send-button.active {
  opacity: 1;
  background: var(--color-accent-strong);
}

.send-button:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}

/* 予約送信ボタン本体の見た目は共通部品 (chub-btn--icon)。ここはバッジの
   位置決めの基準 (position) だけ持つ。旧 .send-schedule-btn の見た目 CSS は
   v2 移行 (62278182) で「死んだ CSS」と誤判定されて消え、素のボタンに
   なっていた (2026-08-19 発見) */
#send-schedule-btn {
  position: relative;
}

.send-schedule-badge {
  position: absolute;
  top: -6px;
  right: -8px;
  background: var(--color-accent, #a4b2dd);
  color: var(--color-button-text);
  border-radius: 7px;
  min-width: 14px;
  height: 14px;
  font-size: 0.6rem;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  padding: 0 2px;
  cursor: pointer;
  line-height: 1;
}

/* 予約送信モーダル */
.schedule-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
}

.schedule-modal {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 12px;
  width: 320px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
}

.schedule-modal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px 12px;
  border-bottom: 1px solid var(--color-border);
}

.schedule-modal__title {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--color-text);
}

.schedule-modal__close {
  background: none;
  border: none;
  color: var(--color-text-secondary);
  cursor: pointer;
  padding: 4px;
  display: flex;
  align-items: center;
  border-radius: 4px;
}

.schedule-modal__close:hover {
  color: var(--color-text);
  background: var(--color-surface-alt);
}

.schedule-modal__body {
  padding: 16px 20px;
}

.schedule-modal__label {
  display: block;
  font-size: 0.8rem;
  color: var(--color-text-secondary);
  margin-bottom: 8px;
}

.schedule-modal__input {
  width: 100%;
  padding: 8px 12px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.875rem;
  box-sizing: border-box;
}

.schedule-modal__input:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

.schedule-modal__hint {
  font-size: 0.75rem;
  color: var(--color-text-secondary);
  margin: 8px 0 0;
}

.schedule-modal__footer {
  display: flex;
  gap: 8px;
  padding: 12px 20px 16px;
  justify-content: flex-end;
}

.schedule-modal__cancel {
  padding: 8px 16px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: none;
  color: var(--color-text-secondary);
  font-size: 0.875rem;
  cursor: pointer;
  transition: all 0.2s ease;
}

.schedule-modal__cancel:hover {
  background: var(--color-surface-alt);
  color: var(--color-text);
}

.schedule-modal__submit {
  padding: 8px 16px;
  border: none;
  border-radius: 8px;
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  font-size: 0.875rem;
  cursor: pointer;
  transition: all 0.2s ease;
}

.schedule-modal__submit:hover {
  background: var(--color-accent-strong);
}

.schedule-modal__submit:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* アップロード進捗表示 */
.upload-progress-container {
  padding: 8px 12px;
  margin-bottom: 8px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  animation: slideDown 0.2s ease-out;
}

.upload-progress-container.hidden {
  display: none;
}

@keyframes slideDown {
  from {
    opacity: 0;
    transform: translateY(-8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.upload-progress-info {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 6px;
}

.upload-progress-text {
  font-size: 0.8rem;
  color: var(--color-text);
  font-weight: 500;
}

.upload-progress-count {
  font-size: 0.75rem;
  color: var(--color-muted);
}

.upload-progress-bar {
  height: 4px;
  background: var(--color-border);
  border-radius: 2px;
  overflow: hidden;
}

.upload-progress-fill {
  height: 100%;
  background: var(--color-accent-bg);
  border-radius: 2px;
  width: 0%;
  transition: width 0.3s ease;
}

.upload-progress-fill.uploading {
  animation: progressPulse 1.5s ease-in-out infinite;
}

@keyframes progressPulse {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.7;
  }
}

/* レスポンシブ対応 */

.helper-text {
  font-size: 0.74rem;
  color: var(--color-muted);
  margin: -2px 0 0;
}

/* ポップアップ共通スタイル */
.popup-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 10100;
  display: none;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(4px);
}

.popup-overlay.show {
  display: flex;
}

.popup-content {
  background: var(--color-surface);
  border-radius: 16px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
  max-width: 90vw;
  max-height: 85vh;
  overflow-y: auto;
  position: relative;
  animation: popupFadeIn 0.2s ease-out;
}

/* ポップアップ幅バリエーション */
.popup-content--small {
  width: 420px;
  max-width: 95vw;
}

.popup-content--medium {
  width: 560px;
  max-width: 95vw;
}

.popup-content--large {
  width: 640px;
  max-width: 95vw;
}

.popup-content--900 {
  width: 900px;
  max-width: 95vw;
  max-height: 90vh;
}

/* ポップアップフッター */
.popup-footer--between {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 16px;
  border-top: 1px solid var(--color-border);
}

/* ポップアップボディレイアウト */
.popup-body--grid {
  display: grid;
  gap: 16px;
}

/* 使い方ガイドセクション */
.usage-section-title {
  margin: 0 0 8px;
  font-size: 1rem;
  color: var(--color-text);
}

.usage-section-list {
  margin: 0;
  padding-left: 1.2em;
  color: var(--color-text);
  font-size: 0.9rem;
  line-height: 1.6;
}

.usage-section-text {
  margin: 0;
  color: var(--color-muted);
  font-size: 0.9rem;
  line-height: 1.6;
}

/* キーボードショートカット表示 */
.kbd-key {
  padding: 2px 4px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
}

/* ポップアップ幅バリエーション（追加） */
.popup-content--480 {
  width: 480px;
  max-width: 95vw;
}

.popup-content--500 {
  max-width: 500px;
}

.popup-content--540 {
  width: 540px;
  max-width: 95vw;
}

.popup-content--narrow-vw {
  max-width: 90vw;
}

/* ポップアップボディ最小高さ */
.popup-body--min-200 {
  min-height: 200px;
}

/* ユーティリティ: マージン */
.mt-8 {
  margin-top: 8px;
}

.mb-8 {
  margin-bottom: 8px;
}

.mb-24 {
  margin-bottom: 24px;
}

.mt-24 {
  margin-top: 1.5rem;
}

/* 汎用ビュータイトル */
.view-title {
  margin: 0;
  font-size: 1.3rem;
  color: var(--color-text);
}

/* プログレステキスト */
.progress-text {
  margin-top: 0.5rem;
  font-size: 0.875rem;
}

/* ポップアップ説明文 */
.popup-desc {
  margin: 0 0 16px 0;
  color: var(--color-text);
  line-height: 1.6;
}

.popup-desc--secondary {
  margin: 0 0 20px 0;
  color: var(--color-text-secondary);
  font-size: 0.9rem;
  line-height: 1.5;
}

/* ポップアップ情報カード */
.popup-info-card {
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 16px;
  margin-bottom: 20px;
}

.popup-info-card--scrollable {
  max-height: 300px;
  overflow-y: auto;
}

/* ポップアップ情報リスト */
.popup-info-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.popup-info-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.popup-info-label {
  color: var(--color-muted);
  font-size: 0.9rem;
}

.popup-info-value {
  font-weight: 600;
  color: var(--color-text);
}

.popup-info-value--mono {
  font-family: monospace;
  font-weight: 500;
  color: var(--color-text);
}

.popup-info-value--accent {
  font-family: monospace;
  font-weight: 600;
  color: var(--color-accent);
}

/* ポップアップ区切り線 */
.popup-divider {
  height: 1px;
  background: var(--color-border);
}

/* ポップアップ注意文 */
.popup-warning {
  margin: 0 0 20px 0;
  color: var(--color-warning);
  font-size: 0.85rem;
  line-height: 1.5;
  padding: 12px;
  background: var(--color-surface);
  border: 1px solid rgba(var(--color-warning-rgb, 255, 193, 7), 0.5);
  border-radius: 4px;
}

/* ポップアップアクションボタン群 */
.popup-actions {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
}

.popup-actions--mt {
  margin-top: 8px;
}

/* ポップアップフォーム */
.popup-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.popup-form-group {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.popup-form-label {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--color-text);
}

.popup-form-required {
  color: var(--color-danger);
}

.popup-form-input {
  padding: 10px 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.9rem;
}

.popup-form-input--lg {
  padding: 12px 16px;
  border-width: 2px;
  border-radius: 8px;
  transition: border-color 0.2s ease;
}

.popup-form-hint {
  font-size: 0.8rem;
  color: var(--color-muted);
}

.popup-form-hint--notice {
  margin: 8px 0 0 0;
  color: var(--color-muted);
  font-size: 0.8rem;
}

/* ポップアップ却下理由 */
.popup-reject-container {
  margin-bottom: 20px;
}

.popup-reject-label {
  display: block;
  margin-bottom: 8px;
  color: var(--color-text);
  font-size: 0.9rem;
  font-weight: 500;
}

.popup-reject-textarea {
  width: 100%;
  padding: 10px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-bg);
  color: var(--color-text);
  font-family: inherit;
  font-size: 0.9rem;
  resize: vertical;
}

/* アクティビティログモーダル */
.popup-container--logs {
  max-width: 1200px;
  max-height: 90vh;
}

.popup-body--column {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.log-filters {
  display: flex;
  gap: 12px;
  padding: 12px;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  flex-wrap: wrap;
  align-items: flex-end;
}

.log-filter-group {
  flex: 1;
  min-width: 150px;
}

.log-filter-label {
  display: block;
  margin-bottom: 4px;
  font-size: 0.85rem;
  color: var(--color-text-secondary);
}

/* 日付欄は button (独自カレンダーを開く)。 select / 入力欄と同じ見た目に揃える */
.log-filter-input {
  width: 100%;
  height: 36px;
  padding: 0 8px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.9rem;
  box-sizing: border-box;
  text-align: left;
  font-family: inherit;
}

.log-filter-reset {
  height: 36px;
  padding: 0 16px;
  background: var(--color-surface);
  color: var(--color-text);
  border: 1px solid var(--color-border);
  border-radius: 4px;
  cursor: pointer;
  font-size: 0.9rem;
  white-space: nowrap;
  box-sizing: border-box;
}

.log-results {
  overflow-y: auto;
  flex: 1;
  min-height: 0;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
  padding: 4px;
}

.log-pagination {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 12px;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 8px;
}

.log-page-info {
  color: var(--color-text);
  font-size: 0.9rem;
}

/* 汎用非表示クラス */
.hidden {
  display: none;
}

@keyframes popupFadeIn {
  from {
    opacity: 0;
    transform: scale(0.95);
  }

  to {
    opacity: 1;
    transform: scale(1);
  }
}

/* 画像ポップアップのオーバーレイ */
.image-popup-overlay {
  background: rgba(0, 0, 0, 0.9);
  z-index: 10200;
}

/* 画像ポップアップの中身は PDF と共通の .preview-popup-* を使う (方式統一 2026-07-17) */

.preview-popup-body--image {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #202129;
}

#popup-image {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
}

.preview-popup-action--danger:hover {
  background: var(--color-danger-fill);
  color: var(--color-button-text);
}

/* PDFプレビューモーダル */
#pdf-popup {
  z-index: 10200;
  background: rgba(0, 0, 0, 0.9);
}

.preview-popup-content {
  width: min(90vw, 1200px);
  height: 90vh;
  display: flex;
  flex-direction: column;
  border-radius: 12px;
  overflow: hidden;
}

.preview-popup-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
  flex-shrink: 0;
}

.preview-popup-filename {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--color-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
  margin-right: 12px;
}

.preview-popup-actions {
  display: flex;
  gap: 8px;
  flex-shrink: 0;
}

.preview-popup-action {
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  color: var(--color-text-secondary);
  cursor: pointer;
  padding: 6px;
  border-radius: 4px;
  font-size: 1.2rem;
  transition:
    color 0.15s,
    background 0.15s;
}

.preview-popup-action:hover {
  color: var(--color-text);
  background: var(--color-surface-alt);
}

/* 即時ツールチップ: アイコンだけでは伝わりにくいので、乗せた瞬間 (+ キーボードフォーカス時) に
   aria-label をそのまま下に出す。ブラウザ標準 title の表示遅延を待たせない */
.preview-popup-action {
  position: relative;
}

.preview-popup-action::after {
  content: attr(aria-label);
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  /* ツールチップはライト/ダーク共通の濃色。ダークテーマで背景に沈まないよう薄い縁取り付き */
  background: rgba(28, 29, 36, 0.92);
  color: var(--color-button-text);
  border: 1px solid rgba(255, 255, 255, 0.16);
  font-size: 0.72rem;
  line-height: 1;
  padding: 5px 8px;
  border-radius: 4px;
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  transform: translateY(-2px);
  transition:
    opacity 0.1s,
    transform 0.1s;
  z-index: 10;
}

.preview-popup-action:hover::after,
.preview-popup-action:focus-visible::after {
  opacity: 1;
  transform: translateY(0);
}

.preview-popup-body {
  flex: 1;
  position: relative;
  min-height: 0;
}

.preview-popup-iframe {
  width: 100%;
  height: 100%;
  border: none;
}

/* テキスト系: ミニプレビュー (.media-preview-text) と同じ読み味に揃える */
.preview-popup-text {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 16px 20px;
  overflow: auto;
  background: var(--color-surface);
  color: var(--color-text);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.8125rem;
  line-height: 1.7;
  white-space: pre-wrap;
  word-break: break-word;
  text-align: left;
}

.preview-popup-video {
  width: 100%;
  height: 100%;
  /* 動画の縦横比を保ったまま枠に収める (黒帯は video 側の背景) */
  object-fit: contain;
  background: #000;
  display: block;
}

.preview-popup-audio {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: var(--color-surface);
}

.preview-popup-audio-player {
  width: min(100%, 520px);
}

/* 音声はプレイヤー 1 本だけなので、画面いっぱいに広げると余白ばかりになる */
#pdf-popup[data-preview-kind='audio'] .preview-popup-content,
#pdf-popup[data-preview-kind='audio'] .preview-popup-audio {
  height: auto;
}

.preview-popup-loading {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  color: var(--color-text-secondary);
  font-size: 0.9rem;
  background: var(--color-surface);
}

/* 読み込みに失敗したときは回転を止めてメッセージだけ残す */
.preview-popup-loading--error .preview-popup-spinner {
  display: none;
}

.preview-popup-spinner {
  width: 20px;
  height: 20px;
  border: 2px solid var(--color-border);
  border-top-color: var(--color-accent);
  border-radius: 50%;
  animation: preview-popup-spin 0.8s linear infinite;
}

@keyframes preview-popup-spin {
  to {
    transform: rotate(360deg);
  }
}

/* オーバーレイアイコンボタン（共通） */
.btn-icon--overlay {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  background: rgba(0, 0, 0, 0.6);
  border: none;
  border-radius: 8px;
  cursor: pointer;
  color: var(--color-button-text);
  transition: all 0.2s ease;
  backdrop-filter: blur(4px);
}

.btn-icon--overlay:hover {
  background: rgba(0, 0, 0, 0.8);
  transform: scale(1.05);
}

.btn-icon--overlay svg {
  width: 20px;
  height: 20px;
}

/* 削除ボタン */
.btn-icon--overlay-delete {
  color: #c77474;
}

.btn-icon--overlay-delete:hover {
  background: #c77474;
  color: var(--color-button-text);
}

/* ダウンロードボタン */
.btn-icon--overlay-download {
  color: var(--color-button-text);
}

.btn-icon--overlay-download:hover {
  background: var(--color-accent-bg);
}

/* 編集モーダルのフッターアクション */
.popup-footer-actions {
  display: flex;
  gap: 8px;
}

.popup-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px 24px 16px 24px;
  border-bottom: 1px solid var(--color-border);
}

.popup-title {
  font-size: 1.2rem;
  font-weight: 600;
  color: var(--color-text);
  margin: 0;
  flex: 1;
}

.popup-header-actions {
  display: flex;
  gap: 8px;
  margin-right: 12px;
}

.popup-action-btn {
  width: 32px;
  height: 32px;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-text);
  border-radius: 6px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
}

.popup-action-btn:hover {
  background: var(--color-target);
  border-color: var(--color-accent);
  color: var(--color-accent-text);
}

.popup-action-btn--danger:hover {
  background: rgba(var(--color-danger-rgb), 0.12);
  border-color: var(--color-danger);
  color: var(--color-danger);
}

.popup-action-btn svg {
  width: 18px;
  height: 18px;
}

.popup-close {
  background: transparent;
  border: none;
  color: var(--color-muted);
  font-size: 1.5rem;
  cursor: pointer;
  padding: 4px;
  border-radius: 6px;
  transition: all 0.2s ease;
}

.popup-close:hover {
  background: var(--color-target);
  color: var(--color-text);
}

/* 確認ダイアログボタン */
/* 昇格依頼の「却下」 だけが使う。 1 回目の押下で理由欄を出し文字も変わる 2 段階の
   ボタンで、 JS が confirm-button--danger-active を付け外しする = 押した状態が残る種。
   他の確認ダイアログのボタンは 2026-08-11 に共通部品 (chub-btn) へ移行済み */
.confirm-button {
  padding: 10px 20px;
  border-radius: 8px;
  font-size: 0.9rem;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  border: none;
  min-width: 80px;
}

.confirm-button--danger {
  background: var(--color-danger-fill);
  color: var(--color-button-text);
}

.confirm-button--danger:hover {
  opacity: 0.85;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(231, 76, 60, 0.4);
}

.popup-body {
  padding: 20px;
}

/* メンバー追加方法選択 */
.add-member-choice-container {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.add-member-choice-btn {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 20px;
  border: 2px solid var(--color-border);
  border-radius: var(--border-radius);
  background: var(--color-surface);
  cursor: pointer;
  transition: all var(--animation-duration) ease;
  text-align: left;
  width: 100%;
}

.add-member-choice-btn:hover {
  border-color: var(--color-accent);
  background: var(--color-target);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.add-member-choice-btn svg {
  width: 32px;
  height: 32px;
  flex-shrink: 0;
  stroke: var(--color-accent);
}

.add-member-choice-content {
  flex: 1;
}

.add-member-choice-title {
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-text);
  margin-bottom: 4px;
}

.add-member-choice-desc {
  font-size: 0.85rem;
  color: var(--color-muted);
}

/* メンバー追加モーダル */
.add-member-body {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 20px;
}

/* 検索ボックス */
.add-member-search input {
  width: 100%;
  padding: 12px 16px;
  border: 2px solid var(--color-border);
  border-radius: var(--border-radius);
  background: var(--color-surface);
  font-size: 0.95rem;
  color: var(--color-text);
  transition: all var(--animation-duration) ease;
}

.add-member-search input:focus {
  outline: none;
  border-color: var(--color-accent);
  box-shadow: 0 0 0 3px rgba(121, 134, 203, 0.1);
}

.add-member-search input::placeholder {
  color: var(--color-muted);
}

/* 選択済みエリア */
.add-member-selected-area {
  border: 1px solid var(--color-border);
  border-radius: var(--border-radius);
  background: var(--color-bg);
  overflow: hidden;
}

.add-member-selected-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 14px;
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
}

.add-member-selected-label {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-muted);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.add-member-selected-count {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-accent);
  background: var(--color-accent-bg);
  padding: 2px 8px;
  border-radius: 12px;
}

.add-member-selected-list {
  padding: 12px;
  min-height: 60px;
  max-height: 120px;
  overflow-y: auto;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-content: flex-start;
}

.add-member-empty-state {
  width: 100%;
  text-align: center;
  color: var(--color-muted);
  font-size: 0.9rem;
  padding: 12px;
}

.add-member-tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  border-radius: 16px;
  font-size: 0.85rem;
  font-weight: 500;
  transition: all var(--animation-duration) ease;
  cursor: pointer;
  user-select: none;
}

.add-member-tag:hover {
  background: var(--color-accent);
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.add-member-tag-remove {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.2);
  font-size: 0.75rem;
  line-height: 1;
  transition: background var(--animation-duration) ease;
}

.add-member-tag-remove:hover {
  background: rgba(255, 255, 255, 0.4);
}

/* 候補リスト */
.add-member-candidates {
  border: 1px solid var(--color-border);
  border-radius: var(--border-radius);
  background: var(--color-surface);
  overflow: hidden;
}

.add-member-candidates-header {
  padding: 10px 14px;
  background: var(--color-bg);
  border-bottom: 1px solid var(--color-border);
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-muted);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.add-member-candidates-list {
  min-height: 280px;
  max-height: 280px;
  overflow-y: auto;
}

.add-member-loading {
  padding: 20px;
  text-align: center;
  color: var(--color-muted);
  font-size: 0.9rem;
}

.add-member-candidate-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--color-border);
  cursor: pointer;
  transition: all var(--animation-duration) ease;
  user-select: none;
}

.add-member-candidate-item:last-child {
  border-bottom: none;
}

.add-member-candidate-item:hover {
  background: var(--color-target);
}

.add-member-candidate-item.selected {
  background: var(--color-accent-bg);
}

.add-member-candidate-avatar {
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  font-weight: 600;
  flex-shrink: 0;
  transition: all var(--animation-duration) ease;
}

.add-member-candidate-item.selected .add-member-candidate-avatar {
  box-shadow: 0 0 0 3px var(--color-accent);
}

.add-member-candidate-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
}

.add-member-candidate-info {
  flex: 1;
  min-width: 0;
}

.add-member-candidate-name {
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--color-text);
  margin-bottom: 2px;
}

.add-member-candidate-username {
  font-size: 0.8rem;
  color: var(--color-muted);
}

.add-member-no-results {
  padding: 32px 20px;
  text-align: center;
  color: var(--color-muted);
  font-size: 0.9rem;
}

/* 送信者・宛先共通スタイル */
.sender-input,
.recipients-input {
  position: relative;
  min-height: 48px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  padding: 8px 12px;
  background: var(--color-surface);
  display: flex;
  flex-direction: row;
  gap: 4px;
  transition: border-color var(--animation-duration) ease;
  overflow-y: auto;
  align-items: center;
}

.recipients-compact .recipients-input {
  flex: 1;
  min-height: 0;
  flex-direction: column;
  align-items: stretch;
}

.sender-input input {
  border: none;
  background: transparent;
  font-size: 0.85rem;
  color: var(--color-text);
  outline: none;
  width: 100%;
  height: 22px;
}

.recipients-input:focus-within {
  border-color: var(--color-accent-strong);
  box-shadow: 0 0 0 3px rgba(121, 134, 203, 0.1);
}

.recipients-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  min-height: 0;
  align-items: center;
  flex-shrink: 0;
}

.recipients-chips.has-chips {
  margin-bottom: 4px;
}

.recipient-chip {
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  padding: 2px 6px 2px 8px;
  border-radius: 12px;
  font-size: 0.75rem;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  animation: chipSlide 0.2s ease;
  white-space: nowrap;
  flex-shrink: 0;
  height: 22px;
}

@keyframes chipSlide {
  from {
    transform: scale(0.8);
    opacity: 0;
  }

  to {
    transform: scale(1);
    opacity: 1;
  }
}

.recipient-chip .remove-btn {
  background: rgba(255, 255, 255, 0.3);
  border: none;
  border-radius: 50%;
  width: 16px;
  height: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 0.625rem;
  transition: background var(--animation-duration) ease;
}

.recipient-chip .remove-btn:hover {
  background: rgba(255, 255, 255, 0.5);
}

.recipient-chip--team {
  background: var(--color-accent-secondary, #6366f1);
}

.recipients-input input {
  border: none;
  background: transparent;
  font-size: 0.85rem;
  color: var(--color-text);
  outline: none;
  width: 100%;
  height: 22px;
}

.recipients-suggestions {
  position: absolute;
  bottom: 100%;
  left: 0;
  right: 0;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--border-radius);
  box-shadow: var(--shadow-soft);
  z-index: 1000;
  max-height: 200px;
  overflow-y: auto;
  margin-bottom: 4px;
}

.recipients-suggestions.hidden {
  display: none;
}

.suggestion {
  padding: 10px 12px;
  cursor: pointer;
  font-size: 0.9rem;
  transition: background var(--animation-duration) ease;
}

.suggestion:hover {
  background: var(--color-target);
}

.suggestion.selected {
  background: var(--color-accent-bg);
  color: var(--color-button-text);
}

.suggestion--active {
  background: var(--color-target);
  outline: 2px solid var(--color-accent);
  outline-offset: -2px;
}

.suggestion--team {
  font-weight: 500;
}

.suggestion-divider {
  padding: 6px 12px 4px;
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--color-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  pointer-events: none;
  user-select: none;
}

.mention-suggestions {
  position: absolute;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--border-radius);
  box-shadow: var(--shadow-soft);
  z-index: 1000;
  max-height: 200px;
  overflow-y: auto;
  min-width: 180px;
  max-width: 250px;
}

.mention-suggestions.hidden {
  display: none;
}

.mention-suggestions .suggestion {
  padding: 8px 12px;
  cursor: pointer;
  font-size: 0.9rem;
  transition: background var(--animation-duration) ease;
  border-bottom: 1px solid var(--color-border);
}

.mention-suggestions .suggestion:last-child {
  border-bottom: none;
}

.mention-suggestions .suggestion:hover {
  background: var(--color-target);
}

.mention-suggestions .suggestion.selected {
  background: var(--color-accent-bg);
  color: var(--color-button-text);
}

.theme-toggle {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 0.8rem;
  color: var(--color-muted);
}

.theme-toggle button {
  background: transparent;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  padding: 6px 12px;
  color: var(--color-text);
  cursor: pointer;
  font-size: 0.8rem;
  transition:
    border 0.2s ease,
    background 0.2s ease;
}

.theme-toggle button:hover {
  border-color: var(--color-accent-strong);
  background: rgba(181, 192, 245, 0.14);
}

/* ===== 3エリア構成のスタイル（ChatGPT風） ===== */
.sidebar__content {
  display: flex;
  flex-direction: column;
  height: 100%;
}

/* 上部固定エリア */
.sidebar__section--fixed-top {
  flex-shrink: 0;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--color-border);
  padding-bottom: 16px;
}

.sidebar__actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.sidebar__action-btn {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  border: none;
  border-radius: 8px;
  font-family: inherit;
  font-size: 0.9rem;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  text-align: left;
  width: 100%;
}

.sidebar__action-btn--primary {
  background: var(--color-accent-bg);
  color: var(--color-button-text);
}

.sidebar__action-btn--primary:hover {
  background: var(--color-accent-strong);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.sidebar__action-btn--secondary {
  background: var(--color-surface);
  color: var(--color-text);
  border: 1px solid var(--color-border);
}

.sidebar__action-btn--secondary:hover {
  background: var(--color-surface-alt);
  border-color: var(--color-accent-text);
  color: var(--color-accent-text);
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.sidebar__action-icon {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
}

/* 中央スクロールエリア */
.sidebar__section--scrollable {
  flex: 1;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.sidebar__section--scrollable .sidebar__menu {
  overflow-y: auto;
  flex: 1;
  padding-right: 4px;
  margin-right: -4px;
}

/* カスタムスクロールバー */
.sidebar__section--scrollable .sidebar__menu::-webkit-scrollbar {
  width: 6px;
}

.sidebar__section--scrollable .sidebar__menu::-webkit-scrollbar-track {
  background: transparent;
}

.sidebar__section--scrollable .sidebar__menu::-webkit-scrollbar-thumb {
  background: var(--color-border);
  border-radius: 3px;
}

.sidebar__section--scrollable .sidebar__menu::-webkit-scrollbar-thumb:hover {
  background: var(--color-muted);
}

/* 下部固定エリア */
.sidebar__section--fixed-bottom {
  flex-shrink: 0;
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--color-border);
}

.sidebar__section--fixed-bottom .sidebar__section-title {
  margin-bottom: 8px;
}

/* チャット一覧の改善 */
.chat-item-container {
  position: relative;
  border-radius: 8px;
  transition: all 0.2s ease;
}

@media (hover: hover) and (pointer: fine) {
  .chat-item-container:hover {
    background: var(--color-surface-alt);
  }
}

.chat-item-container .sidebar__menu-link {
  margin-right: 0;
  border-radius: 8px;
  transition: all 0.2s ease;
}

/* より洗練されたホバーエフェクト */
.sidebar__menu-link {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid transparent;
}

@media (hover: hover) and (pointer: fine) {
  .sidebar__menu-link:hover {
    background: var(--color-surface-alt);
    border-color: var(--color-border);
    transform: translateY(-1px);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  }
}

.sidebar__footer {
  padding: 16px;
  border-top: 1px solid var(--color-border);
  margin-top: auto;
}

.sidebar__footer .theme-toggle {
  margin: 0;
  justify-content: center;
}

.admin-panel,
.profile-panel,
.dashboard-panel {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--border-radius);
  padding: 32px 40px 64px;
  box-shadow: var(--shadow-soft);
  margin-bottom: 20px;
}

.admin-users-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.75rem;
}

.admin-users-table th,
.admin-users-table td {
  border: 1px solid var(--color-border);
  padding: 8px 12px;
  text-align: left;
}

.admin-users-table th {
  background: rgba(168, 184, 232, 0.12);
  color: var(--color-muted);
  font-weight: 600;
}

.admin-user-avatar {
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 50%;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-bg-secondary, rgba(255, 255, 255, 0.08));
  font-size: 0.7rem;
  font-weight: 600;
  color: var(--color-muted);
}

.admin-user-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.admin-user-avatar:hover {
  opacity: 0.8;
  box-shadow: 0 0 0 2px var(--color-accent);
}

.admin-users-table td select,
.admin-users-table td input[type='text'] {
  padding: 4px 8px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.75rem;
}

/* 社員番号。桁が揃って見えるように数字の幅を固定する */
.admin-users__employee-number {
  width: 8em;
  font-variant-numeric: tabular-nums;
}

/* 管理画面のボタン (.admin-action-button 系) は 2026-08-11 に削除した。
   共通部品 (window.buttonEl / buttonHtml、 public/css/components/button.css) を使う。

   消したときに分かったこと:
   - --success と --warning は**どこからも使われていなかった**
   - --permanent-delete は 2026-05-16 に完全削除ボタンを撤去した (C-FATAL-2) ときの
     消し残し。 機能が無くなっても見た目の定義だけが 3 か月近く残っていた
   - --active は**そもそも定義が無い**のに JS が付けていた (色覚チェックの選択中表示)。
     押し込み状態は部品側の .chub-btn[aria-pressed='true'] で表す */

/* 無効化済みユーザー行 */
.admin-users-row--deactivated td {
  opacity: 0.5;
}

/*
 * ユーザー一覧テーブルのコンテナ基準レスポンシブ
 * ビューポートではなく「実際の表示幅」を見るため、サイドパネル(FAB)展開で
 * メインが狭まった状態も正しく捉えられる。狭いときは情報を隠さず、各行を
 * カード型に組み替えて全項目を縦に並べる(横スクロールも回避)。
 * カードのラベル(項目名)は各 td の data-label 属性から表示(位置非依存)。
 */
#admin-users-container {
  container-type: inline-size;
}

@container (max-width: 900px) {
  #admin-users-container .admin-users-table thead {
    display: none;
  }

  /* responsive.css の汎用 .admin-panel tbody/tr (display:table; min-width:600px) を打ち消す。
     打ち消さないとカード 1 枚が 600px 幅になり、 右端の操作ボタンが画面外に切れる */
  #admin-users-container .admin-users-table tbody {
    display: block;
    width: 100%;
    min-width: 0;
  }

  #admin-users-container .admin-users-table tr {
    display: block;
    width: auto;
    min-width: 0;
    border: 1px solid var(--color-border);
    border-radius: 8px;
    margin-bottom: 12px;
    padding: 10px 14px;
  }

  #admin-users-container .admin-users-table td {
    display: flex;
    align-items: center;
    gap: 8px;
    border: none;
    border-bottom: 1px solid var(--color-border);
    padding: 6px 0;
  }

  #admin-users-container .admin-users-table td[data-label]::before {
    content: attr(data-label);
    font-weight: 600;
    color: var(--color-muted);
    min-width: 92px;
    flex-shrink: 0;
  }

  /* 先頭=アイコン列、末尾=操作列はラベルなし。位置番号でなく端で指定 */
  #admin-users-container .admin-users-table td:first-child {
    border-bottom: none;
  }
  #admin-users-container .admin-users-table tr td:last-child {
    display: block;
    border-bottom: none;
    padding-top: 10px;
  }

  #admin-users-container .admin-users-table td:last-child .admin-button-container--actions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    justify-content: flex-start;
  }
}

/*
 * バックアップ一覧のカード型 (狭いとき)
 *
 * ユーザー一覧と同じ考え方だが、**別に書いている**。
 * 表のクラス (admin-users-table) は管理画面の 7 箇所で共用されているので、
 * クラスでは対象を選べず、コンテナで選ぶしかない。そしてユーザー一覧側は
 * responsive.css に別の携帯用レイアウト (列を % 指定 + 一部の列を隠す) を
 * 併せ持っていて挙動が絡んでいるため、セレクタを共有すると片方を直すたびに
 * もう片方が動く。**絡まりをほどくのは別の作業**として、ここは分けて持つ。
 *
 * ここに新しい表を足すときは、その td に data-label が付いているかを必ず先に
 * 確かめること (無いまま足すと、カード型にはなるが項目名が出ない =
 * 値だけが縦に並んで何の数字か読めなくなる)。
 */
#admin-backups-container {
  container-type: inline-size;
}

@container (max-width: 900px) {
  #admin-backups-container .admin-users-table thead {
    display: none;
  }

  /* responsive.css の「狭いときは表を横スクロールさせる」汎用ルール
     (.admin-panel tbody / tr に display:table + min-width:600px) を打ち消す。
     カード型は横スクロールをやめるための造りなので、600px の下限が残ると
     カードが画面より広くなり、横スクロールも値の見切れも戻ってしまう */
  #admin-backups-container .admin-users-table tbody {
    display: block;
    min-width: 0;
  }

  #admin-backups-container .admin-users-table tr {
    display: block;
    min-width: 0;
    border: 1px solid var(--color-border);
    border-radius: 8px;
    margin-bottom: 12px;
    padding: 10px 12px;
  }

  #admin-backups-container .admin-users-table td {
    display: flex;
    align-items: center;
    gap: 8px;
    border: none;
    border-bottom: 1px solid var(--color-border);
    padding: 6px 0;
    /* 区切りの無い長いファイル名を折り返す。これが無いと値がセルを押し広げ、
       カード自体が画面より広くなって横スクロールが戻る */
    min-width: 0;
    overflow-wrap: anywhere;
  }

  #admin-backups-container .admin-users-table td[data-label]::before {
    content: attr(data-label);
    font-weight: 600;
    color: var(--color-muted);
    min-width: 92px;
    flex-shrink: 0;
  }

  /* 末尾=操作列だけラベルなし (先頭はファイル名で普通の項目) */
  #admin-backups-container .admin-users-table tr td:last-child {
    display: block;
    border-bottom: none;
    padding-top: 10px;
  }

  /* design-token-exception: 既存クラスの並べ方だけ。 見た目クラスの新設ではない */
  #admin-backups-container .admin-users-table td:last-child .admin-button-container--actions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    justify-content: flex-start;
  }
}

.admin-users-row--deactivated td:last-child {
  opacity: 1;
}

/* 無効化済みバッジ */
.admin-deactivated-badge {
  display: inline-block;
  font-size: 0.65rem;
  color: var(--color-muted);
  background: var(--color-surface-alt);
  padding: 1px 6px;
  border-radius: 4px;
  margin-left: 6px;
  vertical-align: middle;
}

/* 管理画面トグルコンテナ（既存 .toggle-switch コンポーネントを使用） */
.admin-toggle-container {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
}

.admin-toggle-text {
  font-size: 0.8rem;
  color: var(--color-muted);
}

/* モーダル警告テキスト */
.modal-warning {
  background: rgba(220, 53, 69, 0.15);
  color: var(--color-status-error);
  padding: 8px 12px;
  border-radius: 6px;
  font-size: 0.85rem;
  margin-bottom: 8px;
}

/* テーブルセルのスタイル */
.admin-table-cell--monospace {
  font-family: monospace;
  font-size: 0.85rem;
}

.admin-table-cell--monospace-large {
  font-family: monospace;
}

/* テーブルセル内コンテナ */
.admin-table-cell-container {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

/* ID表示（プライマリ） */
.admin-table-text--id-primary {
  font-family: monospace;
  font-size: 0.9rem;
  color: var(--color-text);
  font-weight: 500;
}

/* ID表示（セカンダリ） */
.admin-table-text--id-secondary {
  font-family: monospace;
  font-size: 0.75rem;
  color: var(--color-muted);
}

/* ID表示（通常） */
.admin-table-text--id {
  font-family: monospace;
  font-size: 0.9rem;
  color: var(--color-muted);
}

/* 表示名（プライマリ） */
.admin-table-text--name-primary {
  font-weight: 500;
  color: var(--color-text);
}

/* 表示名（セカンダリ） */
.admin-table-text--name-secondary {
  font-size: 0.75rem;
  color: var(--color-muted);
}

/* 表示名（通常） */
.admin-table-text--name {
  font-weight: 500;
}

/* バッジコンテナ */
.admin-badge-container {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* 詳細テキスト */
.admin-table-text--details {
  font-size: 0.75rem;
  color: var(--color-muted);
  margin-top: 2px;
}

/* 期限切れテキスト */
.admin-table-text--expired {
  color: var(--color-status-error);
}

/* ステータステキスト */
.admin-table-text--status-valid {
  color: var(--color-status-ok);
}

.admin-table-text--status-disabled {
  color: var(--color-muted);
}

.admin-table-text--status-expired {
  color: var(--color-status-error);
}

.admin-table-text--status-used {
  color: var(--color-status-warn);
}

/* ステータスバッジ */
.admin-status-badge {
  padding: 4px 8px;
  border-radius: 4px;
  font-size: 0.8rem;
  font-weight: 500;
  color: white;
}

.admin-status-badge--success {
  background: var(--color-status-ok);
}

.admin-status-badge--failure {
  background: var(--color-status-off);
}

/* ページネーション */
.admin-pagination-button {
  padding: 6px 12px;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  border-radius: 6px;
  font-size: 0.85rem;
  cursor: pointer;
  transition: all var(--animation-duration) ease;
}

.admin-pagination-button:hover {
  background: var(--color-surface-alt);
}

.admin-pagination-info {
  padding: 6px 12px;
  color: var(--color-text);
  font-size: 0.85rem;
}

/* ボタンコンテナ */
.admin-button-container {
  display: flex;
  justify-content: space-between;
  gap: 8px;
}

/* ボタンコンテナ（操作列用） */
.admin-button-container--actions {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  width: 100%;
}

/* 空メッセージ */
.admin-empty-message {
  color: var(--color-muted);
  font-size: 0.9rem;
  margin: 0;
}

/* モーダル共通スタイル */
.modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10000;
}

.modal-container {
  background: var(--color-surface);
  border-radius: 12px;
  padding: 24px;
  max-width: 400px;
  width: 90%;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
}

.modal-container--wide {
  max-width: 500px;
}

.modal-title {
  margin: 0 0 12px 0;
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--color-text);
}

.modal-title--spaced {
  margin-bottom: 16px;
}

.modal-message {
  margin: 0 0 20px 0;
  font-size: 0.9rem;
  color: var(--color-muted);
  line-height: 1.5;
}

.modal-message--compact {
  margin-bottom: 16px;
}

.modal-input {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  font-size: 0.95rem;
  background: var(--color-bg);
  color: var(--color-text);
  margin-bottom: 20px;
  box-sizing: border-box;
}

/* 「任せる人」ダイアログ (プラグイン別アクセス権の範囲つき付与)。1 行 = 名前 / 段階 / 外す */
.plugin-access-scope-list {
  margin-bottom: 16px;
}

.plugin-access-scope-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}

.plugin-access-scope-row > :first-child {
  flex: 1;
  min-width: 0;
}

.plugin-access-scope-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.plugin-access-scope-level.modal-input {
  width: auto;
  margin-bottom: 0;
}

.plugin-access-scope-fixed {
  color: var(--color-text-secondary);
  white-space: nowrap;
}

.plugin-access-scope-add {
  padding-top: 12px;
  border-top: 1px solid var(--color-border);
  margin-bottom: 16px;
}

.modal-button-container {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
}

/* .modal-button--primary / --secondary / --danger は 2026-08-11 に削除した。
   モーダルの「取消と確定」 は共通部品を使う (emphasis: 'outline' / 'fill'、 危険なら tone: 'danger')。
   並べ方の .modal-button-container は上に残してある -- 見た目は部品、 並べ方は親の持ち物。

   meeting-room の 4 つのモーダルも同じ部品に移した。 プラグインからは窓口 (window.buttonHtml) 経由。 */

.modal-warning-box {
  padding: 12px;
  background: rgba(220, 38, 38, 0.1);
  border: 1px solid rgba(220, 38, 38, 0.3);
  border-radius: 6px;
  margin-bottom: 16px;
}

.modal-warning-title {
  font-size: 0.95rem;
  font-weight: 600;
  color: rgb(220, 38, 38);
  margin-bottom: 8px;
}

.modal-warning-text {
  font-size: 0.85rem;
  color: var(--color-text);
  line-height: 1.4;
}

.modal-info-container {
  margin-bottom: 12px;
}

.modal-info-container--spaced {
  margin-bottom: 20px;
}

.modal-info-label {
  font-size: 0.8rem;
  color: var(--color-muted);
  margin-bottom: 4px;
}

.modal-info-box {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 6px;
}

.modal-info-text {
  flex: 1;
  font-family: monospace;
  font-size: 0.95rem;
  color: var(--color-text);
}

.modal-info-text--bold {
  font-weight: 600;
}

.modal-copy-button {
  padding: 6px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-surface);
  color: var(--color-text);
  cursor: pointer;
  display: flex;
  align-items: center;
  transition: background var(--animation-duration) ease;
}

.modal-copy-button:hover {
  background: var(--color-surface-alt);
}

/* Backup info text */
.modal-backup-info {
  margin: 0 0 20px 0;
  font-size: 0.85rem;
  color: var(--color-muted);
  font-family: monospace;
}

/* Server restart message screen */
.restart-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: var(--color-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10000;
}

.restart-container {
  max-width: 600px;
  padding: 40px;
  text-align: center;
}

.restart-icon {
  margin-bottom: 24px;
}

.restart-title {
  font-size: 2rem;
  font-weight: 700;
  color: var(--color-text);
  margin: 0 0 16px 0;
}

.restart-message {
  font-size: 1.1rem;
  color: var(--color-muted);
  line-height: 1.6;
  margin: 0 0 24px 0;
}

.restart-instructions {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 20px;
  text-align: left;
  margin-bottom: 24px;
}

.restart-instructions-label {
  font-size: 0.9rem;
  color: var(--color-muted);
  margin-bottom: 12px;
}

.restart-instructions-code {
  background: var(--color-bg);
  padding: 12px;
  border-radius: 4px;
  font-family: monospace;
  font-size: 0.95rem;
  color: var(--color-text);
}

.restart-note {
  font-size: 0.9rem;
  color: var(--color-muted);
}

.admin-upgrade-badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(248, 113, 113, 0.16);
  color: var(--color-status-error);
  font-size: 0.75rem;
  font-weight: 600;
  gap: 4px;
}

#new-user-password {
  width: 100%;
}

/* 管理画面共通スタイル */
.admin-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
}

.admin-title {
  margin: 0;
  font-size: 1.1rem;
  color: var(--color-text);
}

.admin-subtitle {
  margin: 0 0 16px 0;
  font-size: 1rem;
  color: var(--color-text);
}

/* .admin-btn-primary / .admin-btn-secondary は 2026-08-11 に削除した。
   共通部品を使う (buttonHtml の emphasis: 'fill' / 'outline' が対応する)。
   この 2 つは画面の上部に**並んで**置かれることが多いので、 片方だけ移すと
   高さが揃わなくなる。 移行するときは対で動かすこと */

.admin-btn-group {
  display: flex;
  gap: 8px;
}

.admin-pagination {
  display: flex;
  justify-content: center;
  margin-top: 16px;
  gap: 8px;
}

/* アクティビティアイテムのホバー効果 */
.activity-item-clickable:hover {
  background: var(--color-target);
  border-radius: 8px;
}

.activity-item {
  padding: 8px;
  margin: -8px;
  border-radius: 8px;
  transition: background 0.15s ease;
}

/* ===== ナレッジベース ===== */
#knowledge-view {
  display: none;
}

.knowledge-panel {
  padding: 24px;
}

.knowledge-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 24px;
}

.knowledge-header > div {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.knowledge-title {
  font-size: 1.125rem;
  font-weight: 600;
  margin: 0;
  color: var(--color-text);
}

.knowledge-subtitle {
  font-size: 0.8125rem;
  margin: 0;
  color: var(--color-muted);
}

.knowledge-search-bar {
  margin-bottom: 16px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

input[type='text'].knowledge-search-input {
  flex: 1;
  padding: 8.5px 16px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  color: var(--color-text);
  font-size: 0.875rem;
  box-sizing: border-box;
  transition: border-color 0.15s ease;
}

input[type='text'].knowledge-search-input:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

.knowledge-type-select {
  padding: 12px 16px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  color: var(--color-text);
  font-size: 0.75rem;
  cursor: pointer;
  transition: border-color 0.15s ease;
}

.knowledge-type-select:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

/* 並び順の向きは矢印の向きで伝える。 ボタンの見た目は共通部品 (chub-btn) が持ち、
   **部品が持てない「今どちらの並びか」 だけ**をここに残す (2026-08-13 に部品へ移行) */
#knowledge-sort-order svg {
  transition: transform 0.2s ease;
}

#knowledge-sort-order[data-order='asc'] svg {
  transform: rotate(180deg);
}

/* プラグイン用の汎用クラス - プラグインがカスタムスタイルを追加できる */

/* 検索バー内のタグ絞り込み箱 (select-search) を検索欄・種類セレクトと揃える */
.knowledge-tag-filter {
  flex-shrink: 0;
}

.knowledge-tag-filter .select-search__trigger {
  padding: 10px 12px;
  border-radius: 8px;
  font-size: 0.75rem;
}

/* 絞り込み中チップの行（検索バーとリストの間、空なら共通CSSで非表示） */
.knowledge-active-filters {
  margin: -8px 0 16px;
}

/* メディアライブラリのソートボタン */
/* 並び順の向きは矢印の向きで伝える。 ボタンの見た目は共通部品 (chub-btn) が持ち、
   **部品が持てない「今どちらの並びか」 だけ**をここに残す (2026-08-13 に部品へ移行)。
   メディア / ノートの選択モーダルと、 メディア一覧の 3 か所で同じ形 */
#media-sort-toggle svg,
#media-picker-sort-toggle svg,
#note-picker-sort-toggle svg {
  transition: transform 0.2s ease;
}

#media-sort-toggle[data-order='asc'] svg,
#media-picker-sort-toggle[data-order='asc'] svg,
#note-picker-sort-toggle[data-order='asc'] svg {
  transform: rotate(180deg);
}

.knowledge-tag-small {
  padding: 2px 8px;
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  font-size: 0.6875rem;
  color: var(--color-text-secondary);
}

.knowledge-tag-more {
  background: var(--color-surface);
  color: var(--color-accent-text);
  font-weight: 600;
}

.knowledge-list,
#knowledge-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
}

.knowledge-list-empty {
  grid-column: 1 / -1;
  padding: 40px 20px;
  text-align: center;
  color: var(--color-muted);
  font-size: 0.875rem;
}

.knowledge-item {
  padding: 20px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.15s ease;
  box-shadow: var(--shadow-soft);
}

.knowledge-item:hover {
  border-color: var(--color-accent-text);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.knowledge-item-header {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-bottom: 8px;
}

/* 文字サイズに追従させる。 px 固定だと行の高さとの比率が崩れてアイコンだけ枠から出る */
.knowledge-item-icon {
  flex-shrink: 0;
  width: 1rem;
  height: 1rem;
  margin-top: 2px;
  color: var(--color-accent-text);
  opacity: 0.7;
}

/* svg は既定で inline 扱いのため、 ベースライン下の余白ぶんだけ枠から下にずれる。
   文字が大きいほどずれ幅も広がるので block にして基準を揃える */
.knowledge-item-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

.knowledge-item-title {
  flex: 1;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--color-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: flex;
  align-items: center;
  gap: 8px;
}

.knowledge-draft-badge {
  display: inline-block;
  vertical-align: middle;
  padding: 2px 8px;
  margin-left: 8px;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-muted);
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  border-radius: 4px;
  flex-shrink: 0;
}

.knowledge-private-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  vertical-align: middle;
  padding: 3px;
  margin-left: 6px;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-accent);
  background: var(--color-surface-alt);
  border: 1px solid var(--color-accent-muted, var(--color-border));
  border-radius: 4px;
  flex-shrink: 0;
}

.knowledge-private-badge svg {
  flex-shrink: 0;
}

.knowledge-team-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  vertical-align: middle;
  padding: 3px;
  margin-left: 6px;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-accent);
  background: var(--color-surface-alt);
  border: 1px solid var(--color-accent-muted, var(--color-border));
  border-radius: 4px;
  flex-shrink: 0;
}

.knowledge-team-badge svg {
  flex-shrink: 0;
  margin-right: 3px;
}

.knowledge-shared-teams-group {
  align-items: flex-start;
  flex-wrap: wrap;
}

.knowledge-shared-teams-list {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
  flex: 1 1 100%;
  margin-top: 2px;
}

.knowledge-shared-team-item {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  gap: 6px;
  font-size: 0.8rem;
  color: var(--color-text);
  cursor: pointer;
  padding: 2px 4px;
  border-radius: 3px;
  white-space: nowrap;
  line-height: 1.4;
}

.knowledge-shared-team-item:hover {
  background: var(--color-surface-alt);
}

.knowledge-shared-team-item input[type='checkbox'] {
  margin: 0;
  flex-shrink: 0;
}

.knowledge-shared-teams-hint {
  font-size: 0.8rem;
  color: var(--color-muted);
}

.knowledge-item-preview {
  font-size: 0.85rem;
  /* 本文は文字サイズ設定に連動させる (標準 = 1.5 で従来どおり) */
  line-height: var(--line-height-normal, 1.5);
  color: var(--color-muted);
  margin-bottom: 8px;
  display: -webkit-box;
  line-clamp: 2;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.knowledge-item-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-bottom: 8px;
}

.knowledge-item-meta {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 0.75rem;
  color: var(--color-muted);
}

.knowledge-meta-icon {
  display: inline-flex;
  align-items: center;
  width: 12px;
  height: 12px;
  margin-right: 4px;
}

.knowledge-meta-icon svg {
  width: 100%;
  height: 100%;
}

/* ナレッジ詳細ビュー */
.knowledge-detail-view {
  position: fixed;
  top: 0;
  left: 300px;
  right: 0;
  bottom: 0;
  background: var(--color-bg);
  z-index: 100;
  overflow: hidden;
}

.knowledge-detail-container {
  display: flex;
  flex-direction: column;
  height: 100%;
}

.knowledge-detail-header {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 16px 32px;
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
  box-shadow: var(--shadow-soft);
}

.knowledge-detail-back-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 10px 16px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: transparent;
  color: var(--color-text);
  font-size: 0.95rem;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
}

.knowledge-detail-back-btn svg {
  width: 18px;
  height: 18px;
}

.knowledge-detail-back-btn:hover {
  background: var(--color-surface);
  border-color: var(--color-accent-text);
}

.knowledge-detail-title {
  flex: 1;
  font-size: 1.3rem;
  font-weight: 600;
  margin: 0;
  color: var(--color-text);
}

.knowledge-detail-actions {
  display: flex;
  gap: 8px;
  /* 既定 (stretch) だと文字ボタンが列の高さまで引き伸ばされ、
     アイコンボタン (30px) と高さがバラつく。各自の高さを保って中央に揃える */
  align-items: center;
}

/* ノート詳細ヘッダーの文字ボタン (編集モード / 閲覧モード / 削除) の見た目は
   共通部品 (chub-btn) へ移行済み (2026-08-19)。knowledge-detail-*-btn は
   responsive.css の「携帯でアイコンだけにする」動きのフックとしてだけ残っている */

.knowledge-detail-body {
  flex: 1;
  display: flex;
  justify-content: center;
  overflow-y: auto;
  background: var(--color-bg);
  padding: 48px 24px 80px;
}

.knowledge-detail-main {
  width: 100%;
  max-width: 780px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.knowledge-detail-meta {
  font-size: 0.85rem;
  color: var(--color-muted);
  margin-bottom: 16px;
}

.knowledge-detail-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* 詳細ページ内のMarkdownコンテンツスタイル */
/* ナレッジ編集ビュー */
.knowledge-editor-view {
  padding: 20px;
}

.knowledge-editor {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 24px;
  box-shadow: var(--shadow-soft);
}

.knowledge-editor-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 20px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--color-border);
}

.knowledge-editor-header h3 {
  margin: 0;
  font-size: 1.125rem;
  font-weight: 600;
}

.knowledge-btn-danger {
  color: var(--color-status-error);
}

.knowledge-btn-danger:hover {
  background: #fee2e2;
  border-color: var(--color-status-error);
}

.knowledge-detail-title {
  flex: 1;
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--color-text);
  margin: 0;
}

.knowledge-detail-meta {
  font-size: 0.75rem;
  color: var(--color-text-secondary);
  margin-bottom: 10px;
}

.knowledge-detail-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

/* 編集 / 削除ボタンの id 指定の見た目は v2 移行で削除 (2026-08-19)。
   部品 (chub-btn) より強く効いて、同じ列の他ボタンと大きさが揃わなかった */

.knowledge-editor-body {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.knowledge-form-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.knowledge-form-field label {
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--color-text);
}

.knowledge-input,
.knowledge-textarea {
  padding: 10px 14px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  color: var(--color-text);
  font-size: 0.875rem;
  transition: border-color 0.15s ease;
}

.knowledge-input:focus,
.knowledge-textarea:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

.knowledge-textarea {
  font-family: 'Monaco', 'Courier New', monospace;
  line-height: 1.6;
  resize: vertical;
  min-height: 400px;
}

#knowledge-title-input,
#knowledge-tags-input {
  padding: 10px 12px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  color: var(--color-text);
  font-size: 0.875rem;
}

#knowledge-content-input {
  padding: 12px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  color: var(--color-text);
  font-size: 0.875rem;
  font-family: 'Monaco', 'Courier New', monospace;
  line-height: 1.6;
  resize: vertical;
  min-height: 300px;
}

#knowledge-title-input:focus,
#knowledge-tags-input:focus,
#knowledge-content-input:focus {
  outline: none;
  border-color: var(--color-target);
}

.knowledge-editor-actions {
  display: flex;
  gap: 8px;
  padding-top: 16px;
  border-top: 1px solid var(--color-border);
}

#knowledge-save-button,
#knowledge-cancel-button {
  padding: 10px 20px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  font-size: 0.875rem;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.15s ease;
}

#knowledge-save-button {
  background: var(--color-target);
  color: var(--color-text);
}

#knowledge-save-button:hover {
  background: var(--color-surface-alt);
}

#knowledge-cancel-button {
  background: transparent;
  color: var(--color-text-secondary);
}

#knowledge-cancel-button:hover {
  background: var(--color-surface-alt);
}

/* ===== 通知ポップアップ ===== */
.notification-popup {
  position: fixed;
  top: calc(90px + var(--app-update-bar-height));
  right: 20px;
  z-index: 10300;
  pointer-events: none;
  opacity: 0;
  transform: translateX(400px);
  transition: all 0.3s ease;
}

.notification-popup.show {
  opacity: 1;
  transform: translateX(0);
  pointer-events: all;
}

.notification-content {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 20px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  min-width: 300px;
  max-width: 500px;
}

.notification-icon {
  flex-shrink: 0;
  width: 1.5rem;
  height: 1.5rem;
  color: var(--color-target);
}

.notification-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

.notification-message {
  flex: 1;
  color: var(--color-text);
  font-size: 0.875rem;
  line-height: 1.5;
}

.notification-close {
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  border: none;
  background: transparent;
  color: var(--color-text-secondary);
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  transition: background 0.15s ease;
}

.notification-close:hover {
  background: var(--color-surface-alt);
}

/* Notification Variants */
.notification-popup.variant-success .notification-icon {
  color: #22c55e;
}

.notification-popup.variant-error .notification-icon {
  color: var(--color-status-error);
}

.notification-popup.variant-warning .notification-icon {
  color: #f59e0b;
}

.notification-popup.variant-info .notification-icon {
  color: #818cf8;
}

/* リマインダー variant: 穏やかな紫系で「エラー感」 を出さない (識別はアイコン色のみ、 装飾ライン禁止) */
.notification-popup.variant-reminder .notification-icon {
  color: #8b5cf6;
}

/* ===== 確認ダイアログ ===== */
.confirm-dialog {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 10200;
  align-items: center;
  justify-content: center;
  padding: 20px;
  /* 他のモーダルのbackdrop-filter blurの影響を受けないようにする */
  isolation: isolate;
  backdrop-filter: none;
}

.confirm-dialog.show {
  display: flex;
}

/* AI生成ローディングダイアログはメディア編集モーダルより前面に表示 */
.confirm-dialog.ai-loading-dialog {
  z-index: 10200 !important;
  backdrop-filter: blur(4px) !important;
}

.confirm-dialog-content {
  background: var(--color-surface);
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
  max-width: 480px;
  width: 100%;
  overflow: hidden;
}

.confirm-dialog-header {
  padding: 20px 24px;
  border-bottom: 1px solid var(--color-border);
}

.confirm-dialog-title {
  margin: 0;
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--color-text);
}

.confirm-dialog-body {
  padding: 24px;
  max-height: 60vh;
  overflow-y: auto;
  position: relative;
}

/* スクロールバーを常に表示 */
.confirm-dialog-body::-webkit-scrollbar {
  width: 8px;
}

.confirm-dialog-body::-webkit-scrollbar-track {
  background: var(--color-border);
  border-radius: 4px;
}

.confirm-dialog-body::-webkit-scrollbar-thumb {
  background: var(--color-text-tertiary);
  border-radius: 4px;
}

.confirm-dialog-body::-webkit-scrollbar-thumb:hover {
  background: var(--color-text-secondary);
}

/* スクロール位置が最下部の時はフェードを非表示 */
.confirm-dialog-body.scroll-at-bottom::after {
  display: none;
}

.confirm-dialog-body .form-group {
  margin-bottom: 16px;
}

.confirm-dialog-body .form-group:last-child {
  margin-bottom: 0;
}

.confirm-dialog-message {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.6;
  color: var(--color-text);
  white-space: pre-wrap;
}

.prompt-dialog-input {
  width: 100%;
  padding: 10px 12px;
  margin-top: 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.875rem;
  font-family: inherit;
  transition: border-color 0.15s ease;
}

.prompt-dialog-input:focus {
  outline: none;
  border-color: var(--color-primary);
}

.confirm-dialog-footer {
  display: flex;
  gap: 12px;
  padding: 16px 24px;
  border-top: 1px solid var(--color-border);
  justify-content: flex-end;
}

.confirm-dialog-cancel,
.confirm-dialog-ok {
  padding: 10px 20px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  font-size: 0.875rem;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.15s ease;
}

.confirm-dialog-cancel {
  background: transparent;
  color: var(--color-text-secondary);
}

.confirm-dialog-cancel:hover {
  background: var(--color-surface-alt);
}

.confirm-dialog-ok {
  background: var(--color-target);
  color: var(--color-text);
}

.confirm-dialog-ok:hover {
  opacity: 0.9;
}

/* ===== ダイアログ内タブUI ===== */
.dialog-tabs-container {
  display: flex;
  gap: 8px;
  padding: 0 24px;
  border-bottom: 1px solid var(--color-border);
  margin-top: -1px;
}

.dialog-tab {
  padding: 12px 20px;
  border: none;
  background: transparent;
  color: var(--color-text-secondary);
  font-size: 0.875rem;
  font-weight: 500;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all 0.2s ease;
  position: relative;
  top: 1px;
}

.dialog-tab:hover {
  color: var(--color-text);
  background: var(--color-surface-alt);
}

.dialog-tab.active {
  color: var(--color-accent-text);
  border-bottom-color: var(--color-accent-text);
}

.dialog-tab-content {
  display: none;
}

.dialog-tab-content.active {
  display: block;
}

/* ===== ChatGPT風レスポンシブデザイン ===== */

/* モバイルヘッダー（デフォルトは非表示） */
.mobile-header {
  display: none;
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
  position: sticky;
  top: var(--app-update-bar-height);
  z-index: 1002;
  height: 60px;
}

.mobile-header__content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 100%;
  padding: 0 12px;
  gap: 6px;
}

.mobile-header__menu-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border: none;
  background: none;
  border-radius: 8px;
  cursor: pointer;
  transition: background-color 0.2s ease;
}

.mobile-header__menu-btn:hover {
  background: var(--color-surface-alt);
}

.mobile-header__title {
  flex: 0 0 auto;
  font-size: 1.1rem;
  font-weight: 600;
  margin: 0;
  color: var(--color-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.mobile-header__chat-icon {
  display: none;
  height: 22px;
  width: 22px;
  object-fit: contain;
  border-radius: 4px;
  vertical-align: middle;
}

/* チャット表示中: ロゴをアイコンに切り替え */
body.chat-active .mobile-header__title {
  display: none;
}

body.chat-active .mobile-header__chat-icon {
  display: inline-block;
}

.mobile-header__context {
  flex: 1;
  min-width: 0;
  margin-left: 8px;
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--color-text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  letter-spacing: 0.01em;
}

.mobile-header__actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.mobile-status-indicator {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--color-border);
  transition: background-color 0.3s ease;
}

.mobile-status-indicator.status-connecting {
  background: #f59e0b;
  animation: pulse 2s infinite;
}

.mobile-status-indicator.status-connected {
  background: #10b981;
}

.mobile-status-indicator.status-error {
  background: var(--color-status-error);
}

/* 携帯のヘッダーのユーザーメニュー。 見た目は共通部品 (chub-btn--icon--touch) が持つ。
   **文字色だけ**ここで指定する -- 部品の既定は控えめな色だが、
   ヘッダーの他のアイコンと濃さを揃えたいため (2026-08-13 に部品へ移行) */
#mobile-user-menu {
  color: var(--color-text);
}

.mobile-header-avatar {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid var(--color-border);
}

/* モバイル用ユーザーメニュー */
.mobile-user-menu {
  position: fixed;
  top: 60px;
  right: 16px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 12px;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
  z-index: 1002;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-10px) scale(0.95);
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  min-width: 250px;
}

.mobile-user-menu.active {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
}

.mobile-user-menu__content {
  padding: 16px;
}

.mobile-user-menu__header {
  margin-bottom: 16px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--color-border);
  display: flex;
  align-items: center;
  gap: 8px;
}

.mobile-user-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  object-fit: cover;
  border: 1px solid var(--color-border);
  flex-shrink: 0;
}

.mobile-user-menu__user-info {
  display: flex;
  gap: 10px;
  align-items: center;
}

.mobile-user-menu__username {
  display: block;
  font-weight: 600;
  color: var(--color-text);
  margin-bottom: 4px;
}

.mobile-user-menu__role {
  display: block;
  font-size: 0.85rem;
  color: var(--color-muted);
}

.mobile-user-menu__level {
  display: none;
  font-size: 0.8rem;
  color: var(--color-text);
  margin-top: 2px;
}

.mobile-user-menu__actions {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.mobile-user-menu__action {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  border: none;
  background: none;
  border-radius: 8px;
  cursor: pointer;
  transition: background-color 0.2s ease;
  font-size: 0.9rem;
  color: var(--color-text);
  width: 100%;
  text-align: left;
}

.mobile-user-menu__action:hover {
  background: var(--color-surface-alt);
}

.mobile-user-menu__action--danger {
  color: var(--color-status-error);
}

.mobile-user-menu__action--danger:hover {
  background: rgba(239, 68, 68, 0.1);
}

.mobile-user-menu__action svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

/* レスポンシブ切り替えポイント */

/* タブレット対応 (768px - 1024px) */
/* デスクトップ用 (769px以上) */

/* モバイル対応 (768px以下) */

/* 小型モバイル対応 (480px以下) */

/* ボタンloading状態 */
button[disabled],
button.loading {
  opacity: 0.6;
  cursor: not-allowed;
  pointer-events: none;
}

button.loading {
  position: relative;
}

button.loading::after {
  content: '';
  position: absolute;
  width: 16px;
  height: 16px;
  top: 50%;
  left: 50%;
  margin-left: -8px;
  margin-top: -8px;
  border: 2px solid transparent;
  border-top-color: currentColor;
  border-radius: 50%;
  animation: button-loading-spinner 0.6s linear infinite;
}

@keyframes button-loading-spinner {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

/* チャットオプションメニュー */
.chat-options-btn {
  width: 20px;
  height: 20px;
  min-width: 20px;
  border: none;
  background: transparent;
  color: var(--color-muted);
  font-size: 1rem;
  font-weight: bold;
  border-radius: 4px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: all var(--animation-duration) ease;
  flex-shrink: 0;
  margin-left: auto;
  padding: 0;
}

@media (hover: hover) and (pointer: fine) {
  .sidebar__menu-item:hover .chat-options-btn {
    opacity: 1;
  }

  .chat-options-btn:hover {
    background: var(--color-target);
    color: var(--color-accent-strong);
  }
}

.chat-options-menu {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  box-shadow: var(--shadow-hover);
  padding: 4px 0;
  z-index: 1000;
  min-width: 140px;
  position: absolute;
  backdrop-filter: blur(8px);
}

.chat-options-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.chat-options-list li {
  margin: 0;
}

.chat-options-list button {
  width: 100%;
  border: none;
  background: transparent;
  padding: 6px 12px;
  text-align: left;
  color: var(--color-text);
  font-size: 0.8rem;
  cursor: pointer;
  transition: all var(--animation-duration) ease;
}

.chat-options-list button:hover {
  background: var(--color-target);
  transform: translateX(2px);
}

.chat-options-list button.delete-option {
  color: var(--color-status-off);
}

.chat-options-list button.delete-option:hover {
  background: var(--color-status-off);
  color: var(--color-button-text);
  transform: translateX(2px);
}

.theme-dark .chat-options-menu {
  background: var(--color-surface);
  box-shadow:
    0 8px 24px rgba(0, 0, 0, 0.4),
    0 2px 8px rgba(0, 0, 0, 0.2);
}

/* 編集モーダルフッター（強制適用） */
.popup-footer {
  display: flex !important;
  justify-content: flex-end !important;
  align-items: center !important;
  padding: 16px 24px 20px 24px !important;
  border-top: 1px solid var(--color-border) !important;
  margin-top: auto !important;
  width: 100% !important;
  box-sizing: border-box !important;
  background-color: var(--color-surface) !important;
}

/* ========================================
   アバタークロッパー
   ======================================== */

.avatar-cropper-canvas {
  display: block;
  margin: 0 auto;
  cursor: grab;
  touch-action: none;
  border-radius: 8px;
}

.avatar-cropper-canvas:active {
  cursor: grabbing;
}

.avatar-cropper-zoom {
  display: block;
  width: 80%;
  max-width: 380px;
  margin: 12px auto 0;
  accent-color: #9aa6e4;
}

.avatar-cropper-hint {
  text-align: center;
  font-size: 0.8rem;
  color: var(--color-muted);
  margin-top: 8px;
}

/* ===== 再認証モーダル ===== */
.reauth-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 10500;
  align-items: center;
  justify-content: center;
  padding: 20px;
  isolation: isolate;
}

.reauth-modal.show {
  display: flex;
}

.reauth-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(3px);
}

.reauth-modal__dialog {
  position: relative;
  background: var(--color-surface);
  border-radius: 12px;
  box-shadow: 0 12px 36px rgba(0, 0, 0, 0.28);
  max-width: 440px;
  width: 100%;
  padding: 28px;
}

.reauth-modal__title {
  margin: 0 0 12px;
  font-size: 1.15rem;
  color: var(--color-text);
}

.reauth-modal__desc {
  margin: 0 0 18px;
  font-size: 0.9rem;
  color: var(--color-text-secondary);
  line-height: 1.55;
}

.reauth-modal__user {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  background: var(--color-surface-alt);
  border-radius: 6px;
  margin-bottom: 16px;
  font-size: 0.9rem;
}

.reauth-modal__user-label {
  color: var(--color-text-secondary);
}

.reauth-modal__user-name {
  color: var(--color-text);
  font-weight: 600;
}

.reauth-modal__form,
.reauth-modal__guest {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.reauth-modal__form[hidden],
.reauth-modal__guest[hidden] {
  display: none;
}

.reauth-modal__label {
  font-size: 0.85rem;
  color: var(--color-text-secondary);
}

.reauth-modal__input {
  padding: 10px 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  font-size: 0.95rem;
  background: var(--color-surface);
  color: var(--color-text);
}

.reauth-modal__input:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.18);
}

.reauth-modal__error {
  margin: 0;
  min-height: 1.2em;
  font-size: 0.85rem;
  color: var(--color-danger);
}

.reauth-modal__submit {
  margin-top: 6px;
  padding: 10px 16px;
  background: var(--color-primary);
  color: var(--color-button-text);
  border: none;
  border-radius: 6px;
  font-size: 0.95rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s ease;
}

.reauth-modal__submit:hover:not(:disabled) {
  background: var(--color-primary-hover, var(--color-primary));
}

.reauth-modal__submit:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.reauth-modal__guest p {
  margin: 0;
  font-size: 0.9rem;
  color: var(--color-text-secondary);
}

.reauth-modal__footer {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid var(--color-border);
  text-align: center;
}

.reauth-modal__logout-link {
  background: none;
  border: none;
  color: var(--color-text-secondary);
  font-size: 0.82rem;
  cursor: pointer;
  text-decoration: underline;
  padding: 4px 8px;
}

.reauth-modal__logout-link:hover {
  color: var(--color-text);
}

/* ===== ログイン画面フッター（AGPL-3.0 コンプライアンス） ===== */
.login-footer {
  margin-top: 24px;
  padding-top: 16px;
  border-top: 1px solid var(--color-border);
  text-align: center;
}

.login-footer__text {
  margin: 0;
  font-size: 0.75rem;
  color: var(--color-text-secondary);
  line-height: 1.6;
}

.login-footer__text a {
  color: var(--color-text-secondary);
  text-decoration: underline;
}

.login-footer__text a:hover {
  color: var(--color-text);
}

/* タグ管理 (admin) */
.admin-tags-toolbar {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  margin-bottom: 12px;
  font-size: 0.875rem;
  color: var(--color-text-secondary);
}

.admin-tags-toolbar-item {
  display: flex;
  align-items: center;
  gap: 6px;
}

.admin-tags-sort-select {
  padding: 4px 8px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.8125rem;
}

.admin-tags-count {
  margin-left: auto;
  color: var(--color-text-tertiary, #8a94a6);
  font-size: 0.8125rem;
}

.admin-tag-chip {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--color-border);
  vertical-align: middle;
}

.admin-tag-unused {
  color: var(--color-text-tertiary, #8a94a6);
}

/* タグマージモーダル */
.admin-tags-select-col {
  width: 32px;
  text-align: center;
}

.admin-tags-merge-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
}

.admin-tags-merge-modal {
  background: var(--color-surface);
  color: var(--color-text);
  border-radius: 10px;
  padding: 20px;
  width: min(440px, calc(100vw - 32px));
  max-height: 80vh;
  overflow-y: auto;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.25);
}

.admin-tags-merge-title {
  margin: 0 0 8px;
  font-size: 1rem;
}

.admin-tags-merge-desc {
  font-size: 0.8125rem;
  color: var(--color-text-secondary);
  margin: 0 0 12px;
}

.admin-tags-merge-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 12px;
}

.admin-tags-merge-option {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  cursor: pointer;
  font-size: 0.875rem;
}

.admin-tags-merge-option:has(input:checked) {
  border-color: var(--color-accent, #a4b2dd);
  background: color-mix(in srgb, var(--color-accent, #a4b2dd) 8%, transparent);
}

.admin-tags-merge-impact {
  font-size: 0.75rem;
  color: var(--color-text-tertiary, #8a94a6);
  margin: 0 0 14px;
}

.admin-tags-merge-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

/* AIタグ提案プレビュー */
.media-ai-suggest-note {
  font-size: 0.8125rem;
  color: var(--color-text-secondary);
  margin: 0 0 12px;
}

.media-ai-suggest-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
  max-height: 50vh;
  overflow-y: auto;
}

.media-ai-suggest-row {
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 10px 12px;
}

.media-ai-suggest-file {
  font-size: 0.8125rem;
  font-weight: 600;
  margin-bottom: 8px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.media-ai-suggest-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.media-ai-tag-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px;
  border: 1px solid var(--color-border);
  border-radius: 999px;
  font-size: 0.8125rem;
  cursor: pointer;
}

.media-ai-tag-chip:has(input:checked) {
  border-color: var(--color-accent, #a4b2dd);
  background: color-mix(in srgb, var(--color-accent, #a4b2dd) 10%, transparent);
}

/* 2026-08-12: 下記を v2 の部品へ移行したので定義を削除。
   ゲストログイン / ノートの下書き保存・更新・公開・新規作成 / ログの前へ次へ /
   昇格依頼・アップグレード / 予約送信。

   **意図して残しているもの**は roadmap の「意図して残しているボタン」 を参照
   (.login-button は e2e が依存 / .confirm-button は押した状態が残る 等)。 */


/* ==== css/components/button.css ==== */
/* ==============================================
   ボタンの共通部品 (chub-btn)
   ==============================================

   window.buttonHtml() / buttonEl() 専用の内部クラス。
   **手書き禁止** (check-design-tokens.mjs が止める)。
   設計: docs/design/2026-08-08_button_component_design.md
   値はデザイン設計図 (docs/DESIGN_TOKENS.md) の段階から選ぶ。

   軸は 2 つ:
   - 強さ  --fill (塗り) / --outline (枠) / --quiet (控えめ)
   - 意味  --danger (危ない) / --positive (承認などの肯定)。 無指定 = 普通
   組み合わせ自由 (例: quiet + danger = 控えめな削除)。

   処理中 (loading) と押せない (disabled) は ui.css の
   button.loading / button[disabled] が要素単位で面倒を見る。 */

.chub-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px 16px;
  /* 枠のある / 無いで大きさがガタつかないよう、 枠は常に 1px 確保して色だけ変える */
  border: 1px solid transparent;
  border-radius: 6px;
  background: transparent;
  color: var(--color-text);
  font-family: inherit;
  /* base (設計図 3.2)。 rem なので文字サイズ設定に追従する */
  font-size: 0.8125rem;
  font-weight: 500;
  cursor: pointer;
  text-decoration: none; /* a をボタンの見た目にしたとき用 */
  transition:
    background var(--animation-duration, 0.2s) ease,
    border-color var(--animation-duration, 0.2s) ease,
    color var(--animation-duration, 0.2s) ease;
}

/* 中のアイコンの大きさ。 **部品が自分で面倒を見る**。
   getIcon 経由なら svg に width/height が付くが、 HTML に直書きされた svg には
   寸法が無く、 **親いっぱいに広がって崩れる** (2026-08-12 の実験台で実際に踏んだ:
   アイコンが 122px になりボタンの高さが 132px になった)。
   旧クラス側が `svg { width: 13px }` で抑えていたのを、 部品へ引き継ぐ。 */
.chub-btn > svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

.chub-btn--sm > svg {
  width: 14px;
  height: 14px;
}

/* アイコンだけのときは 20px (設計 doc 0-2b) -- サイズ指定より後に書いて勝たせる */
.chub-btn--icon > svg {
  width: 20px;
  height: 20px;
}

.chub-btn:focus-visible {
  outline: 2px solid var(--color-accent-bg);
  outline-offset: 2px;
}

/* ---- 強さ ---- */

.chub-btn--fill {
  background: var(--color-accent-bg);
  color: var(--color-button-text);
}

.chub-btn--fill:hover:not(:disabled) {
  background: var(--color-accent-hover);
}

.chub-btn--outline {
  background: var(--color-surface);
  border-color: var(--color-border);
}

.chub-btn--outline:hover:not(:disabled) {
  border-color: var(--color-accent-bg);
}

/* 控えめ。 枠は残す (枠なしだとボタンと分かりにくい、 2026-06-04 ラケ指摘の踏襲) */
.chub-btn--quiet {
  background: rgba(var(--color-fg-rgb, 44, 62, 80), 0.06);
  border-color: var(--color-border);
  color: var(--color-text-secondary);
}

.chub-btn--quiet:hover:not(:disabled) {
  background: rgba(var(--color-fg-rgb, 44, 62, 80), 0.12);
  color: var(--color-text);
}

/* ---- 意味 ---- */

/* 危ない: 文字と**枠**を赤にする。
   枠の色は本来「強さ」 が決めるが、 危ない操作の赤枠だけは例外にしている。
   2026-08-11 ラケ判断「赤枠を取ったのだけやばいかも。 注意喚起弱くなる」。
   赤枠は強さの情報ではなく**警告そのもの**なので、 意味 (tone) が枠まで支配する。 */
.chub-btn--danger {
  color: var(--color-danger);
  border-color: var(--color-danger);
}

.chub-btn--danger:hover:not(:disabled) {
  color: var(--color-danger-hover);
  border-color: var(--color-danger-hover);
}

/* 塗り x 危ない: 塗り用の赤 (文字用と分離済み、 2026-08 の色監査) */
.chub-btn--fill.chub-btn--danger {
  background: var(--color-danger-fill);
  /* 枠は塗りと同色にする。 --danger の赤枠をそのまま残すと、
     塗り (濃い赤) の外側に明るい赤の輪郭が出て二重に見える */
  border-color: var(--color-danger-fill);
  color: var(--color-button-text);
}

.chub-btn--fill.chub-btn--danger:hover:not(:disabled) {
  background: var(--color-danger-fill-hover);
  border-color: var(--color-danger-fill-hover);
  color: var(--color-button-text);
}

/* 肯定 (承認・出勤など常設の緑) */
.chub-btn--positive {
  color: var(--color-success);
}

.chub-btn--positive:hover:not(:disabled) {
  color: var(--color-success-hover);
}

.chub-btn--fill.chub-btn--positive {
  background: var(--color-success);
  color: var(--color-button-text);
}

.chub-btn--fill.chub-btn--positive:hover:not(:disabled) {
  background: var(--color-success-hover);
  color: var(--color-button-text);
}

/* ---- 大きさ・折り返し ---- */

.chub-btn--sm {
  padding: 4px 10px;
  font-size: 0.75rem;
}

/* 指で押す前提の場所 (モバイルのヘッダー、 一覧の並び替えなど)。
   WCAG 2.5.5 のタッチターゲット 44px に近い、 **意図的に大きくしてある**場所のための段。

   なぜ 2 段あるか (2026-08-13 に追加、 設計 doc 0-2b):
   デスクトップの密な操作 (メッセージの操作ボタンなど) は 30px (--icon) が正しい --
   本文より操作ボタンが目立って邪魔にならないため。 一方でタッチ主体の場所は指で押せる
   必要があり、 30px では小さい。 **どちらが正しいかは場所で決まる**ので段を 2 つ持つ。

   **アイコンの見た目 (svg 20px) はどちらも同じ**。 広がるのは操作領域だけ。 */
.chub-btn--touch {
  min-height: 44px;
  padding: 12px 20px;
}

.chub-btn--icon.chub-btn--touch {
  width: 40px;
  height: 40px;
  min-height: 0; /* アイコンだけのときは正方形を保つ (上の 44px に負けさせない) */
  padding: 8px;
}

.chub-btn--nowrap {
  white-space: nowrap;
}

/* ---- アイコンだけのボタン (2026-08-12) ----

   ラケ判断 (設計 doc 0-2b): **見た目の大きさと操作領域を分ける**。

   小さいのは欠点ではなく**本文より操作ボタンが目立って邪魔にならないため**の意図なので、
   アイコンは 20px 前後のまま大きくしない。 押しにくさは**周りの余白**で解く
   (見た目 20px / 押せる範囲 28〜32px 相当)。

   **透明なまま広げるのはやらない**。 勤怠の `::after { inset: -8px -4px }` は
   押せる場所が最後まで分からない。 ここでは hover / focus / 押下で
   **その領域に背景を出す** -- 触れたときに「ここが操作領域」 と分かるのが肝。

   狙い: 普段は邪魔をしないが、 使おうとしたときには操作できると分かる */

/* 強さ (fill / outline) と組み合わせたときは、 そちらの背景を尊重する。
   ここで background を指定しているのは「強さの指定が無いとき」 の既定として。
   **--icon は --fill より後に書いてあるので、 素朴に background を書くと塗りを消す**
   (2026-08-13 に送信ボタンの絵を作って気づいた) */
.chub-btn--icon:not(.chub-btn--fill):not(.chub-btn--outline) {
  background: transparent;
  border-color: transparent;
  color: var(--color-text-secondary);
}

.chub-btn--icon {
  /* この padding が操作領域。 アイコン 20px + 上下 4px + 枠 1px で **30px**
     (ラケ指定の 28〜32px の真ん中)。 6px にすると 34px になり指定を超える */
  padding: 4px;
  /* **JS が style="display: inline-block" を直接付けてくる画面がある**
     (ノート詳細の表示制御など 13 箇所)。 インラインスタイルは CSS より強いので
     .chub-btn の inline-flex が負けて中身が縦に潰れる。
     大きさを明示して、 どの display でも形が保たれるようにする (2026-08-12 に実際に踏んだ) */
  width: 30px;
  height: 30px;
}

/* アイコンだけのときの小さい段 (2026-08-17 ラケ判断)。

   本文にぴったり寄り添う密な場所 -- チャットのメッセージ操作 (コピー / 編集 / 返信 /
   固定 / 削除 / ノート化) -- は 30px でも大きい。 実機で並べたら、 部品へ移していない
   AI ボタン (旧 .message__action-btn = 20px) だけが小さく、 **移行した側が揃わなかった**。
   ラケの判断は「AI ボタンに合わせる」。

   これで アイコンだけのボタンの段が 3 つ揃う:
     sm    20px  本文の邪魔をしない密な場所 (メッセージの操作)
     md    30px  既定。 ふつうの画面の操作
     touch 40px  指で押す前提の場所

   呼び出し側は前から size: 'sm' を渡していたが、 アイコンだけのときは寸法が
   決まっておらず **宣言が効いていなかった**。 ここで意味を与える
   (呼び出し側の書き換えは不要)。 */
.chub-btn--icon.chub-btn--sm {
  padding: 2px;
  width: 20px;
  height: 20px;
}

/* 箱が 20px なので、 中は 16px。 20px のままだと箱からはみ出す */
.chub-btn--icon.chub-btn--sm > svg {
  width: 16px;
  height: 16px;
}

/* 触れたときに操作領域が見える (「透明なだけ」 との決定的な違い)。
   fill / outline と組み合わせたときは、 そちらの hover に任せる */
.chub-btn--icon:not(.chub-btn--fill):not(.chub-btn--outline):hover:not(:disabled),
.chub-btn--icon:not(.chub-btn--fill):not(.chub-btn--outline):focus-visible,
.chub-btn--icon:not(.chub-btn--fill):not(.chub-btn--outline):active:not(:disabled) {
  background: var(--color-surface-alt);
  color: var(--color-text);
}

/* 危ない操作は触れたときに赤で分かる */
.chub-btn--icon.chub-btn--danger:hover:not(:disabled),
.chub-btn--icon.chub-btn--danger:focus-visible {
  color: var(--color-danger);
}

/* 並ぶときは間を空ける (誤操作しにくく)。 入れ物が gap を持たない場合の保険 */
.chub-btn--icon + .chub-btn--icon {
  margin-left: 2px;
}
/* ---- 押し込み状態 (aria-pressed="true") ----
   切り替えボタンで「今これが選ばれている」 を示す。 属性で効くので、 呼び出し側は
   attrs: { 'aria-pressed': 'true' } を渡すだけでいい (見た目クラスを足さない)。

   2026-08-11 に色覚シミュレーションの切り替えで実際に踏んだ穴を塞ぐもの。
   そこは aria-pressed を付けたうえで admin-action-button--active も付けていたが、
   **そのクラスの CSS がどこにも無く**、 選択中が目で見て分からなかった
   (読み上げソフトには伝わるが画面では分からない、 という片肺状態)。
   色だけに頼らないルール (設計図 1.1) に従い、 背景と枠と文字の太さの 3 つで変える */

.chub-btn[aria-pressed='true'] {
  background: var(--color-accent-bg);
  border-color: var(--color-accent-bg);
  color: var(--color-button-text);
  font-weight: 600;
}

.chub-btn[aria-pressed='true']:hover:not(:disabled) {
  background: var(--color-accent-hover);
  border-color: var(--color-accent-hover);
}

/* ---- 完了の一時表示 (buttonDone) ----
   数秒だけ「できた」 を合図する。 色だけに頼らず文字も変わる (buttonDone 側で 'OK' 等へ)。
   強さ指定より後に書いて、 一時的にどの見た目にも勝つ */

.chub-btn--done,
.chub-btn--done:hover {
  background: transparent;
  border-color: var(--color-success);
  color: var(--color-success);
}


/* ==== css/components/tooltip.css ==== */
/**
 * 速いツールチップ (コア共通、core/tooltip.ts が使う)
 *
 * 標準の title の吹き出しは出るまで 1 秒以上かかるので、自前で速く出す
 * (2026-08-18 ラケ指摘)。ボタン側は title か aria-label があれば何も書き足さなくていい。
 *
 * 色は地と文字を反転させる (ライトでは濃い地に白文字、ダークでは明るい地に濃い文字)。
 * 背景画像の上でも周囲と見分けが付き、両テーマともトークンだけで成立する。
 */

.chub-tooltip {
  position: fixed;
  z-index: 10500; /* 画面で一番手前の相場 (ui.css の最前面と同じ)。どの重なりにも負けない */
  max-width: 260px;
  padding: 4px 10px;
  border-radius: 6px;
  background: var(--color-text);
  color: var(--color-bg);
  font-size: 0.75rem;
  line-height: 1.6;
  pointer-events: none; /* 吹き出し自身が hover を奪って点滅するのを防ぐ */
  opacity: 0;
  transition: opacity 0.1s ease;
  word-break: break-word;
}

.chub-tooltip.is-visible {
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  .chub-tooltip {
    transition: none;
  }
}


/* ==== css/components/layout.css ==== */
/* ===================================
   2カラムサイドバーシステム
   =================================== */

/* 左サイドバー（メインカテゴリ） */
.sidebar-main {
  width: 80px;
  background: var(--color-surface);
  border-right: 1px solid var(--color-border);
  display: flex;
  flex-direction: column;
  height: calc(100vh - var(--app-update-bar-height));
  position: fixed;
  left: 0;
  top: var(--app-update-bar-height);
  z-index: 102;
}

.sidebar-main__header {
  padding: 16px 0;
  text-align: center;
  border-bottom: 1px solid var(--color-border);
}

.sidebar-main__logo {
  font-size: 0.85rem;
  font-weight: 700;
  margin: 0;
  color: var(--color-accent-strong);
  letter-spacing: 0.5px;
}

.sidebar-main__nav {
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: 12px 0;
  gap: 5px;
  overflow-y: auto;
  min-height: 0;
  /* スクロールバー (+ ブラウザ標準の上下矢印) を非表示にし、 スクロール自体は可能。
     低解像度でメニュー数 > 画面高さの時の見た目崩れを防ぐ。 */
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.sidebar-main__nav::-webkit-scrollbar {
  display: none;
}

.sidebar-main__nav-item {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  padding: 10px 6px;
  margin: 0 6px;
  background: transparent;
  border: none;
  border-radius: 7px;
  cursor: pointer;
  transition: all 0.2s ease;
  color: var(--color-muted);
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}

@media (hover: hover) and (pointer: fine) {
  .sidebar-main__nav-item:hover {
    background: var(--color-bg);
    color: var(--color-text);
  }

  .sidebar-main__nav-item--active:hover {
    background: var(--color-accent-bg);
    color: var(--color-button-text);
  }
}

.sidebar-main__nav-item--active {
  background: var(--color-accent-bg);
  color: var(--color-button-text);
}

.sidebar-main__nav-icon {
  width: 18px;
  height: 18px;
  stroke-width: 2;
}

.sidebar-main__nav-label {
  font-size: 0.65rem;
  font-weight: 500;
  text-align: center;
  line-height: 1.2;
}

/* サイドバー「もっと見る」セパレータ */
.sidebar-main__nav-separator {
  margin: 4px 12px;
  border-top: 1px solid var(--color-border);
  padding-top: 4px;
}

.sidebar-main__nav-more {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  width: 100%;
  padding: 6px 2px;
  border: none;
  background: none;
  color: var(--color-muted);
  cursor: pointer;
  border-radius: 7px;
  transition:
    color 0.2s ease,
    background 0.2s ease;
  font-family: inherit;
}

.sidebar-main__nav-more:hover {
  color: var(--color-text);
  background: var(--color-surface-alt);
}

.sidebar-main__nav-more .sidebar-main__nav-icon {
  width: 16px;
  height: 16px;
  transition: transform 0.2s ease;
}

.sidebar-main__nav-more--expanded .sidebar-main__nav-icon {
  transform: rotate(180deg);
}

.sidebar-main__nav-more .sidebar-main__nav-label {
  font-size: 0.6rem;
  font-weight: 500;
}

/* もっと見る: hidden グループ */
.sidebar-main__nav-hidden-group {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  width: 100%;
}

/* ナビゲーションバッジ */
.nav-badge {
  position: absolute;
  top: 6px;
  right: 6px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  background: var(--color-accent-strong, #7986cb);
  color: white;
  border-radius: 8px;
  font-size: 0.65rem;
  font-weight: 700;
  line-height: 16px;
  text-align: center;
  box-shadow:
    0 1px 3px rgba(var(--color-accent-rgb, 114, 130, 187), 0.3),
    0 0 0 2px var(--color-surface);
  animation: badge-pulse 2s ease-in-out infinite;
  z-index: 10;
}

@keyframes badge-pulse {
  0%,
  100% {
    transform: scale(1);
    box-shadow:
      0 1px 3px rgba(var(--color-accent-rgb, 114, 130, 187), 0.3),
      0 0 0 2px var(--color-surface);
  }
  50% {
    transform: scale(1.1);
    box-shadow:
      0 2px 5px rgba(var(--color-accent-rgb, 114, 130, 187), 0.5),
      0 0 0 2px var(--color-surface);
  }
}

.sidebar-main__footer {
  padding: 12px;
  border-top: 1px solid var(--color-border);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}

.sidebar-main__theme-toggle {
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  border-radius: 7px;
  cursor: pointer;
  color: var(--color-muted);
  transition: all 0.2s ease;
  position: relative;
}

@media (hover: hover) and (pointer: fine) {
  .sidebar-main__theme-toggle:hover {
    background: var(--color-bg);
    color: var(--color-text);
  }
}

/* サブメニュー閉じるボタン */
.sidebar-sub__close-btn {
  position: absolute;
  top: 50%;
  right: 6px;
  transform: translateY(-50%);
  background: none;
  border: none;
  cursor: pointer;
  color: var(--color-muted);
  padding: 6px;
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition:
    color 0.2s,
    background 0.2s;
  touch-action: manipulation;
}

@media (hover: hover) and (pointer: fine) {
  .sidebar-sub__close-btn:hover {
    color: var(--color-text);
    background: var(--color-bg);
  }
}

.sidebar-sub__header {
  position: relative;
}

/* モバイルでは閉じるボタン非表示 */
@media (max-width: 1024px) {
  .sidebar-sub__close-btn {
    display: none;
  }
}

/* サブメニュー折りたたみ状態 */
body.sidebar-sub-collapsed .sidebar-sub {
  transform: translateX(-100%);
  visibility: hidden;
  pointer-events: none;
  transition:
    transform 0.25s ease,
    visibility 0.25s;
}

body.sidebar-sub-collapsed .app-container {
  margin-left: 80px;
}

body.sidebar-sub-collapsed .knowledge-detail-view:not(.panel-mode) {
  left: 80px;
}

/* モバイルではトグルボタン非表示（ハンバーガーメニューがある） */
@media (max-width: 1024px) {
  .sidebar-main__sub-toggle {
    display: none;
  }
}

.sidebar-main__theme-toggle svg {
  width: 20px;
  height: 20px;
}

/* 中央サイドバー（サブメニュー） */
.sidebar-sub {
  width: 220px;
  background: var(--color-bg);
  border-right: 1px solid var(--color-border);
  display: flex;
  flex-direction: column;
  height: calc(100vh - var(--app-update-bar-height));
  position: fixed;
  left: 80px;
  top: var(--app-update-bar-height);
  z-index: 101;
}

.sidebar-sub__content {
  display: flex;
  flex-direction: column;
  height: 100%;
}

.sidebar-sub__header {
  padding: 12px 12px 10px;
  border-bottom: 1px solid var(--color-border);
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.sidebar-sub__title {
  font-size: 0.8rem;
  font-weight: 600;
  margin: 0;
  color: var(--color-text);
}

.sidebar-sub__header-action {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border: none;
  background: transparent;
  border-radius: 6px;
  color: var(--color-muted);
  cursor: pointer;
  transition: all 0.12s;
}

.sidebar-sub__header-action:hover {
  background: var(--color-surface);
  color: var(--color-text);
}

.sidebar-sub__actions {
  padding: 10px;
  display: flex;
  flex-direction: column;
  gap: 7px;
  border-bottom: 1px solid var(--color-border);
}

.sidebar-sub__toolbar-row {
  display: flex;
  /* 文字サイズを上げると 2 つ並びでは幅が足りなくなる。 その時は縦に積んで
     ラベルを省略せずに読めるようにする (省略すると何のボタンか分からなくなる) */
  flex-wrap: wrap;
  gap: 6px;
  padding: 8px 10px;
  border-bottom: 1px solid var(--color-border);
}

.sidebar-sub__half-btn {
  position: relative;
  /* 基準を半分 (gap 6px の 2 個並び) にして、 入るときは常に半々に保つ。
     中身 (アイコン + ラベル + 未読バッジ) が半分に収まらなくなったときだけ、
     親の flex-wrap で縦に積んでラベルを省略せずに読めるようにする */
  flex: 1 1 calc(50% - 3px);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 5px 6px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 5px;
  cursor: pointer;
  color: var(--color-text);
  font-size: 0.6875rem;
  font-weight: 500;
  white-space: nowrap;
  transition: all 0.15s ease;
}

.sidebar-sub__half-btn:hover {
  background: var(--color-surface-alt);
  border-color: var(--color-accent-text);
}

.sidebar-sub__half-btn svg {
  width: 13px;
  height: 13px;
  flex-shrink: 0;
}

/* ホーム行: 通常時は背景なし・白文字 */
.sidebar__menu-link--home {
  background: none;
  color: var(--color-text);
  border-color: transparent;
}

/* ホーム行ホバー: 他チャンネルと同じ背景変化、ただし動き(transform)なし */
.sidebar__menu-link--home:hover {
  transform: none;
  box-shadow: none;
}

/* 通知設定モーダル */
.notification-settings-modal__overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.4);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
}

.notification-settings-modal__dialog {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 16px 20px;
  min-width: 280px;
  max-width: 360px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}

.notification-settings-modal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}

.notification-settings-modal__title {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-text);
}

.notification-settings-modal__close {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--color-muted);
  padding: 2px;
  display: flex;
  align-items: center;
}

.notification-settings-modal__close:hover {
  color: var(--color-text);
}

.notification-settings-modal__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.notification-settings-modal__item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 4px 0;
}

.notification-settings-modal__label {
  font-size: 0.8rem;
  color: var(--color-text);
}

.notification-settings-modal__toggle {
  position: relative;
  width: 36px;
  height: 20px;
  border-radius: 10px;
  border: none;
  background: var(--color-border);
  cursor: pointer;
  transition: background 0.2s;
  padding: 0;
}

.notification-settings-modal__toggle--on {
  background: var(--color-accent-bg);
}

.notification-settings-modal__toggle-knob {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: white;
  transition: transform 0.2s;
}

.notification-settings-modal__toggle--on .notification-settings-modal__toggle-knob {
  transform: translateX(16px);
}

.sidebar-sub__list {
  flex: 1;
  overflow-y: auto;
  padding: 5px;
}

.sidebar-sub__list .sidebar__menu {
  padding: 0;
  margin: 0;
}

.sidebar-sub__list .sidebar__menu-item {
  margin-bottom: 2px;
}

.sidebar-sub__list .sidebar__menu-link {
  padding: 6px 8px;
  font-size: 0.8rem;
}

.sidebar-sub__list .sidebar__menu-icon {
  width: 13px;
  height: 13px;
}

.sidebar__menu-divider {
  margin: 8px 12px;
  border-top: 1px solid var(--color-border);
  list-style: none;
}

/* レスポンシブ対応 */

/* タグ管理モーダル */
.tag-manage-create-container {
  position: relative;
}

.tag-manage-create-input {
  width: 100%;
  padding: 10px 14px;
  border: 2px solid var(--color-border);
  border-radius: 8px;
  font-size: 0.9rem;
  background: var(--color-surface);
  color: var(--color-text);
  transition: all 0.2s ease;
}

.tag-manage-create-input::placeholder {
  color: var(--color-muted);
}

.tag-manage-create-input:focus {
  outline: none;
  border-color: var(--color-accent-text);
  box-shadow: 0 0 0 3px rgba(var(--color-accent-rgb), 0.1);
}

.tag-manage-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  max-height: 400px;
  overflow-y: auto;
  padding: 4px;
}

/* ミニマルチップスタイル */
.tag-manage-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 8px;
  border-radius: 12px;
  font-size: 0.7rem;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  border: 2px solid var(--color-border);
  background: transparent;
  color: var(--color-text);
  user-select: none;
  white-space: nowrap;
  flex-shrink: 0;
}

.tag-manage-chip:hover {
  border-color: var(--color-accent-text);
  transform: translateY(-2px);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.tag-manage-chip:active {
  transform: translateY(0);
}

.tag-manage-chip--selected {
  background: var(--color-accent-bg);
  border-color: var(--color-accent-text);
  color: var(--color-button-text);
}

.tag-manage-chip--selected:hover {
  background: var(--color-accent-hover);
  border-color: var(--color-accent-hover);
}

.tag-manage-chip-icon {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  opacity: 0.7;
}

.tag-manage-chip--selected .tag-manage-chip-icon {
  opacity: 1;
}

.tag-manage-empty {
  text-align: center;
  color: var(--color-muted);
  font-size: 0.9rem;
}

.tag-manage-description {
  font-size: 0.9rem;
  color: var(--color-muted);
  margin-bottom: 4px;
}

/* ========================================
   REFACTORED INLINE STYLES
   ======================================== */

/* ----------------------------------------
   COMMON/UTILITY CLASSES
   ---------------------------------------- */

.hidden {
  display: none;
}

.divider-text {
  margin: 20px 0;
  text-align: center;
  color: var(--color-muted);
  font-size: 0.9rem;
}

/* ----------------------------------------
   PROFILE PANEL STYLES
   ---------------------------------------- */

.profile-header {
  margin-bottom: 24px;
}

.profile-heading {
  margin: 0;
  font-size: 1.4rem;
  color: var(--color-text);
  font-weight: 600;
}

.profile-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 12px;
  padding: 24px;
  margin-bottom: 24px;
  box-shadow: var(--shadow-soft);
}

.profile-card-header {
  margin: 0 0 16px 0;
  font-size: 1.1rem;
  color: var(--color-text);
  display: flex;
  align-items: center;
  gap: 8px;
}

.profile-info-grid {
  display: grid;
  gap: 16px;
}

.profile-avatar-container {
  display: flex;
  align-items: center;
  gap: 24px;
}

.profile-avatar-preview {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2.5rem;
  font-weight: 600;
  border: 3px solid var(--color-border);
  overflow: hidden;
}

.profile-avatar-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.profile-avatar-actions {
  flex: 1;
}

.profile-avatar-buttons {
  display: flex;
  gap: 12px;
}

/* Secret field container - フレックスボックスレイアウト */
.secret-field-container {
  display: flex;
  gap: 8px;
  align-items: flex-start;
}

.secret-field-container > div:first-child {
  flex: 1;
}

.secret-delete-btn {
  margin-top: 0;
  white-space: nowrap;
}

.profile-form {
  display: grid;
  gap: 16px;
}

.profile-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

.profile-form-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.profile-form-label {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--color-text);
}

.profile-readonly-display {
  padding: 12px 16px;
  border: 2px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
  color: var(--color-muted);
  font-size: 0.9rem;
  min-height: 44px;
  display: flex;
  align-items: center;
}

.profile-form-input {
  padding: 12px 16px;
  border: 2px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.9rem;
  transition: border-color 0.2s ease;
  width: 100%;
}

.profile-form-input:focus {
  border-color: var(--color-accent-text);
  outline: none;
}

.profile-form-hint {
  font-size: 0.8rem;
  color: var(--color-muted);
}

.profile-form-actions {
  display: flex;
  gap: 12px;
  justify-content: flex-end;
  margin-top: 8px;
}

.profile-upgrade-description {
  margin: 0 0 16px 0;
  color: var(--color-muted);
  font-size: 0.9rem;
  line-height: 1.5;
}

.upgrade-status-badge {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  margin: 0 0 16px 0;
  background: rgba(var(--color-accent-rgb), 0.08);
  border: 1px solid var(--color-accent);
  border-radius: 8px;
}

.upgrade-status-icon {
  width: 24px;
  height: 24px;
  flex-shrink: 0;
  color: var(--color-accent);
}

.upgrade-status-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.upgrade-status-title {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--color-text);
}

.upgrade-status-description {
  font-size: 0.85rem;
  color: var(--color-muted);
  line-height: 1.4;
}

.profile-upgrade-heading {
  margin: 0 0 12px 0;
  font-size: 1.1rem;
  color: var(--color-text);
  display: flex;
  align-items: center;
  gap: 8px;
}

/* ----------------------------------------
   DASHBOARD PANEL STYLES
   ---------------------------------------- */

.dashboard-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
}

.dashboard-heading {
  margin: 0;
  font-size: 1.3rem;
  color: var(--color-text);
}

.stat-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 16px;
  margin-bottom: 32px;
}

.stat-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 20px;
}

.stat-card-content {
  display: flex;
  align-items: center;
  gap: 12px;
}

.stat-card-icon {
  width: 2rem;
  height: 2rem;
}

.stat-card-label {
  font-size: 0.85rem;
  color: var(--color-muted);
  margin-bottom: 4px;
}

.stat-card-value {
  font-size: 1.8rem;
  font-weight: 600;
  color: var(--color-text);
}

.stat-card-unit {
  font-size: 0.75rem;
  color: var(--color-muted);
}

.dashboard-section {
  margin-bottom: 32px;
}

.dashboard-section-heading {
  margin: 0 0 16px 0;
  font-size: 1.1rem;
  color: var(--color-text);
}

.admin-stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 12px;
}

.admin-stat-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 16px;
}

.admin-stat-label {
  font-size: 0.8rem;
  color: var(--color-muted);
  margin-bottom: 8px;
}

.admin-stat-value {
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--color-accent-strong);
}

.activity-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 0 0 16px 0;
}

.activity-container {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  max-height: 400px;
  overflow-y: auto;
  padding: 6px;
}

.activity-loading {
  text-align: center;
  color: var(--color-muted);
  padding: 40px 0;
}

.moderation-section {
  margin-top: 24px;
}

.guest-info-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 20px;
}

.guest-info-heading {
  margin: 0 0 16px 0;
  font-size: 1.1rem;
  color: var(--color-text);
}

.guest-info-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
}

.guest-info-label {
  color: var(--color-muted);
}

.guest-info-value {
  font-size: 1.2rem;
  font-weight: 600;
  color: var(--color-accent-strong);
  margin: 0 8px;
}

/* ----------------------------------------
   MEDIA PANEL STYLES
   ---------------------------------------- */

.media-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
}

.media-heading {
  margin: 0;
  font-size: 1.4rem;
  color: var(--color-text);
  font-weight: 600;
}

/* ----------------------------------------
   KNOWLEDGE PANEL STYLES
   ---------------------------------------- */

.knowledge-detail-meta-container {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-items: center;
  margin: 8px 0;
  font-size: 0.75rem;
  color: var(--color-text-secondary);
}

.knowledge-detail-meta-item {
  display: flex;
  align-items: center;
  gap: 3px;
}

.knowledge-meta-icon {
  width: 12px;
  height: 12px;
  opacity: 0.6;
}

.knowledge-meta-avatar {
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  background: var(--color-primary);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  font-weight: 600;
  flex-shrink: 0;
}

/* 包む .knowledge-meta-avatar と同じ値にする (片方だけ px で残すと枠から突き出る) */
.knowledge-meta-avatar-img {
  width: 1.5rem;
  height: 1.5rem;
  object-fit: cover;
  border-radius: 50%;
}

.knowledge-scroll-sentinel {
  height: 1px;
  visibility: hidden;
}

.knowledge-detail-tags-display {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin: 8px 0;
}

.knowledge-permission-container {
  margin: 8px 0;
  display: flex;
  gap: 10px;
  align-items: center;
  flex-wrap: wrap;
  font-size: 0.8rem;
  color: var(--color-text-secondary);
}

.knowledge-permission-group {
  display: flex;
  align-items: center;
  gap: 6px;
}

.knowledge-permission-select {
  padding: 3px 28px 3px 6px;
  border: 1px solid var(--color-border);
  border-radius: 3px;
  background-color: var(--color-bg);
  color: var(--color-text);
  font-size: 0.8rem;
}

.knowledge-tags-editor-container {
  margin: 8px 0;
}

.knowledge-icon-small {
  width: 18px;
  height: 18px;
}

/* ----------------------------------------
   ADMIN PANEL STYLES
   ---------------------------------------- */

.admin-section-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 24px;
}

.admin-heading {
  margin: 0;
  font-size: 1.5rem;
  color: var(--color-text);
}

.admin-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 24px;
  margin-bottom: 24px;
}

.admin-card-header {
  margin: 0 0 16px 0;
  font-size: 1.2rem;
  color: var(--color-text);
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: 8px;
}

.admin-card-description {
  margin: 0 0 20px 0;
  color: var(--color-muted);
  font-size: 0.95rem;
  line-height: 1.6;
}

/* 危険なカード */
.admin-card--danger {
  border: 1px solid var(--color-status-error);
  background: rgba(var(--color-status-error-rgb), 0.05);
  margin-top: 40px;
}

/* 危険なカード見出し */
.admin-card-header--danger {
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--color-status-error);
  margin-bottom: 12px;
}

/* セーブログ */
.changelog-list {
  max-height: 400px;
  overflow-y: auto;
}

.changelog-item {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 6px 0;
  border-bottom: 1px solid var(--color-border);
  font-size: 0.78rem;
}

.changelog-item:last-child {
  border-bottom: none;
}

.changelog-hash {
  font-family: monospace;
  color: var(--color-accent-text);
  flex-shrink: 0;
  font-size: 0.72rem;
}

.changelog-subject {
  flex: 1;
  color: var(--color-text);
}

.changelog-date {
  color: var(--color-muted);
  flex-shrink: 0;
  font-size: 0.72rem;
}

/* 小さな説明文 */
.admin-card-description--small {
  font-size: 0.75rem;
  margin-bottom: 12px;
  line-height: 1.4;
}

/* 危険ボタン */
.admin-btn-danger {
  background: var(--color-status-error);
  color: var(--color-button-text);
  border: none;
  border-radius: 6px;
  cursor: pointer;
  font-size: 0.75rem;
  padding: 4px 10px;
  transition: all var(--animation-duration) ease;
}

.admin-btn-danger:hover {
  opacity: 0.9;
}

/* システム概要 統計グリッド */
.system-stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 16px;
}

.system-stat-label {
  font-size: 0.85rem;
  color: var(--color-muted);
  margin-bottom: 4px;
}

.system-stat-value {
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--color-text);
}

.system-stat-value--mono {
  font-family: monospace;
}

.system-stat-value--small {
  font-size: 0.9rem;
  font-weight: normal;
}

/* トグルスイッチ */
.toggle-switch {
  position: relative;
  width: 44px;
  height: 24px;
}

.toggle-switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

.toggle-slider {
  position: absolute;
  cursor: pointer;
  inset: 0;
  background: var(--color-border);
  border-radius: 24px;
  transition: background 0.2s;
}

.toggle-slider:before {
  content: '';
  position: absolute;
  height: 18px;
  width: 18px;
  left: 3px;
  bottom: 3px;
  background: white;
  border-radius: 50%;
  transition: transform 0.2s;
}

.toggle-switch input:checked + .toggle-slider {
  background: var(--color-primary);
}

.toggle-switch input:checked + .toggle-slider:before {
  transform: translateX(20px);
}

/* ゲスト設定グリッド */
.guest-settings-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 20px;
  margin-bottom: 16px;
}

.setting-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.setting-label {
  font-size: 0.95rem;
  color: var(--color-text);
}

.setting-input-group {
  display: flex;
  gap: 6px;
  align-items: center;
}

.setting-number-input {
  width: 70px;
  padding: 4px 8px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.9rem;
  text-align: center;
}

.setting-text-input {
  min-width: 0;
  flex: 1 1 200px;
  padding: 4px 8px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.9rem;
}

/* label の既定が縦並び (flex-direction: column) のため、 横並びを明示する */
.setting-checkbox-label {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 6px;
  font-size: 0.85rem;
  color: var(--color-text-secondary);
  white-space: nowrap;
}

.setting-checkbox-label input[type='checkbox'] {
  margin: 0;
}

/* 設定項目を 1 列で縦に積む (ラベルと入力欄が横並びの行を並べる) */
.mail-settings-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  margin-bottom: 16px;
}

.mail-settings-grid .setting-row {
  gap: 12px;
}

.mail-settings-grid .setting-label {
  flex: 0 0 130px;
}

/* 入力欄の左端をラベル幅で揃える (行ごとに開始位置がずれないように) */
.mail-settings-grid .setting-input-group {
  flex: 1 1 auto;
  justify-content: flex-start;
}

/* テスト送信欄と保存ボタンを両端に置く。 幅が足りなければ折り返す */
.mail-settings-footer {
  flex-wrap: wrap;
  gap: 12px;
  justify-content: space-between;
}

.mail-settings-footer .setting-input-group {
  flex: 1 1 260px;
}

.mail-settings-footer button {
  white-space: nowrap;
}

@media (max-width: 640px) {
  .mail-settings-grid .setting-row {
    flex-direction: column;
    align-items: stretch;
  }

  .mail-settings-grid .setting-label {
    flex: 0 0 auto;
  }

  .mail-settings-grid .setting-input-group {
    justify-content: flex-start;
  }
}

.setting-unit {
  color: var(--color-muted);
  font-size: 0.85rem;
}

.setting-select {
  padding: 4px 8px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-bg);
  color: var(--color-text);
  cursor: pointer;
  font-size: 0.9rem;
}

.setting-footer {
  display: flex;
  justify-content: flex-end;
  padding-top: 12px;
  border-top: 1px solid var(--color-border);
}

.admin-form {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.admin-form-field {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.admin-form-label {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--color-text);
}

.admin-form-input {
  padding: 12px;
  border: 2px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.95rem;
  transition: border-color 0.2s ease;
}

.admin-form-input:focus {
  border-color: var(--color-accent-text);
  outline: none;
}

.admin-form-select {
  padding: 12px;
  border: 2px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.95rem;
  cursor: pointer;
}

.admin-form-actions {
  display: flex;
  gap: 12px;
  justify-content: flex-end;
  margin-top: 8px;
}

.admin-table-container {
  overflow-x: auto;
  margin-top: 16px;
}

.admin-table {
  width: 100%;
  border-collapse: collapse;
}

.admin-table th {
  background: var(--color-surface-alt);
  padding: 12px;
  text-align: left;
  font-weight: 600;
  color: var(--color-text);
  border-bottom: 2px solid var(--color-border);
}

.admin-table td {
  padding: 12px;
  border-bottom: 1px solid var(--color-border);
  color: var(--color-text);
}

.admin-table tr:hover {
  background: var(--color-surface-alt);
}

/* ----------------------------------------
   MOBILE STYLES
   ---------------------------------------- */

.mobile-guest-counter-inline {
  font-size: 0.75rem;
  color: var(--color-muted);
  margin-right: 8px;
}

/* ----------------------------------------
   UTILITY CLASSES
   ---------------------------------------- */

.flex-center {
  display: flex;
  align-items: center;
  gap: 8px;
}

.flex-between {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.flex-gap-12 {
  display: flex;
  gap: 12px;
}

.margin-bottom-16 {
  margin-bottom: 16px;
}

.margin-bottom-24 {
  margin-bottom: 24px;
}

.text-muted {
  color: var(--color-muted);
}

.font-small {
  font-size: 0.85rem;
}

.font-tiny {
  font-size: 0.75rem;
}

/* ----------------------------------------
   MODAL STYLES
   ---------------------------------------- */

.modal-width-default {
  width: 420px;
  max-width: 95vw;
}

.modal-width-large {
  width: 480px;
  max-width: 95vw;
}

/* ----------------------------------------
   FORM STYLES (GENERIC)
   ---------------------------------------- */

.form-grid {
  display: grid;
  gap: 16px;
}

.form-field-column {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.form-field-with-gap {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.form-label-block {
  display: block;
  margin-bottom: 6px;
  font-weight: 500;
  color: var(--color-text);
}

.form-label-small {
  display: block;
  margin-bottom: 4px;
  font-size: 0.85rem;
  color: var(--color-text-secondary);
}

.form-label-medium {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--color-text);
}

.form-hint-text {
  font-size: 0.8rem;
  color: var(--color-muted);
}

.form-hint-small {
  font-size: 0.85rem;
  color: var(--color-muted);
}

.form-input-full {
  width: 100%;
  padding: 10px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  font-size: 0.875rem;
  background: var(--color-bg);
  color: var(--color-text);
}

.form-input-full:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

.form-input-compact {
  width: 100%;
  height: 36px;
  padding: 0 8px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.9rem;
  box-sizing: border-box;
}

.form-input-compact:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

.form-textarea {
  padding: 8px 10px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.9rem;
  font-family: inherit;
  line-height: 1.5;
}

.form-textarea:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

.form-actions-end {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
}

.form-actions-between {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-top: 8px;
}

.form-field-flex-min {
  flex: 1;
  min-width: 150px;
}

.form-input-enhanced {
  width: 100%;
  padding: 12px 16px;
  border: 2px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.9rem;
  transition: border-color 0.2s ease;
}

.form-input-enhanced:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

.form-input-readonly {
  background: var(--color-target);
  font-weight: 600;
}

.form-label-text-muted {
  font-size: 0.85rem;
  color: var(--color-muted);
}

.form-grid-2col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.form-hint-smallest {
  font-size: 0.75rem;
  color: var(--color-muted);
}

.form-select {
  width: 100%;
  padding: 8px 32px 8px 10px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.9rem;
  font-family: inherit;
  line-height: 1.5;
  cursor: pointer;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-image: url('data:image/svg+xml;charset=UTF-8,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2212%22 height=%228%22 viewBox=%220 0 12 8%22%3E%3Cpath fill=%22%23666%22 d=%22M1.41 0L6 4.58 10.59 0 12 1.42l-6 6-6-6z%22/%3E%3C/svg%3E');
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 12px;
}

.form-select:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

.form-label-block {
  display: block;
  margin-bottom: 6px;
  font-weight: 500;
  color: var(--color-text);
}

.form-textarea {
  width: 100%;
  padding: 10px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  font-size: 0.875rem;
  background: var(--color-bg);
  color: var(--color-text);
  font-family: inherit;
  resize: vertical;
}

.form-textarea:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

.form-radio-group {
  display: flex;
  gap: 16px;
}

.form-radio-label {
  display: flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
}

.form-radio-label input[type='radio'] {
  width: 16px;
  height: 16px;
  cursor: pointer;
}

.form-radio-label span {
  color: var(--color-text);
}

.form-input-monospace {
  font-family: monospace;
}

.form-info-box {
  padding: 12px;
  background: var(--color-surface);
  border-radius: 6px;
  border: 1px solid var(--color-border);
}

.form-info-box p {
  margin: 0;
  font-size: 0.8125rem;
  color: var(--color-text-secondary);
  line-height: 1.5;
}

.form-hint-small {
  margin: 6px 0 0;
  font-size: 0.75rem;
  color: var(--color-muted);
}

.form-code-display {
  display: none;
  padding: 16px;
  background: var(--color-surface);
  border-radius: 6px;
  border: 2px solid var(--color-accent-border);
}

.form-code-display.active {
  display: block;
}

.form-code-label {
  display: block;
  margin-bottom: 8px;
  font-weight: 500;
  color: var(--color-text);
  font-size: 0.8125rem;
}

.form-code-row {
  display: flex;
  gap: 8px;
  align-items: center;
}

.form-code-input {
  flex: 1;
  padding: 10px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  font-size: 1rem;
  background: var(--color-bg);
  color: var(--color-accent-strong);
  font-family: monospace;
  font-weight: bold;
}

.form-code-copy-btn {
  padding: 10px 16px;
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  border: none;
  border-radius: 6px;
  cursor: pointer;
  font-size: 0.875rem;
  font-weight: 500;
  white-space: nowrap;
  flex-shrink: 0;
}

.form-code-copy-btn:hover {
  opacity: 0.9;
}

.confirm-text {
  margin: 0;
  color: var(--color-text);
  font-size: 0.95rem;
}

.confirm-details-box {
  display: grid;
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--color-border);
  border-radius: 10px;
  background: var(--color-surface-alt);
}

.confirm-details-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.confirm-label {
  font-size: 0.85rem;
  color: var(--color-muted);
}

.confirm-value {
  font-size: 0.95rem;
  color: var(--color-text);
}

.confirm-value-strong {
  font-family: monospace;
  font-size: 1rem;
  color: var(--color-text);
  font-weight: 600;
}

.popup-footer {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 24px;
  border-top: 1px solid var(--color-border);
}

.popup-footer.space-between {
  justify-content: space-between;
}

.btn-danger {
  background: var(--color-danger-fill);
  color: var(--color-button-text);
  border: none;
}

.btn-danger:hover {
  background: var(--color-danger-fill-hover);
}

.btn-warning {
  background: var(--color-warning);
  color: var(--color-button-text);
  border: none;
}

.btn-warning:hover {
  background: var(--color-warning-hover);
}

.popup-body-column {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.media-preview {
  margin-bottom: 20px;
  text-align: center;
  position: relative;
}

.media-preview img {
  max-width: 100%;
  max-height: 300px;
  border-radius: 8px;
  transition: all 0.3s ease;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  cursor: pointer;
}

.media-preview img:hover {
  transform: scale(1.02);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
}

.media-preview .file-icon-preview {
  font-size: 3rem;
  padding: 20px;
}

/* 動画インライン再生（メディア詳細モーダル）
   縦撮りスマホ動画（1080×1920 等）でも視認性を保つため、
   ビューポート高さ基準の上限と固定 720px を min() で組み合わせ。
   横動画は max-width: 100% で横幅優先、縦動画は max-height で高さ優先。
   鬼教官 L-B 対応: 横向きスマホ等で 70vh が小さすぎる事を防ぐ下限ガード（max(280px, ...)）。 */
.media-preview-video {
  max-width: 100%;
  max-height: max(280px, min(70vh, 720px));
  border-radius: 8px;
  background: #000;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  /* 動画自身の縦横比を維持（CSS で潰さない） */
  height: auto;
  width: auto;
}

/* 音声インライン再生（音符アイコン + audio コントロール縦並び） */
.media-preview-audio {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 16px;
}

.media-preview-audio .file-icon-preview {
  font-size: 3rem;
}

.media-preview-audio-player {
  width: 100%;
  max-width: 480px;
}

.media-edit-field {
  margin-bottom: 16px;
}

.media-edit-field label {
  display: block;
  margin-bottom: 4px;
  font-weight: 500;
}

.media-edit-field label.label-with-button {
  display: flex;
  flex-direction: row;
  align-items: center;
}

.media-edit-field input[type='text'],
.media-edit-field textarea {
  width: 100%;
  padding: 8px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  font-family: inherit;
  background: var(--color-bg);
  color: var(--color-text);
}

.media-edit-field input[readonly] {
  background: var(--color-surface);
  opacity: 0.7;
}

.media-edit-field textarea {
  resize: vertical;
}

.media-edit-field small {
  color: var(--text-secondary);
  margin-top: 4px;
  display: block;
}

.tag-manage-container {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  padding: 6px 8px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
  min-height: 42px;
}

/* メディアナビゲーションボタン */
.media-nav-button {
  position: fixed;
  top: 50%;
  transform: translateY(-50%);
  width: 48px;
  height: 48px;
  background: rgba(0, 0, 0, 0.6);
  border: none;
  border-radius: 50%;
  color: white;
  cursor: pointer;
  z-index: 10001;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(4px);
}

/* 画像ポップアップ用のナビゲーションボタン配置（画面端に配置） */
.image-popup-overlay #image-popup-nav-prev {
  left: 20px;
}

.image-popup-overlay #image-popup-nav-next {
  right: 20px;
}

/* モバイル: 画像ポップアップのナビボタンを画面端寄りに */
@media (max-width: 768px) {
  .image-popup-overlay #image-popup-nav-prev {
    left: 10px;
  }

  .image-popup-overlay #image-popup-nav-next {
    right: 10px;
  }

  .media-preview {
    margin-bottom: 12px;
  }

  .media-preview img {
    max-height: 150px; /* さらに小さく */
  }

  .media-edit-field {
    margin-bottom: 10px;
  }

  .media-edit-field label {
    font-size: 0.875rem;
    margin-bottom: 4px;
  }

  .media-edit-field input,
  .media-edit-field textarea {
    font-size: 1rem; /* iOS Safariのズーム防止 */
    padding: 8px;
  }

  .media-edit-field textarea {
    min-height: 60px; /* テキストエリアの高さを制限 */
  }

  /* 画像ツール（圧縮・リサイズ）のセクションを折りたたみ可能に */
  .media-image-tools {
    margin-bottom: 8px;
  }

  .media-image-tools label {
    cursor: pointer;
  }

  /* タグ入力エリア */
  .tag-manage-container {
    flex-wrap: wrap;
  }

  .tag-manage-chip {
    font-size: 0.8125rem;
    padding: 6px 12px;
  }

  /* 画像圧縮・リサイズUIを縦並びに */
  .compress-controls,
  .resize-controls {
    flex-direction: column;
    gap: 12px;
  }

  .resize-inputs {
    flex-direction: column;
    gap: 12px;
  }

  .resize-inputs .input-group {
    width: 100%;
  }

  /* ボタンエリア */
  .popup-footer .btn {
    min-height: 44px; /* タッチ操作しやすいサイズ */
  }
}

.media-nav-button:hover:not(:disabled) {
  background: rgba(0, 0, 0, 0.8);
  transform: translateY(-50%) scale(1.1);
}

.media-nav-button:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}

.media-nav-button svg {
  width: 24px;
  height: 24px;
}

/* バルク操作ツールバー */
.media-bulk-toolbar {
  position: sticky;
  top: 0;
  z-index: 1000;
  background: var(--color-accent);
  color: white;
  padding: 12px 16px;
  margin-bottom: 0;
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  transform: translateY(-100%);
  opacity: 0;
  transition: all 0.3s ease;
  pointer-events: none;
}

.media-bulk-toolbar--visible {
  transform: translateY(0);
  opacity: 1;
  pointer-events: all;
  margin-bottom: 16px;
}

.media-bulk-toolbar-content {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

.media-bulk-info {
  display: flex;
  align-items: center;
  gap: 12px;
}

.media-bulk-info span {
  font-weight: 500;
}

.media-bulk-info .btn-text {
  color: white;
  opacity: 0.9;
  padding: 4px 8px;
  border: none;
  background: transparent;
  cursor: pointer;
  text-decoration: underline;
  font-size: 0.9rem;
}

.media-bulk-info .btn-text:hover {
  opacity: 1;
}

.media-bulk-actions {
  display: flex;
  gap: 8px;
  /* AIタグ提案の追加でボタンが 5 個になったため、狭幅では折り返す */
  flex-wrap: wrap;
}

.media-bulk-actions .btn {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  background: white;
  color: var(--color-accent);
  border: none;
  border-radius: 6px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
}

.media-bulk-actions .btn:hover {
  background: #f5f5f5;
  transform: translateY(-1px);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
}

.media-bulk-actions .btn-danger {
  background: var(--color-status-off);
  color: white;
}

.media-bulk-actions .btn-danger:hover {
  background: #c62828;
}

.warning-box {
  padding: 12px;
  border: 1px solid var(--color-warning);
  border-radius: 8px;
  background: rgba(255, 193, 7, 0.1);
}

.warning-box p {
  margin: 0;
  color: var(--color-text);
  font-size: 0.9rem;
  line-height: 1.5;
}

/* ----------------------------------------
   TABLE HEADER STYLES
   ---------------------------------------- */

.table-header-cell {
  padding: 14px 16px;
  text-align: left;
  font-weight: 600;
  color: var(--color-text);
  font-size: 0.9rem;
}

/* ----------------------------------------
   CODE DISPLAY STYLES
   ---------------------------------------- */

.code-inline {
  padding: 2px 4px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  font-family: 'Courier New', monospace;
  background: var(--color-surface-alt);
}

/* ----------------------------------------
   TOGGLE SWITCH STYLES
   ---------------------------------------- */

.toggle-switch {
  position: relative;
  display: inline-block;
  width: 50px;
  height: 26px;
}

.toggle-switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

.toggle-slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: var(--color-border);
  transition: 0.3s;
  border-radius: 26px;
}

.toggle-slider:before {
  position: absolute;
  content: '';
  height: 20px;
  width: 20px;
  left: 3px;
  bottom: 3px;
  background-color: var(--color-button-text);
  transition: 0.3s;
  border-radius: 50%;
}

.toggle-switch input:checked + .toggle-slider {
  background-color: var(--color-accent-text);
}

.toggle-switch input:checked + .toggle-slider:before {
  transform: translateX(24px);
}

.toggle-switch input:disabled + .toggle-slider {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ===================================
   通知ビュー
   =================================== */

/* パネル */
.notifications-panel {
  padding: 0;
  height: 100%;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  background: var(--color-bg, #1a1b23);
}

/* ツールバー */
.notifications-panel__toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  border-bottom: 1px solid var(--color-border);
  flex-shrink: 0;
}

.notifications-panel__toolbar-btn {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 5px;
  cursor: pointer;
  color: var(--color-text);
  font-size: 0.72rem;
  font-weight: 500;
  transition: all 0.2s ease;
}

.notifications-panel__toolbar-btn:hover {
  background: var(--color-surface-alt);
  border-color: var(--color-accent-text);
}

.notifications-panel__toolbar-btn--icon {
  padding: 5px;
  flex-shrink: 0;
}

.notifications-panel__toolbar-btn--icon svg {
  width: 14px;
  height: 14px;
}

.notifications-panel__toolbar-info {
  display: flex;
  align-items: center;
  padding: 5px 10px;
  color: var(--color-text-secondary);
  font-size: 0.72rem;
}

/* フィルターバー */
.notification-filters {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-bottom: 1px solid var(--color-border);
  flex-shrink: 0;
  flex-wrap: wrap;
}

.notification-filters__select {
  padding: 4px 8px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 5px;
  color: var(--color-text);
  font-size: 0.7rem;
  cursor: pointer;
  max-width: 160px;
  transition: border-color 0.2s ease;
}

.notification-filters__select:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

.notification-filters__sort-btn {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 4px 8px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 5px;
  cursor: pointer;
  color: var(--color-text);
  font-size: 0.7rem;
  transition: all 0.2s ease;
  white-space: nowrap;
}

.notification-filters__sort-btn:hover {
  background: var(--color-surface-alt);
  border-color: var(--color-accent-text);
}

.notification-filters__unread-btn {
  display: flex;
  align-items: center;
  padding: 4px 10px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 5px;
  cursor: pointer;
  color: var(--color-text);
  font-size: 0.7rem;
  white-space: nowrap;
  transition:
    background 0.15s,
    border-color 0.15s;
}

.notification-filters__unread-btn:hover {
  background: var(--color-surface-alt);
  border-color: var(--color-accent-text);
}

.notification-filters__unread-btn--active {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: var(--color-button-text);
}

.notification-filters__unread-btn--active:hover {
  background: var(--color-accent-hover, var(--color-accent));
}

.notification-filters__search {
  display: flex;
  align-items: center;
  gap: 4px;
  flex: 1;
  min-width: 120px;
  padding: 4px 8px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 5px;
  transition: border-color 0.2s ease;
}

.notification-filters__search:focus-within {
  border-color: var(--color-accent-text);
}

.notification-filters__search svg {
  flex-shrink: 0;
  color: var(--color-text-secondary);
}

.notification-filters__search input {
  flex: 1;
  border: none;
  background: transparent;
  color: var(--color-text);
  font-size: 0.7rem;
  outline: none;
  min-width: 0;
}

.notification-filters__search input::placeholder {
  color: var(--color-text-secondary);
}

/* リスト */
.notifications-list {
  display: flex;
  flex-direction: column;
  flex: 1;
  overflow-y: auto;
}

/* 右クリック / 長押しで出す通知操作メニュー */
.notifications-context-menu {
  position: fixed;
  z-index: 2000;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow: var(--shadow-hover);
  padding: 4px 0;
  min-width: 160px;
}

.notifications-context-menu__item {
  display: flex;
  align-items: center;
  min-height: 44px;
  padding: 8px 16px;
  cursor: pointer;
  font-size: 0.85rem;
  color: var(--color-text);
  transition: background 0.15s ease;
}

.notifications-context-menu__item:hover {
  background: var(--color-bg);
}

/* 空状態 */
.notifications-empty {
  padding: 4rem 1.5rem;
  text-align: center;
  color: var(--color-muted);
  font-size: 0.8125rem;
}

.notifications-load-more {
  padding: 1rem;
  text-align: center;
}

/* --- 通知アイテム（Gmail風1行） --- */
.notifications-item {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.625rem 1.25rem;
  border-bottom: 1px solid var(--color-border);
  cursor: default;
  transition: background 0.12s;
  position: relative;
  min-height: 2.5rem;
}

.notifications-item:hover {
  background: var(--color-surface);
}

/* 未読 -- 左線 + 薄いアクセント背景 + クリッカブル */
.notifications-item--unread {
  background: rgba(var(--color-accent-rgb), 0.04);
  cursor: pointer;
}

.notifications-item--unread::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: var(--color-accent);
}

.notifications-item--unread:hover {
  background: rgba(var(--color-accent-rgb), 0.07);
}

/* ソース名（左、固定幅） -- Gmailの差出人に相当 */
.notifications-item__source {
  flex-shrink: 0;
  width: 6rem;
  font-size: 0.8rem;
  color: var(--color-text-secondary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.notifications-item--unread .notifications-item__source {
  font-weight: 500;
  color: var(--color-text);
}

/* コンテンツ（中央、1行でタイトル+本文を繋げる） */
.notifications-item__content {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.8125rem;
  line-height: 1.5;
  color: var(--color-text-secondary);
}

.notifications-item__title {
  font-weight: 400;
  color: var(--color-text);
}

.notifications-item--unread .notifications-item__title {
  font-weight: 600;
}

.notifications-item__body {
  color: var(--color-muted);
}

/* 時間（右端） */
.notifications-item__time {
  flex-shrink: 0;
  font-size: 0.75rem;
  color: var(--color-muted);
  white-space: nowrap;
  min-width: 3.5rem;
  text-align: right;
}

/* 閲覧権限の申請に対する承認 / 却下 (設計 2026-07-25)
   通知一覧の行内で完結させる = メディア画面を開かずに許可できるのが目的。
   行クリック (既読化 + 遷移) と競合しないよう、 ボタン側で stopPropagation する */
.notifications-item__request-actions {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 0.375rem;
  margin-left: 0.5rem;
}

.notifications-item__request-btn {
  padding: 0.125rem 0.5rem;
  font-family: inherit;
  font-size: 0.75rem;
  white-space: nowrap;
  color: var(--color-text-secondary);
  background: transparent;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.12s;
}

.notifications-item__request-btn:hover:not(:disabled) {
  color: var(--color-text);
  border-color: var(--color-text-secondary);
}

.notifications-item__request-btn:disabled {
  opacity: 0.5;
  cursor: default;
}

/* 処理後の結果表示 (ボタンを置き換える) */
.notifications-item__request-result {
  flex-shrink: 0;
  margin-left: 0.5rem;
  font-size: 0.75rem;
  white-space: nowrap;
  color: var(--color-muted);
}

/* アクションボタン群 -- 常時表示 */
.notifications-item__actions {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 0.25rem;
  margin-left: 0.25rem;
}

.notifications-item__action-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border: none;
  background: transparent;
  border-radius: 6px;
  color: var(--color-muted);
  cursor: pointer;
  transition: all 0.12s;
}

.notifications-item__action-btn:hover {
  background: rgba(var(--color-accent-rgb), 0.12);
  color: var(--color-accent);
}

.notifications-item__action-btn svg {
  width: 1rem;
  height: 1rem;
}

/* リンクなしアイテム用スペーサー（レイアウト維持） */
.notifications-item__action-spacer {
  display: inline-block;
  width: 2rem;
  height: 2rem;
}

/* サイドバー通知バッジ */
#notification-badge {
  position: absolute;
  top: 4px;
  right: 4px;
  min-width: 1rem;
  height: 1rem;
  padding: 0 0.25rem;
  font-size: 0.625rem;
  font-weight: 700;
  line-height: 1rem;
  text-align: center;
  border-radius: 999px;
  background: var(--color-accent-strong, #7986cb);
  color: var(--color-button-text);
}

/* サブメニュー内の通知バッジ */
.submenu-badge {
  margin-left: auto;
  background: var(--color-accent-strong, #7986cb);
  color: var(--color-button-text);
  font-size: 0.65rem;
  font-weight: 700;
  padding: 0.05rem 0.35rem;
  border-radius: 999px;
  min-width: 1.1rem;
  text-align: center;
  line-height: 1.3;
}

/* --- 通知コンテンツタブ --- */
.notification-content-tabs {
  display: flex;
  gap: 0;
  border-bottom: 1px solid var(--color-border);
  padding: 0 16px;
}

.notification-content-tab {
  padding: 10px 20px;
  background: none;
  border: none;
  color: var(--color-text-secondary);
  font-size: 0.85rem;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all 0.2s ease;
}

.notification-content-tab:hover {
  color: var(--color-text);
  background: var(--color-surface-alt);
}

.notification-content-tab--active {
  color: var(--color-accent-text);
  border-bottom-color: var(--color-accent-text);
}

/* --- 送信履歴 --- */
.sent-history-item {
  cursor: pointer;
}

.sent-history-item__media-icon {
  flex-shrink: 0;
  opacity: 0.5;
  margin-right: 4px;
}

.sent-history-load-more {
  display: block;
  width: 100%;
  padding: 12px;
  background: none;
  border: none;
  color: var(--color-accent);
  cursor: pointer;
  font-size: 0.85rem;
  text-align: center;
}

.sent-history-load-more:hover {
  background: var(--color-surface-alt);
}

.notifications-loading {
  padding: 4rem 1.5rem;
  text-align: center;
  color: var(--color-muted);
  font-size: 0.8125rem;
}

/* ==========================================
   ダッシュボード改善: グラフ・TOP3・アクティビティ
   ========================================== */

/* 2カラム行 */
.dashboard-row {
  display: flex;
  gap: 16px;
  margin-bottom: 24px;
}

.dashboard-section--flex {
  flex: 1;
  min-width: 0;
}

.dashboard-section__title {
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--color-text);
  margin: 0 0 10px 0;
}

.dashboard-chart {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 12px;
}

/* 棒グラフ */
.mini-bar-chart {
  display: flex;
  align-items: flex-end;
  gap: 6px;
  padding-top: 20px;
}

.mini-bar-chart__col {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  min-width: 0;
}

.mini-bar-chart__bar-area {
  width: 100%;
  max-width: 40px;
  display: flex;
  align-items: flex-end;
}

.mini-bar-chart__bar {
  width: 100%;
  min-height: 2px;
  border-radius: 3px 3px 0 0;
  transition: height 0.3s ease;
}

.mini-bar-chart__value {
  font-size: 0.625rem;
  color: var(--color-muted);
  line-height: 1;
}

.mini-bar-chart__label {
  font-size: 0.6875rem;
  color: var(--color-muted);
  line-height: 1;
}

.mini-chart__empty {
  text-align: center;
  color: var(--color-muted);
  font-size: 0.8125rem;
  padding: 24px 0;
  margin: 0;
}

/* 折れ線グラフ */
.mini-line-chart {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 12px;
}

.mini-line-chart svg {
  width: 100%;
  display: block;
}

.mini-line-chart__line {
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.mini-line-chart__dot {
  transition: r 0.15s ease;
  cursor: default;
}

.mini-line-chart__dot:hover {
  r: 5;
}

.mini-line-chart__grid {
  stroke: var(--color-border);
  stroke-width: 0.5;
  stroke-dasharray: 4 4;
}

.mini-line-chart__x-label {
  fill: var(--color-muted);
  font-size: 6px;
}

.mini-line-chart__y-label {
  fill: var(--color-muted);
  font-size: 5px;
  text-anchor: start;
}

/* プログレスバー */
.mini-progress {
  height: 6px;
  background: rgba(255, 255, 255, 0.06);
  border-radius: 3px;
  overflow: hidden;
}

.mini-progress__bar {
  height: 100%;
  border-radius: 3px;
  transition: width 0.3s ease;
}

/* TOP3チャットリスト */
.top-chats-list {
  list-style: none;
  padding: 0;
  margin: 0;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  overflow: hidden;
}

.top-chats-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  cursor: pointer;
  transition: background 0.15s ease;
  border-bottom: 1px solid var(--color-border);
}

.top-chats-item:last-child {
  border-bottom: none;
}

.top-chats-item:hover {
  background: var(--color-surface-alt);
}

.top-chats-item--empty {
  cursor: default;
  color: var(--color-muted);
  font-size: 0.8125rem;
  justify-content: center;
  padding: 24px 12px;
}

.top-chats-item--empty:hover {
  background: transparent;
}

.top-chats-item__rank {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.6875rem;
  font-weight: 600;
  color: var(--color-accent-text);
  background: rgba(255, 255, 255, 0.06);
  border-radius: 4px;
  flex-shrink: 0;
}

.top-chats-item__title {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.8125rem;
  color: var(--color-text);
}

.top-chats-item__count {
  font-size: 0.6875rem;
  color: var(--color-muted);
  flex-shrink: 0;
}

/* アクティビティフィード（ダッシュボード・過去ログ共通） */
.activity-item {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 8px;
  margin: 0;
  border-radius: 6px;
  transition: background 0.15s ease;
}

.activity-item:hover {
  background: var(--color-surface-alt);
}

.activity-item--mention {
  background: rgba(68, 136, 255, 0.06);
}

.activity-item__icon {
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  color: var(--color-muted);
  margin-top: 1px;
}

.activity-item__icon svg {
  display: block;
}

.activity-item--mention .activity-item__icon {
  color: #4488ff;
}

.activity-item__body {
  flex: 1;
  min-width: 0;
}

.activity-item__description {
  font-size: 0.8125rem;
  color: var(--color-text);
  line-height: 1.4;
}

.activity-item__time {
  font-size: 0.6875rem;
  color: var(--color-muted);
  margin-top: 2px;
}

/* 導線リンク（ダッシュボード → アナリティクス） */
.admin-analytics-link {
  margin-top: 12px;
  text-align: right;
}

.dashboard-text-link {
  color: var(--color-accent-text);
  font-size: 0.8125rem;
  text-decoration: none;
  opacity: 0.8;
  transition: opacity 0.15s ease;
}

.dashboard-text-link:hover {
  opacity: 1;
  text-decoration: underline;
}

/* ひとこと分析 */
.dashboard-insights-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 12px 16px;
}

.dashboard-insight-item {
  margin: 0;
  padding: 4px 0;
  font-size: 0.8125rem;
  color: var(--color-muted);
  line-height: 1.5;
}

.dashboard-insight-item + .dashboard-insight-item {
  border-top: 1px solid var(--color-border);
  margin-top: 4px;
  padding-top: 8px;
}

/* レスポンシブ: 狭い画面では縦並び */
@media (max-width: 600px) {
  .dashboard-row {
    flex-direction: column;
  }
}

/* ==========================================
   アナリティクス改善: グラフ・ランキング・前週比
   ========================================== */

.analytics-section {
  margin-bottom: 24px;
}

.analytics-section__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}

.analytics-section__header .admin-subtitle {
  margin-bottom: 0;
}

/* 期間切替ボタン */
.analytics-period-toggle {
  display: flex;
  gap: 4px;
}

.analytics-period-btn {
  padding: 4px 12px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-surface);
  color: var(--color-muted);
  font-size: 0.75rem;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.15s ease;
}

.analytics-period-btn:hover {
  border-color: var(--color-accent-text);
  color: var(--color-text);
}

.analytics-period-btn--active {
  background: var(--color-accent);
  color: var(--color-button-text);
  border-color: var(--color-accent);
}

/* 前週比表示 */
.stat-card-change {
  font-size: 0.6875rem;
  font-weight: 500;
  margin-top: 4px;
  color: var(--color-muted);
}

.stat-card-change--up {
  color: var(--color-success, #4caf50);
}

.stat-card-change--down {
  color: var(--color-error, #f44336);
}

/* ============================================
   AI使用状況ダッシュボード
   ============================================ */
.ai-usage-header-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.ai-usage-table-wrapper {
  overflow-x: auto;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface);
}

.ai-usage-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
}

.ai-usage-table thead {
  background: var(--color-surface-alt);
}

.ai-usage-table th {
  text-align: left;
  padding: 10px 12px;
  font-weight: 600;
  color: var(--color-muted);
  border-bottom: 1px solid var(--color-border);
  white-space: nowrap;
}

.ai-usage-table th.ai-usage-num,
.ai-usage-table td.ai-usage-num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.ai-usage-table td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--color-border);
  color: var(--color-text);
}

.ai-usage-table tbody tr:last-child td {
  border-bottom: none;
}

.ai-usage-table tbody tr:hover {
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.05);
}

.ai-usage-empty {
  text-align: center !important;
  color: var(--color-muted) !important;
  padding: 24px 12px !important;
}

.ai-usage-error {
  color: var(--color-status-error);
  font-weight: 600;
}

.ai-usage-note {
  margin-top: 16px;
  padding: 10px 14px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.04);
  font-size: 0.8125rem;
  color: var(--color-text-secondary);
  line-height: 1.6;
}

.ai-usage-note code {
  background: var(--color-code-bg);
  color: var(--color-code-text);
  padding: 1px 6px;
  border-radius: 3px;
  font-size: 0.8125rem;
}

/* チャットランキング */
.analytics-ranking {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  overflow: hidden;
}

.analytics-ranking__item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--color-border);
}

.analytics-ranking__item:last-child {
  border-bottom: none;
}

.analytics-ranking__rank {
  width: 22px;
  height: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.6875rem;
  font-weight: 600;
  color: var(--color-accent-text);
  background: rgba(255, 255, 255, 0.06);
  border-radius: 4px;
  flex-shrink: 0;
}

.analytics-ranking__info {
  flex: 1;
  min-width: 0;
}

.analytics-ranking__title {
  font-size: 0.8125rem;
  color: var(--color-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  margin-bottom: 4px;
}

.analytics-ranking__bar {
  width: 100%;
}

.analytics-ranking__count {
  font-size: 0.6875rem;
  color: var(--color-muted);
  flex-shrink: 0;
}

/* ==========================================
   まとめ読み SidePanel
   ========================================== */
.catchup-toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  padding: 8px 16px;
  border-bottom: 1px solid var(--color-border);
}

/* 絞り込みタブ (すべて / 自分宛) は左、操作ボタンは右のまま */
.catchup-toolbar .fab-panel-filter-tabs {
  margin-right: auto;
}

.catchup-item {
  padding: 12px 16px;
  border-bottom: 1px solid var(--color-border);
  cursor: pointer;
  transition:
    background 0.15s,
    opacity 0.3s;
}

.catchup-item:hover {
  background: var(--color-surface-alt);
}

.catchup-item--removing {
  opacity: 0;
  pointer-events: none;
}

.catchup-item__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 4px;
}

.catchup-item__title {
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--color-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
  min-width: 0;
}

.catchup-item__badge {
  flex-shrink: 0;
  margin-left: 8px;
  padding: 1px 7px;
  border-radius: 10px;
  font-size: 0.6875rem;
  font-weight: 600;
  background: var(--color-muted);
  color: var(--color-button-text);
}

.catchup-item__badge--blue {
  background: #4488ff;
}

.catchup-item__badge--red {
  background: #ff4444;
}

.catchup-item__badge--purple {
  background: #aa44ff;
}

.catchup-item__preview {
  font-size: 0.75rem;
  color: var(--color-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  margin-bottom: 2px;
}

.catchup-item__from {
  font-weight: 500;
  color: var(--color-text-secondary);
  margin-right: 4px;
}

.catchup-item__meta {
  margin-bottom: 6px;
}

.catchup-item__time {
  font-size: 0.6875rem;
  color: var(--color-muted);
}

.catchup-item__actions {
  display: flex;
  gap: 6px;
  justify-content: flex-end;
}

.catchup-item__btn {
  padding: 3px 10px;
  border-radius: 4px;
  font-size: 0.6875rem;
  font-weight: 500;
  cursor: pointer;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-text);
  transition: all 0.15s;
}

.catchup-item__btn:hover {
  background: var(--color-surface-alt);
}

/* 話ごとのまとめ (カードの中に出す。色で意味を作らず、件数と文字で区別する) */
.catchup-topics {
  margin-top: 8px;
  padding: 6px 10px 2px;
  /* カードの一部だと分かるよう、少し内側に寄せて地の色を変える。
     寄せないと話題の見出しがチャンネル名と同じ位置に並び、別のチャンネルに見える */
  border-top: 1px solid var(--color-border);
  border-radius: 0 0 6px 6px;
  background: var(--color-bg);
}

.catchup-topics__note {
  padding: 4px 0;
  font-size: 0.6875rem;
  color: var(--color-muted);
}

.catchup-topic {
  padding: 6px 0;
  border-bottom: 1px solid var(--color-border);
  cursor: pointer;
}

.catchup-topic:last-child {
  border-bottom: none;
}

.catchup-topic:hover .catchup-topic__title {
  text-decoration: underline;
}

.catchup-topic:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: -2px;
}

.catchup-topic__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.catchup-topic__title {
  flex: 1;
  min-width: 0;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.catchup-topic__count {
  flex-shrink: 0;
  font-size: 0.6875rem;
  color: var(--color-muted);
}

.catchup-topic__gist {
  font-size: 0.6875rem;
  color: var(--color-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* 既読ログ (読んだのはこれ、の振り返り) */
.catchup-log {
  border-top: 1px solid var(--color-border);
  margin-top: 8px;
}

.catchup-log__title {
  padding: 10px 16px 4px;
  font-size: 0.6875rem;
  font-weight: 600;
  color: var(--color-muted);
}

.catchup-item--log {
  opacity: 0.75;
}

.catchup-item--log:hover {
  opacity: 1;
}

.catchup-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 4rem 1.5rem;
  color: var(--color-muted);
  gap: 12px;
}

.catchup-empty p {
  font-size: 0.8125rem;
  margin: 0;
}

.catchup-loading {
  padding: 4rem 1.5rem;
  text-align: center;
  color: var(--color-muted);
  font-size: 0.8125rem;
}

.catchup-action-badge {
  margin-left: 4px;
  padding: 1px 5px;
  border-radius: 8px;
  font-size: 0.625rem;
  font-weight: 600;
  background: var(--color-accent);
  color: var(--color-button-text);
}

/* ==============================================
   アナリティクス統計テキスト
   ============================================== */

.analytics-stat-title {
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-text);
  margin-top: 8px;
}

.analytics-stat-sub {
  font-size: 0.85rem;
  color: var(--color-muted);
  margin-top: 4px;
}

/* ==============================================
   ローディングプレースホルダー
   ============================================== */

.loading-placeholder {
  padding: 40px;
  text-align: center;
}

.loading-text {
  margin-top: 12px;
  color: var(--color-muted);
}

.loading-text--center {
  color: var(--color-muted);
  padding: 20px;
  text-align: center;
}

/* ==============================================
   チャットフィルター無効状態
   ============================================== */

.chat-filter-disabled {
  color: var(--color-muted);
  font-style: italic;
  pointer-events: none;
}

/* .sidebar-sub__action-btn 系は 2026-08-12 に削除した (v2 の実験台)。
   共通部品を使う -- コアの HTML は chub-btn を直書き、 プラグインは window.buttonHtml。
   **プラグイン 5 種 (task-manager / meeting-room / rotary-club / analytics-report /
   external-monitor) がこの CSS クラスを直接借りていた**のを、 窓口経由に寄せた。
   svg の直書きも共通アイコン (getIcon) の名前指定になっている。 */

/* サイドバーの見出しの中で右端に寄せるための**置き場**。 中身は配置だけで、
   見た目 (色 / 大きさ / hover) は共通部品が持つ (2026-08-13 に移行)。
   名前に btn を入れないのは、 **中身が配置だけでもデザイン検査が
   「ボタンの見た目クラスの新設」 として止める**ため -- 名前で役割を分けておく。
   hover の膨らみ (scale) は、 送信ボタンと同じラケ判断
   「膨らみは無くして色の変化だけで伝える」 に合わせて捨てた */
.chat-new-slot {
  margin-left: auto;
  flex-shrink: 0;
}


/* ==== css/components/plugins.css ==== */
/* ========================================
   プラグイン管理
   ======================================== */

.plugin-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 20px;
  margin-bottom: 16px;
  transition: all 0.2s ease;
}

.plugin-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  border-color: var(--color-primary);
}

.plugin-card__header {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 12px;
}

.plugin-card__icon {
  font-size: 2.5rem;
  flex-shrink: 0;
  width: 50px;
  height: 50px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-bg);
  border-radius: 8px;
}

.plugin-card__info {
  flex: 1;
  min-width: 0;
}

.plugin-card__name {
  margin: 0 0 8px 0;
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--color-text);
}

.plugin-card__description {
  margin: 0;
  font-size: 0.9rem;
  color: var(--color-muted);
  line-height: 1.5;
}

.plugin-card__status {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
  flex-shrink: 0;
}

.plugin-card__meta {
  display: flex;
  gap: 16px;
  font-size: 0.85rem;
  color: var(--color-muted);
  padding-top: 12px;
  border-top: 1px solid var(--color-border);
}

.plugin-meta-item {
  display: flex;
  align-items: center;
  gap: 4px;
}

/* プラグイントグルスイッチ */
.plugin-toggle {
  position: relative;
  display: inline-block;
  width: 48px;
  height: 26px;
}

.plugin-toggle__input {
  opacity: 0;
  width: 0;
  height: 0;
}

.plugin-toggle__slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: var(--color-border);
  transition: 0.3s;
  border-radius: 26px;
}

.plugin-toggle__slider:before {
  position: absolute;
  content: '';
  height: 18px;
  width: 18px;
  left: 4px;
  bottom: 4px;
  background-color: var(--color-button-text);
  transition: 0.3s;
  border-radius: 50%;
}

.plugin-toggle__input:checked + .plugin-toggle__slider {
  background-color: var(--color-accent-text);
}

.plugin-toggle__input:checked + .plugin-toggle__slider:before {
  transform: translateX(22px);
}

.plugin-toggle__input:disabled + .plugin-toggle__slider {
  opacity: 0.5;
  cursor: not-allowed;
}

/* プラグインステータスバッジ */
.plugin-status-badge {
  padding: 4px 12px;
  border-radius: 12px;
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.plugin-status-badge--enabled {
  background: rgba(76, 175, 80, 0.1);
  color: #4caf50;
}

.plugin-status-badge--disabled {
  background: rgba(158, 158, 158, 0.1);
  color: #9e9e9e;
}

/* レスポンシブ対応 */

/* ドラッグ&ドロップスタイル */
.sidebar__menu-item {
  transition: opacity 0.15s ease;
  position: relative;
}

.sidebar__menu-item.dragging {
  opacity: 0.3;
  cursor: grabbing;
}

.sidebar__menu-item.drag-over::before {
  content: '';
  position: absolute;
  top: -2px;
  left: 8px;
  right: 8px;
  height: 2px;
  background: rgba(100, 150, 255, 0.9);
  border-radius: 1px;
}

.sidebar__menu-item.drag-over-bottom::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 8px;
  right: 8px;
  height: 2px;
  background: rgba(100, 150, 255, 0.9);
  border-radius: 1px;
}

.chat-section-container.drag-over-section {
  outline: 2px dashed rgba(100, 150, 255, 0.6);
  outline-offset: -2px;
  border-radius: 4px;
  min-height: 24px;
}

.sidebar__menu-item[draggable='true'] {
  cursor: grab;
}

.sidebar__menu-item[draggable='true']:active {
  cursor: grabbing;
}

/* チャット検索スタイル */
.chat-search-bar {
  padding: 12px 10px 2px;
  margin-bottom: 6px;
}

input[type='text'].chat-search-input {
  width: 100%;
  padding: 6px 8px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 4px;
  color: var(--color-text);
  font-size: 0.8rem;
  box-sizing: border-box;
  transition: border-color 0.15s ease;
}

input[type='text'].chat-search-input:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

input[type='text'].chat-search-input::placeholder {
  color: var(--color-muted);
  opacity: 0.6;
}

/* アーカイブセクションスタイル */
.archive-header {
  margin-top: 12px;
  border-top: 1px solid var(--color-border);
  padding-top: 8px;
}

.archive-toggle {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  background: transparent;
  border: none;
  color: var(--color-muted);
  font-size: 0.75rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  cursor: pointer;
  transition: all 0.2s ease;
  border-radius: 4px;
}

.archive-toggle:hover {
  background: var(--color-surface-alt);
  color: var(--color-text);
}

.archive-toggle-icon {
  width: 12px;
  height: 12px;
  transition: transform 0.2s ease;
}

.archive-toggle.collapsed .archive-toggle-icon {
  transform: rotate(0deg);
}

.archive-toggle:not(.collapsed) .archive-toggle-icon {
  transform: rotate(90deg);
}

.archive-chats-container,
.chat-section-container {
  overflow: hidden;
  max-height: 500px;
  transition:
    max-height 0.3s ease,
    opacity 0.2s ease;
  opacity: 1;
}

.archive-chats-container.collapsed,
.chat-section-container.collapsed {
  max-height: 0;
  opacity: 0;
}

.archived-chat {
  opacity: 0.7;
}

.archived-chat .sidebar__menu-link {
  color: var(--color-muted);
}

.archived-chat:hover {
  opacity: 1;
}

.archived-chat .sidebar__menu-link:hover {
  color: var(--color-text);
}

/* Empty state message */
.empty-state-message {
  color: var(--color-muted);
  font-size: 0.9rem;
  margin: 0;
  padding: 20px;
  text-align: center;
  grid-column: 1/-1;
}

/* Compact empty state (no padding) */
.empty-state-message--compact {
  padding: 0;
}

/* Error message */
.error-message {
  color: var(--color-error);
  padding: 20px;
  text-align: center;
  margin: 0;
}

/* Inline validation error (for forms and modals) */
.inline-validation-error {
  margin: 1rem 0 0 0;
  padding: 0.75rem 1rem;
  background: rgba(var(--color-status-error-rgb), 0.1);
  border: 1px solid rgba(var(--color-status-error-rgb), 0.5);
  border-radius: 4px;
  font-size: 0.9rem;
  color: var(--color-text);
  line-height: 1.5;
}

/* Form controls */
.form-control {
  width: 100%;
  padding: 8px 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.9rem;
}

.form-control:focus {
  outline: none;
  border-color: var(--color-primary);
}

/* Checkbox label with flex layout */
.checkbox-label {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  cursor: pointer;
}

/* Hidden utility class */
.hidden {
  display: none;
}

/* Username suggestion disabled state */
.username-suggestion-item--disabled {
  opacity: 0.6;
  cursor: default;
}

/* Username suggestion secondary text */
.username-suggestion-secondary {
  opacity: 0.6;
  font-size: 0.85em;
}

/* Large empty state (more padding) */
.empty-state-message--large {
  padding: 40px;
}

/* Vertical padding only */
.empty-state-message--vertical {
  padding: 40px 0;
}

/* Cursor pointer utility */
.cursor-pointer {
  cursor: pointer;
}

/* Form control large variant */
.form-control--large {
  padding: 12px;
  border-radius: 8px;
  font-size: 1rem;
}

/* Form group */
.form-group {
  margin-bottom: 16px;
}

/* Form label */
.form-label {
  display: block;
  margin-bottom: 4px;
  font-weight: 600;
}

/* Description text */
.description-text {
  margin-bottom: 16px;
  color: var(--color-muted);
}

/* Text alignment utilities */
.text-left {
  text-align: left;
}

/* Textarea specific styling */
textarea.form-control,
textarea.form-control--large {
  resize: vertical;
}

/* Stats grid layout */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 16px;
}

/* Stat card */
.stat-card {
  padding: 16px;
  background: var(--color-bg);
  border-radius: 8px;
  border: 1px solid var(--color-border);
}

.stat-card__label {
  font-size: 0.8rem;
  color: var(--color-muted);
  margin-bottom: 4px;
}

.stat-card__value {
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-text);
}

/* Activity item extensions */
.activity-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid var(--color-border);
}

.activity-item__content {
  flex: 1;
  min-width: 0;
  padding-right: 16px;
}

.activity-item__description {
  font-size: 0.9rem;
  color: var(--color-text);
  line-height: 1.5;
  overflow: hidden;
  text-overflow: ellipsis;
}

.activity-item__timestamp {
  flex-shrink: 0;
  font-size: 0.85rem;
  color: var(--color-text-secondary);
  white-space: nowrap;
}

/* Table message */
.table-message {
  padding: 24px;
  text-align: center;
  color: var(--color-muted);
}

.table-message--large {
  padding: 32px;
}

.table-message--error {
  color: var(--color-status-off);
}

/* Badge */
.badge {
  padding: 4px 8px;
  background: var(--color-bg);
  border-radius: 4px;
  font-size: 0.85rem;
}

/* Utility classes */
.text-secondary {
  color: var(--color-text-secondary);
}

.font-medium {
  font-weight: 500;
}

/* Error message compact variant */
.error-message--compact {
  padding: 0;
}

/* Plugin card actions */
.plugin-card__actions {
  display: flex;
  gap: 8px;
  padding-top: 12px;
  border-top: 1px solid var(--color-border);
  margin-top: 12px;
}

/* .plugin-settings-btn / .plugin-uninstall-btn は 2026-08-12 に v2 の部品へ移行 (プラグイン管理の設定/アンインストール)。
   配線は data 属性 / id で持つ (共通部品は class を受け取らない)。
   アンインストールのボタン自体は 2026-09-02 に撤去済 (client_capability_scoping の A2)。 */


/* ==== css/components/admin.css ==== */
/* ========================================
   Settings View Styles
   ======================================== */

/* Settings tabs container */
.settings-tabs-wrapper {
  background: transparent;
  border-radius: 0;
  overflow: hidden;
}

.settings-tabs {
  display: flex;
  gap: 0;
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 32px;
}

/* Settings tab button */
.settings-tab {
  flex: 1;
  padding: 16px 24px;
  background: transparent;
  color: var(--color-muted);
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  font-size: 0.9rem;
  font-weight: 500;
  transition: all 0.2s ease;
}

.settings-tab--active {
  color: var(--color-accent-text);
  border-bottom-color: var(--color-accent-text);
}

/* Settings tab content container */
.settings-tab-content {
  padding: 0;
}

/* Settings main container */
.settings-container {
  max-width: 600px;
  margin: 0 auto;
  display: grid;
  gap: 32px;
}

.settings-container--wide {
  gap: 40px;
}

/* Settings typography */
.settings-heading {
  margin: 0 0 16px 0;
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-text);
}

.settings-heading--small {
  font-size: 0.85rem;
  font-weight: 500;
}

.settings-description {
  margin: 0 0 20px 0;
  font-size: 0.85rem;
  color: var(--color-muted);
  line-height: 1.6;
}

.settings-description--small {
  font-size: 0.75rem;
  margin: 0 0 16px 0;
  line-height: 1.5;
}

/* Settings alert boxes */
.settings-alert {
  padding: 16px;
  border-radius: 8px;
  font-size: 0.85rem;
  color: var(--color-text);
}

.settings-alert--warn {
  background: var(--color-status-warn-bg, #fff3cd);
  border: 1px solid var(--color-status-warn, #ffc107);
}

.settings-alert--error {
  border: 1px solid var(--color-status-error, #dc3545);
}

/* Settings form control container */
.settings-control {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
}

.settings-control__label {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--color-text);
}

.settings-control__sublabel {
  font-size: 0.75rem;
  color: var(--color-muted);
  margin-top: 4px;
}

/* Settings form labels */
.settings-form-label {
  display: block;
  margin-bottom: 12px;
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--color-text);
}

.settings-form-label--small {
  font-size: 0.8rem;
  margin-bottom: 8px;
}

/* Settings text input */
.settings-input {
  width: 100%;
  padding: 12px 16px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.95rem;
  transition: all 0.2s ease;
}

/* Settings grid layouts */
.settings-grid-2 {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}

.settings-grid-2--small-gap {
  gap: 12px;
}

/* Settings buttons */
.settings-btn {
  padding: 12px 32px;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  font-size: 0.9rem;
  font-weight: 500;
  transition: all 0.2s ease;
}

.settings-btn--primary {
  background: var(--color-accent-bg);
  color: white;
}

.settings-btn--primary-full {
  width: 100%;
  padding: 14px;
  font-size: 0.95rem;
}

.settings-btn--secondary {
  width: 100%;
  padding: 12px;
  background: var(--color-surface);
  color: var(--color-text);
  border: 1px solid var(--color-border);
}

.settings-btn--transparent {
  padding: 4px 0;
  background: none;
  border: none;
  color: var(--color-accent-text);
  cursor: pointer;
  font-size: 0.9rem;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

/* Settings image preview */
.settings-image-preview {
  position: relative;
  min-height: 100px;
  padding: 20px;
  border: 1px dashed var(--color-border);
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.2s ease;
}

.settings-image-preview--small {
  min-height: 80px;
}

.settings-image-preview--light {
  background: #fefefe;
}

.settings-image-preview--dark {
  background: #22252d;
}

.settings-image-preview--theme {
  background: var(--color-bg);
}

.settings-image-preview__text {
  font-size: 0.85rem;
  color: var(--color-muted);
}

.settings-image-preview__text--dark {
  color: #999;
}

.settings-image-preview__clear {
  display: none;
  position: absolute;
  top: 8px;
  right: 8px;
  width: 24px;
  height: 24px;
  padding: 0;
  background: var(--color-surface);
  color: var(--color-muted);
  border: 1px solid var(--color-border);
  border-radius: 50%;
  cursor: pointer;
  font-size: 0.875rem;
  line-height: 1;
  transition: all 0.2s ease;
  z-index: 10;
}

/* Settings footer actions */
.settings-footer-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 16px;
  border-top: 1px solid var(--color-border);
}

/* Settings theme button */
.settings-theme-btn {
  padding: 16px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface-alt);
  color: var(--color-text);
  cursor: pointer;
  transition: all 0.2s ease;
  font-size: 0.85rem;
  font-weight: 400;
}

.settings-theme-btn:hover {
  border-color: var(--color-accent);
  background: var(--color-surface-hover, rgba(0, 0, 0, 0.03));
}

.settings-theme-btn--active {
  border: 2px solid var(--color-accent);
  background: var(--color-accent);
  color: white;
  font-weight: 600;
}

.settings-theme-btn--active:hover {
  opacity: 0.9;
}

/* Settings divider section */
.settings-divider-section {
  padding-top: 16px;
  border-top: 1px solid var(--color-border);
}

/* Settings utility classes */
.settings-mt-12 {
  margin-top: 12px;
}

/* ========================================
   Reaction Icons Settings
   ======================================== */

/* Reaction icons grid - 8x4 layout */
.reaction-icons-grid {
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  gap: 8px;
}

/* Individual reaction icon item */
.reaction-icon-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 12px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
  transition: all 0.2s ease;
}

.reaction-icon-item--disabled {
  opacity: 0.4;
}

.reaction-icon-item:hover {
  border-color: var(--color-accent);
}

/* Reaction icon preview */
.reaction-icon-preview {
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.reaction-icon-preview svg {
  width: 100%;
  height: 100%;
}

/* Reaction icon label */
.reaction-icon-label {
  font-size: 0.7rem;
  color: var(--color-text);
  text-align: center;
  min-height: 2em;
  display: flex;
  align-items: center;
}

/* Toggle switch small variant */
.toggle-switch--small {
  transform: scale(0.8);
}

/* Responsive: 4 columns on medium screens */
@media (max-width: 1024px) {
  .reaction-icons-grid {
    grid-template-columns: repeat(4, 1fr);
  }
}

/* Responsive: 3 columns on small screens */
@media (max-width: 768px) {
  .reaction-icons-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
  }

  .reaction-icon-item {
    padding: 8px;
  }
}

/* Reaction Icon Card Styles */
.reaction-icon-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 8px 4px;
  border: 2px solid var(--color-border);
  border-radius: 12px;
  background: var(--color-surface);
  cursor: pointer;
  transition: all 0.2s ease;
  opacity: 0.5;
}

.reaction-icon-card--enabled {
  opacity: 1;
  border-color: var(--color-accent);
  background: var(--color-surface-alt);
}

.reaction-icon-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.reaction-icon-card--dragging {
  opacity: 0.5;
  cursor: grabbing;
}

.reaction-icon-card__content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}

.reaction-icon-card__icon {
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.reaction-icon-card__icon svg {
  width: 100%;
  height: 100%;
}

.reaction-icon-card__icon img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.reaction-icon-card__label {
  font-size: 0.75rem;
  color: var(--color-text);
  text-align: center;
  font-weight: 500;
  max-width: 54px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Delete button for custom icons */
.reaction-icon-card__delete {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--color-danger-fill, #dc2626);
  color: white;
  border: none;
  font-size: 0.875rem;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.2s ease;
  z-index: 2;
}

.reaction-icon-card--custom:hover .reaction-icon-card__delete {
  opacity: 1;
}

.reaction-icon-card__delete:hover {
  background: var(--color-danger-fill-hover, #b91c1c);
  transform: scale(1.1);
}

/* Add button styling */
.reaction-icon-card--add {
  border: 2px dashed var(--color-border);
  background: transparent;
  opacity: 0.6;
}

.reaction-icon-card--add:hover {
  opacity: 1;
  border-color: var(--color-accent);
  background: var(--color-surface-alt);
}

.reaction-icon-card--add .reaction-icon-card__icon {
  color: var(--color-text-secondary);
}

.reaction-icon-card--add:hover .reaction-icon-card__icon {
  color: var(--color-accent);
}

/* Make add button non-draggable */
.reaction-icon-card--add {
  cursor: pointer;
}

.reaction-icon-card--add[draggable='true'] {
  cursor: pointer;
}

/* Shake animation for limit reached */
@keyframes shake {
  0%,
  100% {
    transform: translateX(0);
  }
  10%,
  30%,
  50%,
  70%,
  90% {
    transform: translateX(-4px);
  }
  20%,
  40%,
  60%,
  80% {
    transform: translateX(4px);
  }
}

.reaction-icon-card--shake {
  animation: shake 0.5s ease-in-out;
  border-color: var(--color-warning, #f59e0b) !important;
}

/* --- メニュー設定（サイドバーカスタマイズ） --- */

.settings-sidebar-list {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.settings-sidebar-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 12px;
  border-radius: 8px;
  background: var(--color-surface);
  border: 1px solid transparent;
  transition:
    background 0.15s ease,
    border-color 0.15s ease;
  cursor: default;
  user-select: none;
}

.settings-sidebar-item:hover {
  background: var(--color-surface-alt);
}

.settings-sidebar-item.dragging {
  opacity: 0.3;
  background: var(--color-surface-alt);
  border: 1px dashed var(--color-border);
}

.settings-sidebar-item.drag-over {
  position: relative;
  margin-top: 6px;
}

.settings-sidebar-item.drag-over::before {
  content: '';
  position: absolute;
  top: -5px;
  left: 8px;
  right: 8px;
  height: 3px;
  background: var(--color-accent);
  border-radius: 2px;
}

.settings-sidebar-item.drag-over-bottom {
  position: relative;
  margin-bottom: 6px;
}

.settings-sidebar-item.drag-over-bottom::after {
  content: '';
  position: absolute;
  bottom: -5px;
  left: 8px;
  right: 8px;
  height: 3px;
  background: var(--color-accent);
  border-radius: 2px;
}

.settings-sidebar-item--clone {
  background: var(--color-surface-alt);
  border: 1px solid var(--color-accent);
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.settings-sidebar-handle {
  cursor: grab;
  color: var(--color-muted);
  display: flex;
  align-items: center;
  padding: 2px;
  flex-shrink: 0;
}

.settings-sidebar-handle:active {
  cursor: grabbing;
}

.settings-sidebar-icon {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  color: var(--color-muted);
}

.settings-sidebar-label {
  flex: 1;
  font-size: 0.875rem;
  color: var(--color-text);
}

.settings-sidebar-toggle-area {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
  flex-shrink: 0;
}

.settings-sidebar-required {
  font-size: 0.7rem;
  color: var(--color-muted);
  white-space: nowrap;
}

/* トグルスイッチ（attendance-managerパターン踏襲） */
.settings-sidebar-toggle {
  display: flex;
  align-items: center;
  cursor: pointer;
  user-select: none;
}

.settings-sidebar-toggle input[type='checkbox'] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.settings-sidebar-toggle-switch {
  position: relative;
  display: inline-block;
  width: 36px;
  height: 20px;
  background: var(--color-surface-alt, #2b2d36);
  border: 1px solid var(--color-border, #2f3138);
  border-radius: 10px;
  transition:
    background 0.2s,
    border-color 0.2s;
  flex-shrink: 0;
}

.settings-sidebar-toggle-switch::after {
  content: '';
  position: absolute;
  top: 2px;
  left: 2px;
  width: 14px;
  height: 14px;
  background: var(--color-muted, #afb3c5);
  border-radius: 50%;
  transition:
    transform 0.2s,
    background 0.2s;
}

.settings-sidebar-toggle input:checked + .settings-sidebar-toggle-switch {
  background: rgba(109, 180, 155, 0.2);
  border-color: var(--color-status-ok, #6db49b);
}

.settings-sidebar-toggle input:checked + .settings-sidebar-toggle-switch::after {
  transform: translateX(16px);
  background: var(--color-status-ok, #6db49b);
}

.settings-sidebar-toggle input:disabled + .settings-sidebar-toggle-switch {
  opacity: 0.5;
  cursor: not-allowed;
}

.settings-sidebar-toggle input:focus-visible + .settings-sidebar-toggle-switch {
  outline: 2px solid var(--color-accent, #7282bb);
  outline-offset: 2px;
}

/* Color presets (デザインパターン / スキン) */
.color-preset-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 12px;
}

.color-preset-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
}

.color-preset-card__info {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

.color-preset-card__swatches {
  display: flex;
  flex-shrink: 0;
}

.color-preset-swatch {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 1px solid var(--color-border);
}

.color-preset-swatch + .color-preset-swatch {
  margin-left: -5px;
}

.color-preset-card__name {
  font-size: 0.9rem;
  color: var(--color-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.color-preset-card__badge {
  font-size: 0.7rem;
  color: var(--color-text-secondary);
  background: var(--color-surface-alt);
  border-radius: 4px;
  padding: 2px 6px;
  flex-shrink: 0;
}

.color-preset-card__actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}

.color-preset-btn {
  padding: 6px 12px;
  font-size: 0.78rem;
  background: var(--color-surface-alt);
  color: var(--color-text);
  border: 1px solid var(--color-border);
}

.color-preset-btn.settings-btn--primary {
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  border-color: transparent;
}

.color-preset-empty {
  margin: 0;
}

@media (max-width: 600px) {
  .color-preset-card {
    flex-direction: column;
    align-items: stretch;
  }

  .color-preset-card__actions {
    justify-content: flex-end;
  }
}

/* ============================================
   AIツール公開設定 (MCP 公開ツール許可リスト)
   ============================================ */

.mcp-tools-header-actions {
  display: flex;
  gap: 8px;
  align-items: center;
}

.mcp-tools-lead {
  margin: 0 0 16px;
  color: var(--color-text-secondary, #6b7280);
  font-size: 0.88rem;
  line-height: 1.7;
  max-width: 68ch;
}

.mcp-tools-status {
  padding: 10px 14px;
  margin-bottom: 20px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface-alt);
  font-size: 0.85rem;
  line-height: 1.6;
}

/* 警告は色だけに頼らず、 文言そのものが状態を説明する (色覚差への配慮) */
.mcp-tools-status--warning {
  border-color: var(--color-warning, #f59e0b);
  background: var(--color-warning-bg, rgba(245, 158, 11, 0.12));
}

.mcp-tool-group {
  margin-bottom: 24px;
}

.mcp-tool-group-title {
  margin: 0 0 10px;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--color-text);
}

.mcp-tool-items {
  list-style: none;
  margin: 0;
  padding: 0;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  overflow: hidden;
}

.mcp-tool-item + .mcp-tool-item {
  border-top: 1px solid var(--color-border);
}

.mcp-tool-label {
  display: flex;
  /* ui.css が label 全体に flex-direction: column を当てているため明示的に戻す */
  flex-direction: row;
  align-items: flex-start;
  gap: 12px;
  /* タッチ標的を 44px 以上に保つための最小高さ + 余白 */
  min-height: 44px;
  padding: 12px 14px;
  cursor: pointer;
}

.mcp-tool-label:hover {
  background: var(--color-surface-alt);
}

.mcp-tool-checkbox {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  flex-shrink: 0;
  cursor: pointer;
}

.mcp-tool-checkbox:disabled {
  cursor: not-allowed;
}

/* 行全体がラベルなので、 チェックできない状態では行のカーソルも変える
   (pointer のままだと押せそうに見える) */
.mcp-tool-label:has(.mcp-tool-checkbox:disabled) {
  cursor: not-allowed;
}

.mcp-tool-label:has(.mcp-tool-checkbox:disabled):hover {
  background: transparent;
}

.mcp-tool-checkbox:disabled + .mcp-tool-text {
  opacity: 0.65;
}

.mcp-tool-text {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}

.mcp-tool-name {
  font-size: 0.88rem;
  color: var(--color-text);
  line-height: 1.5;
}

.mcp-tool-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 14px;
  font-size: 0.75rem;
  color: var(--color-text-secondary, #6b7280);
}

/* 内部のツール名は長いので折り返しを許す。 種別ラベルは折らない */
.mcp-tool-kind {
  white-space: nowrap;
}

.mcp-tool-id {
  word-break: break-all;
}

.mcp-tools-loading,
.mcp-tools-empty {
  margin: 0;
  padding: 16px;
  color: var(--color-text-secondary, #6b7280);
  font-size: 0.85rem;
}

.mcp-tools-unavailable {
  margin-top: 28px;
  padding-top: 20px;
  border-top: 1px solid var(--color-border);
}

.mcp-tools-unavailable-lead {
  margin: 0 0 12px;
  color: var(--color-text-secondary, #6b7280);
  font-size: 0.83rem;
  line-height: 1.7;
  max-width: 68ch;
}

.mcp-tools-unavailable-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.mcp-tools-unavailable-item {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 10px 14px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface-alt);
}

.mcp-tools-unavailable-item + .mcp-tools-unavailable-item {
  margin-top: 8px;
}

.mcp-tools-unavailable-name {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 14px;
  font-size: 0.85rem;
  color: var(--color-text);
}

.mcp-tools-unavailable-note {
  font-size: 0.78rem;
  color: var(--color-text-secondary, #6b7280);
  line-height: 1.6;
}

@media (max-width: 600px) {
  /* 見出しとボタンを横並びのままにすると「AIツール公 / 開設定」のように
     タイトルが不自然な位置で折れるため、 縦積みにして 1 行で読ませる */
  #mcp-tools-view .admin-header {
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 12px;
  }

  .mcp-tools-header-actions {
    width: 100%;
    justify-content: flex-end;
  }

  .mcp-tool-label {
    padding: 14px 12px;
  }
}

/* --------------------------------------------------------------------------
   書き込みを許す機能 (AIツール公開設定の下段)
   読み取りとは別管理。承認つきでしか実行されないことを画面でも示す
   -------------------------------------------------------------------------- */

.mcp-write-section {
  margin-top: 40px;
  padding-top: 24px;
  border-top: 1px solid var(--color-border);
}

.mcp-write-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}

/* まだ開けない道具。理由を読ませたいので、消さずに薄くする */
.mcp-tool-item--blocked {
  opacity: 0.6;
}

.mcp-write-blocked {
  display: block;
  margin-top: 4px;
  font-size: 0.85em;
  color: var(--color-warning);
}

/* 消える操作 (destructive)。通常の書き込みと見分けがつくよう、文字色とラベルで示す
   (左縦ボーダー等の装飾は使わない方針のため、色 + テキストのみで区別する) */
.mcp-write-destructive {
  font-size: 0.85em;
  font-weight: bold;
  color: var(--color-danger);
}


/* ==== css/components/branding.css ==== */
/* ========================================
   Branding Specific Styles
   ======================================== */

/* Branding menu button */
.branding-menu-btn {
  width: 100%;
  padding: 16px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  cursor: pointer;
  text-align: left;
  transition: all 0.2s ease;
  display: flex;
  align-items: flex-start;
  gap: 12px;
}

.branding-menu-btn:hover {
  background: var(--color-bg);
  border-color: var(--color-accent-text);
}

.branding-menu-btn__icon {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}

.branding-menu-btn__content {
  flex: 1;
  min-width: 0;
}

.branding-menu-btn__title {
  font-weight: 600;
}

.branding-menu-btn__description {
  font-size: 0.8rem;
  color: var(--color-muted);
  margin-top: 2px;
}

/* Branding sections */
.branding-section {
  margin-bottom: 20px;
}

.branding-logo-section {
  margin-bottom: 16px;
}

.branding-logo-section--small {
  margin-bottom: 8px;
}

/* Branding settings container */
.branding-settings-container {
  margin-bottom: 32px;
}

.branding-settings-title {
  margin: 0 0 16px 0;
  font-size: 1.1rem;
  color: var(--color-text);
}

.branding-settings-title--centered {
  text-align: center;
}

.branding-settings-grid {
  display: grid;
  gap: 20px;
}

.branding-settings-grid--small {
  display: grid;
  gap: 12px;
}

.branding-settings-grid--medium {
  display: grid;
  gap: 16px;
}

.branding-settings-grid--tiny {
  display: grid;
  gap: 8px;
}

/* Branding labels */
.branding-label-small {
  display: block;
  margin-bottom: 6px;
  font-size: 0.85rem;
  color: var(--color-text);
}

/* Branding section title */
.branding-section-title {
  margin: 0 0 12px 0;
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-text);
}

/* Branding theme grid */
.branding-theme-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
  max-width: 320px;
}

/* Branding file preview */
.branding-preview {
  min-height: 80px;
  padding: 12px;
  border: 1px dashed var(--color-border);
  border-radius: 8px;
  background: var(--color-bg);
  display: flex;
  align-items: center;
  justify-content: center;
}

.branding-preview--medium {
  min-height: 60px;
  padding: 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface);
  display: flex;
  align-items: center;
  justify-content: center;
}

.branding-preview--light {
  background: #fefefe;
}

.branding-preview--dark {
  background: var(--color-code-text);
}

.branding-preview__text {
  font-size: 0.85rem;
  color: var(--color-muted);
}

.branding-preview__text--dark {
  font-size: 0.85rem;
  color: #999;
}

.branding-preview__actions {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

.branding-preview-status {
  margin-left: auto;
  font-size: 0.8rem;
  color: var(--color-muted);
}

/* Branding button variants */
.branding-btn-select {
  padding: 8px 16px;
  background: var(--color-accent-bg);
  color: white;
  border: none;
  border-radius: 6px;
  cursor: pointer;
  font-size: 0.8rem;
  transition: all 0.2s ease;
}

.branding-btn-select--small {
  padding: 6px 12px;
  background: var(--color-accent-bg);
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  font-size: 0.8rem;
  transition: all 0.2s ease;
}

.branding-btn-clear {
  padding: 8px 16px;
  background: var(--color-surface);
  color: var(--color-text);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  cursor: pointer;
  font-size: 0.8rem;
  transition: all 0.2s ease;
}

.branding-btn-clear--small {
  display: none;
  padding: 6px 12px;
  background: var(--color-surface);
  color: var(--color-text);
  border: 1px solid var(--color-border);
  border-radius: 4px;
  cursor: pointer;
  font-size: 0.8rem;
  transition: all 0.2s ease;
}

.branding-image-clear-btn {
  display: block;
  position: absolute;
  top: 8px;
  right: 8px;
  width: 24px;
  height: 24px;
  padding: 0;
  background: var(--color-surface);
  color: var(--color-muted);
  border: 1px solid var(--color-border);
  border-radius: 50%;
  cursor: pointer;
  font-size: 0.875rem;
  line-height: 1;
  transition: all 0.2s ease;
  z-index: 10;
}

/* Color settings container */
.color-settings-container {
  max-width: 600px;
  margin: 0 auto;
  display: grid;
  gap: 24px;
}

.color-settings-preview-box {
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 20px;
}

.color-settings-preview-label {
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--color-muted);
  margin-bottom: 16px;
}

.color-settings-preview-grid {
  display: grid;
  gap: 12px;
}

.color-settings-flex-start {
  display: flex;
  justify-content: flex-start;
}

.color-settings-flex-end {
  display: flex;
  justify-content: flex-end;
}

.color-settings-form-grid {
  display: grid;
  gap: 20px;
}

.color-settings-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 16px;
  border-top: 1px solid var(--color-border);
}

.color-settings-reset-btn {
  padding: 8px 16px;
  background: transparent;
  color: var(--color-muted);
  border: none;
  cursor: pointer;
  font-size: 0.85rem;
  transition: all 0.2s ease;
}

/* Color picker section */
.color-picker-section {
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--color-text);
  margin-bottom: 12px;
}

.color-picker-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

.color-picker-item label {
  display: block;
  font-size: 0.7rem;
  margin-bottom: 8px;
  color: var(--color-muted);
}

.color-picker-input {
  width: 100%;
  height: 40px;
  cursor: pointer;
  border: 1px solid var(--color-border);
  border-radius: 6px;
}

.color-code-input {
  width: 100%;
  margin-top: 4px;
  padding: 4px 8px;
  font-size: 0.7rem;
  font-family: monospace;
  text-align: center;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-surface);
  color: var(--color-text);
  cursor: text;
}

/* Message preview */
.message-preview {
  display: flex;
  justify-content: flex-end;
}

.message-preview__bubble {
  max-width: 70%;
  position: relative;
  padding: 12px 16px;
  border-radius: 12px;
  word-wrap: break-word;
}

/* 文字サイズ設定 */
.settings-font-size-options {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.settings-font-size-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
  color: var(--color-text);
  cursor: pointer;
  transition: all 0.15s;
  font-size: 0.875rem;
}

.settings-font-size-btn:hover {
  border-color: var(--color-accent);
}

.settings-font-size-btn.active {
  border-color: var(--color-accent);
  background: rgba(var(--color-accent-rgb), 0.1);
  color: var(--color-accent);
}


/* ==== css/components/knowledge.css ==== */
/* ノート一覧の見出しの右に並ぶ操作 (控えを出す / 控えから戻す / 取り込み / 新規作成)。
   ui.css の `.knowledge-header > div` が縦並びなので、2 クラスで上書きして横に並べる。
   ui.css ではなくここに置くのは、ノートの見た目はノートの CSS が持つため
   (設計 docs/design/2026-08-12_note_import_export_design.md) */
.knowledge-header > .knowledge-header-actions {
  flex-direction: row;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

/* 狭い画面では、見出しと操作を上下に分ける。
   操作が 4 つになって横幅を取り合うと、見出しの「共有ノートリスト」が途中で折り返す */
@media (max-width: 600px) {
  .knowledge-header {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }
}

/* ナレッジ新規作成ビュー */
.knowledge-create-view {
  position: fixed;
  top: 0;
  left: 300px;
  right: 0;
  bottom: 0;
  background: var(--color-bg);
  z-index: 200;
  overflow: hidden;
}

.knowledge-create-container {
  display: flex;
  flex-direction: column;
  height: 100%;
}

.knowledge-create-header {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 16px 32px;
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
  box-shadow: var(--shadow-soft);
}

.knowledge-create-title {
  flex: 1;
  font-size: 1.3rem;
  font-weight: 600;
  margin: 0;
  color: var(--color-text);
}

.knowledge-create-subtitle {
  font-size: 0.9rem;
  color: var(--color-muted);
  margin: 4px 0 0 0;
  font-weight: 400;
}

.knowledge-create-actions {
  display: flex;
  gap: 12px;
}

.knowledge-create-back-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 10px 16px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: transparent;
  color: var(--color-text);
  font-size: 0.95rem;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
}

.knowledge-create-back-btn:hover {
  background: var(--color-surface);
  border-color: var(--color-accent-text);
}

.knowledge-create-save-btn {
  padding: 10px 24px;
  border: none;
  border-radius: 8px;
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  font-size: 0.95rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
  box-shadow: 0 2px 8px rgba(154, 166, 228, 0.3);
}

.knowledge-create-save-btn:hover {
  background: var(--color-accent-hover);
  box-shadow: 0 4px 12px rgba(154, 166, 228, 0.4);
  transform: translateY(-1px);
}

.knowledge-create-draft-btn {
  padding: 10px 20px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.95rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
  margin-right: 12px;
}

.knowledge-create-draft-btn:hover {
  background: var(--color-surface-alt);
  border-color: var(--color-accent);
}

.knowledge-create-body {
  flex: 1;
  display: flex;
  justify-content: center;
  overflow-y: auto;
  background: var(--color-bg);
  padding: 48px 24px 80px;
}

.knowledge-create-main,
.knowledge-detail-edit-mode,
.knowledge-detail-view-mode {
  width: 100%;
  max-width: 780px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

/* 中身が空の要素はgapを消費しないように非表示 */
.knowledge-detail-view-mode .knowledge-detail-tags:empty {
  display: none;
}

.knowledge-create-title-input {
  width: 100%;
  font-family: 'Noto Serif JP', serif !important;
  font-size: 1.6rem !important;
  font-weight: 700;
  letter-spacing: 0.05em;
  line-height: 1.4;
  border: none;
  outline: none;
  background: transparent;
  color: var(--color-text);
  padding: 0;
}

.knowledge-view-title {
  width: 100%;
  font-family: 'Noto Serif JP', serif;
  font-size: 1.6rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  line-height: 1.4;
  border: none;
  outline: none;
  background: transparent;
  color: var(--color-text);
  padding: 0;
}

.knowledge-create-title-input:empty::before {
  content: attr(data-placeholder);
  color: var(--color-muted);
  opacity: 0.5;
}

.knowledge-create-title-input:focus {
  outline: none;
}

.knowledge-editor-toolbar {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 5px 12px;
  background: var(--color-bg);
  border-bottom: 1px solid var(--color-border);
  border-radius: 0;
}

/* ブロックツールバー（右サイドパネル常駐） */
.knowledge-block-toolbar {
  position: fixed;
  right: 16px;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 8px;
  border-radius: 10px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-bottom: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

.knowledge-block-toolbar .editor-divider {
  width: 100%;
  height: 1px;
  margin: 2px 0;
}

.knowledge-block-toolbar .editor-btn {
  width: 28px;
  height: 28px;
}

.knowledge-block-toolbar .editor-btn svg {
  width: 14px;
  height: 14px;
}

/* インラインツールバー（フローティング） */
.knowledge-inline-toolbar {
  position: fixed;
  z-index: 20;
  display: none;
  align-items: center;
  gap: 2px;
  padding: 4px 6px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  backdrop-filter: blur(8px);
}

.knowledge-inline-toolbar.visible {
  display: flex;
}

.knowledge-inline-toolbar .editor-btn {
  width: 28px;
  height: 28px;
}

.knowledge-inline-toolbar .editor-btn svg {
  width: 14px;
  height: 14px;
}

.editor-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: 6px;
  color: var(--color-text);
  cursor: pointer;
  transition: all 0.2s ease;
}

.editor-btn svg {
  width: 16px;
  height: 16px;
}

.editor-btn:hover {
  background: var(--color-bg);
  transform: translateY(-1px);
}

.editor-btn:active {
  transform: translateY(0);
}

.editor-btn.active {
  background: var(--color-accent-bg);
  color: var(--color-button-text);
}

.editor-divider {
  width: 1px;
  height: 20px;
  background: var(--color-border);
  margin: 0 4px;
}

.knowledge-create-editor,
.knowledge-view-content {
  width: 100%;
  min-height: 350px;
  font-size: 0.95rem;
  /* 本文は文字サイズ設定に連動させる (標準 = 1.7 で従来どおり) */
  line-height: var(--base-line-height, 1.7);
  border: none;
  border-radius: 0;
  outline: none;
  background: transparent;
  color: var(--color-text);
  font-family: 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', sans-serif;
  padding: 2rem 2.5rem 5rem;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* 編集エディタ */
.knowledge-create-editor {
  max-height: none;
  overflow-y: visible;
}

/* 閲覧モードはページ全体でスクロール（高さ制限なし） */
/* doc-design指針に基づく洗練されたタイポグラフィ */
.knowledge-view-content {
  max-height: none;
  overflow-y: visible;
  font-size: 0.92rem;
  line-height: 1.85;
}

/* textarea用のMarkdownエディタスタイル */
.knowledge-markdown-editor {
  resize: vertical;
  font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
  font-size: 0.9rem;
  line-height: 1.8;
  tab-size: 2;
  white-space: pre-wrap;
  word-wrap: break-word;
}

.knowledge-view-content img {
  max-width: 100%;
  height: auto;
  border-radius: 8px;
  margin: 16px 0;
  display: block;
}

.knowledge-create-editor:focus {
  outline: none;
}

.knowledge-create-editor:empty::before {
  content: attr(data-placeholder);
  color: var(--color-muted);
  opacity: 0.5;
}

/* 文字カウンター */
.knowledge-char-counter {
  display: flex;
  justify-content: flex-end;
  padding: 6px 12px;
  margin-top: 2rem;
  font-size: 0.7rem;
  color: var(--color-muted);
  opacity: 0.5;
}

.knowledge-char-counter .char-count {
  font-weight: 500;
  color: var(--color-muted);
  margin-right: 2px;
}

/* 見出し・本文（編集・閲覧 統一、doc-design指針） */
.knowledge-create-editor h2,
.knowledge-view-content h2 {
  font-family: 'Noto Serif JP', serif;
  font-size: 1.3rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  line-height: 1.4;
  margin: 3rem 0 1.5rem 0;
  color: var(--color-text);
}

.knowledge-create-editor h3,
.knowledge-view-content h3 {
  font-family: 'Noto Serif JP', serif;
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  line-height: 1.4;
  margin: 2.5rem 0 1rem 0;
  color: var(--color-text);
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--color-border);
}

.knowledge-create-editor h4,
.knowledge-view-content h4 {
  font-size: 0.95rem;
  font-weight: 500;
  letter-spacing: 0.03em;
  margin: 2rem 0 0.8rem 0;
  color: var(--color-text-secondary, var(--color-text));
}

.knowledge-create-editor p,
.knowledge-view-content p {
  margin: 0.8rem 0;
}

.knowledge-create-editor strong,
.knowledge-view-content strong {
  font-weight: 600;
}

.knowledge-create-editor em,
.knowledge-view-content em {
  font-style: italic;
}

.knowledge-create-editor ul,
.knowledge-create-editor ol,
.knowledge-view-content ul,
.knowledge-view-content ol {
  margin: 1rem 0;
  padding-left: 0;
  list-style: none;
}

.knowledge-create-editor li,
.knowledge-view-content li {
  padding: 0.4rem 0 0.4rem 1.2rem;
  position: relative;
  line-height: 1.8;
}

.knowledge-create-editor li > p,
.knowledge-view-content li > p {
  margin: 0;
}

.knowledge-create-editor ul > li::before,
.knowledge-view-content ul > li::before {
  content: '';
  position: absolute;
  left: 6px;
  top: 1.1rem;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--color-muted);
}

.knowledge-create-editor ol,
.knowledge-view-content ol {
  counter-reset: list-counter;
}

.knowledge-create-editor ol > li,
.knowledge-view-content ol > li {
  counter-increment: list-counter;
}

.knowledge-create-editor ol > li::before,
.knowledge-view-content ol > li::before {
  content: counter(list-counter) '.';
  position: absolute;
  left: 2px;
  top: 0.45rem;
  font-size: 0.82rem;
  color: var(--color-muted);
  font-weight: 500;
}

.knowledge-create-editor a,
.knowledge-view-content a {
  color: var(--color-accent-text);
  text-decoration: none;
  border-bottom: 1px solid rgba(var(--color-accent-rgb, 164, 178, 221), 0.3);
  transition: border-color 0.15s;
}

.knowledge-create-editor a:hover,
.knowledge-view-content a:hover {
  border-bottom-color: var(--color-accent-text);
}

.knowledge-create-editor code,
.knowledge-view-content code {
  background: rgba(0, 0, 0, 0.05);
  border: 1px solid var(--color-border);
  padding: 2px 8px;
  border-radius: 4px;
  font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
  font-size: 0.85em;
}

.knowledge-create-editor pre,
.knowledge-view-content pre {
  background: var(--color-bg, #f7f7f6);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  padding: 1.2rem 1.5rem;
  margin: 1.5rem 0;
  /* コードブロックは横スクロールで見切れさせず折り返す (チャット /
     task-manager と統一)。 改行とインデントは pre-wrap で保持される。 */
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  overflow-x: auto;
}

.knowledge-create-editor pre code,
.knowledge-view-content pre code {
  background: none;
  border: none;
  padding: 0;
  font-size: 0.85rem;
  line-height: 1.6;
}

.knowledge-create-editor blockquote,
.knowledge-view-content blockquote {
  border: 1px solid var(--color-border);
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.04);
  border-radius: 6px;
  margin: 1.5rem 0;
  padding: 0.8rem 1.2rem;
  color: var(--color-text-secondary, var(--color-muted));
  font-style: italic;
}

.knowledge-create-editor blockquote p,
.knowledge-view-content blockquote p {
  margin: 0.4rem 0;
}

.knowledge-create-editor hr,
.knowledge-view-content hr {
  border: none;
  border-top: 1px solid var(--color-border);
  margin: 2.5rem 0;
}

.knowledge-create-editor del,
.knowledge-create-editor s,
.knowledge-view-content del,
.knowledge-view-content s {
  text-decoration: line-through;
  opacity: 0.6;
}

.knowledge-create-tags-section,
.knowledge-tags-editor-container {
  display: flex;
  flex-direction: column;
  gap: 8px;
  position: relative;
  margin: 12px 0;
  overflow: hidden;
}

.knowledge-tags-container {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 6px;
  padding: 6px 8px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
  min-height: 44px;
  max-width: 100%;
  transition:
    border-color 0.2s ease,
    box-shadow 0.2s ease;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
  scrollbar-color: var(--color-border) transparent;
}

/* WebKit用スクロールバースタイル */
.knowledge-tags-container::-webkit-scrollbar {
  height: 4px;
}

.knowledge-tags-container::-webkit-scrollbar-track {
  background: transparent;
}

.knowledge-tags-container::-webkit-scrollbar-thumb {
  background: var(--color-border);
  border-radius: 2px;
}

.knowledge-tags-container::-webkit-scrollbar-thumb:hover {
  background: var(--color-muted);
}

.knowledge-tags-container:focus-within {
  border-color: var(--color-accent-text);
  box-shadow: 0 0 0 3px rgba(var(--color-accent-rgb), 0.1);
}

.knowledge-tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  font-size: 0.85rem;
  color: var(--color-text);
  transition: all 0.15s ease;
  flex-shrink: 0;
  white-space: nowrap;
}

.knowledge-tag:hover {
  background: var(--color-border);
}

.knowledge-tag[data-tag-id] {
  cursor: pointer;
}

.knowledge-tag-remove {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border: none;
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
  padding: 0;
  border-radius: 3px;
  transition: all 0.15s ease;
}

.knowledge-tag-remove:hover {
  background: var(--color-accent-bg);
  color: var(--color-button-text);
}

.knowledge-tags-input {
  flex: 1;
  min-width: 120px;
  border: none;
  outline: none;
  background: transparent;
  color: var(--color-text);
  font-size: 0.9rem;
  padding: 4px;
}

.knowledge-tags-input::placeholder {
  color: var(--color-muted);
  opacity: 0.6;
}

.knowledge-tags-dropdown {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  margin-top: 4px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  max-height: 200px;
  overflow-y: auto;
  z-index: 100;
  padding: 6px;
}

.knowledge-tags-dropdown-item {
  padding: 4px;
  cursor: pointer;
  transition: all 0.15s ease;
  display: inline-flex;
  align-items: center;
  margin: 2px;
}

.knowledge-tags-dropdown-item:hover .knowledge-tag-dropdown-chip {
  background: var(--color-surface);
  border-color: var(--color-primary);
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.knowledge-tags-dropdown-item.selected .knowledge-tag-dropdown-chip {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-button-text);
}

.knowledge-tag-dropdown-chip {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 16px;
  font-size: 0.8rem;
  color: var(--color-text);
  transition: all 0.2s ease;
  white-space: nowrap;
}

.knowledge-tags-dropdown-hint {
  padding: 12px;
  text-align: center;
  color: var(--color-muted);
  font-size: 0.85rem;
  font-style: italic;
}

/* 閲覧モード用タグ表示（独立行） */
.knowledge-detail-tags .knowledge-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 16px;
  font-size: 0.8rem;
  color: var(--color-text);
  transition: all 0.2s ease;
}

.knowledge-detail-tags .knowledge-tag:hover {
  background: var(--color-surface);
  border-color: var(--color-primary);
}

/* 編集モード用タグチップ（インライン表示） */
.knowledge-tag-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 16px;
  font-size: 0.8rem;
  color: var(--color-text);
  transition: all 0.2s ease;
}

.knowledge-tag-chip:hover {
  background: var(--color-surface);
  border-color: var(--color-primary);
}

.knowledge-tag-chip .knowledge-tag-remove {
  border: none;
  background: none;
  color: var(--color-muted);
  cursor: pointer;
  padding: 0 2px;
  margin: 0;
  font-size: 1.1rem;
  line-height: 1;
  opacity: 0.7;
  transition: opacity 0.2s ease;
}

.knowledge-tag-chip .knowledge-tag-remove:hover {
  opacity: 1;
  color: var(--color-danger);
}

/* タグコンテナのフォーカス状態 */
#knowledge-detail-tags-container:focus-within {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(var(--color-accent-rgb, 0, 123, 255), 0.1);
}

.knowledge-markdown-preview {
  width: 100%;
  min-height: 400px;
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: var(--color-surface);
  padding: 24px;
  box-shadow: var(--shadow-soft);
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  line-height: 1.8;
  color: var(--color-text);
  overflow-wrap: break-word;
  white-space: pre-wrap;
}

.link-popup {
  position: absolute;
  z-index: 1000;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow: var(--shadow-hover);
  padding: 16px;
  min-width: 320px;
}

.link-popup-content {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.link-popup-input {
  width: 100%;
  padding: 8px 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.9rem;
  outline: none;
}

.link-popup-input:focus {
  border-color: var(--color-accent-text);
  box-shadow: 0 0 0 2px rgba(var(--color-accent-rgb), 0.1);
}

.link-popup-buttons {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
}

.link-popup-btn {
  padding: 6px 16px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.9rem;
  cursor: pointer;
  transition: all 0.15s ease;
}

.link-popup-btn:hover {
  background: var(--color-bg);
}

.link-popup-btn-primary {
  background: var(--color-accent-bg);
  border-color: var(--color-accent-text);
  color: var(--color-button-text);
}

.link-popup-btn-primary:hover {
  opacity: 0.9;
}

.knowledge-create-editor mark,
.knowledge-view-content mark,
.knowledge-create-editor .highlight-text,
.knowledge-view-content .highlight-text {
  background: rgba(168, 184, 232, 0.15);
  color: inherit;
  padding: 2px 4px;
  border-radius: 4px;
}

.theme-dark .knowledge-create-editor mark,
.theme-dark .knowledge-view-content mark,
.theme-dark .knowledge-create-editor .highlight-text,
.theme-dark .knowledge-view-content .highlight-text {
  background: rgba(154, 166, 228, 0.2);
}

.knowledge-create-editor .highlight-block,
.knowledge-view-content .highlight-block {
  background: rgba(168, 184, 232, 0.1);
  padding: 12px 16px;
  border-radius: 8px;
  margin: 4px 0;
}

.theme-dark .knowledge-create-editor .highlight-block,
.theme-dark .knowledge-view-content .highlight-block {
  background: rgba(154, 166, 228, 0.15);
}

.knowledge-create-editor table,
.knowledge-view-content table {
  width: 100%;
  border-collapse: collapse;
  margin: 1.5rem 0;
  border: none;
}

/* デフォルト: ミニマルスタイル（ヘッダー下線のみ） */
.knowledge-view-content th {
  font-weight: 500;
  font-size: 0.78rem;
  color: var(--color-muted);
  letter-spacing: 0.04em;
  padding: 0 0.5rem 0.6rem;
  border-bottom: 2px solid var(--color-border);
  text-align: left;
  background: none;
}

.knowledge-view-content td {
  padding: 0.55rem 0.5rem;
  border-bottom: 1px solid var(--color-border);
  vertical-align: top;
  font-size: 0.85rem;
  background: none;
}

/* 編集モードのテーブルベーススタイル（デフォルト: 罫線あり） */
.knowledge-create-editor table {
  width: 100%;
  border-collapse: collapse;
  margin: 16px 0;
  border: 1px solid var(--color-border);
}

.knowledge-create-editor th,
.knowledge-create-editor td {
  border: 1px solid var(--color-border);
  padding: 8px 12px;
  text-align: left;
}

.knowledge-create-editor th {
  background: var(--color-bg);
  font-weight: 600;
}

.knowledge-create-editor td {
  background: var(--color-surface);
}

/* テーブルスタイル: ミニマル（編集モード用オーバーライド） */
.knowledge-create-editor table.table-style-minimal {
  border: none;
}

.knowledge-create-editor table.table-style-minimal th,
.knowledge-create-editor table.table-style-minimal td {
  border: none;
  border-bottom: 1px solid var(--color-border);
}

.knowledge-create-editor table.table-style-minimal th {
  background: none;
  font-weight: 500;
  font-size: 0.78rem;
  color: var(--color-muted);
  border-bottom: 2px solid var(--color-border);
}

.knowledge-create-editor table.table-style-minimal td {
  background: none;
}

/* テーブルスタイル: 罫線あり */
.knowledge-view-content table.table-style-lined {
  border: 1px solid var(--color-border);
}

.knowledge-view-content table.table-style-lined th,
.knowledge-view-content table.table-style-lined td {
  border: 1px solid var(--color-border);
  padding: 8px 12px;
}

.knowledge-view-content table.table-style-lined th {
  background: var(--color-bg);
  font-weight: 600;
  font-size: 0.85rem;
  color: var(--color-text);
  letter-spacing: normal;
}

.knowledge-view-content table.table-style-lined td {
  background: var(--color-surface);
}

/* テーブルスタイル: ストライプ（閲覧モード） */
.knowledge-view-content table.table-style-striped th {
  border-bottom: 2px solid var(--color-border);
}

.knowledge-view-content table.table-style-striped tbody tr:nth-child(even) {
  background: rgba(0, 0, 0, 0.03);
}

/* テーブルスタイル: ストライプ（編集モード） */
.knowledge-create-editor table.table-style-striped {
  border: none;
}

.knowledge-create-editor table.table-style-striped th {
  background: none;
  border: none;
  border-bottom: 2px solid var(--color-border);
}

.knowledge-create-editor table.table-style-striped td {
  border: none;
  border-bottom: 1px solid var(--color-border);
  background: none;
}

.knowledge-create-editor table.table-style-striped tbody tr:nth-child(even) td {
  background: rgba(0, 0, 0, 0.03);
}

.knowledge-create-editor img,
.knowledge-view-content img {
  max-width: 100%;
  height: auto;
  border-radius: 8px;
  margin: 16px 0;
  display: block;
  cursor: pointer;
  transition: opacity 0.2s ease;
}

.knowledge-create-editor img:hover,
.knowledge-view-content img:hover {
  opacity: 0.9;
}

/* 画像サイズクラス */
.knowledge-create-editor img.img-size-thumbnail,
.knowledge-view-content img.img-size-thumbnail {
  max-width: 150px;
}

.knowledge-create-editor img.img-size-medium,
.knowledge-view-content img.img-size-medium {
  max-width: 400px;
}

.knowledge-create-editor img.img-size-large,
.knowledge-view-content img.img-size-large {
  max-width: 600px;
}

.knowledge-create-editor img.img-size-full,
.knowledge-view-content img.img-size-full {
  max-width: 100%;
}

/* 画像サイズ選択UI - オーバーレイ */
.image-size-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  animation: fadeIn 0.15s ease;
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

/* 画像サイズ選択UI - ポップアップ */
.image-size-selector {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 12px;
  padding: 16px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 200px;
  animation: slideIn 0.2s ease;
}

@keyframes slideIn {
  from {
    transform: translateY(-10px);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

.image-size-option {
  padding: 12px 16px;
  cursor: pointer;
  border-radius: 8px;
  transition: all 0.2s ease;
  color: var(--color-text);
  font-size: 0.9375rem;
  font-weight: 500;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 2px solid transparent;
}

.image-size-option:hover {
  background: var(--color-bg);
  border-color: var(--color-border);
  transform: translateX(4px);
}

.image-size-option.active {
  background: var(--color-accent);
  color: white;
  border-color: var(--color-accent);
}

.image-size-option.active:hover {
  background: var(--color-accent);
  opacity: 0.9;
}

.image-size-option svg {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  opacity: 0.7;
}

.image-size-option.active svg {
  opacity: 1;
}

/* ファイルリンク用のボタンスタイル */
.knowledge-create-editor .file-link,
.knowledge-view-content .file-link,
.knowledge-create-editor .pdf-link,
.knowledge-view-content .pdf-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 20px;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 12px;
  color: var(--color-text);
  text-decoration: none;
  transition: all 0.2s ease;
  margin: 8px 0;
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

.knowledge-create-editor .file-link:hover,
.knowledge-view-content .file-link:hover,
.knowledge-create-editor .pdf-link:hover,
.knowledge-view-content .pdf-link:hover {
  background: var(--color-surface);
  border-color: var(--color-accent-text);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.knowledge-create-editor .file-link::before,
.knowledge-view-content .file-link::before,
.knowledge-create-editor .pdf-link::before,
.knowledge-view-content .pdf-link::before {
  content: '';
  display: inline-block;
  width: 18px;
  height: 18px;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 2v6h6'/%3E%3Cpath d='M9 15h6'/%3E%3Cpath d='M9 18h6'/%3E%3C/svg%3E");
  background-size: contain;
  background-repeat: no-repeat;
}

.theme-dark .knowledge-create-editor .file-link::before,
.theme-dark .knowledge-view-content .file-link::before,
.theme-dark .knowledge-create-editor .pdf-link::before,
.theme-dark .knowledge-view-content .pdf-link::before {
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='%23eee' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 2v6h6'/%3E%3Cpath d='M9 15h6'/%3E%3Cpath d='M9 18h6'/%3E%3C/svg%3E");
}

/* ノートリンク用のスタイル - チャットの .note-preview-item と統一 */
.knowledge-note-link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  text-decoration: none;
  transition: all 0.2s ease;
  cursor: pointer;
  margin: 4px 2px;
}

.knowledge-note-link:hover {
  border-color: var(--color-accent-text);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.knowledge-note-link-icon {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-accent-bg);
  border-radius: 6px;
  color: var(--color-button-text);
}

.knowledge-note-link-icon svg {
  width: 16px;
  height: 16px;
}

.knowledge-note-link-title {
  font-weight: 500;
  color: var(--color-text);
  font-size: 0.9rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 300px;
}

/* 削除済みノートリンク */
.knowledge-note-link--deleted {
  cursor: default;
}

.knowledge-note-link--deleted:hover {
  border-color: var(--color-border);
  box-shadow: none;
}

.table-context-menu {
  position: fixed;
  z-index: 2000;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow: var(--shadow-hover);
  padding: 4px 0;
  min-width: 180px;
}

.context-menu-item {
  padding: 8px 16px;
  cursor: pointer;
  font-size: 0.9rem;
  color: var(--color-text);
  transition: background 0.15s ease;
}

.context-menu-item:hover {
  background: var(--color-bg);
}

.context-menu-divider {
  height: 1px;
  background: var(--color-border);
  margin: 4px 0;
}

.context-menu-label {
  padding: 4px 16px 2px;
  font-size: 0.7rem;
  color: var(--color-muted);
  font-weight: 500;
  letter-spacing: 0.03em;
}

/* ノートファイル添付スタイル */
.knowledge-pending-files {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  padding: 12px;
  background: var(--color-surface-alt);
  border-radius: 8px;
  margin-bottom: 12px;
}

.file-preview-item {
  position: relative;
  width: 120px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  overflow: hidden;
  background: var(--color-surface);
}

.file-preview-content {
  width: 100%;
  height: 100px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-bg);
}

.file-preview-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.file-icon-preview {
  font-size: 3rem;
  color: var(--color-muted);
}

.file-preview-name {
  padding: 6px 8px;
  font-size: 0.75rem;
  color: var(--color-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  background: var(--color-surface);
}

.file-preview-remove {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.6);
  color: var(--color-button-text);
  border: none;
  cursor: pointer;
  font-size: 0.875rem;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s ease;
}

.file-preview-remove:hover {
  background: rgba(0, 0, 0, 0.8);
}

/* ファイルを持ち込んでいる間、編集エリア全体が受け口であることを示す */
.knowledge-detail-edit-mode.drag-over {
  outline: 2px dashed var(--color-accent-border);
  outline-offset: -4px;
  background: rgba(var(--color-accent-rgb), 0.05);
}

/* ナレッジ詳細画面の添付ファイル表示 */
.knowledge-detail-attachments {
  margin-top: 24px;
  padding-top: 24px;
  border-top: 1px solid var(--color-border);
}

.knowledge-attachments-title {
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-text);
  margin-bottom: 12px;
}

.knowledge-attachments-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 12px;
}

.knowledge-attachment-item {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  overflow: hidden;
  background: var(--color-surface);
  text-decoration: none;
  transition:
    transform 0.15s ease,
    box-shadow 0.15s ease;
}

.knowledge-attachment-item:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

/* 音声はその場で聞く。再生バーが潰れないよう 2 列ぶんの幅を取り、
   開く動作が無いので浮き上がりも付けない */
.knowledge-attachment-item--audio {
  grid-column: span 2;
  padding: 12px;
  gap: 8px;
}

.knowledge-attachment-item--audio:hover {
  transform: none;
  box-shadow: none;
}

.knowledge-attachment-audio {
  width: 100%;
}

.knowledge-attachment-image {
  width: 100%;
  height: 120px;
  object-fit: cover;
}

.knowledge-attachment-icon {
  width: 100%;
  height: 120px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 3.5rem;
  background: var(--color-bg);
}

.knowledge-attachment-name {
  padding: 8px 10px;
  font-size: 0.85rem;
  color: var(--color-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  background: var(--color-surface);
}

.knowledge-attachments-error {
  color: var(--color-muted);
  font-size: 0.9rem;
  padding: 12px;
  text-align: center;
}

/* 更新履歴 SidePanel (#10 Phase 1) */
.knowledge-history-loading,
.knowledge-history-empty {
  padding: 24px 12px;
  text-align: center;
  color: var(--color-muted);
  font-size: 0.875rem;
}

.knowledge-history-error {
  padding: 12px;
  color: var(--color-danger);
  font-size: 0.875rem;
}

.knowledge-history-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.knowledge-history-item + .knowledge-history-item {
  border-top: 1px solid var(--color-border);
}

.knowledge-history-item-btn {
  display: block;
  width: 100%;
  padding: 12px;
  background: transparent;
  border: none;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s;
  font-family: inherit;
}

.knowledge-history-item-btn:hover {
  background: var(--color-target);
}

.knowledge-history-item-btn:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: -2px;
}

.knowledge-history-item-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 4px;
}

.knowledge-history-item-rev {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-accent);
  background: var(--color-target);
  padding: 2px 6px;
  border-radius: 3px;
}

.knowledge-history-item-time {
  font-size: 0.75rem;
  color: var(--color-muted);
}

.knowledge-history-item-meta {
  display: flex;
  gap: 8px;
  font-size: 0.8125rem;
  color: var(--color-text);
  overflow: hidden;
}

.knowledge-history-item-author {
  color: var(--color-muted);
  flex-shrink: 0;
}

.knowledge-history-item-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.knowledge-history-preview {
  padding: 12px;
}

.knowledge-history-back {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-bottom: 12px;
  padding: 4px 8px;
  background: transparent;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  font-size: 0.75rem;
  color: var(--color-muted);
  cursor: pointer;
  font-family: inherit;
}

.knowledge-history-back:hover {
  background: var(--color-target);
  color: var(--color-text);
}

.knowledge-history-preview-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}

.knowledge-history-preview-title {
  font-size: 1rem;
  margin: 0 0 12px;
  color: var(--color-text);
}

.knowledge-history-preview-body {
  font-size: 0.875rem;
  line-height: 1.6;
  color: var(--color-text);
  word-break: break-word;
}

.knowledge-history-preview-body p {
  margin: 0.5em 0;
}

/* モード切替タブ (内容 / 差分、 #10 Phase 2) */
.knowledge-history-mode-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 12px;
  border-bottom: 1px solid var(--color-border);
}

.knowledge-history-mode-tab {
  padding: 6px 12px;
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  font-size: 0.8125rem;
  color: var(--color-muted);
  cursor: pointer;
  font-family: inherit;
  transition:
    color 0.15s,
    border-color 0.15s;
}

.knowledge-history-mode-tab:hover {
  color: var(--color-text);
}

.knowledge-history-mode-tab--active {
  color: var(--color-accent);
  border-bottom-color: var(--color-accent);
}

.knowledge-history-mode-tab[disabled] {
  cursor: not-allowed;
  opacity: 0.4;
}

/* 復元ボタン (#10 Phase 3) -- 控えめな secondary、 誤操作防止のため Primary でも danger でもない */
.knowledge-history-actions {
  margin-top: 16px;
  padding-top: 12px;
  border-top: 1px solid var(--color-border);
  display: flex;
  justify-content: flex-end;
}

.knowledge-history-restore {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: transparent;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  font-size: 0.8125rem;
  color: var(--color-text);
  cursor: pointer;
  font-family: inherit;
  transition:
    background 0.15s,
    border-color 0.15s;
}

.knowledge-history-restore:hover {
  background: var(--color-target);
  border-color: var(--color-accent);
}

/* diff 表示 (追加=緑、 削除=赤、 #10 Phase 2) */
.knowledge-history-diff-body {
  font-size: 0.875rem;
  line-height: 1.7;
  color: var(--color-text);
  word-break: break-word;
  white-space: pre-wrap;
  font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
}

.knowledge-history-diff-add {
  background: rgba(39, 174, 96, 0.18);
  color: #1e8449;
  text-decoration: none;
  padding: 0 2px;
  border-radius: 2px;
}

.knowledge-history-diff-del {
  background: rgba(192, 57, 43, 0.18);
  color: #922b21;
  text-decoration: line-through;
  padding: 0 2px;
  border-radius: 2px;
}

.theme-dark .knowledge-history-diff-add {
  background: rgba(72, 187, 120, 0.22);
  color: #6ee7b7;
}

.theme-dark .knowledge-history-diff-del {
  background: rgba(229, 62, 62, 0.22);
  color: #f8a5a5;
}

/* ============================================
   レスポンシブデザイン対応
   ============================================ */

/* タブレット (768px以下) */
@media (max-width: 768px) {
  .knowledge-create-view {
    left: 0;
  }

  .knowledge-create-header {
    padding: 12px 16px;
    gap: 12px;
  }

  .knowledge-create-title {
    font-size: 1.1rem;
  }

  .knowledge-create-body {
    padding: 24px 16px;
  }

  .knowledge-create-main,
  .knowledge-detail-edit-mode,
  .knowledge-detail-view-mode {
    max-width: 100%;
  }

  .knowledge-create-title-input,
  .knowledge-view-title {
    font-size: 1.4rem;
  }

  .knowledge-editor-toolbar {
    gap: 4px;
    padding: 4px 8px;
    overflow-x: auto;
    flex-wrap: nowrap;
  }

  .editor-btn {
    width: 28px;
    height: 28px;
    flex-shrink: 0;
  }

  .editor-btn svg {
    width: 14px;
    height: 14px;
  }

  .knowledge-create-editor,
  .knowledge-view-content,
  .knowledge-markdown-editor {
    font-size: 0.9rem;
    padding: 16px;
    min-height: 300px;
  }

  .knowledge-markdown-preview {
    padding: 16px;
    min-height: 300px;
  }

  .knowledge-attachments-grid {
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 8px;
  }
}

/* モバイル (480px以下) */
@media (max-width: 480px) {
  .knowledge-create-header {
    padding: 10px 12px;
    gap: 8px;
    flex-wrap: wrap;
  }

  .knowledge-create-title {
    font-size: 1rem;
    width: 100%;
    order: -1;
  }

  .knowledge-create-back-btn {
    padding: 8px 12px;
    font-size: 0.85rem;
    gap: 4px;
  }

  .knowledge-create-actions {
    gap: 8px;
    width: 100%;
    justify-content: flex-end;
  }

  .knowledge-create-save-btn,
  .knowledge-create-draft-btn {
    padding: 8px 16px;
    font-size: 0.85rem;
  }

  .knowledge-create-body {
    padding: 16px 12px;
  }

  .knowledge-create-title-input,
  .knowledge-view-title {
    font-size: 1.2rem;
  }

  .knowledge-editor-toolbar {
    gap: 3px;
    padding: 3px 6px;
  }

  .editor-btn {
    width: 26px;
    height: 26px;
  }

  .editor-btn svg {
    width: 13px;
    height: 13px;
  }

  .editor-divider {
    display: none;
  }

  .knowledge-create-editor {
    font-size: 0.85rem;
    padding: 12px;
    min-height: 250px;
    max-height: none;
  }

  .knowledge-markdown-editor {
    font-size: 0.85rem;
    padding: 12px;
    min-height: 250px;
    max-height: 400px;
  }

  .knowledge-view-content {
    font-size: 0.85rem;
    padding: 12px;
    min-height: 250px;
  }

  .knowledge-markdown-preview {
    padding: 12px;
    font-size: 0.85rem;
    min-height: 250px;
  }

  .knowledge-tags-container {
    padding: 4px 6px;
    min-height: 38px;
  }

  .knowledge-tag,
  .knowledge-tag-chip {
    padding: 3px 8px;
    font-size: 0.75rem;
  }

  .knowledge-attachments-grid {
    grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
    gap: 6px;
  }

  .file-preview-item {
    width: 100px;
  }

  .file-preview-content {
    height: 80px;
  }

  .image-size-selector {
    min-width: 160px;
    padding: 12px;
  }

  .image-size-option {
    padding: 10px 12px;
    font-size: 0.875rem;
  }
}

/* デスクトップ大画面 (1200px以上) */
@media (min-width: 1200px) {
  .knowledge-create-main,
  .knowledge-detail-edit-mode,
  .knowledge-detail-view-mode {
    max-width: 900px;
  }

  .knowledge-create-editor {
    max-height: none;
  }

  .knowledge-markdown-editor {
    max-height: 600px;
  }

  .knowledge-markdown-preview {
    min-height: 500px;
  }
}

/* ノート内容コピーボタン */
.knowledge-content-wrapper {
  position: relative;
}

.knowledge-paste-btn.copied {
  color: var(--color-success, #22c55e);
}

.knowledge-copy-btn {
  position: absolute;
  top: 8px;
  right: 8px;
  background: transparent;
  border: none;
  color: rgba(var(--color-text-rgb, 128, 128, 128), 0.6);
  padding: 6px;
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.15s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10;
}

.knowledge-copy-btn:hover {
  color: var(--color-accent-text);
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.1);
}

.knowledge-copy-btn:active {
  transform: scale(0.95);
}

.knowledge-copy-btn.copied {
  color: var(--color-success, #22c55e);
}

.knowledge-export-btn {
  right: 38px;
}

.knowledge-pdf-btn {
  right: 68px;
}

/* ノート前後ナビゲーション */
.knowledge-navigation {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-top: 3rem;
  padding: 12px 0 2rem;
}

.knowledge-nav-btn {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 6px 12px;
  border: none;
  border-radius: 4px;
  background: transparent;
  color: var(--color-muted);
  font-size: 0.8rem;
  font-weight: 400;
  cursor: pointer;
  transition: all 0.2s ease;
}

.knowledge-nav-btn:hover:not(:disabled) {
  background: var(--color-surface-alt);
  color: var(--color-text);
}

.knowledge-nav-btn:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}

.knowledge-nav-btn svg {
  flex-shrink: 0;
  width: 14px;
  height: 14px;
}

.knowledge-nav-indicator {
  font-size: 0.75rem;
  color: var(--color-muted);
  opacity: 0.7;
  min-width: 50px;
  text-align: center;
}

/* SidePanel用ノートパネルスタイル */
.knowledge-panel-content {
  padding: 20px;
}

.knowledge-panel-title {
  margin: 0 0 8px;
  font-size: 1.2rem;
}

.knowledge-panel-meta {
  font-size: 0.8rem;
  color: var(--color-muted);
  margin-bottom: 12px;
}

.knowledge-panel-permissions {
  font-size: 0.8rem;
  color: var(--color-muted);
  margin-bottom: 8px;
}

.knowledge-panel-tags {
  margin-bottom: 12px;
}

.knowledge-panel-char-count {
  font-size: 0.75rem;
  color: var(--color-muted);
  margin-top: 16px;
}

.knowledge-panel-new-title {
  margin-bottom: 12px;
}

.knowledge-panel-new-editor {
  min-height: 200px;
}

/*
 * ノートパネルのパネル幅基準レスポンシブ (コンテナクエリ)
 *
 * 本文の余白 (padding: 2rem 2.5rem 5rem) は中央のノート画面向けの設計で、
 * サイドパネル (既定 420px / 最小 300px) では外側 knowledge-panel-content の
 * 20px と二重になり、本文の幅が痩せる。画面幅の @media ではこれを捉えられない
 * (画面が広いままパネルだけが狭い) ので、パネルの中身自身の幅で切り替える。
 *
 * コンテナは knowledge-panel-content に限定する。side-panel__body に付けると
 * containment で absolute 配置の基準が変わり、ノート以外のパネル (タスク詳細等)
 * を巻き込むため。
 */
.knowledge-panel-content {
  container-type: inline-size;
}

.knowledge-panel-content .knowledge-view-content,
.knowledge-panel-content .knowledge-create-editor {
  /* 長い URL 等の区切りの無い語は、パネルの幅に関係なく折り返す。
     side-panel__body が overflow-x: hidden のため、折り返せないと右端で見切れる */
  overflow-wrap: break-word;
  min-height: 200px;
  /* 中央画面向けの左右余白 (2.5rem) をパネルの中身の幅に応じた流体値に置き換える。
     cqw は content-box 基準 (= パネル幅 - knowledge-panel-content の余白 40px)。
     460cqw (パネル幅 500px) までは 0、そこから 1/4 ずつ増えて中央画面と同じ
     2.5rem (620cqw = パネル幅 660px) で頭打ち。段差が無いのでリサイズ中に本文が跳ねない */
  padding: 12px clamp(0px, (100cqw - 460px) / 4, 2.5rem) 3rem;
}

/* 幅を超えるテーブルは表の中で横スクロールに逃がす。
   side-panel__body が overflow-x: hidden のため、逃げ場が無いと
   はみ出た列が黙って見切れて読めなくなる。
   640 は content-box 基準 (実効パネル幅 約 680px)。パネルが十分広ければ
   従来どおりの幅いっぱいのテーブルに戻す。
   contenteditable の編集挙動を壊さないよう .knowledge-create-editor の
   テーブルは意図して対象外 (パネルの新規作成に表を作る導線も無い) */
@container (max-width: 640px) {
  .knowledge-panel-content .knowledge-view-content table {
    display: block;
    overflow-x: auto;
  }

  /* Mac 等はスクロールバーが操作するまで出ず、列が欠けても気づけない。
     細いバーを常時見えるようにする。
     Chromium は scrollbar-width があると ::-webkit-scrollbar を無視するため
     混ぜずに書き、Firefox だけ @supports で scrollbar-width に落とす */
  .knowledge-panel-content .knowledge-view-content table::-webkit-scrollbar {
    height: 6px;
  }

  .knowledge-panel-content .knowledge-view-content table::-webkit-scrollbar-track {
    background: transparent;
  }

  .knowledge-panel-content .knowledge-view-content table::-webkit-scrollbar-thumb {
    background: var(--color-border);
    border-radius: 3px;
  }

  @supports not selector(::-webkit-scrollbar) {
    .knowledge-panel-content .knowledge-view-content table {
      scrollbar-width: thin;
      scrollbar-color: var(--color-border) transparent;
    }
  }
}


/* ==== css/components/media.css ==== */
/* メディア添付機能 */
.attach-media-button {
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 8px;
  color: var(--color-muted);
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  transition: all var(--animation-duration) ease;
}

.attach-media-button:hover {
  background: var(--color-surface-alt);
  color: var(--color-primary);
}

/* 添付メニューコンテナ (flex 子: 左端配置 + popup の絶対配置基準のため relative、 縦位置は wrapper の align-items: center) */
.attach-menu-container {
  position: relative;
  order: -1;
  flex-shrink: 0;
}

/* 添付メニューポップアップ */
.attach-menu-popup {
  position: absolute;
  bottom: calc(100% + 16px);
  left: 0;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
  z-index: 100;
  min-width: 140px;
  overflow: hidden;
}

.attach-menu-popup.hidden {
  display: none;
}

.attach-menu-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 12px 16px;
  background: transparent;
  border: none;
  cursor: pointer;
  color: var(--color-text);
  font-size: 0.9rem;
  transition: background 0.15s ease;
  text-align: left;
}

.attach-menu-item:hover {
  background: var(--color-surface-alt);
}

.attach-menu-item:first-child {
  border-bottom: 1px solid var(--color-border);
}

.attach-menu-item svg {
  flex-shrink: 0;
  color: var(--color-muted);
}

.attach-menu-item:hover svg {
  color: var(--color-accent-text);
}

.media-preview-container {
  display: flex;
  gap: 8px;
  padding: 8px;
  flex-wrap: wrap;
  border-bottom: 1px solid var(--color-border);
  max-height: 200px;
  overflow-y: auto;
}

.media-preview-container.hidden {
  display: none;
}

.media-preview-item {
  position: relative;
  width: 80px;
  height: 80px;
  border-radius: 4px;
  overflow: hidden;
  border: 2px solid var(--color-border);
}

.media-preview-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.media-preview-item .file-preview {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: var(--color-surface-alt);
  padding: 8px;
  gap: 4px;
}

.media-preview-item .file-icon {
  font-size: 1.5rem;
}

.media-preview-item .file-name {
  font-size: 0.5625rem;
  text-align: center;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 100%;
  color: var(--color-text);
}

.media-preview-remove {
  position: absolute;
  top: 4px;
  right: 4px;
  background: rgba(0, 0, 0, 0.7);
  color: var(--color-button-text);
  border: none;
  border-radius: 50%;
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 0.75rem;
  line-height: 1;
  transition: background var(--animation-duration) ease;
}

.media-preview-remove:hover {
  background: var(--color-status-off);
}

/* メッセージ内メディア表示 */
.message-media {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 8px;
}

.message-media-item {
  position: relative;
  max-width: 300px;
  border-radius: 8px;
  overflow: hidden;
  border: 1px solid var(--color-border);
  cursor: pointer;
  transition: transform var(--animation-duration) ease;
}

.message-media-item:hover {
  transform: scale(1.02);
}

.message-media-item img {
  width: 100%;
  height: auto;
  min-height: 80px;
  max-height: 300px;
  object-fit: contain;
  display: block;
  background: var(--color-surface-alt);
}

.message-media-actions {
  position: absolute;
  top: 8px;
  right: 8px;
  display: flex;
  gap: 6px;
  opacity: 0;
  transition: opacity 0.2s ease;
}

.message-media-item:hover .message-media-actions,
.message-media-item:focus-within .message-media-actions {
  opacity: 1;
}

/* ノート閲覧中の画像 hover に出す「詳細」ボタン (media-detail-hover.ts が 1 個だけ生成し、
   hover 中の画像の右上に fixed で重ねる。本文 DOM には挿入しない)。
   見た目はチャットの添付画像の hover アクション (.message-media-action-btn) と同一部品で、
   ここでは配置の上書きだけを持つ */
.media-detail-hover-btn {
  position: fixed;
  transform: translateX(-100%);
  z-index: 1200;
}

.media-detail-hover-btn:hover {
  /* 共通部品の scale(1.1) は translateX と競合するため、fixed 配置ではそのまま */
  transform: translateX(-100%);
}

.message-media-action-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  background: rgba(0, 0, 0, 0.7);
  border: none;
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.2s ease;
  color: var(--color-button-text);
}

.message-media-action-btn:hover {
  background: rgba(0, 0, 0, 0.9);
  transform: scale(1.1);
}

.message-media-action-btn svg {
  display: block;
}

/* ファイル添付表示 */
.message-file-item {
  display: flex;
  align-items: center;
  padding: 12px;
  background: var(--color-surface-alt);
  min-height: 60px;
  /* 画像用の max-width: 300px (.message-media-item) はファイル box には狭すぎて
   * 長いファイル名が何行も折り返すため上書き解除。 bubble の自然な最大幅まで広がる */
  max-width: none;
}

.message-file-item .file-content {
  display: flex;
  align-items: center;
  gap: 12px;
  flex: 1;
  min-width: 0;
  cursor: pointer;
}

.message-file-item .file-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-accent-text);
  flex-shrink: 0;
}

.message-file-item .file-name {
  flex: 1;
  min-width: 0;
  font-size: 0.875rem;
  color: var(--color-text);
  /* 全文表示 + 自然な折り返し:
   * - word-break: normal で「M26040023_」 等の連続英数字を途中で切らない
   * - overflow-wrap: break-word で box からはみ出す時だけ単語境界で折り返す
   * - 日本語は word-break:normal でも文字単位で自然に折り返される
   * 省略 (ellipsis / line-clamp) は使わない、 ファイル名は省略せず全部見せる */
  word-break: normal;
  overflow-wrap: break-word;
}

/* メディアライブラリ */
.media-panel {
  display: none;
  padding: 24px;
  background: var(--color-surface);
}

.media-panel.active {
  display: flex;
  flex-direction: column;
  height: calc(100vh - var(--header-height, 80px));
  overflow-y: auto;
}

.media-library-item {
  position: relative;
  border-radius: 8px;
  overflow: hidden;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  transition:
    transform var(--animation-duration) ease,
    box-shadow var(--animation-duration) ease;
}

.media-library-item:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-hover);
}

.media-library-item--selected {
  border-color: var(--color-accent);
  box-shadow: 0 0 0 2px var(--color-accent);
}

.media-library-item-checkbox {
  position: absolute;
  top: 8px;
  left: 8px;
  z-index: 10;
  background: rgba(255, 255, 255, 0.9);
  border-radius: 4px;
  padding: 2px;
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(4px);
}

.media-library-item-checkbox input[type='checkbox'] {
  width: 18px;
  height: 18px;
  cursor: pointer;
  margin: 0;
  border: 1px solid var(--color-border);
}

.media-library-item img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  display: block;
}

.media-library-item .file-icon-preview {
  width: 100%;
  aspect-ratio: 1 / 1;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 4rem;
  background: var(--color-surface-alt);
  color: var(--color-muted);
}

/* SVGアイコン表示用スタイル */
.media-library-item .file-icon-preview--svg {
  padding: 20%;
  transition: all 0.2s ease;
  color: var(--file-icon-color, var(--color-muted));
}

.media-library-item .file-icon-preview--svg:hover {
  background: var(--color-surface-alt);
  transform: scale(1.02);
}

.media-library-item .file-icon-preview--svg svg {
  width: 100%;
  height: 100%;
  max-width: 80px;
  max-height: 80px;
}

/* モバイル向けSVGアイコンサイズ調整 */
@media (max-width: 768px) {
  .media-library-item .file-icon-preview--svg {
    padding: 15%;
  }

  .media-library-item .file-icon-preview--svg svg {
    max-width: 60px;
    max-height: 60px;
  }

  .file-icon-preview--clickable svg {
    width: 80px;
    height: 80px;
  }
}

@media (max-width: 480px) {
  .media-library-item .file-icon-preview--svg {
    padding: 12%;
  }

  .media-library-item .file-icon-preview--svg svg {
    max-width: 48px;
    max-height: 48px;
  }

  .file-icon-preview--clickable svg {
    width: 64px;
    height: 64px;
  }

  .file-icon-preview--clickable {
    padding: 24px;
  }
}

/* 編集モーダル内のファイルアイコン */
.file-icon-preview--clickable {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 40px;
  cursor: pointer;
  transition: all 0.2s ease;
  color: var(--file-icon-color, var(--color-muted));
  border-radius: 8px;
}

.file-icon-preview--clickable:hover {
  background: var(--color-surface-alt);
  transform: scale(1.02);
}

.file-icon-preview--clickable svg {
  width: 120px;
  height: 120px;
  margin-bottom: 12px;
}

.file-icon-label {
  font-size: 0.85rem;
  color: var(--color-muted);
  margin-top: 8px;
}

.file-icon-preview--clickable:hover .file-icon-label {
  color: var(--color-text);
}

.media-library-item-info {
  padding: 8px;
}

.media-library-item-name {
  font-size: 0.85rem;
  color: var(--color-text);
  margin: 0 0 4px 0;
  display: flex;
  min-width: 0;
}

.media-library-item-basename {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}

.media-library-item-ext {
  white-space: nowrap;
  flex-shrink: 0;
  color: var(--color-muted);
}

.media-library-item-meta {
  font-size: 0.65rem;
  color: var(--color-muted);
  display: flex;
  justify-content: space-between;
  align-items: center;
  /* 文字を大きくすると 2 項目が横に並びきらなくなる。 その時は折り返して
     カードの外にはみ出さないようにする */
  flex-wrap: wrap;
  gap: 0 6px;
}

.media-library-item-actions {
  display: flex;
  gap: 6px;
  margin-top: 8px;
  padding: 0;
}

.media-library-item-actions button {
  flex: 1;
  padding: 6px;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-text);
  border-radius: 6px;
  cursor: pointer;
  transition: all var(--animation-duration) ease;
  display: flex;
  align-items: center;
  justify-content: center;
}

.media-library-item-actions button:hover {
  background: var(--color-surface-alt);
  border-color: var(--color-accent-text);
}

.media-library-item-actions button.delete {
  color: var(--color-status-off);
}

.media-library-item-actions button.delete:hover {
  background: var(--color-status-off);
  color: var(--color-button-text);
  border-color: var(--color-status-off);
}

.media-library-item-actions button:disabled {
  opacity: 0.4;
  cursor: not-allowed;
  background: var(--color-surface);
  border-color: var(--color-border);
}

.media-library-item-actions button:disabled:hover {
  background: var(--color-surface);
  border-color: var(--color-border);
  color: var(--color-text);
}

.media-scroll-sentinel {
  height: 1px;
  width: 100%;
}

.media-library-item-actions button {
  position: relative;
}

.media-library-item-actions button::before {
  content: '';
  display: inline-block;
  width: 16px;
  height: 16px;
  background-color: currentColor;
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
}

.media-library-item-actions button[data-action='download']::before {
  -webkit-mask-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"%3E%3Cpath d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"%3E%3C/path%3E%3Cpolyline points="7 10 12 15 17 10"%3E%3C/polyline%3E%3Cline x1="12" y1="15" x2="12" y2="3"%3E%3C/line%3E%3C/svg%3E');
  mask-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"%3E%3Cpath d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"%3E%3C/path%3E%3Cpolyline points="7 10 12 15 17 10"%3E%3C/polyline%3E%3Cline x1="12" y1="15" x2="12" y2="3"%3E%3C/line%3E%3C/svg%3E');
}

.media-library-item-actions button[data-action='copy-image']::before {
  -webkit-mask-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"%3E%3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"%3E%3C/rect%3E%3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"%3E%3C/path%3E%3C/svg%3E');
  mask-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"%3E%3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"%3E%3C/rect%3E%3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"%3E%3C/path%3E%3C/svg%3E');
}

.media-library-item-actions button[data-action='edit-media']::before {
  -webkit-mask-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"%3E%3Cpath d="M17 3a2.83 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"%3E%3C/path%3E%3C/svg%3E');
  mask-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"%3E%3Cpath d="M17 3a2.83 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"%3E%3C/path%3E%3C/svg%3E');
}

.media-library-item-actions button[data-action='delete']::before {
  -webkit-mask-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"%3E%3Cpolyline points="3 6 5 6 21 6"%3E%3C/polyline%3E%3Cpath d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"%3E%3C/path%3E%3C/svg%3E');
  mask-image: url('data:image/svg+xml;charset=utf-8,%3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"%3E%3Cpolyline points="3 6 5 6 21 6"%3E%3C/polyline%3E%3Cpath d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"%3E%3C/path%3E%3C/svg%3E');
}

/* ========================================
   メディアピッカーモーダル
   ======================================== */

/* プラグイン設定モーダル等 (.confirm-dialog: z-index 10200) からサブモーダルとして開かれるため、 親より上のレイヤーに置く */
.popup-overlay#media-picker-modal {
  z-index: 10300;
}

.media-picker-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 20px;
  border-bottom: 1px solid var(--color-border);
}

.media-picker-tab {
  padding: 12px 24px;
  background: none;
  border: none;
  color: var(--color-text-secondary);
  font-size: 0.95rem;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all 0.2s ease;
}

.media-picker-tab:hover {
  color: var(--color-text);
  background: var(--color-surface-alt);
}

.media-picker-tab--active {
  color: var(--color-accent-text);
  border-bottom-color: var(--color-accent-text);
}

/* プラグイン由来のアクションボタン (画像生成など)。タブと区別するため塗りつぶしで右寄せ。
   薄い accent-base だと背景画像に埋もれるため、濃い primary を使う */
.media-picker-action {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
  align-self: center;
  padding: 8px 16px;
  background: var(--color-primary);
  border: 1px solid var(--color-primary);
  border-radius: 6px;
  color: var(--color-button-text);
  font-size: 0.9rem;
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.2s ease;
}

.media-picker-action svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

.media-picker-action + .media-picker-action {
  margin-left: 8px;
}

.media-picker-action:hover {
  filter: brightness(0.9);
}

.media-picker-panel {
  display: none;
}

.media-picker-panel--active {
  display: block;
}

.media-picker-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  padding: 0 8px;
  margin-bottom: 16px;
}

/* 絞り込み中チップの行（フィルタバーとグリッドの間、空なら共通CSSで非表示） */
.media-active-filters {
  margin: -8px 8px 16px;
}

/* 絞り込み中の該当件数（チップの並びの末尾に置く。チップより一段弱い見え方にする） */
.media-result-count {
  font-size: 0.8rem;
  color: var(--color-text-tertiary);
  margin-left: 2px;
}

/* AIファイル名の候補選択ダイアログ */
.media-filename-candidate-dialog {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 12px;
  padding: 20px;
  min-width: 300px;
  max-width: 420px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.media-filename-candidate-dialog__title {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--color-text);
  margin: 0;
}

.media-filename-candidate-dialog__note {
  font-size: 0.8rem;
  color: var(--color-text-tertiary);
  margin: 0 0 4px;
}

.media-filename-candidate {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.9rem;
  cursor: pointer;
  text-align: left;
}

.media-filename-candidate:hover {
  border-color: var(--color-primary);
  background: var(--color-surface-alt);
}

.media-filename-candidate__label {
  flex-shrink: 0;
  font-size: 0.75rem;
  color: var(--color-text-tertiary);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  padding: 1px 8px;
}

.media-filename-candidate__value {
  word-break: break-all;
}

.media-filename-candidate-dialog__cancel {
  margin-top: 6px;
  padding: 8px 12px;
  border: none;
  background: transparent;
  color: var(--color-text-tertiary);
  font-size: 0.85rem;
  cursor: pointer;
}

.media-filename-candidate-dialog__cancel:hover {
  color: var(--color-text);
}

/* タグ・アップした人フィルタ箱（select-search、同じ行の select・ソートボタンと高さ40pxで揃える） */
.media-filter-box {
  flex-shrink: 0;
}

.media-filter-box .select-search__trigger {
  height: 40px;
  border-radius: 6px;
  font-size: 0.9rem;
}

#media-picker-filter-container {
  align-items: center;
}
#media-view-search {
  max-height: 40px;
}
#media-view-filter,
#media-view-period {
  padding: 12px;
}

input[type='text'].media-picker-search {
  flex: 1;
  padding: 8px 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.9rem;
}

.media-picker-select {
  padding: 8px 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.9rem;
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 12px;
}

.media-picker-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 16px;
  min-height: 300px;
  max-height: 400px;
  overflow-y: auto;
  padding: 8px;
}

/* Media view specific - larger grid items and more visible area */
#media-view .media-picker-grid {
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  max-height: none;
  gap: 16px;
}

/* ドラッグオーバー時のスタイル */
#media-view.media-view--dragover {
  position: relative;
}

#media-view.media-view--dragover::before {
  content: 'ここにファイルをドロップ';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(var(--color-primary-rgb, 59, 130, 246), 0.1);
  border: 3px dashed var(--color-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--color-primary);
  z-index: 1000;
  pointer-events: none;
}

.media-picker-item {
  position: relative;
  border: 2px solid var(--color-border);
  border-radius: 8px;
  padding: 8px;
  cursor: pointer;
  transition: all 0.2s ease;
  background: var(--color-surface);
}

.media-picker-item:hover {
  border-color: var(--color-accent-text);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.media-picker-item--selected {
  border-color: var(--color-accent-text);
  background: rgba(var(--color-accent-rgb), 0.1);
}

.media-picker-item--selected::after {
  content: '';
  position: absolute;
  top: 8px;
  right: 8px;
  width: 24px;
  height: 24px;
  background: var(--color-accent-text);
  border-radius: 50%;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 14px 14px;
  z-index: 1;
}

.media-picker-item-preview {
  width: 100%;
  aspect-ratio: 1;
  border-radius: 4px;
  overflow: hidden;
  background: var(--color-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 8px;
}

.media-picker-item-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.media-picker-file-icon {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--color-muted);
}

.media-picker-item-name {
  font-size: 0.85rem;
  color: var(--color-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-align: center;
}

.media-picker-upload-area {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.media-picker-dropzone {
  border: 2px dashed var(--color-border);
  border-radius: 8px;
  padding: 60px 20px;
  text-align: center;
  cursor: pointer;
  transition: all 0.2s ease;
  background: var(--color-surface);
}

.media-picker-dropzone:hover,
.media-picker-dropzone--active {
  border-color: var(--color-accent-text);
  background: rgba(var(--color-accent-rgb), 0.05);
}

.media-picker-dropzone svg {
  margin: 0 auto 16px;
  color: var(--color-muted);
}

.media-picker-dropzone p {
  color: var(--color-text-secondary);
  font-size: 0.95rem;
}

.media-picker-upload-preview {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: 12px;
}

/* .btn 系はメディアの一括操作 (タグを追加 / AIタグ提案 / 一括圧縮 / ZIP / 削除) が使う。
   これらは**アイコン + 文字の混在**なので共通部品 (window.buttonHtml) の対象外
   (部品 v1 は子要素を持たない、 設計 doc 3-3)。 アイコンボタン部品ができたら移行する。
   文字だけのボタンをここに足さないこと。 2026-08-11 */
.btn {
  padding: 8px 16px;
  border-radius: 5px;
  font-size: 0.85rem;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  border: none;
}

.btn-primary {
  background: var(--color-accent-bg);
  color: var(--color-button-text);
}

.btn-primary:hover:not(:disabled) {
  background: var(--color-accent-hover);
}

.btn-primary:disabled {
  background: var(--color-muted);
  cursor: not-allowed;
  opacity: 0.5;
}

.btn:not(.btn-primary):not(.btn-danger):not(.btn-warning) {
  background: var(--color-bg);
  color: var(--color-text);
  border: 1px solid var(--color-border);
}

.btn:not(.btn-primary):not(.btn-danger):not(.btn-warning):hover {
  background: var(--color-surface-alt);
}

/* さらに読み込むボタン */
.load-more-btn {
  width: auto;
  padding: 6px 16px;
  margin: 8px auto;
  background: transparent;
  color: var(--color-accent);
  border: 1px solid var(--color-border);
  border-radius: 16px;
  font-size: 0.8rem;
  font-weight: 400;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  opacity: 0.7;
}

.load-more-btn:hover {
  opacity: 1;
  background: var(--color-surface);
  border-color: var(--color-accent);
}

.load-more-btn:active {
  transform: scale(0.98);
}

.load-more-btn:disabled {
  background: transparent;
  color: var(--color-muted);
  cursor: not-allowed;
  opacity: 0.4;
}

/* 参加者モーダル */
.participants-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.participant-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 6px 12px;
  background: var(--color-surface);
  border-radius: 8px;
  border: 1px solid var(--color-border);
  transition: background 0.2s ease;
}

.participant-item:hover {
  background: var(--color-surface-alt);
}

.participant-item-avatar {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  background: var(--color-accent-bg);
  color: var(--color-button-text);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
  font-weight: 600;
  flex-shrink: 0;
}

.participant-item-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
}

.participant-item-info {
  flex: 1;
  display: flex;
  justify-content: space-between;
}

.participant-item-name {
  font-weight: 500;
  color: var(--color-text);
}

.participant-item-role {
  font-size: 0.85rem;
  color: var(--color-text-secondary);
  margin-top: 2px;
}

.participant-item-remove-btn {
  width: 28px;
  height: 28px;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-muted);
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  padding: 6px;
  flex-shrink: 0;
}

.participant-item-remove-btn.delete {
  color: var(--color-status-off);
}

.participant-item-remove-btn:hover {
  background: var(--color-surface-alt);
  border-color: var(--color-accent-text);
}

.participant-item-remove-btn.delete:hover {
  background: var(--color-status-off);
  color: var(--color-button-text);
  border-color: var(--color-status-off);
}

.participants-actions {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding-top: 16px;
  border-top: 1px solid var(--color-border);
}

.participants-action-btn {
  padding: 10px 16px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: transparent;
  color: var(--color-text);
  font-size: 0.95rem;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  gap: 8px;
}

.participants-action-btn:hover {
  background: var(--color-surface);
  border-color: var(--color-accent-text);
}

.participants-action-btn svg {
  width: 18px;
  height: 18px;
}

/* メンバー追加モーダル */
.username-suggestions {
  margin-top: 8px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
  max-height: 320px;
  overflow-y: auto;
  display: none;
}

.username-suggestions:not(:empty) {
  display: block;
}

.username-suggestion-item {
  padding: 12px 14px;
  cursor: pointer;
  transition: background 0.2s ease;
  line-height: 1.4;
}

.username-suggestion-item:hover {
  background: var(--color-surface-alt);
}

.username-suggestion-item:not(:last-child) {
  border-bottom: 1px solid var(--color-border);
}

/* popup-actions はui.cssに統一（重複定義を解消） */

/* 返信引用表示 */
.reply-quote {
  background: var(--color-surface-alt);
  border: 1px solid rgba(var(--color-accent-rgb, 101, 116, 205), 0.5);
  border-radius: 8px;
  padding: 12px;
  margin-bottom: 12px;
  position: relative;
  z-index: 10;
}

.reply-quote__header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

.reply-quote__label {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-accent);
}

.reply-quote__close {
  background: none;
  border: none;
  color: var(--color-text-secondary);
  font-size: 1.25rem;
  cursor: pointer;
  padding: 0;
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  transition: background 0.2s ease;
}

.reply-quote__close:hover {
  background: var(--color-surface-alt);
}

.reply-quote__body {
  font-size: 0.875rem;
  color: var(--color-text-secondary);
  line-height: 1.4;
  padding: 8px 12px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: rgba(0, 0, 0, 0.03);
}

/* メッセージ内の返信引用表示（LINEスタイル） */
.message-reply-quote {
  padding: 8px 10px;
  margin-bottom: 8px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  cursor: pointer;
  transition: background 0.2s;
}

.message-reply-quote:hover {
  background: rgba(0, 0, 0, 0.05);
}

.message-reply-quote__header {
  font-weight: 600;
  font-size: 0.7rem;
  color: var(--bubble-text);
  opacity: 0.85;
  margin-bottom: 4px;
  display: flex;
  align-items: center;
  gap: 4px;
}

.message-reply-quote__body {
  font-size: 0.75rem;
  color: var(--bubble-text);
  opacity: 0.65;
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  line-clamp: 2;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  word-break: break-word;
}

/* メッセージハイライト（返信元へのジャンプ時） */
.message--highlight {
  animation: messageHighlight 2s ease-in-out;
}

@keyframes messageHighlight {
  0%,
  100% {
    background: transparent;
  }
  50% {
    background: rgba(var(--color-primary-rgb, 79, 70, 229), 0.1);
  }
}

/* Password field wrapper */
.password-field-wrapper {
  position: relative;
  display: inline-block;
  width: 100%;
}

/* Password toggle button */
.password-toggle-btn {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-muted);
  transition: color 0.2s ease;
  z-index: 10;
}

.password-toggle-btn:hover {
  color: var(--color-text);
}

.password-toggle-btn:focus {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
  border-radius: 4px;
}

.password-toggle-btn .eye-icon {
  display: block;
}

.password-toggle-btn .eye-icon.hidden {
  display: none;
}

/* Activity Logs Modal */
#activity-logs-modal .popup-container {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

#activity-logs-modal .popup-body {
  overflow-y: auto;
}

#log-filter-reset:hover {
  background: var(--color-bg);
  border-color: var(--color-accent-text);
}

#activity-logs-table tbody tr {
  border-bottom: 1px solid var(--color-border);
  transition: background-color 0.15s ease;
}

#activity-logs-table tbody tr:hover {
  background: var(--color-bg);
}

#activity-logs-table tbody tr:nth-child(even) {
  background: var(--color-bg);
}

#activity-logs-table tbody tr:nth-child(even):hover {
  background: var(--color-surface-alt);
}

#activity-logs-table tbody td {
  padding: 14px 16px;
  color: var(--color-text);
  font-size: 0.9rem;
  line-height: 1.5;
}

#activity-logs-table tbody td:first-child {
  color: var(--color-text-secondary);
  font-size: 0.85rem;
  white-space: nowrap;
}

#log-page-prev:not(:disabled),
#log-page-next:not(:disabled) {
  opacity: 1;
  cursor: pointer;
}

#log-page-prev:not(:disabled):hover,
#log-page-next:not(:disabled):hover {
  background: var(--color-surface);
  border-color: var(--color-accent-text);
}

#log-page-prev:disabled,
#log-page-next:disabled {
  cursor: not-allowed;
}

/* Recent Activity Items */
#recent-activity .activity-item {
  transition: background-color 0.15s ease;
}

#recent-activity .activity-item:hover {
  background: var(--color-bg);
}

#recent-activity .activity-item:last-child {
  border-bottom: none;
}

#recent-activity .activity-item[onclick] {
  cursor: pointer;
}

#recent-activity .activity-item[onclick]:active {
  background: var(--color-surface-alt);
}

/* ========================================
   管理者メニュー
   ======================================== */

.media-admin-panel {
  padding: 20px;
}

.media-admin-section {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 24px;
  margin-bottom: 20px;
}

.media-admin-section-title {
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--color-text);
  margin: 0 0 8px 0;
}

.media-admin-section-description {
  font-size: 0.9rem;
  color: var(--color-text-secondary);
  line-height: 1.5;
  margin: 0 0 20px 0;
}

.progress-bar {
  width: 100%;
  height: 8px;
  background: var(--color-bg);
  border-radius: 4px;
  overflow: hidden;
  border: 1px solid var(--color-border);
}

.progress-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--color-accent-bg), var(--color-accent-hover));
  transition: width 0.3s ease;
  border-radius: 4px;
}

.success-message {
  padding: 12px 16px;
  background: rgba(34, 197, 94, 0.1);
  border: 1px solid rgba(34, 197, 94, 0.3);
  border-radius: 6px;
  color: rgb(21, 128, 61);
  font-size: 0.9rem;
}

.success-message p {
  margin: 4px 0;
}

.success-message details {
  margin-top: 8px;
  cursor: pointer;
}

.success-message summary {
  font-weight: 500;
  user-select: none;
  padding: 4px 0;
}

.success-message summary:hover {
  color: rgb(34, 197, 94);
}

.error-message {
  padding: 12px 16px;
  background: rgba(239, 68, 68, 0.1);
  border: 1px solid rgba(239, 68, 68, 0.3);
  border-radius: 6px;
  color: rgb(185, 28, 28);
  font-size: 0.9rem;
}

/* ========================================
   処理中モーダル
   ======================================== */

.processing-modal {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
}

.processing-modal__overlay {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.7);
  backdrop-filter: blur(4px);
}

.processing-modal__content {
  position: relative;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 16px;
  padding: 48px 40px;
  max-width: 500px;
  text-align: center;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
  animation: modalFadeIn 0.3s ease;
}

@keyframes modalFadeIn {
  from {
    opacity: 0;
    transform: scale(0.95) translateY(-20px);
  }
  to {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

.processing-modal__spinner {
  width: 60px;
  height: 60px;
  margin: 0 auto 24px;
  border: 4px solid var(--color-border);
  border-top-color: var(--color-accent-bg);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

.processing-modal__title {
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--color-text);
  margin: 0 0 12px 0;
}

.processing-modal__message {
  font-size: 1rem;
  color: var(--color-text-secondary);
  margin: 0 0 24px 0;
}

.processing-modal__progress {
  margin-bottom: 24px;
}

.processing-modal__progress-bar {
  width: 100%;
  height: 12px;
  background: var(--color-bg);
  border-radius: 6px;
  overflow: hidden;
  border: 1px solid var(--color-border);
  margin-bottom: 12px;
}

.processing-modal__progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--color-accent-bg), var(--color-accent-hover));
  transition: width 0.5s ease;
  border-radius: 6px;
}

.processing-modal__progress-text {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--color-text);
  margin: 0;
}

.processing-modal__warning {
  font-size: 0.9rem;
  color: #f59e0b;
  margin: 0;
  padding: 12px 16px;
  background: rgba(245, 158, 11, 0.1);
  border: 1px solid rgba(245, 158, 11, 0.3);
  border-radius: 8px;
}

/* ========================================
   Note Picker (ノートピッカー)
   ======================================== */

/* ノートピッカーフィルタ（メディアピッカーと統一） */
.note-picker-filter {
  display: flex;
  gap: 12px;
  padding: 0 8px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}

/* ノートピッカーグリッド（3列ベース、レスポンシブ） */
.note-picker-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  min-height: 350px;
  max-height: 450px;
  overflow-y: auto;
  overscroll-behavior: contain; /* スクロール伝播を防止 */
  padding: 8px;
}

/* レスポンシブ対応 */
@media (max-width: 800px) {
  .note-picker-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 550px) {
  .note-picker-grid {
    grid-template-columns: 1fr;
  }
}

/* ノートピッカー内のknowledge-itemスタイル調整 */
.note-picker-grid .knowledge-item {
  border: 2px solid var(--color-border);
  cursor: pointer;
  min-width: 0; /* グリッドに収まるように */
  overflow: hidden;
  height: fit-content; /* 高さを内容に合わせる */
  max-height: 180px; /* 最大高さを制限 */
  align-self: start; /* グリッド内で上揃え */
  position: relative; /* チェックマーク用 */
}

.note-picker-grid .knowledge-item:hover {
  border-color: var(--color-accent-text);
}

/* 選択状態のチェックマーク */
.note-picker-grid .note-picker-item.selected::after {
  content: '';
  position: absolute;
  top: 8px;
  right: 8px;
  width: 24px;
  height: 24px;
  background: var(--color-accent-text);
  border-radius: 50%;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 14px 14px;
}

/* ノートピッカー内のタイトルを折り返し可能に */
.note-picker-grid .knowledge-item-title {
  white-space: normal;
  word-break: break-word;
  -webkit-line-clamp: 2;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ノートピッカー内のメタ情報を縦並びに */
.note-picker-grid .knowledge-item-meta {
  flex-wrap: wrap;
  gap: 4px 8px;
}

/* 選択状態 */
.note-picker-grid .note-picker-item.selected {
  border-color: var(--color-accent-text);
  background: rgba(var(--color-accent-rgb), 0.08);
  box-shadow: 0 0 0 3px rgba(var(--color-accent-rgb), 0.15);
}

/* ノートピッカーフッター */
.note-picker-footer {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 16px;
  border-top: 1px solid var(--color-border);
}

/* 新規作成エリア */
.note-picker-create-area {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 300px;
}

.note-picker-create-message {
  text-align: center;
  color: var(--color-muted);
}

.note-picker-create-message svg {
  margin-bottom: 16px;
  opacity: 0.6;
}

.note-picker-create-message p {
  margin-bottom: 20px;
  font-size: 0.95rem;
}

.note-picker-empty {
  text-align: center;
  padding: 40px 20px;
  color: var(--color-muted);
  grid-column: 1 / -1;
}

/* ノートプレビュー（送信前） */
.note-preview-container {
  display: none;
  padding: 8px;
  border-bottom: 1px solid var(--color-border);
  max-height: 200px;
  overflow-y: auto;
}

.note-preview-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
}

.note-preview-icon {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-accent-bg);
  border-radius: 6px;
  color: var(--color-button-text);
}

.note-preview-icon svg {
  width: 16px;
  height: 16px;
}

.note-preview-info {
  flex: 1;
  min-width: 0;
}

.note-preview-title {
  font-weight: 500;
  color: var(--color-text);
  font-size: 0.9rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.note-preview-meta {
  font-size: 0.8rem;
  color: var(--color-muted);
}

.note-preview-remove {
  background: transparent;
  border: none;
  color: var(--color-muted);
  cursor: pointer;
  padding: 4px;
  border-radius: 4px;
  transition: all 0.2s ease;
}

.note-preview-remove:hover {
  background: var(--color-error);
  color: var(--color-button-text);
}

/* メッセージ内ノートカード */
.message-note-card {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px;
  background: var(--color-self);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  margin-top: 8px;
  cursor: pointer;
  transition: all 0.2s ease;
  text-decoration: none;
}

.message-note-card:hover {
  opacity: 0.85;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}

.message-note-card:hover .message-note-card-arrow {
  transform: translateX(2px);
}

.message-note-card--not-found {
  cursor: default;
  opacity: 0.75;
}

.message-note-card--not-found:hover {
  opacity: 0.75;
  box-shadow: none;
}

.message-note-card-icon {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-accent-bg);
  border-radius: 6px;
  color: var(--color-button-text);
}

.message-note-card-icon svg {
  width: 14px;
  height: 14px;
}

.message-note-card-content {
  flex: 1;
  min-width: 0;
}

.message-note-card-title {
  font-weight: normal;
  font-size: 0.9rem;
  color: var(--color-text);
}

.message-note-card-preview {
  font-size: 0.85rem;
  color: var(--color-muted);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.message-note-card-link {
  font-size: 0.8rem;
  color: var(--color-accent-text);
  margin-top: 6px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.message-note-card-arrow {
  flex-shrink: 0;
  color: var(--color-muted);
  display: flex;
  align-items: center;
  transition: transform 0.2s ease;
}

/* ========================================
   メディアが見つからない場合の表示
   ======================================== */

.message-media-item--not-found {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px;
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  cursor: default;
  opacity: 0.75;
}

.message-media-item--not-found:hover {
  transform: none;
  opacity: 0.75;
}

.message-media-not-found-icon {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-accent-bg);
  border-radius: 6px;
  color: var(--color-button-text);
}

.message-media-not-found-icon svg {
  width: 14px;
  height: 14px;
}

.message-media-not-found-text {
  font-size: 0.9rem;
  color: var(--color-text);
}

/* ========================================
   メディアの閲覧権限がない場合の表示
   ======================================== */

/* 申請ボタンを内包するため全体の opacity は下げない (押せる要素が薄いと操作可能に見えない)。
   「見られない状態」であることは本文テキストの色 (--color-text-secondary) で示す。
   吹き出し幅が狭い場合はボタン / 状態表示を次の行へ折り返す (本文が 1 文字ずつ縦に割れるのを防ぐ) */
.message-media-item--restricted {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 10px;
  padding: 10px;
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  cursor: default;
}

.message-media-item--restricted:hover {
  transform: none;
}

.message-media-item--restricted .message-media-restricted-text {
  color: var(--color-text-secondary);
  /* 本文はこの幅を下回るなら折り返さず、ボタン / 状態表示を次の行へ落とす */
  flex: 1 1 11em;
  min-width: 11em;
}

.message-media-restricted-icon {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-accent-bg);
  border-radius: 6px;
  color: var(--color-button-text);
}

.message-media-restricted-icon svg {
  width: 14px;
  height: 14px;
}

.message-media-restricted-text {
  font-size: 0.9rem;
  color: var(--color-text);
}

/* 閲覧を申請するボタン / 申請中の状態表示 (設計 2026-07-25)
   主役はメッセージ本文なので、 塗りボタンにせず控えめなテキストボタンにする
   (既存 .btn-text と同じ流儀: 背景なし + 下線でクリック可能を示す) */
.message-media-request-btn {
  flex-shrink: 0;
  margin-left: auto;
  white-space: nowrap;
  padding: 2px 4px;
  font-size: 0.8rem;
  font-family: inherit;
  color: var(--color-text-secondary);
  background: transparent;
  border: none;
  border-radius: 4px;
  text-decoration: underline;
  cursor: pointer;
}

.message-media-request-btn:hover {
  color: var(--color-text);
}

.message-media-request-btn:focus-visible {
  outline: 2px solid var(--color-accent-bg);
  outline-offset: 2px;
}

.message-media-restricted-state {
  flex-shrink: 0;
  margin-left: auto;
  white-space: nowrap;
  padding: 2px 4px;
  font-size: 0.8rem;
  color: var(--color-text-tertiary);
}

/* ========================================
   詳細設定（Progressive Disclosure）
   ======================================== */

.media-advanced-settings {
  margin-top: 16px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
}

.media-info-bar {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px;
  padding: 8px 12px;
  margin: 0 0 12px;
  background: var(--color-surface-alt, #f0f2f5);
  border-radius: 6px;
  font-size: 0.6875rem;
  color: var(--color-text-secondary, #6b7280);
}

.media-info-item {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  white-space: nowrap;
}

.media-info-item svg {
  opacity: 0.6;
}

.media-info-divider {
  width: 1px;
  height: 12px;
  background: var(--color-border, #d1d5db);
}

.media-info-uploader {
  cursor: pointer;
  gap: 4px;
}

.media-info-uploader:hover {
  opacity: 0.8;
}

.media-info-uploader__avatar {
  width: 1.125rem;
  height: 1.125rem;
  border-radius: 50%;
  overflow: hidden;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--color-bg-secondary, rgba(255, 255, 255, 0.08));
  font-size: 0.6rem;
  font-weight: 600;
  color: var(--color-muted);
  flex-shrink: 0;
  vertical-align: middle;
}

.media-info-uploader__avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.media-preview-edit-row {
  display: flex;
  justify-content: center;
  padding: 4px 0 8px;
}

.media-preview-edit-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 14px;
  border: 1px solid var(--color-border, #d1d5db);
  border-radius: 4px;
  background: none;
  color: var(--color-text-secondary, #6b7280);
  font-size: 0.75rem;
  cursor: pointer;
  transition:
    background 0.15s,
    color 0.15s;
}

.media-preview-edit-btn:hover {
  background: var(--color-surface-alt, #f0f2f5);
  color: var(--color-text, #2c3e50);
}

.media-advanced-settings-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  cursor: pointer;
  user-select: none;
  font-weight: 500;
  color: var(--color-text);
  transition: background 0.2s ease;
  list-style: none;
}

.media-advanced-settings-toggle::-webkit-details-marker {
  display: none;
}

.media-advanced-settings-toggle::before {
  content: '';
  width: 8px;
  height: 8px;
  border-right: 2px solid var(--color-muted);
  border-bottom: 2px solid var(--color-muted);
  transform: rotate(-45deg);
  transition: transform 0.2s ease;
  margin-right: 8px;
}

.media-advanced-settings[open] .media-advanced-settings-toggle::before {
  transform: rotate(45deg);
}

.media-advanced-settings-toggle:hover {
  background: var(--color-surface-alt);
}

.media-advanced-settings-hint {
  font-size: 0.85rem;
  font-weight: 400;
  color: var(--color-muted);
}

.media-advanced-settings-content {
  padding: 16px;
  border-top: 1px solid var(--color-border);
}

.media-advanced-settings-content .media-edit-field {
  margin-bottom: 16px;
}

.media-advanced-settings-content .media-edit-field:last-child {
  margin-bottom: 0;
}

/* ========================================
   公開範囲（Visibility）
   ======================================== */

/* カードのバッジ */
.media-visibility-badge {
  position: absolute;
  top: 6px;
  right: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  color: var(--color-button-text);
  z-index: 2;
  pointer-events: none;
}

.media-visibility-badge--private {
  background: var(--color-error, #e74c3c);
}

.media-visibility-badge--role {
  background: var(--color-warning, #f39c12);
}

.media-visibility-badge--shared {
  background: var(--color-info, #3498db);
}

.media-visibility-badge--team {
  background: var(--color-success, #27ae60);
}

.media-library-item {
  position: relative;
}

/* チャット添付プレビュー: 「全員に公開」ラベル (非公開チャットに public のまま添付する時の可視化) */
.media-preview-public-label {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 1px 2px;
  font-size: 0.5625rem;
  line-height: 1.3;
  text-align: center;
  color: var(--color-button-text);
  background: rgba(0, 0, 0, 0.65);
  pointer-events: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  z-index: 2;
}

/* 編集モーダル: 公開範囲セレクト */
.media-edit-select {
  width: 100%;
  padding: 8px 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-bg-secondary, var(--color-bg));
  color: var(--color-text);
  font-size: 0.875rem;
  cursor: pointer;
}

.media-edit-select:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 2px var(--color-primary-alpha, rgba(59, 130, 246, 0.2));
}

.media-edit-sub-field {
  margin-top: 8px;
}

.media-edit-checkbox-list {
  max-height: 200px;
  overflow-y: auto;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  padding: 8px;
  background: var(--color-bg-secondary, var(--color-bg));
}

.media-edit-checkbox-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 4px;
  cursor: pointer;
  border-radius: 4px;
  font-size: 0.875rem;
  color: var(--color-text);
}

.media-edit-checkbox-item:hover {
  background: var(--color-surface-alt);
}

.media-edit-checkbox-item input[type='checkbox'] {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

.media-edit-hint {
  color: var(--color-muted);
  font-size: 0.8125rem;
  padding: 4px;
}

/* 申請により許可した相手の読み取り専用表示 (設計 2026-07-25 の 8.3)
   公開範囲のチェックボックスとは別レイヤーの許可なので、 枠を分けて示す */
.media-edit-access-grants:not(:empty) {
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--color-border);
}

.media-edit-access-grants__label {
  font-size: 0.75rem;
  color: var(--color-muted);
  margin-bottom: 4px;
}

.media-edit-access-grants__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.media-edit-access-grants__item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 4px 0;
}

.media-edit-access-grants__name {
  font-size: 0.8125rem;
  color: var(--color-text);
  word-break: break-word;
}

/* 取り消しは破壊的操作。 実行系より控えめな見た目にして誤操作を防ぐ */
.media-edit-access-grants__revoke {
  flex-shrink: 0;
  background: none;
  border: none;
  padding: 4px 6px;
  font-size: 0.75rem;
  color: var(--color-muted);
  cursor: pointer;
  border-radius: 4px;
}

.media-edit-access-grants__revoke:hover:not(:disabled) {
  color: var(--color-danger);
  background: rgba(var(--color-bg-rgb), 0.6);
}

.media-edit-access-grants__revoke:disabled {
  opacity: 0.5;
  cursor: default;
}

/* メディア重複警告モーダル (アップロード時) */
.media-duplicate-summary {
  margin: 0 0 16px 0;
  color: var(--color-text);
  font-size: 0.875rem;
  line-height: 1.6;
}

.media-duplicate-details {
  border-top: 1px solid var(--color-border);
  padding-top: 12px;
}

.media-duplicate-summary-toggle {
  cursor: pointer;
  color: var(--color-link, var(--color-primary));
  font-size: 0.8125rem;
  user-select: none;
  padding: 4px 0;
  list-style: none;
}

.media-duplicate-summary-toggle::-webkit-details-marker {
  display: none;
}

.media-duplicate-summary-toggle::before {
  content: '▶';
  display: inline-block;
  margin-right: 6px;
  font-size: 10px;
  transition: transform 0.15s ease;
}

.media-duplicate-details[open] .media-duplicate-summary-toggle::before {
  transform: rotate(90deg);
}

.media-duplicate-list {
  list-style: none;
  margin: 8px 0 0 0;
  padding: 0;
  max-height: 320px;
  overflow-y: auto;
  border: 1px solid var(--color-border);
  border-radius: 6px;
}

.media-duplicate-list-item {
  padding: 8px 12px;
  border-bottom: 1px solid var(--color-border);
  font-size: 0.8125rem;
  color: var(--color-text);
}

.media-duplicate-list-item:last-child {
  border-bottom: none;
}

.media-duplicate-list-item-name {
  font-weight: 600;
  word-break: break-all;
}

.media-duplicate-list-item-meta {
  color: var(--color-muted);
  font-size: 0.75rem;
  margin-top: 2px;
  word-break: break-all;
}

/* 重複チェック (管理者メニュー) */
.media-duplicate-scan-status {
  margin-top: 12px;
  padding: 10px 14px;
  background: var(--color-surface-alt);
  border-left: 3px solid var(--color-accent-strong);
  border-radius: 4px;
  font-size: 0.8125rem;
  color: var(--color-text);
}

.media-duplicate-scan-result {
  margin-top: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.media-duplicate-group-card {
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 12px 14px;
  background: var(--color-surface);
}

.media-duplicate-group-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.media-duplicate-group-summary-wrap {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  flex: 1;
}

.media-duplicate-group-summary {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-text);
}

.media-duplicate-group-preset-hint {
  font-size: 0.75rem;
  color: var(--color-muted);
  word-break: break-all;
}

.media-duplicate-group-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.media-duplicate-group-details {
  margin-top: 12px;
  border-top: 1px solid var(--color-border);
  padding-top: 8px;
}

.media-duplicate-group-summary-toggle {
  cursor: pointer;
  color: var(--color-link, var(--color-primary));
  font-size: 0.8125rem;
  padding: 4px 0;
  user-select: none;
  list-style: none;
}

.media-duplicate-group-summary-toggle::-webkit-details-marker {
  display: none;
}

.media-duplicate-group-summary-toggle::before {
  content: '▶';
  display: inline-block;
  margin-right: 6px;
  font-size: 10px;
  transition: transform 0.15s ease;
}

.media-duplicate-group-details[open] .media-duplicate-group-summary-toggle::before {
  transform: rotate(90deg);
}

.media-duplicate-item-list {
  list-style: none;
  margin: 8px 0 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.media-duplicate-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-bg);
}

.media-duplicate-item-checkbox {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

.media-duplicate-item-thumb {
  width: 48px;
  height: 48px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-surface-alt);
  border-radius: 4px;
  overflow: hidden;
  font-size: 10px;
  color: var(--color-muted);
}

.media-duplicate-item-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.media-duplicate-item-thumb--placeholder {
  font-weight: 600;
  text-transform: uppercase;
}

.media-duplicate-item-info {
  flex: 1;
  min-width: 0;
}

.media-duplicate-item-name {
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--color-text);
  word-break: break-all;
}

.media-duplicate-item-badge {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  border-radius: 4px;
  background: var(--color-accent-strong);
  color: var(--color-button-text, #fff);
  font-size: 10px;
  font-weight: 600;
}

.media-duplicate-item-meta {
  font-size: 0.6875rem;
  color: var(--color-muted);
  margin-top: 2px;
}

.media-duplicate-custom-delete {
  margin-top: 10px;
}


/* ==== css/components/tag-section.css ==== */
/* ===== タグセクション（共通） ===== */
/* knowledge-tags.ts / media-tags.ts の共通コンポーネント tag-section-ui.ts が使うスタイル */

.tag-section-container {
  padding: 4px 0 8px;
}

.tag-sections-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 6px 12px 4px;
}

.tag-sections-label {
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--color-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.tag-add-section-btn {
  font-size: 0.72rem;
  color: var(--color-muted);
  background: none;
  border: none;
  cursor: pointer;
  padding: 2px 4px;
  border-radius: 4px;
  transition:
    color 0.15s,
    background 0.15s;
}

.tag-add-section-btn:hover {
  color: var(--color-text);
  background: var(--color-surface-alt);
}

/* セクション全体 */

.tag-section {
  margin-bottom: 2px;
}

.tag-section + .tag-section {
  margin-top: 4px;
}

/* セクションタイトル行 */

.tag-section-title {
  display: flex;
  align-items: center;
  gap: 2px;
  padding-right: 4px;
  background: var(--color-surface);
  border-radius: 4px;
}

.tag-section-toggle {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 4px 8px 4px 10px;
  background: none;
  border: none;
  cursor: pointer;
  color: var(--color-muted);
  font-size: 0.8rem;
  font-weight: 500;
  text-align: left;
  border-radius: 4px;
  transition:
    color 0.15s,
    background 0.15s;
  min-width: 0;
}

.tag-section-toggle:hover {
  color: var(--color-text);
  background: var(--color-surface-alt);
}

.tag-section-chevron {
  flex-shrink: 0;
  width: 14px;
  height: 14px;
  transition: transform 0.2s;
}

.tag-section.is-collapsed .tag-section-chevron {
  transform: rotate(-90deg);
}

.tag-section-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* セクション見出しの 編集 / 削除 ボタン (hover で表示) */
.tag-section-actions {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 2px;
  opacity: 0;
  transition: opacity 0.15s;
}

.tag-section-title:hover .tag-section-actions {
  opacity: 1;
}

.tag-section-action-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  background: none;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  color: var(--color-muted);
  transition: background 0.15s;
}

.tag-section-action-btn:hover {
  background: var(--color-surface-alt);
  color: var(--color-text);
}

.tag-section-action-btn--danger:hover {
  color: var(--color-danger);
}

/* セクション並び替えD&D */

.tag-section-title[draggable='true'] {
  cursor: grab;
}

.tag-section-title[draggable='true']:active {
  cursor: grabbing;
}

.tag-section-title.section-dragging {
  opacity: 0.4;
}

.tag-section-title.section-drag-over {
  outline: 1px dashed var(--color-accent-text);
  border-radius: 4px;
}

/* セクション内タグリスト */

.tag-section-tags {
  list-style: none;
  margin: 0;
  padding: 2px 0 0;
  min-height: 4px;
  border-radius: 4px;
  transition: background 0.15s;
}

.tag-section.is-collapsed .tag-section-tags {
  display: none;
}

/* セクション内タグアイテム */

.tag-section-tag-item {
  cursor: grab;
  display: flex;
  align-items: center;
  position: relative;
}

.tag-section-tag-item .sidebar__menu-link {
  flex: 1;
  width: auto;
  padding-right: 32px;
}

.tag-section-tag-item.is-dragging {
  opacity: 0.4;
}

/* D&D挿入インジケーター */

.tag-section-tag-item[data-drag-insert-pos='before']::before {
  content: '';
  position: absolute;
  top: 0;
  left: 8px;
  right: 8px;
  height: 2px;
  background: var(--color-primary);
  border-radius: 1px;
}

.tag-section-tag-item[data-drag-insert-pos='after']::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 8px;
  right: 8px;
  height: 2px;
  background: var(--color-primary);
  border-radius: 1px;
}

.tag-section-tag-item .tag-context-btn {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
  width: 24px;
  height: 24px;
  border: none;
  background: transparent;
  color: var(--color-text);
  font-size: 1rem;
  font-weight: bold;
  border-radius: 4px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: all var(--animation-duration) ease;
}

@media (hover: hover) and (pointer: fine) {
  .tag-section-tag-item:hover .tag-context-btn {
    opacity: 1;
  }

  .tag-section-tag-item:hover .sidebar__menu-link {
    background: var(--color-target);
  }

  .tag-section-tag-item .tag-context-btn:hover {
    background: var(--color-target);
    color: var(--color-accent-strong);
  }
}

/* セクション追加フォーム */

.tag-add-section-form {
  padding: 6px 10px;
  border-top: 1px solid var(--color-border);
  margin-top: 4px;
}

.tag-add-section-input {
  width: 100%;
  padding: 5px 8px;
  background: var(--color-input-bg, var(--color-surface));
  border: 1px solid var(--color-border);
  border-radius: 4px;
  color: var(--color-text);
  font-size: 0.82rem;
  box-sizing: border-box;
  outline: none;
  transition: border-color 0.15s;
}

.tag-add-section-input:focus {
  border-color: var(--color-primary);
}

.tag-add-section-actions {
  display: flex;
  gap: 6px;
  justify-content: flex-end;
  margin-top: 6px;
}

.tag-add-section-cancel,
.tag-add-section-save {
  padding: 3px 10px;
  font-size: 0.78rem;
  border-radius: 4px;
  border: none;
  cursor: pointer;
  transition: background 0.15s;
}

.tag-add-section-cancel {
  background: var(--color-surface-alt);
  color: var(--color-muted);
}

.tag-add-section-cancel:hover {
  background: var(--color-border);
}

.tag-add-section-save {
  background: var(--color-primary);
  color: var(--color-button-text);
}

.tag-add-section-save:hover {
  opacity: 0.85;
}

/* コンテキストメニュー */

.tag-context-menu {
  position: fixed;
  z-index: 9000;
  min-width: 160px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);
  padding: 4px 0;
  overflow: hidden;
}

.tag-context-menu-group {
  padding-bottom: 4px;
}

.tag-context-menu-label {
  padding: 4px 12px 2px;
  font-size: 0.72rem;
  color: var(--color-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.tag-context-menu-divider {
  height: 1px;
  background: var(--color-border);
  margin: 4px 0;
}

.tag-context-menu-item {
  display: block;
  width: 100%;
  padding: 7px 14px;
  background: none;
  border: none;
  text-align: left;
  font-size: 0.83rem;
  color: var(--color-text);
  cursor: pointer;
  transition: background 0.12s;
}

.tag-context-menu-item:hover {
  background: var(--color-surface-alt);
}

.tag-context-menu-item--danger {
  color: var(--color-error, #e53935);
}

.tag-context-menu-item--danger:hover {
  background: rgba(229, 57, 53, 0.08);
}

/* タグ色設定ポップオーバー */

.tag-color-picker-popover {
  position: fixed;
  z-index: 9001;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);
  padding: 10px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.tag-color-picker-swatches {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.tag-color-swatch {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 2px solid transparent;
  cursor: pointer;
  transition:
    transform 0.12s,
    border-color 0.12s;
  flex-shrink: 0;
}

.tag-color-swatch:hover {
  transform: scale(1.15);
}

.tag-color-swatch.is-selected {
  border-color: var(--color-text);
}

.tag-color-clear {
  background: none;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  color: var(--color-muted);
  font-size: 0.78rem;
  padding: 4px 8px;
  cursor: pointer;
  text-align: center;
  transition: background 0.12s;
}

.tag-color-clear:hover {
  background: var(--color-surface-alt);
  color: var(--color-text);
}

/* タグ検索ボックス (タグが多い時だけ表示) */
.tag-search-box {
  padding: 4px 8px 6px;
}

.tag-search-input {
  width: 100%;
  padding: 5px 8px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.8125rem;
  outline: none;
}

.tag-search-input:focus {
  border-color: var(--color-accent, #a4b2dd);
}

/* 検索中は折りたたみを一時展開する (保存状態は変えない) */
.tag-section-container.is-searching .tag-section.is-collapsed .tag-section-tags {
  display: block;
}


/* ==== css/components/date-picker.css ==== */
/**
 * Date Picker（共通コンポーネント）
 * ブラウザ標準の日付入力を使わないための独自カレンダー。
 * 元は task-manager の picker.js 内にあったものを、他プラグインからも使えるように切り出した。
 */

.date-picker {
  position: fixed;
  /* 各種モーダル (10000〜10300) の中から開かれるため、 その上に出す。
     最上位の再認証モーダル (10500) は超えない */
  z-index: 10400;
  background: var(--color-surface, #fafbfc);
  border: 1px solid var(--color-border, #d1d5db);
  border-radius: 8px;
  box-shadow:
    0 8px 24px rgba(0, 0, 0, 0.15),
    0 2px 8px rgba(0, 0, 0, 0.1);
  padding: 12px;
  width: 280px;
  backdrop-filter: blur(8px);
}

.date-picker__header {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  margin-bottom: 8px;
}

.date-picker__header-title {
  display: inline-flex;
  gap: 6px;
  align-items: center;
  min-width: 100px;
  justify-content: center;
}

/* 見出しの年・月はプルダウンで直接選べる。見た目は見出しの文字のままにして、押せることは小さな矢印で示す */
.date-picker__pick {
  position: relative;
  display: inline-flex;
  align-items: center;
}
.date-picker__pick::after {
  content: '';
  position: absolute;
  right: 6px;
  top: 50%;
  width: 6px;
  height: 6px;
  border-right: 1.5px solid var(--color-text-secondary, #596275);
  border-bottom: 1.5px solid var(--color-text-secondary, #596275);
  transform: translateY(-70%) rotate(45deg);
  pointer-events: none;
}
.date-picker__select {
  appearance: none;
  -webkit-appearance: none;
  font: inherit;
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--color-text, #2c3e50);
  background: transparent;
  border: none;
  border-radius: 4px;
  padding: 4px 20px 4px 4px;
  min-height: 32px;
  cursor: pointer;
}
.date-picker__select:hover {
  background: var(--color-target, #e8f0ff);
}
/* タッチ端末では 16px 未満の入力欄にフォーカスすると画面が拡大されるので、見出しの選択肢だけ 1rem にする */
@media (hover: none) {
  .date-picker__select {
    font-size: 1rem;
  }
}
.date-picker__select:focus-visible {
  outline: 2px solid var(--color-accent-strong, #4457c9);
  outline-offset: 1px;
}

.date-picker__nav {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--color-text-secondary, #596275);
  font-size: 0.875rem;
  padding: 2px 6px;
  border-radius: 4px;
  transition: background 0.15s;
  line-height: 1;
}

.date-picker__nav:hover {
  background: var(--color-target, #e8f0ff);
}

.date-picker__weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  text-align: center;
  font-size: 0.6875rem;
  color: var(--color-text-secondary, #596275);
  margin-bottom: 4px;
  font-weight: 500;
}

.date-picker__grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
}

.date-picker__day {
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  border-radius: 50%;
  cursor: pointer;
  transition:
    background 0.1s,
    color 0.1s;
  color: var(--color-text, #2c3e50);
  border: none;
  background: none;
  padding: 0;
}

.date-picker__day:hover {
  background: var(--color-target, #e8f0ff);
}

.date-picker__day--other-month {
  color: var(--color-text-tertiary, #b0b8c4);
}

.date-picker__day--today {
  font-weight: 700;
  box-shadow: inset 0 0 0 1px var(--color-accent-base, #a4b2dd);
}

.date-picker__day--selected {
  background: var(--color-accent-base, #a4b2dd);
  color: var(--color-button-text);
  font-weight: 600;
}

.date-picker__day--selected:hover {
  background: var(--color-accent-hover, #8091d4);
}

.date-picker__day--in-range {
  background: rgba(164, 178, 221, 0.2);
}

.date-picker__day--preview-range {
  background: rgba(164, 178, 221, 0.1);
}

.date-picker__day--disabled {
  color: var(--color-text-tertiary, #b0b8c4);
  opacity: 0.4;
  cursor: default;
  pointer-events: none;
}

.date-picker__separator {
  border-top: 1px solid var(--color-border, #d1d5db);
  margin: 8px 0;
}

/* 適用方式 (confirm: true) のときだけ出る、 選択中の状態とキャンセル / 決定 */
.date-picker__selection {
  font-size: 0.75rem;
  color: var(--color-text-secondary, #596275);
  text-align: center;
  margin-bottom: 8px;
}

.date-picker__actions {
  display: flex;
  justify-content: flex-end;
  gap: 6px;
}

.date-picker__presets {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}

.date-picker__options {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.8125rem;
}

.date-picker__options label {
  display: flex;
  /* 全体の label は縦積みなので、 ここは チェック + 文字 を横に並べる */
  flex-direction: row;
  align-items: center;
  gap: 6px;
  color: var(--color-text, #2c3e50);
  cursor: pointer;
}

/* 右側の クリア / 決定 のまとまり */
.date-picker__options-right {
  display: flex;
  align-items: center;
  gap: 6px;
}

/* 期間固定で開いたとき、 いま始点と終点のどちらを選ぶ番かを出す */
.date-picker__range-hint {
  color: var(--color-text-secondary, #596275);
}

/* 追加行 (リマインダーの時刻欄など、 呼び出し側が差し込む領域) */
.date-picker__extra-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 4px 0;
  font-size: 0.8125rem;
}

.date-picker__extra-label {
  color: var(--color-text, #2c3e50);
  font-weight: 500;
  margin-right: 4px;
}

.date-picker__extra-select {
  padding: 3px 6px;
  border: 1px solid var(--color-border, #d1d5db);
  border-radius: 4px;
  background: var(--color-surface, #fff);
  color: var(--color-text, #2c3e50);
  font-size: 0.8125rem;
  cursor: pointer;
}

.date-picker__extra-separator {
  color: var(--color-text, #2c3e50);
  font-weight: 600;
}

/* 時刻を選ぶ欄 (bindTimeField、 input type=time の置き換え)。 時と分の select を並べる */
.time-field {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.time-field__select {
  padding: 6px 8px;
  border: 1px solid var(--color-border, #d1d5db);
  border-radius: 6px;
  background: var(--color-surface, #fafbfc);
  color: var(--color-text, #2c3e50);
  font-size: 0.875rem;
  font-family: inherit;
  cursor: pointer;
}

.time-field__select:focus {
  outline: none;
  border-color: var(--color-accent-text, #5b6b9d);
}

.time-field__separator {
  color: var(--color-text, #2c3e50);
  font-weight: 600;
}

/* bindDateField / bindDateTimeField で使うボタンの既定。 プラグイン側で見た目を
   上書きしていない場合に、 テキスト入力 (base.css の input[type='text']) と同じ
   枠・余白・書体に見えるようにする。
   プラグイン固有のクラス (.aw-date-input 等) が付いていればそちらが優先される */
[data-date-field],
[data-datetime-field] {
  background: var(--color-surface);
  border: 2px solid var(--color-border);
  border-radius: 0.5rem;
  padding: 0.5rem 0.75rem;
  font-size: 0.92rem;
  color: var(--color-text);
  font-family: inherit;
  text-align: left;
  cursor: pointer;
  transition: all var(--animation-duration) cubic-bezier(0.4, 0, 0.2, 1);
}

[data-date-field]:focus,
[data-datetime-field]:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

[data-date-field]:disabled,
[data-datetime-field]:disabled {
  opacity: 0.5;
  cursor: default;
}

/* 呼び出し側に置く「日付の表示欄」。 押すとピッカーが開く */
.date-field {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-wrap: nowrap;
}

.date-field__display {
  display: flex;
  align-items: center;
  gap: 6px;
  cursor: pointer;
  padding: 6px 10px;
  border: 1px solid var(--color-border, #d1d5db);
  border-radius: 6px;
  font-size: 0.8125rem;
  color: var(--color-text, #2c3e50);
  background: var(--color-surface, #fafbfc);
  transition: border-color 0.15s;
  flex: 1;
  min-width: 0;
}

.date-field__display:hover {
  border-color: var(--color-accent-base, #a4b2dd);
}

.date-field__display--empty {
  color: var(--color-text-tertiary, #b0b8c4);
}

/* .date-picker__btn / --confirm / __clear-btn / __preset-btn は
   2026-08-12 に v2 の部品へ移行 (window.buttonHtml)。 配線は data-action / data-preset。 */


/* ==== css/components/filter-chips.css ==== */
/* 絞り込み中チップ（共通部品 filter-chips.ts） */

.filter-chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}

.filter-chips:empty {
  display: none;
}

.filter-chips__label {
  font-size: 0.8rem;
  color: var(--color-text-tertiary);
}

.filter-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 10px;
  font-size: 0.8rem;
  color: var(--color-text);
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 14px;
  cursor: pointer;
}

.filter-chip:hover {
  background: var(--color-surface);
}

.filter-chip__x {
  font-size: 1rem;
  line-height: 1;
  color: var(--color-text-tertiary);
}

.filter-chip--all {
  color: var(--color-text-tertiary);
}


/* ==== css/components/tag-chip.css ==== */
/* ===== タグのチップ (共有部品)
   一覧の行に付けるタグ表示と、 編集画面でタグを付け外しする picker の見た目。
   値はサイト監視の .em-tag-chip に揃えている (監視が全体タグへ寄せるときにここへ移す)。
   使い方:
     <div class="tag-chip-list"><span class="tag-chip">名前</span>...</div>
     <label class="tag-chip tag-chip--clickable [tag-chip--active]"><input type="checkbox" class="tag-chip-cb"> 名前</label>
   設計書: docs/design/2026-09-04_analytics_tags_and_reorder_design.md 3-1 */

.tag-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.tag-chip {
  display: inline-flex;
  /* label 要素の共通スタイル (ui.css: flex-direction column / font-weight) に負けないよう明示する */
  flex-direction: row;
  align-items: center;
  gap: 4px;
  font-weight: 400;
  padding: 2px 8px;
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: 999px;
  font-size: 0.75rem;
  color: var(--color-text-secondary);
  white-space: nowrap;
}

.tag-chip--clickable {
  cursor: pointer;
  user-select: none;
}

.tag-chip--active {
  background: var(--color-primary);
  color: var(--color-button-text);
  border-color: transparent;
}

.tag-chip-cb {
  margin: 0;
}

/* picker (編集画面の中) */
.tag-picker {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.tag-picker-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  min-height: 28px;
}

.tag-picker-empty {
  color: var(--color-text-secondary);
  font-size: 0.8125rem;
}

.tag-picker-create-row {
  display: flex;
  gap: 6px;
}

.tag-picker-create-input {
  flex: 1;
}


/* ==== css/components/select-search.css ==== */
/* Select Search（検索絞り込みつきドロップダウン、共通コンポーネント） */

.select-search {
  display: inline-block;
}

.select-search__trigger {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  border: 1px solid var(--color-border, #d1d5db);
  border-radius: 6px;
  background: var(--color-surface, #fafbfc);
  color: var(--color-text, #2c3e50);
  font-size: 0.813rem;
  cursor: pointer;
  max-width: 200px;
}

/* フォームの 1 行を占める置き方 (素の select の form-input-full / modal-input と同じ幅感) */
.select-search--block {
  display: block;
}

.select-search--block .select-search__trigger {
  width: 100%;
  max-width: none;
  justify-content: space-between;
}

.select-search__trigger:hover {
  border-color: var(--color-text-secondary, #6b7280);
}

.select-search__trigger--placeholder {
  color: var(--color-text-secondary, #6b7280);
}

.select-search__trigger-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.select-search__chevron {
  display: inline-flex;
  flex-shrink: 0;
  color: var(--color-text-secondary, #6b7280);
}

.select-search__popup {
  position: fixed;
  /* 開いているドロップダウンは常に最前面に出す。メニューパネル (3000 帯) だけでなく
   * 中央モーダル (10000 帯、経理の経費入力等) から呼ばれても選択肢が潜らない値にする
   * (picker SidePanel の 10300 上書きと同じ考え方) */
  z-index: 10300;
  display: flex;
  flex-direction: column;
  padding: 4px;
  max-height: 320px;
  max-width: min(320px, calc(100vw - 16px));
  background: var(--color-surface, #fafbfc);
  border: 1px solid var(--color-border, #d1d5db);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
}

.select-search__search {
  margin: 4px 4px 6px;
  padding: 6px 8px;
  border: 1px solid var(--color-border, #d1d5db);
  border-radius: 6px;
  background: var(--color-bg, #ffffff);
  color: var(--color-text, #2c3e50);
  font-size: 0.813rem;
}

.select-search__search:focus {
  outline: none;
  border-color: var(--color-accent, #a4b2dd);
}

.select-search__list {
  overflow-y: auto;
  /* 一覧の端でホイールを回しても後ろの画面に伝えない (画面が動くとポップアップが閉じる) */
  overscroll-behavior: contain;
}

.select-search__option {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  min-height: 36px;
  padding: 8px 10px;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: var(--color-text, #2c3e50);
  font-size: 0.813rem;
  text-align: left;
  cursor: pointer;
}

.select-search__option--active {
  background: color-mix(in srgb, var(--color-accent, #a4b2dd) 18%, transparent);
}

.select-search__option--selected {
  font-weight: 600;
}

.select-search__option--clear {
  margin-top: 4px;
  border-top: 1px solid var(--color-border, #d1d5db);
  border-radius: 0 0 6px 6px;
  color: var(--color-text-secondary, #6b7280);
}

.select-search__option-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.select-search__dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  flex-shrink: 0;
}

/* 複数選択モードのチェックボックス表示 */
.select-search__check {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  border: 1px solid var(--color-border, #d1d5db);
  border-radius: 3px;
  background: var(--color-bg, #ffffff);
  color: transparent;
  flex-shrink: 0;
}

.select-search__check--on {
  border-color: var(--color-accent, #a4b2dd);
  background: var(--color-accent, #a4b2dd);
  color: var(--color-button-text);
}

/* クリア行の位置合わせ用（枠線は出さない） */
.select-search__check--spacer {
  border-color: transparent;
  background: transparent;
}

.select-search__empty {
  padding: 10px;
  color: var(--color-text-secondary, #6b7280);
  font-size: 0.813rem;
}


/* ==== css/components/media-side-panel.css ==== */
/* ==========================================================================
   Media SidePanel - メディア詳細を SidePanel に表示するスタイル
   共有クラス（.media-info-bar / .media-edit-field / .media-preview など）は
   layout.css で定義されたものを流用する。
   ========================================================================== */

.media-side-panel-content {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 12px 16px 24px;
}

/* プレビュー領域: SidePanel 幅にフィット、過大な縦伸びを防ぐ */
.media-side-panel-preview {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-surface-alt);
  border-radius: 8px;
  overflow: hidden;
  max-height: 40vh;
  min-height: 120px;
}

.media-side-panel-preview img,
.media-side-panel-preview video {
  max-width: 100%;
  max-height: 40vh;
  object-fit: contain;
  display: block;
}

.media-side-panel-preview audio {
  width: 100%;
}

.media-side-panel-preview .file-icon-preview {
  padding: 32px;
}

/* iframe(HTML/PDF)・テキストプレビューは縦に広く取る */
.media-side-panel-preview:has(.media-preview-frame),
.media-side-panel-preview:has(.media-preview-text) {
  max-height: 65vh;
  align-items: stretch;
}

.media-preview-frame {
  width: 100%;
  height: 60vh;
  border: 0;
  border-radius: 8px;
  background: #fff;
  display: block;
}

.media-preview-text {
  width: 100%;
  max-height: 60vh;
  margin: 0;
  padding: 12px 14px;
  overflow: auto;
  background: var(--color-surface);
  color: var(--color-text);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.75rem;
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-word;
  text-align: left;
}

/* プレビュー直下のアクション行: 左にリアクション、右に画像編集ボタン (画像のみ)。
   リアクションが多段に折り返してもボタンは潰さず右上に固定する */
.media-side-panel-expand-row {
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  gap: 8px;
  min-height: 28px;
}

.media-side-panel-expand-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  font-size: 0.8rem;
  background: transparent;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  color: var(--color-text);
  cursor: pointer;
  transition: background 0.15s;
  flex-shrink: 0;
  white-space: nowrap;
}

.media-side-panel-expand-btn:hover {
  background: var(--color-surface-alt);
}

/* 説明文 textarea: SidePanel 幅にフィット、最低高さ確保 */
.media-side-panel-content .media-edit-field textarea {
  width: 100%;
  min-height: 100px;
  resize: vertical;
  box-sizing: border-box;
}

/* 自動保存ステータス (説明文 label 横、 description / tags 共通) */
.media-side-panel-save-status {
  margin-left: 8px;
  font-size: 0.75rem;
  color: var(--color-muted);
  font-style: italic;
}

.media-side-panel-save-status--error {
  color: var(--color-error, #c0392b);
  font-style: normal;
}

/* 公開範囲 適用ボタン (誤操作リスク排除のため確定方式) */
.media-side-panel-visibility-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: 8px;
}

.media-side-panel-visibility-apply-btn {
  padding: 6px 14px;
  font-size: 0.85rem;
  background: var(--color-primary);
  color: var(--color-on-primary, #fff);
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: background 0.15s;
}

.media-side-panel-visibility-apply-btn:hover {
  background: var(--color-primary-hover, var(--color-primary));
}

.media-side-panel-visibility-apply-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ==========================================================================
   外部への共有リンク (ログインしていない人に見せる URL)
   設計: docs/design/2026-08-30_media_external_share_design.md
   ========================================================================== */

.media-share-links-note {
  margin: 0 0 8px;
  color: var(--color-text-secondary);
  font-size: 0.8125rem;
  line-height: var(--line-height-normal);
}

.media-share-links-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.media-share-links-empty {
  margin: 0;
  color: var(--color-text-tertiary);
  font-size: 0.8125rem;
}

.media-share-link {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 10px 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-surface-alt);
}

.media-share-link__url-row {
  display: flex;
  align-items: center;
  gap: 6px;
}

/* URL は選んでコピーできるようにしたいので入力欄の形で置く (書き換えは readonly で止める) */
.media-share-link__url {
  flex: 1;
  min-width: 0;
  padding: 6px 8px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-bg);
  color: var(--color-text-secondary);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.75rem;
}

.media-share-link__meta {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  color: var(--color-text-tertiary);
  font-size: 0.75rem;
}

/* 止めるボタンだけ右端に寄せる (期限と回数は左に並べたまま) */
.media-share-link__meta > button {
  margin-left: auto;
}

.media-share-links-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: 8px;
}

/* スマホ幅では、画面右下の丸いボタン (FAB) がパネルの最下部に重なり、
   共有リンクの操作が押せなくなる。**このブロックにだけ**逃げ場を作る
   (パネル全体の下余白を広げると、共有リンクを持たないメディアの見た目まで変わる) */
@media (max-width: 600px) {
  .media-share-links-actions {
    /* design-token-exception: 右下の丸いボタンの占める高さぶん。段階の値では届かない */
    margin-bottom: 112px;
  }
}


/* ==== css/components/image-editor.css ==== */
/* ========================================
   Image Editor - 画像エディタ
   ======================================== */

.image-editor {
  position: fixed;
  inset: 0;
  z-index: 10200;
  display: flex;
  flex-direction: column;
  background: var(--color-bg, #0f1117);
}

/* ── ヘッダー ── */

/*
 * 文字を含む箱のサイズは rem で持つ (px 固定にしない)。
 * 文字サイズ設定 (小さめ〜特大) は html の font-size を 14〜22px に動かすため、
 * 中身の文字だけが伸びて箱が伸びず、文字が箱からはみ出して切れる。
 * アイコン / つまみ / 区切り線など文字を含まないものは px のままでよい。
 *
 * さらに、高さは rem にしても固定してはいけない (height ではなく min-height)。
 * 行の間隔は文字サイズと別倍率で広がるため (font-size.ts の LINE_HEIGHT_MAP、
 * 標準 1.7 → 特大 2.2)、行の高さは文字の 1.375 倍を上回る 1.78 倍に伸びる。
 * height 固定だと箱の伸びが足りず、この差分だけ文字が上下にはみ出す。
 */

.image-editor__header {
  display: flex;
  align-items: center;
  /* 文字サイズを上げて横幅が足りなくなったとき、文字を折り返すのではなく
     保存 / キャンセルの箱ごと次の段に落とす (幅が足りているうちは 1 段のまま)。
     文字側は下の nowrap 指定で折り返しを禁じている */
  flex-wrap: wrap;
  min-height: 3rem;
  padding: 4px 12px;
  background: var(--color-surface, #1a1d27);
  border-bottom: 1px solid var(--color-border, #2a2d37);
  gap: 8px 12px;
  flex-shrink: 0;
}

.image-editor__header-title {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-text, #e0e0e0);
  margin-right: auto;
  white-space: nowrap;
}

/* 元に戻す / やり直す。上段に残す側 */
.image-editor__header-history {
  display: flex;
  align-items: center;
  gap: 8px;
}

/* 保存 / キャンセル。幅が足りなければこの箱ごと次の段へ落ちる */
.image-editor__header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  /* 次の段に落ちたときも右端に置く (1 段のときの位置と揃える) */
  margin-left: auto;
}

.image-editor__header-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 6px 10px;
  border: none;
  border-radius: 4px;
  background: none;
  color: var(--color-text-secondary, #8a94a6);
  font-size: 0.8125rem;
  /* ボタンの中で文字を折り返さない (「キャン / セル」を防ぐ)。
     入り切らないときは箱ごと次の段に落ちる */
  white-space: nowrap;
  cursor: pointer;
  transition:
    background 0.15s,
    color 0.15s;
}

.image-editor__header-btn:hover {
  background: var(--color-surface-alt, #252830);
  color: var(--color-text, #e0e0e0);
}

.image-editor__header-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

.image-editor__header-btn:disabled:hover {
  background: none;
  color: var(--color-text-secondary, #8a94a6);
}

.image-editor__save-btn {
  background: var(--color-accent, #a4b2dd);
  color: var(--color-button-text, #fff);
  font-weight: 500;
}

.image-editor__save-btn:hover {
  background: var(--color-accent-strong, #8a9bc7);
  color: var(--color-button-text, #fff);
}

/* ── ボディ（ツールバー + キャンバス + プロパティ） ── */

.image-editor__body {
  display: flex;
  flex: 1;
  overflow: hidden;
}

/* ── 左ツールバー ── */

.image-editor__toolbar {
  width: 3.5rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  /* 文字サイズを上げるとツール 1 個の高さも伸びるため、画面が低いと入り切らない。
     はみ出したツールが押せなくなるのを防ぐ */
  overflow-y: auto;
  padding: 8px 0;
  gap: 4px;
  background: var(--color-surface, #1a1d27);
  border-right: 1px solid var(--color-border, #2a2d37);
  flex-shrink: 0;
}

.image-editor__tool-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  width: 3.125rem;
  height: 2.875rem;
  flex-shrink: 0;
  border: none;
  border-radius: 6px;
  background: none;
  color: var(--color-text-secondary, #8a94a6);
  cursor: pointer;
  transition:
    background 0.15s,
    color 0.15s;
}

.image-editor__tool-label {
  font-size: 0.5625rem;
  line-height: 1;
  white-space: nowrap;
}

.image-editor__tool-btn:hover {
  background: var(--color-surface-alt, #252830);
  color: var(--color-text, #e0e0e0);
}

.image-editor__tool-btn.active {
  background: rgba(var(--color-accent-rgb, 168, 184, 232), 0.22);
  color: var(--color-accent-strong, #7986cb);
}

/* ツールバーのグループ区切り */
.image-editor__tool-divider {
  width: 32px;
  height: 1px;
  background: var(--color-border, #2a2d37);
  margin: 4px 0;
  flex-shrink: 0;
}

/* ── キャンバスエリア ── */

.image-editor__canvas-area {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: repeating-conic-gradient(var(--color-surface-alt, #252830) 0% 25%, var(--color-bg, #0f1117) 0% 50%) 50% /
    20px 20px;
}

.image-editor__canvas-area canvas {
  max-width: 100%;
  max-height: 100%;
}

/* ── 右プロパティパネル ── */

/* ── 右パネル（ツール設定 + レイヤー） ── */

.image-editor__right-panel {
  width: 16.25rem;
  display: flex;
  flex-direction: column;
  background: var(--color-surface, #1a1d27);
  border-left: 1px solid var(--color-border, #2a2d37);
  flex-shrink: 0;
}

.image-editor__properties {
  flex: 1;
  padding: 16px;
  overflow-y: auto;
  min-height: 0;
}

.image-editor__panel-title {
  font-size: 0.8125rem;
  font-weight: 600;
  color: var(--color-text, #e0e0e0);
  margin-bottom: 12px;
}

/* ── パネル内ボタン ── */

.image-editor__transform-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
}

.image-editor__panel-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  white-space: nowrap;
  padding: 8px;
  border: 1px solid var(--color-border, #2a2d37);
  border-radius: 6px;
  background: none;
  color: var(--color-text-secondary, #8a94a6);
  font-size: 0.75rem;
  cursor: pointer;
  transition:
    background 0.15s,
    color 0.15s;
}

.image-editor__panel-btn:hover {
  background: var(--color-surface-alt, #252830);
  color: var(--color-text, #e0e0e0);
}

/* パネル内のトグル行 (ラベル + コア共通の .toggle-switch を左右に配置) */
.image-editor__toggle-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin: 10px 0;
}

/* 初期パネルの「よく使う操作」ショートカット */
.image-editor__welcome-title {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-text, #e0e0e0);
  margin: 16px 0 8px;
}

.image-editor__welcome-card {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px 12px;
  margin-bottom: 8px;
  border: 1px solid var(--color-border, #2a2d37);
  border-radius: 8px;
  background: none;
  color: var(--color-text, #e0e0e0);
  cursor: pointer;
  text-align: left;
  transition:
    background 0.15s,
    border-color 0.15s;
}

.image-editor__welcome-card:hover {
  background: var(--color-surface-alt, #252830);
  border-color: var(--color-accent, #a4b2dd);
}

.image-editor__welcome-card svg {
  flex-shrink: 0;
  color: var(--color-accent-strong, #7986cb);
}

.image-editor__welcome-card-text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 0.8125rem;
}

.image-editor__welcome-card-text small {
  font-size: 0.6875rem;
  color: var(--color-text-secondary, #8a94a6);
}

/* AI画像生成パネル */
.image-editor__ai-image-instruction {
  width: 100%;
  box-sizing: border-box;
  padding: 8px;
  border: 1px solid var(--color-border, #2a2d37);
  border-radius: 6px;
  background: var(--color-surface-alt, #252830);
  color: var(--color-text, #e0e0e0);
  font-size: 0.8125rem;
  resize: vertical;
  margin-bottom: 10px;
}

/* プレビューは透過素材の確認のため市松背景 */
.image-editor__ai-image-preview {
  width: 100%;
  border-radius: 6px;
  border: 1px solid var(--color-border, #2a2d37);
  background: repeating-conic-gradient(var(--color-surface-alt, #252830) 0% 25%, var(--color-bg, #0f1117) 0% 50%) 50% /
    16px 16px;
  margin-bottom: 8px;
}

/* ── トリミング パネル ── */

.image-editor__crop-ratios {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 4px;
  margin-bottom: 16px;
}

.image-editor__crop-ratios .image-editor__panel-btn.active {
  background: rgba(var(--color-accent-rgb, 168, 184, 232), 0.22);
  color: var(--color-accent-strong, #7986cb);
  border-color: var(--color-accent, #a4b2dd);
}

.image-editor__crop-actions {
  display: flex;
  gap: 8px;
}

.image-editor__crop-cancel {
  flex: 1;
}

/* 横並びコンテナ内では primary の全幅指定を解除して等分にする
   (幅100%のまま置くと隣のキャンセルが潰れて縦書きになる) */
.image-editor__crop-actions .image-editor__panel-btn--primary,
.image-editor__save-dialog-footer .image-editor__panel-btn--primary {
  width: auto;
  flex: 1;
}

/* ── トリミング オーバーレイ ── */

.image-editor__crop-overlay {
  position: absolute;
  inset: 0;
  z-index: 10;
  cursor: default;
}

.image-editor__crop-dark {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  pointer-events: none;
}

.image-editor__crop-frame {
  position: absolute;
  border: 2px solid #fff;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3);
  cursor: move;
  box-sizing: border-box;
}

/* 3x3 グリッド線 */
.image-editor__crop-grid {
  position: absolute;
  inset: 0;
  pointer-events: none;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 1fr 1fr 1fr;
}

.image-editor__crop-grid-cell {
  border-right: 1px solid rgba(255, 255, 255, 0.25);
  border-bottom: 1px solid rgba(255, 255, 255, 0.25);
}

.image-editor__crop-grid-cell:nth-child(3n) {
  border-right: none;
}

.image-editor__crop-grid-cell:nth-child(n + 7) {
  border-bottom: none;
}

/* ドラッグハンドル共通 */
.image-editor__crop-handle {
  position: absolute;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.3);
  z-index: 2;
}

/* 4隅ハンドル */
.image-editor__crop-handle[data-handle='nw'],
.image-editor__crop-handle[data-handle='ne'],
.image-editor__crop-handle[data-handle='sw'],
.image-editor__crop-handle[data-handle='se'] {
  width: 12px;
  height: 12px;
  border-radius: 2px;
}

.image-editor__crop-handle[data-handle='nw'] {
  top: -6px;
  left: -6px;
  cursor: nw-resize;
}
.image-editor__crop-handle[data-handle='ne'] {
  top: -6px;
  right: -6px;
  cursor: ne-resize;
}
.image-editor__crop-handle[data-handle='sw'] {
  bottom: -6px;
  left: -6px;
  cursor: sw-resize;
}
.image-editor__crop-handle[data-handle='se'] {
  bottom: -6px;
  right: -6px;
  cursor: se-resize;
}

/* 4辺ハンドル */
.image-editor__crop-handle[data-handle='n'],
.image-editor__crop-handle[data-handle='s'] {
  width: 32px;
  height: 4px;
  left: 50%;
  transform: translateX(-50%);
  cursor: ns-resize;
  border-radius: 2px;
}

.image-editor__crop-handle[data-handle='n'] {
  top: -2px;
}
.image-editor__crop-handle[data-handle='s'] {
  bottom: -2px;
}

.image-editor__crop-handle[data-handle='e'],
.image-editor__crop-handle[data-handle='w'] {
  width: 4px;
  height: 32px;
  top: 50%;
  transform: translateY(-50%);
  cursor: ew-resize;
  border-radius: 2px;
}

.image-editor__crop-handle[data-handle='e'] {
  right: -2px;
}
.image-editor__crop-handle[data-handle='w'] {
  left: -2px;
}

/* ── フィルター ── */

.image-editor__filter-sliders {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 16px;
}

.image-editor__filter-row {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.image-editor__filter-label {
  font-size: 0.75rem;
  color: var(--color-text-secondary, #8a94a6);
}

.image-editor__filter-slider {
  width: 100%;
  accent-color: var(--color-accent, #a4b2dd);
  cursor: pointer;
}

.image-editor__filter-value {
  font-size: 0.6875rem;
  color: var(--color-text-tertiary, #555);
  text-align: right;
}

.image-editor__filter-reset {
  width: 100%;
}

/* ── リサイズ ── */

.image-editor__resize-current {
  font-size: 0.6875rem;
  color: var(--color-text-tertiary, #555);
  margin-bottom: 10px;
}

.image-editor__resize-size-row {
  display: flex;
  align-items: flex-end;
  gap: 6px;
  margin-bottom: 6px;
}

.image-editor__resize-size-row .image-editor__save-input {
  width: 4.375rem;
}

.image-editor__resize-field {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.image-editor__resize-x {
  font-size: 0.75rem;
  color: var(--color-text-tertiary, #555);
  padding-bottom: 6px;
}

.image-editor__resize-unit {
  font-size: 0.6875rem;
  color: var(--color-text-tertiary, #555);
  padding-bottom: 6px;
}

.image-editor__resize-presets {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-bottom: 12px;
}

.image-editor__resize-presets .image-editor__panel-btn {
  font-size: 0.6875rem;
  padding: 4px 8px;
}

.image-editor__resize-presets .image-editor__panel-btn.active {
  background: rgba(var(--color-accent-rgb, 168, 184, 232), 0.22);
  color: var(--color-accent-strong, #7986cb);
  border-color: var(--color-accent, #a4b2dd);
}

/* ── レイヤーパネル ── */

.image-editor__layers {
  border-top: 1px solid var(--color-border, #2a2d37);
  display: flex;
  flex-direction: column;
  min-height: 7.5rem;
  max-height: 40%;
}

.image-editor__layers-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-text, #e0e0e0);
}

.image-editor__layers-count {
  font-size: 0.625rem;
  color: var(--color-text-tertiary, #555);
  background: var(--color-surface-alt, #252830);
  padding: 1px 6px;
  border-radius: 8px;
}

.image-editor__layers-list {
  flex: 1;
  overflow-y: auto;
  padding: 0 4px;
}

.image-editor__layer-row {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 4px 8px;
  border-radius: 4px;
  cursor: pointer;
  font-size: 0.6875rem;
  color: var(--color-text-secondary, #8a94a6);
  transition: background 0.1s;
}

.image-editor__layer-row:hover {
  background: var(--color-surface-alt, #252830);
}

.image-editor__layer-row.active {
  background: var(--color-accent-bg, #3a3f5a);
  color: var(--color-text, #e0e0e0);
}

.image-editor__layer-row.base {
  opacity: 0.7;
}

.image-editor__layer-row.dragging {
  opacity: 0.4;
}

.image-editor__layer-row.drag-above {
  border-top: 2px solid var(--color-accent, #a4b2dd);
}

.image-editor__layer-row.drag-below {
  border-bottom: 2px solid var(--color-accent, #a4b2dd);
}

.image-editor__layer-visibility {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: none;
  border-radius: 3px;
  background: none;
  color: var(--color-text-tertiary, #555);
  cursor: pointer;
  flex-shrink: 0;
}

.image-editor__layer-visibility.visible {
  color: var(--color-accent, #a4b2dd);
}

.image-editor__layer-icon {
  display: flex;
  align-items: center;
  color: var(--color-text-tertiary, #555);
  flex-shrink: 0;
}

.image-editor__layer-name {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.image-editor__layers-actions {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 6px 12px;
  border-top: 1px solid var(--color-border, #2a2d37);
}

.image-editor__layer-action-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: none;
  border-radius: 4px;
  background: none;
  color: var(--color-text-secondary, #8a94a6);
  cursor: pointer;
  transition:
    background 0.15s,
    color 0.15s;
}

.image-editor__layer-action-btn:hover {
  background: var(--color-surface-alt, #252830);
  color: var(--color-text, #e0e0e0);
}

/* ── 範囲選択 ── */

.image-editor__select-overlay {
  position: absolute;
  inset: 0;
  z-index: 10;
  cursor: crosshair;
}

/* 選択境界の SVG (マーチングアンツ)。黒の下線 + 白の破線アニメで明暗どちらの画像でも見える */
.image-editor__select-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  overflow: visible;
}

.image-editor__ants-under {
  fill: none;
  stroke: rgba(0, 0, 0, 0.85);
  stroke-width: 1.5;
}

.image-editor__ants {
  fill: none;
  stroke: #fff;
  stroke-width: 1.5;
  stroke-dasharray: 5 5;
  animation: image-editor-marching-ants 0.6s linear infinite;
}

.image-editor__ants--subtract {
  stroke: #ff6b6b;
}

@keyframes image-editor-marching-ants {
  to {
    stroke-dashoffset: -10;
  }
}

/* 確定済み選択の合成輪郭 (重なった領域はひとかたまりの外周のみ)。
   輪郭帯の canvas マスクに白黒ストライプを流してマーチングアンツにする */
.image-editor__select-union {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: repeating-linear-gradient(45deg, #fff 0 4px, #000 4px 8px);
  mask-size: 100% 100%;
  -webkit-mask-size: 100% 100%;
  animation: image-editor-union-ants 0.7s linear infinite;
}

@keyframes image-editor-union-ants {
  to {
    background-position: 11.31px 0;
  }
}

/* 選択範囲への効果 (ぼかし / 明るさ) */
.image-editor__select-effects {
  margin-top: 16px;
  padding-top: 12px;
  border-top: 1px solid var(--color-border, #2a2d37);
}

.image-editor__select-effects-title {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-text, #e0e0e0);
  margin-bottom: 8px;
}

.image-editor__select-effects .image-editor__panel-btn {
  width: 100%;
  margin-bottom: 12px;
}

.image-editor__select-mode {
  font-size: 0.6875rem;
  font-weight: 600;
  color: var(--color-accent, #a4b2dd);
  min-height: 1rem;
}

.image-editor__select-actions {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 8px;
}

/* ── 画像ピッカー ── */

.image-editor__image-picker-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 100px;
  gap: 6px;
  padding: 12px 16px;
  max-height: 50vh;
  overflow-y: auto;
}

.image-editor__image-picker-item {
  border-radius: 6px;
  overflow: hidden;
  cursor: pointer;
  border: 2px solid transparent;
  transition: border-color 0.15s;
}

.image-editor__image-picker-item:hover {
  border-color: var(--color-accent, #a4b2dd);
}

.image-editor__image-picker-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ── 保存ダイアログ追加 ── */

.image-editor__save-size-info {
  font-size: 0.75rem;
  color: var(--color-text-tertiary, #555);
  text-align: center;
  padding: 4px 0;
}

/* 上書き保存の注記 (保存方法で「上書き」を選んだときだけ表示) */
.image-editor__save-note {
  font-size: 0.71875rem;
  color: var(--color-text-secondary, #8a94a6);
  line-height: 1.5;
  padding: 0 2px 8px;
}

/* ── テキスト ── */

.image-editor__text-add {
  width: 100%;
  margin-bottom: 12px;
}

.image-editor__text-props {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.image-editor__text-select {
  width: 100%;
  padding: 4px 6px;
  border: 1px solid var(--color-border, #2a2d37);
  border-radius: 4px;
  background: var(--color-surface-alt, #252830);
  color: var(--color-text, #e0e0e0);
  font-size: 0.8125rem;
}

.image-editor__text-inline-row {
  display: flex;
  gap: 12px;
  margin-bottom: 2px;
}

.image-editor__text-inline-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
}

.image-editor__text-inline-item .image-editor__save-input {
  width: 100%;
}

.image-editor__text-style-row {
  display: flex;
  gap: 4px;
}

.image-editor__text-style-row .image-editor__panel-btn {
  flex: 1;
  font-weight: 700;
}

.image-editor__text-style-row .image-editor__panel-btn.active {
  background: rgba(var(--color-accent-rgb, 168, 184, 232), 0.22);
  color: var(--color-accent-strong, #7986cb);
  border-color: var(--color-accent, #a4b2dd);
}

.image-editor__color-input {
  width: 32px;
  height: 24px;
  border: 1px solid var(--color-border, #2a2d37);
  border-radius: 4px;
  padding: 0;
  cursor: pointer;
  background: none;
}

/* ── 描画 ── */

.image-editor__draw-fill-section {
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--color-border, #2a2d37);
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.image-editor__draw-fill-controls {
  display: flex;
  align-items: center;
  gap: 8px;
}

.image-editor__draw-modes {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  margin-bottom: 12px;
}

.image-editor__draw-modes .image-editor__panel-btn.active {
  background: rgba(var(--color-accent-rgb, 168, 184, 232), 0.22);
  color: var(--color-accent-strong, #7986cb);
  border-color: var(--color-accent, #a4b2dd);
}

.image-editor__stamp-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 4px;
  margin-bottom: 8px;
}

.image-editor__stamp-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 6px;
  border: 1px solid var(--color-border, #2a2d37);
  border-radius: 4px;
  background: none;
  color: var(--color-text-secondary, #8a94a6);
  cursor: pointer;
  transition:
    background 0.15s,
    color 0.15s;
}

.image-editor__stamp-btn:hover {
  background: var(--color-surface-alt, #252830);
  color: var(--color-text, #e0e0e0);
}

.image-editor__stamp-btn.active {
  background: var(--color-accent-bg, #3a3f5a);
  color: var(--color-accent, #a4b2dd);
  border-color: var(--color-accent, #a4b2dd);
}

/* ── フッター ── */

.image-editor__footer {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  /* モバイルの右パネルが bottom でこの高さに合わせているため、ここは伸ばさない。
     ヘッダーと違い、行の間隔で押し広げられると右パネルが重なる。
     中身は 1 行だけなので line-height を詰めて min-height に固定する */
  min-height: 2.25rem;
  line-height: 1;
  padding: 0 16px;
  background: var(--color-surface, #1a1d27);
  border-top: 1px solid var(--color-border, #2a2d37);
  font-size: 0.75rem;
  color: var(--color-text-tertiary, #555);
  flex-shrink: 0;
}

.image-editor__zoom-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2px 6px;
  border: none;
  border-radius: 3px;
  background: none;
  color: var(--color-text-secondary, #8a94a6);
  cursor: pointer;
  font-size: 0.6875rem;
}

.image-editor__zoom-btn:hover {
  background: var(--color-surface-alt, #252830);
  color: var(--color-text, #e0e0e0);
}

.image-editor__zoom-slider {
  width: 120px;
  accent-color: var(--color-accent, #a4b2dd);
}

.image-editor__zoom-label {
  min-width: 2.5rem;
  text-align: center;
}

/* ── 保存ダイアログ ── */

.image-editor__save-dialog-overlay {
  position: fixed;
  inset: 0;
  z-index: 10300;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.6);
}

.image-editor__save-dialog {
  background: var(--color-surface, #1a1d27);
  border: 1px solid var(--color-border, #2a2d37);
  border-radius: 12px;
  width: 23.75rem;
  max-width: 90vw;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
}

.image-editor__save-dialog-title {
  padding: 16px 20px;
  font-size: 0.9375rem;
  font-weight: 600;
  color: var(--color-text, #e0e0e0);
  border-bottom: 1px solid var(--color-border, #2a2d37);
}

.image-editor__save-dialog-body {
  padding: 16px 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.image-editor__save-row {
  display: flex;
  align-items: center;
  gap: 8px;
}

.image-editor__save-row label {
  font-size: 0.8125rem;
  color: var(--color-text-secondary, #8a94a6);
  min-width: 5rem;
  flex-shrink: 0;
}

.image-editor__save-row span {
  font-size: 0.75rem;
  color: var(--color-text-tertiary, #555);
  white-space: nowrap;
}

.image-editor__save-select {
  flex: 1;
  padding: 6px 8px;
  border: 1px solid var(--color-border, #2a2d37);
  border-radius: 4px;
  background: var(--color-surface-alt, #252830);
  color: var(--color-text, #e0e0e0);
  font-size: 0.8125rem;
}

.image-editor__save-input {
  width: 5rem;
  padding: 4px 8px;
  border: 1px solid var(--color-border, #2a2d37);
  border-radius: 4px;
  background: var(--color-surface-alt, #252830);
  color: var(--color-text, #e0e0e0);
  font-size: 0.8125rem;
}

.image-editor__save-row .image-editor__filter-slider {
  flex: 1;
}

.image-editor__save-dialog-footer {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 12px 20px;
  border-top: 1px solid var(--color-border, #2a2d37);
}

/* ── レスポンシブ ── */

@media (max-width: 768px) {
  .image-editor__right-panel {
    position: fixed;
    /* フッターの高さと必ず同じ値にする (ずれると右パネルがフッターに重なる) */
    bottom: 2.25rem;
    left: 0;
    right: 0;
    width: 100%;
    height: auto;
    max-height: 50vh;
    border-left: none;
    border-top: 1px solid var(--color-border, #2a2d37);
    z-index: 5;
  }

  .image-editor__layers {
    max-height: 7.5rem;
  }

  .image-editor__toolbar {
    width: 3rem;
  }

  .image-editor__tool-btn {
    width: 2.25rem;
    height: 2.25rem;
  }

  .image-editor__zoom-slider {
    width: 80px;
  }

  .image-editor__save-dialog {
    width: 95vw;
  }
}

/* -- 塗りつぶし -- */

/* -- 背景透過 -- */

/* なぞって切り抜きのプレビュー overlay (fabric 履歴・保存に混入させない DOM 要素) */
.image-editor__scribble-overlay {
  position: absolute;
  pointer-events: none;
  z-index: 5;
}

/* 仕上げモード: 残す / 消す の切替 */
.image-editor__bg-refine-modes {
  display: flex;
  gap: 8px;
  margin-bottom: 8px;
}

.image-editor__bg-refine-mode {
  flex: 1;
  padding: 8px 10px;
  border: 1px solid var(--color-border, #444);
  border-radius: 6px;
  background: none;
  color: var(--color-text, #eee);
  font-size: 0.85rem;
  cursor: pointer;
  transition:
    background 0.15s,
    border-color 0.15s;
}

.image-editor__bg-refine-mode.active {
  background: var(--color-accent, #4a9eff);
  border-color: var(--color-accent, #4a9eff);
  color: var(--color-button-text);
  font-weight: 600;
}

.image-editor__panel-desc {
  color: var(--color-text-secondary, #999);
  font-size: 0.8125rem;
  line-height: 1.5;
  margin: 0 0 12px;
}

.image-editor__panel-btn--primary {
  background: var(--color-accent, #4a9eff);
  color: var(--color-button-text);
  font-weight: 600;
  width: 100%;
  padding: 10px;
  border-radius: 6px;
  border: none;
  cursor: pointer;
  transition:
    background 0.15s,
    opacity 0.15s;
}

.image-editor__panel-btn--primary:hover {
  background: var(--color-accent-hover, #3a8eef);
}

.image-editor__panel-btn--primary:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.image-editor__processing-progress {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 12px;
  color: var(--color-text-secondary, #999);
  font-size: 0.8125rem;
}

.image-editor__processing-spinner {
  width: 18px;
  height: 18px;
  border: 2px solid var(--color-border, #333);
  border-top-color: var(--color-accent, #4a9eff);
  border-radius: 50%;
  animation: bg-remove-spin 0.8s linear infinite;
}

@keyframes bg-remove-spin {
  to {
    transform: rotate(360deg);
  }
}

.image-editor__bg-remove-error {
  margin-top: 12px;
  padding: 8px 10px;
  background: var(--color-error-bg, rgba(255, 80, 80, 0.1));
  color: var(--color-error, #ff5050);
  border-radius: 4px;
  font-size: 0.8125rem;
  line-height: 1.4;
}


/* ==== css/components/common.css ==== */
/* ==========================================
   Loading Screen
   ========================================== */
.app-loading {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: var(--color-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10000;
  transition:
    opacity 0.3s ease,
    visibility 0.3s ease;
}

.app-loading.hide {
  opacity: 0;
  visibility: hidden;
}

.app-loading__content {
  text-align: center;
}

.app-loading__logo {
  max-height: 60px;
  max-width: 250px;
  object-fit: contain;
  margin-bottom: 24px;
}

.app-loading__title {
  font-size: 2rem;
  font-weight: 700;
  color: var(--color-accent);
  margin-bottom: 24px;
  letter-spacing: 0.5px;
}

.app-loading__spinner {
  width: 48px;
  height: 48px;
  margin: 0 auto;
  border: 4px solid var(--color-border);
  border-top-color: var(--color-accent);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

/* ========================================
   新しいメッセージボタン
   ======================================== */

.new-message-button {
  position: fixed;
  bottom: 120px;
  right: 24px;
  z-index: 1000;

  display: flex;
  align-items: center;
  gap: 8px;

  padding: 12px 16px;
  background: var(--color-accent);
  color: var(--color-button-text);
  border: none;
  border-radius: 24px;

  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1;
  cursor: pointer;

  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);

  opacity: 0;
  transform: translateY(20px);
  pointer-events: none;

  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.new-message-button.visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

.new-message-button:hover {
  background: var(--color-accent-hover);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);
  transform: translateY(-2px);
}

.new-message-button:focus {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}

.new-message-button:active {
  transform: translateY(0) scale(0.98);
}

.new-message-button svg {
  flex-shrink: 0;
  transform: rotate(180deg);
}

/* レスポンシブ対応 */
@media (max-width: 768px) {
  .new-message-button {
    bottom: 90px;
    right: 16px;
    padding: 10px 14px;
    font-size: 0.8125rem;
  }

  .new-message-button svg {
    width: 18px;
    height: 18px;
  }
}

/* キャッチアップボタン */
.catch-up-button {
  position: fixed;
  bottom: 175px;
  right: 24px;
  z-index: 1000;

  display: flex;
  align-items: center;
  gap: 6px;

  padding: 10px 14px;
  background: var(--color-surface);
  color: var(--color-text);
  border: 1px solid var(--color-border);
  border-radius: 24px;

  font-size: 0.8125rem;
  font-weight: 500;
  line-height: 1;
  cursor: pointer;

  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
  transition: all 0.2s ease;
}

.catch-up-button:hover {
  background: var(--color-surface-alt);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);
  transform: translateY(-1px);
}

.catch-up-button svg {
  color: var(--color-accent);
  flex-shrink: 0;
}

@media (max-width: 768px) {
  .catch-up-button {
    bottom: 140px;
    right: 16px;
    padding: 8px 12px;
    font-size: 0.75rem;
  }
}

/* マーカーラインのハイライトアニメーション */
.marker-line--highlight {
  animation: marker-highlight 1.5s ease-out;
}

@keyframes marker-highlight {
  0% {
    opacity: 1;
  }
  30% {
    opacity: 0.4;
  }
  60% {
    opacity: 1;
  }
  100% {
    opacity: 1;
  }
}

.search-bar {
  display: flex;
  margin-bottom: 6px;
  align-items: center;
  gap: 4px;
  flex: 1;
  min-width: 0;
}

.search-bar.hidden {
  display: none;
}

.search-bar__input-wrapper {
  position: relative;
  flex: 1;
  min-width: 0;
}

input[type='text'].search-bar__input {
  width: 100%;
  padding: 4px 50px 4px 8px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.8rem;
  font-family: inherit;
}

input[type='text'].search-bar__input:focus {
  outline: none;
  border-color: var(--color-accent);
}

.search-bar__counter {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 0.7rem;
  color: var(--color-text-secondary);
  white-space: nowrap;
  user-select: none;
  pointer-events: none;
}

.search-bar__nav,
.search-bar__close {
  padding: 4px;
  min-width: auto;
  flex-shrink: 0;
}

.search-bar__nav:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* レスポンシブ対応 */
@media (max-width: 768px) {
  .toolbar {
    gap: 4px;
    align-items: stretch;
  }

  .toolbar__left {
    gap: 4px;
    flex-wrap: nowrap;
  }

  .toolbar__filter {
    margin-bottom: 4px;
  }

  .toolbar__filter-label {
    display: none;
  }

  .search-bar {
    width: 100%;
  }

  /* モバイル時の検索バー固定配置 */
  .search-bar--mobile-fixed {
    position: fixed;
    left: 0;
    right: 0;
    z-index: 100;
    width: auto;
    padding: 0 12px 8px;
    margin: 0;
    background: var(--color-bg);
    border-bottom: 1px solid var(--color-border);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  }
}

/* 検索結果ハイライト */
.message--search-match .message__bubble {
  outline: 2px solid rgba(101, 116, 205, 0.35);
  outline-offset: 1px;
  transition: all var(--animation-duration) ease;
}

.message--search-active .message__bubble {
  outline: 2px solid var(--color-accent);
  outline-offset: 1px;
  border: var(--color-accent-border);
  background: var(--color-accent-bg);
  box-shadow: 0 0 24px var(--color-accent-bg);
  font-weight: 500;
}

/* ローディングオーバーレイ */
.loading-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10000;
  backdrop-filter: blur(2px);
}

.loading-spinner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  padding: 32px;
  background: var(--color-surface);
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
}

.loading-spinner .spinner {
  width: 48px;
  height: 48px;
  border: 4px solid rgba(var(--color-accent-rgb, 101, 116, 205), 0.2);
  border-top-color: var(--color-accent);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

.loading-spinner p {
  margin: 0;
  color: var(--color-text);
  font-size: 0.9rem;
  font-weight: 500;
}

/* ===== プラグインアクションメニュー（汎用） ===== */
.plugin-action-container {
  position: absolute;
  bottom: 4px;
  right: 8px;
  z-index: 1000;
  opacity: 1;
  transition: opacity 0.2s ease;
}

.plugin-action-trigger {
  background: transparent;
  border: none;
  padding: 2px;
  border-radius: 4px;
  font-size: 0.7rem;
  cursor: pointer;
  transition: all 0.2s ease;
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.plugin-action-trigger:hover {
  opacity: 1;
  background: rgba(128, 128, 128, 0.15);
}

.plugin-action-trigger svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
}

.plugin-action-menu {
  position: fixed;
  display: none;
  min-width: 160px;
  background: var(--color-surface);
  border: 1px solid rgba(var(--color-text-rgb, 128, 128, 128), 0.2);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
  z-index: 10000;
  overflow: hidden;
}

.plugin-action-menu.show {
  display: block;
  animation: menuFadeIn 0.15s ease-out;
}

@keyframes menuFadeIn {
  from {
    opacity: 0;
    transform: translateY(-8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.plugin-action-menu-item {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 8px 12px;
  background: transparent;
  border: none;
  border-bottom: 1px solid rgba(var(--color-text-rgb, 128, 128, 128), 0.1);
  cursor: pointer;
  text-align: left;
  font-size: 0.85rem;
  color: var(--color-text);
  transition: background 0.2s ease;
}

.plugin-action-menu-item:last-child {
  border-bottom: none;
}

.plugin-action-menu-item:hover {
  background: rgba(var(--color-accent-rgb, 101, 116, 205), 0.1);
}

.plugin-action-menu-item svg {
  flex-shrink: 0;
  width: 14px;
  height: 14px;
  stroke: currentColor;
}

.plugin-action-menu-item span {
  flex: 1;
  white-space: nowrap;
}

/* ----------------------------------------
   MEDIA IMAGE TOOLS (圧縮・リサイズ)
   ---------------------------------------- */
.media-image-tools {
  margin-top: 24px;
  padding-top: 24px;
  border-top: 1px solid var(--color-border);
}

.image-compress-container,
.image-resize-container {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.compress-info,
.resize-info {
  font-size: 0.95rem;
  color: var(--color-text);
}

.compress-controls,
.resize-controls {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 16px;
}

.slider-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 100%;
}

.slider-group label {
  font-size: 0.9rem;
  color: var(--color-text);
  font-weight: 500;
}

.quality-slider {
  width: 100%;
  height: 6px;
  border-radius: 3px;
  background: var(--color-border);
  outline: none;
  cursor: pointer;
}

.quality-slider::-webkit-slider-thumb {
  appearance: none;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--color-accent);
  cursor: pointer;
  transition: all 0.2s ease;
}

.quality-slider::-webkit-slider-thumb:hover {
  transform: scale(1.2);
}

.quality-slider::-moz-range-thumb {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--color-accent);
  cursor: pointer;
  border: none;
  transition: all 0.2s ease;
}

.quality-slider::-moz-range-thumb:hover {
  transform: scale(1.2);
}

.resize-inputs {
  display: flex;
  gap: 16px;
  width: 100%;
}

.resize-inputs .input-group {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.resize-inputs .input-group label {
  font-size: 0.9rem;
  color: var(--color-text);
  font-weight: 500;
}

.resize-inputs .input-group input {
  padding: 8px 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  font-size: 0.95rem;
}

.resize-presets {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  width: 100%;
}

.resize-presets span {
  font-size: 0.9rem;
  color: var(--color-text);
  font-weight: 500;
}

.btn-preset {
  padding: 6px 12px;
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  font-size: 0.85rem;
  color: var(--color-text);
  cursor: pointer;
  transition: all 0.2s ease;
}

.btn-preset:hover {
  background: var(--color-accent);
  color: white;
  border-color: var(--color-accent);
}

.compress-result,
.resize-result {
  padding: 12px;
  border-radius: 6px;
  font-size: 0.9rem;
  display: none;
}

.compress-result.show,
.resize-result.show {
  display: block;
}

.success-message {
  display: flex;
  flex-direction: column;
  gap: 4px;
  color: var(--color-success);
  background: rgba(76, 175, 80, 0.1);
  padding: 12px;
  border-radius: 6px;
  border: 1px solid var(--color-success);
}

.error-message {
  color: var(--color-status-off);
  background: rgba(244, 67, 54, 0.1);
  padding: 12px;
  border-radius: 6px;
  border: 1px solid var(--color-status-off);
}

.info-message {
  display: flex;
  flex-direction: column;
  gap: 4px;
  color: var(--color-accent);
  background: rgba(99, 102, 241, 0.1);
  padding: 12px;
  border-radius: 6px;
  border: 1px solid var(--color-accent);
}

/* ==========================================
   Unread Line (控えめなデザイン)
   ========================================== */
.unread-line {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 12px 0;
  height: 1px;
  cursor: pointer;
}

.unread-line__line {
  position: absolute;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--color-border);
}

.unread-line__label {
  position: relative;
  background: var(--color-bg);
  padding: 2px 12px;
  font-size: 0.7rem;
  font-weight: 500;
  color: var(--color-text-secondary);
  border-radius: 10px;
  border: 1px solid var(--color-border);
  z-index: 1;
  white-space: nowrap;
}

/* ==========================================
   Marker Line (マーカーライン)
   ========================================== */
.marker-line {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 10px 0;
  height: 8px;
  cursor: pointer;
}

.marker-line__line {
  position: absolute;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--color-border);
  opacity: 0.8;
}

.marker-line__line--top {
  top: 0;
}

.marker-line__line--bottom {
  bottom: 0;
}

.marker-line__label {
  position: relative;
  background: var(--color-bg);
  padding: 2px 10px;
  font-size: 0.7rem;
  font-weight: 500;
  color: var(--color-text-secondary);
  border-radius: 10px;
  border: 1px solid var(--color-border);
  z-index: 1;
  white-space: nowrap;
  display: flex;
  align-items: center;
  gap: 4px;
}

.marker-line__icon {
  flex-shrink: 0;
  opacity: 0.7;
}

/* マーカー設置時のアニメーション */
.marker-line--entering {
  animation: markerFadeIn 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

@keyframes markerFadeIn {
  0% {
    opacity: 0;
    transform: scaleX(0.3);
  }
  50% {
    opacity: 1;
    transform: scaleX(1.05);
  }
  100% {
    opacity: 1;
    transform: scaleX(1);
  }
}

/* ==========================================
   Message Spacer (メッセージ間のクリック可能エリア)
   ========================================== */
.message-spacer {
  height: 8px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

.message-spacer__clickable {
  /* buttonのスタイルリセット */
  appearance: none;
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  color: inherit;

  /* スペーサースタイル */
  width: 45%;
  height: 100%;
  cursor: pointer;
  transition: all 0.2s ease;
  position: relative;
}

/* 控えめな点線を常時表示 */
.message-spacer__clickable::before {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 80%;
  height: 1px;
  border-top: 1px solid var(--color-border);
  opacity: 0.3;
  transition: opacity 0.2s ease;
}

.message-spacer__clickable:hover::before {
  opacity: 0.6;
}

.message-spacer__clickable:hover {
  background-color: rgba(59, 130, 246, 0.05);
}

.message-spacer__clickable:active {
  background-color: rgba(59, 130, 246, 0.15);
  transform: scaleY(1.5);
}

.message-spacer__clickable:focus {
  outline: 2px solid rgba(59, 130, 246, 0.4);
  outline-offset: 2px;
}

/* マーカー設置済みのスペーサーは点線非表示＋高さ0 */
.message-spacer--has-marker {
  height: 0;
  margin: 0;
}

.message-spacer--has-marker .message-spacer__clickable {
  display: none;
}

/* モバイル対応 - 発見可能性向上 */
@media (max-width: 768px) {
  .message-spacer {
    height: 16px;
  }

  /* マーカー設置済みはモバイルでも高さ0 */
  .message-spacer--has-marker {
    height: 0 !important;
  }

  .message-spacer__clickable {
    width: 50%;
  }

  /* モバイルでは点線を濃く */
  .message-spacer__clickable::before {
    opacity: 0.6;
  }

  .message-spacer__clickable:hover::before {
    opacity: 0.8;
  }

  /* タップ時のフィードバック強化 */
  .message-spacer__clickable:active {
    background-color: rgba(59, 130, 246, 0.2);
    transform: scaleY(1.2);
  }
}

/* ==========================================
   Chat Search Bar (ノートと同じレイアウト)
   ========================================== */
.chat-toolbar {
  background: var(--color-bg);
  margin-bottom: 8px;
  padding-left: 16px;
  border-radius: 8px;
}

.chat-toolbar-title {
  flex: 0 0 auto;
  max-width: 180px;
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--color-text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  letter-spacing: 0.01em;
}

.chat-toolbar-title:empty {
  display: none;
}

/* チャットツールバー → 紐付きプロジェクトへのショートカット */
.chat-linked-project-shortcut {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: 12px;
  border: 1px solid var(--color-border);
  background: transparent;
  color: var(--color-text-secondary);
  font-size: 0.75rem;
  cursor: pointer;
  max-width: 200px;
  transition:
    background 0.15s,
    color 0.15s;
}

.chat-linked-project-shortcut .chat-linked-project-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chat-linked-project-shortcut:hover {
  background: var(--color-surface-alt);
  color: var(--color-text);
}

.chat-toolbar .chat-search-bar {
  display: flex;
  gap: 8px;
  align-items: center;
  flex: 1;
  min-width: 0;
}

/* 検索入力グループ（入力 + カウンター + ナビボタン） */
.chat-search-input-group {
  display: flex;
  align-items: center;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  transition: border-color 0.15s ease;
  min-width: 120px;
  width: 280px;
  flex-shrink: 1;
}

.chat-search-input-group:focus-within {
  border-color: var(--color-accent-text);
}

input[type='text'].chat-search-input {
  flex: 1;
  background: transparent;
  border: none;
  color: var(--color-text);
  font-size: 0.875rem;
  box-sizing: border-box;
  min-width: 80px;
}

input[type='text'].chat-search-input:focus {
  outline: none;
}

.chat-search-counter {
  padding: 0 8px;
  font-size: 0.75rem;
  color: var(--color-muted);
  white-space: nowrap;
}

.chat-search-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  margin: 2px;
  background: transparent;
  border: none;
  border-radius: 4px;
  color: var(--color-text);
  cursor: pointer;
  transition: background-color 0.15s ease;
}

.chat-search-nav:hover:not(:disabled) {
  background: var(--color-surface-alt);
}

.chat-search-nav:disabled {
  color: var(--color-muted);
  cursor: not-allowed;
  opacity: 0.5;
}

input[type='text'].chat-search-input::placeholder {
  color: var(--color-muted);
}

.chat-filter-select {
  padding: 10px 16px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  color: var(--color-text);
  font-size: 0.75rem;
  cursor: pointer;
  transition: border-color 0.15s ease;
  flex-shrink: 0;
}

.chat-filter-select:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

.chat-participants {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-left: auto;
  flex-shrink: 0;
}

/* レスポンシブ対応 */
@media (max-width: 768px) {
  .chat-toolbar {
    position: relative;
    padding: 4px 8px;
    margin-bottom: 4px;
  }

  .chat-search-bar {
    padding: 4px 8px;
    margin-bottom: 0;
  }

  .chat-search-input-group {
    flex: 1 1 0;
    min-width: 0;
    width: auto;
  }

  .chat-search-input-group .chat-search-nav {
    width: 24px;
    height: 24px;
  }

  input[type='text'].chat-search-input {
    padding: 6px 8px;
    font-size: 0.82rem;
  }

  /* フィルタと参加者を展開メニューに格納 */
  .chat-filter-select {
    display: none;
  }

  .chat-participants {
    display: none;
  }

  /* 展開トグルボタン */
  .chat-toolbar-toggle {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    padding: 0;
    border: 1px solid var(--color-border);
    border-radius: 6px;
    background: var(--color-surface);
    color: var(--color-text);
    cursor: pointer;
    flex-shrink: 0;
    transition: background-color 0.15s ease;
  }

  .chat-toolbar-toggle:hover {
    background: var(--color-surface-alt);
  }

  .chat-toolbar-toggle svg {
    width: 16px;
    height: 16px;
  }

  /* 展開パネル */
  .chat-toolbar-expand {
    display: none;
    gap: 6px;
    padding: 4px 0;
    align-items: center;
    border-top: 1px solid var(--color-border);
    margin-top: 4px;
    flex-wrap: nowrap;
    overflow-x: auto;
  }

  .chat-toolbar-expand.is-open {
    display: flex;
  }

  .chat-toolbar-expand .chat-filter-select {
    display: block;
    padding: 6px 8px;
    font-size: 0.8rem;
    flex: 1;
    min-width: 0;
  }

  .chat-toolbar-expand .chat-participants {
    display: flex;
    margin-left: auto;
    flex-shrink: 0;
  }
}

/* デスクトップではトグルボタンと展開パネルを非表示 */
@media (min-width: 769px) {
  .chat-toolbar-toggle {
    display: none;
  }

  .chat-toolbar-expand {
    display: none;
  }
}

/* チャット→ノート化ボタン */
.chat-to-note-menu {
  position: relative;
  display: flex;
  align-items: center;
}

@media (hover: hover) and (pointer: fine) {
}

.chat-to-note-dropdown {
  position: absolute;
  top: 100%;
  right: 0;
  margin-top: 4px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow: var(--shadow-hover);
  z-index: 100;
  min-width: 140px;
  padding: 4px 0;
}

.chat-to-note-option {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  border: none;
  background: transparent;
  padding: 8px 12px;
  color: var(--color-text);
  font-size: 0.85rem;
  cursor: pointer;
  transition: background 0.15s;
  touch-action: manipulation;
}

@media (hover: hover) and (pointer: fine) {
  .chat-to-note-option:hover {
    background: var(--color-surface-alt);
  }
}

/* ==========================================
   Tag Search Panel
   ========================================== */
.tag-search-panel {
  padding: 8px 0;
}

.tag-search-loading,
.tag-search-error {
  padding: 24px 16px;
  color: var(--color-muted);
  font-size: 0.9rem;
  text-align: center;
}

.tag-search-section {
  margin-bottom: 8px;
}

.tag-search-section-header {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px 4px;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--color-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.tag-search-count {
  font-weight: 400;
  color: var(--color-muted);
}

.tag-search-empty {
  padding: 6px 16px 10px;
  font-size: 0.85rem;
  color: var(--color-muted);
}

.tag-search-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 8px 16px;
  cursor: pointer;
  transition: background 0.12s;
}

@media (hover: hover) and (pointer: fine) {
  .tag-search-item:hover {
    background: var(--color-surface-alt);
  }
}

.tag-search-item-main {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

.tag-search-item-title {
  font-size: 0.9rem;
  color: var(--color-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
}

.tag-search-item-sub {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-left: 16px;
}

.tag-search-item-project,
.tag-search-item-type,
.tag-search-item-date {
  font-size: 0.78rem;
  color: var(--color-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.tag-search-status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}

.tag-search-draft-badge {
  font-size: 0.72rem;
  padding: 1px 5px;
  border-radius: 3px;
  background: var(--color-surface-alt);
  color: var(--color-muted);
  border: 1px solid var(--color-border);
  flex-shrink: 0;
}

/* .chat-to-note-btn は 2026-08-12 に v2 の部品へ移行 (chub-btn--icon)。
   .toolbar__search-btn は**どこからも使われていなかった**ので削除。

   **.catch-up-button / .new-message-button はここに残す**。 どちらも
   `position: fixed` で画面の右下に浮くボタン (border-radius: 24px の丸い形) で、
   共通ボタンの見た目とは別物。 移すと位置指定を失う
   (v1 で aw-btn を「移すと悪くなる」 と判定したのと同じ考え方)。 */

/* ==========================================================================
   AI から頼まれた操作の承認
   外から来た AI の危ない操作は、実行前にここで人が中身を読んで決める
   ========================================================================== */

.ai-approval-panel {
  padding: 20px;
  max-width: 720px;
}

.ai-approval-title {
  font-size: 1.2em;
  font-weight: 700;
  margin: 0 0 8px;
  color: var(--color-text);
}

.ai-approval-lead {
  color: var(--color-text-secondary);
  margin: 0 0 20px;
  line-height: 1.7;
}

.ai-approval-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.ai-approval-card {
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 16px;
  background: var(--color-surface);
}

/* プラグインの表示名 (道具の内部名 create_task 等は出さない、2026-08-15) */
.ai-approval-card__title {
  color: var(--color-text);
}

.ai-approval-card__head {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}

.ai-approval-badge {
  font-size: 0.8em;
  padding: 2px 8px;
  border-radius: 999px;
  /* 実在するトークンだけを使う (色を直値で書かない) */
  background: var(--color-surface-alt);
  color: var(--color-warning);
}

.ai-approval-badge--done {
  background: var(--color-surface-alt);
  color: var(--color-success);
}

/* 消える操作 (destructive)。通常の承認待ちと見分けがつくよう色だけ変える
   (2026-08-15 消える操作の安全装置) */
.ai-approval-badge--destructive {
  background: var(--color-surface-alt);
  color: var(--color-danger);
}

.ai-approval-remaining {
  font-size: 0.85em;
  color: var(--color-text-secondary);
  margin-left: auto;
}

/* AI が渡した値がそのまま入る。改行を保って読めるようにする */
.ai-approval-summary {
  margin: 0 0 12px;
  padding: 12px;
  background: var(--color-bg);
  border-radius: 6px;
  white-space: pre-wrap;
  word-break: break-word;
  font-family: inherit;
  font-size: 0.95em;
  line-height: 1.7;
  color: var(--color-text);
}

.ai-approval-reason {
  font-size: 0.9em;
  color: var(--color-text);
  margin: 0 0 8px;
}

.ai-approval-meta {
  font-size: 0.85em;
  color: var(--color-text-secondary);
  margin-bottom: 12px;
}

.ai-approval-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
}

.ai-approval-empty,
.ai-approval-loading {
  padding: 32px 16px;
  text-align: center;
  color: var(--color-text-secondary);
}


/* ==== css/components/side-panel.css ==== */
/* ========================================
   SidePanel -- 共通サイドパネル
   ======================================== */

.side-panel {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  width: 420px;
  background: var(--color-surface, #fafbfc);
  box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);
  z-index: 1000;
  display: none;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform 0.25s ease;
}

.side-panel.open {
  transform: translateX(0);
}

/* minimize状態: 右端にちょっとだけ見える */
.side-panel.minimized {
  transition: transform 0.25s ease;
}

/* リサイズハンドル */
.side-panel__resize-handle {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 6px;
  cursor: col-resize;
  z-index: 10;
  transition: background 0.15s;
}

@media (hover: hover) and (pointer: fine) {
  .side-panel__resize-handle:hover,
  .side-panel__resize-handle:active {
    background: var(--color-accent-strong, #7986cb);
    opacity: 0.4;
  }
}

/* 幅リセットボタン(ドラッグ直後の数秒だけ表示、左下でコンテンツの邪魔をしない) */
.side-panel__reset-width {
  position: absolute;
  left: 10px;
  bottom: 14px;
  z-index: 11;
  padding: 3px 9px;
  border: 1px solid var(--color-border);
  border-radius: 10px;
  background: var(--color-surface, #fafbfc);
  color: var(--color-muted);
  font-size: 0.6875rem;
  cursor: pointer;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease;
}

.side-panel__reset-width.visible {
  opacity: 1;
  pointer-events: auto;
}

.side-panel__reset-width:hover {
  border-color: var(--color-accent-strong, #7986cb);
  color: var(--color-accent-strong, #7986cb);
}

/* 取っ手ボタン（minimize/restore トグル） */
.side-panel__toggle {
  position: absolute;
  left: -24px;
  top: 50%;
  transform: translateY(-50%);
  width: 24px;
  height: 64px;
  border: 1px solid var(--color-surface);
  border-radius: 6px 0 0 6px;
  background: var(--color-surface);
  color: var(--color-muted);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 11;
  transition:
    color 0.15s,
    background 0.15s;
  touch-action: manipulation;
  padding: 0;
}

@media (hover: hover) and (pointer: fine) {
  .side-panel__toggle:hover {
    color: var(--color-text);
    background: var(--color-surface-alt);
  }
}

/* minimize時（閉じてるとき）の取っ手 */
.side-panel.minimized .side-panel__toggle {
  background: var(--color-target);
  border-color: var(--color-target);
}

/* ヘッダー */
.side-panel__header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--color-border);
  flex-shrink: 0;
}

.side-panel__title {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--color-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
}

/* ボディ（スクロール可能） */
.side-panel__body {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
}
/* 文書系パネルの標準内余白 (SidePanel.open の padded: true で付く)。
   一覧系は区切り線を端まで届かせるため余白なしの既定を使う */
.side-panel__body--padded {
  padding: 12px 16px;
}

/* ヘッダー内の戻るボタン (アイコンのみ) */
.side-panel__back-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
  transition:
    color 0.15s,
    background 0.15s;
  touch-action: manipulation;
  position: relative;
}

/* タップ領域 44x44 確保 (見た目は 28x28 維持、 qc-btn-consult パターン、
   2026-06-04 UI スイープで検出) */
.side-panel__back-btn::before {
  content: '';
  position: absolute;
  inset: -8px;
}

@media (hover: hover) and (pointer: fine) {
  .side-panel__back-btn:hover:not(:disabled) {
    color: var(--color-text);
    background: var(--color-surface-alt);
  }
}

.side-panel__back-btn:disabled {
  opacity: 0.25;
  cursor: default;
  pointer-events: none;
}

/* ヘッダー内アクションボタン */
.side-panel__actions {
  display: flex;
  align-items: center;
  gap: 4px;
}

.side-panel__action-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
  transition:
    color 0.15s,
    background 0.15s;
  touch-action: manipulation;
  position: relative;
}

/* タップ領域 44x44 確保 */
.side-panel__action-btn::before {
  content: '';
  position: absolute;
  inset: -8px;
}

@media (hover: hover) and (pointer: fine) {
  .side-panel__action-btn:hover:not(:disabled) {
    color: var(--color-text);
    background: var(--color-surface-alt);
  }
}

.side-panel__action-btn:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

/* 閉じるボタン */
.side-panel__close {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
  transition:
    color 0.15s,
    background 0.15s;
  touch-action: manipulation;
  flex-shrink: 0;
  position: relative;
}

/* タップ領域 44x44 確保 */
.side-panel__close::before {
  content: '';
  position: absolute;
  inset: -8px;
}

@media (hover: hover) and (pointer: fine) {
  .side-panel__close:hover {
    color: var(--color-text);
    background: var(--color-surface-alt);
  }
}

/* ユーザープロフィールパネル */
.user-profile-panel {
  padding: 16px;
}

/* カード: アバター + 情報 + レベル */
.user-profile-panel__card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px;
  background: var(--color-surface-alt);
  border-radius: 12px;
  margin-bottom: 12px;
}

.user-profile-panel__avatar {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
}

.user-profile-panel__avatar--editable {
  cursor: pointer;
  transition: opacity 0.15s;
}

.user-profile-panel__avatar--editable:hover {
  opacity: 0.8;
}

/* 画像を持ち込んでいる間、ここが受け口であることを示す */
.user-profile-panel__avatar--dragover {
  opacity: 0.7;
  outline: 2px dashed var(--color-primary);
  outline-offset: 2px;
}

.user-profile-panel__avatar--placeholder {
  background: var(--color-accent-bg);
  color: var(--color-accent-text);
  font-size: 1.4rem;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
}

.user-profile-panel__info {
  flex: 1;
  min-width: 0;
}

.user-profile-panel__name {
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.user-profile-panel__title {
  font-size: 0.75rem;
  color: var(--color-accent);
  margin-top: 2px;
}

.user-profile-panel__role-badge {
  display: inline-block;
  font-size: 0.65rem;
  color: var(--color-muted);
  background: var(--color-bg);
  padding: 2px 8px;
  border-radius: 10px;
  margin-top: 4px;
}

.user-profile-panel__deleted-badge {
  display: block;
  text-align: center;
  font-size: 0.8rem;
  color: var(--color-muted);
  background: var(--color-surface-alt);
  padding: 6px 12px;
  border-radius: 6px;
  margin-bottom: 8px;
}

.user-profile-panel__level {
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--color-accent);
  white-space: nowrap;
}

/* ステータス: 横並び */
.user-profile-panel__stats {
  display: flex;
  gap: 1px;
  background: var(--color-border);
  border-radius: 10px;
  overflow: hidden;
  margin-bottom: 12px;
}

.user-profile-panel__stat {
  flex: 1;
  text-align: center;
  padding: 10px 4px;
  background: var(--color-surface);
}

.user-profile-panel__stat-value {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--color-text);
}

.user-profile-panel__stat-label {
  font-size: 0.65rem;
  color: var(--color-muted);
  margin-top: 2px;
}

/* プロフィール内セクション */
.user-profile-panel__section {
  margin-top: 16px;
  padding-top: 12px;
  border-top: 1px solid var(--color-border);
}

.user-profile-panel__section-title {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-muted);
  margin-bottom: 8px;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

/* アクションボタン */
.user-profile-panel__actions {
  display: flex;
  gap: 8px;
}

.user-profile-panel__action-btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 10px 16px;
  border: 1px solid var(--color-border);
  border-radius: 10px;
  background: var(--color-surface);
  color: var(--color-text);
  cursor: pointer;
  font-size: 0.8rem;
  transition: background 0.15s;
}

.user-profile-panel__action-btn:hover {
  background: var(--color-surface-alt);
}

/* レスポンシブ: モバイルでは全幅 */
@media (max-width: 1199px) {
  .side-panel {
    width: 100% !important;
  }

  .side-panel__resize-handle {
    display: none;
  }
}


/* ==== css/components/chat-panel.css ==== */
/* チャットパネル (modules/chat-panel.ts)
   SidePanel 内の軽量チャットビュー (読む + 送る)。一覧系のため body 余白なし (padded 不使用)、
   行側とヘッダー側に余白を持つ。
   公開部品: .chat-panel__form / __input / __send は meeting-room (発言ログパネルの送信欄) が
   再利用している。見た目を再設計するときはプラグイン側の利用箇所も確認すること */

.chat-panel {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
}

.chat-panel__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 16px;
  border-bottom: 1px solid var(--color-border);
  flex-shrink: 0;
}

.chat-panel__name {
  font-size: 0.85rem;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chat-panel__full {
  border: none;
  background: transparent;
  color: var(--color-accent-base, #7282bb);
  font-size: 0.75rem;
  font-weight: 500;
  cursor: pointer;
  padding: 2px 4px;
  white-space: nowrap;
}
.chat-panel__full:hover {
  text-decoration: underline;
}

.chat-panel__messages {
  flex: 1;
  overflow-y: auto;
  padding: 10px 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-height: 0;
}

.chat-panel__msg-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.chat-panel__msg-from {
  font-size: 0.78rem;
  font-weight: 600;
}

.chat-panel__msg-time {
  font-size: 0.7rem;
  color: var(--color-text-tertiary);
}

.chat-panel__msg-body {
  font-size: 0.85rem;
  line-height: 1.55;
  overflow-wrap: anywhere;
}

.chat-panel__attach {
  margin-left: 6px;
  font-size: 0.72rem;
  color: var(--color-text-tertiary);
}

.chat-panel__empty {
  color: var(--color-text-tertiary);
  font-size: 0.8rem;
  text-align: center;
  padding: 24px 0;
}

.chat-panel__form {
  display: flex;
  /* コアのグローバル form スタイル (カード風の枠 + 縦積み + 大きな余白) を明示的に打ち消す */
  flex-direction: row;
  align-items: flex-end;
  gap: 8px;
  padding: 10px 16px;
  margin: 0;
  background: transparent;
  border: none;
  border-radius: 0;
  border-top: 1px solid var(--color-border);
  box-shadow: none;
  transition: none;
  flex-shrink: 0;
}

.chat-panel__input {
  flex: 1;
  resize: none;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
  color: var(--color-text);
  font-size: 0.85rem;
  line-height: 1.5;
  padding: 8px 10px;
  font-family: inherit;
  min-height: 0;
}
.chat-panel__input:focus {
  outline: none;
  border-color: var(--color-accent-base, #7282bb);
}

.chat-panel__send {
  border: 1px solid var(--color-accent-base, #7282bb);
  background: var(--color-accent-base, #7282bb);
  color: var(--color-button-text);
  border-radius: 8px;
  font-size: 0.8rem;
  padding: 8px 14px;
  cursor: pointer;
  flex-shrink: 0;
}
.chat-panel__send:disabled {
  opacity: 0.5;
  cursor: default;
}

.chat-panel__readonly {
  padding: 10px 16px;
  border-top: 1px solid var(--color-border);
  font-size: 0.78rem;
  color: var(--color-text-tertiary);
  flex-shrink: 0;
}


/* ==== css/components/fab-menu.css ==== */
/* ========================================
   FAB Menu -- 放射状フローティングメニュー
   中心ボタンの周囲に丸いメニューが展開
   ======================================== */

/* レイアウト調整変数（数値だけ変えればレイアウト全体が再計算される）
   CSS の cos()/sin() で各スロットの位置を計算する。
   ブラウザサポート: Chrome 111+ / Safari 15.4+ / Firefox 108+ */
:root {
  --fab-radius: 96px; /* FAB 中心から各メニューアイコンまでの距離 */
  --fab-arc-start: 78deg; /* 円弧の始点角度 (90deg=真上、 数値小さいほど右寄り) */
  --fab-arc-deg: 112; /* 円弧の角度幅 (度数、無単位) */
}

.fab-menu {
  position: fixed;
  right: 24px;
  bottom: 24px;
  /* サイドパネル (z-index: 1000) より上に表示して、 サイドパネル展開中も FAB にアクセスできるようにする */
  z-index: 1001;
}

/* 中心ボタン */
.fab-menu__trigger {
  width: 62px;
  height: 62px;
  border-radius: 50%;
  border: 3px solid var(--color-accent-strong, #7986cb);
  background: var(--color-surface, #fafbfc);
  color: var(--color-button-text);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
  transition:
    transform 0.25s ease,
    box-shadow 0.25s ease;
  touch-action: manipulation;
  position: relative;
  z-index: 2;
  overflow: hidden;
  padding: 0;
}

.fab-menu__trigger img {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  object-fit: cover;
}

.fab-menu__trigger:active {
  transform: scale(0.93);
}

.fab-menu.open .fab-menu__trigger {
  /* trigger 自体は回転させない（相棒の顔が斜めにならないように）。
     C-HUB レイヤーだけ rotate(45deg) で消えながら回るのが下のルール。 */
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}

/* 2 レイヤー構造（C-HUB ロゴ ↔ 相棒アイコン） */
.fab-menu__trigger-chub,
.fab-menu__trigger-aibo {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  overflow: hidden;
  pointer-events: none;
}

/* C-HUB ロゴレイヤー: 待機時に表示、展開時は rotate(45deg) しながらフェードアウト */
.fab-menu__trigger-chub {
  opacity: 1;
  transform: rotate(0deg);
  transition:
    opacity 0.2s ease,
    transform 0.25s ease;
}

.fab-menu.open .fab-menu__trigger-chub {
  opacity: 0;
  transform: rotate(45deg);
}

/* 相棒アイコンレイヤー: 待機時は非表示、展開時に正面のままフェードイン */
.fab-menu__trigger-aibo {
  opacity: 0;
  transition: opacity 0.2s ease;
}

.fab-menu.open .fab-menu__trigger-aibo {
  opacity: 1;
}

/* 相棒モード: 相棒チャット起動中、 トリガーが常に相棒アイコン固定 */
.fab-menu.aibo-mode .fab-menu__trigger-chub {
  opacity: 0;
  transform: rotate(45deg);
}

.fab-menu.aibo-mode .fab-menu__trigger-aibo {
  opacity: 1;
}

/* 相棒レイヤー内の SVG / img はトリガーいっぱいに */
.fab-menu__trigger-aibo svg {
  width: 60%;
  height: 60%;
  color: var(--color-accent-strong, #7986cb);
}

.fab-menu__trigger-aibo img {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  object-fit: cover;
}

/* メニュー項目コンテナ */
.fab-menu__items {
  position: absolute;
  bottom: 0;
  right: 0;
  width: 0;
  height: 0;
}

/* 各メニュー項目（丸） */
.fab-menu__item {
  position: absolute;
  bottom: 0;
  right: 0;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  border: none;
  background: var(--color-surface, #fafbfc);
  color: var(--color-text);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.15);
  transition:
    transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
    opacity 0.2s ease;
  opacity: 0;
  transform: translate(0, 0) scale(0.5);
  touch-action: manipulation;
  z-index: 1;
}

.fab-menu__item svg {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
}

/* 未処理の件数バッジ。 玉の右上に重ねる。
   親 .fab-menu__item の opacity に追従するので、 弧外スロットでは自動的に消える。
   数字はサブメニューの通知バッジと同じサイズ感に揃える */
/* FAB 本体 (閉じた丸ボタン) の合計バッジ。開いている間は各玉のバッジに役割を譲って隠す */
.fab-menu__total-badge {
  position: absolute;
  top: -2px;
  right: -2px;
  z-index: 3;
  min-width: 18px;
  height: 18px;
  padding: 0 4px;
  box-sizing: border-box;
  border-radius: 999px;
  background: var(--color-accent-strong, #7986cb);
  color: var(--color-button-text);
  font-size: 0.625rem;
  font-weight: 700;
  line-height: 18px;
  text-align: center;
  pointer-events: none;
}

.fab-menu.open .fab-menu__total-badge {
  display: none !important;
}

.fab-menu__badge {
  position: absolute;
  top: -2px;
  right: -2px;
  min-width: 18px;
  height: 18px;
  padding: 0 4px;
  box-sizing: border-box;
  border-radius: 999px;
  background: var(--color-accent-strong, #7986cb);
  color: var(--color-button-text);
  font-size: 0.625rem;
  font-weight: 700;
  line-height: 18px;
  text-align: center;
  pointer-events: none;
}

/* ラベル -- 二重丸構造: アイコン弧の外側に pill 型ラベルが同じ弧で並ぶ。
   文字サイズは小さく抑える (アイコンと並ぶ補助情報なので主張しすぎない)。
   親 .fab-menu__item の opacity に追従するので、 弧外スロットのラベルは自動的に消える。 */
.fab-menu__label {
  position: absolute;
  white-space: nowrap;
  /* 0.5rem (8px) は小さすぎて読めなかった (2026-06-04 UI スイープで検出)、
     0.6875rem (11px) に引き上げ。 装飾 padding / offset も微調整。 */
  font-size: 0.6875rem;
  font-weight: 500;
  color: var(--color-text);
  background: var(--color-surface);
  border-radius: 10px;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
  pointer-events: none;
  /* 隣のスロットとラベルが重なって文字が潰れて見える不具合の対策 (2026-08-16)。
     隣接スロットの中心間隔は ACTUAL_SPACING_DEG (約 27.7°) 固定、 ラベル半径は
     item 半径 + label-offset (40px) 相当なので、 スロット間の弧の長さは常に
     60px 台前半になる (375px 幅で実測: 中心間隔 63.2px)。
     このとき max-width を 60px に切り詰めたところ、 5 文字ラベル (「カレンダー」
     「まとめ読み」) は本来 63〜64px 必要で、 4 文字以下は最大でも 58.5px 止まりと判明
     (実測値、 padding 込み)。 60px では 5 文字だけが毎回省略記号で切れてしまっていた。
     そこで横 padding を 10px→6px に詰めて同じ文字数でも箱を約 8px 小さくし、
     max-width を 64px に上げて 5 文字ラベルも省略なしで収まるようにした
     (5 文字ラベルの実測後の幅は約 55〜56px、 64px の中に余裕を持って収まる)。
     隣接スロット間隔 63.2px に対し、 両隣が同時に上限 64px まで伸びるのは
     現行ラベルでは起きない (5 文字ラベル自身が padding 削減後は 56px 前後で
     収まるため) 組み合わせなので、 「隣と重なる」再発は無い。
     プロジェクト全体で `* { box-sizing: border-box }` なので max-width は
     padding 込みの見た目幅そのもの */
  max-width: 64px;
  padding: 3px 6px;
  overflow: hidden;
  text-overflow: ellipsis;
  /* 玉の中心を起点に、 弧の外側方向 (--item-angle と同じ方向) に --label-offset 移動 */
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%)
    translate(
      calc(var(--label-offset, 40px) * cos(var(--item-angle))),
      calc(var(--label-offset, 40px) * sin(var(--item-angle)) * -1)
    );
}

/* 各 item は --item-angle (deg) を JS から渡される。
   全項目を円周上に等間隔配置 + ルーレット回転で angleOffset がここに反映される */
.fab-menu__item {
  --item-angle: 0deg;
  --slot-scale: 1;
}

/* 展開時の最終位置 (CSS の cos/sin で動的計算)
   x = radius × cos(item-angle)
   y = radius × sin(item-angle) × -1 (画面の y 軸は下向きなので反転) */
.fab-menu.open .fab-menu__item {
  transform: translate(
      calc(var(--fab-radius) * cos(var(--item-angle))),
      calc(var(--fab-radius) * sin(var(--item-angle)) * -1)
    )
    scale(var(--slot-scale));
}

/* 開く / 閉じるのスタガード演出 (順番に飛び出す / 仕舞われる) */
.fab-menu.open .fab-menu__item:nth-child(1) {
  transition-delay: 0s;
}
.fab-menu.open .fab-menu__item:nth-child(2) {
  transition-delay: 0.03s;
}
.fab-menu.open .fab-menu__item:nth-child(3) {
  transition-delay: 0.06s;
}
.fab-menu.open .fab-menu__item:nth-child(4) {
  transition-delay: 0.09s;
}
.fab-menu.open .fab-menu__item:nth-child(5) {
  transition-delay: 0.12s;
}
.fab-menu:not(.open) .fab-menu__item:nth-child(n) {
  transition-delay: 0s;
}

/* hover アニメ: アイコン (SVG / img) が「ニョッ」 と動く squash & stretch
   人型キャラがぷるんと立ち上がる感じを意識した縦横の伸縮 + 軽い回転で命を吹き込む。
   item の位置 transform は .fab-menu.open 側で確定済のため、 アイコン内側だけアニメ
   して位置崩れを起こさない */
@keyframes fab-icon-wiggle {
  0% {
    transform: scale(1, 1) rotate(0);
  }
  20% {
    transform: scale(1.18, 0.85) rotate(-4deg);
  }
  42% {
    transform: scale(0.9, 1.18) rotate(5deg);
  }
  62% {
    transform: scale(1.08, 0.96) rotate(-2deg);
  }
  82% {
    transform: scale(0.98, 1.04) rotate(1deg);
  }
  100% {
    transform: scale(1, 1) rotate(0);
  }
}

/* デフォルトの戻り遷移 (hover off 時にスムーズに静止状態へ) */
.fab-menu__item svg,
.fab-menu__item img,
.fab-menu__trigger-aibo svg,
.fab-menu__trigger-aibo img,
.fab-menu__trigger-chub img,
.fab-menu__trigger-chub svg {
  transition: transform 0.18s ease;
  transform-origin: center;
}

.fab-menu__item:hover svg,
.fab-menu__item:hover img,
.fab-menu__item:focus-visible svg,
.fab-menu__item:focus-visible img {
  animation: fab-icon-wiggle 0.55s cubic-bezier(0.36, 0, 0.36, 1);
}

.fab-menu__trigger:hover .fab-menu__trigger-chub img,
.fab-menu__trigger:hover .fab-menu__trigger-chub svg,
.fab-menu__trigger:hover .fab-menu__trigger-aibo svg,
.fab-menu__trigger:hover .fab-menu__trigger-aibo img,
.fab-menu__trigger:focus-visible .fab-menu__trigger-chub img,
.fab-menu__trigger:focus-visible .fab-menu__trigger-chub svg,
.fab-menu__trigger:focus-visible .fab-menu__trigger-aibo svg,
.fab-menu__trigger:focus-visible .fab-menu__trigger-aibo img {
  animation: fab-icon-wiggle 0.55s cubic-bezier(0.36, 0, 0.36, 1);
}

/* trigger 本体は影だけ強調 (transform は既存ロジック (open 時 / aibo 時) と競合させない) */
.fab-menu__trigger:hover {
  box-shadow: 0 6px 22px rgba(0, 0, 0, 0.3);
}

/* 動きが苦手な人向け (vestibular disorders) のアクセシビリティ */
@media (prefers-reduced-motion: reduce) {
  .fab-menu__item:hover svg,
  .fab-menu__item:hover img,
  .fab-menu__item:focus-visible svg,
  .fab-menu__item:focus-visible img,
  .fab-menu__trigger:hover .fab-menu__trigger-chub img,
  .fab-menu__trigger:hover .fab-menu__trigger-chub svg,
  .fab-menu__trigger:hover .fab-menu__trigger-aibo svg,
  .fab-menu__trigger:hover .fab-menu__trigger-aibo img,
  .fab-menu__trigger:focus-visible .fab-menu__trigger-chub img,
  .fab-menu__trigger:focus-visible .fab-menu__trigger-chub svg,
  .fab-menu__trigger:focus-visible .fab-menu__trigger-aibo svg,
  .fab-menu__trigger:focus-visible .fab-menu__trigger-aibo img {
    animation: none;
  }
}

/* ルーレット回転中は transition を無効化 (毎フレーム JS で transform を直接動かすため)
   止まった瞬間のスナップだけ短い transition で滑らかに */
.fab-menu.open.spinning .fab-menu__item {
  transition:
    transform 0s linear,
    opacity 0s linear;
  transition-delay: 0s !important;
}

.fab-menu.open.snapping .fab-menu__item {
  transition:
    transform 0.18s cubic-bezier(0.34, 1.56, 0.64, 1),
    opacity 0.15s ease;
  transition-delay: 0s !important;
}

/* パネル内のリスト表示 */
.fab-panel-loading,
.fab-panel-empty {
  padding: 24px;
  text-align: center;
  color: var(--color-muted);
  font-size: 0.85rem;
}

.fab-panel-list {
  display: flex;
  flex-direction: column;
}

.fab-panel-list-item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 10px 16px;
  border: none;
  border-bottom: 1px solid var(--color-border);
  background: transparent;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s;
  touch-action: manipulation;
}

@media (hover: hover) and (pointer: fine) {
  .fab-panel-list-item:hover {
    background: var(--color-surface-alt);
  }
}

.fab-panel-list-title {
  font-size: 0.85rem;
  color: var(--color-text);
  font-weight: 500;
}

.fab-panel-list-meta {
  font-size: 0.75rem;
  color: var(--color-muted);
}

.fab-panel-list-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 6px 16px;
  border-bottom: 1px solid var(--color-border);
}

.fab-panel-list-count {
  font-size: 0.75rem;
  color: var(--color-muted);
}

.fab-panel-detail-nav {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 20px;
}

.fab-panel-icon-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
  transition:
    color 0.15s,
    background 0.15s;
  touch-action: manipulation;
}

@media (hover: hover) and (pointer: fine) {
  .fab-panel-icon-btn:hover {
    color: var(--color-text);
    background: var(--color-surface-alt);
  }
}

.fab-panel-back-btn {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 6px 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
  font-size: 0.8rem;
  transition:
    color 0.15s,
    background 0.15s;
  touch-action: manipulation;
}

@media (hover: hover) and (pointer: fine) {
  .fab-panel-back-btn:hover {
    color: var(--color-text);
    background: var(--color-surface-alt);
  }
}

/* タスクアイテム */
.fab-panel-task-item {
  flex-direction: row !important;
  align-items: center !important;
  gap: 8px !important;
}

.fab-panel-task-check {
  width: 20px;
  height: 20px;
  min-width: 20px;
  border: 2px solid var(--color-border);
  border-radius: 50%;
  background: transparent;
  color: transparent;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s;
  touch-action: manipulation;
}

.fab-panel-task-check--done {
  border-color: var(--color-status-ok, #27ae60);
  background: var(--color-status-ok, #27ae60);
  color: var(--color-button-text);
}

.fab-panel-task-content {
  flex: 1;
  cursor: pointer;
  min-width: 0;
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.fab-panel-task-content .fab-panel-list-title {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.fab-panel-task-content .fab-panel-list-meta {
  flex-shrink: 0;
  font-size: 0.7rem;
}

.fab-panel-task-title--done {
  text-decoration: line-through;
  opacity: 0.5;
}

.fab-panel-task-overdue {
  color: var(--color-task-due-overdue);
}

.fab-panel-task-today {
  color: #7bc8a4;
  font-weight: 500;
}

.fab-panel-task-tomorrow {
  color: #a8c4d4;
  font-weight: 500;
}

.fab-panel-save-btn {
  padding: 8px 16px;
  border: none;
  border-radius: 6px;
  background: var(--color-accent-strong, #7986cb);
  color: var(--color-button-text);
  cursor: pointer;
  font-size: 0.85rem;
  transition: opacity 0.15s;
  touch-action: manipulation;
}

.fab-panel-save-btn:active {
  opacity: 0.8;
}

.fab-panel-label {
  font-size: 0.8rem;
  color: var(--color-muted);
  font-weight: 500;
}

.fab-panel-input,
.fab-panel-select {
  padding: 8px 10px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 0.85rem;
  font-family: inherit;
  width: 100%;
}

.fab-panel-input:focus,
.fab-panel-select:focus {
  outline: none;
  border-color: var(--color-accent-strong);
}

/* 保存ボタン群 */
.fab-panel-save-actions {
  display: flex;
  gap: 8px;
  padding: 12px 0;
}

.fab-panel-save-btn--secondary {
  background: transparent;
  color: var(--color-muted);
  border: 1px solid var(--color-border);
}

.fab-panel-save-btn--publish {
  background: var(--color-status-ok, #27ae60);
}

/* フィルタータブ */
.fab-panel-filter-tabs {
  display: flex;
  gap: 2px;
  background: var(--color-bg);
  border-radius: 6px;
  padding: 2px;
}

.fab-panel-filter-tab {
  padding: 3px 10px;
  border: none;
  border-radius: 4px;
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
  font-size: 0.75rem;
  transition:
    background 0.15s,
    color 0.15s;
  touch-action: manipulation;
}

.fab-panel-filter-tab.active {
  background: var(--color-surface);
  color: var(--color-text);
  font-weight: 500;
}

/* 下書きバッジ */
.fab-panel-draft-badge {
  font-size: 0.65rem;
  color: var(--color-muted);
  background: var(--color-bg);
  padding: 1px 5px;
  border-radius: 3px;
  vertical-align: middle;
}

/* 操作ボタン群 */
.fab-panel-note-actions {
  display: flex;
  gap: 6px;
  padding: 4px 0;
  flex-wrap: wrap;
}

.fab-panel-edit-btn {
  padding: 4px 12px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
  font-size: 0.8rem;
  transition:
    background 0.15s,
    color 0.15s;
  touch-action: manipulation;
}

@media (hover: hover) and (pointer: fine) {
  .fab-panel-edit-btn:hover {
    background: var(--color-surface-alt);
    color: var(--color-text);
  }
}

.fab-panel-delete-btn {
  color: var(--color-task-due-overdue);
  border-color: #c9707040;
}

@media (hover: hover) and (pointer: fine) {
  .fab-panel-delete-btn:hover {
    background: #c9707015;
    color: var(--color-task-due-overdue);
  }
}

/* 編集ツールバー */
.fab-panel-edit-toolbar {
  display: flex;
  gap: 4px;
  padding: 6px 0;
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 8px;
}

.fab-panel-toolbar-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border: 1px solid var(--color-border);
  border-radius: 4px;
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
  transition:
    background 0.15s,
    color 0.15s;
  touch-action: manipulation;
}

@media (hover: hover) and (pointer: fine) {
  .fab-panel-toolbar-btn:hover {
    background: var(--color-surface-alt);
    color: var(--color-text);
  }
}

.fab-panel-toolbar-btn:active {
  background: var(--color-surface-alt);
}

/* 編集モードのタイトル・本文 */
.fab-panel-edit-title {
  font-size: 1.1rem;
  font-weight: 600;
  padding: 8px 0;
}

.fab-panel-edit-body {
  min-height: 200px;
}

/* サイドパネル展開中も FAB は常時表示する (どの画面サイズでも一貫)。
   片手操作のモバイルで「機能を切り替えるたびにサイドパネルを閉じる」 手間を省くため、
   FAB がサイドパネル右下に重なる副作用は許容する。 */

/* モバイル対応 */
@media (max-width: 768px) {
  :root {
    --fab-radius: 92px;
    --fab-arc-start: 82deg;
    --fab-arc-deg: 110;
  }

  /* スマホでは画面下部にチャット入力欄・送信ボタン・フォームの保存ボタン等が来やすいので、
     FAB を底から 80px 上げて重なりを回避する (PC は 24px のまま) */
  .fab-menu {
    right: 16px;
    bottom: 80px;
  }

  .fab-menu__trigger {
    width: 48px;
    height: 48px;
  }

  .fab-menu__item {
    width: 38px;
    height: 38px;
  }
}

/* ==========================================================================
   FAB メディア一覧 (3 列グリッド)
   ========================================================================== */
.fab-panel-media-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  padding: 12px;
}

.fab-panel-media-tile {
  aspect-ratio: 1;
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  overflow: hidden;
  cursor: pointer;
  padding: 0;
  transition:
    border-color 0.15s,
    transform 0.1s;
  display: flex;
  align-items: center;
  justify-content: center;
}

@media (hover: hover) and (pointer: fine) {
  .fab-panel-media-tile:hover {
    border-color: var(--color-primary, var(--color-text));
    transform: scale(1.02);
  }
}

.fab-panel-media-tile:active {
  transform: scale(0.98);
}

.fab-panel-media-tile img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.fab-panel-media-tile-icon {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  width: 100%;
  height: 100%;
  color: var(--color-muted);
}

.fab-panel-media-tile-icon svg {
  width: 32px;
  height: 32px;
}

.fab-panel-media-tile-icon span {
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

.fab-panel-media-tile-icon--video {
  background: rgba(0, 0, 0, 0.06);
}

/* ========== 通知 SidePanel（FAB「未読通知」簡易版） ========== */
.notification-unread-toolbar {
  display: flex;
  justify-content: flex-end;
  padding: 8px 16px;
  border-bottom: 1px solid var(--color-border);
}

.notification-unread-mark-all-btn {
  padding: 6px 12px;
  font-size: 0.8rem;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: transparent;
  color: var(--color-text);
  cursor: pointer;
  transition: background 0.15s;
}

.notification-unread-mark-all-btn:hover {
  background: var(--color-surface-alt);
}

.notification-unread-list {
  display: flex;
  flex-direction: column;
}

.notification-unread-loading,
.notification-unread-empty,
.notification-unread-error {
  padding: 32px 16px;
  text-align: center;
  color: var(--color-muted);
  font-size: 0.9rem;
}

.notification-unread-empty {
  color: var(--color-text);
  font-weight: 500;
  line-height: 1.6;
}

/* ========== メンバー SidePanel (FAB「メンバー」 admin+) ========== */
.fab-panel-team-tabs {
  flex-wrap: wrap;
}

.fab-panel-member-list {
  display: flex;
  flex-direction: column;
}

.fab-panel-member-card {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 14px;
  border: none;
  border-bottom: 1px solid var(--color-border);
  background: transparent;
  text-align: left;
  cursor: pointer;
  transition: background 0.15s;
  touch-action: manipulation;
  width: 100%;
}

@media (hover: hover) and (pointer: fine) {
  .fab-panel-member-card:hover {
    background: var(--color-surface-alt);
  }
}

.fab-panel-member-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  overflow: hidden;
  background: var(--color-surface-alt);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.fab-panel-member-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.fab-panel-member-initial {
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--color-text);
}

.fab-panel-member-info {
  flex: 1;
  min-width: 0;
}

.fab-panel-member-name {
  font-size: 0.85rem;
  color: var(--color-text);
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.fab-panel-member-meta {
  font-size: 0.7rem;
  color: var(--color-muted);
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.fab-panel-member-role {
  font-weight: 500;
}

/* メンバーカード - プラグイン拡張スロット (attendance / 他プラグインが注入) */
.fab-panel-member-extensions {
  display: contents;
}

/* ========================================
   閲覧申請パネル (SidePanel 内)
   処理待ちと許可済みを縦に並べる。 状態はセクション見出しで区別する
   ======================================== */

.access-requests {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.access-requests__lead {
  margin: 0;
  font-size: 0.8rem;
  color: var(--color-muted);
  line-height: 1.6;
}

.access-requests__loading,
.access-requests__empty {
  padding: 16px 4px;
  color: var(--color-muted);
  font-size: 0.85rem;
}

.access-requests__section {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.access-requests__section + .access-requests__section {
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid var(--color-border);
}

.access-requests__heading {
  margin: 0;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--color-text);
}

.access-requests__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.access-requests__item {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  background: var(--color-surface);
}

.access-requests__main {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}

.access-requests__who {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--color-text);
  word-break: break-word;
}

.access-requests__file {
  font-size: 0.8rem;
  color: var(--color-text);
  word-break: break-all;
}

.access-requests__source,
.access-requests__date {
  font-size: 0.75rem;
  color: var(--color-muted);
  word-break: break-word;
}

/* 操作ボタンは行の下に置く。 許可 (Primary) と断る / 取り消す (Tertiary) を
   視覚的に差をつけて、 破壊的な側を目立たせない */
.access-requests__actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.access-requests__btn {
  padding: 7px 14px;
  min-height: 34px;
  font-size: 0.8rem;
  border-radius: 6px;
  border: 1px solid var(--color-border);
  background: none;
  color: var(--color-muted);
  cursor: pointer;
}

.access-requests__btn:hover:not(:disabled) {
  color: var(--color-text);
  border-color: var(--color-text);
}

.access-requests__btn:disabled {
  opacity: 0.5;
  cursor: default;
}

.access-requests__btn--approve {
  background: var(--color-accent-strong, #7986cb);
  border-color: var(--color-accent-strong, #7986cb);
  color: var(--color-button-text);
  font-weight: 600;
}

.access-requests__btn--approve:hover:not(:disabled) {
  color: var(--color-button-text);
  opacity: 0.9;
}

.access-requests__btn--revoke:hover:not(:disabled) {
  color: var(--color-danger);
  border-color: var(--color-danger);
}


/* ==== css/components/calendar.css ==== */
/* ========================================
   Calendar (shared component)
   全カレンダー（コア FAB / attendance-manager / task-manager）共通スタイル
   命名: BEM 風（cal__elem--modifier）

   寸法・色値は attendance-manager.css の aw-calendar__* と同じ値を踏襲。
   プラグイン固有の表現はプラグイン側で追加スタイルを書く（cal__chip--task 等）。
   ======================================== */

.cal {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

/* SidePanel 等に組み込む時のラッパー（padding を提供）
   メインビューに置く時は親コンテナの padding を使うので不要 */
.cal-panel {
  padding: 1rem;
}

/* ヘッダー */
.cal__header {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--color-border);
}

.cal__nav {
  width: 28px;
  height: 28px;
  border-radius: 6px;
  border: 1px solid var(--color-border);
  background: transparent;
  color: var(--color-text);
  cursor: pointer;
  font-size: 0.9rem;
  font-weight: 600;
  transition: background 0.15s;
}

.cal__nav:hover {
  background: var(--color-surface-alt);
}

.cal__title {
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-text);
  text-align: center;
  flex: 1;
}

.cal__today-btn {
  padding: 4px 10px;
  font-size: 0.8rem;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: transparent;
  color: var(--color-text);
  cursor: pointer;
  transition: background 0.15s;
}

.cal__today-btn:hover {
  background: var(--color-surface-alt);
}

.cal__header-actions {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

/* グリッド */
.cal__grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 1px;
  background: var(--color-border);
  border: 1px solid var(--color-border);
  border-radius: 0.5rem;
  overflow: hidden;
}

.cal__weekday {
  padding: 0.4rem 0;
  background: var(--color-surface-alt);
  text-align: center;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-muted);
}

.cal__weekday--sun {
  color: var(--color-error-hover);
}

.cal__weekday--sat {
  color: #2471a3;
}

/* セル（attendance-manager と同じ寸法） */
.cal__cell {
  min-height: 4rem;
  padding: 0.375rem;
  background: var(--color-surface);
  cursor: default;
  transition: background 0.15s;
  display: flex;
  flex-direction: column;
  gap: 2px;
  position: relative;
  overflow: hidden;
}

.cal__cell--has-events,
.cal__cell--clickable {
  cursor: pointer;
}

.cal__cell--has-events:hover,
.cal__cell--clickable:hover {
  background: rgba(128, 128, 128, 0.08);
}

.cal__cell--empty {
  background: var(--color-bg);
}

.cal__cell--today {
  box-shadow: inset 0 0 0 2px var(--color-accent, #7282bb);
}

.cal__cell--sat {
  background: #edf2f8;
}

.cal__cell--sun {
  background: #f5ebed;
}

/* ダークモードでも土日セルを不透明化 (alpha 0.06 だと背景画像が透けて日付が読めない、
   chub-ui ルール 4 / 2026-06-04 UI スイープで検出)。 surface に色味を 8% だけ載せて
   ベース色は保持。 */
.theme-dark .cal__cell--sat {
  background: color-mix(in srgb, var(--color-surface) 92%, #6b9bd2 8%);
}

.theme-dark .cal__cell--sun {
  background: color-mix(in srgb, var(--color-surface) 92%, #d07d7d 8%);
}

.theme-dark .cal__cell--sat .cal__date {
  color: #6b9bd2;
}

.theme-dark .cal__cell--sun .cal__date {
  color: #d07d7d;
}

.theme-dark .cal__weekday--sat {
  color: #6b9bd2;
}

.theme-dark .cal__weekday--sun {
  color: #d07d7d;
}

.cal__date {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-text);
  line-height: 1;
}

.cal__cell--sat .cal__date {
  color: #2471a3;
}

.cal__cell--sun .cal__date {
  color: var(--color-error-hover);
}

/* 予定チップ（デフォルト、祝日名・休暇ラベルと同じ 0.5625rem）
   色付けはせず、テキスト内容で識別する */
.cal__chip {
  font-size: 0.5625rem;
  line-height: 1.3;
  padding: 1px 4px;
  background: var(--color-bg);
  border-radius: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: pointer;
  color: var(--color-text);
}

.cal__chip:hover {
  background: var(--color-surface-alt);
}

.cal__chip-time {
  color: var(--color-muted);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.cal__chip-badge {
  display: inline-block;
  padding: 0 3px;
  font-size: 0.55rem;
  font-weight: 600;
  background: var(--color-accent, #7282bb);
  color: var(--color-button-text);
  border-radius: 3px;
}

.cal__more {
  font-size: 0.65rem;
  color: var(--color-muted);
  font-weight: 600;
  padding: 0 4px;
}

/* 凡例 */
.cal__legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--color-border);
  font-size: 0.75rem;
  color: var(--color-muted);
}

.cal__legend-item {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}

.cal__legend-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
}

/* ========================================
   休日・休暇・定休（attendance-manager と同じ色値）
   ======================================== */

/* セル背景: 種類別 */
.cal__cell--holiday-national {
  background: rgba(39, 174, 96, 0.08);
}
.cal__cell--holiday-national .cal__date {
  color: var(--color-status-ok);
}
.theme-dark .cal__cell--holiday-national {
  background: rgba(109, 180, 155, 0.08);
}
.theme-dark .cal__cell--holiday-national .cal__date {
  color: #6db49b;
}

.cal__cell--holiday-company {
  background: rgba(212, 138, 41, 0.08);
}
.cal__cell--holiday-company .cal__date {
  color: #d48a29;
}
.theme-dark .cal__cell--holiday-company {
  background: rgba(212, 160, 87, 0.08);
}
.theme-dark .cal__cell--holiday-company .cal__date {
  color: #d4a057;
}

.cal__cell--holiday-special {
  background: rgba(124, 93, 172, 0.08);
}
.cal__cell--holiday-special .cal__date {
  color: #7c5dac;
}
.theme-dark .cal__cell--holiday-special {
  background: rgba(167, 139, 202, 0.08);
}
.theme-dark .cal__cell--holiday-special .cal__date {
  color: #a78bca;
}

/* 定休曜日: セル背景を灰色にし、下にテキストラベルも表示 */
.cal__cell--day-off {
  background: color-mix(in srgb, var(--color-surface-alt, #2a2a3e) 60%, transparent);
}

/* 定休/振替休ラベル（祝日名・休暇ラベルと同じくチップではなく小さなテキスト） */
.cal__day-off-label {
  font-size: 0.5625rem;
  line-height: 1.2;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
  color: var(--color-text-muted, #a0a0b0);
}

/* 祝日名（チップではなく日付下に小さなテキスト） */
.cal__holiday-name {
  font-size: 0.5625rem;
  line-height: 1.2;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
}
.cal__holiday-name--national {
  color: var(--color-status-ok);
}
.cal__holiday-name--company {
  color: #d48a29;
}
.cal__holiday-name--special {
  color: #7c5dac;
}
.theme-dark .cal__holiday-name--national {
  color: #6db49b;
}
.theme-dark .cal__holiday-name--company {
  color: #d4a057;
}
.theme-dark .cal__holiday-name--special {
  color: #a78bca;
}

/* 休暇ラベル（祝日名と同じくチップではなく小さなテキスト） */
.cal__leave-label {
  font-size: 0.5625rem;
  font-weight: 600;
  line-height: 1.2;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
}
.cal__leave-label--paid {
  color: var(--color-info);
}
.cal__leave-label--special {
  color: #7c5dac;
}
.cal__leave-label--unpaid {
  color: #95a5a6;
}
.theme-dark .cal__leave-label--paid {
  color: #5dade2;
}
.theme-dark .cal__leave-label--special {
  color: #a78bca;
}
.theme-dark .cal__leave-label--unpaid {
  color: #b0bec5;
}

/* ========================================
   日詳細ビュー（コア FAB の SidePanel 内、セルクリックで展開）
   ======================================== */
.cal-day-detail {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.cal-day-detail__back {
  align-self: flex-start;
  padding: 4px 10px;
  font-size: 0.8rem;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  background: transparent;
  color: var(--color-text);
  cursor: pointer;
}

.cal-day-detail__back:hover {
  background: var(--color-surface-alt);
}

.cal-day-detail__list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.cal-day-detail__item {
  padding: 0.5rem 0.75rem;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 4px;
  cursor: pointer;
  transition: background 0.15s;
}

.cal-day-detail__item:hover {
  background: var(--color-surface-alt);
}

.cal-day-detail__title {
  font-size: 0.9rem;
  color: var(--color-text);
  line-height: 1.4;
}

.cal-day-detail__note {
  font-size: 0.8rem;
  color: var(--color-muted);
  margin-top: 4px;
  white-space: pre-wrap;
}

/* task-manager のタスクチップ拡張: 期間予定（→マーク）と開始日のみ
   既存の task-manager-pcal-chip--period / --start を共通命名に移行 */
.cal__chip--task-period {
  background: rgba(255, 167, 38, 0.1);
  color: var(--color-text-secondary, var(--color-muted));
}
.cal__chip--task-start {
  background: rgba(66, 165, 245, 0.1);
}


/* ==== css/components/upload-progress.css ==== */
/* ========================================
   UploadProgress -- アップロード進捗UI
   ======================================== */

.upload-progress {
  position: fixed;
  right: 24px;
  bottom: 96px;
  width: 300px;
  padding: 12px 16px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  z-index: 1001;
  opacity: 1;
  transition: opacity 0.3s ease;
}

.upload-progress--hidden {
  opacity: 0;
  pointer-events: none;
}

/* ファイルリスト */
.upload-progress__list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 200px;
  overflow-y: auto;
}

/* ファイル1行 */
.upload-progress__item {
  display: flex;
  align-items: center;
  gap: 8px;
}

/* ファイル名 */
.upload-progress__name {
  font-size: 0.8rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  width: 140px;
  flex-shrink: 0;
}

.upload-progress__name--waiting {
  color: var(--color-muted);
}

.upload-progress__name--uploading {
  color: var(--color-text);
  font-weight: 500;
}

.upload-progress__name--done {
  color: var(--color-text-secondary);
}

.upload-progress__name--failed {
  color: var(--color-danger, #d07d7d);
}

/* ミニプログレスバー */
.upload-progress__minibar {
  flex: 1;
  height: 4px;
  background: var(--color-border);
  border-radius: 2px;
  overflow: hidden;
}

.upload-progress__minifill {
  height: 100%;
  border-radius: 2px;
  transition: width 0.3s ease;
}

/* 待機中: 空 */
.upload-progress__minifill--waiting {
  width: 0;
}

/* アップロード中: インデターミネートアニメーション */
.upload-progress__minifill--uploading {
  width: 40%;
  background: var(--color-accent-strong, #7986cb);
  animation: upload-indeterminate 1.2s ease-in-out infinite;
}

/* 完了: 100% */
.upload-progress__minifill--done {
  width: 100%;
  background: var(--color-accent-strong, #7986cb);
}

/* 失敗: 100%赤 */
.upload-progress__minifill--failed {
  width: 100%;
  background: var(--color-danger-fill, #d07d7d);
}

@keyframes upload-indeterminate {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(350%);
  }
}

/* 完了メッセージ */
.upload-progress__complete {
  font-size: 0.8rem;
  color: var(--color-text-secondary);
  margin-top: 8px;
  padding-top: 6px;
  border-top: 1px solid var(--color-border);
}

@media (max-width: 768px) {
  .upload-progress {
    right: 16px;
    bottom: 80px;
    width: 260px;
  }
}


/* ==== css/components/home.css ==== */
/* ========================================
   Home View -- チームのハブ
   ======================================== */

.home-view {
  padding: 32px 40px 64px;
  max-width: 800px;
  margin: 0 auto;
  background: var(--color-bg);
  min-height: 100%;
}

/* --- 挨拶エリア --- */
.home-greeting {
  margin-bottom: 28px;
}

.home-greeting__text {
  font-size: 1.4rem;
  font-weight: 600;
  color: var(--color-text);
  margin: 0 0 4px;
}

.home-greeting__date {
  font-size: 0.85rem;
  color: var(--color-muted);
  margin: 0;
}

/* --- 未読サマリーカード --- */
.home-summary-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin-bottom: 32px;
}

.home-summary-cards--two {
  grid-template-columns: repeat(2, 1fr);
}

.home-card {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--border-radius);
  cursor: pointer;
  transition:
    border-color 0.2s ease,
    box-shadow 0.2s ease;
  text-align: left;
  font-family: inherit;
  font-size: inherit;
  color: var(--color-text);
}

.home-card:hover {
  border-color: var(--color-accent-text);
  box-shadow: var(--shadow-soft);
}

.home-card__icon {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  color: var(--color-muted);
}

.home-card:hover .home-card__icon {
  color: var(--color-accent-text);
}

.home-card__body {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.home-card__label {
  font-size: 0.75rem;
  color: var(--color-muted);
}

.home-card__value {
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--color-text);
}

/* 値がある時のハイライト */
.home-card__value--active {
  color: var(--color-accent-strong);
}

/* --- セクション --- */
.home-section {
  margin-bottom: 28px;
}

.home-section__title {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin: 0 0 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--color-border);
}

/* --- アクティビティ --- */
.home-activity {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.home-activity__loading {
  color: var(--color-muted);
  font-size: 0.85rem;
}

.home-activity__empty {
  color: var(--color-muted);
  font-size: 0.85rem;
}

.home-activity__item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid var(--color-border);
  font-size: 0.85rem;
  color: var(--color-text);
}

.home-activity__item:last-child {
  border-bottom: none;
}

.home-activity__icon {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  color: var(--color-muted);
  margin-top: 1px;
}

.home-activity__text {
  flex: 1;
  line-height: 1.4;
}

.home-activity__text strong {
  font-weight: 600;
}

.home-activity__time {
  font-size: 0.75rem;
  color: var(--color-text-tertiary);
  white-space: nowrap;
  margin-top: 1px;
}

.home-activity__item--clickable {
  cursor: pointer;
  border-radius: var(--border-radius);
  padding: 10px 8px;
  margin: 0 -8px;
}

.home-activity__item--clickable:hover {
  background: var(--color-surface-alt);
}

.home-activity__chat {
  font-size: 0.75rem;
  color: var(--color-accent-text);
  margin-left: 4px;
}

.home-activity__chat::before {
  content: '/ ';
  color: var(--color-muted);
}

.home-activity__preview {
  display: block;
  font-size: 0.8rem;
  color: var(--color-muted);
  margin-top: 2px;
  line-height: 1.3;
}

/* --- よく使う場所 --- */
.home-quick-access {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.home-quick-access__item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 20px;
  font-size: 0.82rem;
  color: var(--color-text);
  cursor: pointer;
  transition:
    border-color 0.2s ease,
    background 0.2s ease;
  font-family: inherit;
}

.home-quick-access__item:hover {
  border-color: var(--color-accent-text);
  background: var(--color-target);
}

.home-quick-access__icon {
  width: 14px;
  height: 14px;
  color: var(--color-muted);
}

/* --- リリースノート --- */
.home-release-note {
  padding: 8px 0;
  border-bottom: 1px solid var(--color-border);
}

.home-release-note:last-child {
  border-bottom: none;
}

.home-release-note__date {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-accent-text);
  margin-bottom: 4px;
}

.home-release-note__list {
  margin: 0;
  padding-left: 18px;
}

.home-release-note__item {
  font-size: 0.82rem;
  color: var(--color-text);
  line-height: 1.6;
}

/* --- チャット横断検索 --- */
.home-search {
  margin-bottom: 24px;
}

.home-search__bar {
  display: flex;
  align-items: center;
  gap: 8px;
}

/* AIトグルボタン（既存chat-ai-search-toggleと同じデザイン） */
.home-search__ai-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  background: transparent;
  border: 2px dashed var(--color-border);
  border-radius: 50%;
  color: var(--color-text-secondary);
  font-size: 0.6875rem;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.3s ease;
  flex-shrink: 0;
}

.home-search__ai-toggle:hover {
  border-color: var(--color-accent-text);
  border-style: solid;
  transform: scale(1.05);
}

.home-search__ai-toggle[data-mode='ai'] {
  background: var(--color-accent-text);
  border: 2px solid var(--color-accent-text);
  color: white;
  box-shadow: 0 2px 8px rgba(var(--color-accent-rgb, 101, 116, 205), 0.4);
}

.home-search__ai-toggle[data-mode='ai']:hover {
  transform: scale(1.08);
  box-shadow: 0 3px 12px rgba(var(--color-accent-rgb, 101, 116, 205), 0.5);
}

.home-search__ai-label {
  font-weight: 700;
  letter-spacing: 0.5px;
}

.home-search__field {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--border-radius);
  transition: border-color 0.2s ease;
}

.home-search__field:focus-within {
  border-color: var(--color-accent-text);
}

.home-search__icon {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  color: var(--color-muted);
}

.home-search__input {
  flex: 1;
  border: none;
  background: none;
  color: var(--color-text);
  font-size: 0.9rem;
  font-family: inherit;
  outline: none;
}

.home-search__input::placeholder {
  color: var(--color-text-tertiary);
}

.home-search__results {
  margin-top: 12px;
}

.home-search__loading,
.home-search__empty {
  color: var(--color-muted);
  font-size: 0.85rem;
  padding: 8px 0;
}

.home-search__item {
  padding: 10px 8px;
  margin: 0 -8px;
  border-bottom: 1px solid var(--color-border);
  cursor: pointer;
  border-radius: var(--border-radius);
  transition: background 0.15s ease;
}

.home-search__item:hover {
  background: var(--color-surface-alt);
}

.home-search__item:last-child {
  border-bottom: none;
}

.home-search__item-header {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.85rem;
  flex-wrap: wrap;
}

.home-search__item-header strong {
  font-weight: 600;
}

.home-search__item-body {
  font-size: 0.8rem;
  color: var(--color-muted);
  margin-top: 3px;
  line-height: 1.3;
}

/* --- レスポンシブ --- */
@media (max-width: 640px) {
  .home-view {
    padding: 20px 16px 48px;
  }

  .home-summary-cards {
    grid-template-columns: 1fr;
  }

  .home-greeting__text {
    font-size: 1.15rem;
  }

  .home-search__field {
    min-width: 0;
    padding: 8px 10px;
    overflow: hidden;
  }

  .home-search__input {
    min-width: 0;
  }

  .home-search__item {
    margin: 0;
  }
}

/* .home-search__btn は 2026-08-12 に v2 の部品へ移行 (ホームの検索)。
   配線は data 属性 / id で持つ (共通部品は class を受け取らない)。 */


/* ==== css/components/members.css ==== */
/* ========================================
   Members View - Phase 2
   ======================================== */

.members-view {
  padding: 24px 8px 48px;
  width: 100%;
}

.members-header {
  margin-bottom: 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 16px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 10px;
}

.members-header__title {
  font-size: 1.1rem;
  font-weight: 600;
  color: var(--color-text);
}

.members-header__actions {
  display: flex;
  gap: 8px;
}

/* ヘッダー側の期間タブ（全カード共通） */
.members-header__period {
  display: inline-flex;
  gap: 4px;
  padding: 3px;
  background: var(--color-surface-alt, #eef0f3);
  border-radius: 8px;
}

.members-header__period-tab {
  background: transparent;
  border: none;
  color: var(--color-text-tertiary);
  font-size: 0.8rem;
  padding: 8px 16px;
  border-radius: 6px;
  cursor: pointer;
  min-height: 36px;
  min-width: 56px;
  transition:
    background 0.15s,
    color 0.15s;
}

.members-header__period-tab:hover {
  color: var(--color-text);
}

.members-header__period-tab--active {
  background: var(--color-surface);
  color: var(--color-text);
  font-weight: 600;
}

/* === 検索バー (input + メンバー種別 select、 ノート検索バーと同型) === */
.members-search {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 16px;
  padding: 0 4px;
}

.members-search__input {
  flex: 1;
  padding: 8.5px 16px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  color: var(--color-text);
  font-size: 0.875rem;
  font-family: inherit;
  box-sizing: border-box;
  transition: border-color 0.15s ease;
}

.members-search__input:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

.members-search__select {
  padding: 0 12px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  color: var(--color-text);
  font-size: 0.875rem;
  font-family: inherit;
  cursor: pointer;
  transition: border-color 0.15s ease;
  box-sizing: border-box;
  /* input の実測高さ (line-height 含む) に合わせる。 input は padding 8.5px ↑↓ で 約 42.5px */
  height: 42.5px;
}

.members-search__select:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

@media (max-width: 640px) {
  .members-search {
    flex-direction: column;
    align-items: stretch;
  }
}

/* 横スクロールレーン */
.members-grid {
  display: flex;
  flex-wrap: nowrap;
  gap: 16px;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 4px 4px 20px;
  scrollbar-width: thin;
  scroll-snap-type: x proximity;
  align-items: flex-start;
}

.members-grid::-webkit-scrollbar {
  height: 8px;
}

.members-grid::-webkit-scrollbar-thumb {
  background: var(--color-border);
  border-radius: 4px;
}

/* カード */
.members-card {
  flex: 0 0 390px;
  max-width: 390px;
  min-width: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 16px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 12px;
  cursor: pointer;
  transition:
    border-color 0.15s,
    box-shadow 0.15s;
  scroll-snap-align: start;
}

.members-card:hover {
  border-color: var(--color-accent-text);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

/* ヘッダー */
.members-card__header {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}

.members-card__avatar {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  overflow: hidden;
  flex-shrink: 0;
}

.members-card__avatar-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.members-card__avatar-fallback {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-surface-alt, #e9ecef);
  color: var(--color-text-secondary);
  font-size: 1.15rem;
  font-weight: 600;
}

.members-card__identity {
  min-width: 0;
  flex: 1;
}

.members-card__name {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--color-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.members-card__role {
  font-size: 0.72rem;
  color: var(--color-text-tertiary);
  margin-top: 2px;
}

.members-card__teams {
  font-size: 0.7rem;
  color: var(--color-text-tertiary);
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* セクション */
.members-card__section {
  display: flex;
  flex-direction: column;
  gap: 8px;
  border-top: 1px solid var(--color-border);
  padding-top: 12px;
}

.members-card__section-title {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-text-secondary);
}

/* チャートエリア（固定高さで揃える） */
.members-card__chart {
  min-height: 150px;
  display: flex;
  align-items: center;
}

/* チャート本体 */
.members-card__chart-body {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
  width: 100%;
}

.members-card__chart-svg {
  flex-shrink: 0;
}

.members-card__chart-total {
  font-size: 1.4rem;
  font-weight: 700;
  fill: var(--color-text);
}

.members-card__chart-empty {
  font-size: 0.75rem;
  color: var(--color-text-tertiary);
  text-align: center;
  width: 100%;
}

/* 凡例 */
.members-card__legend {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.members-card__legend-item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 0.72rem;
  color: var(--color-text-secondary);
  min-width: 0;
}

.members-card__legend-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}

.members-card__legend-label {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.members-card__legend-value {
  color: var(--color-text);
  font-variant-numeric: tabular-nums;
  font-size: 0.68rem;
  flex-shrink: 0;
}

.members-card__legend-more {
  font-size: 0.68rem;
  color: var(--color-text-tertiary);
  padding-left: 14px;
}

/* 時間割エリア（固定高さで揃える） */
.members-card__section:last-child {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.members-card__section:last-child > .members-card__schedule,
.members-card__section:last-child > .members-card__schedule-empty {
  min-height: 170px;
}

/* 時間割 */
.members-card__schedule {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.members-card__schedule-item {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 4px 0;
  font-size: 0.72rem;
}

.members-card__schedule-item--done {
  opacity: 0.55;
  text-decoration: line-through;
}

.members-card__schedule-time {
  color: var(--color-text-tertiary);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  flex-shrink: 0;
  min-width: 82px;
}

.members-card__schedule-body {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

.members-card__schedule-status {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}

.members-card__schedule-title {
  color: var(--color-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.members-card__schedule-project {
  color: var(--color-text-tertiary);
  font-size: 0.68rem;
  flex-shrink: 0;
  max-width: 40%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.members-card__schedule-empty {
  font-size: 0.72rem;
  color: var(--color-text-tertiary);
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}

.members-card__schedule-more {
  font-size: 0.68rem;
  color: var(--color-text-tertiary);
  padding-top: 2px;
}

.members-empty {
  color: var(--color-text-tertiary);
  font-size: 0.85rem;
  padding: 32px 0;
  text-align: center;
  width: 100%;
}

/* レスポンシブ */
@media (max-width: 640px) {
  .members-view {
    padding: 20px 8px 48px;
  }

  .members-card {
    flex: 0 0 calc(100vw - 40px);
    padding: 14px;
  }

  .members-card__avatar {
    width: 44px;
    height: 44px;
  }
}


/* ==== css/components/quick-memo.css ==== */
/* Quick Memo Panel
   FAB から開く個人メモ。 複数メモ + タブ切替 + タイトル + D&D 並び替え + 自動保存。
   ライト/ダーク両モード対応のため C-HUB 標準カラー変数 (--color-*) を使用。 */

.quick-memo-content {
  display: flex;
  flex-direction: column;
  height: 100%;
  padding: 12px;
  box-sizing: border-box;
  background: var(--color-bg);
}

/* 画像を持ち込んでいる間、ここが受け口であることを示す */
.quick-memo-content--dragover {
  outline: 2px dashed var(--color-accent-border);
  outline-offset: -4px;
  background: rgba(var(--color-accent-rgb), 0.05);
}

/* タブバー全体ラッパー（「＋」固定 + タブスクロール） */
.quick-memo-tabs-wrapper {
  display: flex;
  align-items: flex-end;
  flex-shrink: 0;
  gap: 4px;
}

/* スクロールするタブ領域 */
.quick-memo-tabs {
  display: flex;
  flex-wrap: nowrap;
  gap: 2px;
  overflow-x: auto;
  overflow-y: hidden;
  flex: 1;
  scrollbar-width: thin;
}

.quick-memo-tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 8px 6px 12px;
  border: 1px solid var(--color-border);
  border-bottom: none;
  border-radius: 6px 6px 0 0;
  background: var(--color-surface-alt);
  color: var(--color-muted);
  font-size: 0.75rem;
  line-height: 1.4;
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
  flex-shrink: 0;
  max-width: 200px;
  transition:
    background 0.12s ease,
    color 0.12s ease,
    border-color 0.12s ease;
}

.quick-memo-tab.is-active {
  background: var(--color-surface);
  color: var(--color-text);
  border-color: var(--color-accent);
  font-weight: 500;
}

.quick-memo-tab:hover:not(.is-active) {
  background: var(--color-surface);
  color: var(--color-text);
}

.quick-memo-tab.is-dragging {
  opacity: 0.5;
}

.quick-memo-tab.is-drag-over {
  border-left: 2px solid var(--color-accent);
}

.quick-memo-tab-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
  min-width: 0;
}

.quick-memo-tab-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  padding: 0;
  border: none;
  border-radius: 4px;
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
  opacity: 0;
  transition:
    opacity 0.12s ease,
    background 0.12s ease,
    color 0.12s ease;
}

.quick-memo-tab:hover .quick-memo-tab-close,
.quick-memo-tab.is-active .quick-memo-tab-close {
  opacity: 1;
}

.quick-memo-tab-close:hover {
  background: var(--color-surface-alt);
  color: var(--color-text);
}

.quick-memo-tab-add {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px dashed var(--color-border);
  border-radius: 6px;
  background: transparent;
  color: var(--color-muted);
  cursor: pointer;
  flex-shrink: 0;
  align-self: center;
  transition:
    background 0.12s ease,
    color 0.12s ease,
    border-color 0.12s ease;
}

.quick-memo-tab-add:hover {
  background: var(--color-surface);
  color: var(--color-text);
  border-color: var(--color-accent);
  border-style: solid;
}

/* タブ inline 編集 input (ダブルクリックで .quick-memo-tab-label を置換) */
.quick-memo-tab-edit {
  flex: 1;
  min-width: 0;
  padding: 0;
  border: none;
  background: transparent;
  color: var(--color-text);
  font: inherit;
  font-size: 0.75rem;
  outline: none;
}

.quick-memo-tab.is-editing {
  /* 編集中は active と同等の見た目に */
  background: var(--color-surface);
  color: var(--color-text);
  border-color: var(--color-accent);
  box-shadow: 0 0 0 2px rgba(var(--color-accent-rgb), 0.18);
}

/* 本文 textarea */
.quick-memo-textarea {
  flex: 1;
  width: 100%;
  /* SidePanel の縦いっぱいまで伸ばす意図を明示 (defensive: 将来グローバル textarea
     ルールが再導入された時に意図しない高さ制限を被らないための保険) */
  max-height: none;
  min-height: 0;
  padding: 12px;
  border: 1px solid var(--color-border);
  border-radius: 0 0 6px 6px;
  background: var(--color-surface);
  color: var(--color-text);
  font-family: inherit;
  font-size: 0.875rem;
  line-height: 1.7;
  resize: none;
  box-sizing: border-box;
  transition:
    border-color 0.15s ease,
    box-shadow 0.15s ease;
}

.quick-memo-textarea:focus {
  outline: none;
  border-color: var(--color-accent);
}

.quick-memo-textarea::placeholder {
  color: var(--color-muted);
  opacity: 0.7;
}

.quick-memo-textarea:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.quick-memo-status {
  flex-shrink: 0;
  font-size: 0.75rem;
  color: var(--color-muted);
  text-align: right;
  padding: 0 4px;
  user-select: none;
}

/* 添付画像のサムネイル帯 (textarea と status の間、 画像がある時だけ表示) */
.quick-memo-media {
  flex-shrink: 0;
  display: none;
  flex-wrap: wrap;
  gap: 8px;
}

.quick-memo-media.has-items {
  display: flex;
  padding: 8px 0 0;
}

.quick-memo-media-item {
  position: relative;
  width: 64px;
  height: 64px;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  overflow: hidden;
  background: var(--color-surface);
  cursor: pointer;
}

.quick-memo-media-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.quick-memo-media-item.is-hidden {
  display: none;
}

.quick-memo-media-remove {
  position: absolute;
  top: 2px;
  right: 2px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  padding: 0;
  border: none;
  border-radius: 4px;
  background: rgba(var(--color-bg-rgb), 0.8);
  color: var(--color-text);
  cursor: pointer;
  transition:
    background 0.12s ease,
    color 0.12s ease;
}

.quick-memo-media-remove:hover {
  background: var(--color-surface-alt);
}

/* アップロード中プレースホルダ (回転スピナー) */
.quick-memo-media-item.is-uploading {
  cursor: default;
  display: flex;
  align-items: center;
  justify-content: center;
}

.quick-memo-media-item.is-uploading::after {
  content: '';
  width: 20px;
  height: 20px;
  border: 2px solid var(--color-border);
  border-top-color: var(--color-accent);
  border-radius: 50%;
  animation: quick-memo-upload-spin 0.8s linear infinite;
}

@keyframes quick-memo-upload-spin {
  to {
    transform: rotate(360deg);
  }
}


/* ==== css/components/reminder-stack.css ==== */
/* リマインダー専用の積み重ね枠
 *
 * 通常トースト (#notification-popup、単一枠) とは別の固定枠に、複数のリマインダーを
 * 縦に積んで表示する。通常トーストや別のリマインダーに上書きされて消える問題
 * (単一枠由来) を解消する。各カードは × でのみ閉じ、本体クリックでタスクを開く。
 */

.reminder-stack {
  position: fixed;
  top: calc(90px + var(--app-update-bar-height, 0px));
  right: 20px;
  z-index: 10250;
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 340px;
  max-width: calc(100vw - 40px);
  pointer-events: none;
  transition: top 0.2s ease;
}

/* 通常トースト (#notification-popup, 同じ右上 top:90px) 表示中だけ 1 枚分下げて重なりを避ける。
 * トーストは 3 秒で消える一時表示なので、消えれば元の位置にスッと戻る。 */
.reminder-stack--toast-active {
  top: calc(162px + var(--app-update-bar-height, 0px));
}

/* ドラッグで移動した後。left / top は JS が実座標を動的に入れる (インラインスタイル例外: 動的値) */
.reminder-stack--moved {
  right: auto;
}

.reminder-stack--dragging {
  user-select: none;
  transition: none;
}

.reminder-stack--dragging .reminder-card {
  cursor: grabbing;
}

/* ドラッグ中は背面のテキストが選択されないようにする */
body.reminder-drag-active {
  user-select: none;
  cursor: grabbing;
}

/* 1 行タイプ。通常の通知に埋もれないよう枠はリマインダー識別色 (紫) で強調する */
.reminder-card {
  pointer-events: all;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 12px;
  background: var(--color-surface);
  border: 1px solid #8b5cf6;
  border-radius: 8px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.2);
  cursor: pointer;
  animation: reminder-card-in 0.25s ease;
}

@keyframes reminder-card-in {
  from {
    opacity: 0;
    transform: translateX(40px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

.reminder-card__icon {
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  /* リマインダー識別色 (通常トーストの variant-reminder と同じ穏やかな紫) */
  color: #8b5cf6;
}

.reminder-card__icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

/* ラベルと本文を 1 行に流す。長い本文は途中で切り、全文は title 属性で読める */
.reminder-card__text {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: baseline;
  gap: 6px;
}

.reminder-card__label {
  flex-shrink: 0;
  font-size: 0.7rem;
  font-weight: 600;
  color: #8b5cf6;
}

.reminder-card__msg {
  flex: 1;
  min-width: 0;
  color: var(--color-text);
  font-size: 0.8125rem;
  line-height: 1.4;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.reminder-card__close {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  border: none;
  background: transparent;
  color: var(--color-text-secondary);
  font-size: 1.2rem;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  transition: background 0.15s ease;
}

.reminder-card__close:hover {
  background: var(--color-surface-alt);
}

@media (max-width: 640px) {
  .reminder-stack {
    top: calc(70px + var(--app-update-bar-height, 0px));
    right: 10px;
    left: 10px;
    width: auto;
  }

  .reminder-stack--toast-active {
    top: calc(142px + var(--app-update-bar-height, 0px));
  }
}


/* ==== css/responsive.css ==== */
/* ========================================
   Responsive Design System
   ======================================== */

/* Mobile First Approach
 * Base styles: Defined in styles.css
 * Tablet: 769px - 1024px
 * Mobile: max-width 768px, 640px, 480px
 */

/* デスクトップではボタンアイコンを非表示（モバイルでアイコン化するため） */
.knowledge-btn-icon {
  display: none;
}

/* ========================================
   Tablet (max-width: 1024px)
   ======================================== */
@media (max-width: 1024px) {
  /* モバイルヘッダーを表示 */
  .mobile-header {
    display: block !important;
  }

  /* ハンバーガーメニューボタンを表示 */
  .mobile-header__menu-btn {
    display: flex !important;
  }

  /* デスクトップヘッダーを非表示 */
  .desktop-header {
    display: none !important;
  }

  /* モバイルではツールバー内チャットタイトルを非表示（モバイルヘッダーに表示） */
  .chat-toolbar-title {
    display: none;
  }

  /* モバイルヘッダー(60px)に合わせた高さ調整 */
  body.chat-active .main-content {
    padding: 8px 0 0;
    height: calc(100vh - 60px - var(--app-update-bar-height));
    height: calc(100dvh - 60px - var(--app-update-bar-height));
  }

  /* アプリコンテナをフル幅に */
  .app-container {
    margin-left: 0 !important;
    padding-top: 0;
  }

  /* サイドバーをモバイル風に（デフォルトで非表示） */
  .sidebar-main {
    position: fixed;
    top: calc(60px + var(--app-update-bar-height));
    left: 0;
    height: calc(100vh - 60px - var(--app-update-bar-height));
    height: calc(100dvh - 60px - var(--app-update-bar-height));
    width: 80px;
    z-index: 1001;
    transform: translateX(-100%);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  }

  .sidebar-sub {
    position: fixed;
    top: calc(60px + var(--app-update-bar-height));
    left: 0;
    height: calc(100vh - 60px - var(--app-update-bar-height));
    height: calc(100dvh - 60px - var(--app-update-bar-height));
    width: 240px;
    z-index: 1000;
    transform: translateX(-100%);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  }

  /* アクティブ時に表示 */
  .sidebar-main.mobile-open {
    transform: translateX(0);
    box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1);
  }

  .sidebar-sub.mobile-open {
    transform: translateX(80px);
    box-shadow: 2px 0 12px rgba(0, 0, 0, 0.15);
  }

  /* オーバーレイ */
  .sidebar-overlay {
    display: none;
    position: fixed;
    top: calc(60px + var(--app-update-bar-height));
    left: 0;
    width: 100%;
    height: calc(100vh - 60px - var(--app-update-bar-height));
    height: calc(100dvh - 60px - var(--app-update-bar-height));
    background: rgba(0, 0, 0, 0.5);
    z-index: 999;
  }

  .sidebar-overlay.active {
    display: block;
  }

  /* メインコンテンツ調整 */
  .main-content {
    margin-left: 0 !important;
  }

  /* fixedポジション要素のleft調整（サイドバー非表示時） */
  .knowledge-detail-view,
  .knowledge-create-view {
    left: 0;
  }

  /* ハンバーガーメニューアイコンスタイル */
  .hamburger-mobile {
    width: 20px;
    height: 16px;
    position: relative;
  }

  .hamburger-mobile span {
    display: block;
    position: absolute;
    height: 2px;
    width: 100%;
    background: var(--color-text);
    border-radius: 1px;
    opacity: 1;
    left: 0;
    transform: rotate(0deg);
    transition: 0.25s ease-in-out;
  }

  .hamburger-mobile span:nth-child(1) {
    top: 0px;
  }

  .hamburger-mobile span:nth-child(2) {
    top: 7px;
  }

  .hamburger-mobile span:nth-child(3) {
    top: 14px;
  }

  /* ハンバーガーメニューアニメーション（開閉用） */
  .hamburger-mobile.active span:nth-child(1) {
    top: 7px;
    transform: rotate(135deg);
  }

  .hamburger-mobile.active span:nth-child(2) {
    opacity: 0;
    left: -20px;
  }

  .hamburger-mobile.active span:nth-child(3) {
    top: 7px;
    transform: rotate(-135deg);
  }

  /* モバイル用ヘッダーウィジェットコンテナ */
  .mobile-header-widgets-container {
    display: flex;
    align-items: center;
    flex: 1;
    gap: 4px;
    margin: 0 2px;
  }

  .mobile-header-widgets-left,
  .mobile-header-widgets-center,
  .mobile-header-widgets-right {
    display: flex;
    align-items: center;
    gap: 6px;
  }

  .mobile-header-widgets-center {
    flex: 1;
    justify-content: center;
  }

  .mobile-header-widget {
    display: flex;
    align-items: center;
    font-size: 0.75rem;
  }
}

/* ========================================
   Compact Desktop (1025px - 1279px)
   サブメニューをオーバーレイ化して
   コンテンツ領域を広く確保する
   ======================================== */
@media (max-width: 1279px) and (min-width: 1025px) {
  /* サブメニューをオーバーレイ化 */
  .sidebar-sub {
    transform: translateX(-100%);
    transition:
      transform 0.25s cubic-bezier(0.4, 0, 0.2, 1),
      visibility 0.25s;
    box-shadow: none;
    z-index: 103;
    visibility: hidden;
    pointer-events: none;
  }

  .sidebar-sub.compact-open {
    transform: translateX(0);
    box-shadow: 4px 0 16px rgba(0, 0, 0, 0.1);
    visibility: visible;
    pointer-events: auto;
  }

  /* メインコンテンツのmargin-leftを縮小（メインサイドバー80pxのみ） */
  .app-container {
    margin-left: 80px;
  }

  /* サブメニューオーバーレイ背景 */
  .sidebar-overlay.compact-active {
    display: block;
    opacity: 1;
    visibility: visible;
  }

  /* fixedポジション要素のleft調整 */
  .knowledge-detail-view {
    left: 80px;
  }
}

/* ========================================
   Tablet Range Specific (769px - 1024px)
   ======================================== */
@media (max-width: 1024px) and (min-width: 769px) {
  /* タブレット範囲でハンバーガーメニューボタンを確実に表示 */
  .mobile-header {
    display: block !important;
  }

  .mobile-header__menu-btn {
    display: flex !important;
  }
  /* チャットアクティブ時の上部余白を削減 */
  body.chat-active .main-content {
    padding-top: 8px;
  }
}

@media (max-width: 768px) {
  /* ツールバー右側の要素順序を修正（モバイルのみ） */
  .toolbar__right {
    flex-direction: row-reverse;
  }

  /* メッセージバブル */
  .form-row {
    grid-template-columns: 1fr;
    gap: 16px;
  }

  /* 送信ボタン (B-致命-2: WCAG 2.5.5 タッチターゲット 44px) */
  .send-button {
    width: var(--touch-target-min) !important;
    height: var(--touch-target-min) !important;
    min-width: var(--touch-target-min);
    max-width: var(--touch-target-min);
    flex-shrink: 0;
  }

  .send-button svg {
    width: 16px;
    height: 16px;
  }

  /* モバイル全体調整 */
  /* モバイル時の全体的なフォントサイズ削減と余白調整 */
  html {
    font-size: calc(var(--base-font-size, 16px) - 2px);
  }
  body {
    /* 画面が狭いぶんデスクトップより詰める。 設定との連動は保つ (1.7 -> 1.5 相当) */
    line-height: var(--line-height-normal, 1.5);
  }

  /* 見出しサイズの削減 */
  h1 {
    font-size: 1.4rem;
  }
  h2 {
    font-size: 1.2rem;
  }
  h3 {
    font-size: 1rem;
  }
  h4 {
    font-size: 0.9rem;
  }

  /* 本文・段落の調整 */
  p {
    font-size: 0.85rem;
    line-height: 1.5;
    margin-bottom: 8px;
  }

  /* ヘッダー切り替え */
  .desktop-header {
    display: none;
  }

  .mobile-header {
    display: block;
  }

  /* アプリレイアウト調整 */
  .app-container {
    position: relative;
    padding-top: 0;
    margin-left: 0;
  }

  /* サイドバーモバイル化 */
  .sidebar-main {
    position: fixed;
    top: 60px;
    left: 0;
    height: calc(100vh - 60px);
    height: calc(100dvh - 60px);
    width: 80px;
    z-index: 1001;
    transform: translateX(-100%);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: none;
    display: flex;
    flex-direction: column;
  }

  .sidebar-sub {
    position: fixed;
    top: 60px;
    left: 0;
    height: calc(100vh - 60px);
    height: calc(100dvh - 60px);
    width: 240px;
    z-index: 1000;
    transform: translateX(-100%);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: none;
    display: flex;
    flex-direction: column;
  }

  .sidebar-main.mobile-open {
    transform: translateX(0) !important;
    box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1);
  }

  .sidebar-sub.mobile-open {
    transform: translateX(80px) !important;
    box-shadow: 2px 0 12px rgba(0, 0, 0, 0.15);
  }

  /* サイドバー内のハンバーガーメニューを非表示 */
  .sidebar__mobile-toggle {
    display: none;
  }

  /* メインコンテンツ調整 */
  .main-content {
    width: 100%;
    margin-left: 0;
    height: calc(100vh - 60px - var(--app-update-bar-height));
    height: calc(100dvh - 60px - var(--app-update-bar-height));
    overflow-y: auto;
    position: relative;
    padding-bottom: 24px;
  }

  /* チャットアクティブ時: body全体のスクロールを止めてグリッド内だけスクロールさせる */
  body.chat-active {
    overflow: hidden;
    height: 100vh;
    height: 100dvh;
  }

  /* チャットアクティブ時のみヘッダーを縮小してツールバーとの間隔を確保 */
  body.chat-active .mobile-header {
    height: 56px;
    margin-bottom: 4px;
  }

  body.chat-active .main-content {
    padding-top: 0;
    padding-bottom: 0;
    height: calc(100vh - 60px - var(--app-update-bar-height));
    height: calc(100dvh - 60px - var(--app-update-bar-height));
    overflow: hidden;
  }

  /* チャットメッセージエリアのモバイル高さ調整 */
  /* グリッドで自動調整されるためcalc不要 */
  body.chat-active #messages {
    max-height: none;
  }

  /* ナレッジビューのモバイル調整 */
  .knowledge-detail-view,
  .knowledge-create-view {
    top: 60px;
    left: 0;
    height: calc(100vh - 60px);
    height: calc(100dvh - 60px);
  }

  /* オーバーレイ */
  .sidebar-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    height: 100dvh;
    background: rgba(0, 0, 0, 0.5);
    z-index: 1000;
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s ease;
  }

  .sidebar-overlay.active {
    opacity: 1;
    visibility: visible;
  }

  /* メニューを開いたときに背景のスクロールをロック（JavaScriptで position: fixed を設定） */
  body.sidebar--mobile-open {
    overflow: hidden;
  }

  /* サイドバーの上部固定エリア調整 */
  .sidebar__header {
    justify-content: center;
  }

  .sidebar__header-content {
    text-align: center;
  }

  .sidebar__content {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
  }

  /* アクションボタンの最適化 */
  .sidebar__actions {
    gap: 8px;
    padding: 0 10px;
  }

  .sidebar__action-btn {
    padding: 8px 10px;
    font-size: 0.8rem;
  }

  .sidebar__action-btn--primary {
    background: linear-gradient(135deg, var(--color-accent-bg) 0%, var(--color-accent-strong) 100%);
  }

  /* サイドバーセクションの余白調整 */
  .sidebar__section {
    padding: 6px 8px;
  }

  .sidebar__section-title {
    font-size: 0.7rem;
    margin-bottom: 4px;
  }

  /* サイドバーヘッダーの余白調整 */
  .sidebar__header {
    padding: 8px;
  }

  /* チャット一覧の最適化 */
  .sidebar__section--scrollable {
    flex: 1;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    min-height: 28vh;
  }

  .sidebar__section--scrollable .sidebar__menu {
    overflow-y: auto;
    flex: 1;
    padding-right: 8px;
    margin-right: -8px;
  }

  .chat-item-container {
    margin-bottom: 3px;
  }

  .sidebar__menu-link {
    padding: 8px 10px;
    border-radius: 6px;
    font-size: 0.8rem;
  }

  /* 下部固定エリアの安全エリア対応 */
  .sidebar__section--fixed-bottom {
    padding: 10px;
    padding-bottom: max(12px, env(safe-area-inset-bottom));
  }

  /* テキストはみ出し防止 */
  .mobile-user-menu__username,
  .sidebar__title,
  .sidebar__subtitle,
  .message__from {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  /* 管理画面の表のはみ出し防止 */
  .admin-panel,
  .profile-panel,
  .dashboard-panel {
    padding: 6px;
    margin-bottom: 6px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* マイページ・ダッシュボード内の余白削減 */
  .profile-panel header,
  .dashboard-panel header {
    margin-bottom: 6px !important;
  }

  .profile-panel > div,
  .dashboard-panel > div {
    padding: 6px !important;
    margin-bottom: 6px !important;
  }

  .profile-panel form,
  .dashboard-panel form {
    gap: 6px !important;
  }

  .profile-panel form > div,
  .dashboard-panel form > div {
    gap: 6px !important;
  }

  .stat-card-grid {
    gap: 6px !important;
    margin-bottom: 10px !important;
  }

  .stat-card {
    padding: 6px !important;
  }

  /* 統計グリッドを2カラムに */
  .stats-grid {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 8px !important;
  }

  /* 統計カードの数字サイズ調整 */
  #today-messages,
  #user-chats,
  #active-users,
  #personal-messages {
    font-size: 1.3rem !important;
  }

  #total-users,
  #total-messages,
  #total-chats,
  #active-sessions,
  #editor-total-chats,
  #editor-today-messages,
  #pending-invitations,
  #system-uptime {
    font-size: 1.1rem !important;
  }

  #guest-remaining {
    font-size: 1rem !important;
  }

  /* メディアライブラリの3カラム構成 */
  #media-library-grid {
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 12px !important;
  }

  /* 新規チャットポップアップのボタンサイズ調整 */
  .confirm-button {
    padding: 8px 16px !important;
    font-size: 0.8rem !important;
  }

  .popup-body {
    gap: 10px !important;
  }

  #new-chat-form {
    gap: 10px !important;
  }

  /* プロフィール画像設定のレイアウト調整 */
  .profile-panel > div > div[style*='display: flex'],
  .profile-panel > div > div[style*='display: grid'] {
    gap: 8px !important;
  }

  /* フォーム内のlabel調整 */
  .profile-panel label,
  .dashboard-panel label {
    gap: 4px !important;
  }

  /* ダイアログのモバイル対応 */
  .confirm-dialog {
    padding: 12px;
  }

  .confirm-dialog-content {
    max-width: calc(100% - 24px);
  }

  /* フォーム要素のフォントサイズ調整（iPhoneのズームフォーカス防止のため16px） */
  input,
  textarea {
    font-size: 1rem !important;
  }

  /* readonly/disabled inputs don't need 16px (no iOS zoom trigger) */
  input[readonly],
  input[disabled],
  textarea[readonly],
  textarea[disabled] {
    font-size: 0.9rem !important;
  }

  label {
    font-size: 0.7rem !important;
  }

  /* 説明文のサイズ調整 */
  p,
  small {
    font-size: 0.85rem;
  }

  .page {
    padding: 0 6px;
  }

  /* メディアパネルとナレッジパネルの余白調整 */
  .media-panel,
  .knowledge-panel {
    padding: 6px !important;
  }

  /* メッセージ入力フォームの余白調整。
     チャット表示中は base.css の `body.chat-active #message-form`
     (padding: 12px 24px 24px) のほうが詳細度で勝ってこの指定が効かず、
     366px しかない幅から左右 48px を食っていた。詳細度を合わせて左右を 0 にする
     (2026-08-26 / カンバン task-1787714894178-jjdnh、
     設計 docs/design/2026-08-26_chat_mobile_overflow_design.md) */
  #message-form,
  body.chat-active #message-form {
    padding: 0 0 6px;
  }

  .message-form-row {
    gap: 6px;
  }

  /* 宛先ボタンのモバイル最適化 */
  .recipients-compact {
    min-width: 40px;
    max-width: 40px;
    height: 40px;
    min-height: 40px;
  }

  /* モバイルで宛先入力をアイコンボタン化 */
  .recipients-compact .recipients-input {
    border: 1px solid var(--color-border);
    padding: 0;
    justify-content: center;
    align-items: center;
    position: relative;
    overflow: visible;
  }

  .recipients-compact .recipients-chips {
    display: none;
  }

  /* 添付の公開範囲メニュー: 狭い画面ではみ出さない幅だけ調整 (配置は ui.css で共通) */
  .visibility-control__menu {
    max-width: calc(100vw - 24px);
  }

  .recipients-compact .recipients-input input {
    display: none;
  }

  .recipients-compact .recipients-suggestions {
    left: 0;
    width: 220px;
  }

  .recipients-compact .recipients-suggestions .suggestion {
    font-size: 0.8rem;
    padding: 8px 12px;
    position: relative;
  }

  /* 選択中の宛先をハイライト */
  .recipients-compact .recipients-suggestions .suggestion.selected {
    background: var(--color-accent-bg);
    color: var(--color-button-text);
    font-weight: 600;
  }

  .recipients-compact .recipients-suggestions .suggestion.selected::after {
    content: '[X]';
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
  }

  /* 宛先アイコンボタンのスタイル */
  .recipients-compact .recipients-input::before {
    content: '';
    display: block;
    width: 18px;
    height: 18px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%237f8c8d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2'%3E%3C/path%3E%3Ccircle cx='9' cy='7' r='4'%3E%3C/circle%3E%3Cpath d='M23 21v-2a4 4 0 0 0-3-3.87'%3E%3C/path%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'%3E%3C/path%3E%3C/svg%3E");
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    cursor: pointer;
  }

  /* モバイルの入力欄をコンパクトに (1 行分の高さに統一) */
  .message-input-wrapper {
    border-radius: 10px;
    padding: 0 4px;
    gap: 4px;
  }

  .message-input-wrapper textarea {
    /* テキスト 1 行分 + 上下 padding (line-height 1.35 で日本語クリッピング回避) */
    padding: 8px 0;
    min-height: calc(1.35em + 16px);
    line-height: 1.35;
  }

  .message-input-wrapper textarea::placeholder {
    font-size: 0.75rem;
    line-height: 1.35;
  }

  /* 添付ボタンのサイズ調整 (モバイルタッチターゲット) */
  .attach-media-button {
    padding: 5px;
  }

  .attach-media-button svg {
    width: 14px;
    height: 14px;
  }

  /* チャットエリアの余白削減 */
  #messages {
    padding: 12px;
  }

  .toolbar__filter {
    margin: 8px 0 8px;
  }

  /* メッセージ表示エリアの余白調整 */
  .message {
    padding: 8px 10px;
    font-size: 0.85rem;
    margin-bottom: 12px;
  }

  .message__body {
    font-size: 0.82rem !important;
    line-height: 1.4;
  }

  .message__bubble {
    max-width: 95% !important;
    padding: 8px 12px;
    /* 鬼教官 C-1（チャット吹き出しレビュー）対応:
       狭い viewport で min-width: 240px が viewport を超えるリスクあり。
       100% を上限として min-width に min() を適用する */
    min-width: min(240px, 100%);
  }

  /* 編集モード時の bubble 拡張は通常時より広げず、画面幅 95% を遵守 */
  .message--editing .message__bubble {
    max-width: 95% !important;
    min-width: min(280px, 100%);
  }

  .message__header {
    margin-bottom: 3px;
  }

  .message__from {
    font-size: 0.8rem;
  }

  .message__time {
    font-size: 0.7rem;
  }

  /* ログイン画面のモバイル最適化 */
  .login-container {
    padding: 16px;
    border-radius: 10px;
    max-width: 95%;
  }

  .login-header {
    margin-bottom: 14px;
  }

  .login-title {
    font-size: 1.25rem;
    margin-bottom: 4px;
  }

  .login-subtitle {
    font-size: 0.8rem;
  }

  .login-form {
    gap: 12px;
  }

  .login-field {
    gap: 4px;
  }

  /* メッセージカラー設定のモバイル最適化 */
  #message-color-settings > div > div > div > div[style*='grid-template-columns'] {
    grid-template-columns: 1fr 1fr 1fr !important;
    gap: 16px !important;
  }

  .login-label {
    font-size: 0.8rem;
  }

  .login-select,
  .login-input {
    padding: 10px 12px;
    min-height: 42px;
    font-size: 0.9rem;
  }

  #username-search {
    padding: 10px 12px;
    min-height: 42px;
    font-size: 0.9rem;
  }

  .login-button {
    padding: 10px 16px;
    font-size: 0.9rem;
    min-height: 42px;
  }

  /* ログインフォームの候補リスト */
  .username-suggestions {
    max-height: 180px !important;
    font-size: 0.85rem;
  }

  /* 管理画面のテーブル改善 */
  .admin-panel table,
  .profile-panel table,
  .dashboard-panel table {
    display: block;
    width: 100%;
    font-size: 0.75rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .admin-panel thead,
  .profile-panel thead,
  .dashboard-panel thead,
  .admin-panel tbody,
  .profile-panel tbody,
  .dashboard-panel tbody,
  .admin-panel tr,
  .profile-panel tr,
  .dashboard-panel tr {
    display: table;
    width: 100%;
    min-width: 600px;
    table-layout: auto;
  }

  .admin-panel th,
  .admin-panel td,
  .profile-panel th,
  .profile-panel td,
  .dashboard-panel th,
  .dashboard-panel td {
    padding: 6px 3px;
    font-size: 0.75rem;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  /* パネル内の全ボタンを一括で縮める指定 (0.7rem !important) はここにあったが、
     2026-08-09 に削除した。 「テーブル内」 のつもりがパネル内の全ボタン 143 個に効いて
     9.8px まで潰しており、 各ボタンが自分で持つ大きさを塗り潰していた。
     表はカード型変換済みで、 消しても横あふれ 0 を全タブ実測済み
     (詳細は docs/design/2026-08-08_button_component_design.md の Step 0)。 */

  /* ポップアップのモバイル対応 */
  .popup-header {
    padding: 10px;
  }

  .popup-body {
    padding: 10px;
    gap: 8px !important;
  }

  .popup-content,
  .popup-container {
    max-width: 95vw;
    max-height: 85vh;
    border-radius: 12px;
    padding: 10px;
  }

  /* グリッドを2カラムに */
  [style*='grid-template-columns'] {
    grid-template-columns: 1fr 1fr !important;
  }

  #profile-update-form [style*='grid-template-columns'] {
    grid-template-columns: 1fr !important;
  }

  /* 新規ユーザー追加フォームの最適化 */
  #add-user-form input,
  #add-user-form select {
    font-size: 0.9rem !important;
    padding: 10px 12px !important;
  }

  /* ナレッジ画面のモバイル最適化 */
  .knowledge-create-title-input,
  .knowledge-view-title {
    font-size: 1.2rem !important;
    line-height: 1.4 !important;
    word-break: break-word !important;
  }

  .knowledge-detail-header {
    padding: 10px 12px !important;
    flex-wrap: nowrap;
    gap: 8px !important;
  }

  /* モバイルでは「パネルで開く」と重複する「戻る」を非表示 */
  #knowledge-open-panel-btn,
  #knowledge-cancel-create-button {
    display: none !important;
  }

  .knowledge-create-header {
    padding: 10px 12px !important;
  }

  .knowledge-create-body,
  .knowledge-detail-body {
    padding: 12px !important;
    font-size: 0.85rem !important;
  }

  /* ナレッジアイテムのモバイル最適化 */
  .knowledge-item {
    padding: 12px !important;
    border-radius: 6px !important;
  }

  .knowledge-item-header {
    gap: 6px !important;
    margin-bottom: 6px !important;
  }

  .knowledge-item-icon {
    width: 0.875rem !important;
    height: 0.875rem !important;
  }

  .knowledge-item-title {
    font-size: 0.85rem !important;
  }

  .knowledge-item-preview {
    font-size: 0.8rem !important;
    line-height: 1.4 !important;
    margin-bottom: 6px !important;
  }

  .knowledge-item-tags {
    gap: 3px !important;
    margin-bottom: 6px !important;
  }

  .knowledge-item-meta {
    gap: 8px !important;
    font-size: 0.7rem !important;
  }

  .knowledge-detail-view-mode,
  .knowledge-create-edit-mode {
    max-width: 100%;
    padding: 0;
  }

  /* 戻るボタンの最適化 */
  .knowledge-detail-back-btn,
  .knowledge-create-back-btn {
    padding: 8px !important;
    font-size: 0 !important;
    gap: 0 !important;
  }

  .knowledge-detail-back-btn svg,
  .knowledge-create-back-btn svg {
    width: 18px !important;
    height: 18px !important;
  }

  .knowledge-detail-actions {
    display: flex;
    gap: 8px;
    flex-wrap: nowrap;
    align-items: center;
  }

  .knowledge-create-actions {
    display: flex;
    gap: 8px;
    flex-wrap: nowrap;
    align-items: center;
  }

  /* モバイルではラベル非表示、アイコン表示 */
  .knowledge-detail-edit-btn .knowledge-btn-label,
  .knowledge-detail-cancel-btn .knowledge-btn-label,
  .knowledge-detail-delete-btn .knowledge-btn-label {
    display: none;
  }

  .knowledge-detail-edit-btn .knowledge-btn-icon,
  .knowledge-detail-cancel-btn .knowledge-btn-icon,
  .knowledge-detail-delete-btn .knowledge-btn-icon {
    display: block;
    width: 18px;
    height: 18px;
  }

  .knowledge-detail-edit-btn,
  .knowledge-detail-cancel-btn,
  .knowledge-detail-delete-btn {
    padding: 8px !important;
    min-width: 36px !important;
    min-height: 36px !important;
    /* display は書かない。!important で書くと JS の「隠す」(style="display:none")
       より強くなり、モードに合わないボタンまで携帯幅で出てしまう。
       表示時の inline-flex は部品 (chub-btn) が持っている */
    align-items: center !important;
    justify-content: center !important;
  }

  /* 下書き保存を短縮 */
  .knowledge-detail-draft-btn {
    font-size: 0.75rem !important;
  }

  /* ナレッジエディターの調整 */
  .knowledge-create-editor {
    font-size: 0.9rem !important;
    min-height: 200px !important;
  }

  /* ナレッジタグ入力の調整 */
  .knowledge-tags-input {
    font-size: 0.9rem !important;
    padding: 10px 12px !important;
  }

  /* 通知ポップアップのモバイル対応 */
  .notification-popup {
    right: 10px;
    left: 10px;
    top: calc(70px + var(--app-update-bar-height));
  }

  .notification-content {
    min-width: auto;
    max-width: 100%;
    padding: 10px 12px;
  }

  .notification-message {
    font-size: 0.85rem;
  }

  /* 設定ビューのモバイル対応 */
  .settings-tabs {
    gap: 0 !important;
    margin-bottom: 12px !important;
  }

  .settings-tab {
    padding: 10px 6px !important;
    font-size: 0.75rem !important;
  }

  #settings-tab-content {
    padding: 0 !important;
  }

  /* ブランド設定のモバイル対応 */
  #settings-tab-content > div > div {
    max-width: 100% !important;
    gap: 20px !important;
  }

  #app-title-input {
    padding: 10px 12px !important;
    font-size: 0.9rem !important;
  }

  #app-logo-preview,
  #app-favicon-preview {
    min-height: 60px !important;
    padding: 12px !important;
  }

  #clear-logo-button,
  #clear-favicon-button {
    width: var(--touch-target-min) !important;
    height: var(--touch-target-min) !important;
    font-size: 0.85rem !important;
    top: 4px !important;
    right: 4px !important;
  }

  #reset-brand-settings {
    padding: 8px 12px !important;
    font-size: 0.8rem !important;
  }

  #apply-brand-settings {
    padding: 10px 24px !important;
    font-size: 0.85rem !important;
  }

  /* カラー設定のモバイル対応 */
  .theme-btn {
    padding: 12px !important;
    font-size: 0.8rem !important;
  }

  #message-color-settings {
    gap: 16px !important;
  }

  #message-color-settings > div {
    gap: 8px !important;
  }

  #message-color-settings h4 {
    font-size: 0.8rem !important;
    margin-bottom: 8px !important;
  }

  #message-color-settings label {
    font-size: 0.75rem !important;
    gap: 4px !important;
  }

  #message-color-settings input[type='color'] {
    width: 100% !important;
    height: 36px !important;
    padding: 2px !important;
  }

  /* ポップアップタイトル・ヘッダーのモバイル対応 */
  .popup-header h2,
  .popup-header h3,
  .popup-title {
    font-size: 1rem !important;
  }

  .popup-header {
    padding: 12px !important;
  }

  .popup-close {
    width: var(--touch-target-min) !important;
    height: var(--touch-target-min) !important;
    font-size: 1.25rem !important;
  }

  .popup-footer {
    padding: 12px 16px !important;
    gap: 8px !important;
  }

  /* メディアライブラリとテーブル */
  .media-library-item-info {
    padding: 6px;
  }

  .media-library-item-meta {
    font-size: 0.6rem;
  }

  /* メディアピッカーのモバイル最適化 */
  .media-picker-tabs {
    gap: 0;
    margin-bottom: 12px;
    display: flex !important;
  }

  .media-picker-tab {
    padding: 10px 6px !important;
    font-size: 0.75rem !important;
    flex: 1 !important;
  }

  .media-picker-filter {
    gap: 6px;
    margin-bottom: 8px;
  }

  .media-picker-search {
    flex: 1 1 0 !important;
    min-width: 0 !important;
    padding: 8px 10px !important;
    font-size: 0.85rem !important;
  }

  .media-picker-select {
    flex-shrink: 1 !important;
    padding: 6px 4px !important;
    font-size: 0.75rem !important;
    min-width: 0 !important;
  }

  .media-sort-btn {
    width: var(--touch-target-min) !important;
    height: var(--touch-target-min) !important;
    flex-shrink: 0 !important;
  }

  /* ピッカーモーダルのモバイル対応 */
  #media-picker-modal .popup-content {
    width: 95vw !important;
    max-width: 95vw !important;
    max-height: 90vh !important;
    overflow: hidden !important;
    box-sizing: border-box !important;
  }

  #media-picker-modal .popup-body {
    overflow: hidden;
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
  }

  #media-picker-modal .media-picker-grid {
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 4px !important;
    max-height: 45vh !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    padding: 4px !important;
  }

  #media-picker-modal .media-picker-item {
    padding: 3px !important;
    min-width: 0 !important;
    overflow: hidden !important;
  }

  #media-picker-modal .media-picker-item-preview {
    margin-bottom: 2px !important;
  }

  #media-picker-modal .media-picker-item-name {
    font-size: 0.6rem !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
  }

  #media-picker-modal .media-picker-filter {
    flex-wrap: wrap;
  }

  #media-picker-modal .media-picker-search {
    flex: 1 1 100% !important;
  }

  .media-sort-btn svg {
    width: 16px !important;
    height: 16px !important;
  }

  .knowledge-search-input {
    padding: 8px 10px !important;
    font-size: 0.85rem !important;
  }

  .media-picker-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 6px;
    min-height: 150px;
    max-height: 50vh;
  }

  .media-picker-item {
    padding: 4px;
  }

  .media-picker-item-preview {
    margin-bottom: 4px;
  }

  .media-picker-item-name {
    font-size: 0.65rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .media-picker-dropzone {
    padding: 40px 15px;
  }

  .media-picker-dropzone p {
    font-size: 0.85rem;
  }

  /* 管理画面テーブルのスマホ対応 */
  .admin-users-table-container,
  #admin-invitations-container {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    margin: 0 -12px;
    padding: 0 12px 12px 12px;
  }

  .admin-users-table {
    table-layout: fixed;
    width: 100%;
    font-size: 0.75rem;
    border-collapse: separate;
    border-spacing: 0;
  }

  .admin-users-table th,
  .admin-users-table td {
    padding: 6px 4px;
    overflow: hidden;
    text-overflow: ellipsis;
    border: 1px solid var(--color-border);
    border-right: none;
    border-bottom: none;
  }

  .admin-users-table th:last-child,
  .admin-users-table td:last-child {
    border-right: 1px solid var(--color-border);
  }

  .admin-users-table tbody tr:last-child td {
    border-bottom: 1px solid var(--color-border);
  }

  .admin-users-table th {
    padding: 8px 4px;
    font-size: 0.7rem;
  }

  /* ユーザー一覧の列幅指定 (6 列前提の nth-child 指定) は 2026-08-26 に削除した。
     表は 9 列になっていて、 「権限」 「メンバー種別」 を隠し 「外部協力者」 に 40% を
     割り当てるなど、 ui.css のカード型 (data-label) と食い違っていた。
     狭いときの見た目はカード型 (components/ui.css の @container) が一元的に持つ */

  /* 招待コードテーブルの列幅 */
  #admin-invitations-container .admin-users-table th:nth-child(1),
  #admin-invitations-container .admin-users-table td:nth-child(1) {
    width: 28%;
    white-space: nowrap;
    font-size: 0.7rem;
  }

  #admin-invitations-container .admin-users-table th:nth-child(2),
  #admin-invitations-container .admin-users-table td:nth-child(2) {
    width: 28%;
  }

  #admin-invitations-container .admin-users-table th:nth-child(3),
  #admin-invitations-container .admin-users-table td:nth-child(3) {
    display: none;
  }

  #admin-invitations-container .admin-users-table th:nth-child(4),
  #admin-invitations-container .admin-users-table td:nth-child(4) {
    display: none;
  }

  #admin-invitations-container .admin-users-table th:nth-child(5),
  #admin-invitations-container .admin-users-table td:nth-child(5) {
    display: none;
  }

  #admin-invitations-container .admin-users-table th:nth-child(6),
  #admin-invitations-container .admin-users-table td:nth-child(6) {
    display: none;
  }

  #admin-invitations-container .admin-users-table th:nth-child(7),
  #admin-invitations-container .admin-users-table td:nth-child(7) {
    width: 18%;
    font-size: 0.7rem;
  }

  #admin-invitations-container .admin-users-table th:nth-child(8),
  #admin-invitations-container .admin-users-table td:nth-child(8) {
    width: 26%;
    padding: 4px 2px;
  }

  /* 表のセルに並ぶ操作ボタンを、 狭い画面では均等幅に詰める。
     2026-08-11 まで .admin-action-button に直接書いていたが、 ボタンの見た目は
     部品 (button.css) の持ち物なので、 ここには**並べ方だけ**を残した。
     クラス名でなく「コンテナの直下」 で指すので、 中身が部品でも他の要素でも効く */
  /* design-token-exception: 既存コンテナの並べ方だけ。 ボタンの見た目クラスの新設ではない */
  .admin-button-container > *,
  /* design-token-exception: 同上 (セレクタが 2 行なので各行に理由が要る) */
  .admin-button-container--actions > * {
    min-width: 0;
    flex: 1;
    /* 指で押す的の高さを確保する。 旧 .admin-action-button はモバイルで縦 padding を
       7px に広げていて約 29px あった。 部品の小サイズは 25px なので、 移行で的が
       小さくならないようここで下限を決める (見た目でなく押しやすさの話なので親側の責務) */
    min-height: 32px;
  }

  .admin-users-table td select {
    padding: 3px 4px;
    font-size: 0.7rem;
    width: 100%;
  }

  .dashboard-panel {
    padding: 12px;
  }

  /* プラグインカード */
  .plugin-card__header {
    flex-direction: column;
  }

  .plugin-card__status {
    width: 100%;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
  }

  .plugin-card__meta {
    flex-direction: column;
    gap: 8px;
  }
}

/* デスクトップ用入力欄スタイルは ui.css に集約済み (旧重複定義を撤去) */

@media (max-width: 1024px) and (min-width: 769px) {
  .sidebar {
    width: 240px;
  }

  .sidebar__actions {
    gap: 6px;
  }

  .sidebar__action-btn {
    padding: 10px 14px;
    font-size: 0.85rem;
  }

  .page {
    padding: 0 20px;
  }
}

@media (max-width: 480px) {
  .sidebar {
    width: 260px;
  }

  .mobile-header__content {
    padding: 0 8px;
    gap: 8px;
  }

  .mobile-header__title {
    font-size: 0.9rem;
    flex: 0 0 auto;
  }

  .mobile-user-menu {
    right: 12px;
    min-width: 220px;
  }

  .sidebar__header {
    padding: 16px;
  }

  .sidebar__content {
    padding: 12px;
  }

  .sidebar__action-btn {
    padding: 8px 10px;
    font-size: 0.8rem;
  }

  .sidebar__action-icon {
    width: 16px;
    height: 16px;
  }

  .page {
    padding: 0 12px;
  }

  /* プラグインカード: 小型スマホ対応 */
  .plugin-card__actions {
    flex-direction: column;
    gap: 6px;
  }
}

@media (max-width: 640px) {
  main {
    min-height: calc(100vh - 220px);
    min-height: calc(100dvh - 220px);
    padding: 8px 0 24px;
    gap: 12px;
  }

  .message__time {
    width: 100%;
    text-align: left;
    margin-left: 0;
  }

  button[type='submit'] {
    width: 100%;
  }
}

/* ========================================
   Media Library Responsive
   ======================================== */

/* PC: 5カラム (デフォルト - minmax(140px, 1fr)で自動調整) */

/* タブレット: 4〜3カラム */
@media (max-width: 1024px) and (min-width: 769px) {
  #media-view .media-picker-grid {
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 14px;
  }
}

/* スマホ: 3カラム */
@media (max-width: 768px) {
  .media-library-item-name {
    font-size: 0.75rem;
  }

  .media-library-item-meta {
    font-size: 0.6rem;
  }

  .media-library-item-actions {
    gap: 4px;
  }

  .media-library-item-actions button {
    padding: 6px;
  }
}

/* スマホ: アクションボタンを2x2グリッドに */
@media (max-width: 768px) {
  .media-library-item-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px;
    margin-top: 6px;
  }

  .media-library-item-actions button {
    padding: 6px;
    min-height: 32px;
  }
}

/* 小さいスマホ: 2カラム + gap調整 */
@media (max-width: 480px) {
  #media-library-grid {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 8px !important;
  }

  .media-library-item-info {
    padding: 6px;
  }

  .media-library-item-name {
    font-size: 0.7rem;
  }

  .media-library-item-meta {
    font-size: 0.55rem;
  }
}

/* ========================================
   iOS自動ズーム抑制
   iOSではfont-size 16px未満のinputにフォーカスすると
   自動ズームされるため、モバイル時は最低16pxを保証
   ======================================== */
@media (max-width: 1024px) {
  input[type='text'],
  input[type='password'],
  input[type='email'],
  input[type='number'],
  input[type='search'],
  input[type='tel'],
  input[type='url'],
  input:not([type]),
  textarea,
  select,
  [contenteditable='true'] {
    font-size: max(1rem, 16px) !important;
  }
}


/* ==== css/ai-extensions.css ==== */
/* ============================================
   AI拡張機能 共通UI - Core Styles
   ============================================
   プラグインが使用できる標準的なAI機能UIコンポーネント
   - Loading dialogs
   - Result displays
   - Common animations
   ============================================ */

/* ===== AI Extension Dialog Overlay ===== */
.ai-extension-dialog {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 10200;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(4px);
}

.ai-extension-dialog.show {
  display: flex;
}

/* ===== AI Loading Dialog ===== */
.ai-dialog-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  padding: 40px 20px;
  color: var(--color-text-secondary);
  background: var(--color-surface);
  border: 1px solid var(--color-accent-text);
  border-radius: 12px;
  box-shadow: var(--shadow-soft);
}

.ai-dialog-loading p {
  margin: 0;
  color: var(--color-text);
  text-align: center;
}

.ai-dialog-loading p:last-child {
  color: var(--color-text-secondary);
  font-size: 0.875rem;
}

/* ===== AI Spinner Animation ===== */
.knowledge-ai-spinner {
  width: 40px;
  height: 40px;
  border: 3px solid var(--color-border);
  border-top-color: var(--color-accent-text);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

/* ===== AI Result Container ===== */
.knowledge-ai-result {
  background: var(--color-surface);
  border: 1px solid var(--color-accent-text);
  border-radius: 12px;
  box-shadow: var(--shadow-soft);
  overflow: hidden;
  margin: 20px 0;
  animation: fadeInScale 0.3s ease-out;
}

/* ダイアログ内で使用する場合のスタイル調整 */
.knowledge-ai-result--dialog {
  margin: 0;
  animation: none;
}

@keyframes fadeInScale {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

/* ===== AI Result Header ===== */
.knowledge-ai-result-header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 20px;
  background: linear-gradient(135deg, var(--color-accent-text) 0%, var(--color-accent-hover) 100%);
  color: var(--color-button-text);
  position: relative;
}

.knowledge-ai-icon {
  width: 24px;
  height: 24px;
  flex-shrink: 0;
}

.knowledge-ai-result-title {
  margin: 0;
  font-size: 1rem;
  font-weight: 600;
  flex: 1;
}

.knowledge-ai-result-close {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.2);
  border: none;
  border-radius: 50%;
  color: var(--color-button-text);
  font-size: 1.5rem;
  line-height: 1;
  cursor: pointer;
  transition: background 0.2s ease;
}

.knowledge-ai-result-close:hover {
  background: rgba(255, 255, 255, 0.3);
}

/* ===== AI Result Content ===== */
.knowledge-ai-result-content {
  padding: 20px;
}

.knowledge-ai-answer {
  color: var(--color-text);
  line-height: 1.6;
  white-space: pre-wrap;
  word-wrap: break-word;
}

/* AIで改善/ブログ下書きプレビューダイアログ: 変更前後の見出しラベル */
.knowledge-ai-preview-label {
  margin: 16px 0 6px;
  color: var(--color-text-secondary);
  font-size: 0.75rem;
  font-weight: 600;
}

.knowledge-ai-preview-label:first-child {
  margin-top: 0;
}

/* 変更前 (旧文) は控えめな表示にする */
.knowledge-ai-answer--muted {
  padding: 10px 12px;
  background: var(--color-surface-alt);
  border-radius: 8px;
  color: var(--color-text-secondary);
  max-height: 180px;
  overflow-y: auto;
}

/* ===== AI Result Action Buttons ===== */
.ai-result-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 20px;
  padding-top: 20px;
  border-top: 1px solid var(--color-border);
}

/* ===== AI Dialog Custom Input ===== */
.ai-custom-input {
  margin-top: 16px;
  display: none;
}

.ai-custom-input label {
  display: block;
  margin-bottom: 8px;
  font-weight: 500;
  color: var(--color-text);
}

.ai-custom-input .form-control {
  width: 100%;
  padding: 8px 12px;
  background: var(--color-surface-alt);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  color: var(--color-text);
  font-size: 0.875rem;
}

.ai-custom-input .form-control:focus {
  outline: none;
  border-color: var(--color-accent-text);
}

/* ===== AI Language Selection Buttons ===== */
.ai-language-buttons {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 8px;
  margin-bottom: 16px;
}

/* ===== Dialog Content Modifiers ===== */
.confirm-dialog-content--wide {
  max-width: 600px;
}

.confirm-dialog-content--medium {
  max-width: 500px;
}

.confirm-dialog-body--no-padding {
  padding: 0;
}

/* ===== Dialog Message Styling ===== */
.ai-dialog-message {
  margin-bottom: 16px;
}

/* ===== Extension Action Button (Fallback) ===== */
.btn-extension-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 4px 12px;
  background: var(--color-accent-text);
  border: 1px solid var(--color-accent-text);
  border-radius: 6px;
  color: var(--color-button-text);
  font-size: 0.75rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
}

.btn-extension-action:hover {
  background: var(--color-accent-hover);
  border-color: var(--color-accent-hover);
}

.btn-extension-action:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* .ai-language-btn / .ai-result-action-btn は 2026-08-12 に v2 の部品へ移行 (ai-chatbot の AI 結果の操作ボタン)。
   配線は data 属性 / id で持つ (共通部品は class を受け取らない)。 */


/* ==== css/components/app-update-bar.css ==== */
/**
 * アプリ更新通知バー
 *
 * 上部に固定表示する通知バー。サーバ側の BUILD_ID が初期値と異なるときだけ表示する。
 * C-HUB のアクセント色を流用、ライト/ダーク両対応。
 * 関連設計書: docs/design/2026-04-29_app_update_notification_design.md §5.1
 */

.app-update-bar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: var(--z-app-update-bar);
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 16px;
  min-height: 40px;
  padding: 4px 20px;
  background: var(--color-accent-strong);
  color: var(--color-button-text);
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  box-shadow: 0 3px 14px rgba(0, 0, 0, 0.32);
  transform: translateY(-100%);
  transition: transform 300ms ease-out;
}

.app-update-bar--visible {
  transform: translateY(0);
  animation: app-update-bar-drop 460ms ease-out both;
}

/* 登場時に軽く弾ませて視線を引く（動きを抑える設定では無効化） */
@keyframes app-update-bar-drop {
  0% {
    transform: translateY(-100%);
  }
  70% {
    transform: translateY(3px);
  }
  85% {
    transform: translateY(-2px);
  }
  100% {
    transform: translateY(0);
  }
}

.app-update-bar__message {
  flex: 0 1 auto;
  line-height: 1.4;
  opacity: 0.95;
}

.app-update-bar__message-mobile {
  display: none;
}

.app-update-bar__button {
  flex: 0 0 auto;
  min-width: 72px;
  min-height: 26px;
  padding: 3px 14px;
  background: #ffffff;
  color: var(--color-accent-strong);
  border: 1.5px solid var(--color-error);
  border-radius: 4px;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.28);
  transition:
    background-color 120ms ease,
    border-color 120ms ease,
    transform 80ms ease,
    box-shadow 120ms ease;
}

.app-update-bar__button:hover {
  background: #eef1fb;
  border-color: var(--color-error-hover);
  box-shadow: 0 2px 7px rgba(0, 0, 0, 0.34);
  transform: translateY(-1px);
}

.app-update-bar__button:active {
  background: #e0e5f7;
  border-color: var(--color-error-hover);
  transform: translateY(0);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25);
}

.app-update-bar__button:focus-visible {
  outline: 2px solid rgba(0, 0, 0, 0.6);
  outline-offset: 2px;
}

@media (max-width: 768px) {
  .app-update-bar__message-pc {
    display: none;
  }

  .app-update-bar__message-mobile {
    display: inline;
  }

  /* スマホは画面領域を圧迫しないよう 24px に圧縮 */
  .app-update-bar {
    padding: 1px 12px;
    gap: 8px;
    font-size: 0.6875rem;
    min-height: 24px;
  }

  .app-update-bar__button {
    min-width: 60px;
    min-height: 20px;
    padding: 0 10px;
    font-size: 0.6875rem;
    border-radius: 3px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .app-update-bar {
    transition: none;
  }

  .app-update-bar--visible {
    animation: none;
  }

  .app-update-bar__button {
    transition: none;
  }
}
