/* ---- Noto Sans JP（自ホスト。weight 400 / 700）----
   Google Fonts の unicode-range 分割をそのまま持ってきている。ブラウザは本文に
   出てくる文字を含むスライスだけを取りに行くので、全部で約10MBあっても実際の
   転送はページあたり数十〜数百KBで収まる。
   自ホストの理由：CSP の style-src が 'self' のため fonts.googleapis.com の
   スタイルシートを読めない（font-src は helmet 既定で https: まで許可されているが、
   入口の CSS が塞がっている）。外部依存を増やさない方針とも合う。
   900 はデザイン上アバターの頭文字1箇所だけなので 700 で代用する。500 は未使用。 */
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/static/fonts/notosansjp-400-000.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(/static/fonts/notosansjp-400-001.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(/static/fonts/notosansjp-400-002.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(/static/fonts/notosansjp-400-003.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(/static/fonts/notosansjp-400-004.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(/static/fonts/notosansjp-400-005.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(/static/fonts/notosansjp-400-006.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(/static/fonts/notosansjp-400-007.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(/static/fonts/notosansjp-400-008.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(/static/fonts/notosansjp-400-009.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(/static/fonts/notosansjp-400-010.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(/static/fonts/notosansjp-400-011.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(/static/fonts/notosansjp-400-012.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(/static/fonts/notosansjp-400-013.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(/static/fonts/notosansjp-400-014.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(/static/fonts/notosansjp-400-015.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(/static/fonts/notosansjp-400-016.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(/static/fonts/notosansjp-400-017.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(/static/fonts/notosansjp-400-018.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(/static/fonts/notosansjp-400-019.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(/static/fonts/notosansjp-400-020.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(/static/fonts/notosansjp-400-021.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(/static/fonts/notosansjp-400-022.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(/static/fonts/notosansjp-400-023.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(/static/fonts/notosansjp-400-024.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(/static/fonts/notosansjp-400-025.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(/static/fonts/notosansjp-400-026.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(/static/fonts/notosansjp-400-027.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(/static/fonts/notosansjp-400-028.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(/static/fonts/notosansjp-400-029.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(/static/fonts/notosansjp-400-030.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(/static/fonts/notosansjp-400-031.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(/static/fonts/notosansjp-400-032.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(/static/fonts/notosansjp-400-033.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(/static/fonts/notosansjp-400-034.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(/static/fonts/notosansjp-400-035.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(/static/fonts/notosansjp-400-036.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(/static/fonts/notosansjp-400-037.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(/static/fonts/notosansjp-400-038.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(/static/fonts/notosansjp-400-039.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(/static/fonts/notosansjp-400-040.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(/static/fonts/notosansjp-400-041.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(/static/fonts/notosansjp-400-042.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(/static/fonts/notosansjp-400-043.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(/static/fonts/notosansjp-400-044.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(/static/fonts/notosansjp-400-045.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(/static/fonts/notosansjp-400-046.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(/static/fonts/notosansjp-400-047.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(/static/fonts/notosansjp-400-048.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(/static/fonts/notosansjp-400-049.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(/static/fonts/notosansjp-400-050.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(/static/fonts/notosansjp-400-051.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(/static/fonts/notosansjp-400-052.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(/static/fonts/notosansjp-400-053.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(/static/fonts/notosansjp-400-054.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(/static/fonts/notosansjp-400-055.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(/static/fonts/notosansjp-400-056.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(/static/fonts/notosansjp-400-057.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(/static/fonts/notosansjp-400-058.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(/static/fonts/notosansjp-400-059.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(/static/fonts/notosansjp-400-060.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(/static/fonts/notosansjp-400-061.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(/static/fonts/notosansjp-400-062.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(/static/fonts/notosansjp-400-063.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(/static/fonts/notosansjp-400-064.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(/static/fonts/notosansjp-400-065.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(/static/fonts/notosansjp-400-066.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(/static/fonts/notosansjp-400-067.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(/static/fonts/notosansjp-400-068.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(/static/fonts/notosansjp-400-069.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(/static/fonts/notosansjp-400-070.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(/static/fonts/notosansjp-400-071.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(/static/fonts/notosansjp-400-072.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(/static/fonts/notosansjp-400-073.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(/static/fonts/notosansjp-400-074.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(/static/fonts/notosansjp-400-075.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(/static/fonts/notosansjp-400-076.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(/static/fonts/notosansjp-400-077.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(/static/fonts/notosansjp-400-078.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(/static/fonts/notosansjp-400-079.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(/static/fonts/notosansjp-400-080.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(/static/fonts/notosansjp-400-081.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(/static/fonts/notosansjp-400-082.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(/static/fonts/notosansjp-400-083.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(/static/fonts/notosansjp-400-084.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(/static/fonts/notosansjp-400-085.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(/static/fonts/notosansjp-400-086.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(/static/fonts/notosansjp-400-087.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(/static/fonts/notosansjp-400-088.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(/static/fonts/notosansjp-400-089.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(/static/fonts/notosansjp-400-090.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(/static/fonts/notosansjp-400-091.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(/static/fonts/notosansjp-400-092.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(/static/fonts/notosansjp-400-093.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(/static/fonts/notosansjp-400-094.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(/static/fonts/notosansjp-400-095.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(/static/fonts/notosansjp-400-096.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(/static/fonts/notosansjp-400-097.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(/static/fonts/notosansjp-400-098.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(/static/fonts/notosansjp-400-099.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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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(/static/fonts/notosansjp-400-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;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/static/fonts/notosansjp-400-120.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/static/fonts/notosansjp-400-121.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;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/static/fonts/notosansjp-400-122.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;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/static/fonts/notosansjp-400-123.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-000.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-001.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-002.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-003.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-004.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-005.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-006.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-007.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-008.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-009.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-010.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-011.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-012.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-013.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-014.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-015.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-016.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-017.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-018.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-019.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-020.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-021.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-022.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-023.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-024.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-025.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-026.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-027.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-028.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-029.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-030.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-031.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-032.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-033.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-034.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-035.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-036.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-037.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-038.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-039.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-040.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-041.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-042.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-043.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-044.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-045.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-046.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-047.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-048.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-049.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-050.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-051.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-052.woff2) format('woff2');
  unicode-range: U+32b5-332b, U+332d-3394;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-053.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-054.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-055.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-056.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-057.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-058.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-059.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-060.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-061.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-062.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-063.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-064.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-065.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-066.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-067.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-068.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-069.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-070.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-071.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-072.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-073.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-074.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-075.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-076.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-077.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-078.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-079.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-080.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-081.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-082.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-083.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-084.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-085.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-086.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-087.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-088.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-089.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-090.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-091.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-092.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-093.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-094.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-095.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-096.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-097.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-098.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-099.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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-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;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-120.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-121.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;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-122.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;
}
@font-face {
  font-family: 'Noto Sans JP';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/static/fonts/notosansjp-700-123.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;
}

/* ajcloud 基本スタイル。仕様書 9-2：ライトテーマ／LINE緑 #06C755／ボタン44px以上／破壊的操作は赤。
   画面の細部は後工程でスクリーンショットに合わせる。ここは土台の最小セット。 */

:root {
  --line-green: #06C755;
  --line-green-dark: #05a648;
  --danger: #d92d20;
  --danger-dark: #b42318;

  --bg: #f5f6f8;
  --surface: #ffffff;
  --border: #e3e6ea;
  --text: #1b1f24;
  --text-muted: #5c6672;

  /* 主ボタンの青（2026-09-08 祐之さんが色見本から選んだ #185FA5。旧 #2563eb）。
     白文字とのコントラスト 6.5:1（AA・通常文字も可）。--primary-dark はホバー＝約 12% 暗く（旧と同じ関係。旧 #1d4ed8）。
     参照しているのは .btn--primary（全アプリの主ボタン）と .member__table のリンク色の 2 か所だけ。
     チップの選択中・PL のタブ・フォーカスの輪郭は藍 #1F4E5F（別の変数・別の意味）なので変わらない */
  --primary: #185FA5;
  --primary-dark: #14508C;

  --radius: 10px;
  --tap: 44px; /* 最小タップ領域。PC表示でも維持（仕様書 9-1） */
  --maxw: 960px;
}

/* ============================================================
   デザイントークン（design_handoff_aj_app/design-system/tokens/*.css）
   ============================================================
   **この時点では誰も参照していない。** 追加しただけで見た目は1pxも変わらない。
   画面を1枚ずつ書き換えるたびに、その画面のクラスからここを参照していく。
   8画面が一巡したら上の旧ブロックを消し、--ds- の接頭辞も外す。

   命名の規則：
   - デザイン側の名前をそのまま使う（衝突しないため）
   - **既存と名前が衝突するファミリーだけ --ds- を付ける**（text と danger の2つ）。
     衝突しているのは --text-muted と --danger の2変数だが、片方だけ改名すると
     var(--danger) が旧値・var(--danger-tint) がデザイン値、という混在が起きるので
     ファミリーごと分ける。
   - **既存と値まで同じものは二重定義しない。** 下記は既存をそのまま使う：
       --line-green  #06C755      （デザインの --line-green と同値）
       --surface     #ffffff      （デザインの --surface-card と同値）
       --tap         44px         （デザインの --tap-min / --control-h と同値） */
:root {
  /* ---- ブランド（AJロゴ由来。ロゴ・必修・危険操作の強調に使う。主ボタンの色ではない）---- */
  --aj-red: #E12A12;
  --aj-red-hover: #C22208;
  --aj-red-tint: #FAF6F4;
  --aj-black: #000000;

  /* ---- 面・罫線 ---- */
  --page-bg: #FAFAF8;        /* 既存 --bg #f5f6f8 に対応（温かい白） */
  --surface-muted: #F5F4F1;  /* 入力欄背景・無効状態。既存は生値 #f0f2f5 */
  --border-default: #E8E6E1; /* 既存 --border #e3e6ea に対応 */
  --border-subtle: #F0EEE9;

  /* ---- 文字（既存 --text-muted と名前が衝突するためファミリーごと --ds-）---- */
  --ds-text-heading: #1A1A1A;
  --ds-text-body: #1A1A1A;
  --ds-text-muted: #6B6B6B;  /* 既存 --text-muted #5c6672 */
  --ds-text-inverse: #FFFFFF;

  /* ---- アクション（LINE緑）。主アクションは緑・1画面に1つだけ（README 設計ルール2）---- */
  --line-green-hover: #05B34C;
  --line-green-active: #049E43;
  --on-line-green: #FFFFFF;

  /* ---- 状態色（全アプリ共通・画面ごとに読み替えない）----
     採用は invites 画面の書き換え時。既存は「未使用＝緑」だがデザインは「完了＝緑」。 */
  --state-neutral: #1A1A1A;          /* 未使用 / 下書き / 未視聴 */
  --state-neutral-tint: #F0EEE9;
  --state-neutral-border: #DDD9D2;
  --state-neutral-dot: #9A948C;

  --state-revoked: #9A948C;           /* 取り消し済み */
  --state-revoked-border: #D6D2CB;

  --state-done: #0A7A3A;              /* 登録済み / 完了 / 公開中 / 視聴完了 */
  --state-done-tint: #E8F8EE;
  --state-done-border: #BFE9CF;
  --state-done-dot: #06C755;

  --state-alert: #B81C08;             /* 期限切れ */
  --state-alert-tint: #FDECE9;
  --state-alert-border: #F5C9C0;
  --state-alert-dot: #E12A12;

  --state-progress: #B7791F;          /* 視聴中 / トライアル / 名称変更 */
  --state-progress-tint: #FDF6E7;
  --state-progress-border: #EFDFB8;

  /* ---- 必修バッジ ---- */
  --required: #C22208;
  --required-tint: #FFF3F0;
  --required-border: #F5DED6;

  /* ---- 破壊的操作（既存 --danger と名前が衝突するためファミリーごと --ds-）---- */
  --ds-danger: #C22208;         /* 既存 --danger #d92d20 */
  --ds-danger-strong: #E12A12;  /* ダイアログの実行ボタン */
  --ds-danger-hover: #A81C05;   /* 既存 --danger-dark #b42318 */
  --ds-danger-tint: #FFF8F6;
  --ds-danger-border: #F5DED6;

  /* ---- 汎用ステータス ---- */
  --status-danger: #D93025;
  --status-warning: #B7791F;
  --status-success: #0A7A3A;

  /* ---- タイポグラフィ ---- */
  --font-sans: "Noto Sans JP", system-ui, -apple-system, "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;

  --fw-regular: 400;
  /* 500 は **使わない**。自ホストした woff2 が 400/700 の2種なので、500 を指定すると
     400 から合成するか 400 に落とすかがブラウザで割れ、実機ごとに見え方が変わる。
     デザインが 500 を指定している箇所（Invite の「任意」バッジなど）は 400 に寄せる。
     定義だけ残してあるのは、500 の woff2 を足したときにここを起点にできるようにするため。 */
  --fw-medium: 500;
  --fw-bold: 700;
  --fw-black: 900;   /* 同上。900 は 700 に落ちる */

  --fs-display: 29px;    /* 画面ヒーロー（モバイル） */
  --fs-display-lg: 36px; /* 画面ヒーロー（PC） */
  --fs-title: 20px;
  --fs-body-lg: 18px;    /* 主ボタンのラベル（モバイル） */
  --fs-body: 16px;
  --fs-label: 14px;
  --fs-caption: 12px;

  --lh-tight: 1.25;
  --lh-normal: 1.6;

  --ls-display: 0.06em;  /* 日本語は大きい字ほどトラッキングを足す */
  --ls-label: 0.04em;
  --ls-body: 0.01em;

  /* ---- 余白 ---- */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 44px;
  --space-8: 56px;
  --space-9: 64px;

  --gutter-mobile: 24px;  /* 既存 .container は左右 16px */
  /* --gutter-desktop は削除した。56px はデザインの下余白の読み違いで、
     左右余白ではなかった。PC の左右余白は .container に任せる（上の .home の注記を参照）。 */

  /* ---- コントロールの高さ（44px の下限は既存 --tap を使う）---- */
  --control-h-lg: 60px;  /* 主アクション（モバイル） */
  --control-h-xl: 64px;  /* 主アクション（PC） */

  /* ---- 角丸 ---- */
  --radius-sm: 8px;
  --radius-md: 14px;     /* ボタン。既存 --radius は 10px */
  --radius-lg: 20px;
  --radius-xl: 26px;     /* カード */
  --radius-device: 44px;
  --radius-pill: 999px;  /* 既存は生値 999px */

  /* ---- 影（既存CSSには box-shadow が1つも無い）---- */
  --shadow-card: 0 8px 24px rgba(26, 26, 26, 0.06);
  --shadow-float: 0 6px 18px rgba(26, 26, 26, 0.10);
  --shadow-device: 0 12px 32px rgba(26, 26, 26, 0.08);

  /* ---- 動き ---- */
  --ease-ui: 140ms ease;

  /* ---- 参考値（メディアクエリでは custom property を使えないため、記録用）----
     判定は (min-width: 1024px) and (any-pointer: fine)＝既存の指定と同じ。 */
  --bp-desktop: 1024px;
  --frame-mobile: 375px;
  --frame-desktop: 1280px;
}

* { box-sizing: border-box; }

/* hidden 属性は常に効かせる。UA の [hidden] { display: none } は作成者スタイルに
   負けるため、display を持つクラス（.field など）に付けると効かなくなる。
   JS からの表示制御は hidden 属性で統一しているので、ここで基底として固定する。 */
[hidden] { display: none !important; }

html, body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  /* デザインの指定どおり Noto Sans JP を先頭に置く（実体はファイル冒頭の @font-face で
     自ホストしている）。フォールバックは従来の並びをそのまま残してあるので、
     読み込めない環境ではこれまでと同じ見た目になる。 */
  font-family: "Noto Sans JP", system-ui, -apple-system, "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
  line-height: 1.6;
  font-size: 16px;
}

/* ---- レイアウト ---- */
.site-header { background: var(--surface); border-bottom: 1px solid var(--border); }
.site-header__inner {
  max-width: var(--maxw); margin: 0 auto; padding: 10px 16px;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
/* ロゴは画像（実寸 640×120）。表示幅はモバイル 140px、PC 190px、高さは auto。 */
.site-header__logo { display: inline-block; flex: none; }
.site-header__logo img { display: block; width: 140px; height: auto; }
/* **リンクのときだけ**タップ領域を確保する。640:120 の比率だと幅140pxで高さは約26px、
   PC の 190px でも約36px にしかならず、指で押す領域として小さい。
   min-height で --tap（44px）を下回らないようにし、画像は中央に置く。
   join-header 側はリンクではない span なので対象外（ヘッダーを無駄に高くしない）。 */
a.site-header__logo { display: inline-flex; align-items: center; min-height: var(--tap); }
/* 幅が足りないときは **氏名だけが引き受ける**。ロゴとログアウトは固定幅で、
   氏名が末尾を省略して縮む。375px では ロゴ140 + 氏名 + ログアウト約91 が並ぶので、
   何もしないと氏名が2行に折り返し、「ログアウト」まで「ログア／ウト」と割れる。
   min-width: 0 は **各段に要る**（flex の既定 min-width:auto が縮小を止めるため）。 */
.site-header__user { display: flex; align-items: center; gap: 12px; min-width: 0; }
.site-header__name {
  color: var(--text-muted); font-size: 14px;
  min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.site-header__logout { margin: 0; flex: none; }
/* **共有クラス .btn の定義は変えず、ヘッダーの中だけで折り返しを止める。** */
.site-header__logout .btn { white-space: nowrap; }

/* ===== アプリバー（デザイン統一 段階1・2026-09-05）=====
   アプリの中では白ヘッダー（.site-header）の代わりにこれを出す（置き方B）。
   旧レシピ台帳のトップバー（濃い地・min-height 48・padding 4px 14px・タブは同じ行・
   選択中＝白14%の面＋白の下線2px・非選択＝白75%）の写し。

   ■ **色は変数1つ**（--app-bar-bg）＝ajcloud の「選択中」と同じ藍 #1F4E5F（2026-09-05 確定）。
   ■ タブは .pl-pill / .pl-tab を使わない（PL の期間チップと定義を共有しているため。
     共有クラスの定義は変えない）。ここは app-bar__ の独自クラスだけ。
   ■ 当たり判定は 44px：バーは 48px なのでタブ・家は伸ばして満たす。
     氏名の右のログアウトは見た目 28px＋疑似要素で上下 8px＝44px。
   ■ 折り返しを許す（375px でタブが2行目に落ちてよい）。行間 10px（当たり判定の重なり規則） */
.app-bar {
  --app-bar-bg: #1F4E5F;
  background: var(--app-bar-bg); color: #fff;
}
.app-bar__inner {
  max-width: var(--maxw); margin: 0 auto; padding: 0 14px; min-height: 48px;
  display: flex; align-items: stretch; flex-wrap: wrap; gap: 0 12px; row-gap: 10px;
}
/* 家：一番左。**選択状態を持たない**（8/13 の決定）。アイコンは PL のホームと同じ線画 18px */
.app-bar__home {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: var(--tap); min-height: var(--tap); color: #fff; text-decoration: none;
  margin-left: -10px; /* 余白の内側に置き、アイコンが左端の文字と揃うように */
}
.app-bar__home:hover { background: rgba(255, 255, 255, .14); }
.app-bar__home-icon { width: 18px; height: 18px; display: block; }
/* 親へ戻る導線（2026-09-06。バー直下の独立した段 .page-back をやめ、家の右に移した＝
   スマホで縦が1段空く）。家と隣り合うので**見た目で区別**（矢印＋親の画面名）し、
   当たり判定は家と同じ 44px（min-width/min-height）。文字は白85%・13px */
/* 2026-09-06 見直し（実測：家と同じ 18px・線幅2 で、色だけ白85%。矢印は家より線が少なく
   「薄い・目立たない」）。**戻るにだけ面（白14%の丸い面。業態チップ・選択中タブと同じ値）を
   付け、線は白100%・20px**にする。家は線画のまま＝面の有無で見分ける。
   見た目は 36px の丸い面、当たり判定は ::after の上下4pxで 44px（バーの高さは変えない） */
.app-bar__back {
  position: relative; align-self: center;
  display: inline-flex; align-items: center; gap: 6px;
  min-width: 36px; min-height: 36px; padding: 0 12px 0 8px; border-radius: 999px;
  background: rgba(255, 255, 255, .14);
  color: #fff; font-size: 13px; text-decoration: none; white-space: nowrap;
}
.app-bar__back::after { content: ''; position: absolute; inset: -4px 0; }
.app-bar__back:hover { background: rgba(255, 255, 255, .24); }
.app-bar__back-icon { width: 20px; height: 20px; display: block; flex: none; }
/* アプリ名：旧は 15px/900・字間 .06em。900 は自ホストの woff2 に無いので 700（CLAUDE.md） */
.app-bar__app {
  display: inline-flex; align-items: center; min-height: var(--tap);
  font-size: 15px; font-weight: var(--fw-bold); letter-spacing: .06em; white-space: nowrap;
}
/* 業態チップ：旧の「白14%の面・角丸20・12.5px/700」。見た目 28px、当たり判定は疑似要素で 44px */
.app-bar__context {
  position: relative; align-self: center;
  display: inline-flex; align-items: center; gap: 6px; min-height: 28px; padding: 0 12px;
  border-radius: 999px; background: rgba(255, 255, 255, .14); color: #fff;
  font-size: 12px; font-weight: var(--fw-bold); text-decoration: none; white-space: nowrap;
}
.app-bar__context::after { content: ''; position: absolute; inset: -8px 0; }
a.app-bar__context:hover { background: rgba(255, 255, 255, .24); }
.app-bar__context-hint { font-size: 10.5px; font-weight: var(--fw-regular); color: rgba(255, 255, 255, .65); }
/* 非公開の印（2026-09-08）：業態チップと同じ 28px の面（白14%）に破線の枠。錠前の線画＋「非公開」。
   align-self: center なのでバーの高さ（48）は変わらない。狭い幅は文字を隠して錠前だけ（28px 幅）
   ——戻る矢印＋アプリ名＋氏名と並ぶ1行目を折り返させないため */
.app-bar__preview {
  align-self: center; display: inline-flex; align-items: center; gap: 4px;
  min-height: 28px; padding: 0 10px; border-radius: 999px;
  /* 色はホームのカードの印と同じ（要対応の赤 --state-alert ＋ 面 --ds-danger-tint）。藍地に赤の線は
     沈むので、明るい面に赤の文字で出す（2026-09-08。実効値は test/appBar.test.js とプレビューで確認） */
  background: var(--ds-danger-tint); border: 1px dashed var(--state-alert);
  color: var(--state-alert); font-size: 12px; font-weight: var(--fw-bold); white-space: nowrap;
}
.app-bar__preview-icon { width: 14px; height: 14px; display: block; flex: none; }
/* テストユーザー切替中の印（2026-09-08 ③）。「非公開」と同じ 28px の面（赤の面＋白文字で強く。テスト中は
   最優先で気づくべき状態）。押すと終了する form。当たり判定は ::after で 44px。狭い幅は目の線画だけ */
.app-bar__testing { margin: 0; align-self: center; display: inline-flex; }
.app-bar__testing-btn {
  position: relative; display: inline-flex; align-items: center; gap: 6px;
  min-height: 28px; padding: 0 10px; border-radius: 999px; border: 1px dashed #fff;
  background: var(--state-alert); color: #fff; font-size: 12px; font-weight: var(--fw-bold);
  white-space: nowrap; cursor: pointer; font-family: inherit;
}
.app-bar__testing-btn::after { content: ''; position: absolute; inset: -8px 0; }
.app-bar__testing-btn:hover { background: var(--ds-danger-hover); }
.app-bar__testing-btn:focus-visible { outline: 2px solid #fff; outline-offset: -2px; }
.app-bar__testing-icon { width: 14px; height: 14px; display: block; flex: none; }
/* タブ：バーと同じ高さ（stretch）。選択中＝白14%の面＋白の下線2px＋700、非選択＝白75%・400 */
.app-bar__tabs { display: flex; align-items: stretch; gap: 2px; flex-wrap: wrap; row-gap: 10px; }
.app-bar__tab {
  display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 14px;
  box-sizing: border-box; border-bottom: 2px solid transparent;
  color: rgba(255, 255, 255, .75); font-size: 13px; text-decoration: none; white-space: nowrap;
}
a.app-bar__tab:hover { color: #fff; background: rgba(255, 255, 255, .08); }
.app-bar__tab.is-current {
  color: #fff; font-weight: var(--fw-bold);
  background: rgba(255, 255, 255, .14); border-bottom-color: #fff;
}
a.app-bar__tab:focus-visible, .app-bar__home:focus-visible, .app-bar__back:focus-visible, a.app-bar__context:focus-visible,
.app-bar__logout-btn:focus-visible { outline: 2px solid #fff; outline-offset: -2px; }
/* 右端：氏名（白85%・12px）とログアウト（旧：12px/700・白30%の枠・角丸16・padding 3px 12px） */
.app-bar__user {
  margin-left: auto; display: flex; align-items: center; gap: 8px; min-width: 0;
  align-self: center;
}
.app-bar__name {
  font-size: 12px; color: rgba(255, 255, 255, .85);
  min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.app-bar__logout { margin: 0; flex: none; }
.app-bar__logout-btn {
  position: relative; display: inline-flex; align-items: center; min-height: 28px; padding: 0 12px;
  border: 1px solid rgba(255, 255, 255, .3); border-radius: 999px; background: none;
  color: rgba(255, 255, 255, .85); font-size: 12px; font-weight: var(--fw-bold);
  cursor: pointer; white-space: nowrap;
}
.app-bar__logout-btn::after { content: ''; position: absolute; inset: -8px 0; }
.app-bar__logout-btn:hover { background: rgba(255, 255, 255, .14); color: #fff; }
/* ---- ホーム（/）の一番上（2026-09-22 加藤さん決定・見本の D 案）----
   views/partials/home-header.ejs。**高さと色は .app-bar をそのまま使う**（子アプリのバーと同じ藍・48px。
   PC とスマホで高さを変えない）。ここはロゴの置き方だけ（.app-bar の定義は変えない）。
   ロゴは全部白の版（aj-logo-white.png・実寸 640×120）。表示幅はスマホ 140px（高さ 26px）／PC 170px（32px）。
   画面の解像度が 3 倍のスマホでも 420px 分＝実寸 640px の内側なので、ぼやけない。
   当たり判定は 44px（--tap）。右端の氏名とログアウトは .app-bar__user（子アプリのバーと同じ） */
.home-bar__logo {
  display: inline-flex; align-items: center; align-self: center;
  min-height: var(--tap); flex: none; text-decoration: none;
}
.home-bar__logo img { display: block; width: 140px; height: auto; }
.home-bar__logo:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
/* 狭い幅ではタブを**最後の行**に回す（order）。PL の4タブでタブ行が埋まると氏名/ログアウトが
   3行目に落ちて 136px になった（実測）。氏名を1行目の右に収め、2行で 98px に抑える。
   DOM の順（家・名・チップ・タブ・氏名）は変えないので、PC では1行のまま */
@media (max-width: 679px) {
  /* 1行目＝家・アプリ名・氏名/ログアウト、2行目＝タブ＋業態チップ。
     チップを1行目に残すと氏名が入らず2行目に落ち、タブが3行目になった（実測 136px） */
  .app-bar__tabs { order: 10; }
  .app-bar__context { order: 11; }
  .app-bar__user { margin-left: auto; }
  /* 戻る導線は矢印だけにする（文字は隠す。行き先は aria-label / title に残る）。
     375px で文字を出すと、いちばん短い「メンバー管理」でも1行目が 442px 必要になり、
     氏名/ログアウトが2行目に落ちてバーが 48→82px に伸びた（2026-09-06 実測）。
     44px 四方の当たり判定は min-width/min-height で保つ */
  .app-bar__back-label { display: none; }
  /* 矢印だけの丸い面 36px。当たり判定は ::after（上下 4px）と min-width 44 で 44×44 */
  .app-bar__back { padding: 0; justify-content: center; min-width: 36px; width: 36px; }
  .app-bar__back::after { inset: -4px -4px; }
  /* 矢印だけにしても、家44＋矢印44＋アプリ名95＋氏名/ログアウト145＋余白で 375px を 7px 超え、
     氏名が2行目に落ちてバーが 82px になった（実測）。要素の間隔を 12→8px に詰め、
     氏名の塊は flex-basis 0 で**必ず1行目に残し**、余った幅の中で氏名を省略（…）する */
  .app-bar__inner { column-gap: 8px; } /* row-gap 10px（当たり判定の重なり規則）は触らない */
  /* 非公開の印は錠前だけ（title / aria-label に文字は残る） */
  .app-bar__preview-label { display: none; }
  .app-bar__preview { padding: 0; width: 28px; justify-content: center; }
  /* テスト中の印も目の線画だけ（title / aria-label に文言。終了はホームのバナーからも） */
  .app-bar__testing-label { display: none; }
  .app-bar__testing-btn { padding: 0; width: 28px; justify-content: center; }
  .app-bar__testing-btn::after { inset: -8px -8px; }
  .app-bar__user { flex: 1 1 0; min-width: 0; justify-content: flex-end; }
}

.container { max-width: var(--maxw); margin: 0 auto; padding: 20px 16px 48px; }
.container--narrow { max-width: 480px; }

.page-title { font-size: 22px; margin: 8px 0 16px; }

/* 見出しの上に置いていた戻り導線（.page-back）は 2026-09-06 にアプリバーの中（.app-bar__back）へ
   移した。スマホで1段ぶん縦が空く。規則は CLAUDE.md「戻る導線」 */
.section-title { font-size: 16px; color: var(--text-muted); margin: 24px 0 12px; }

/* ---- 氏名の入力（partials/name-fields.ejs・2026-09-20 加藤さん承認）----
   チェックボックスで「姓と名の2つの箱」と「外国籍の方の5つの箱」を入れ替える。
   **JS は使わない**（:checked ~ の兄弟セレクタだけ）。チェックは箱より前に置くこと。
   スマホ（375）では5つの箱が1行に入らないので折り返す（当たり判定は 44px のまま）。 */
/* チェックの input と説明の label、2つの箱、5つの箱が**すべて兄弟**（`:checked ~` を使うため）。
   並べ方はグリッドが作る：1行目にチェックと説明、2行目以降は幅いっぱい */
.name-fields { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 8px; margin: 0 0 16px; }
.name-fields__check { width: 24px; height: 24px; margin: 0; }
/* 押せる範囲を 44px 取る（チェックそのものは 24px だが、この label を押しても切り替わる）。
   justify-self: start＝**文字の幅ぶんだけ**にして、四角のすぐ右に文字が並ぶようにする */
.name-fields__label { display: inline-flex; align-items: center; justify-self: start; min-height: var(--tap); font-size: 14px; }
.name-fields__jp, .name-fields__intl { grid-column: 1 / -1; }
.name-fields__jp { display: flex; flex-wrap: wrap; gap: 12px; }
.name-fields__box { flex: 1 1 140px; }
.name-fields__intl { display: none; }
/* 呼び名は「外国籍の方」のときだけ（Q-GH）。箱と同じ兄弟なので JS が無くても出し入れできる。
   **2026-09-21 の直し**：`.name-fields__nick` と `.field` はどちらもクラス1つ＝同じ強さで、
   app.css では `.field { display: block }` が後ろにあるため**負けて常に出ていた**（本番で発覚）。
   `.name-fields` を前に付けて強くする。あわせて**行いっぱいに広げる**——広げないと
   1列目（チェックの列）に入り、列が呼び名の幅まで広がって**チェックと文字が左右に離れて見えた**。 */
.name-fields__nick { grid-column: 1 / -1; }
.name-fields .name-fields__nick { display: none; }
.name-fields__check:checked ~ .name-fields__jp { display: none; }
.name-fields__check:checked ~ .name-fields__intl { display: block; }
.name-fields__check:checked ~ .name-fields__nick { display: block; }
/* 5つの箱は**同じ幅**で並べる（2026-09-21 加藤さん指示。以前は flex で、
   5つ目だけが下の段に広く出て「何の欄か分からない」状態になっていた）。
   min-width: 0＝グリッドの箱が中身の幅で押し広げられないようにする（これが無いと等幅にならない） */
.name-fields__row { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin-top: 6px; }
.name-fields__cell { min-width: 0; }
/* 狭い画面では5つ並べると「PHUONG」が見切れる（375px で箱の中が 36px しか残らない）ので、
   **3つずつ**に折り返す（どの箱も同じ幅のまま）。左右の余白も詰めて、例が確実に収まるようにする
   （12px のままだと中が 71px ＝「PHUONG」の 70px とほぼ同じで、端末の字体しだいで切れる） */
@media (max-width: 560px) {
  .name-fields__row { grid-template-columns: repeat(3, 1fr); }
  /* **クラス2つで書く**（`.field__control { padding: 10px 12px }` が後ろにあるので、1つだと負ける） */
  .name-fields__row .name-fields__cell { padding-left: 8px; padding-right: 8px; }
}
/* 例の文字は、入れた文字とはっきり見分けられるよう**薄く**する（join のコード欄と同じ色） */
.name-fields__cell::placeholder { color: var(--state-revoked); font-weight: var(--fw-regular); }
/* **どれか1つでも入れたら、5つとも例を消す**（:has が使えるブラウザだけ。
   使えないブラウザでは、今までどおり入れた箱の例だけが消える＝困らない） */
.name-fields__row:has(.name-fields__cell:not(:placeholder-shown)) .name-fields__cell::placeholder { color: transparent; }

/* ---- 残っている写真の一覧（/hr/documents・第9段・2026-09-21）---- */
.hr-docs-list__items { list-style: none; margin: 0; padding: 0; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.hr-docs-list__item { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; padding: 10px 12px; border-bottom: 1px solid var(--border-subtle); }
.hr-docs-list__item:last-child { border-bottom: 0; }
/* 手で消せる行（自動では消えない）を左端の線で分かるようにする。色だけに頼らず、状態の文も出す */
.hr-docs-list__item.is-manual { box-shadow: inset 3px 0 0 var(--state-alert); }
.hr-docs-list__main { flex: 1 1 260px; display: grid; gap: 2px; }
.hr-docs-list__name { font-weight: var(--fw-bold); overflow-wrap: anywhere; }
.hr-docs-list__meta { font-size: 13px; color: var(--ds-text-muted); overflow-wrap: anywhere; }
.hr-docs-list__state { font-size: 13px; color: var(--ds-text-muted); }
.hr-docs-list__state.is-manual { color: var(--state-alert); font-weight: var(--fw-bold); }

/* ---- お知らせ ---- */
.notice {
  background: #eef4ff; border: 1px solid #d6e4ff; color: #23408e;
  padding: 12px 14px; border-radius: var(--radius); font-size: 14px;
}
.notice--error { background: #fef3f2; border-color: #fecdc9; color: var(--danger-dark); }

/* ---- フォーム ---- */
.stack > * + * { margin-top: 16px; }
.field { display: block; }
.field__label { display: block; font-size: 14px; color: var(--text-muted); margin-bottom: 6px; }
.field__control {
  width: 100%; min-height: var(--tap); padding: 10px 12px;
  border: 1px solid var(--border); border-radius: var(--radius);
  background: var(--surface); color: var(--text); font-size: 16px;
}
.field__hint { margin: 6px 0 0; font-size: 13px; color: var(--text-muted); }
.checkbox { display: flex; align-items: center; gap: 8px; min-height: var(--tap); }

/* ---- ボタン（最小44px。縦積みは実行が上／横並びは実行が右：仕様書 9-2）---- */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: var(--tap); padding: 10px 18px;
  border: 1px solid transparent; border-radius: var(--radius);
  font-size: 15px; font-weight: 600; cursor: pointer; text-decoration: none;
  background: var(--surface); color: var(--text);
}
.btn--block { width: 100%; }
.btn--sm { min-height: 36px; padding: 6px 12px; font-size: 13px; }
.btn--primary { background: var(--primary); border-color: var(--primary); color: #fff; }
.btn--primary:hover { background: var(--primary-dark); }
.btn--line { background: var(--line-green); border-color: var(--line-green); color: #fff; }
.btn--line:hover { background: var(--line-green-dark); }
.btn--danger { background: var(--danger); border-color: var(--danger); color: #fff; }
.btn--danger:hover { background: var(--danger-dark); }
.btn--ghost { background: var(--surface); border-color: var(--border); color: var(--text); }
.btn--ghost:hover { background: #f0f2f5; }
/* ---- 黄土のボタン（2026-09-21 加藤さん指示）----
   **ボタンの色の決まり**（test/buttonStyles.test.js が固定する）：
     青（btn--primary）… ふだんの操作（保存する・送る など）
     白（btn--ghost）  … ほかの画面へ行くだけ・戻るだけ（「← ◯◯に戻る」「やめる」など）
     赤（btn--danger） … 元に戻せない操作。押した先で確認の窓を通す（か、その画面自体が確認の画面）
     **黄土（btn--ochre）… 申請の詳細で「その人に対して何かをしに行く」ボタン**
                         （招待コードの再発行・情報を修正して…・エントリーシートを差し替える・契約書を作る／作り直して送る）。
                         白だと枠が薄く、ただの文字に見えて押せると分からなかったため。
     **freeeサインの文書を1通使う操作は、必ず確認の窓を通す**（色によらない。2026-09-21 加藤さん指示）。
       窓に「freeeサインの文書を1通使います（今月 ◯／50）」。実行は窓の中の赤。窓を通らない POST では何も変えない。
       一覧は services/freeeSign/documentActions.js、固定は test/freeeSignContracts.test.js
       （採用管理と契約書の確かめの POST をすべて窓なしで送り、文書ができないことを見る）
   色は採用管理の開閉ボタン（.fold-toggle＝黄2）・一覧の「完了」「退職・取り消し」の帯と同じ黄土（--state-progress）の段。
   面は黄土 20%、枠は 55%（ボタンと分かるように開閉ボタンより枠を濃くした）、文字は黄土を本文の黒に寄せた茶。
   文字と面の差（コントラスト）はプレビューで実測して 4.5:1 以上（AA）。当たり判定は .btn の --tap（小さい btn--sm は各部品が疑似要素で 44px）。
   color-mix が使えないブラウザは、先に書いた状態の薄色で出る */
.btn--ochre {
  background: var(--state-progress-tint);
  background: color-mix(in srgb, var(--state-progress) 20%, var(--surface));
  border-color: var(--state-progress-border);
  border-color: color-mix(in srgb, var(--state-progress) 55%, var(--surface));
  color: var(--ds-text-body);
  color: color-mix(in srgb, var(--state-progress) 55%, var(--ds-text-body));
}
.btn--ochre:hover { background: color-mix(in srgb, var(--state-progress) 30%, var(--surface)); }
/* 赤い枠（2026-09-20 加藤さん指示）：取り返しがつかないが、**あとで取り戻せる**操作（切断・却下・差し戻し）。
   **--danger（塗り）は「消す」と「元に戻せない最後の実行」に取っておく**（消す・退職・改装）。
   色は既存の変数だけ（--ds-danger 系）。新しく足した修飾子なので、既存のボタンの見た目は変わらない。
   ■ ボタンの決まり（test/buttonStyles.test.js が固定）
     ふだんの操作＝btn--primary（青）／ほかの画面へ行くだけ＝btn--ghost（白）／
     元に戻せない＝btn--danger・btn--danger-outline ＋ 確認の窓（partials/confirm-dialog）。
     **.btn だけ（変化なし）は使わない**——白地に透明の枠で、ただの文字に見えるため */
.btn--danger-outline { background: var(--ds-danger-tint); border-color: var(--ds-danger); color: var(--ds-danger); }
.btn--danger-outline:hover { background: var(--ds-danger-border); }

/* ---- 折りたたみの開閉ボタン（details > summary.fold-toggle）。2026-09-20 加藤さん決定 案A・色は黄2 ----
   新人申請の「期間限定時給を設定する」と個人ページの「所属を追加する」で共有する。
   面＋枠・幅いっぱい。右端の矢印が閉じていると下向き、開くと上向き。
   色は黄土（--state-progress）を白と混ぜて固定した薄い段（面 18%・枠 36%）。状態の薄色（-tint）より一段濃く、
   「視聴中・トライアル」の色とは別に見える（薄い灰はスマホで見にくかった）。文字は黄土を本文の黒に寄せた茶、矢印は黄土。
   color-mix が使えないブラウザ（iOS 16.1 以前）は、先に書いた状態の薄色で出る（同じ画面に状態のバッジは出ない）。
   .btn / .btn--ghost は使わない（共有クラスの定義を変えずに見た目を変えるため）。色は変数だけ。
   当たり判定は --tap。details と summary の標準の動きなので JS が無くても開け閉めできる */
.fold-toggle {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  min-height: var(--tap); padding: 10px 14px; border-radius: var(--radius);
  background: var(--state-progress-tint);
  background: color-mix(in srgb, var(--state-progress) 18%, var(--surface));
  border: 1px solid var(--state-progress-border);
  border-color: color-mix(in srgb, var(--state-progress) 36%, var(--surface));
  color: var(--ds-text-body);
  color: color-mix(in srgb, var(--state-progress) 55%, var(--ds-text-body));
  font-size: var(--fs-label); font-weight: var(--fw-bold);
  list-style: none; cursor: pointer;
}
.fold-toggle::-webkit-details-marker { display: none; }
.fold-toggle:hover { background: color-mix(in srgb, var(--state-progress) 24%, var(--surface)); }
.fold-toggle::after {
  content: '›'; content: '›' / ''; /* 読み上げでは読ませない（開閉は summary 自身が伝える） */
  flex: none; color: var(--state-progress); font-size: 20px; line-height: 1; transform: rotate(90deg);
}
details[open] > .fold-toggle::after { transform: rotate(-90deg); }

/* ================================================================
   ホーム（デザイン design/AppHome.dc.html を移植）
   ================================================================
   ここはホーム専用のクラスだけを置く。共有クラス（.container / .section-title /
   .apps__empty / .btn 系 / .site-header）には触れていない。触ると未着手の画面に
   波及するため。ガターも .container を書き換えず .home 側で上書きする。
   ウェイトは 400 と 700 だけを使う（自ホストした woff2 が2種のため。
   デザインの 900＝アバターの頭文字は 700 に寄せた）。 */

/* 画面左右の余白（モバイル24px / PC56px）。.container の 16px を上書きする。 */
.home { padding-inline: var(--gutter-mobile); }

/* 登録完了のバナー（ホーム上部・1回だけ）。
   デザインの完了画面はアイコン88px・見出し30pxの全画面だが、ここはバナーなので縮める。
   下にプロフィールカードとアプリ一覧が続くので、そちらより大きくすると主従が逆転する。 */
.join-done {
  display: flex; align-items: flex-start; gap: var(--space-3);
  margin-bottom: var(--space-4); padding: var(--space-4) 18px;
  background: var(--surface); border: 1px solid var(--border-default); border-radius: var(--radius-lg);
}
.join-done__icon {
  flex: none; width: 48px; height: 48px; border-radius: 16px;
  display: flex; align-items: center; justify-content: center;
  /* **濃い緑**。LINE緑は LINE に関することだけに使う（状態バッジのコメント参照）。 */
  background: var(--state-done-tint); color: var(--state-done);
}
.join-done__body { min-width: 0; }
.join-done__title {
  margin: 0; font-size: 17px; font-weight: var(--fw-bold); color: var(--ds-text-heading);
}
.join-done__text {
  margin: 4px 0 0; font-size: 13px; color: var(--ds-text-muted);
  line-height: var(--lh-normal); text-wrap: pretty; word-break: auto-phrase;
}

/* ---- LINE公式アカウントの友だち追加（/line/friend。第L2段・2026-09-17）。この画面専用のクラスだけ ---- */
.line-friend__lead { margin: 0 0 12px; font-size: 14px; line-height: var(--lh-normal); }
.line-friend__steps { margin: 0 0 16px; padding-left: 1.4em; font-size: 14px; line-height: var(--lh-normal); }
.line-friend__steps li + li { margin-top: 6px; }
/* 押す順に縦に並べる（友だち追加 → 確認） */
.line-friend__actions { display: flex; flex-direction: column; gap: 10px; margin: 0 0 16px; }
.line-friend__note { margin: 0; font-size: 12px; color: var(--ds-text-muted); }

/* ---- プロフィール / 所属 ---- */
.profile {
  display: flex; align-items: flex-start; gap: var(--space-3);
  padding: var(--space-4) 18px;
  background: var(--surface); border: 1px solid var(--border-default); border-radius: var(--radius-lg);
}
/* 頭文字アバター。氏名が空なら中身が無い＝無地の丸になる。
   全角・半角のどちらでも中央に来るよう line-height を 1 にして flex で中央寄せする。
   ラテン文字（ベトナム語話者の氏名など）は大文字に寄せて字面を揃える。 */
.profile__avatar {
  flex: none; width: 48px; height: 48px;
  display: flex; align-items: center; justify-content: center;
  background: var(--aj-red-tint); border: 1px solid #F0E4E0; border-radius: 16px;
  color: var(--aj-red); font-size: 18px; font-weight: var(--fw-bold); line-height: 1;
  letter-spacing: 0; text-transform: uppercase;
  /* 2026-09-22：押すと「自分の画像を変える」（リンク）。見た目は今のまま（下線を付けない） */
  text-decoration: none; box-sizing: border-box;
  --avatar-radius: 16px; --avatar-gap: 1px;
}
.profile__avatar:focus-visible { outline: 2px solid #1F4E5F; outline-offset: 2px; }
/* 自分の画像（2026-09-22）。枠の内側に余白 1px だけ空け、枠ぎりぎりの大きさ（はじめ 3px→加藤さん指示で 1px）。
   **角の丸さは枠と同じ中心**＝枠の丸さ − 枠の線 1px − 余白 1px（スマホ 16−1−1＝14px・PC 20−1−1＝18px）。
   画像は 256×256 の JPEG（透明な所は枠と同じ色 --aj-red-tint #FAF6F4 で塗ってある＝枠と地続き） */
.profile__avatar.has-image { padding: var(--avatar-gap); }
.profile__avatar-img {
  display: block; width: 100%; height: 100%; object-fit: cover;
  border-radius: calc(var(--avatar-radius) - 1px - var(--avatar-gap));
}
/* ホームの名前のカードの四角（2026-09-22 加藤さん決定・見本の「2行より大きい」＋文字の位置 A）。
   **白いカードの高さ・幅・外の余白は変えず、四角だけを大きくする**：四角を並びから外してカードに重ねて置く
   （position: absolute）＝カードの高さは今どおり文字（名前・役職・担当店舗）だけで決まる。文字は四角のぶん右へ寄せる。
   - 大きさ：名前と役職の2行（名前 19px×1.3 ＋ 間 6px ＋ 役職の札 12px×1.4＋上下 2px＋線 1px×2）に、
     カードの上の余白の半分（8px）ずつを上下に足した 69.5px。置く位置は カードの内側から 上 8px・左 8px（文字は今の位置のまま＝A）
   - 枠の丸さ：カードの角（20px）と同じ中心＝ 20 − 端からの距離 9px（線 1＋8）＝ 11px。画像の角は 枠の丸さ − 線 1px − 余白 1px
   - 名前や札が折れてカードが高くなる人も、この大きさのまま（四角は上に寄り、下に空きができる）
   - 画像が無い人（名前の1文字目）も同じ大きさ
   - ホームのカードの直下の四角だけ（.profile > ）。/me/avatar の見え方の枠（.me-avatar__frame）は並びから外さない
   確かめ：375・320・1280 で、所属が無い人・長い名前・長い役職の札の人もカードの高さが今と同じ（test/homeAvatarSize.test.js と見本で測った） */
.profile {
  position: relative;
  --home-avatar-top: 8px; --home-avatar-left: 8px; --home-avatar-gap: 12px; --home-card-pad-left: 18px;
  --home-avatar-size: calc(19px * 1.3 + 6px + 12px * 1.4 + 6px + 16px);
}
.profile > .profile__avatar {
  position: absolute; top: var(--home-avatar-top); left: var(--home-avatar-left);
  width: var(--home-avatar-size); height: var(--home-avatar-size);
  border-radius: 11px; --avatar-radius: 11px; font-size: 26px;
}
.profile > .profile__avatar + .profile__body {
  margin-left: calc(var(--home-avatar-left) + var(--home-avatar-size) + var(--home-avatar-gap) - var(--home-card-pad-left));
}
/* ---- 自分の画像（/me/avatar・2026-09-22）。枠はホームと同じ .profile__avatar（スマホ 48px・パソコン 60px を並べて見せる） ---- */
.me-avatar__lead { margin: 0 0 16px; color: var(--ds-text-body); }
.me-avatar__now { display: flex; align-items: flex-end; gap: 20px; margin: 0 0 16px; }
.me-avatar__sample { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 6px; }
.me-avatar__sample figcaption { font-size: 12px; color: var(--ds-text-muted); }
/* 見え方の枠の大きさは、ホームの名前のカードの四角のスマホ（69.5px・丸さ 11px）とパソコン（88.2px・丸さ 10px）の値そのまま
   （画面の幅によらない。2026-09-22 に 48・60px から大きくした＝上の .profile > .profile__avatar と同じ式） */
.me-avatar__frame.me-avatar__frame--sm {
  width: calc(19px * 1.3 + 6px + 12px * 1.4 + 6px + 16px); height: calc(19px * 1.3 + 6px + 12px * 1.4 + 6px + 16px);
  border-radius: 11px; font-size: 26px; --avatar-radius: 11px;
}
.me-avatar__frame.me-avatar__frame--lg {
  width: calc(24px * 1.25 + 8px + 13px * 1.4 + 10px + 22px); height: calc(24px * 1.25 + 8px + 13px * 1.4 + 10px + 22px);
  border-radius: 10px; font-size: 30px; --avatar-radius: 10px;
}
.me-avatar__form { margin: 0 0 16px; }
.me-avatar__choose { position: relative; overflow: hidden; }
/* 画像の欄はボタンの下に重ねて隠す（押すとファイルを選ぶ画面が開く）。読み上げには「画像を選ぶ」の文字が名前になる */
.me-avatar__file { position: absolute; inset: 0; opacity: 0; cursor: pointer; font-size: 0; }
/* 「画像を選ぶ」と「画像を消す」を横に並べる（2026-09-22）。入らない幅では折り返す（320px でも2つは1行に入る） */
.me-avatar__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; }
.me-avatar__hint { margin: 8px 0 0; font-size: 12px; color: var(--ds-text-muted); }
.me-avatar__status { margin: 10px 0; font-size: 13px; color: var(--ds-text-body); min-height: 1.5em; }
.me-avatar__preview { padding: 12px; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.me-avatar__preview-title { margin: 0 0 10px; font-size: 13px; font-weight: var(--fw-bold); }
.me-avatar__pick.is-off, .me-avatar__preview.is-off, .me-avatar__nojs.is-off { display: none; }
/* メンバー管理の個人ページ：管理者が自分の画像を消す（段階④）。「今の画像」（ホームの四角と同じ大きさ）を消すボタンの上に */
.member-avatar__now { display: flex; align-items: center; gap: 10px; margin: 0 0 8px; font-size: 13px; color: var(--ds-text-muted); }
.member-avatar__actions { margin: 8px 0 0; }

/* ---- 名前の隣の画像（partials/avatar・2026-09-22 Q-PA〜Q-PD・Q-PN）。ホームの四角（.profile__avatar）と同じ見た目の
   別の部品（ホームの定義は変えない）。大きさは 32（一覧）・48（見出し）・60（管理者の消す区画）。丸さは 48:16 の比率。
   **画像の有無で大きさを変えない**（flex: none・幅と高さを固定）＝一覧の行の高さがそろう。
   画像は枠の内側に余白 1px・角は 枠の丸さ − 線 1px − 余白 1px ---- */
/* 大きさ（2026-09-22 加藤さん決定 Q-RE〜Q-RH で変えた）：
     sm＝一覧（メンバー管理・権限の個人ごとの例外）44px・丸さ 15px（今までの比率 大きさ÷3）
     md＝個人ページ・その人の画面の見出し／lg＝管理者の消す区画の「今の画像」
       → どちらも **ホームの名前のカードの四角と同じ大きさ・丸さ**（スマホ 69.5px・11px／パソコン 88.2px・10px） */
.avatar {
  --avatar-radius: 15px; --avatar-gap: 1px;
  flex: none; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: var(--avatar-radius); overflow: hidden;
  background: var(--aj-red-tint); border: 1px solid #F0E4E0;
  color: var(--aj-red); font-size: 17px; font-weight: var(--fw-bold); line-height: 1; letter-spacing: 0; text-transform: uppercase;
}
.avatar.has-image { padding: var(--avatar-gap); }
.avatar__img {
  display: block; width: 100%; height: 100%; object-fit: cover;
  border-radius: calc(var(--avatar-radius) - 1px - var(--avatar-gap));
}
.avatar--md, .avatar--lg {
  width: calc(19px * 1.3 + 6px + 12px * 1.4 + 6px + 16px); height: calc(19px * 1.3 + 6px + 12px * 1.4 + 6px + 16px);
  --avatar-radius: 11px; font-size: 26px;
}
@media (min-width: 1024px) and (any-pointer: fine) {
  .avatar--md, .avatar--lg {
    width: calc(24px * 1.25 + 8px + 13px * 1.4 + 10px + 22px); height: calc(24px * 1.25 + 8px + 13px * 1.4 + 10px + 22px);
    --avatar-radius: 10px; font-size: 30px;
  }
}
/* 一覧の行（メンバー管理・個人ごとの例外。共有の .admin-users__link は変えず、画像を出す行だけ横に並べる）。
   画像は1行目（名前）の高さにそろえて上寄せ（兼任で所属が何行あっても、画像は名前の横） */
.admin-users__link.has-avatar { flex-direction: row; align-items: flex-start; gap: 12px; }
.admin-users__body { display: flex; flex-direction: column; gap: 4px; min-width: 0; flex: 1; }
/* 個人ページ・その人の画面の見出し（.page-title の定義は変えず、並べる器の中でだけ余白を外す）。
   メンバー管理の個人ページは今の並べ方のまま（名前は四角の上下の真ん中＝Q-RE 案 1）。
   権限の個人ごとの例外のその人の画面は、名前と「役職：◯◯」を四角の右に2行で（.person-head__body＝Q-RF 案 2） */
.person-head { display: flex; align-items: center; gap: 16px; margin: 8px 0 16px; }
.person-head .page-title { margin: 0; min-width: 0; }
.person-head__body { min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.person-head__body .admin-user__meta { margin: 0; }
.profile__body { min-width: 0; }
.profile__name {
  margin: 0; font-size: 19px; font-weight: var(--fw-bold);
  color: var(--ds-text-heading); letter-spacing: 0.02em; line-height: 1.3;
  /* 2行になるときの折り返し位置を均等に振り分ける。375px で長い氏名を出すと
     「ヴー・ティ・フォン・タ ／ オ」と最後の1文字だけが2行目に落ちていた。
     **対応していないブラウザは宣言ごと無視するので、そこは今の折り返しのまま**
     （Chrome/Edge 114・Safari 17.5・Firefox 121 以降で効く）。
     1行に収まる短い氏名では何も起きない。 */
  text-wrap: balance;
}
.profile__nick { font-size: 14px; color: var(--ds-text-muted); font-weight: var(--fw-regular); }
.affiliations__empty { margin: var(--space-2) 0 0; color: var(--ds-text-muted); font-size: 13px; }

/* 業態＋役職チップの1行 */
.profile__meta {
  margin-top: 6px; display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2);
}
.profile__brand { font-size: 13px; color: var(--ds-text-muted); letter-spacing: var(--ls-body); }
.profile__role {
  padding: 2px 9px; border: 1px solid var(--border-default); border-radius: var(--radius-pill);
  background: var(--surface-muted);
  font-size: 12px; font-weight: var(--fw-bold); color: var(--ds-text-muted);
  letter-spacing: 0.02em; line-height: 1.4; white-space: nowrap;
}
/* トライアルは「進行中」の状態色（デザインの状態パレット） */
.profile__role.is-trial { color: var(--state-progress); }
/* 業態と、その業態の役職の札の組（2026-09-22 Q-RD）。業態が1つなら組の枠を持たない（今までどおり 業態・札… が1列に流れる）。
   業態が2つ以上なら組ごとにまとめ、組と組の間に「／」（「牛ざんまい［部長］／ホルモン［店長］」）。
   担当範囲の要約の1行・担当店舗の行・パソコンの右の店舗の札は 2026-09-22 にやめた（名前の下は業態と役職だけ＝Q-RA〜Q-RC） */
.profile__group { display: contents; }
.profile__meta.is-grouped .profile__group { display: inline-flex; align-items: center; flex-wrap: wrap; gap: var(--space-2); }
.profile__meta.is-grouped .profile__group + .profile__group::before {
  content: '／'; margin-right: 2px; font-size: 12px; color: var(--ds-text-muted);
}
/* 「アルバイト（書類完了前）」の人への一言（2026-09-22 N-12）。札の下に小さく */
.profile__note { margin: 6px 0 0; font-size: 12px; line-height: var(--lh-normal); color: var(--ds-text-muted); }

/* ---- アプリ ---- */
.apps__label {
  margin: var(--space-5) 0 var(--space-3);
  font-size: var(--fs-caption); font-weight: var(--fw-bold);
  color: var(--ds-text-muted); letter-spacing: 0.1em;
}

/* ---- ホームのアプリの一覧を画面に分けたとき（2026-09-22 ホームの5画面・views/home.ejs の home-pages）----
   見られる画面が2つ以上ある人だけ。**JS が無いときは画面を縦に並べ**、画面の名前を見出しにする。
   タブは見出しへのページ内のリンク（押せる範囲 44px）。**名前が5文字×5つで入らない幅では、タブの列だけ横に滑る**
   （ページは横に滑らない）。横に並べて1画面ずつ止める形・タブの印・高さは JS があるとき（③） */
.home-pages { position: relative; }
.home-pages__label {
  position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}
.home-pages__tabs {
  display: flex; gap: 2px; margin: var(--space-5) 0 var(--space-3);
  overflow-x: auto; scrollbar-width: none; border-bottom: 1px solid var(--border-default);
}
.home-pages__tabs::-webkit-scrollbar { display: none; }
.home-pages__tab {
  flex: none; display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 12px;
  border-bottom: 2px solid transparent; margin-bottom: -1px;
  font-size: 13px; font-weight: var(--fw-bold); letter-spacing: .04em; white-space: nowrap;
  color: var(--ds-text-muted); text-decoration: none;
}
.home-pages__tab:hover { color: var(--ds-text-heading); }
.home-pages__tab:focus-visible { outline: 2px solid #1F4E5F; outline-offset: -2px; }
.home-pages__page { position: relative; scroll-margin-top: 8px; }
.home-pages__page + .home-pages__page { margin-top: var(--space-5); }
/* 画面の名前の見出し（今の「アプリ」「要対応」の見出しと同じ見た目） */
.home-pages__title {
  margin: 0 0 var(--space-3); font-size: var(--fs-caption); font-weight: var(--fw-bold);
  color: var(--ds-text-muted); letter-spacing: 0.1em;
}
/* JS があるとき（public/js/home-pages.js が .is-js を付ける・③）：画面を横に並べ、JS が指の動きで1画面ずつ動かす
   （transform。ブラウザの横スクロール＝scroll-snap は半分くらい動かさないと移らなかったので使わない・2026-09-22）。
   高さはいまの画面に合わせる（JS が height を入れる）。見出しは読み上げ用に残して隠す。
   いまの画面のタブに印（藍の下線）。JS が無いと縦に並ぶので「いまの画面」の印は出さない */
.home-pages.is-js .home-pages__pages {
  display: flex; align-items: flex-start; overflow: hidden; overflow: clip;
}
.home-pages.is-js .home-pages__page {
  flex: 0 0 100%; min-width: 0; box-sizing: border-box;
  /* カードの枠と影が切れないよう、上下左右に少し余白（隣の画面との境目） */
  padding: 2px 1px 4px;
}
.home-pages.is-js .home-pages__page + .home-pages__page { margin-top: 0; }
.home-pages.is-js .home-pages__title {
  position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}
.home-pages.is-js .home-pages__tab.is-current { color: var(--ds-text-heading); border-bottom-color: #1F4E5F; }
@media (prefers-reduced-motion: no-preference) {
  .home-pages.is-js .home-pages__pages { transition: height .2s ease; }
  /* 指を離したあと・タブを押したあとに滑る（指で動かしている間＝.is-dragging は指に付いてくる） */
  .home-pages.is-js .home-pages__page { transition: transform .3s cubic-bezier(.22, .61, .36, 1); }
  /* タブの印は、行き先が決まった瞬間に移る（色と下線を短く切り替える） */
  .home-pages.is-js .home-pages__tab { transition: color .15s ease, border-bottom-color .15s ease; }
}
.home-pages.is-js.is-dragging .home-pages__page { transition: none; }

/* モバイルは1カラムの横並びリスト。PC は下のメディアクエリでグリッドに組み替える。 */
.card-grid { display: flex; flex-direction: column; gap: var(--space-3); }
.app-card {
  display: flex; align-items: center; gap: var(--space-3);
  min-height: 80px; padding: var(--space-4) 18px;
  background: var(--surface); border: 1px solid var(--border-default); border-radius: var(--radius-lg);
  text-decoration: none; color: var(--ds-text-body);
  transition: border-color var(--ease-ui), background var(--ease-ui);
}
.app-card:hover { border-color: #D9D6CF; background: #FFFEFD; }
.app-card__icon {
  flex: none; width: 52px; height: 52px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 16px; background: var(--surface-muted); color: var(--ds-text-heading);
}
.app-card__icon--brand { background: var(--aj-red-tint); color: var(--aj-red); }
.app-card__icon svg { width: 26px; height: 26px; }
.app-card__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--space-1); }
/* バッジは **タイトルと同じ行**に置く。カードの右端に置くと説明文の幅がその分だけ削られ、
   日本語が語の途中で折り返す（「新しいスタッフに登録 / 用のコードを発行する」）。
   PC表示ではカード右上に絶対配置するので、この行は実質タイトルだけになる。 */
.app-card__head { display: flex; align-items: center; gap: var(--space-2); min-width: 0; }
.app-card__name {
  font-size: 17px; font-weight: var(--fw-bold);
  color: var(--ds-text-heading); letter-spacing: 0.02em;
  /* **語の切れ目（<wbr>）でだけ折る**（2026-09-22）。partials/app-card-name が appCatalog の nameParts の間に
     <wbr> を入れる。keep-all で字の途中では折らない（320px で「招待コ／ード発／行」だった）。
     1つの語がカードより長いときだけ、はみ出さないよう字の途中で折る（overflow-wrap） */
  word-break: keep-all; overflow-wrap: anywhere;
}
.app-card__desc {
  font-size: 13px; color: var(--ds-text-muted); line-height: 1.5; text-wrap: pretty;
  /* 対応環境では文節単位で折り返す（未対応なら従来どおりの折り返しに落ちるだけ） */
  word-break: auto-phrase;
}
.app-card__badge {
  flex: none; display: inline-flex; align-items: center; height: 24px; padding: 0 10px;
  border: 1px solid var(--border-default); border-radius: var(--radius-pill);
  background: var(--surface-muted);
  font-size: 11px; font-weight: var(--fw-bold); color: var(--ds-text-muted); white-space: nowrap;
}
/* 非公開のアプリを権限で見ている人への印（2026-09-08。partials/app-card-preview）。
   **カードの角に絶対配置**——頭の行に2つ目のバッジとして並べると、PC では既存バッジが
   right:24px の絶対配置なので同じ座標に重なり、375px では名前が折れて「招待コード発行」の
   カードが 104→159px に伸びた（実測）。角に固定すれば流れに乗らず、高さは変わらない。
   色は状態パレットの「要対応」の赤 --state-alert（#B81C08。.badge--expired・要対応と同じ）＋
   面は --ds-danger-tint。破線＝「いまは効いていない・仮の状態」の作法。
   375px は錠前だけ（20px・右上 6/8）、PC は錠前＋「非公開」（24px・既存バッジの下）。基準は幅で変えない */
.app-card { position: relative; }
.app-card__preview {
  position: absolute; top: 6px; right: 8px;
  display: inline-flex; align-items: center; gap: 4px; height: 20px; padding: 0 6px;
  border: 1px dashed var(--state-alert); border-radius: var(--radius-pill);
  background: var(--ds-danger-tint); color: var(--state-alert);
  font-size: 11px; font-weight: var(--fw-bold); white-space: nowrap;
}
.app-card__preview-icon { width: 12px; height: 12px; display: block; flex: none; }
.app-card__preview-label { display: none; }
.apps__empty { color: var(--text-muted); }

/* ---- 要対応（ホーム上部。services/todoCatalog.js）----
   デザインに相当する画面は無いので、**状態パレットの「要対応」の赤**（.badge--expired と
   同じ3色）と既存のカードの作りだけで組む。新しい色は足していない。
   見出しは .apps__label を**そのまま借りる**（定義は変えない＝アプリ側に波及しない）。
   **1行に1件・件数だけ。** 名前を並べないので、人数が増えても高さが変わらない。 */
.todos__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.todo-card {
  display: flex; align-items: center; gap: var(--space-3);
  /* --tap（44px）を下回らない当たり判定。ここは見た目の高さがそのまま当たり判定 */
  min-height: 56px; padding: 12px 16px;
  background: var(--state-alert-tint); border: 1px solid var(--state-alert-border);
  border-radius: var(--radius-lg); text-decoration: none; color: var(--ds-text-heading);
  transition: border-color var(--ease-ui), background var(--ease-ui);
}
.todo-card:hover { border-color: var(--state-alert); background: #FCE3DE; }
.todo-card__icon { flex: none; display: flex; color: var(--state-alert); }
.todo-card__icon svg { width: 22px; height: 22px; }
.todo-card__label {
  flex: 1; min-width: 0; font-size: 14px; font-weight: var(--fw-bold); line-height: 1.5;
  text-wrap: pretty; word-break: auto-phrase;
}
.todo-card__go { flex: none; color: var(--state-alert); font-size: 20px; line-height: 1; }

/* ホームの PC 表示（判定は既存と同じ条件＝広い画面かつ精密ポインタ。
   タッチのみの端末は幅が広くてもモバイル表示のまま：デザインの前提と一致する）。 */
@media (min-width: 1024px) and (any-pointer: fine) {
  /* **ホームだけ左右余白を上書きしない。** .container の値をそのまま使う。
     以前は --gutter-desktop: 56px を当てていたが、この 56px はデザインの
     `padding: 36px 40px 56px` の **下余白**であって左右余白ではなかった（読み違い）。
     デザインの PC 本文の左右余白は AppHome / Invite / SystemSettings / Videos の
     4画面とも 40px で、ヘッダーの `padding: 18px 40px` と揃っている。
     上書きを外すと、ヘッダー・本文・フッターが --maxw と同じ左右余白を共有し、
     左端が縦一直線に揃う。デザインどおりの 40px にする作業は、
     --maxw を 1280px にするときに3箇所まとめて行う。 */

  .profile { align-items: center; gap: var(--space-5); padding: 22px 26px; border-radius: 22px; }
  .profile__avatar { width: 60px; height: 60px; border-radius: 20px; font-size: 22px; --avatar-radius: 20px; }
  /* ホームの名前のカードの四角（2026-09-22・上の注記）。パソコン：2行（名前 24px×1.25 ＋ 間 8px ＋ 札 13px×1.4＋上下 4px＋線 1px×2）
     に、カードの上の余白の半分（11px）ずつを上下に足した 88.2px。カードの内側から 上 11px・左 11px。
     枠の丸さ＝カードの角 22px − 端からの距離 12px ＝ 10px。文字との間 24px（今の .profile の gap） */
  .profile {
    --home-avatar-top: 11px; --home-avatar-left: 11px; --home-avatar-gap: 24px; --home-card-pad-left: 26px;
    --home-avatar-size: calc(24px * 1.25 + 8px + 13px * 1.4 + 10px + 22px);
  }
  .profile > .profile__avatar { border-radius: 10px; --avatar-radius: 10px; font-size: 30px; }
  .profile__name { font-size: 24px; letter-spacing: 0.03em; line-height: var(--lh-tight); }
  .profile__nick { font-size: 15px; }
  .profile__body { display: flex; flex-direction: column; gap: var(--space-2); }
  .profile__meta { margin-top: 0; gap: 10px; }
  .profile__brand { font-size: 15px; }
  .profile__role { padding: 4px 12px; font-size: 13px; color: var(--ds-text-heading); }

  /* **.profile は折り返さない。** 折り返しを許すと、札が伸びたときに本文ごと次の行へ落ちる。
     （担当範囲の括弧・右の店舗の札は 2026-09-22 にやめた＝札は役職名だけで短い） */
  .profile__meta.is-grouped .profile__group { gap: 10px; }

  .apps__label { margin: 28px 0 var(--space-4); font-size: 13px; letter-spacing: 0.12em; }

  /* 要対応は PC でも**1列のまま**（1行1件の帯で、アプリのカードと役割が違う） */
  .todo-card { min-height: 60px; padding: 14px 20px; border-radius: 18px; }
  .todo-card__label { font-size: 15px; }

  /* 3カラムのグリッド。カードは縦積みに組み替える。 */
  .card-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
  .app-card {
    position: relative; flex-direction: column; align-items: flex-start; justify-content: flex-start;
    gap: var(--space-4); min-height: 210px; padding: 28px; border-radius: 22px;
  }
  .app-card__icon { width: 60px; height: 60px; border-radius: 18px; }
  .app-card__icon svg { width: 30px; height: 30px; }
  .app-card__body { flex: none; gap: var(--space-2); }
  .app-card__name { font-size: var(--fs-title); letter-spacing: 0.03em; }
  .app-card__desc { font-size: var(--fs-label); line-height: var(--lh-normal); }
  .app-card__badge { position: absolute; top: 24px; right: 24px; height: 28px; padding: 0 12px; font-size: var(--fs-caption); }
  /* 非公開の印は既存バッジ（24〜52px）の下。アイコン（左・28〜88px）の帯の中なので何とも重ならない */
  .app-card__preview { top: 58px; right: 24px; height: 24px; padding: 0 10px; }
  .app-card__preview-label { display: inline; }
}

/* --- ログイン（デザイン design/Login.dc.html。LINE 側だけ）---
   ロゴと緑ボタンの2要素だけ。見出しも説明文も無い。
   **共有クラスは触っていない。** ボタンは .btn / .btn--line を使わず .login__button で
   完結させる（.btn--line は invites の「送る」モーダルでも使っており、
   高さ 60px の上書きが波及するため）。--tap の 44px も変えていない。 */
/* ロゴは **margin: auto で上下中央**に置く。以前は justify-content: center と
   .login__actions の margin-top: auto を併用しており、後者が自由空間を全部吸って
   ロゴが上端に張り付いていた（auto マージンは justify-content より先に効く）。
   高さは dvh を優先（モバイルのアドレスバーの伸縮で中央がずれないように）。 */
.login__card { display: flex; flex-direction: column; min-height: 70vh; min-height: 70dvh; }
.login__logo { width: 250px; max-width: 100%; height: auto; display: block; margin: auto; }
.login__actions {
  width: 100%; padding-top: 28px;
  border-top: 1px solid var(--border-subtle);
}
.login__button {
  display: flex; align-items: center; justify-content: center;
  width: 100%; height: 60px; border: 0; border-radius: 14px;
  background: var(--line-green); color: var(--on-line-green);
  font-size: var(--fs-body-lg); font-weight: var(--fw-bold); letter-spacing: 0.04em;
  text-decoration: none; cursor: pointer;
  transition: background var(--ease-ui);
}
.login__button:hover { background: var(--line-green-hover); }
.login__button:active { background: var(--line-green-active); }

/* --- join系（登録フロー：未所属の人が見る7画面）---
   既定はスマホレイアウト。PCは下の media query でだけ広げる（仕様書 9-1）。
   ボタンは .btn の min-height: var(--tap) をそのまま使う＝44px の基底を複製しない。 */
/* 見出しは join 系だけ大きくする（デザイン：26px・字間.05em）。
   **共有クラス .page-title の定義は変えず、.join の中でだけ上書きする。**
   partials/notice.ejs も .join を持つので、中止完了・宛先違いなども同じ見出しになる。 */
.join .page-title { font-size: 26px; letter-spacing: 0.05em; line-height: var(--lh-tight); }

.join__text { margin: 0 0 12px; }
.join__text:last-of-type { margin-bottom: 0; }
.join__actions { margin-top: 24px; }
.join__note { margin: 0 0 8px; font-size: 14px; color: var(--text-muted); }

/* 縦並びのボタン（実行が上・キャンセルが下：仕様書 9-2）。
   join系はクライアントJSゼロで動かすため、確認はページ遷移で行う。 */
.join__buttons { display: flex; flex-direction: column; gap: 12px; margin-top: 24px; }
/* 主アクションは 64px、副アクションは 56px（デザイン）。**--tap は変えず、
   .btn の定義にも触れず、.join__buttons の中だけで高さを上書きする。**
   form の中に入っているのが主アクション（POST で状態が変わる側）、
   直下のリンクが副アクション、という区別で当てている。
   中止画面のデザインは 60/52 だが、確認画面と揃えて 64/56 に寄せた
   （4px の差を残す意味が薄く、同じ形の画面で高さが変わるほうが不自然なため）。 */
.join__buttons > form > .btn { min-height: 64px; font-size: var(--fs-body-lg); }
.join__buttons > .btn { min-height: 56px; }

/* 氏名は画面内で最も大きく（9-3(4)）。確認画面の主役。
   デザインは 900 だが、自ホストの woff2 が 400/700 の2種なので 700 に落とす。 */
.join__name {
  font-size: 40px; font-weight: var(--fw-bold); margin: 0; line-height: 1.15;
  color: var(--ds-text-heading); letter-spacing: 0.01em;
  text-wrap: pretty; overflow-wrap: anywhere;
}
/* 長い氏名は段階的に小さくして1行に収める（クラスは services/labels.js が決める）。
   ベトナム語話者の氏名はカタカナで12〜16文字が普通で、40px のままだと必ず折り返す。 */
.join__name.is-long { font-size: 32px; }
.join__name.is-longer { font-size: 26px; }
.join__name.is-longest { font-size: 22px; }

.join__honorific { font-size: 22px; font-weight: var(--fw-bold); margin-left: 4px; }
.join__name.is-long .join__honorific { font-size: 19px; }
.join__name.is-longer .join__honorific { font-size: 17px; }
.join__name.is-longest .join__honorific { font-size: 15px; }
.join__nick { display: block; margin-top: 6px; font-size: 16px; color: var(--ds-text-muted); font-weight: var(--fw-regular); }

/* 所属・役割のチップ（join-confirm 専用）。
   **.join__meta とは分ける。** あちらは invite-undone で「処理結果の箇条書き（長文5行）」に
   使っており、属性を並べるチップとは用途が違う。同じ名前で兼ねると必ず食い違う。 */
.join__chips { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0 0; padding: 0; }
.join__chip {
  display: inline-flex; align-items: center; min-height: 36px; padding: 0 14px;
  border: 1px solid var(--border-default); border-radius: var(--radius-pill);
  background: var(--surface-muted);
  font-size: var(--fs-label); font-weight: var(--fw-bold); color: var(--ds-text-heading);
}

/* 処理結果の箇条書き（invite-undone / join-decline）。用途が違うのでチップにしない。 */
.join__meta { list-style: none; margin: 16px 0 0; padding: 0; font-size: var(--fs-label); color: var(--ds-text-muted); }
.join__meta > li + li { margin-top: 4px; }
.join__meta dt { display: inline; font-weight: var(--fw-bold); }
.join__meta dd { display: inline; margin: 0 0 0 8px; }

.join__card {
  background: var(--surface); border: 1px solid var(--border-default);
  border-radius: var(--radius-xl); padding: 24px 20px;
}

/* 数字8桁の入力。字間を空けて読み違いを防ぐ（デザイン：高さ68px・30px・中央寄せ）。
   等幅フォントではなく tabular-nums で桁を揃える（本文と同じ書体のまま数字幅だけ固定）。
   900 は 700 に落とす（自ホストの woff2 が 400/700 のため）。 */
.join__code-input {
  height: 68px; padding: 0 18px; border-radius: 14px;
  font-size: 30px; font-weight: var(--fw-bold); letter-spacing: .18em;
  text-align: center; font-variant-numeric: tabular-nums;
}
.join__code-input::placeholder { color: var(--state-revoked); font-weight: var(--fw-regular); }
/* エラーのときは枠で示す（状態パレット）。ロック中は面を沈めて「今は打てない」と分かる形に。 */
.join__code-input.is-error { border-color: var(--state-alert-border); }
.join__code-input:disabled { background: var(--surface-muted); color: var(--state-revoked); }
.join__attempts { font-size: 13px; color: var(--ds-text-muted); margin: 8px 0 0; }

/* ロック中はボタンも沈める。**disabled は元から付いていて押せない**が、
   .btn に :disabled のスタイルが無く、青いまま押せそうに見えていた。
   入力欄だけ沈んでボタンが有効に見えるのはちぐはぐ。
   **共有クラス .btn の定義は変えず、join の中だけで上書きする。** */
.join .btn:disabled {
  background: var(--surface-muted); border-color: var(--border-default);
  color: var(--state-revoked); cursor: not-allowed;
}

/* PC（仕様書 9-1：広い画面かつ精密ポインタのときだけ。タブレットはスマホ扱い）。
   タップ領域（--tap）はPCでも解除しない。 */
@media (min-width: 1024px) and (any-pointer: fine) {
  .join .page-title { font-size: 28px; }
  .join__name { font-size: 48px; }
  .join__name.is-long { font-size: 40px; }
  .join__name.is-longer { font-size: 32px; }
  .join__name.is-longest { font-size: 26px; }
  .join__honorific { font-size: 24px; }
  .join__name.is-long .join__honorific { font-size: 20px; }
  .join__name.is-longer .join__honorific { font-size: 18px; }
  .join__name.is-longest .join__honorific { font-size: 16px; }

  /* ログインの PC は中央寄せの白カード（デザインの2案のうち中央寄せを採用。
     左右分割は採らない：PC で入るのは一部で、400人はスマホから入るため）。 */
  .login__card {
    max-width: 496px; margin: 40px auto; min-height: 0;
    padding: 64px 56px; gap: 40px;
    background: var(--surface); border: 1px solid var(--border-default);
    border-radius: var(--radius-xl); box-shadow: var(--shadow-card);
  }
  .login__logo { width: 340px; }
  .login__actions { margin-top: 0; padding-top: 36px; border-top-color: var(--border-default); }
  .login__button { height: 64px; font-size: 19px; }
}

/* --- invites系（発行画面）---
   ボタン・フォームの基底は既存の .btn / .field を使う（44px を複製しない）。 */
.invite-form {
  background: var(--surface); border: 1px solid var(--border-default);
  border-radius: var(--radius-lg); padding: 18px;
}
.invite-form__fixed { margin: 0; font-size: 16px; font-weight: var(--fw-bold); color: var(--ds-text-heading); }

/* 入力欄・セレクトの高さはデザインに合わせて 52px。**共有クラス .field__control の
   定義は変えず、invites 配下でだけ上書きする**（join系・login に波及させない）。
   --tap の 44px も変えていない。役割チップはデザイン側も 44px なのでそのまま。 */
.invite-form .field__control { min-height: 52px; border-color: var(--border-default); border-radius: 12px; }
.invite-form .field__control::placeholder { color: var(--state-revoked); }

/* 項目名。共有の .field__label（14px）とは別に、デザインの 12px・字間広めを使う。 */
.invite-field__label {
  display: block; margin-bottom: 8px;
  font-size: var(--fs-caption); font-weight: var(--fw-bold);
  letter-spacing: 0.1em; color: var(--ds-text-muted);
}
.invite-required { margin-left: 4px; color: var(--aj-red); }
/* デザインは 500 だが 400 に寄せる（自ホストが 400/700 の2種のため。:root のコメント参照）。
   「必須」より弱く見えればよいので、太さを下げる方向は保たれる。 */
.invite-optional { margin-left: 6px; color: var(--state-revoked); font-weight: var(--fw-regular); }

/* ---- 役割チップ（radio ＋ label）----
   input は label に重ねて透明にしてある。display:none にするとキーボードで
   選べなくなるため使わない。見た目の切り替えは :checked の隣接セレクタで行う
   （:has() は古い WebKit で外れる可能性があるので使わない）。 */
.invite-roles { border: 0; margin: 0; padding: 0; min-width: 0; }
.invite-roles__group + .invite-roles__group { margin-top: var(--space-3); }
.invite-roles__group-label {
  margin: 0 0 var(--space-2); font-size: 11px; font-weight: var(--fw-bold);
  letter-spacing: 0.1em; color: var(--state-revoked);
}
.invite-roles__chips { display: flex; flex-wrap: wrap; gap: var(--space-2); }

.invite-chip { position: relative; display: inline-flex; }
/* label 全体に重ねる。チップ内に入力欄ぶんの余白ができず、タップ位置もずれない。 */
.invite-chip__input {
  position: absolute; inset: 0; width: 100%; height: 100%;
  margin: 0; opacity: 0; cursor: pointer;
}
.invite-chip__label {
  display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 18px;
  border: 1px solid var(--border-default); border-radius: var(--radius-pill);
  background: var(--surface); color: var(--ds-text-muted);
  font-size: var(--fs-label); font-weight: var(--fw-bold); letter-spacing: 0.02em;
  white-space: nowrap; cursor: pointer;
  transition: background var(--ease-ui), color var(--ease-ui), border-color var(--ease-ui);
}
.invite-chip__input:checked + .invite-chip__label {
  background: var(--ds-text-heading); border-color: var(--ds-text-heading); color: var(--ds-text-inverse);
}
/* PC で Tab 操作したときに、どのチップに居るか分かるようにする */
.invite-chip__input:focus-visible + .invite-chip__label {
  outline: 2px solid var(--aj-red); outline-offset: 2px;
}

/* ---- トライアル（チェックボックス）----
   チェック色はデザインの LINE緑ではなく黒。「LINE緑は LINE に関することだけ」の
   規則（状態バッジのコメント参照）に沿わせ、選択済みチップの黒とも揃える。 */
.invite-trial-field.is-off { display: none; }
.invite-trial {
  position: relative; display: flex; align-items: center; gap: var(--space-3);
  min-height: 52px; padding: 12px 14px;
  border: 1px solid var(--border-default); border-radius: 12px; background: var(--page-bg);
  cursor: pointer;
}
.invite-trial__input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.invite-trial__box {
  width: 24px; height: 24px; border-radius: 7px; flex: none;
  display: flex; align-items: center; justify-content: center;
  background: var(--surface); border: 1px solid var(--state-revoked-border);
  color: var(--ds-text-inverse);
  transition: background var(--ease-ui), border-color var(--ease-ui);
}
.invite-trial__box svg { opacity: 0; }
.invite-trial__input:checked + .invite-trial__box {
  background: var(--ds-text-heading); border-color: var(--ds-text-heading);
}
.invite-trial__input:checked + .invite-trial__box svg { opacity: 1; }
.invite-trial__input:focus-visible + .invite-trial__box { outline: 2px solid var(--aj-red); outline-offset: 2px; }
.invite-trial__text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.invite-trial__title { font-size: 15px; font-weight: var(--fw-bold); color: var(--ds-text-heading); }
.invite-trial__note {
  font-size: var(--fs-caption); color: var(--ds-text-muted);
  line-height: 1.5; text-wrap: pretty; word-break: auto-phrase;
}

.count { margin-left: 8px; font-size: 13px; color: var(--text-muted); }

.invite-list { list-style: none; margin: 0; padding: 0; }
.invite-row {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius);
  padding: 14px 16px; margin-bottom: 10px;
}
.invite-row__main { min-width: 0; }
.invite-row__name { margin: 0 0 4px; font-size: 17px; font-weight: 700; }
.invite-row__nick { font-size: 14px; color: var(--text-muted); font-weight: 400; }
.invite-row__meta { margin: 2px 0; font-size: 13px; color: var(--text-muted); }
.invite-row__actions { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; flex: none; }

/* ---- 状態バッジ（デザインの状態パレット。全アプリ共通で、画面ごとに読み替えない）----
   **既存とは緑とグレーが逆になった。** 旧実装は「未使用＝緑／登録済み＝グレー」だったが、
   緑は「完了した」の意味で使うほうが直感に合う（デザイン側の割り当てを採用）。
   4色は要対応の強さの順でもある：未使用（黒文字）＞ 期限切れ（赤）＞ 登録済み（緑）＞
   取り消し済み（最も弱い）。要対応なのは未使用と期限切れの2つだけ。 */
.badge {
  display: inline-flex; align-items: center; height: 26px; padding: 0 11px;
  border: 1px solid transparent; border-radius: var(--radius-pill);
  font-size: var(--fs-caption); font-weight: var(--fw-bold); letter-spacing: 0.02em;
  white-space: nowrap; flex: none;
}
.badge--unused { color: var(--state-neutral); background: var(--state-neutral-tint); border-color: var(--state-neutral-border); }
.badge--used { color: var(--state-done); background: var(--state-done-tint); border-color: var(--state-done-border); }
.badge--expired { color: var(--state-alert); background: var(--state-alert-tint); border-color: var(--state-alert-border); }

/* 取り消し済みは白＋破線（デザイン準拠）。**赤い面は採らなかった。**
   一覧に並べると期限切れの赤（#B81C08 系）とほぼ同じに見え、意味が正反対なのに
   区別がつかなかったため。破線でも氏名と店舗名は通常の強さのままなので見落とさない。 */
.badge--revoked { color: var(--state-revoked); background: var(--surface); border: 1px dashed var(--state-revoked-border); }

/* 送信済みはデザインに相当するバッジが無く、行の補足テキストに畳まれている
   （「発行 8/3 ・ 送信済み ✓」）。畳み込みは一覧を扱う回に回し、ここでは
   状態パレットから浮かないよう中立色に寄せるだけにする。 */
.badge--sent { color: var(--ds-text-muted); background: var(--surface-muted); border-color: var(--border-default); }

/* 状態の凡例。データを持たない静的マークアップ（JS 不要）。 */
.status-legend {
  list-style: none; display: flex; flex-wrap: wrap; gap: var(--space-3);
  margin: 0 0 var(--space-3); padding: 0;
  font-size: var(--fs-caption); color: var(--ds-text-muted);
}
.status-legend__item { display: inline-flex; align-items: center; gap: 6px; }
.status-legend__dot { width: 9px; height: 9px; border-radius: var(--radius-pill); flex: none; }
.status-legend__dot--unused { background: var(--state-neutral-dot); }
.status-legend__dot--expired { background: var(--state-alert-dot); }
/* **緑の使い分け（全画面で通す規則）**
     LINE緑 #06C755（--line-green / --state-done-dot） … LINE に関することだけ。
       LINEログインボタン、通知が届いたかの表示（.notice-dot--ok）
     濃い緑 #0A7A3A（--state-done）              … 状態としての「完了」。
       登録済みバッジの文字色、この凡例のドット
   デザインは凡例のドットに LINE緑を当てているが、同じ行に通知状態の緑も出るため
   1画面で緑が2つの意味を持ってしまう。ここは意図的に濃い緑へ下げている。 */
.status-legend__dot--used { background: var(--state-done); }

/* 通知状態（7-1：届かなかったこと自体が運用情報）。デザインに相当する要素は無い。
   届いた側は LINE緑（上の使い分けのとおり、LINE に関することなので）。 */
/* **塊ごと折り返す。** inline のままだと「通知不達：通知停止中」の「中」だけが
   次の行に落ちる。文言を短くするのではなく、行の途中で切れないようにする。 */
.notice-dot { margin-left: 8px; display: inline-block; white-space: nowrap; }
.notice-dot--ok { color: var(--line-green); }
.notice-dot--warn { color: var(--state-alert); }
.notice-dot--muted { color: var(--state-revoked); }

/* 発行が1件も無いときの空状態。**apps__empty はホームと共有しているので使わない。** */
.invites-empty {
  display: flex; flex-direction: column; align-items: center; gap: var(--space-3);
  padding: 56px 24px; text-align: center;
  background: var(--surface); border: 1px solid var(--border-default); border-radius: var(--radius-lg);
}
.invites-empty__icon {
  width: 64px; height: 64px; border-radius: var(--radius-lg);
  display: flex; align-items: center; justify-content: center;
  background: var(--surface-muted); color: var(--state-revoked);
}
.invites-empty__title { margin: 0; font-size: 17px; font-weight: var(--fw-bold); color: var(--ds-text-heading); }
.invites-empty__text {
  margin: 0; max-width: 240px; font-size: 13px; color: var(--ds-text-muted);
  line-height: 1.7; text-wrap: pretty; word-break: auto-phrase;
}
/* 発行履歴はあるが対応待ちが0件、のときの短い一言（カードにするほどではない） */
.invites-empty__note { margin: 0; color: var(--ds-text-muted); font-size: 13px; }

/* ---- 一覧の行（.invite-item）----
   **行は閉じた状態で完結する。** URL・QR・送信済み・取り消しはモーダルへ逃がしてあり、
   その場に展開するものは何も無いので、行の高さは常に一定。
   旧 .invite-row* は invite-undone.ejs が __name / __meta を使っているので**定義を残す**
   （invites 側からの参照は無くなった。掃除は8画面が一巡してから）。 */
.invite-item {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-3);
  padding: 14px 16px; margin-bottom: 10px;
  background: var(--surface); border: 1px solid var(--border-default); border-radius: var(--radius-lg);
}
/* min-width:0 が要る。これが無いと flex の子が最小内容幅で突っ張り、
   長い氏名（例：ヴー・ティ・フォン・タオ）で右の操作ボタンを押し出す。 */
.invite-item__body { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.invite-item__name {
  margin: 0; font-size: 15px; font-weight: var(--fw-bold); line-height: 1.4;
  color: var(--ds-text-heading); text-wrap: pretty; word-break: auto-phrase;
  /* 区切りの無い長い文字列でも枠から出さない（中黒の無いカタカナ名など） */
  overflow-wrap: anywhere;
}
/* 取り消し済みは終わった状態。氏名を弱くして取り消し線を引く（デザインの nameStyle） */
.invite-item__name.is-revoked { color: var(--state-revoked); text-decoration: line-through; }
.invite-item__nick { font-size: 13px; font-weight: var(--fw-regular); color: var(--ds-text-muted); }
.invite-item__meta {
  margin: 0; display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2);
  font-size: var(--fs-caption); color: var(--ds-text-muted);
}
.invite-item__where { min-width: 0; overflow-wrap: anywhere; }
.invite-item__foot { margin: 0; font-size: var(--fs-caption); color: var(--ds-text-muted); overflow-wrap: anywhere; }
.invite-item__sent { margin-left: 4px; }
.invite-item__actions { display: flex; align-items: center; gap: var(--space-2); flex: none; }
/* 主アクション（状態ごとに1つ）。一覧の中なので画面の主アクションより弱く見せる（9-3(3)） */
.invite-item__primary {
  display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 16px;
  border: 1px solid var(--border-default); border-radius: var(--radius-pill);
  background: var(--surface); color: var(--ds-text-muted);
  font-size: var(--fs-caption); font-weight: var(--fw-bold); white-space: nowrap;
  text-decoration: none; cursor: pointer;
  transition: background var(--ease-ui), border-color var(--ease-ui);
}
.invite-item__primary:hover { background: var(--surface-muted); }
.invite-item__menu {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: var(--tap); min-width: var(--tap);
  border: 1px solid var(--border-default); border-radius: var(--radius-pill);
  background: var(--surface); color: var(--ds-text-muted);
  font-size: 18px; letter-spacing: .1em; text-decoration: none;
}
.invite-item__menu:hover { background: var(--surface-muted); }

.copy-row { display: flex; gap: 8px; align-items: center; }
.copy-row .field__control { font-size: 13px; }
.closed-list { margin-top: 24px; }
.closed-list > summary { cursor: pointer; }

/* ---- モーダル（発行結果・送る・その他の操作で共通）----
   行から開くものは全行ぶん描画してあるが、閉じている間は display:none なので
   中の QR（loading="lazy"）も取得されない。 */
.invite-modal {
  position: fixed; inset: 0; margin: auto; z-index: 10;
  width: min(92vw, 420px); max-height: 88vh; overflow: auto;
  border: 1px solid var(--border-default); border-radius: var(--radius-lg); padding: 20px;
  background: var(--surface); color: var(--ds-text-body);
}
.invite-modal::backdrop { background: rgba(26, 26, 26, .4); }
.invite-modal__title { margin: 0 0 12px; font-size: var(--fs-label); color: var(--ds-text-muted); }
/* 氏名は3回タップで数字8桁を出す（7-1）。タップ対象と分かるよう選択を抑止する。 */
.invite-modal__name {
  margin: 0 0 6px; font-size: 26px; font-weight: var(--fw-bold);
  color: var(--ds-text-heading); cursor: pointer; user-select: none; text-wrap: pretty;
}
.invite-modal__nick { font-size: 16px; font-weight: var(--fw-regular); color: var(--ds-text-muted); }
.invite-modal__meta { margin: 2px 0; font-size: var(--fs-label); color: var(--ds-text-muted); }
.invite-modal__numeric {
  margin: 12px 0; padding: 10px; text-align: center;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 22px; letter-spacing: .18em;
  background: var(--surface-muted); border-radius: var(--radius-sm);
}
/* PC 向け：送る文面＋「文面をコピー」（2026-09-08）。textarea は読み取り専用だが選べる（JS 無しの逃げ道） */
.invite-modal__lead { margin: 0 0 8px; font-size: 14px; color: var(--ds-text-body); }
.invite-modal__msg { display: flex; flex-direction: column; gap: 8px; }
.invite-modal__msg-text { font-size: 13px; line-height: 1.6; resize: vertical; }
.invite-modal__meta--hint { margin-top: 8px; }
.invite-modal__more { margin: 16px 0; }
/* クリックで開いただけのときに枠線を出さない（キーボード操作のときだけ出す）。
   ブラウザ既定の :focus は summary をクリックした直後にも全幅の枠を描く。 */
.invite-modal__more > summary { cursor: pointer; outline: none; }
.invite-modal__more > summary:focus-visible { outline: 2px solid var(--aj-red); outline-offset: 2px; }

/* showModal() は最初の操作要素へ自動でフォーカスを移すので、開いた直後に
   「LINEで送る」へ青い枠が出ていた。dialog 自体に tabindex="-1" を付けて
   フォーカスの受け皿にしたうえで、枠はキーボード操作のときだけ出す。
   **共有クラス .btn の定義は変えず、モーダルの中だけで上書きする。** */
/* フォーカスの受け皿。見えず、レイアウトも動かさない。ここに枠が出ては本末転倒なので
   :focus-visible も含めて outline を出さない。 */
.invite-modal__focus-sink { position: absolute; width: 0; height: 0; overflow: hidden; }
.invite-modal__focus-sink:focus,
.invite-modal__focus-sink:focus-visible { outline: none; }

.invite-modal:focus { outline: none; }
.invite-modal .btn:focus { outline: none; }
.invite-modal .btn:focus-visible { outline: 2px solid var(--aj-red); outline-offset: 2px; }
.invite-modal__qr { display: block; margin-top: 8px; max-width: 100%; height: auto; }
.invite-modal .btn--block + .btn--block,
.invite-modal form + form,
.invite-modal form + .btn--block { margin-top: 10px; }

@media (max-width: 767px) {
  /* 行は縦積みにしない（高さを一定に保つのが今回の眼目）。操作は右端に寄せたまま。 */
  .invite-item { gap: var(--space-2); }
  .invite-row { flex-direction: column; align-items: stretch; }
  .invite-row__actions { align-items: stretch; }
}

@media (min-width: 1024px) and (any-pointer: fine) {
  .invite-form { padding: 22px; }

  /* ロゴは PC で 190px（区切り値は既存のものをそのまま使う。新しい区切りは作らない）。 */
  .site-header__logo img { width: 190px; }
  /* ホームの一番上（藍・48px）の白いロゴは PC で 170px（高さ 32px＝48px のバーに収まる） */
  .home-bar__logo img { width: 170px; }
}

/* --- PL分析（段階2：サマリー）---
   **共有クラスの定義は変えていない。** すべて pl- 接頭辞の画面専用クラスで完結させる。
   inline style を使わない（CSP の style-src 'self' が止めるため）。 */

.pl-head {
  display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between;
  gap: 12px; margin: 8px 0 12px;
}
.pl-head__main { min-width: 0; }
.pl-head__side { display: flex; align-items: center; gap: 10px; flex: none; }
.pl-scope { margin: 0; font-size: 18px; font-weight: var(--fw-bold); color: var(--ds-text-heading); }
.pl-period { margin: 2px 0 0; font-size: 13px; color: var(--ds-text-muted); }
.pl-fetched { margin: 0; font-size: 12px; color: var(--ds-text-muted); white-space: nowrap; }
.pl-refresh { margin: 0; }
.pl-refresh--empty { margin-top: 16px; }

.pl-note { margin: 12px 0 0; font-size: 13px; color: var(--ds-text-muted); }
.pl-note--warn { color: var(--danger-dark); }

/* 期間チップ。**確定済みの月だけがリンク**（未確定はそもそも出さない）。
   選択中は <span> なので、リンクと見分けがつく。 */
/* 器は .pl-periods（幅で出し分ける）に移した。ここはチップ1つぶんの見た目だけ。 */
.pl-chip {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: var(--tap); padding: 0 14px; border-radius: var(--radius-pill);
  border: 1px solid var(--border-default); background: var(--surface);
  color: var(--ds-text-heading); font-size: 13px; text-decoration: none; white-space: nowrap;
}
a.pl-chip:hover { background: var(--page-bg); }
/* フォーカスの輪郭は後方の「上部の部品を1つに揃える」節（#1F4E5F・offset 2px）が持つ。
   かつてここにあった黒（--ds-text-heading）は後勝ちで死んでいたので消した（2026-08-27 実測） */
/* 選択中の塗りは後方の「PL分析：上部の部品を1つに揃える」節（濃い藍 #1F4E5F）が持つ。
   かつてここにあった --ds-text-heading（黒）塗りは後勝ちで死んでいたので消した
   （2026-08-27 computed 実測で無効を確認）。 */

/* 表。**横スクロールはこの箱の内側に閉じる**（ページ全体は横に動かさない）。 */
/* 表の器。**縦横ともこの箱の内側でスクロールする。**
   `overflow-x: auto` を指定した時点で、CSS の規則により overflow-y も visible では
   いられず auto になる（＝この箱がスクロールコンテナ）。そのため thead の
   `position: sticky` は**ページではなくこの箱**を基準にする。
   **箱に高さの上限が無いと箱の中で縦スクロールが起きず、sticky は発火しない。**
   （1列目の sticky が横方向で効いているのが、箱がスクロールコンテナである証拠） */
.pl-scroll {
  overflow: auto;
  margin-top: 4px; border: 1px solid var(--border-default); border-radius: var(--radius);
  /* 上部が半画面弱まで縮んだので、箱を画面のほぼ全部にできる。
     こうすると二重スクロールに見えず、実質ページを送っている感覚のまま列見出しが残る。 */
  max-height: calc(100vh - var(--pl-top));  /* dvh 非対応のブラウザ用 */
  max-height: calc(100dvh - var(--pl-top)); /* 対応していればこちらが効く */
  min-height: 320px;                        /* 画面が短くても潰れないように */
}
/* 上部（アプリバー・範囲・期間チップ）の占める高さ。
   **dvh を使うのは、スマホでアドレスバーが伸縮しても高さが追随するため。**

   ■ 4画面の --pl-top はすべて「表の箱（.pl-scroll）の上端の実測 ＋ 余裕15px」。
     値は test/plTop.test.js が「記録した実測＋15」と一致することを検査する
     （値だけ変える事故は止まるが、**レイアウト変更によるずれは検出できない**）。

   ■ 測り方（次に上部の部品を変えたら、この手順でここの4値を測り直す）：
     1) テストと同じ偽DBで本物のルートを起動する
        （test/helpers/plDbFixtures の tables() を installFakeDb に渡し createApp を
        3100 で listen。scratchpad の serve-fake-pl.js の形）。加藤（取締役）でログイン
     2) 条件付きの帯（.notice / .pl-note / 目標・科目の帯）は display:none にして除く
        （出るかどうかがデータ次第のため。出た分は min-height:320px が下支え）
     3) 幅 375px と 1280px で document.querySelector('.pl-scroll')
        .getBoundingClientRect().top を読む（整数に丸める）
     4) 読んだ値＋15 をここへ書き、日付と値をこのコメントに残す
     5) 書き換え後、「箱の下端 ≤ 画面の高さ」と「箱の中を150px送って thead が
        箱の上端に留まる」を4画面×2幅で確かめる

   ここはサマリー用（範囲／期間チップ。期セレクタは無い）。
   **2026-09-06 の実測**（デザイン統一 段階4：白ヘッダー65px＋タブ帯を
   アプリバー（375px=98px・1280px=48px）に替えた後）：
     スマホ(375px) 218px ／ PC(1280px) 169px → 233／184
   履歴：2026-08-15（白ヘッダー＋タブ帯の構成）273／231 → 290／250 */
.pl { --pl-top: 233px; }
@media (min-width: 768px) { .pl { --pl-top: 184px; } }
.pl-table { border-collapse: collapse; width: 100%; font-size: 13px; background: var(--surface); }
.pl-table th, .pl-table td { padding: 8px 12px; border-bottom: 1px solid var(--border-default); }
/* 列見出しは縦スクロールで残す。**背景を不透明にしないと下の行が透ける。** */
.pl-table thead th {
  position: sticky; top: 0; z-index: 2;
  background: var(--page-bg); font-weight: var(--fw-bold); white-space: nowrap;
  /* sticky の要素には border が付いてこないので、影で下端の線を作る。
     **色を指定しないと --border-default（#E8E6E1）のままで、地の #FAFAF8 に対して
     1.19:1 ＝ 実質見えない。** 線として成立する #AEB4B8（2.0:1）にする。
     ヘッダーと本文の境目なので、罫線の中ではいちばん強くてよい。 */
  box-shadow: inset 0 -1px 0 #AEB4B8;
}

/* 1列目は店舗名。**sticky で固定**（CSS だけで効く。JS は使わない）。 */
.pl-table__name {
  position: sticky; left: 0; z-index: 1; background: var(--surface);
  text-align: left; font-weight: var(--fw-regular); white-space: nowrap;
  max-width: 220px; overflow: hidden; text-overflow: ellipsis;
}
/* 左上の角は縦横どちらの sticky にも載るので、**両方より前に出す**。 */
.pl-table thead .pl-table__name { background: var(--page-bg); z-index: 3; }
/* 合計行の名前セルも、横スクロールで隠れないよう前に出す。 */
.pl-row--total .pl-table__name { z-index: 1; }
.pl-table__num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.pl-table__num.is-bad { color: var(--danger-dark); font-weight: var(--fw-bold); background: #fef3f2; }

.pl-badge {
  margin-left: 6px; padding: 1px 6px; border-radius: var(--radius-pill);
  border: 1px solid var(--border-default); font-size: 11px; color: var(--ds-text-muted);
}

/* 未選択（店舗未配賦）。店舗ではないことが分かるよう沈める。 */
/* 未選択は**合計の下**（tfoot の合計行の次）。合計に含まれないことを線で見せる。
   合計行の下端は border-bottom: none なので、こちらの上端に細い線を引く。
   **点線にするのは「ここから下は別勘定」を、色ではなく形で伝えるため。** */
.pl-row--unassigned .pl-table__name { color: var(--ds-text-muted); font-style: normal; }
.pl-row--unassigned td { color: var(--ds-text-muted); }
.pl-row--unassigned th, .pl-row--unassigned td {
  border-top: 1px dashed #8C8C8C; background: var(--page-bg);
}
.pl-row--unassigned .pl-table__name { background: var(--page-bg); }

.pl-row--total th, .pl-row--total td {
  border-top: 2px solid var(--border-default); border-bottom: none;
  font-weight: var(--fw-bold); background: var(--page-bg);
}
.pl-row--total .pl-table__name { background: var(--page-bg); }

/* 未確定の月の見た目は**1箇所だけ**で決める（下の「未確定の月は押せない」のルール）。
   ここに同じ内容を二重に書いていたので消した。チップとドロップダウンの項目は
   同じ span.pl-chip.is-undetermined なので、ルールが1つなら見え方は必ず揃う。 */
/* 目標が読み取れない店の一覧（帯の中）。**新しい共有クラスは作らない**——
   notice の中でだけ使う、この帯専用の並び。 */
.pl-gap-list { margin: 6px 0; padding-left: 1.4em; }
.pl-gap-list li { margin: 2px 0; font-weight: var(--fw-bold); }
/* 6件目からは畳む。**当たり判定は --tap を確保する**（帯の中でも詰めない）。 */
.pl-gap-more > summary {
  display: inline-flex; align-items: center; min-height: var(--tap);
  cursor: pointer; text-decoration: underline; list-style: none;
}
.pl-gap-more > summary::-webkit-details-marker { display: none; }
.pl-gap-more > summary::after { content: '▾'; margin-left: 6px; font-size: 11px; }
.pl-gap-more[open] > summary::after { content: '▴'; }

/* 取得が古いときの時刻表示。注意の帯とあわせて2箇所で気づけるようにする。 */
.pl-fetched.is-stale { color: var(--danger-dark); font-weight: var(--fw-bold); }

/* --- PL分析のタブバー ---
   段階4以降で画面が増える。**押せないタブは並べない**ので、いまは1枚だけ出る。 */
.pl-tabs {
  display: flex; flex-wrap: wrap; gap: 4px;
  margin: 4px 0 12px; border-bottom: 1px solid var(--border-default);
}
.pl-tab {
  display: inline-flex; align-items: center; min-height: var(--tap);
  padding: 0 16px; font-size: 14px; text-decoration: none;
  color: var(--ds-text-muted); border-bottom: 2px solid transparent; margin-bottom: -1px;
}
a.pl-tab:hover { color: var(--ds-text-heading); }
/* フォーカスの輪郭は後方の「上部の部品を1つに揃える」節（#1F4E5F・offset 2px）が持つ。
   かつてここにあった黒・offset -2px は後勝ちで死んでいたので消した（2026-08-27 実測。
   実効の offset も -2px ではなく 2px だった） */
/* **font-weight だけがここの現役**（後方のどのブロックも太さを持たない。2026-08-27 実測 700）。
   色と下線は後方の「上部の部品を1つに揃える」節（濃い藍 #1F4E5F）が持つので書かない。 */
.pl-tab.is-current { font-weight: var(--fw-bold); }

/* --- PL分析の期間チップ（幅で出し分ける唯一の場所）---
   2組を出して display で切り替える。チップは**すべてリンク**で状態はクエリにしか
   無いので、同じものが2回あっても衝突しない。**hidden 属性は使わない**
   （作成者スタイルに負けるため。CLAUDE.md の決めごと）。 */
.pl-periods { margin: 12px 0; }
.pl-periods__wide { display: none; }
.pl-periods__narrow { display: flex; flex-wrap: wrap; gap: 6px; align-items: flex-start; }

/* 区切り値は既存のもの（invites の 767px）に合わせる。新しい区切りは作らない。 */
@media (min-width: 768px) {
  .pl-periods__narrow { display: none; }
  .pl-periods__wide { display: flex; flex-wrap: wrap; gap: 6px; }
}

/* 月のプルダウン。<details>/<summary> で作り、JS を使わない。
   月を選ぶとページが変わるので、閉じる処理も要らない。 */
.pl-months { position: relative; }
.pl-months__toggle { cursor: pointer; list-style: none; }
.pl-months__toggle::-webkit-details-marker { display: none; }
.pl-months__toggle::after { content: '▾'; margin-left: 6px; font-size: 11px; }
.pl-months[open] .pl-months__toggle::after { content: '▴'; }
.pl-months__menu {
  position: absolute; z-index: 5; margin-top: 6px; padding: 10px;
  display: grid; grid-template-columns: repeat(3, minmax(64px, 1fr)); gap: 6px;
  background: var(--surface); border: 1px solid var(--border-default);
  border-radius: var(--radius); box-shadow: var(--shadow-card); min-width: 220px;
}

/* --- PL分析の範囲セレクタ ---
   現在の範囲名がそのままボタン。**h1 はここが持つ**（<summary> の中に置く）。
   開閉は <details>/<summary> で JS を使わない。 */
.pl-scope { margin: 0 0 4px; }
.pl-scope__toggle { list-style: none; cursor: pointer; display: inline-block; }
.pl-scope__toggle::-webkit-details-marker { display: none; }
.pl-scope__current {
  display: inline-flex; align-items: center; gap: 6px;
  margin: 0; padding: 6px 0; font-size: 20px; font-weight: var(--fw-bold);
  color: var(--ds-text-heading); letter-spacing: 0.02em; line-height: 1.3;
  text-wrap: balance;
}
.pl-scope__toggle .pl-scope__current::after { content: '▾'; font-size: 13px; color: var(--ds-text-muted); }
.pl-scope[open] .pl-scope__toggle .pl-scope__current::after { content: '▴'; }
.pl-scope__toggle:focus-visible { outline: 2px solid var(--ds-text-heading); outline-offset: 2px; }
/* 候補が1つ以下のときは押せないので、めくれる印を出さない */
.pl-scope__current--plain { padding-bottom: 6px; }

.pl-scope__menu {
  margin-top: 4px; padding: 12px; max-height: 60vh; overflow-y: auto;
  background: var(--surface); border: 1px solid var(--border-default);
  border-radius: var(--radius); box-shadow: var(--shadow-card);
}
.pl-scope__heading {
  margin: 10px 0 4px; font-size: 11px; font-weight: var(--fw-bold);
  color: var(--ds-text-muted); letter-spacing: 0.08em;
}
.pl-scope__heading:first-child { margin-top: 0; }
.pl-scope__item {
  display: flex; align-items: center; gap: 6px;
  min-height: var(--tap); padding: 0 10px; border-radius: var(--radius);
  color: var(--ds-text-heading); font-size: 14px; text-decoration: none;
}
a.pl-scope__item:hover { background: var(--page-bg); }
a.pl-scope__item:focus-visible { outline: 2px solid var(--ds-text-heading); outline-offset: -2px; }
/* 塗りは後方（#EDF1F3）が後勝ちで持つ。ここは太字だけ（2026-08-27 実測で整理） */
.pl-scope__item.is-current { font-weight: var(--fw-bold); }

/* 期間ラベル（どの月を足したか）。見出しの下に小さく。 */
.pl-period { margin: 0 0 4px; font-size: 12px; color: var(--ds-text-muted); }

/* 取得時刻と更新ボタンは表の下。上部を軽くして表を早く見せる。 */
.pl-foot {
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
  margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--border-default);
}
/* 検算・科目が合わないときの注意（Q-BI・2026-09-19）。全社を見られる人にだけ。取得日時の隣に小さく（折り返して1行を使う） */
.pl-health { flex-basis: 100%; margin: 0; padding: 0; list-style: none; font-size: 12px; color: var(--danger-dark); font-weight: var(--fw-bold); }
.pl-health li + li { margin-top: 2px; }

/* --- PL分析（15列 × 4ブロック）---
   **器（.pl-scroll）はサマリーと共有する。** 行の組み立てだけ専用にする。
   PL一覧（列＝店舗・70科目）との共通化は、2つ揃ってから判断する。 */

/* 期間チップが無いぶん上部が短い。**器の計算式は共有し、この値だけ差し替える。** */
/* PL分析と月次一覧は上部の部品構成が同じ（範囲＋期の1行。**期間チップが無い**）
   なので値を共有する。店舗一覧は並べ方＋期間チップのぶん高いので専用の値
   （.pl-stores の節）、サマリーは期間チップがあるので .pl の値。
   測り方は .pl の節の手順と同じ。**2026-09-06 の実測**（アプリバーに替えた後。
   2画面とも同じ値だった）：
     スマホ(375px) 160px ／ PC(1280px) 114px → 175／129
   履歴：2026-08-15（白ヘッダー＋タブ帯）223／181 → 240／200 */
.pl-table-page, .pl-monthly-page { --pl-top: 175px; }
@media (min-width: 768px) { .pl-table-page, .pl-monthly-page { --pl-top: 129px; } }

.pl-matrix-hint { margin: 8px 0 4px; }

.pl-matrix {
  border-collapse: separate; border-spacing: 0;
  font-size: 12.5px; background: var(--surface);
  font-variant-numeric: tabular-nums;
}
.pl-matrix th, .pl-matrix td {
  padding: 5px 8px; border-bottom: 1px solid var(--border-default); white-space: nowrap;
}

/* ---- 2段のヘッダー ----
   **1段目と2段目の両方を sticky にする。** 2段目の top は1段目の高さぶん下げる必要があり、
   高さを固定値で持たざるを得ない（--pl-h1）。
   **フォントの読み込みや文字サイズの変更で静かにずれる**（隙間が空く／重なる）。
   テストでは拾えないので、実機確認の項目にしてある。 */
.pl-matrix { --pl-h1: 30px; }
.pl-matrix thead th {
  position: sticky; z-index: 2; background: var(--page-bg);
  font-weight: var(--fw-bold); text-align: center;
}
.pl-matrix__cols th { top: 0; height: var(--pl-h1); }
.pl-matrix__units th { top: var(--pl-h1); font-weight: var(--fw-regular); color: var(--ds-text-muted); font-size: 11px; }
/* 期計・合計の列は面で沈める（月と見分ける） */
.pl-matrix__group.is-range, .pl-matrix__unit.is-range { background: #eef3ef; }
/* 未確定の月は見出しから分かるようにする */
/* 未確定の列見出しの見た目は、**このファイルの後ろでまとめて決める**
   （チップの未確定と同じ塗り・文字にするため。`.is-range` の塗りより後に置く必要がある）。 */

/* ---- 1列目（科目名）----
   横スクロールしても残す。**縦横どちらの sticky にも載る左上の角は、さらに前に出す。** */
.pl-matrix__label {
  position: sticky; left: 0; z-index: 1; background: var(--surface);
  text-align: left; font-weight: var(--fw-regular);
  min-width: 132px; max-width: 132px; overflow: hidden; text-overflow: ellipsis;
  /* 横スクロールしたとき、科目列と本文の境目になる線。**ここが見えないと
     どこまでが科目名か分からない。** --border-default（#E8E6E1・白面に対して 1.25:1）
     では実質見えないので #AEB4B8（2.1:1）にする。 */
  box-shadow: inset -1px 0 0 #AEB4B8;
}
.pl-matrix__corner { z-index: 3; background: var(--page-bg); }

/* ---- 値のセル ---- */
.pl-matrix__yen { text-align: right; min-width: 96px; }
.pl-matrix__pct {
  text-align: right; min-width: 48px; font-size: 11px; color: var(--ds-text-muted);
  /* ここにあった box-shadow は**後ろの「縦線を3段階」で box-shadow: none に
     打ち消されていた死んだ宣言**なので削除した。％列の右の線は border-right で引く。 */
}
/* 悪化＝薄い赤、改善＝薄い緑。**符号の意味は行（worseWhen）が決める。** */
.pl-matrix__yen.is-bad, .pl-matrix__pct.is-bad { background: #fdecea; color: #c0362c; font-weight: var(--fw-bold); }
.pl-matrix__yen.is-good, .pl-matrix__pct.is-good { background: #e6f4ea; color: #067647; font-weight: var(--fw-bold); }

/* ---- ブロックの区切り ----
   **左端の縦帯にしない。** 縦帯にすると科目名の左にもう1列固定することになり、
   2列 sticky で重くなる。見出し行1本で区切る。 */
.pl-matrix__heading th {
  position: sticky; left: 0; z-index: 1;
  text-align: left; font-weight: var(--fw-bold); font-size: 12px;
  color: var(--ds-text-heading); background: var(--page-bg);
  border-top: 2px solid var(--border-default); letter-spacing: 0.08em;
}
/* ---- 2行で1組（対目標・対前年）----
   科目名は結合したセルの中で**縦中央・太字**。
   **組の内側には横線を引かず、組と組の間に線を引く。** */
.pl-matrix__label--pair { vertical-align: middle; font-weight: var(--fw-bold); }
/* 組の上の行（値の行）の下線を消す＝内側に線が出ない */
.pl-matrix__row--pair td { border-bottom: none; }
/* 率の行は少し沈めて、値の行と見分ける */
.pl-matrix__row--rate td { color: var(--ds-text-muted); }

/* ---- 期セレクタ ---- */
.pl-fy { margin: 0 0 8px; }
.pl-fy--plain { margin: 0 0 8px; font-size: 13px; color: var(--ds-text-muted); }
.pl-fy__toggle {
  display: inline-flex; align-items: center; min-height: var(--tap);
  list-style: none; cursor: pointer; font-size: 13px; color: var(--ds-text-heading);
}
.pl-fy__toggle::-webkit-details-marker { display: none; }
.pl-fy__toggle::after { content: '▾'; margin-left: 6px; font-size: 11px; color: var(--ds-text-muted); }
.pl-fy[open] .pl-fy__toggle::after { content: '▴'; }
.pl-fy__toggle:focus-visible { outline: 2px solid var(--ds-text-heading); outline-offset: 2px; }
.pl-fy__menu {
  margin-top: 4px; padding: 8px; display: flex; flex-direction: column;
  background: var(--surface); border: 1px solid var(--border-default);
  border-radius: var(--radius); box-shadow: var(--shadow-card);
}
.pl-fy__item {
  display: flex; align-items: center; min-height: var(--tap); padding: 0 10px;
  border-radius: var(--radius); color: var(--ds-text-heading); font-size: 13px; text-decoration: none;
}
a.pl-fy__item:hover { background: var(--page-bg); }
a.pl-fy__item:focus-visible { outline: 2px solid var(--ds-text-heading); outline-offset: -2px; }
/* 塗りは後方（#EDF1F3）が後勝ちで持つ。ここは太字だけ（2026-08-27 実測で整理） */
.pl-fy__item.is-current { font-weight: var(--fw-bold); }

/* --- PL分析：横幅（前期計まで1画面に入れる）---
   器が 960px（--maxw）に閉じ込められていたのを広げる。ただし**画面いっぱいにはしない**。
   広げすぎると視線の移動が長くなって、かえって読みにくい。
   **前期計までが入る幅で止め、6月から先は横スクロール**にする。

     帯34 ＋ 科目列116 ＋ 12月〜5月 768（1グループ128） ＋ 前期計136 ＝ 1,054px
     ＋ container の左右 padding 32 ＋ 枠線2 ＋ 縦スクロールバー約16 ＝ 約1,104px

   .container の margin: 0 auto がそのまま効くので、広いモニタでは中央に寄る。
   **左右の余白（padding 16px）は .container のものをそのまま使う。** */
.container.pl-table-page { max-width: 1120px; }

/* 列幅。**月・期計・合計で変える。** 桁数が違うため：
     月の最大   186,457,571   11文字
     前期計     994,761,572   11文字
     合計     1,308,953,772   13文字
   数字は tabular-nums（.pl-matrix で指定済み）なので、桁ごとの幅が揃う。
   font-size 12px の等幅数字で1桁≈7.2px、カンマ≈3.6px と見積もると
   11文字＝約72px、13文字＝約83px。padding 8px を足して下の値にした。 */
.pl-matrix { --w-yen: 88px; --w-pct: 40px; --w-yen-range: 96px; --w-yen-total: 104px; --w-label: 116px; }
.pl-matrix__yen { min-width: var(--w-yen); width: var(--w-yen); }
.pl-matrix__pct { min-width: var(--w-pct); width: var(--w-pct); }
.pl-matrix__yen.is-range { min-width: var(--w-yen-range); width: var(--w-yen-range); }
.pl-matrix__yen.is-total { min-width: var(--w-yen-total); width: var(--w-yen-total); }
.pl-matrix__label { min-width: var(--w-label); max-width: var(--w-label); }
/* 数字は少し小さく。**金額の折り返しを防ぐのが目的**で、読みやすさは等幅で担保する。 */
.pl-matrix__yen, .pl-matrix__pct { font-size: 12px; }
/* 行を詰める。**38行あるので1行あたり10px で 380px 効く。**
   body の line-height 1.6 のままだと 12.5px の文字で 20px の行になり、
   padding 5+5 と枠線を足して1行 31px。1.3 に下げて padding を 2px にすると約21px。
   数字は等幅（tabular-nums）なので、詰めても桁は揃って読める。 */
.pl-matrix { line-height: 1.3; }
.pl-matrix th, .pl-matrix td { padding: 2px 4px; }

/* --- PL分析：色と縦帯（旧アプリに寄せる）---
   **藍色はこの表の中だけ。** ajcloud 全体のヘッダー（ロゴの帯）には使わない。
   共有クラスの定義も変えていない（すべて pl-matrix 配下）。 */
.pl-matrix {
  --ai-deep: #1F4E5F;   /* 今期の帯 */
  --ai-cream: #F5EAD0;  /* 対目標の帯 */
  --ai-brown: #8A6D3B;
  --ai-sky: #DCE9F0;    /* 対前年の帯 */
  --ai-sky-ink: #35606F;
  --ai-gray: #6B7378;   /* 前期の帯 */
  --ai-bad-bg: #FDECEC; --ai-bad-ink: #C0392B;
  --ai-good-bg: #E8F5EC; --ai-good-ink: #1E7A45;
  --ai-head-bg: #F7F8F9; --ai-line: #E3E6E8;
  --w-band: 34px;
}
/* 表の横罫。**--ai-line（#E3E6E8）は白面に対して 1.25:1 で、行を追うには弱い。**
   #C6CCD0（1.62:1）に上げる。--ai-line 自体は変えない（ブロックの区切りの
   2px の線にも使っていて、そちらまで濃くすると罫線だらけになる）。 */
.pl-matrix th, .pl-matrix td { border-bottom: 1px solid #C6CCD0; }
.pl-matrix thead th { background: var(--ai-head-bg); }
/* 期計・合計の列の塗り。**#EDF1F3 は上の --ai-head-bg と同値**で、
   見出しの地と同じ色＝区別が付いていなかった。青みのある #C9DCE8（地に対して 1.24:1）に。
   **未確定の灰色（#D3D8DB）とは色みで分ける**（明るさだけで分けると紛らわしい）。 */
.pl-matrix__group.is-range, .pl-matrix__unit.is-range { background: #C9DCE8; }

/* ---- 左端の縦帯 ----
   **帯のセルはブロックの全行にまたがる（rowspan）。** 縦書きで中央に置く。
   sticky は left: 0。科目列はその右（left: var(--w-band)）にずらす。 */
.pl-matrix__band {
  position: sticky; left: 0; z-index: 1;
  width: var(--w-band); min-width: var(--w-band); max-width: var(--w-band);
  padding: 4px 0; text-align: center; vertical-align: middle;
  border-bottom: 2px solid var(--ai-line);
}
.pl-matrix__band-text {
  writing-mode: vertical-rl; text-orientation: upright;
  font-weight: var(--fw-bold); font-size: 12px; letter-spacing: 0.14em; white-space: nowrap;
}
.pl-matrix__band--head { background: var(--ai-head-bg); z-index: 4; }
.pl-matrix__band--cur { background: var(--ai-deep); color: #fff; }
.pl-matrix__band--target { background: var(--ai-cream); color: var(--ai-brown); }
.pl-matrix__band--yoy { background: var(--ai-sky); color: var(--ai-sky-ink); }
.pl-matrix__band--prev { background: var(--ai-gray); color: #fff; }

/* 科目列は帯の右へ。**白背景・左寄せ・余白を広げる。** */
.pl-matrix__label {
  left: var(--w-band); background: #fff; padding: 5px 10px;
}
.pl-matrix thead .pl-matrix__label { background: var(--ai-head-bg); }
/* 小計と重要行は太字（売上・売上総利益・販売管理費 計・営業利益） */
.pl-matrix__label.is-key { font-weight: var(--fw-bold); }

/* ---- ブロックとブロックの間は太い線 ---- */
.pl-matrix__block + .pl-matrix__block > tr:first-child > * { border-top: 2px solid var(--ai-line); }

/* ---- 悪化・改善 ---- */
.pl-matrix__yen.is-bad, .pl-matrix__pct.is-bad { background: var(--ai-bad-bg); color: var(--ai-bad-ink); }
.pl-matrix__yen.is-good, .pl-matrix__pct.is-good { background: var(--ai-good-bg); color: var(--ai-good-ink); }

/* 読み上げ用にだけ残す文字 */
.pl-visually-hidden {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}

/* --- PL分析：仕上げ ---
   1) 左上の角（帯・科目）が横スクロールで流れる件
      **left は効いていた。負けていたのは重なり順。**
      `.pl-matrix thead th` の z-index:2 が `.pl-matrix__corner` の z-index:3 に
      **詳細度で勝って**しまい、同じ重なり順になった結果、後から描かれる「12月」が
      科目セルの上に乗っていた。詳細度を上げて明示する。 */
.pl-matrix thead .pl-matrix__corner { position: sticky; top: 0; left: var(--w-band); z-index: 6; }
.pl-matrix thead .pl-matrix__band--head { position: sticky; top: 0; left: 0; z-index: 7; }

/* 2) 押せるものだと分かる見た目（主張は強くしない） */
.pl-scope__toggle, .pl-fy__toggle {
  /* ここにあった border は**後ろのピルの定義で上書きされる死んだ宣言**なので削除した。 */
  border-radius: var(--radius);
  background: var(--surface); padding: 2px 10px;
}
.pl-scope__toggle:hover, .pl-fy__toggle:hover { background: var(--page-bg); }
.pl-scope__toggle .pl-scope__current { padding: 2px 0; }

/* 3) 見出しと期セレクタを横並びに（広い画面だけ） */
.pl-headline { margin-bottom: 8px; }
@media (min-width: 768px) {
  .pl-headline { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
  .pl-headline .pl-scope, .pl-headline .pl-fy { margin: 0; }
  /* E2のPC版：.pl-pick の align-items: baseline のままだと、h1（大きい文字）と
     期の表示（小さい文字）のベースライン差がボタンに乗り、範囲と期のボタンが
     3pxずれる（実測：範囲 top25 / 期 top22）。見出し行の中だけ中央揃えにする */
  .pl-headline .pl-pick { align-items: center; }
}

/* 5) 小計（売上総利益・営業利益）の上下を太くする */
.pl-matrix__row--subtotal > * { border-top: 2px solid var(--ai-line); border-bottom: 2px solid var(--ai-line); }

/* 6・7) 縦線を3段階にする
     金額と％の間（薄い）＜ 月と月の間（はっきり）＜ ブロックの間（太い） */
/* 縦線の3段階。**c5d39e9 で「金額と％の間（薄い）＜ 月と月の間」の依頼を受けて入れた線。**
   ところが当初の値は白面に対して 1.12:1 と 1.39:1 で、どちらも実質見えておらず、
   依頼が果たされていなかった。**強弱の順は保ったまま、両方とも見える濃さに上げる。**
     --line-faint  #DDE2E5 … 1.31 : 1（金額と％の間。いちばん弱い）
     --line-group  #B9C1C6 … 1.82 : 1（月と月の間・ブロックの間） */
.pl-matrix { --line-faint: #DDE2E5; --line-group: #B9C1C6; }
.pl-matrix__yen { border-right: 1px solid var(--line-faint); }
.pl-matrix__pct { border-right: 1px solid var(--line-group); box-shadow: none; }
.pl-matrix__unit { border-right: 1px solid var(--line-faint); }
.pl-matrix__unit--pct { border-right: 1px solid var(--line-group); }
.pl-matrix__group { border-right: 1px solid var(--line-group); }

/* 8) ％に記号を出さないので列を詰める（"38.1" は4文字）。
      15列あるので、見えている7グループで 42px 効く。 */
.pl-matrix { --w-pct: 34px; }
.container.pl-table-page { max-width: 1080px; }

/* --- PL分析：セレクタとタブをピル型に ---
   **入力欄に見えないようにする。** 白＋細い枠を既定、開いたら濃い藍で塗る。 */

/* 1) メニューは重ねて出す。**開いても下の表が1pxも動かないこと。**
      段階3のスマホ用「月 ▾」プルダウン（.pl-months__menu）と同じ作りに揃える。 */
.pl-scope, .pl-fy { position: relative; }
.pl-scope__menu, .pl-fy__menu {
  position: absolute; z-index: 20; top: 100%; left: 0; min-width: 260px;
}

/* 2) **読むもの（見出し）と押すもの（ボタン）を分ける。**
      見出しそのものがボタンだと、押せるかどうかが分かりにくい。
      見出しは枠も背景も持たず、右に小さなボタンを別に置く。 */
.pl-pick { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.pl-scope__toggle, .pl-fy__toggle {
  border: none; border-radius: 4px;
  background: #EDF1F3; color: var(--ds-text-heading);
  padding: 3px 10px; font-size: 12px; min-height: 0;
}
.pl-scope__toggle:hover, .pl-fy__toggle:hover { background: #DFE5E9; }
/* 開いている間は濃い藍の塗りに白文字 */
.pl-scope[open] > .pl-scope__toggle,
.pl-fy[open] > .pl-fy__toggle { background: #1F4E5F; color: #fff; }
.pl-scope[open] > .pl-scope__toggle::after,
.pl-fy[open] > .pl-fy__toggle::after { color: #fff; }
.pl-scope__toggle::after { content: '▾'; margin-left: 4px; font-size: 10px; color: var(--ds-text-muted); }
.pl-scope[open] > .pl-scope__toggle::after { content: '▴'; }

/* 期の表示は読むためのもの。ボタンより主張しない。 */
.pl-fy__shown { margin: 0; font-size: 13px; color: var(--ds-text-muted); }

/* メニューの中身。見出しは小さく薄く、項目は選べると分かるように。 */
.pl-scope__heading { font-size: 10.5px; color: var(--ds-text-muted); letter-spacing: 0.1em; }
.pl-scope__item, .pl-fy__item { border-radius: 999px; }
.pl-scope__item.is-current, .pl-fy__item.is-current { background: #EDF1F3; }

/* --- 3) 表の左上と外枠をはっきりさせる ---
   ヘッダーの #F7F8F9 とページ背景 #FAFAF8 がほぼ同色で、表の始まりが分からなかった。
   **ヘッダーを一段濃くし、外枠の上端・左端を出す。** */
.pl-matrix { --ai-head-bg: #EDF1F3; }
.pl-matrix thead th { border-bottom: 1px solid var(--line-group); }
.pl-matrix__band--head, .pl-matrix__corner { background: var(--ai-head-bg); }
.pl-scroll { border-color: var(--line-group, #D7DBDE); }

/* --- 4) 小計（売上総利益・営業利益）の上下の線 ---
   **上だけ出ていた原因**：`.pl-matrix th, .pl-matrix td`（詳細度 0,1,1）が
   `.pl-matrix__row--subtotal > *`（0,1,0）に勝ち、border-bottom だけ上書きしていた。
   誰も指定していない border-top は残るので、上だけ見えていた。
   **詳細度を1段上げて、上下とも明示する。**
   太さは 2px をやめ、1px で色を濃くする（区切りが分かればよく、目立たせすぎない）。 */
/* **--ai-subtotal は定義されていなかった**（フォールバックだけが効いていた）。
   1箇所でしか使わないので、変数をやめて色を直に書く。見た目は変わらない。 */
.pl-matrix .pl-matrix__row--subtotal > * {
  border-top: 1px solid #9AA4AB;
  border-bottom: 1px solid #9AA4AB;
}

/* タブは**下線型に戻す**（ピル型はやめた）。現在のタブに下線、他はただの文字。
   ※かつてここにあった .pl-tabs { border-bottom; gap:4px } は、後方の
   「タブバーは下線をやめてピルを並べるだけ」（border-bottom:none・gap:6px）に
   両宣言とも後勝ちされて死んでいたので消した（2026-08-27 実測）。 */
.pl-tab {
  border: none; border-radius: 0; background: transparent;
  border-bottom: 2px solid transparent; margin-bottom: -1px; padding: 0 16px;
}
/* hover の背景は後方の「上部の部品を1つに揃える」節（--page-bg）が後勝ちで持つ。
   ここに書く transparent は死んでいたので消し、**現役の color だけ**残す（2026-08-27 実測） */
a.pl-tab:hover { color: var(--ds-text-heading); }
/* かつてここにあった is-current（透明地＋黒下線）は、直後の「上部の部品を1つに揃える」節の
   濃い藍（#1F4E5F 塗り＋下線）に全宣言が後勝ちされて死んでいたので消した（2026-08-27 実測）。 */

/* 見出しは押せないただの文字に戻す（枠も背景も持たない） */
.pl-scope__current, .pl-scope__current--plain { border: none; background: none; padding: 6px 0; }
.pl-scope__current::after { content: none; }

/* ===== PL分析：上部の部品を1つに揃える =====
   タブ・期間チップ・範囲ボタン・期ボタンは **同じピル型の部品**。
   高さ・角丸・文字サイズ・余白・枠線をここだけで定義し、
   4つがばらばらの高さになるのを防ぐ（見た目が締まらない原因だった）。 */
.pl-pill,
.pl-tab,
.pl-chip,
.pl-scope__toggle,
.pl-fy__toggle {
  display: inline-flex; align-items: center; justify-content: center;
  /* **すべて同じ高さ。** --tap は変えない（PC でも 44px 未満の当たり判定を作らない） */
  min-height: var(--tap); box-sizing: border-box;
  padding: 0 14px; border-radius: 999px;
  border: 1px solid var(--border-default); background: var(--surface);
  color: var(--ds-text-heading); font-size: 13px; line-height: 1;
  text-decoration: none; white-space: nowrap; cursor: pointer;
  list-style: none; margin: 0;
}
.pl-scope__toggle::-webkit-details-marker,
.pl-fy__toggle::-webkit-details-marker { display: none; }

a.pl-pill:hover, a.pl-tab:hover, a.pl-chip:hover,
.pl-scope__toggle:hover, .pl-fy__toggle:hover { background: var(--page-bg); }
a.pl-pill:focus-visible, a.pl-tab:focus-visible, a.pl-chip:focus-visible,
.pl-scope__toggle:focus-visible, .pl-fy__toggle:focus-visible {
  outline: 2px solid #1F4E5F; outline-offset: 2px;
}

/* 選択中・開いている：濃い藍の塗り＋白文字 */
.pl-tab.is-current,
.pl-chip.is-current,
.pl-scope[open] > .pl-scope__toggle,
.pl-fy[open] > .pl-fy__toggle {
  background: #1F4E5F; border-color: #1F4E5F; color: #fff;
}
.pl-scope[open] > .pl-scope__toggle::after,
.pl-fy[open] > .pl-fy__toggle::after { color: #fff; }

/* タブバーは下線をやめてピルを並べるだけ */
.pl-tabs { border-bottom: none; gap: 6px; margin: 4px 0 12px; }
.pl-tab { margin-bottom: 0; border-bottom: 1px solid var(--border-default); }
.pl-tab.is-current { border-bottom-color: #1F4E5F; }

/* 旧タブバーの家（.pl-tab--home / .pl-tab__icon）は段階4（2026-09-06）でアプリバーの
   家（.app-bar__home）に統合したので削除。.pl-tabs / .pl-tab 本体は権限設定の
   アプリ切替（内容側のピル）が使うので残す。 */

/* 未確定の月は押せない。**チップ（PC）とドロップダウンの項目（スマホ）で共通の1ルール。**
   高さは他と揃える。

   ■ **主役は塗り。破線は補助。** 線の描き方の違いは目に入りにくい。
     押せるチップが白い面、押せないチップが灰色の面、という**面の差**にする。
     以前は塗りが --page-bg（#FAFAF8）で、白（#FFFFFF）との差が 1.05:1 しかなく、
     実質「塗りの差が無い」状態だった。**#D3D8DB（白面に対して 1.44:1）に沈める。**

   ■ 3つの状態が並んだときの強さの順（選択中 ＞ 押せる ＞ 押せない）
                塗り      文字      枠線       文字と塗りのコントラスト
       選択中   #1F4E5F   #FFFFFF   #1F4E5F    9.4 : 1（濃い面＋白抜きで最も目立つ）
       押せる   #FFFFFF   #1A1A1A   #E8E6E1   16.7 : 1（白い面に黒。読ませる主役）
       押せない #D3D8DB   #4E5459   #8C8C8C    5.3 : 1（灰色の面。読めるが沈む）

   ■ 文字は塗りに合わせて戻した。#6B6B6B → #4F4F4F → #3A3A3A と濃くしてきたのは
     **塗りが無い前提**の調整で、灰色の面が入るなら前提が変わる。濃すぎると
     「押せそう」に見えるので、面の上で読める #4E5459（5.3:1）まで戻す。
     **共有の --ds-text-muted は変えない**（他の画面に一斉に効くため、ここで直に指定する）。

   ■ 破線の枠は残す。色を指定していなかったため --border-default（#E8E6E1）のままで、
     以前の背景に対して 1.2:1、**宣言はされていたが実質見えていなかった。**
     #8C8C8C（灰色の面に対して 2.4:1）にして、補助として成立させる。 */
.pl-chip.is-undetermined {
  color: #4E5459; background: #D3D8DB;
  border-style: dashed; border-color: #8C8C8C; cursor: default;
}

/* PL分析の未確定の列見出しも**同じ塗り・同じ文字**にする。
   **`.pl-matrix__group.is-range`（期計・合計の塗り）より後に置くこと。**
   詳細度が同じ（0,2,0）なので、前に置くと塗りが上書きされて効かない。
   期計・合計の列が未確定になることもあるが、そのときは**未確定の表示を優先する**
   （押せる／押せないの情報のほうが、どの種類の列かより先に要る）。 */
.pl-matrix__group.is-undetermined { color: #4E5459; background: #D3D8DB; }

/* ===== ドロップダウンの中身 =====
   **広い画面では詰める。狭い画面では指で押すので --tap を保つ。** */
.pl-scope__menu, .pl-fy__menu, .pl-months__menu {
  box-shadow: 0 4px 16px rgba(31, 78, 95, 0.10);
  border: 1px solid var(--border-default); border-radius: var(--radius);
  padding: 6px;
}
.pl-scope__item, .pl-fy__item { min-height: var(--tap); padding: 0 10px; }
/* **幅だけでなく pointer: fine も条件にする。**
   幅だけだと iPad の横向き（1024px）が「広い画面」に該当してしまうが、押すのは指。
   範囲セレクタは役員だと33件並ぶので、30px だと隣を誤って押しやすい。
   pointer: fine（マウスなど細かく指せる入力手段）を足して、広いPCだけを対象にする。 */
@media (min-width: 768px) and (pointer: fine) {
  .pl-scope__menu, .pl-fy__menu { padding: 4px; }
  .pl-scope__item, .pl-fy__item { min-height: 30px; font-size: 13px; }
  .pl-scope__heading { margin: 6px 0 2px; }
}

/* ホームとタブ群の区切り（.pl-tabs__sep）は段階4でアプリバーへ移した際に役割ごと無くなった
   （バーではアプリ名がその役を持つ）ので削除（2026-09-06）。 */

/* ===== ピルの高さと当たり判定を分ける =====
   旧アプリのピルは padding:7px 12px・文字12.5px・枠1px で、**実測 31〜36px**。
   44px はそのぶん丸っこく野暮ったく見えるので、**見た目は34px**にする。
   ただし当たり判定まで34pxにすると押しにくく、--tap の決めごとにも反する。
   **疑似要素を上下に5pxずつはみ出させて44pxを確保する**（34+5+5=44）。 */
.pl-pill, .pl-tab, .pl-chip, .pl-scope__toggle, .pl-fy__toggle {
  position: relative; min-height: 34px;
}
.pl-pill::after, .pl-tab::after, .pl-chip::after,
.pl-scope__toggle::after, .pl-fy__toggle::after {
  content: ''; position: absolute; inset: -5px 0;
}
/* ▾ の疑似要素を使っているものは、当たり判定を別の疑似要素に持たせる */
.pl-scope__toggle::after, .pl-fy__toggle::after { content: '▾'; position: static; inset: auto; }
.pl-scope__toggle, .pl-fy__toggle { padding: 0 12px; }
.pl-scope__toggle::before, .pl-fy__toggle::before {
  content: ''; position: absolute; inset: -5px 0;
}
/* **折り返したときに上下の当たり判定が重ならないよう、行間を10px以上あける。** */
.pl-tabs, .pl-periods__wide, .pl-periods__narrow, .pl-months__menu { row-gap: 12px; }

/* ===== ドロップダウンは画面幅からはみ出さない =====
   **押した場所とメニューが出る場所は一致させる。** だから基準はボタン自身に置く。
   はみ出しは基準ではなく「どちら側に寄せるか」で解く。

   ■ **position: fixed は使わない。** 一度使って実機で開かなくなった。
     top を指定しない fixed は「静的位置」に置かれるが、その値は **viewport 座標**
     として解釈されるため、ページを下にスクロールした状態で開くとスクロール量ぶん
     下へずれて画面外に出る。PC は上端で開くので気づかず、スマホは sticky な上部の
     ぶん必ずスクロールした状態で触るので毎回外れた。

   ■ **基準は画面幅で入れ替えない。** 幅で基準が変わると、片方の画面でしか出ない
     不具合を作れる状態が残る。**幅で変えてよいのは大きさ（どこまで広げるか）だけ。**
       範囲 … details.pl-scope 自身
       期   … details.pl-fy 自身
       月   … .pl-periods（チップ列そのもの）
     どれも overflow: hidden を持たない（持つとメニューが切られる）。

   ■ **寄せる側はボタンごとに固定する。並びが変わったら見直すこと。**
     いまの並びを前提にしている。ボタンを足したり左右を入れ替えたら破綻する。
       範囲 … 画面の**左寄り**にあるので left: 0（ボタンの左端から右へ伸ばす）
       期   … 範囲の右にあるので right: 0（ボタンの右端から**左へ**伸ばす）
              こうすれば右端がボタンより外へ出ないので、画面の右外に出ようがない。
       月   … **ボタン基準にしない。** チップ列が折り返すと「月」の位置が左端にも
              右端にも来るため、left でも right でも反対側にはみ出しうる。
              列そのもの（.pl-periods）を基準に左右いっぱいで出す。
              **これは幅による入れ替えではなく、この部品だけの固定の決め方。**
     保険として max-width: calc(100vw - 24px) を全部に残す。

   ■ **この基準要素に z-index を付けないこと。** position: relative だけなら新しい
     重なりの文脈を作らないので、メニューの z-index:30 がページの根元でそのまま
     比べられる。z-index を付けた瞬間にメニューが器の中へ閉じ込められ、
     sticky な表ヘッダー（角6・帯7）に負ける。**実際にそれで一度踏んでいる。** */
.pl-periods { position: relative; }
.pl-months { position: static; }
.pl-scope__menu { left: 0; right: auto; }
.pl-fy__menu { left: auto; right: 0; }
.pl-months__menu { left: 0; right: 0; }

/* ---- 期のメニューだけ、スマホは「範囲・期の行」を基準にする（2026-08-15） ----
   上の「並びが変わったら見直すこと」の見直し。D3 で見出しをボタンにしてから、
   スマホでは期ボタンが行の**左寄り2番目**に移った。ボタン基準の right:0 のままだと
   メニューの右端をボタンの右端に合わせるため**左へ73pxはみ出した**（実機・実測）。
   月（.pl-periods 基準）と同じ考え方で、行を基準に左右いっぱいで出す。

   **基準は main ではなく .pl-headline（範囲＋期の行）にすること。**
   最初 main.pl を基準にしたら、メニューの共通規則 top:100% が
   「main 全体の高さの100%」＝ページ最下部（実測 1960px）を指し、
   「開かない」ように見えた（実際は画面外の下に出ていた）。
   **左右の基準を変えるときは、top:100% の基準も一緒に変わる。**
   そのためスマホの .pl-headline は display:contents をやめ、実体のある
   行の箱（幅いっぱい・relative・z-index なし）にする。並びは
   タブ／範囲＋期／並べ方／チップの4行のまま。
   PC は期ボタンが行の右端のままなので、従来どおりボタン基準の right:0。 */
@media (max-width: 767px) {
  .pl-fy { position: static; }
  .pl-fy__menu { left: 0; right: 0; }
}

/* 大きさだけ幅で変える。狭い画面は高さを画面に収めて、あふれたら中でスクロールさせる。 */
@media (max-width: 767px) {
  .pl-scope__menu, .pl-fy__menu, .pl-months__menu {
    max-height: 70vh; overflow-y: auto;
  }
  .pl-months__menu { min-width: 0; }
}
/* 広い画面でも右端で溢れないよう、幅の上限を画面に収める */
.pl-scope__menu, .pl-fy__menu, .pl-months__menu { max-width: calc(100vw - 24px); }

/* **重なり順をここで明示する。** PL分析の sticky な表ヘッダーは角6・帯7を使う。
   .pl-months__menu は 5 で**負ける**ので、3つとも 30 に揃える。
   （器の .pl-pick / .pl-fy / .pl-periods は z-index を持たない＝新しい重なりの文脈を
   作らないので、この 30 はページの根元でそのまま比べられる） */
.pl-scope__menu, .pl-fy__menu, .pl-months__menu { z-index: 30; }

/* **メニューの中を末端までスクロールしても、後ろのページに送らない。**
   範囲の候補は最大33件でメニュー自体が縦に動く。送ってしまうと window の scroll が
   発火し、pl-menu.js がメニューを閉じてしまう（スクロールチェーン）。 */
.pl-scope__menu, .pl-fy__menu, .pl-months__menu { overscroll-behavior: contain; }

/* 期の項目は2行に分けて、狭い画面でも切れないようにする */
.pl-fy__item, .pl-fy__shown { white-space: normal; }
.pl-fy__item { flex-direction: column; align-items: flex-start; padding: 6px 10px; }
.pl-fy__range { font-size: 11px; color: var(--ds-text-muted); }
.pl-fy[open] > .pl-fy__toggle .pl-fy__range { color: #fff; }

/* ===== 月次一覧（③）＝ .pl-monthly =====
   1つの範囲 × 12ヶ月 × 73科目。**見た目の値の正はここ**
   （行名の列挙の正は src/services/pl/monthly.js、決定の理由は docs/pl-stages.md）。
   **.pl-matrix とクラスは共有しない**——サマリー（.pl-table）とPL分析（.pl-matrix）を
   分けた前例に合わせる。値はPL分析から**写す**が、定義を共有すると片方の直しが
   もう片方の画面に効いてしまう。器の .pl-scroll は**使う**（定義は変えない）。 */

/* 器の幅。表1,836＋箱の枠2＋箱内の縦スクロールバー約16＋container の padding 32。
   PL分析（1120px）と違い、12ヶ月は等価で「ここまで読めば一区切り」の切れ目が
   無いので、中間で止めず表の自然幅で止める（2026-08-14 に仮表示で確認）。 */
.container.pl-monthly-page { max-width: 1890px; }

.pl-monthly {
  border-collapse: separate; border-spacing: 0;
  background: var(--surface); color: var(--ds-text-body);
  font-size: 12.5px; line-height: 1.3; font-variant-numeric: tabular-nums;
}
.pl-monthly th, .pl-monthly td { padding: 2px 4px; border-bottom: 1px solid #C6CCD0; white-space: nowrap; }

/* ---- 2段のヘッダー ----
   作りは .pl-matrix と同じ（1段目=月・2段目=￥%、両方 sticky。2段目の top は
   1段目の高さぶん下げるため固定値 --plm-h1 を持つ）。
   地色 #EDF1F3 と下線 #B9C1C6 は .pl-matrix の**最終値**を写した
   （--ai-head-bg は後段で一段濃く再定義されている。前段の #F7F8F9 を写さないこと）。 */
.pl-monthly { --plm-h1: 30px; }
.pl-monthly thead th {
  position: sticky; z-index: 2; background: #EDF1F3;
  font-weight: var(--fw-bold); text-align: center; border-bottom: 1px solid #B9C1C6;
}
.pl-monthly__cols th { top: 0; height: var(--plm-h1); }
.pl-monthly__units th { top: var(--plm-h1); font-weight: var(--fw-regular); color: var(--ds-text-muted); font-size: 11px; }
/* 計の列見出しは面で沈める（.pl-matrix の期計・合計の塗り #C9DCE8 と同じ値） */
.pl-monthly thead th.is-total { background: #C9DCE8; }

/* ---- 左端の縦帯 ----
   作りは .pl-matrix__band と同じ（rowspan＋縦書き）。
   帯と科目名の列の間の線は **.pl-matrix に対応する宣言が無い**（あちらの帯は濃い塗りで
   境界が色の段差で立つ）ので新設。#AEB4B8 は帯地 #EDF1F3 に 1.84・白に 2.10。 */
.pl-monthly__band {
  position: sticky; left: 0; z-index: 1; width: 34px; min-width: 34px; max-width: 34px;
  padding: 4px 0; text-align: center; vertical-align: middle; background: #EDF1F3;
  box-shadow: inset -1px 0 0 #AEB4B8;
}
/* 帯なしのセル（1行ずつ）。白い行は下線を消して、続いた1本の白い列に見せる */
.pl-monthly .pl-monthly__band--none { background: var(--surface); border-bottom: none; }
.pl-monthly__band-text {
  writing-mode: vertical-rl; text-orientation: upright;
  font-weight: var(--fw-bold); font-size: 12px; letter-spacing: 0.14em; white-space: nowrap;
}
/* 帯の色＝そのブロックの小計行と同じ。帯の文字 #1A1A1A は 13.12〜14.28 */
.pl-monthly__band--green { background: #D9EAD3; }
.pl-monthly__band--blue { background: #CFE2F3; }
.pl-monthly__band--orange { background: #FCE5CD; }

/* ---- 科目名の列 ----
   sticky は帯の右（left: 34px）。右の線 #AEB4B8 は .pl-matrix__label の値を写した。
   padding は**仮表示で承認された見た目＝2px 4px を明示**する
   （.pl-matrix の 5px 10px は詳細度で負けて効いていない死んだ宣言なので写さない）。 */
.pl-monthly .pl-monthly__label {
  position: sticky; left: 34px; z-index: 1; background: var(--surface);
  text-align: left; font-weight: var(--fw-regular);
  min-width: 200px; padding: 2px 4px;
  box-shadow: inset -1px 0 0 #AEB4B8;
}
/* 左上の角の重なり順は .pl-matrix の写し（角6・帯7。月の見出し z-index 2 より前に出す） */
.pl-monthly thead .pl-monthly__band, .pl-monthly thead .pl-monthly__label { top: 0; background: #EDF1F3; }
.pl-monthly thead .pl-monthly__label { z-index: 6; }
.pl-monthly thead .pl-monthly__band { z-index: 7; }

/* ---- 値のセル ----
   幅は .pl-matrix と同じ見積もり方（等幅数字。月11文字≈88px・計13文字≈104px・%4文字≈34px）。
   縦線は .pl-matrix の実機調整値：¥|% #DDE2E5（白面1.31）＜ 月|月 #B9C1C6（1.83）。 */
.pl-monthly__yen { text-align: right; min-width: 88px; width: 88px; font-size: 12px; border-right: 1px solid #DDE2E5; }
.pl-monthly__pct { text-align: right; min-width: 34px; width: 34px; font-size: 11px; color: var(--ds-text-muted); border-right: 1px solid #B9C1C6; }
.pl-monthly__unit { border-right: 1px solid #DDE2E5; }
.pl-monthly__unit--pct, .pl-monthly__group { border-right: 1px solid #B9C1C6; }

/* ---- 右端の「計」（¥+%）----
   sticky right で常時見せる（2026-08-14 加藤さん採用）。地を #F3F6F8 に沈め、
   左に #AEB4B8 の線を入れて、スクロールする月と地続きに見えないようにする。 */
.pl-monthly .pl-monthly__yen.is-total {
  min-width: 104px; width: 104px;
  position: sticky; right: 34px; z-index: 1; background: #F3F6F8;
  box-shadow: inset 1px 0 0 #AEB4B8;
}
.pl-monthly .pl-monthly__pct.is-total { position: sticky; right: 0; z-index: 1; background: #F3F6F8; }
.pl-monthly thead .pl-monthly__group.is-total { position: sticky; right: 0; z-index: 3; }
.pl-monthly thead .pl-monthly__unit.is-total { position: sticky; right: 34px; z-index: 3; background: #C9DCE8; }
.pl-monthly thead .pl-monthly__unit--pct.is-total { right: 0; }

/* ---- 行の色（シート寄せ）----
   列挙（どの行に付くか）は monthly.js の ROW_COLORS。文字 #1A1A1A との
   コントラストは 11.89〜15.60（計算方法は docs/pl-stages.md）。
   帯なしのセル（__band--none）まで塗るのは、色付きで帯の無い行を
   左端まで繋げるため（2026-08-14 加藤さん指定）。 */
.pl-monthly tr.is-c-green > .pl-monthly__label, .pl-monthly tr.is-c-green > .pl-monthly__yen, .pl-monthly tr.is-c-green > .pl-monthly__pct, .pl-monthly tr.is-c-green > .pl-monthly__band--none { background: #D9EAD3; }
.pl-monthly tr.is-c-blue > .pl-monthly__label, .pl-monthly tr.is-c-blue > .pl-monthly__yen, .pl-monthly tr.is-c-blue > .pl-monthly__pct, .pl-monthly tr.is-c-blue > .pl-monthly__band--none { background: #CFE2F3; }
.pl-monthly tr.is-c-cream > .pl-monthly__label, .pl-monthly tr.is-c-cream > .pl-monthly__yen, .pl-monthly tr.is-c-cream > .pl-monthly__pct, .pl-monthly tr.is-c-cream > .pl-monthly__band--none { background: #FFF2CC; }
.pl-monthly tr.is-c-orange > .pl-monthly__label, .pl-monthly tr.is-c-orange > .pl-monthly__yen, .pl-monthly tr.is-c-orange > .pl-monthly__pct, .pl-monthly tr.is-c-orange > .pl-monthly__band--none { background: #FCE5CD; }
.pl-monthly tr.is-c-purple > .pl-monthly__label, .pl-monthly tr.is-c-purple > .pl-monthly__yen, .pl-monthly tr.is-c-purple > .pl-monthly__pct, .pl-monthly tr.is-c-purple > .pl-monthly__band--none { background: #D9D2E9; }
.pl-monthly tr.is-c-gray > .pl-monthly__label, .pl-monthly tr.is-c-gray > .pl-monthly__yen, .pl-monthly tr.is-c-gray > .pl-monthly__pct, .pl-monthly tr.is-c-gray > .pl-monthly__band--none { background: #EFEFEF; }
.pl-monthly tr.is-c-pink > .pl-monthly__label, .pl-monthly tr.is-c-pink > .pl-monthly__yen, .pl-monthly tr.is-c-pink > .pl-monthly__pct, .pl-monthly tr.is-c-pink > .pl-monthly__band--none { background: #F4CCCC; }
.pl-monthly tr.is-c-lime > .pl-monthly__label, .pl-monthly tr.is-c-lime > .pl-monthly__yen, .pl-monthly tr.is-c-lime > .pl-monthly__pct, .pl-monthly tr.is-c-lime > .pl-monthly__band--none { background: #E4EFC9; }

/* 色付き行の線と文字。罫線 #C6CCD0 はパステル上 1.11〜1.29 で消えるため1段濃くする：
   横罫と¥|% は #AEB4B8（1.43〜1.88）、月|月 は #8A9297（2.16〜2.84）。強弱の順は保つ。
   %の文字も #6B6B6B が紫・ピンク上 3.64 と 4.5:1 を割るため本文色に上げる。
   帯なしのセルは縦線（inset）を消して左端まで繋げる（科目名の文字位置は動かさない）。 */
.pl-monthly tr[class*="is-c-"] > .pl-monthly__label, .pl-monthly tr[class*="is-c-"] > .pl-monthly__yen, .pl-monthly tr[class*="is-c-"] > .pl-monthly__pct { font-weight: var(--fw-bold); border-bottom-color: #AEB4B8; }
.pl-monthly tr[class*="is-c-"] > .pl-monthly__yen { border-right-color: #AEB4B8; }
.pl-monthly tr[class*="is-c-"] > .pl-monthly__pct { border-right-color: #8A9297; color: var(--ds-text-body); }
.pl-monthly tr[class*="is-c-"] > .pl-monthly__band--none { box-shadow: none; border-bottom: 1px solid #AEB4B8; }

/* ---- 指定行の上下の線 ----
   値は .pl-matrix の小計の**最終版**（1px solid #9AA4AB）の写し。あちらの 2px の宣言は
   詳細度で負けて効いていない方なので写さない。「上の行の下辺」への正規化は monthly.js。
   **色付き行の border-bottom-color の上書きより後に置くこと**——詳細度が同じ (0,3,0) なので、
   前に置くとこの線が負けて #AEB4B8 のままになる。 */
.pl-monthly tr.is-thick-below > .pl-monthly__label, .pl-monthly tr.is-thick-below > .pl-monthly__yen, .pl-monthly tr.is-thick-below > .pl-monthly__pct, .pl-monthly tr.is-thick-below > .pl-monthly__band--none { border-bottom: 1px solid #9AA4AB; }

/* ---- 未確定の月・スナップショットに無い月の列見出し ----
   **同じ塗りにする**（.pl-matrix__group.is-undetermined＝チップの未確定と同じ値の写し）。
   無い月は必ず未確定でもあるので印は1種類でよい。判定は monthly.js が has / determined で
   別々に持つ（2026-08-14 加藤さん）。
   **.is-total の塗り（#C9DCE8）より後に置くこと**——詳細度が同じなので、
   前に置くと計の塗りに負ける（.pl-matrix の is-undetermined と同じ順序依存）。 */
.pl-monthly thead th.is-undetermined { color: #4E5459; background: #D3D8DB; font-weight: var(--fw-regular); }

/* ---- 狭い画面（527px 以下）----
   **前後の月が並んで見えることを優先する**（2026-08-14 加藤さん決定）。
   計の右固定を外し、帯を隠し、科目名を 116px（.pl-matrix の --w-label と同値）＋ellipsis に。
   閾値の算出式は docs/pl-stages.md（左234＋右138＋月1組122＋余白32＋外枠2＝528）。
   thead 側は right だけ外す（position を外すと上方向の sticky まで死ぬ）。 */
@media (max-width: 527px) {
  .pl-monthly .pl-monthly__yen.is-total, .pl-monthly .pl-monthly__pct.is-total { position: static; box-shadow: none; }
  .pl-monthly thead .pl-monthly__group.is-total, .pl-monthly thead .pl-monthly__unit.is-total, .pl-monthly thead .pl-monthly__unit--pct.is-total { right: auto; }
  .pl-monthly__band { display: none; }
  .pl-monthly .pl-monthly__label {
    left: 0; min-width: 116px; width: 116px; max-width: 116px;
    overflow: hidden; text-overflow: ellipsis;
  }
}

/* ===== 店舗一覧（④）＝ .pl-stores =====
   1つの期間 × 列（範囲の割り方）× 73科目。**見た目は .pl-monthly（③）の写し**で、
   違いは「計が右固定」ではなく**「合計が左固定（科目名の隣）」**なことだけ。
   値はすべて .pl-monthly の最終値と同一（③はファイル末尾の節で後から上書きする
   宣言が無いことを確認して写した）。**クラスは共有しない**——③の画面を触らずに
   ④だけ直せるように（.pl-table / .pl-matrix を分けた前例と同じ）。 */

/* 並べ方（店舗別／業態別）のピルの置き場。見た目はチップ（.pl-chip）を共有。
   **2組出して CSS で切り替える**（pl-periods の wide/narrow と同じ）：
   --pc＝headline の外（従来の独立した行）、--sp＝headline の中（スマホで
   範囲・期と同じ行＝上部3行）。1つを CSS 補正で両対応させる案は、
   fit-content の幅計算に headline 内の並べ方が算入されて PC の中央位置が
   4pxずれたためやめた（2026-08-15 実測）。 */
.pl-by { margin: 8px 0 0; display: flex; flex-wrap: wrap; gap: 8px; }
.pl-by--sp { display: none; }
@media (max-width: 767px) {
  .pl-by--pc { display: none; }
  .pl-by--sp { display: flex; }
}

/* 器。**器ごと中央に寄せ、幅は表に合わせて縮む**（2026-08-15 D1改）。
   最初の直し（表の箱だけ margin auto）は上部が左に残り、表だけ浮いて見えた（実機）。
   上部と表を同じ器に入れ、器を中央へ・表は器の左端に揃える。
   - 上限 1890px は .pl-monthly-page の**実効値の写し**（computed で確認）
   - **下限 936px ＝ 期間チップ15個（累計・前期計・後期計＋12ヶ月）が1行に並ぶ
     最小幅の実測 903px（max-content・gap 6px 込み）＋ container の左右 padding 32px
     ＋端数1px**。器を表の幅まで縮めると狭い範囲でチップが折り返し、
     上部の高さが変わって --pl-top の前提が崩れるため
   - スマホは従来どおり画面幅いっぱい（fit-content と下限は 768px 以上だけ） */
.container.pl-stores-page { max-width: 1890px; }
@media (min-width: 768px) {
  .container.pl-stores-page { width: fit-content; min-width: 936px; }
}

/* 上部の高さ（--pl-top）。店舗一覧は並べ方＋期間チップのぶん /table・/monthly より高い
   （PC は並べ方が独立した行、スマホは範囲・期と同じ行）。
   測り方は .pl の節の手順と同じ。**2026-09-06 の実測**（アプリバーに替えた後）：
     箱の上端＝スマホ(375px) 210px ／ PC(1280px) 206px → 225／221
   履歴：2026-08-15 の記録 273／235 → 290／250。**PC の 235 は段階4の棚卸し
   （2026-09-06）で実測 273 とずれていた**（並べ方の行が独立した後に測り直して
   いなかったと思われる）。箱の下端が画面を 23px 越えていたが、sticky は箱の中で
   効き続けるので誰も気づかなかった＝「壊れても音が出ない」実例。
   staleness などの条件付きの帯が出るとさらに高くなるのは
   他の画面と同じ前提（min-height: 320px が下支え）。 */
.pl-stores-page { --pl-top: 225px; }
@media (min-width: 768px) { .pl-stores-page { --pl-top: 221px; } }
/* 表の箱は器の左端に揃える（中央寄せしない）。器より広い表は箱の中でスクロール */
.pl-stores-page .pl-scroll { width: fit-content; max-width: 100%; }

.pl-stores {
  border-collapse: separate; border-spacing: 0;
  background: var(--surface); color: var(--ds-text-body);
  font-size: 12.5px; line-height: 1.3; font-variant-numeric: tabular-nums;
}
.pl-stores th, .pl-stores td { padding: 2px 4px; border-bottom: 1px solid #C6CCD0; white-space: nowrap; }

/* 2段のヘッダー（1段目=列名・2段目=￥%、両方 sticky）。地色・下線は③と同じ最終値 */
.pl-stores { --pls-h1: 30px; }
.pl-stores thead th {
  position: sticky; z-index: 2; background: #EDF1F3;
  font-weight: var(--fw-bold); text-align: center; border-bottom: 1px solid #B9C1C6;
}
.pl-stores__cols th { top: 0; height: var(--pls-h1); }
.pl-stores__units th { top: var(--pls-h1); font-weight: var(--fw-regular); color: var(--ds-text-muted); font-size: 11px; }
/* 閉店・FC移行の列見出しのバッジは共有の .pl-badge を使う（定義は変えない） */

/* 左端の縦帯（③と同じ作り・同じ値） */
.pl-stores__band {
  position: sticky; left: 0; z-index: 1; width: 34px; min-width: 34px; max-width: 34px;
  padding: 4px 0; text-align: center; vertical-align: middle; background: #EDF1F3;
  box-shadow: inset -1px 0 0 #AEB4B8;
}
.pl-stores .pl-stores__band--none { background: var(--surface); border-bottom: none; }
.pl-stores__band-text {
  writing-mode: vertical-rl; text-orientation: upright;
  font-weight: var(--fw-bold); font-size: 12px; letter-spacing: 0.14em; white-space: nowrap;
}
.pl-stores__band--green { background: #D9EAD3; }
.pl-stores__band--blue { background: #CFE2F3; }
.pl-stores__band--orange { background: #FCE5CD; }

/* 科目名の列（③と同じ値） */
.pl-stores .pl-stores__label {
  position: sticky; left: 34px; z-index: 1; background: var(--surface);
  text-align: left; font-weight: var(--fw-regular);
  min-width: 200px; padding: 2px 4px;
  box-shadow: inset -1px 0 0 #AEB4B8;
}
.pl-stores thead .pl-stores__band, .pl-stores thead .pl-stores__label { top: 0; background: #EDF1F3; }
.pl-stores thead .pl-stores__label { z-index: 6; }
.pl-stores thead .pl-stores__band { z-index: 7; }

/* 値のセル（③と同じ値・同じ縦線） */
.pl-stores__yen { text-align: right; min-width: 88px; width: 88px; font-size: 12px; border-right: 1px solid #DDE2E5; }
.pl-stores__pct { text-align: right; min-width: 34px; width: 34px; font-size: 11px; color: var(--ds-text-muted); border-right: 1px solid #B9C1C6; }
.pl-stores__unit { border-right: 1px solid #DDE2E5; }
.pl-stores__unit--pct, .pl-stores__group { border-right: 1px solid #B9C1C6; }

/* ---- 合計の列（範囲の合計）----
   ③の「計」と同じ見た目（地 #F3F6F8・幅104）だが、**右固定ではなく左固定**
   （科目名の隣。帯34＋科目名200 の右＝left 234 / 338）。
   区切りの線は右端（inset -1px）に置く——スクロールする店の列と地続きに見せない。 */
.pl-stores .pl-stores__yen.is-total {
  min-width: 104px; width: 104px;
  position: sticky; left: 234px; z-index: 1; background: #F3F6F8;
}
.pl-stores .pl-stores__pct.is-total {
  position: sticky; left: 338px; z-index: 1; background: #F3F6F8;
  box-shadow: inset -1px 0 0 #AEB4B8;
}
.pl-stores thead th.is-total { background: #C9DCE8; }
/* 見出しの重なり順は**月2 ＜ 合計5 ＜ 科目6 ＜ 帯7** と明示する。
   合計を科目と同じ6にしていたら、スマホ（合計の左固定を外す媒体条件）で
   横スクロール時に合計見出しが科目見出しの**上を通った**（実測で再現。
   同値だと DOM で後の合計が勝つ）。.pl-matrix の「角6・帯7」と同じ穴の④版。 */
.pl-stores thead .pl-stores__group.is-total { position: sticky; left: 234px; z-index: 5; }
.pl-stores thead .pl-stores__unit.is-total { position: sticky; left: 234px; z-index: 5; }
.pl-stores thead .pl-stores__unit--pct.is-total { left: 338px; box-shadow: inset -1px 0 0 #AEB4B8; }

/* 行の色（③と同じ値。列挙は sheetRows.js） */
.pl-stores tr.is-c-green > .pl-stores__label, .pl-stores tr.is-c-green > .pl-stores__yen, .pl-stores tr.is-c-green > .pl-stores__pct, .pl-stores tr.is-c-green > .pl-stores__band--none { background: #D9EAD3; }
.pl-stores tr.is-c-blue > .pl-stores__label, .pl-stores tr.is-c-blue > .pl-stores__yen, .pl-stores tr.is-c-blue > .pl-stores__pct, .pl-stores tr.is-c-blue > .pl-stores__band--none { background: #CFE2F3; }
.pl-stores tr.is-c-cream > .pl-stores__label, .pl-stores tr.is-c-cream > .pl-stores__yen, .pl-stores tr.is-c-cream > .pl-stores__pct, .pl-stores tr.is-c-cream > .pl-stores__band--none { background: #FFF2CC; }
.pl-stores tr.is-c-orange > .pl-stores__label, .pl-stores tr.is-c-orange > .pl-stores__yen, .pl-stores tr.is-c-orange > .pl-stores__pct, .pl-stores tr.is-c-orange > .pl-stores__band--none { background: #FCE5CD; }
.pl-stores tr.is-c-purple > .pl-stores__label, .pl-stores tr.is-c-purple > .pl-stores__yen, .pl-stores tr.is-c-purple > .pl-stores__pct, .pl-stores tr.is-c-purple > .pl-stores__band--none { background: #D9D2E9; }
.pl-stores tr.is-c-gray > .pl-stores__label, .pl-stores tr.is-c-gray > .pl-stores__yen, .pl-stores tr.is-c-gray > .pl-stores__pct, .pl-stores tr.is-c-gray > .pl-stores__band--none { background: #EFEFEF; }
.pl-stores tr.is-c-pink > .pl-stores__label, .pl-stores tr.is-c-pink > .pl-stores__yen, .pl-stores tr.is-c-pink > .pl-stores__pct, .pl-stores tr.is-c-pink > .pl-stores__band--none { background: #F4CCCC; }
.pl-stores tr.is-c-lime > .pl-stores__label, .pl-stores tr.is-c-lime > .pl-stores__yen, .pl-stores tr.is-c-lime > .pl-stores__pct, .pl-stores tr.is-c-lime > .pl-stores__band--none { background: #E4EFC9; }

/* 色付き行の線と文字（③と同じ値・同じ理由） */
.pl-stores tr[class*="is-c-"] > .pl-stores__label, .pl-stores tr[class*="is-c-"] > .pl-stores__yen, .pl-stores tr[class*="is-c-"] > .pl-stores__pct { font-weight: var(--fw-bold); border-bottom-color: #AEB4B8; }
.pl-stores tr[class*="is-c-"] > .pl-stores__yen { border-right-color: #AEB4B8; }
.pl-stores tr[class*="is-c-"] > .pl-stores__pct { border-right-color: #8A9297; color: var(--ds-text-body); }
.pl-stores tr[class*="is-c-"] > .pl-stores__band--none { box-shadow: none; border-bottom: 1px solid #AEB4B8; }

/* 指定行の上下の線（③と同じ値。**色付き行の上書きより後に置く**——同詳細度の後勝ち） */
.pl-stores tr.is-thick-below > .pl-stores__label, .pl-stores tr.is-thick-below > .pl-stores__yen, .pl-stores tr.is-thick-below > .pl-stores__pct, .pl-stores tr.is-thick-below > .pl-stores__band--none { border-bottom: 1px solid #9AA4AB; }

/* ---- 狭い画面 ----
   ③と同じ落とし方（帯を隠す・科目名116px＋ellipsis）に加えて、**合計の左固定を外す**。
   固定すると 375px で店の列がほぼ見えなくなる（341−116−138＝87px）。
   外しても列順の先頭なので、スクロール位置0では科目名の隣に見える。
   閾値＝通常レイアウトで店1列見える最小：
     左固定372（帯34＋科目名200＋合計138）＋店1列122＋container余白32＋外枠2 ＝ 528px
   から、④も 528px 未満で切り替える（③と同値になるのは偶然）。 */
@media (max-width: 527px) {
  .pl-stores .pl-stores__yen.is-total, .pl-stores .pl-stores__pct.is-total { position: static; }
  .pl-stores thead .pl-stores__group.is-total, .pl-stores thead .pl-stores__unit.is-total, .pl-stores thead .pl-stores__unit--pct.is-total { position: sticky; left: auto; }
  .pl-stores__band { display: none; }
  .pl-stores .pl-stores__label {
    left: 0; min-width: 116px; width: 116px; max-width: 116px;
    overflow: hidden; text-overflow: ellipsis;
  }
}

/* ===== スマホの上部を4行に詰める（2026-08-15 D3） =====
   段階3の「別レイアウトを許すのは期間チップだけ」を**意図的に破る**
   （タブが2つだった時代の規則で、5つになって前提が変わった。経緯は docs）。
   **PC は変えない**——スマホ専用の出し分けだけを足す。 */

/* タブのドロップダウン（.pl-tabs__narrow / .pl-tabs-dd__*）は 2026-08-15 に
   実装した同日、実機確認で**取り消した**：画面の切替が2タップになり、
   範囲・期のボタンと見分けが付かなかった。代わりに画面名を短縮（PL分析表→PL分析）し、
   スマホはピルの余白を詰めて1行に収める（下のスマホ節）。 */

/* トグルの中の文言の出し分け。PC＝「範囲を変更」「期を変更」／スマホ＝短い名前 */
@media (min-width: 768px) {
  .pl-scope__toggle-sp, .pl-fy__toggle-sp { display: none; }
}
@media (max-width: 767px) {
  /* タブ1行＋範囲▾＋期▾＋並べ方＋期間チップの並び。
     タブは全ピルを1行に出す（1タップで画面を移れることを最優先）。
     そのためにピルの左右の余白を詰める。**タップ判定の44px（min-height）は維持**——
     詰めるのは横の padding だけで、高さには触らない */
  .pl-tabs .pl-pill { padding-left: 8px; padding-right: 8px; }
  /* 範囲＋期の行。**実体のある箱にする**（display:contents だと箱が無く、
     期メニューの基準になれない。経緯は「期のメニューだけ〜」の節）。
     幅いっぱいの block なので、並べ方（.pl-by）は自然に次の行へ落ちる */
  .pl-headline { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; position: relative; margin: 0 0 8px; }
  .pl-headline .pl-pick { margin: 0; }
  /* 並べ方も同じ行に（上部3行化：タブ／範囲＋期＋並べ方／期間チップ） */
  .pl-headline .pl-by { margin: 0; }
  /* 2行目の縦ずれ対策（E2改）：器は inline-flex のまま、**高さ34pxと中央揃えを
     明示**する。baseline 揃えのままだと器の高さが 38/42/34px と不揃いになり
     最大4pxずれた（実測）。
     **display: contents でピルを直接並べる形は取らない**——.pl-by の flex を消すと
     店舗別と業態別の間が「gap 8（空白なし）」から「margin 8＋改行の空白約4px」に
     変わり、行の必要幅が 398→402px に増えて実機（幅430）で業態別が折り返した。
     当たり判定の 44px は既存の疑似要素のまま（見た目の高さの話）。 */
  .pl-pick, .pl-by { align-items: center; height: 34px; }
  .pl-pick { display: inline-flex; vertical-align: middle; margin: 0 8px 8px 0; }
  /* 見出しを消して範囲名をボタンへ。候補が1つ以下（ボタンが無い人）は見出しを残す */
  .pl-scope__current.has-menu { display: none; }
  .pl-scope__toggle-pc, .pl-fy__toggle-pc { display: none; }
  /* 期の年月は PC だけ（スマホは「今期（25期）」まで） */
  .pl-fy__shown { display: none; }
}

/* ============================================================
   システム設定（/admin。段階⑤ 第3段(a)）
   共有クラス（container / page-title / btn / notice）は触らず、
   画面専用の admin-* だけを足す。値は既存から写す：
   罫線 --border-default / 補足文 13px --ds-text-muted（.field__hint と同値）/
   面 --surface-muted / 当たり判定 --tap（44px。チェックのセルにも維持する） */

/* ---- 入口のメニュー（app-card の並びと同じ縦積み）---- */
.admin-menu { display: grid; gap: 12px; }
.admin-menu__item {
  display: flex; flex-direction: column; gap: 4px;
  padding: 16px; border: 1px solid var(--border-default); border-radius: 12px;
  background: #fff; text-decoration: none; color: var(--ds-text-body);
  min-height: var(--tap);
}
.admin-menu__item:hover { border-color: var(--ds-text-muted); }
.admin-menu__name { font-weight: 700; }
.admin-menu__desc { font-size: 13px; color: var(--ds-text-muted); }

/* ---- ホームの並び（/admin/apps の下。2026-09-22 Q-NI）。この画面だけのクラス（home-layout__） ---- */
.home-layout { margin-top: var(--space-6, 32px); }
.home-layout__summary {
  margin: 0 0 12px; padding: 10px 12px; border-radius: var(--radius);
  background: var(--surface-muted); font-size: 14px; color: var(--ds-text-heading);
}
.home-layout__sub { margin: 20px 0 8px; font-size: 15px; font-weight: var(--fw-bold); }
.home-layout__labels-form { display: none; } /* 名前の欄は枠の中（form 属性でこのフォームに入る）。フォーム自体は空 */
.home-layout__labels-save { margin-top: 12px; }
/* 画面1〜5の枠（2026-09-22 作り直し）。名前が空の枠（is-locked）は破線＋斜めの縞＝アプリを置けないと分かる見た目 */
.home-layout__frames { display: flex; flex-direction: column; gap: 12px; }
.hl-frame { border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.hl-frame.is-locked {
  border-style: dashed;
  background: repeating-linear-gradient(135deg, var(--surface) 0 8px, var(--surface-muted) 8px 16px);
}
.hl-frame__head {
  display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 12px;
  padding: 10px 12px; border-bottom: 1px solid var(--border-subtle);
}
.hl-frame__title { margin: 0; align-self: center; font-size: 14px; font-weight: var(--fw-bold); min-width: 6.5em; }
.hl-frame__name { display: flex; flex-direction: column; gap: 2px; margin: 0; }
.hl-frame__name-label { font-size: 11px; color: var(--ds-text-muted); }
.hl-frame__input { width: 9em; min-height: var(--tap); }
.hl-frame__status { align-self: center; font-size: 12px; color: var(--ds-text-muted); }
.hl-frame__status.is-ok { color: #0A7A3A; font-weight: var(--fw-bold); } /* 完了＝状態の濃い緑 */
.hl-frame__status.is-error { color: var(--state-alert); font-weight: var(--fw-bold); }
.hl-list { margin: 0; padding: 0; list-style: none; }
.hl-row {
  position: relative; display: flex; align-items: center; gap: 10px 12px; flex-wrap: wrap;
  min-height: var(--tap); padding: 8px 12px; box-sizing: border-box;
  border-bottom: 1px solid var(--border-subtle); background: var(--surface);
}
.hl-row:last-child { border-bottom: 0; }
.hl-row__name { flex: 1 1 140px; min-width: 0; font-weight: var(--fw-bold); }
.hl-frame__empty { margin: 0; padding: 12px; font-size: 13px; color: var(--ds-text-muted); }
.hl-frame.has-rows .hl-frame__empty { display: none; }
/* JS がある（is-js）ときだけ：つまみで動かす。移す／上へ・下へ／保存するのボタンと、JS なしの案内は隠す */
.home-layout.is-js .home-layout__place,
.home-layout.is-js .home-layout__move,
.home-layout.is-js .home-layout__labels-save,
.home-layout.is-js .home-layout__how-nojs { display: none; }
.home-layout:not(.is-js) .home-layout__how-js { display: none; }
/* 行の下の線（1px）のぶん高くして、つまみ（行の高さいっぱい）を 44px にする（43px だった。実測） */
.home-layout.is-js .hl-row { padding-left: 44px; min-height: calc(var(--tap) + 1px); }
/* つまみ（≡）。見た目と当たり判定はレシピの並べ替え（.rcp-drag）と同じ値：幅 44px・行の高さいっぱい・
   **つまみにだけ** touch-action: none（行のほかの場所は指で縦にスクロールできる＝紛れない） */
.hl-drag {
  position: absolute; left: 0; top: 0; bottom: 0; width: 44px; padding: 0; border: 0; background: none;
  display: flex; align-items: center; justify-content: center;
  color: var(--ds-text-muted); font-size: 16px; font-family: inherit;
  cursor: grab; touch-action: none; user-select: none; -webkit-user-select: none;
}
.hl-drag:focus-visible { outline: 2px solid #1F4E5F; outline-offset: -3px; border-radius: 6px; }
/* 持ち上げ中：レシピと同じ（面は --surface-muted・影だけで浮かせる。行はポインタに追従＝transform） */
.hl-row.is-dragging {
  background: var(--surface-muted); box-shadow: 0 4px 18px rgba(0, 0, 0, .18);
  z-index: 5; will-change: transform; pointer-events: none;
}
.hl-row.is-dragging .hl-drag { cursor: grabbing; }
/* 入る場所の線（藍）。置けない枠の上では線を出さず、枠を赤の破線で囲む */
.hl-marker { height: 3px; margin: -2px 12px -1px; border-radius: 2px; background: #1F4E5F; list-style: none; }
.hl-frame.is-over { box-shadow: 0 0 0 2px #1F4E5F; }
.hl-frame.is-over-locked { box-shadow: 0 0 0 2px var(--state-alert); cursor: not-allowed; }
.home-layout__frames.is-saving .hl-drag { pointer-events: none; opacity: .4; }
.home-layout__place, .home-layout__move { display: flex; align-items: center; gap: 6px; margin: 0; }
.home-layout__select { width: auto; min-width: 150px; min-height: var(--tap); }
/* 一番上の「上へ」・一番下の「下へ」は押せない（disabled）。押せないと分かる見た目に（共有の .btn は変えない） */
.home-layout__move .btn:disabled { opacity: .45; cursor: not-allowed; }
.home-layout__events { margin: 0; padding-left: 1.2em; font-size: 13px; color: var(--ds-text-muted); }

/* ---- アプリの公開／非公開（/admin/apps。2026-09-08）---- */
.admin-apps__list { border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.admin-apps__row {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding: 10px 12px; border-bottom: 1px solid var(--border-subtle);
}
.admin-apps__row:last-child { border-bottom: 0; }
.admin-apps__main { flex: 1 1 200px; min-width: 0; display: flex; align-items: center; gap: 8px; }
.admin-apps__name { font-weight: var(--fw-bold); }
.admin-apps__state {
  display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 12px;
  color: var(--ds-text-muted); border: 1px solid var(--border-default); white-space: nowrap;
}
.admin-apps__state.is-public { color: #0A7A3A; border-color: #0A7A3A; } /* 公開＝状態の濃い緑 */
.admin-apps__state.is-hidden { border-style: dashed; color: var(--ds-text-heading); }
.admin-apps__meta { flex: 1 1 160px; font-size: 12px; color: var(--ds-text-muted); white-space: nowrap; }
.admin-apps__form { flex: none; margin: 0; }
/* 作りかけで公開にできない行（採用管理。2026-09-17）。ボタンの代わりに置く理由の1行。押せる見た目にしない */
.admin-apps__locked { flex: none; font-size: 12px; color: var(--ds-text-muted); white-space: nowrap; }

/* ---- アルバイト系の招待のスイッチ（/admin/invite-gate。第M2段・2026-09-18）----
   行の並びは /admin/apps の部品を借りる。状態の札だけ画面専用（開＝状態の濃い緑／閉＝点線）。
   残り時間の文は長いので、この画面に限り折り返させる（.admin-apps__meta は nowrap） */
.admin-gate .admin-apps__meta { white-space: normal; }
.admin-gate__state {
  display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 12px;
  border: 1px solid var(--border-default); white-space: nowrap;
}
.admin-gate__state.is-open { color: #0A7A3A; border-color: #0A7A3A; }
.admin-gate__state.is-closed { border-style: dashed; color: var(--ds-text-heading); }
.admin-gate__events { list-style: none; margin: 0; padding: 0; font-size: 13px; }
.admin-gate__event { padding: 8px 0; border-bottom: 1px solid var(--border-subtle); }
.admin-gate__event:last-child { border-bottom: 0; }

/* ---- freeeサインとの接続（/admin/freee-sign・第F1段）---- */
.freee-sign__state { display: inline-block; margin: 0 0 12px; padding: 2px 10px; border-radius: 999px; border: 1px solid var(--border-default); font-weight: var(--fw-bold); }
.freee-sign__state.is-connected { color: var(--state-done); border-color: var(--state-done); }
.freee-sign__state.is-broken { color: var(--state-alert); border-color: var(--state-alert); }
.freee-sign__state.is-never, .freee-sign__state.is-disconnected { border-style: dashed; }
.freee-sign__list { margin: 0 0 12px; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.freee-sign__row { display: grid; grid-template-columns: 11em 1fr; gap: 8px; padding: 8px 12px; border-bottom: 1px solid var(--border-subtle); }
.freee-sign__row:last-child { border-bottom: 0; }
.freee-sign__row dt { font-size: var(--fs-label); color: var(--ds-text-muted); }
.freee-sign__row dd { margin: 0; overflow-wrap: anywhere; }
.freee-sign__row dd.is-on { color: var(--state-alert); font-weight: var(--fw-bold); }
.freee-sign__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.freee-sign__warn ul { margin: 6px 0 0; padding-left: 1.2em; }
.freee-sign__template { margin: 0 0 16px; }
.freee-sign__template-title { margin: 0 0 2px; font-size: var(--fs-body); }
.freee-sign__template-id { margin: 0 0 6px; font-size: 13px; color: var(--ds-text-muted); }
/* 項目の表は横に長いので、この枠の中だけ横に流す（ページは横に流さない） */
.freee-sign__table-wrap { overflow-x: auto; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.freee-sign__items { width: 100%; border-collapse: collapse; font-size: 13px; white-space: nowrap; }
.freee-sign__items th, .freee-sign__items td { padding: 6px 10px; border-bottom: 1px solid var(--border-subtle); text-align: left; }
.freee-sign__items th { color: var(--ds-text-muted); font-weight: var(--fw-bold); }
/* 署名者側（本人が入力する）の行は、地の色で見分ける＝氏名の欄を探しやすく */
.freee-sign__items tr.is-signer td { background: var(--state-progress-tint); }
.freee-sign__events { list-style: none; margin: 0; padding: 0; font-size: 13px; }
.freee-sign__events li { padding: 8px 0; border-bottom: 1px solid var(--border-subtle); }
.freee-sign__event-at { color: var(--ds-text-muted); }
/* ---- 本人が書類を出す画面（/documents・第8a段・2026-09-20 加藤さん承認）---- */
.hr-docs__lead { margin: 0 0 16px; font-size: 14px; line-height: var(--lh-normal); }
.hr-docs__none { margin: 0; color: var(--ds-text-muted); }
.hr-docs__item { margin: 0 0 24px; }
/* 銀行口座の「提出できる日」（第8b段）。fieldset の既定の枠（2px groove）は使わない */
.hr-docs__plan { margin: 0 0 12px; }
.hr-docs__plan-choice { margin: 0; padding: 0; border: 0; min-inline-size: 0; display: grid; gap: 8px; }
.hr-docs__plan-choice legend { padding: 0; margin-bottom: 8px; }
/* 最初の問い「◯◯銀行の口座を持っていますか？」（2026-09-22）と、2つの答え（押せる範囲は 44px 以上の枠） */
.hr-docs__ask { font-size: 16px; font-weight: var(--fw-bold); color: var(--ds-text-heading); line-height: var(--lh-normal); }
.hr-docs__answer {
  display: flex; align-items: center; gap: 10px; min-height: var(--tap); padding: 10px 14px;
  border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface);
  font-size: 15px; cursor: pointer;
}
.hr-docs__answer input { width: 20px; height: 20px; margin: 0; flex: none; accent-color: #1F4E5F; }
.hr-docs__answer:has(input:checked) { border-color: #1F4E5F; box-shadow: inset 0 0 0 1px #1F4E5F; font-weight: var(--fw-bold); }
.hr-docs__answer:has(input:focus-visible) { outline: 2px solid #1F4E5F; outline-offset: 2px; }
/* 答えで出し分ける（**radio の :checked を :has で読む＝JS なし**）。どちらも選んでいないときは問いだけ。
   :has に対応していないブラウザ（古いもの）は出し分けず全部出す＝今までの形（下の @supports） */
.hr-docs__when-yes, .hr-docs__when-no { display: none; }
.hr-docs__item:has(.hr-docs__has[value="yes"]:checked) .hr-docs__when-yes { display: block; }
.hr-docs__item:has(.hr-docs__has[value="no"]:checked) .hr-docs__when-no { display: block; }
/* JS が無いときの「この内容で保存する」も、どちらかを選ぶまでは出さない。JS があれば自動で保存するので出さない（is-off） */
.hr-docs__item:not(:has(.hr-docs__has:checked)) .hr-docs__plan-save { display: none; }
.hr-docs__plan-save.is-off { display: none; }
@supports not selector(:has(a)) {
  .hr-docs__when-yes, .hr-docs__when-no { display: block; }
  .hr-docs__plan-save { display: block; }
}
.hr-docs__when-no .field { margin: 0; }
.hr-docs__plan-status, .hr-docs__plan-saved { margin: 8px 0 0; font-size: 14px; line-height: var(--lh-normal); color: var(--ds-text-body); }
.hr-docs__plan-status { margin-bottom: 12px; }
.hr-docs__plan-status:empty, .hr-docs__plan-saved:empty { display: none; }
.hr-docs__plan-saved { padding: 10px 12px; border-radius: var(--radius); background: var(--state-progress-tint); border: 1px solid var(--state-progress-border); }
.hr-docs__plan-saved.is-error, .hr-docs__plan-status.is-error { background: var(--state-alert-tint); border: 1px solid var(--state-alert-border); color: var(--state-alert); padding: 10px 12px; border-radius: var(--radius); }
.hr-docs__plan-save { margin-top: 12px; }
/* 見出しの横に状態のバッジ（2026-09-20 の直し） */
.hr-docs__head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
/* ---- 書類の並べ方（2026-09-22 加藤さん決定 E2。見本 docs/書類の区切りの見本.html）----
   一番上の一覧（出していただくもの）・書類ごとの白い枠と左の端の状態の色の帯・済んだ書類は見出しだけに畳む。
   色だけに頼らない（バッジのアイコンと文字も出す）。押せる所は 44px 以上（一覧の行・畳んだ見出し）。
   番号の丸は読ませない（aria-hidden）。「3つのうち1つ目」は .hr-docs__sr で読み上げだけに出す */
.hr-docs__sr { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.hr-docs__num {
  display: inline-flex; align-items: center; justify-content: center; flex: none; width: 26px; height: 26px; border-radius: 50%;
  background: #1F4E5F; color: #fff; font-size: 14px; font-weight: var(--fw-bold); line-height: 1;
}
/* 名前は2行にできる（学生証／（年齢確認書類））。2行目は小さく薄く */
.hr-docs__name { display: flex; flex-direction: column; min-width: 0; }
.hr-docs__name-main { font-weight: var(--fw-bold); word-break: keep-all; overflow-wrap: anywhere; }
.hr-docs__name-sub { font-size: 12px; font-weight: var(--fw-regular); line-height: 1.4; color: var(--ds-text-muted); }
.hr-docs__badge { display: inline-flex; flex: none; }
.hr-docs__toc { margin: 0 0 20px; padding: 12px; border: 1px solid var(--border-default); border-radius: 12px; background: var(--surface); }
.hr-docs__toc-title { margin: 0 0 8px; font-size: 15px; font-weight: var(--fw-bold); color: var(--ds-text-heading); }
.hr-docs__toc-sum { display: inline-block; margin-left: 4px; font-size: 13px; font-weight: var(--fw-regular); color: var(--ds-text-muted); white-space: nowrap; }
.hr-docs__toc-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
/* 一覧の行：番号・名前・バッジ。**バッジは右端にそろえる**（名前が2行でも、バッジの文字が長くても下に落とさない） */
.hr-docs__toc-link {
  display: flex; align-items: center; gap: 10px; min-height: var(--tap); padding: 6px 10px;
  border: 1px solid var(--border-subtle); border-radius: 8px; color: inherit; text-decoration: none;
}
.hr-docs__toc-link:hover { background: var(--surface-muted); }
.hr-docs__toc-link:focus-visible { outline: 2px solid #1F4E5F; outline-offset: 2px; }
.hr-docs__toc-link .hr-docs__name { flex: 1 1 auto; font-size: 15px; }
.hr-docs__toc-link .hr-docs__badge { margin-left: auto; }
.hr-docs__toc-link.is-done .hr-docs__num { background: var(--state-done); }
/* 書類の枠と左の端の色の帯 */
.hr-docs__card {
  margin: 0 0 16px; padding: 14px 14px 16px; scroll-margin-top: 12px;
  background: var(--surface); border: 1px solid var(--border-default); border-left-width: 6px; border-radius: 12px;
}
.hr-docs__card.is-todo { border-left-color: var(--state-alert); }
.hr-docs__card.is-planned { border-left-color: var(--state-progress); }
.hr-docs__card.is-done { border-left-color: var(--state-done); padding-top: 6px; padding-bottom: 6px; }
.hr-docs__card.is-done[open] { padding-bottom: 16px; }
@media (min-width: 768px) {
  .hr-docs__card { padding: 20px 24px 22px; }
  .hr-docs__card.is-done { padding-top: 8px; padding-bottom: 8px; }
  .hr-docs__card.is-done[open] { padding-bottom: 22px; }
}
.hr-docs__card-head { margin: 0 0 12px; gap: 6px 10px; font-size: 16px; color: var(--ds-text-heading); }
/* 済んだ書類を畳んだときの見出し（summary）。右端の矢印は開閉ボタン（.fold-toggle）と同じ向きの決まり */
.hr-docs__cardsum { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: var(--tap); list-style: none; cursor: pointer; }
.hr-docs__cardsum::-webkit-details-marker { display: none; }
.hr-docs__cardsum::after { content: '›'; content: '›' / ''; flex: none; color: var(--state-progress); font-size: 20px; line-height: 1; transform: rotate(90deg); }
details[open] > .hr-docs__cardsum::after { transform: rotate(-90deg); }
.hr-docs__cardsum:focus-visible { outline: 2px solid #1F4E5F; outline-offset: 2px; border-radius: 6px; }
.hr-docs__cardsum .hr-docs__card-head { margin: 0; }
.hr-docs__card-body { padding-top: 12px; }
.doc-badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 10px; border-radius: 999px; border: 1px solid var(--border-default);
  background: var(--state-neutral-tint); color: var(--text); font-size: 13px; font-weight: var(--fw-bold); white-space: nowrap;
}
.doc-badge__icon { width: 15px; height: 15px; flex: none; }
.doc-badge--todo { background: var(--state-alert-tint); border-color: var(--state-alert-border); color: var(--state-alert); }
.doc-badge--done { background: var(--state-done-tint); border-color: var(--state-done-border); color: var(--state-done); }
.doc-badge--planned { background: var(--state-progress-tint); border-color: var(--state-progress-border); color: var(--state-progress); }
.hr-docs__hint { margin: 0 0 12px; font-size: 14px; line-height: var(--lh-normal); }
.hr-docs__locked { margin: 0; padding: 10px 12px; border-radius: var(--radius); background: var(--surface-muted); font-size: 13px; line-height: var(--lh-normal); }
.hr-docs__form { margin: 12px 0 0; }
/* 撮るときのこつ（2026-09-22 N-3） */
.hr-docs__tips { margin: 0 0 4px; font-size: 14px; line-height: var(--lh-normal); }
.hr-docs__tips-title { margin: 0 0 2px; font-weight: var(--fw-bold); }
.hr-docs__tips-list { margin: 0; padding-left: 1.2em; }
/* 「持っていない」を選んだ人の「口座ができたので提出する」（2026-09-22。summary は .fold-toggle＝JS なしで開け閉め） */
.hr-docs__made { margin: 16px 0 0; }
.hr-docs__made-body { padding: 12px 0 0; }
/* ---- 個人設定（/me・2026-09-22 Q-HB）---- */
.me-settings__lead { margin: 0 0 16px; font-size: 14px; line-height: var(--lh-normal); }
.me-settings__item {
  margin: 0 0 16px; padding: 14px 14px 16px;
  background: var(--surface); border: 1px solid var(--border-default); border-radius: 12px;
}
.me-settings__head { margin: 0 0 8px; color: var(--ds-text-heading); font-weight: var(--fw-bold); }
.me-settings__text { margin: 0 0 12px; font-size: 14px; line-height: var(--lh-normal); }
.me-settings__soon { margin: 0; font-size: 13px; color: var(--ds-text-muted); }
/* 「ホーム画面に追加する」の案内（段③・partials/home-install）。どの案内を出すかはサーバー、ボタンと「追加済み」は JS（is-off） */
.home-install__done.is-off, .home-install__guide.is-off, .home-install__add.is-off { display: none; }
.home-install__done { margin: 0; padding: 10px 12px; border-radius: var(--radius); background: var(--state-done-tint); border: 1px solid var(--state-done-border); color: var(--state-done); font-size: 14px; font-weight: var(--fw-bold); }
.home-install__text { margin: 0 0 12px; font-size: 14px; line-height: var(--lh-normal); }
.home-install__add { margin: 0 0 12px; }
.home-install__how { margin: 0 0 12px; padding: 12px; border: 1px solid var(--border-subtle); border-radius: var(--radius); background: var(--surface-muted); }
.home-install__how:last-child { margin-bottom: 0; }
.home-install__how-title { margin: 0 0 6px; font-size: 14px; font-weight: var(--fw-bold); color: var(--ds-text-heading); }
.home-install__steps { margin: 0; padding-left: 1.4em; font-size: 14px; line-height: var(--lh-normal); }
.home-install__steps li { margin: 0 0 6px; }
.home-install__glyph { display: inline-block; width: 22px; height: 22px; vertical-align: -5px; margin: 0 2px; color: #1a73e8; }
.home-install__note { margin: 8px 0 0; font-size: 13px; line-height: var(--lh-normal); color: var(--ds-text-muted); }
/* 初めて開いたときの帯（段④・views/home.ejs）。ホーム画面から開いている・追加したら JS が is-off で隠す */
.home-install-banner {
  margin: 0 0 16px; padding: 14px 14px 16px;
  background: var(--surface); border: 1px solid var(--border-default); border-left: 6px solid #1F4E5F; border-radius: 12px;
}
.home-install-banner.is-off { display: none; }
.home-install-banner__title { margin: 0 0 4px; font-size: 16px; font-weight: var(--fw-bold); color: var(--ds-text-heading); }
.home-install-banner__text { margin: 0 0 12px; font-size: 14px; line-height: var(--lh-normal); }
.home-install-banner__close { margin: 12px 0 0; }
/* 「アルバイト（書類完了前）」の人のホームで、カードの上に出す1行（2026-09-22 Q-HE） */
.home-predocs { margin: 0 0 12px; font-size: 14px; line-height: var(--lh-normal); color: var(--ds-text-muted); }
/* 雇用契約書の欄（2026-09-22 N-10）。手順は LINE の①〜⑤と同じ流れ */
.hr-docs__steps { margin: 0 0 8px; padding-left: 1.4em; font-size: 14px; line-height: var(--lh-normal); }
.hr-docs__steps li { margin: 0 0 4px; }
.hr-docs__contract-lost { margin: 0; font-size: 13px; color: var(--ds-text-muted); line-height: var(--lh-normal); }
/* 昇格する前に写真が消えたときの1文（N-19） */
.hr-docs__resubmit { margin: 0 0 12px; }
.hr-docs__pick { position: relative; overflow: hidden; }
.hr-docs__file { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.hr-docs__status { margin: 0; font-size: 13px; color: var(--ds-text-muted); }
/* **is-off には共通の規則が無い**（部品ごとに書く＝2026-09-20 加藤さん指摘）。
   public/js/hr-documents.js が付け外しする4か所ぶん（test/hrIsOffRules.test.js が守る） */
.hr-docs__error.is-off, .hr-docs__error-hint.is-off,
.hr-docs__preview.is-off, .hr-docs__rotate.is-off, .hr-docs__safari.is-off { display: none; }
/* 「この写真を提出する」は写真を選んで縮めたあとだけ出す（2026-09-22 N-2。hr-documents.js が付け外しする） */
.hr-docs__submit.is-off { display: none; }
.hr-docs__preview { display: block; width: 100%; height: auto; border: 1px solid var(--border-default); border-radius: var(--radius); }
.hr-docs__rotate-hint { margin: 0 0 6px; font-size: 13px; color: var(--ds-text-muted); }
.hr-docs__rotate-btns { display: flex; gap: 8px; }
.hr-docs__rotate-btn { flex: 1; }

/* 銀行口座の撮り方（partials/bank-howto）。紙とスマートの切り替えは radio＋CSS（JS を使わない） */
.bank-howto { margin: 0 0 12px; padding: 12px; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
/* 上の説明は、ほかより少し大きめ（2026-09-20 の直し） */
.bank-howto__lead { margin: 0 0 12px; font-size: 16px; line-height: var(--lh-normal); }
/* 文ごとに1行（2026-09-22 加藤さん指示）。幅が足りないときは、語の切れ目（ビューの <wbr>）でだけ折る */
.bank-howto__line { display: block; word-break: keep-all; overflow-wrap: anywhere; }
.bank-howto__pick { display: grid; grid-template-columns: 1fr 1fr; gap: 0 8px; }
/* radio は見せず、ラベルをタブのように見せる（当たり判定は 44px） */
.bank-howto__radio { position: absolute; width: 0; height: 0; opacity: 0; }
.bank-howto__tab {
  display: flex; align-items: center; justify-content: center; min-height: var(--tap); padding: 0 8px;
  border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface-muted);
  font-size: 14px; cursor: pointer; text-align: center;
}
/* 同じ画面に2つ置くことがあるので（2026-09-22）、id ではなくクラスで選ぶ（~ は同じ .bank-howto__pick の中だけに効く） */
.bank-howto__radio--paper:checked ~ .bank-howto__tab--paper,
.bank-howto__radio--smart:checked ~ .bank-howto__tab--smart {
  background: var(--surface); border-color: #1F4E5F; border-bottom-width: 3px; font-weight: var(--fw-bold);
}
.bank-howto__radio--paper:focus-visible ~ .bank-howto__tab--paper,
.bank-howto__radio--smart:focus-visible ~ .bank-howto__tab--smart { outline: 2px solid #1F4E5F; outline-offset: 2px; }
.bank-howto__panel { grid-column: 1 / -1; display: none; padding: 10px 0 0; }
.bank-howto__radio--paper:checked ~ .bank-howto__panel--paper,
.bank-howto__radio--smart:checked ~ .bank-howto__panel--smart { display: block; }
.bank-howto__how { margin: 0 0 8px; font-size: 14px; line-height: var(--lh-normal); }
/* 手本の画像は**元の大きさより引き伸ばさない**（引き伸ばすとぼやける＝2026-09-20 の直し）。
   狭い幅では画面に合わせて縮める。枠は重ねない */
.bank-howto__img { display: block; width: 100%; height: auto; border: 1px solid var(--border-default); border-radius: var(--radius-sm); }
.bank-howto__img--paper { max-width: 369px; }
.bank-howto__img--smart { max-width: 297px; }
/* 指定なしの店の見本・学生証の見本（2026-09-22 N-16・N-7。イラストの SVG） */
.bank-howto__img--any, .hr-docs__sample { max-width: 320px; }
.hr-docs__sample { display: block; width: 100%; height: auto; margin: 0 0 8px; }
.hr-docs__howto { margin: 0 0 12px; padding: 12px; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.hr-docs__howto p { margin: 0 0 8px; font-size: 14px; line-height: var(--lh-normal); }
.hr-docs__howto p:last-child { margin-bottom: 0; }

/* ---- 人事登録の一覧（第F3d-1段・2026-09-20 加藤さん指示）----
   1人1枚のカード。未完了が上・完了が下（並びはサーバー側）。完了した行は面を薄くして、目が未完了に向くようにする */
.hr-reg__row {
  margin: 0 0 12px; padding: 12px 14px;
  border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface);
}
.hr-reg__row.is-done { background: var(--surface-muted); }
.hr-reg__name { margin: 0; font-size: 17px; font-weight: var(--fw-bold); }
.hr-reg__store { margin-left: 8px; font-size: 13px; font-weight: var(--fw-regular); color: var(--ds-text-muted); }
.hr-reg__meta { margin: 2px 0 10px; font-size: 13px; color: var(--ds-text-muted); }
.hr-reg__checks { display: flex; flex-direction: column; gap: 8px; }
.hr-reg__check { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
.hr-reg__check-label { font-size: 14px; }
.hr-reg__check-at { display: block; font-size: 12px; color: var(--ds-text-muted); }

/* ---- 取り返しがつかない操作の確認（partials/confirm-dialog・2026-09-20 加藤さん指示）----
   招待のモーダル（.invite-modal）と同じ作りだが、**あちらの定義は変えない**ので別のクラスにする。
   JS が無いときは <dialog open> がそのまま（背景の暗転なしで）出る＝確認の画面が1枚はさまる */
.confirm-modal {
  position: fixed; inset: 0; margin: auto; z-index: 10;
  width: min(92vw, 420px); max-height: 88vh; overflow: auto;
  border: 1px solid var(--border-default); border-radius: var(--radius-lg); padding: 20px;
  background: var(--surface); color: var(--ds-text-body);
}
.confirm-modal::backdrop { background: rgba(26, 26, 26, .4); }
.confirm-modal__title { margin: 0 0 8px; font-size: 18px; font-weight: var(--fw-bold); color: var(--ds-text-heading); }
.confirm-modal__text { margin: 0 0 16px; font-size: 14px; line-height: 1.7; }
.confirm-modal__actions { display: flex; flex-direction: column; gap: 8px; }
/* フォーカスの受け皿（開いた直後に実行のボタンへ枠が出ないように） */
.confirm-modal__focus-sink { position: absolute; width: 0; height: 0; overflow: hidden; }
.confirm-modal__focus-sink:focus,
.confirm-modal__focus-sink:focus-visible { outline: none; }

/* 取り返しがつかない操作は、ふだんの操作から離す（2026-09-20 加藤さん指示。試しの文書の「文書の流れを変える」） */
.freee-sign__danger { margin: 20px 0 0; padding: 12px 0 0; border-top: 1px solid var(--border-subtle); }
.freee-sign__danger .admin-perms__note { margin: 0 0 8px; }
/* 「切断する」は同じ行のいちばん右。隣のボタンとのあいだだけ少し広く空ける（行の gap は 8px）。
   折り返しても最後に来るよう、並びもいちばん後ろに置く（CSS の order で入れ替えない） */
.freee-sign__disconnect { margin-left: 16px; }
.freee-sign__danger-note { margin: 8px 0 0; }
.freee-settings__form { margin: 0 0 16px; padding: 12px; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.freee-settings__upcoming { font-size: 13px; color: var(--state-progress); }
/* プルダウンの項目を選ぶフォーム（2026-09-19）。1項目1フォーム */
.freee-settings__name { margin: 0; font-weight: var(--fw-bold); }
.freee-settings__now { margin: 0; font-size: 13px; color: var(--ds-text-muted); overflow-wrap: anywhere; }

/* ---- freeeサインの3画面のタブ（2026-09-20 加藤さん指示）----
   「別の画面に移るもの」をボタンから切り離す。**.pl-tab / .app-bar__tab は使わない**（定義の共有を増やさない）。
   今いる画面は藍の下線（アプリバーのタブと同じ考え方）。当たり判定は --tap を下回らない */
.fs-tabs {
  display: flex; flex-wrap: wrap; gap: 4px 18px;
  margin: 0 0 16px; border-bottom: 1px solid var(--border-default);
}
.fs-tab {
  display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 2px;
  margin-bottom: -1px; border-bottom: 2px solid transparent;
  font-size: 15px; color: var(--ds-text-muted); text-decoration: none;
}
.fs-tab:hover { color: var(--text); }
.fs-tab.is-current { color: var(--text); font-weight: var(--fw-bold); border-bottom-color: #1F4E5F; }

/* ---- 今月 freeeサインで作った文書の数のバッジ（第F3c段）----
   色だけに頼らない：注意と上限はアイコン＋文字も出す（partials/freee-quota）。色は既存の変数だけ */
.fs-quota-line { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin: 0 0 16px; }
.fs-quota {
  display: inline-flex; align-items: center; gap: 6px; margin: 0;
  padding: 6px 12px; border-radius: 999px; border: 1px solid var(--border-default);
  background: var(--state-neutral-tint); color: var(--text);
  font-size: 15px; font-weight: var(--fw-bold); white-space: nowrap;
}
.fs-quota__icon { width: 18px; height: 18px; flex: none; }
.fs-quota__state { font-size: 13px; font-weight: var(--fw-regular); }
.fs-quota--warn { background: var(--state-progress-tint); border-color: var(--state-progress-border); color: var(--state-progress); }
.fs-quota--full { background: var(--state-alert-tint); border-color: var(--state-alert-border); color: var(--state-alert); }
.fs-quota__at { font-size: 12px; color: var(--ds-text-muted); }
.fs-quota__at--error { color: var(--state-alert); }
.freee-check__list { margin: 0 0 12px; padding-left: 1.2em; }
.freee-check__list li { margin: 4px 0; overflow-wrap: anywhere; }
.freee-check__list li.is-ng { color: var(--state-alert); font-weight: var(--fw-bold); }
.freee-check__options-cell { white-space: normal; min-width: 12em; }
.freee-check__pick { display: grid; gap: 8px; margin: 0 0 12px; }
.admin-gate__empty { font-size: 13px; color: var(--ds-text-muted); }

/* ---- 店舗の管理（/admin/stores・S1・2026-09-19）---- */
.store-admin__import { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin: 0 0 16px; }
.store-admin__imported { margin: 0; font-size: 14px; }
.store-admin__imported.is-todo { color: var(--state-alert); font-weight: var(--fw-bold); }
.store-admin__list { list-style: none; margin: 0 0 16px; padding: 0; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.store-admin__item { border-bottom: 1px solid var(--border-subtle); }
.store-admin__item:last-child { border-bottom: 0; }
/* 行全体が1つのリンク（当たり判定 44px 以上） */
.store-admin__link { display: grid; grid-template-columns: 3.5em 1fr; gap: 2px 8px; min-height: var(--tap); padding: 8px 12px; color: inherit; text-decoration: none; }
.store-admin__link:hover { background: var(--surface-muted); }
.store-admin__code { grid-row: span 3; color: var(--ds-text-muted); font-variant-numeric: tabular-nums; }
.store-admin__name { font-weight: var(--fw-bold); overflow-wrap: anywhere; }
.store-admin__meta { font-size: 13px; color: var(--ds-text-muted); overflow-wrap: anywhere; }
.store-admin__missing { font-size: 13px; color: var(--state-alert); font-weight: var(--fw-bold); }
.store-admin__item.is-missing .store-admin__link { box-shadow: inset 3px 0 0 var(--state-alert); }
.store-admin__apply { margin: 16px 0; }

/* ---- 店舗を足す・直す（S2・2026-09-20）---- */
/* 赤（notice--error）ほど強くしない黄土の帯。PL・レシピの対応表がまだ／テンポマスターにまだ足していない */
.notice--warn { background: var(--state-progress-tint); border-color: var(--state-progress-border); color: var(--state-progress); }
.store-admin__tenpo { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; }
.store-admin__tenpo p { margin: 0; }
.store-admin__new { margin: 0 0 16px; }
/* 直せない欄（共通店舗コード）を、直せる欄と見分けられるようにする */
.store-admin__fixed { font-size: 13px; color: var(--ds-text-muted); }
/* ほかのシステムのコード（2026-09-23 加藤さん承認・C案）。空のままでも保存でき、要るのに空の欄だけ「未入力」の印。
   当たり判定は .field__control が 44px（--tap）なので、ここでは見出しの印と、印を付ける欄の行間だけ */
.store-codes__missing {
  margin-left: 8px; padding: 1px 8px; border-radius: 999px;
  background: var(--state-alert-tint); color: var(--state-alert); font-size: 11px; font-weight: var(--fw-bold);
}
/* 「使わない」の印。文字と四角のどちらを押しても届くよう、行そのものを 44px にする */
.store-codes__check > span:first-child {
  display: flex; align-items: center; gap: 8px; min-height: var(--tap); font-size: 15px;
}
.store-codes__check input { width: 20px; height: 20px; }
/* 改装の確かめ（移る人・見える範囲・申請・ほかのアプリ） */
.store-renov__head { font-size: 15px; margin: 20px 0 8px; }
.store-renov__list { margin: 0 0 12px; padding-left: 1.2em; font-size: 14px; line-height: 1.7; }
.store-renov__go { margin-top: 20px; }

/* ホームの「アルバイト系の招待が開いています」（toggle を持つ人だけ。押すとスイッチの画面）。
   切替バナー（赤）ほど強くしない：知らせる1行。当たり判定 44px */
.home-gate {
  display: flex; align-items: center; min-height: var(--tap);
  margin: 0 0 16px; padding: 8px 14px; border: 1px solid #0A7A3A; border-radius: var(--radius);
  background: #fff; color: #0A7A3A; font-size: 14px; line-height: 1.5; text-decoration: none;
}
.home-gate:hover { background: var(--surface-muted); }
.home-gate::after { content: '›'; margin-left: auto; padding-left: 12px; }

/* ---- 写真の試験画面（/hr/photo-test。第6a段・2026-09-19）。管理者だけ・何も保存しない ---- */
.hr-photo-test__note { font-size: 13px; color: var(--ds-text-muted); margin: 0 0 16px; line-height: 1.6; }
.hr-photo-test__sides { border: 0; padding: 0; margin: 0 0 16px; display: flex; flex-wrap: wrap; gap: 8px 16px; }
.hr-photo-test__sides legend { width: 100%; margin-bottom: 4px; }
.hr-photo-test__side { display: inline-flex; align-items: center; gap: 6px; min-height: var(--tap); }
.hr-photo-test__picks { display: grid; gap: 10px; margin: 0 0 16px; }
/* 写真を選ぶ欄はボタンの見た目の label の中。欄そのものは見えない大きさにする（押すのは label＝44px） */
.hr-photo-test__pick { position: relative; }
.hr-photo-test__file { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.hr-photo-test__status { min-height: 1.5em; margin: 0 0 8px; font-size: 13px; }
.hr-photo-test__error { margin: 0 0 12px; }
.hr-photo-test__error p { margin: 0; }
.hr-photo-test__error.is-off, .hr-photo-test__error-hint.is-off, .hr-photo-test__preview.is-off, .hr-photo-test__dt.is-off { display: none; }
.hr-photo-test__result { display: grid; grid-template-columns: auto 1fr; gap: 4px 12px; margin: 0 0 12px; font-size: 13px; }
.hr-photo-test__result dt { color: var(--ds-text-muted); }
.hr-photo-test__result dd { margin: 0; word-break: break-all; }
.hr-photo-test__result dd.is-warn { color: var(--state-alert); font-weight: 700; }
.hr-photo-test__preview { display: block; max-width: 100%; height: auto; margin: 0 0 16px; border: 1px solid var(--border-default); }
/* 向きを直すボタン（2026-09-20 Q-X）。縮められたときだけ出す */
.hr-photo-test__rotate { display: flex; gap: 8px; margin: 0 0 16px; }
.hr-photo-test__rotate-btn { flex: 1 1 0; }
.hr-photo-test__rotate.is-off { display: none; }
.hr-photo-test__summary { font-size: 12px; }

/* 発行済みの行：書類完了前の期限切れのコードに出す案内（再発行の代わり。押せる見た目にしない） */
.invite-item__note { font-size: 12px; color: var(--ds-text-muted); white-space: nowrap; }

/* ---- 新人申請（/hr/applications・第6c段・2026-09-20）---- */
.hr-app__check { display: inline-flex; align-items: center; gap: 8px; min-height: var(--tap); margin-top: 6px; font-size: 14px; }
.hr-app__check.is-off { display: none; }
/* 呼び名の欄も同じ判定で消す（2026-09-20）。.is-off には共通の規則が無いので、JS が付け外しする要素ごとに書く
   （書き忘れると見えたまま残る。test/hrIsOffRules.test.js が止める） */
.hr-app__nickname.is-off { display: none; }
/* 期間限定時給を開いたら研修時給の欄を消す（第F2a段・Q-AM。期間限定時給の人に研修時給は無い） */
.hr-app__training.is-off { display: none; }
/* fieldset の既定の余白を消す。**上の余白は消さない**（.stack > * + * の 16px を残す。margin: 0 だと属性の欄が上に詰まった） */
.hr-app__category { border: 0; padding: 0; margin-right: 0; margin-bottom: 0; margin-left: 0; display: flex; flex-wrap: wrap; gap: 8px 16px; }
.hr-app__category legend { width: 100%; margin-bottom: 4px; }
.hr-app__radio { display: inline-flex; align-items: center; gap: 6px; min-height: var(--tap); }
/* 期間限定時給の折りたたみ（summary は .fold-toggle。個人ページの「所属を追加する」と同じ見た目） */
.hr-app__limited-body { display: grid; gap: 8px; margin-top: 12px; }
.hr-app__limited-body .field__hint { margin: 0; }
.hr-app__sub { display: grid; gap: 4px; font-size: 13px; }
.hr-app__retry { margin: 4px 0 8px; font-size: 13px; color: var(--state-alert); font-weight: 700; }
/* 写真を選ぶ欄はボタンの見た目の label の中。欄そのものは見えない大きさにする（押すのは label＝44px） */
.hr-app__pick { position: relative; margin-top: 6px; }
.hr-app__file { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.hr-app__status { min-height: 1.5em; margin: 6px 0 0; font-size: 13px; }
.hr-app__error { margin: 8px 0 0; }
.hr-app__error p { margin: 0; }
.hr-app__error.is-off, .hr-app__error .is-off, .hr-app__preview.is-off { display: none; }
.hr-app__preview { display: block; max-width: 100%; height: auto; margin-top: 8px; border: 1px solid var(--border-default); }
/* 向きを直すボタン（2026-09-20 Q-X）と、①②とも真っ黒のときの「Safari で開いて撮り直す」（Q-Z・LINE の中だけ）。
   どちらも JS が is-off を付け外しする（test/hrIsOffRules.test.js） */
.hr-app__rotate { margin-top: 8px; }
.hr-app__rotate-hint { margin: 0 0 6px; font-size: 13px; color: var(--ds-text-muted); }
.hr-app__rotate-btns { display: flex; gap: 8px; }
.hr-app__rotate-btn { flex: 1 1 0; }
.hr-app__rotate.is-off, .hr-app__safari.is-off { display: none; }
.hr-app__safari { margin-top: 8px; }
.hr-apps__list { list-style: none; margin: 16px 0 0; padding: 0; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.hr-apps__row { padding: 10px 12px; border-bottom: 1px solid var(--border-subtle); }
.hr-apps__row:last-child { border-bottom: 0; }
.hr-apps__main { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.hr-apps__name { font-weight: 700; }
.hr-apps__state { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 12px; border: 1px solid var(--border-default); white-space: nowrap; }
.hr-apps__state.is-used { color: #0A7A3A; border-color: #0A7A3A; }
.hr-apps__state.is-expired, .hr-apps__state.is-revoked { color: var(--ds-text-muted); border-style: dashed; }
.hr-apps__meta { margin-top: 4px; font-size: 13px; color: var(--ds-text-muted); }
.hr-apps__empty { color: var(--ds-text-muted); }
/* 一覧の氏名から詳細へ（第6d段。見られる行だけリンク）。当たり判定は --tap */
.hr-apps__link { display: inline-flex; align-items: center; min-height: var(--tap); color: var(--primary); text-decoration: underline; }
/* 出し直した申請（第7段）。氏名の下に小さく（押せない印なので、色は薄く） */
.hr-apps__reissue { display: block; font-size: 12px; color: var(--ds-text-muted); }
/* 申請の詳細の見出し（2026-09-21）：氏名・状態のバッジ・「新人申請から出し直す」を**1行**に並べる。
   1段増やすとポップアップにスクロールが出るため。狭い画面では折り返す（× と重ならない）。
   ポップアップでは、同じボタンを JS が帯（.hr-modal__title）へ移すので、そちらでも同じ見た目にする */
.hr-app-detail__head { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; }
/* 小さいボタン（.btn--sm＝36px）だが、**当たり判定は 44px**（疑似要素で上下にはみ出す。CLAUDE.md の決まり）。
   折り返したときに上下の行と重ならないよう、**行の間は 10px 以上**取る（CLAUDE.md の決まり。
   見出しは gap、ポップアップの帯は上下の margin 5px ずつ） */
.hr-app-detail__reissue { position: relative; margin-left: 4px; white-space: nowrap; }
.hr-app-detail__reissue::after { content: ''; position: absolute; inset: -4px 0; }
/* エントリーシートの差し替え（第7段の見直し③）。写真の欄の下に、差し替えた日とボタンを1行に（狭いと折り返す）。
   ボタンは 36px だが当たり判定は 44px（上の .hr-app-detail__reissue と同じ作り）。行の間は 10px 以上 */
.hr-app-detail__photo-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; margin: 8px 0 0; }
.hr-app-detail__replace { position: relative; white-space: nowrap; }
.hr-app-detail__replace::after { content: ''; position: absolute; inset: -4px 0; }
/* ポップアップでは帯の中（氏名・バッジの右）。× と重ならないよう、帯の gap ぶん空ける */
.hr-modal__title .hr-app-detail__reissue { margin: 5px 0 5px 8px; vertical-align: middle; }

/* 個人ページの「採用管理」の区画（第6d段）。要約だけ。詳しくは申請の内容へ */
.member-hr { margin: 0 0 16px; }
.member-hr__list { margin: 0; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.member-hr__row { display: grid; grid-template-columns: 7em 1fr; gap: 8px; padding: 8px 12px; border-bottom: 1px solid var(--border-subtle); }
.member-hr__row:last-child { border-bottom: 0; }
.member-hr__row dt { font-size: var(--fs-label); color: var(--ds-text-muted); }
.member-hr__row dd { margin: 0; }
.member-hr__link { display: inline-flex; align-items: center; min-height: var(--tap); color: var(--primary); text-decoration: underline; }

/* ---- 申請の内容（/hr/applications/:id・第6d段）---- */
.hr-app-detail__name { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; font-size: var(--fs-body-lg); font-weight: 700; }
.hr-app-detail__list { margin: 0; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.hr-app-detail__row { display: grid; grid-template-columns: 9em 1fr; gap: 8px; padding: 7px 12px; border-bottom: 1px solid var(--border-subtle); }
.hr-app-detail__row:last-child { border-bottom: 0; }
.hr-app-detail__row dt { font-size: var(--fs-label); color: var(--ds-text-muted); }
.hr-app-detail__row dd { margin: 0; overflow-wrap: anywhere; }
.hr-app-detail__note { margin: 0; font-size: 13px; color: var(--ds-text-muted); line-height: var(--lh-normal); }
/* アイコンと文字を並べる欄（書類・人事登録） */
.hr-app-detail__with-icon { display: flex; align-items: center; gap: 6px; }
.hr-app-detail__doc-link { display: inline-flex; align-items: center; gap: 6px; min-height: var(--tap); color: var(--primary); text-decoration: underline; }

/* ---- 2列（2026-09-20 加藤さん指示）----
   広い幅では、左＝申請の内容／右＝写真・雇用契約書・書類・人事登録。スクロールしなくても主な内容が見えるように。
   狭い幅では今までどおり縦一列（**位置の基準は変えず、並べ方だけ**を幅で変える＝CLAUDE.md）。
   ポップアップの中でも同じ形になる（窓の幅は 920px）ので、器の幅ではなく画面の幅で切り替える */
.container.hr-app-detail { max-width: 1200px; }
.hr-app-detail__cols { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
@media (min-width: 768px) {
  .hr-app-detail__cols { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px; align-items: start; }
  /* 右の列は上に詰める（左の表と頭をそろえる） */
  .hr-app-detail__col--side > :first-child .section-title { margin-top: 0; }
  /* 右の列は項目名を少し狭く（値が折り返しにくくなり、縦が短くなる） */
  .hr-app-detail__col--side .hr-app-detail__row { grid-template-columns: 7.5em 1fr; }
}
.hr-app-detail__col--side > * + * { margin-top: 12px; }
/* 左の列も、申請の内容の下に「書類と登録」を続ける（2026-09-20。1画面でここまで見えるように） */
.hr-app-detail__col--main > * + * { margin-top: 12px; }
@media (min-width: 768px) { .hr-app-detail__col--main .hr-app-detail__docs .section-title { margin-top: 12px; } }
/* 写真は右の列の幅に合わせて小さめに（縦長の書類でも高さを取りすぎない）。押すと大きく見られる */
.hr-app-detail__photo-link { display: block; }
.hr-app-detail__photo-link .hr-app-detail__photo { max-height: 200px; object-fit: contain; object-position: left top; cursor: zoom-in; }
/* ---- 申請の一覧（進み具合の表・第F3d-2段の案）----
   **表の器だけ**横にスクロールする（ページは横に流れない）。氏名の列は左に貼り付ける（PL の表と同じ作り）。 */
/* 器の幅は PL の店舗一覧と同じ作り（.container.pl-stores-page の写し）。PC では画面の幅いっぱいまで広げ、
   15列が横スクロールなしで入るようにする。スマホは従来どおり画面幅いっぱいで、表の中だけ動く */
.container.hr-apps-page { max-width: 1890px; }
/* 器の幅は表に合わせて広げるが、**画面の幅は越えない**（2026-09-22：1280 で表の幅が画面より 3px 広く、ページごと横に
   はみ出していた）。越える分は表の器（.hr-apps__scroll）の中で横に動く。最低幅 936px も画面の幅までに抑える */
@media (min-width: 768px) {
  .container.hr-apps-page { width: fit-content; min-width: min(936px, 100%); max-width: min(1890px, 100%); }
}
/* パソコンの 1280px で表（1249px）が器に 1px 入らず、表の器に横のスクロールバーが出るので、左右の余白を 16→12px に詰める
   （表そのものの見た目は変えない） */
@media (min-width: 1024px) { .container.hr-apps-page { padding-left: 12px; padding-right: 12px; } }
.hr-apps-page .hr-apps__scroll { width: fit-content; max-width: 100%; }
/* アイコンの説明は「進行中」の見出しと**同じ行**に、少し間を空けて横一列（2026-09-20 加藤さん指示）。
   1行に入らない幅では、見出しの下に折り返す（flex-wrap） */
.hr-apps__group-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 24px; margin: 0 0 8px; }
.hr-apps__group-head .section-title { margin: 0; }
.hr-apps__legend { display: flex; flex-wrap: wrap; gap: 2px 16px; margin: 0; padding: 0; list-style: none; font-size: 12px; color: var(--ds-text-muted); }
.hr-apps__legend li { display: flex; align-items: center; gap: 6px; }
.hr-apps__scroll { overflow-x: auto; margin: 0 0 16px; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.hr-apps__table { border-collapse: separate; border-spacing: 0; font-size: 13px; white-space: nowrap; }
/* 氏名と店舗だけ左揃え、ほかは見出しも中身も中央（アイコンは見出しの真下に来る） */
.hr-apps__table th, .hr-apps__table td { padding: 8px 10px; border-bottom: 1px solid var(--border-subtle); text-align: center; font-weight: 400; }
.hr-apps__table th.hr-apps__th-name, .hr-apps__table td.hr-apps__store, .hr-apps__table th.hr-apps__store { text-align: left; }
/* 長い見出し（freee人事労務への登録）だけ2行に折り返す。列の幅は広げない */
.hr-apps__table th.hr-apps__th-wrap { white-space: normal; max-width: 7.5em; line-height: 1.3; }
.hr-apps__table thead th { position: sticky; top: 0; z-index: 2; background: var(--surface-muted); color: var(--ds-text-muted); font-size: 12px; }
.hr-apps__th-name { position: sticky; left: 0; z-index: 1; background: var(--surface); min-width: 9em; }
.hr-apps__table thead .hr-apps__th-name { z-index: 3; background: var(--surface-muted); }
.hr-apps__link { color: inherit; display: inline-flex; align-items: center; min-height: var(--tap); }
.hr-apps__icon { text-align: center; }
.hr-apps__num { text-align: center; font-variant-numeric: tabular-nums; }
/* チェックは1つずつのフォーム（JS を使わない）。当たり判定 44px */
.hr-apps__check, .hr-apps__photo {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: var(--tap); min-height: var(--tap); padding: 0; border: 0; background: none; cursor: pointer; color: inherit;
}
.hr-apps__check:hover, .hr-apps__photo:hover { background: var(--surface-muted); border-radius: var(--radius); }
.hr-apps__fold { margin: 0 0 16px; }

/* ---- ポップアップ（第F3d-2段・2026-09-20）。<dialog> ＋ public/js/hr-modal.js。
   JS が動かないときは、リンクのまま別の画面で開く（作りは二段構え） ---- */
.hr-modal { width: min(920px, 94vw); max-height: 88vh; padding: 0; border: 1px solid var(--border-default); border-radius: 12px; background: var(--surface); color: inherit; overflow: hidden; }
.hr-modal::backdrop { background: rgba(17, 24, 39, 0.45); }
.hr-modal__bar { display: flex; align-items: center; gap: 8px; padding: 8px 8px 8px 16px; border-bottom: 1px solid var(--border-subtle); background: var(--surface-muted); }
.hr-modal__title { margin: 0; flex: 1; font-size: var(--fs-body); font-weight: var(--fw-bold); }
/* 左上の「← ◯◯に戻る」（重ねて開いたときだけ）。当たり判定は 44px */
.hr-modal__back {
  display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 10px;
  border: 1px solid var(--border-default); border-radius: var(--radius);
  background: var(--surface); color: var(--primary); font-size: 13px; cursor: pointer; white-space: nowrap;
}
.hr-modal__back:hover { background: var(--surface-muted); }
.hr-modal__back[hidden] { display: none; }
.hr-modal__close { min-width: var(--tap); min-height: var(--tap); border: 0; background: none; font-size: 20px; line-height: 1; cursor: pointer; color: inherit; border-radius: var(--radius); }
.hr-modal__close:hover { background: var(--surface); }
.hr-modal__body { padding: 16px; overflow: auto; max-height: calc(88vh - 56px); }
.hr-modal__body img { display: block; width: 100%; height: auto; }
/* 写真を拡大した画面の「エントリーシートを差し替える」（写真の上。当たり判定は .hr-app-detail__replace の疑似要素で 44px） */
.hr-modal__photo-actions { margin: 4px 0 14px; }
/* 「契約書を作って送る」が押せないとき（締結済み・今月の上限。理由は下の1行）。共有の .btn は変えず、この画面だけ */
.hr-contract__create-off { opacity: .5; cursor: not-allowed; }
.hr-modal__loading { margin: 0; font-size: 13px; color: var(--ds-text-muted); }
/* 後ろの一覧を動かさない（JS が付ける） */
body.is-modal-open { overflow: hidden; }
@media (max-width: 767px) {
  .hr-modal { width: 100vw; max-width: 100vw; max-height: 100vh; height: 100vh; border-radius: 0; border: 0; }
  .hr-modal__body { max-height: calc(100vh - 56px); }
}

/* ---- 進み具合のアイコン（第F3d段・2026-09-20）。partials/status-icon ----
   **形でも区別できること**（丸＋チェック／丸＋針／三角＋！）。色は補助。
   空白（まだ）は何も描かないが、同じ大きさの箱を置いて列を揃える */
.status-icon { display: inline-block; width: 20px; height: 20px; vertical-align: -4px; }
.status-icon--done { color: var(--state-done); }
.status-icon--progress { color: var(--state-progress); }
.status-icon--alert { color: var(--state-alert); }
.status-icon--none { color: var(--ds-text-muted); font-size: 13px; line-height: 20px; text-align: center; }
.status-icon--blank { background: none; }

/* 雇用契約書の欄（第F2b段）。警告の値は赤で（担当者の要対応と同じ中身） */
.hr-contract { margin-top: 24px; }
.hr-contract .hr-app-detail__row dd.is-warn, .hr-contract .hr-app-detail__note.is-warn { color: var(--state-alert); font-weight: var(--fw-bold); }
.hr-contract .hr-app-detail__note { margin-top: 8px; }
.hr-contract__form { margin-top: 12px; }
.hr-contract__fix { margin-top: 12px; }
/* 雇用契約書の要対応の一覧（/hr/contracts）。行全体が1つのリンク（当たり判定 44px 以上） */
.hr-contracts__list { list-style: none; margin: 0 0 16px; padding: 0; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.hr-contracts__list li + li { border-top: 1px solid var(--border-subtle); }
.hr-contracts__link { display: grid; gap: 2px; min-height: var(--tap); padding: 8px 12px; color: inherit; text-decoration: none; }
.hr-contracts__link:hover { background: var(--surface-muted); }
.hr-contracts__name { font-weight: var(--fw-bold); }
.hr-contracts__meta { font-size: 13px; color: var(--ds-text-muted); overflow-wrap: anywhere; }
.hr-app-detail__photo { display: block; width: 100%; height: auto; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }

/* 発行画面：アルバイト系の欄の「いま発行を止めています」の1行 */
.invite-roles__gate { margin: 0 0 8px; font-size: 13px; color: var(--ds-text-muted); line-height: 1.5; }

/* ---- テストユーザー切替（/admin/preview・ホームのバナー。2026-09-08）---- */
.admin-preview__step { display: flex; align-items: flex-end; gap: 12px; flex-wrap: wrap; margin: 0 0 16px; }
.admin-preview__step .field { flex: 1 1 220px; margin: 0; }
/* ホームの「テスト中」バナー：白ヘッダーの下・名前のカードの上。バーのチップと同じ赤の面＋白文字
   （テスト中は最優先で気づくべき状態）。375px は文言の下にボタンが落ちて2段になる（実測・意図どおり。
   1段に詰めると文言を削るしかない）。ボタンは白地で 44px */
.preview-banner {
  display: flex; align-items: center; gap: 10px 14px; flex-wrap: wrap;
  margin: 0 0 16px; padding: 10px 14px; border: 1px dashed #fff; border-radius: var(--radius);
  background: var(--state-alert); color: #fff; font-size: 14px; line-height: 1.5;
}
.preview-banner__label { flex: 1 1 220px; min-width: 0; }
.preview-banner__form { margin: 0; flex: none; }
.preview-banner__form .btn { background: #fff; color: var(--state-alert); border-color: #fff; }
.preview-banner__form .btn:hover { background: var(--ds-danger-tint); }

/* ---- 権限のマトリクス ---- */
.admin-perms__note { font-size: 13px; color: var(--ds-text-muted); margin: 0 0 16px; }
.admin-perms__section { margin: 0 0 28px; }
/* タブはピル型の共有部品（.pl-pill / .pl-tab）をそのまま使う。ここでは余白だけ。
   .pl-pill は**内容側**のピル部品で、アプリバー（.app-bar__tab）とは役割が違う——
   バーは「アプリの中のどこか」、これは「保存単位（どのアプリの設定か）」。バーには載せない
   （デザイン統一 段階3・案β）。名前の pl- は段階5で扱う */
.admin-perms__tabs { margin-bottom: 12px; }
/* 横に長い表（19行×17列）は自分のスクロール領域に閉じ込める（ページを横に伸ばさない） */
.admin-perms__scroll { overflow-x: auto; border: 1px solid var(--border-default); border-radius: 8px; margin: 0 0 12px; }
.admin-perms__table { border-collapse: collapse; font-size: 13px; }
/* 罫線：--border-subtle（#F0EEE9・白面に 1.04:1）ではスマホでほぼ見えなかったため、
   1段濃い --border-default（#E8E6E1）に上げる（computed 実測は docs/報告のとおり） */
.admin-perms__table th, .admin-perms__table td { border: 1px solid var(--border-default); }
/* グループ見出し：店舗＝灰の面（--surface-muted）、本部＝淡黄の面（--state-progress-tint の
   面色を借りる。色相の差で「別物」と分かるようにする。この画面のCSSに閉じ、トークン定義は触らない） */
.admin-perms__axis { padding: 6px 8px; font-weight: 700; }
.admin-perms__axis--store, .admin-perms__role--store { background: var(--surface-muted); }
.admin-perms__axis--hq, .admin-perms__role--hq { background: var(--state-progress-tint); }
/* 店舗と本部の境界は太い縦線（②③④のブロック区切り 2px と、区切り色 #9AA4AB を写す）。
   **.admin-perms__table を前置して詳細度を上げる**：上の一括罫線（th,td＝0,1,1）が
   border ショートハンドで left も上書きするため、クラス1つ（0,1,0）では負ける（computed で実測） */
.admin-perms__table .admin-perms__col--hq-first { border-left: 2px solid #9AA4AB; }
/* 役職名は縦書きで幅を詰める（17列を1画面に近づける）。当たり判定の話ではないので高さは自由 */
.admin-perms__role { padding: 8px 4px; vertical-align: bottom; }
.admin-perms__role-name { writing-mode: vertical-rl; white-space: nowrap; font-weight: 400; }
/* 権限名の列は sticky で左固定（③④の科目列と同じ考え方。left:0・z-index:1・背景を持たせ、
   右端の境目の線 #AEB4B8 は .pl-matrix__label の値を写した）。
   縦の sticky ヘッダーがこの画面には無いので、④で踏んだ「角＜帯」の重なり順問題は起きない
   （チェックのセルは position を持たず、常に sticky 列の下を通る。elementFromPoint で実測済み） */
.admin-perms__perm-head {
  background: var(--surface-muted); padding: 6px 12px;
  position: sticky; left: 0; z-index: 1;
}
.admin-perms__perm {
  text-align: left; font-weight: 400; padding: 6px 12px; background: #fff;
  /* 折り返して幅を抑える（nowrap だと説明文で列が伸び、スマホで固定列が画面を食い潰す） */
  min-width: 160px; max-width: 200px;
  position: sticky; left: 0; z-index: 1;
}
/* 固定列と本文の境目の線（境界の詳細度は上の太線と同じ理由で table を前置する） */
.admin-perms__table .admin-perms__perm-head,
.admin-perms__table .admin-perms__perm { border-right: 1px solid #AEB4B8; }
.admin-perms__perm-name { display: block; font-weight: 700; }
.admin-perms__perm-desc { display: block; font-size: 12px; color: var(--ds-text-muted); }
/* チェックのセル：label をセルいっぱいに広げ、--tap（44px）の当たり判定を確保する */
.admin-perms__cell { padding: 0; text-align: center; }
.admin-perms__check {
  display: flex; align-items: center; justify-content: center;
  min-width: var(--tap); min-height: var(--tap); cursor: pointer;
}
/* **既定の 13px は小さくて、入っているかが読み取れなかった**（2026-08-15 実測）。
   18px に上げ、チェックの色を完了の緑（--state-done）にする。役職の画面の
   チェックボックスと、個人ページの3択ラジオの両方に効かせる（同じ部品として揃える）。
   accent-color 非対応の環境でも大きさは効くので、劣化しても読みやすさは残る。 */
.admin-perms__check input { width: 18px; height: 18px; margin: 0; accent-color: var(--state-done); }

/* **役職ごとの画面はヘッダーを固定しない。** 縦書きの役職名で thead が背高く、
   PC(1280x720) の実測で 213px＝表の箱の 50% を占め、本文が19行中2行しか残らない
   （2026-08-15 実測）。読める行が減るほうが困るので見送る。
   個人ページ（.admin-user__scroll）はヘッダーが1行で低いので固定している。 */

/* ---- 個人ごとの例外（一覧。段階⑤ 第3段(b)）---- */
/* 絞り込みは3条件＋ボタン。狭い画面では折り返して縦に積む */
.admin-users__search { display: flex; align-items: flex-end; flex-wrap: wrap; gap: 8px; margin: 0 0 20px; }
.admin-users__field { flex: 1 1 160px; margin: 0; }
.admin-users__where { font-size: 12px; color: var(--ds-text-muted); }
/* いま何を表示しているかの1行。補足文と同じ扱い（13px・muted。.field__hint と同値） */
.admin-users__status { font-size: 13px; color: var(--ds-text-muted); margin: 0 0 8px; }
.admin-users__heading { font-size: 16px; margin: 20px 0 8px; }
.admin-users__empty { font-size: 13px; color: var(--ds-text-muted); margin: 0 0 12px; }
.admin-users__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.admin-users__link {
  display: flex; flex-direction: column; gap: 4px;
  padding: 12px 16px; border: 1px solid var(--border-default); border-radius: 12px;
  background: #fff; text-decoration: none; color: var(--ds-text-body); min-height: var(--tap);
}
.admin-users__link:hover { border-color: var(--ds-text-muted); }
.admin-users__name { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; font-weight: 700; }
.admin-users__perms { display: flex; flex-wrap: wrap; gap: 6px; font-size: 12px; }
.admin-users__perms--none { color: var(--ds-text-muted); }
/* 許可＝完了の緑、禁止＝破壊的操作の赤。どちらも既存の状態色をそのまま使う */
.admin-users__perm { padding: 1px 6px; border-radius: 4px; border: 1px solid transparent; }
.admin-users__perm--allow {
  color: var(--state-done); background: var(--state-done-tint); border-color: var(--state-done-border);
}
.admin-users__perm--deny {
  color: var(--ds-danger); background: var(--ds-danger-tint); border-color: var(--ds-danger-border);
}
/* 個人情報の権限（第2b段）：許可でも赤で目立たせる（誰が持っているかを一覧で把握するため）。--allow より後に置いて上書き */
.admin-users__perm--pii {
  color: #fff; background: var(--ds-danger); border-color: var(--ds-danger); font-weight: 700;
}

/* ============================================================
   メンバー管理（/members。第2段a＝読むだけ）
   一覧は「個人ごとの例外」の一覧と同じ部品を使う（admin-users__*）。
   ここは差分だけ。値は既存から写す（13px/--ds-text-muted は .field__hint と同値） */

/* 割合が未設定＝要対応。**名前の右側の余白へ寄せる**（下の行に置いたときは
   気づかれなかった）。色は付けない——見た目は .badge--expired（期限切れ＝要対応の赤。
   #B81C08／面 #FDECE9／枠 #F5C9C0）をそのまま借り、ここは位置だけを決める。
   名前が長い狭い画面では、.admin-users__name の flex-wrap で下の行に落ちる（重ならない） */
.members__todo { margin-left: auto; }

/* 個人ページ：いまの所属（兼任があるので複数行） */
.member__current { list-style: none; margin: 0 0 16px; padding: 0; display: grid; gap: 8px; }
.member__row {
  display: flex; flex-direction: column; gap: 8px;
  padding: 12px 16px; border: 1px solid var(--border-default); border-radius: 12px; background: #fff;
}
/* 1行目（役職・所属・割合・開始日）は横に並べ、狭い画面では折り返す */
.member__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; }
.member__role { font-weight: 700; }
.member__where { color: var(--ds-text-body); }
.member__share { color: var(--ds-text-body); }
.member__since { font-size: 12px; color: var(--ds-text-muted); }
/* 変更のフォーム。**JS を使わず details で開閉**（既存の作法）。
   変更の summary はボタンの見た目を借りるので、既定の三角は消して当たり判定は .btn の --tap に任せる。
   所属の追加の summary は .fold-toggle（新人申請の期間限定時給と同じ見た目・2026-09-20 案A） */
.member__edit > summary { list-style: none; cursor: pointer; align-self: flex-start; }
.member__edit > summary::-webkit-details-marker { display: none; }
/* 所属の追加は行の外（現任の一覧の下）に置く */
.member__add { margin: 0 0 16px; }
/* 社員以外の現任を持つ人には追加の入口の代わりに1行（所属の決まり・第M1段）。入口と同じ位置・同じ余白 */
.member__single-note { margin: 0 0 16px; font-size: 13px; color: var(--ds-text-muted); line-height: var(--lh-normal); }
.member__form {
  margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border-subtle);
  display: grid; gap: 12px;
}
/* **入力する場所は枠で囲む。** 地の文の中に入力欄が唐突に現れる形だと、
   details を開いたことも、どこからどこまでが1つの入力なのかも分からなかった。
   箱は招待の発行フォーム（.invite-form）から写した
   ：面 var(--surface)／枠 1px var(--border-default)／角 var(--radius-lg)／内側 18px。
   .member__form の「開いた中身」用の上罫線・上余白はここで打ち消す */
.member__panel {
  margin: 12px 0 0; padding: 18px; border-top: 0;
  background: var(--surface); border: 1px solid var(--border-default);
  border-radius: var(--radius-lg);
}
/* **いまの所属の行（白いカード）の中に開く枠は、面を一段落とす。**
   親も白なので、枠線1本だけでは開いたことが分かりにくかった。
   色は表の見出しに使っている var(--surface-muted)（#F5F4F1）。
   追加・割合の枠は親がページの地色（#F5F6F8）なので白のまま（.invite-form と同じ） */
.member__row .member__panel { background: var(--surface-muted); }
/* 枠の中の見出し（何の入力なのか）。節の見出し .admin-user__app と同じ 16px・太字 */
.member__panel-title {
  margin: 0; font-size: 16px; font-weight: 700; color: var(--ds-text-heading);
}
/* 兼務の割合は details の中ではなく独立した節なので、上の余白だけ変える */
.member__shares { margin: 0 0 16px; }
/* 何をする場所かの1行（.field__hint と同じ 13px・muted だが、strong は本文色で立てる） */
.member__shares-lead { margin: 0; font-size: 13px; color: var(--ds-text-muted); }
.member__shares-lead strong { color: var(--ds-text-body); }
/* 兼任の解除は「終わらせるだけ」の別の操作なので、変更のフォームとの間に区切りを置く。
   罫線は .member__form が持つものと同じ（開いた中身の区切りに使っている var(--border-subtle)） */
.member__end { margin-top: 16px; }
.member__end-note { margin: 12px 0 0; padding-top: 12px; border-top: 1px solid var(--border-subtle); }
/* 送信と「やめる」を横に並べる（狭い画面では折り返す）。
   **「やめる」は同じページへのリンク**——details を閉じる手段が summary だけでは
   分からないため、再読み込みで閉じた状態に戻す */
.member__actions { display: flex; flex-wrap: wrap; gap: 8px; }
/* 履歴の表。罫線と余白は権限設定の表から写す */
.member__table th, .member__table td { padding: 6px 12px; text-align: left; white-space: nowrap; }
.member__table thead th { background: var(--surface-muted); font-weight: 700; }
.member__period { font-variant-numeric: tabular-nums; }
/* 理由の下に「操作した人」を小さく添える（列を増やさずに済ませる） */
.member__who { display: block; font-size: 12px; color: var(--ds-text-muted); }
/* 履歴の修正の画面：見出しと「履歴の削除」を1行に（**削除は右上**）。
   狭い画面では折り返して、削除が見出しの下に来る */
.member__page-head {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 8px 12px; margin: 0 0 12px;
}
.member__page-head .page-title { margin: 0; }
/* 個人ページの「履歴を修正」の入口（見出しも説明も持たないボタン1つ） */
.member__history-entry { margin: 20px 0 0; }
/* 履歴の一覧：**期間のセルがリンク**（表のいちばん左なので横スクロールしても隠れない） */
.member__table td a { color: var(--primary); }
/* 履歴の削除の確認画面：削除する履歴の中身（左に項目名・右に値） */
.member__facts {
  display: grid; grid-template-columns: max-content 1fr; gap: 4px 16px;
  margin: 12px 0 0; font-size: 14px;
}
.member__facts dt { color: var(--ds-text-muted); }
.member__facts dd { margin: 0; }
/* 確認番号。**読み間違えないよう大きく**、等幅で字間を空ける */
.member__code {
  margin: 0; font-size: 32px; font-weight: 700; letter-spacing: 0.3em;
  font-variant-numeric: tabular-nums; color: var(--ds-text-heading);
}
/* 現任の行は面で示す（完了の緑ではなく、いま有効という意味の淡い面） */
.member__table tr.is-current > td { background: var(--state-done-tint); }

/* 「まとめられます」の警告。**入口は文中のリンクではなくボタン**——
   文中のリンクだと当たり判定が1行ぶん（約21px）しかなく、--tap の 44px を割る。
   組が複数あるときは縦に積む（1行が長いので横並びにしない）。
   **共有の .notice--error は触らない**（PL の警告帯にも波及するため）。 */
.member__merge-notice { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.member__merge-lead { margin: 0; }
/* 帯の中のボタンは白い面で置く（帯と同じ赤い面だと押せるものに見えない） */
.member__merge-notice .btn { background: var(--surface); text-align: left; }

/* まとめる確認画面：**何と何が1つになるか**。表にせず箇条書きにする——
   列が3つしかなく、横スクロールの中に入れると見比べにくいため。
   1件を1行に畳み、狭い画面では縦に積む（期間は等幅で桁を揃える）。 */
.member__merge-list { list-style: none; margin: 12px 0 0; padding: 0; font-size: 14px; }
.member__merge-list li {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px;
  padding: 8px 0; border-top: 1px solid var(--border-subtle);
}
.member__merge-list li:first-child { border-top: 0; }
.member__merge-period { font-variant-numeric: tabular-nums; font-weight: var(--fw-bold); white-space: nowrap; }
.member__merge-what { color: var(--ds-text-muted); }
/* 「この行を残します／消えます」。**行の右端に寄せる**（1件ずつの結末が読めるように） */
.member__merge-note { margin-left: auto; font-size: 12px; color: var(--state-alert); white-space: nowrap; }

/* ---- 個人ごとの例外（個人ページ）---- */
.admin-user__meta { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; font-size: 13px; }
.admin-user__roles { color: var(--ds-text-muted); }
.admin-user__app { font-size: 16px; margin: 20px 0 8px; }
/* 3択の列は権限名より狭くてよい（役職17列の表と違い、列が6つしかない） */
.admin-user__col { text-align: center; padding: 0 4px; white-space: nowrap; }
.admin-user__col--pick { padding: 0; }
/* ✓ と — は表の本文（13px・400）のままでは細くて読めなかった（2026-08-15 実測）。
   **大きさと太さを上げ、「持っている／いない」を面と色で分ける。**
   ✓ は 18px/700。役職からの✓は見出し色（--ds-text-heading）、
   実効の✓は完了の緑（--state-done）＝答えの列がいちばん目立つ、という段差を付ける。 */
.admin-user__mark { display: inline-block; font-size: 18px; line-height: 1; }
.admin-user__mark.is-yes { font-weight: 700; color: var(--ds-text-heading); }
.admin-user__mark.is-no { font-weight: 400; color: var(--state-revoked); }
/* 実効は「結局どうなるか」＝この画面の答え。面でも強調する（許可＝完了の緑） */
.admin-user__effective.is-on { background: var(--state-done-tint); }
.admin-user__effective.is-on .admin-user__mark.is-yes { color: var(--state-done); }
.admin-user__table thead th { background: var(--surface-muted); padding: 6px 8px; }

/* ヘッダーを上に固定する。**箱に高さの上限が無いと縦スクロールが箱の中で起きず、
   sticky top は発火しない**（.pl-scroll の注記と同じ）。上部（ヘッダー・戻る・氏名・
   役職・注記・タブ）の高さを実測して差し引く。**2026-09-04 実測**（表の箱の上端の座標。
   白ヘッダー65px→アプリバー48px に替えた後）：スマホ(375px) 332px ／ PC(1280px) 312px
   （2026-08-15 の 349／329 から、ヘッダーの差17pxぶん上がった）。余裕を20px足した値を使う。 */
.admin-user__scroll {
  max-height: calc(100vh - 352px);  /* dvh 非対応のブラウザ用 */
  max-height: calc(100dvh - 352px); /* 対応していればこちらが効く */
  min-height: 280px;                /* 画面が短くても潰れないように */
}
@media (min-width: 768px) {
  .admin-user__scroll { max-height: calc(100vh - 332px); max-height: calc(100dvh - 332px); }
}
/* **重なり順を明示する。** 縦（ヘッダー）と横（権限名の列）の固定が交差するので、
   ④で踏んだ「横スクロールすると科目の見出しの上を別の見出しが通る」を避ける：
   本文の左固定セル 1 ＜ ヘッダー 2 ＜ **左上の角 3**（角が最前面）。 */
.admin-user__table thead th { position: sticky; top: 0; z-index: 2; }
.admin-user__table thead .admin-perms__perm-head { left: 0; z-index: 3; }

/* ---- 個人情報の権限（hr.documents.view。第2b段・2026-09-17）----
   **新しいクラスだけ**を置く（admin-perms__perm 等の共有定義は変えない）。赤は破壊的操作と同じ --ds-danger 系。 */
/* 「個人情報」のバッジ（役職の画面の行・個人ページの区画で共通） */
.admin-perms__pii-badge {
  display: inline-block; margin: 0 0 2px; padding: 0 6px; border-radius: 4px;
  font-size: 11px; font-weight: 700; color: #fff; background: var(--ds-danger);
}
/* 役職の画面：行を赤く（固定列の th も背景を持つので、th と td の両方に塗る。左端に赤い線） */
.admin-perms__row--pii > th, .admin-perms__row--pii > td { background: var(--ds-danger-tint); }
.admin-perms__row--pii > th { box-shadow: inset 4px 0 0 var(--ds-danger); }
/* 理由の文言は固定列の中（役職の列をまとめたセルは横に長く、狭い画面では文言が切れるため） */
.admin-perms__pii-note { display: block; margin: 4px 0 0; font-size: 12px; font-weight: 700; color: var(--ds-danger); }
/* 個人ページ：一括保存のフォームの外に置く区画 */
.admin-user__pii {
  margin: 0 0 16px; padding: 12px 14px;
  border: 1px solid var(--ds-danger-border); border-left: 4px solid var(--ds-danger);
  border-radius: var(--radius); background: var(--ds-danger-tint);
}
.admin-user__pii-head { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin: 0; }
.admin-user__pii-head .admin-perms__pii-badge { margin: 0; }
.admin-user__pii-desc { margin: 4px 0 0; font-size: 12px; color: var(--ds-text-muted); }
.admin-user__pii-state { margin: 8px 0 0; font-size: 14px; font-weight: 700; }
.admin-user__pii-form { margin: 10px 0 0; }
.admin-user__pii-reason { margin: 8px 0 0; font-size: 13px; color: var(--ds-text-muted); }
/* 付与の確認画面（別画面）。**番号は読み間違えないよう大きく、字間を空ける**（履歴の削除の .member__code より大きく） */
.admin-hr-grant__warn { margin: 0 0 12px; }
.admin-hr-grant__facts {
  display: grid; grid-template-columns: max-content 1fr; gap: 4px 16px;
  margin: 0 0 16px; font-size: 14px;
}
.admin-hr-grant__facts dt { color: var(--ds-text-muted); }
.admin-hr-grant__facts dd { margin: 0; font-weight: 700; }
.admin-hr-grant__lead { margin: 0 0 8px; font-size: 13px; }
.admin-hr-grant__code {
  margin: 4px 0 12px; font-size: 44px; line-height: 1.1; font-weight: 700;
  letter-spacing: 0.4em; font-variant-numeric: tabular-nums; color: var(--ds-text-heading);
}
.admin-hr-grant__input { letter-spacing: 0.3em; font-variant-numeric: tabular-nums; font-size: 20px; }
/* 縦並び：赤い実行が上・キャンセルが下（CLAUDE.md の決まり。member__actions は使わない） */
.admin-hr-grant__actions { display: flex; flex-direction: column; gap: 10px; margin: 16px 0 0; }

/* ================================================================
   レシピ管理（rcp-*）。段階2＝読む側の3画面。
   **共有クラス（container / btn / notice 等）の定義は変えない**——
   ここには rcp- 接頭辞の画面専用クラスだけを置く。
   旧アプリ（reference/recipe-ledger）の inline style が実効値の原典。
   色はトークンへ写す。旧のアクセント紺・業態別パレットに対応トークンは無く、
   2026-08-27 に加藤さんが確定：リンク＝--primary／選択中＝ajcloud の既存表現
   （PL・権限設定タブと同じ #1F4E5F 塗り）／業態カード＝中立面で統一
   （ajcloud では色が意味を持つ体系＝緑:完了・赤:要対応・黄:注意を薄めない）。
   ================================================================ */

/* ---- 業態選択（旧「ホーム」62-85行） ---- */
/* 旧: padding 56px 24px・max-width 920px・中央寄せ。container(--maxw 960px) の中で再現する */
.rcp-home { padding: 40px 0 56px; }
/* 旧: 12px/700/letter-spacing .14em/rgba(0,0,0,.4) → 近似トークン --ds-text-muted */
.rcp-home__eyebrow {
  margin: 0 0 6px;
  text-align: center;
  font-size: 12px;
  font-weight: var(--fw-bold);
  letter-spacing: .14em;
  color: var(--ds-text-muted);
}
/* 旧: 30px/900。**900 は使わない**（自ホスト woff2 は 400/700 の2種）→ 700 */
.rcp-home__title {
  margin: 0 0 8px;
  text-align: center;
  font-size: 30px;
  font-weight: var(--fw-bold);
  letter-spacing: .02em;
  color: var(--ds-text-heading);
}
/* 旧: 13.5px/rgba(0,0,0,.55)/line-height 1.7 → --ds-text-muted */
.rcp-home__lead {
  margin: 0 0 34px;
  text-align: center;
  font-size: 13.5px;
  line-height: 1.7;
  color: var(--ds-text-muted);
}
/* 旧: repeat(auto-fill, minmax(220px,1fr))・gap 14px */
.rcp-home__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 14px;
}
/* 旧カード: #fff・border 1.5px rgba(0,0,0,.1)・radius 12・padding 20px 20px 18px・
   shadow 0 1px 3px rgba(0,0,0,.06)・hover translateY(-2px) */
.rcp-brand {
  display: flex;
  flex-direction: column;
  gap: 14px;
  background: var(--surface);
  border: 1.5px solid var(--border-default);
  border-radius: 12px;
  padding: 20px 20px 18px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, .06);
  text-decoration: none;
  transition: transform .08s ease;
}
.rcp-brand:hover { transform: translateY(-2px); }
/* 旧: 40×40・radius 10・業態別パレット地に白字 → 中立面で統一（2026-08-27 確定）。
   ajcloud では色が意味を持つ（緑=完了・赤=要対応・黄=注意）ので、意味のない色分けを増やさない */
.rcp-brand__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 10px;
  background: var(--state-neutral-tint);
  color: var(--ds-text-heading);
  font-size: 17px;
  font-weight: var(--fw-bold);
}
/* 旧: 17px/900 → 700 */
.rcp-brand__name { font-size: 17px; font-weight: var(--fw-bold); color: var(--ds-text-heading); }
/* 旧: 12px/rgba(0,0,0,.5)/line-height 1.6。名前との間隔は旧 margin-bottom:4px を gap で再現 */
.rcp-brand__meta { font-size: 12px; line-height: 1.6; color: var(--ds-text-muted); margin-top: -10px; }

/* ---- 詳細の操作行（編集ボタン） ----
   かつては「‹ 業態選択」＋業態名の行（.rcp-nav）。2026-09-06 に戻る導線をバーへ移し、2026-09-08 に編集ボタンも
   カードの中（原価率の隣。.rcp-stat--edit）へ移したので、カードの外の行は無くなった。カードの上の余白は .rcp-detail が持つ */

/* ---- レシピ一覧：上部バー（旧 90-111行） ---- */
/* 旧: padding 10px 20px・#fff・border-bottom rgba(0,0,0,.12) */
.rcp-bar {
  display: flex; flex-direction: column; gap: 10px;
  background: var(--surface);
  border: 1px solid var(--border-default);
  border-radius: var(--radius);
  padding: 12px 16px;
  margin: 12px 0;
}
.rcp-bar__form { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
/* 旧: border rgba(0,0,0,.18)・radius 4・padding 6px 10px・width 230px・13px */
.rcp-bar__search {
  border: 1px solid var(--border-default); border-radius: 4px;
  padding: 9px 10px; /* 旧 6px → タップ領域を --tap に寄せるため上下を広げた */
  width: 230px; max-width: 100%; font-size: 13px;
}
/* 旧: 12.5px・rgba(0,0,0,.6)。checkbox 込みで当たり判定 44px を確保 */
.rcp-bar__legacy {
  display: inline-flex; align-items: center; gap: 5px;
  min-height: var(--tap);
  font-size: 12.5px; color: var(--text-muted); cursor: pointer;
}
.rcp-bar__cats { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; row-gap: 10px; }
/* 旧: 11px/700/rgba(0,0,0,.45) */
.rcp-bar__cats-label { font-size: 11px; font-weight: var(--fw-bold); color: var(--ds-text-muted); margin-right: 2px; }
/* 旧チップ: padding 4px 10px・border rgba(0,0,0,.18)・radius 3・fw500→400。 */
.rcp-chip {
  display: inline-flex; align-items: center;
  padding: 4px 10px;
  border: 1px solid var(--border-default); border-radius: 3px;
  font-size: 12.5px; color: var(--text-muted); text-decoration: none;
  position: relative;
}
/* 見た目は低くても当たり判定 44px を疑似要素で確保（.pl-pill::after と同じ手法）。
   折り返し時の重なりは cats の row-gap 10px が防ぐ */
.rcp-chip::after { content: ""; position: absolute; inset: -8px 0; }
.rcp-chip:hover { background: var(--surface-muted); }
/* 選択中＝ajcloud の既存表現に合わせる（2026-08-27 確定）。
   権限設定タブ（.pl-tab.is-current）の computed 実測：背景/枠 rgb(31,78,95)＝#1F4E5F・
   白字・fw700（PL のタブも同じクラス・同じ規則 app.css の「濃い藍の塗り」ブロック）。
   写すのは色と太さ。チップの形（radius 3px）はこの画面のまま */
.rcp-chip.is-active {
  background: #1F4E5F; border-color: #1F4E5F;
  color: #fff; font-weight: var(--fw-bold);
}
/* 折り返しを許す：3b で「原材料マスタ」「カテゴリ管理」が増え、4つが1行に並ぼうとして
   375px でページが横にはみ出した（実測 scrollWidth 497）。行間は当たり判定の重なり規則（10px以上） */
.rcp-bar__right { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; row-gap: 10px; }
/* 旧: 12.5px・border rgba(0,0,0,.18)・radius 3・padding 4px 10px */
.rcp-deleted-toggle {
  display: inline-flex; align-items: center;
  min-height: 36px; padding: 0 10px; position: relative;
  border: 1px solid var(--border-default); border-radius: 3px;
  font-size: 12.5px; color: var(--text-muted); text-decoration: none;
}
.rcp-deleted-toggle::after { content: ""; position: absolute; inset: -4px 0; }
.rcp-deleted-toggle:hover { background: var(--surface-muted); }

/* ---- レシピ一覧：表（旧 134-173行） ---- */
.rcp-list { background: var(--surface); border: 1px solid var(--border-default); border-radius: var(--radius); overflow: hidden; }
/* 旧グリッド: 56px minmax(150px,460px) 104px 86px 84px 70px（操作列は段階3まで無し） */
.rcp-list__head,
.rcp-row { display: grid; grid-template-columns: 56px minmax(150px, 1fr) 104px 86px 84px 70px; align-items: center; padding: 0 16px; }
/* 原価の列が無い人（view_cost なし）は4列 */
.rcp-list--nocost .rcp-list__head,
.rcp-list--nocost .rcp-row { grid-template-columns: 56px minmax(150px, 1fr) 104px 86px; }
/* 旧ヘッダー: 11.5px/700/rgba(0,0,0,.5)・border-bottom 1.5px rgba(0,0,0,.25)・#f7f8fa */
.rcp-list__head {
  font-size: 11.5px; font-weight: var(--fw-bold); color: var(--ds-text-muted);
  background: var(--surface-muted);
  border-bottom: 1.5px solid var(--border-default);
}
.rcp-list__head .rcp-cell { padding-top: 7px; padding-bottom: 7px; }
/* 旧行: 13.5px・border-bottom rgba(0,0,0,.07)・hover #eef2fa（紺系）→ --surface-muted（2026-08-27 確定） */
.rcp-row {
  font-size: 13.5px; color: var(--text); text-decoration: none;
  border-bottom: 1px solid var(--border-subtle);
  min-height: var(--tap);
}
.rcp-row:hover { background: var(--surface-muted); }
.rcp-cell { padding: 8px; }
.rcp-cell--code { padding-left: 0; font-family: ui-monospace, Menlo, monospace; font-size: 12px; color: var(--ds-text-muted); }
.rcp-cell--name { color: var(--ds-text-heading); display: flex; align-items: center; gap: 6px; }
.rcp-row__legacy { font-size: 10.5px; color: var(--ds-text-muted); }
.rcp-cell--cat { color: var(--text-muted); font-size: 12.5px; }
.rcp-cell--price, .rcp-cell--cost, .rcp-cell--rate { text-align: right; font-family: ui-monospace, Menlo, monospace; }
/* 旧: 原価率は fw700・固定色（一覧では色分けしない。色が付くのは詳細だけ） */
.rcp-cell--rate { font-weight: var(--fw-bold); }
/* 旧フッター: 12px・rgba(0,0,0,.45)・padding 10px 20px */
.rcp-list__foot {
  display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap;
  padding: 10px 16px; font-size: 12px; color: var(--ds-text-muted);
}
/* 単価出典の切り替え（2026-09-08。一覧の下段と詳細の見出しの下）。文言＋select＋「切替」を 1 行に。当たり判定は select・ボタンとも 36px＋疑似要素で 44 */
.rcp-store { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; row-gap: 10px; margin: 0; font-size: 12px; color: var(--ds-text-muted); }
.rcp-store__label { display: inline-flex; align-items: center; }
@media (max-width: 767px) {
  /* 375px：文言を 1 行目に、select＋「切替」を 2 行目に（label に select を入れていた形では 3 行に割れた。実測 2026-09-08） */
  .rcp-store { width: 100%; }
  .rcp-store__label { flex: 1 1 100%; }
}
.rcp-store__select { min-height: 36px; font-size: 12.5px; padding: 4px 8px; border: 1px solid var(--border-default); border-radius: 6px; background: var(--surface); color: var(--text); }
.rcp-store__btn { position: relative; }
.rcp-store__btn::after, .rcp-store__select::after { content: ''; position: absolute; inset: -4px 0; }
.rcp-store--detail { margin-top: 12px; }

/* 狭い幅：行をカード型に畳む（旧のモバイル表示 115-133行 相当。手動切替は持ち込まない）。
   1行目=コード・名前・原価率／2行目=カテゴリ・売価・原価。並べ替えは order（flex は
   order 順で折り返す）。名前の flex-basis 55% が2行目を強制的に折り返させる */
@media (max-width: 767px) {
  .rcp-list { background: transparent; border: none; overflow: visible; display: flex; flex-direction: column; gap: 8px; }
  .rcp-list__head { display: none; }
  .rcp-row {
    display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px;
    background: var(--surface); border: 1px solid var(--border-default); border-radius: 8px;
    padding: 11px 13px;
  }
  .rcp-cell { padding: 0; }
  .rcp-cell--code { order: 0; font-size: 11px; }
  .rcp-cell--name { order: 1; flex: 1 1 55%; font-weight: var(--fw-bold); font-size: 15px; }
  .rcp-cell--rate { order: 2; font-size: 16px; }
  /* 旧カード2行目: 12.5px・rgba(0,0,0,.6)。カテゴリはチップ地 */
  .rcp-cell--cat { order: 3; background: var(--surface-muted); border-radius: 10px; padding: 2px 9px; font-size: 12.5px; }
  .rcp-cell--price { order: 4; font-size: 12.5px; }
  .rcp-cell--price::before { content: "売価 "; font-family: var(--font-sans); color: var(--text-muted); }
  .rcp-cell--cost { order: 5; font-size: 12.5px; }
  .rcp-cell--cost::before { content: "原価 "; font-family: var(--font-sans); color: var(--text-muted); }
  .rcp-list__foot { background: transparent; border: none; padding: 6px 4px; }
}

/* ---- 空の業態（旧 112-114行）：縞地の案内 ---- */
.rcp-empty {
  margin: 48px auto; max-width: 560px;
  background: repeating-linear-gradient(45deg, var(--surface-muted), var(--surface-muted) 6px, var(--border-subtle) 6px, var(--border-subtle) 12px);
  border: 1px dashed var(--border-default); border-radius: 4px;
  padding: 36px; text-align: center;
  font-size: 13.5px; line-height: 1.8; color: var(--ds-text-muted);
}

/* ---- 削除済みの一覧（旧 175-188行。復元ボタンは canEdit の人だけ＝段階3a-③） ---- */
.rcp-deleted { margin: 16px 0 20px; border: 1px solid var(--border-default); border-radius: 6px; overflow: hidden; background: var(--surface); }
.rcp-deleted__head {
  padding: 8px 14px; background: var(--surface-muted); border-bottom: 1px solid var(--border-default);
  font-size: 12.5px; font-weight: var(--fw-bold); color: var(--ds-text-muted);
}
.rcp-deleted__row {
  display: grid; grid-template-columns: 70px 1fr auto; gap: 10px; align-items: center;
  padding: 10px 14px; border-bottom: 1px solid var(--border-subtle); font-size: 13px;
}
.rcp-deleted__row--editable { grid-template-columns: 70px 1fr auto auto; }
.rcp-deleted__restore { display: flex; }
/* 狭い幅：復元ボタンは2行目へ折り返す（375px で横スクロールを出さない） */
@media (max-width: 519px) {
  .rcp-deleted__row--editable { grid-template-columns: 70px 1fr auto; }
  .rcp-deleted__restore { grid-column: 1 / -1; justify-content: flex-end; }
}
.rcp-deleted__code { font-family: ui-monospace, Menlo, monospace; font-size: 12px; color: var(--ds-text-muted); }
.rcp-deleted__name { font-weight: var(--fw-regular); }
.rcp-deleted__at { font-size: 12px; color: var(--ds-text-muted); }
.rcp-deleted__empty { padding: 14px; text-align: center; font-size: 12px; color: var(--ds-text-muted); }

/* ---- レシピ詳細（旧 249-395行の表示モード） ---- */
/* 旧: #fff・border rgba(0,0,0,.14)。角丸は無かったが ajcloud のカードに合わせて --radius */
/* 上の余白 12px は旧 .rcp-nav（padding-top 12px）が持っていたぶん。通知（.rcp-detail__notice）が出るときも同じ間隔 */
.rcp-detail { background: var(--surface); border: 1px solid var(--border-default); border-radius: var(--radius); overflow: hidden; margin: 12px 0 20px; }
.rcp-detail__notice { margin-top: 12px; }
/* 旧ヘッダー: padding 14px 18px・border-bottom 1.5px rgba(0,0,0,.2) */
.rcp-detail__head { padding: 14px 18px 16px; border-bottom: 1.5px solid var(--border-default); }
.rcp-detail__title { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
/* 旧: mono 12px rgba(0,0,0,.45) */
.rcp-detail__no { font-family: ui-monospace, Menlo, monospace; font-size: 12px; color: var(--ds-text-muted); }
/* 旧: 23px/900 → 700（自ホスト woff2 の2種） */
.rcp-detail__name { margin: 0; font-size: 23px; font-weight: var(--fw-bold); color: var(--ds-text-heading); }
.rcp-detail__legacy { font-size: 12px; font-weight: var(--fw-regular); color: var(--ds-text-muted); margin-left: 6px; }
/* 旧: 12px・border rgba(0,0,0,.15)・radius 3・padding 2px 7px */
.rcp-detail__cat { font-size: 12px; color: var(--text-muted); border: 1px solid var(--border-default); border-radius: 3px; padding: 2px 7px; }
.rcp-detail__expiry { margin: 8px 0 0; font-size: 12px; color: var(--text-muted); }
/* 旧: gap 26px・数値 20px mono 700・ラベル 13px rgba(0,0,0,.5) */
.rcp-detail__stats { display: flex; align-items: stretch; gap: 26px; flex-wrap: wrap; margin-top: 14px; }
/* 「レシピを編集」（2026-09-08）：原価率の隣＝行の右端。閲覧者にはこの箱ごと出ない（右に余白が空くだけで崩れない） */
.rcp-stat--edit { margin-left: auto; display: flex; align-items: center; }
@media (max-width: 767px) {
  /* 375px では 4 つの数字の行に入らない（実測）ので、行の下に回して左寄せ。gap の 26px は縦にも効くので詰める */
  .rcp-stat--edit { flex: 1 1 100%; margin-left: 0; margin-top: -10px; }
}
.rcp-stat { text-align: center; }
.rcp-stat__label { display: block; font-size: 13px; color: var(--text-muted); }
.rcp-stat__value { display: block; font-family: ui-monospace, Menlo, monospace; font-weight: var(--fw-bold); font-size: 20px; color: var(--ds-text-heading); }
/* 原価率の枠（旧 291行）。旧では未描画だったグレード色（2019-2021行の値）を
   ajcloud の状態トークンで描く：ok=完了緑 / warn=進行中の黄 / over=danger */
.rcp-stat--rate { border: 1px solid var(--border-default); border-radius: 5px; padding: 4px 16px; }
.rcp-stat--rate.is-ok { background: var(--state-done-tint); border-color: var(--state-done-border); }
.rcp-stat--rate.is-ok .rcp-stat__value { color: var(--state-done); }
.rcp-stat--rate.is-warn { background: var(--state-progress-tint); border-color: var(--state-progress-border); }
.rcp-stat--rate.is-warn .rcp-stat__value { color: var(--state-progress); }
.rcp-stat--rate.is-over { background: var(--ds-danger-tint); border-color: var(--ds-danger-border); }
.rcp-stat--rate.is-over .rcp-stat__value { color: var(--ds-danger); }
/* 超過・欠損の注意文（旧 2023行の overMsg。未描画だった値を notice の形で出す） */
.rcp-detail__over { margin: 12px 0 0; font-size: 12.5px; line-height: 1.6; border-radius: 6px; padding: 8px 12px; }
.rcp-detail__over.is-over { color: var(--ds-danger); background: var(--ds-danger-tint); border: 1px solid var(--ds-danger-border); }
.rcp-detail__over.is-ok, .rcp-detail__over.is-warn, .rcp-detail__over.is-none {
  color: var(--text-muted); background: var(--surface-muted); border: 1px solid var(--border-default);
}

/* ---- 材料：PC の表（旧 316-374行）。旧グリッド:
   40px minmax(120px,190px) 64px 84px 60px 92px minmax(220px,1fr) ---- */
.rcp-mat__head,
.rcp-mat__row { display: grid; grid-template-columns: 40px minmax(120px, 190px) 64px 84px 60px 92px minmax(220px, 1fr); align-items: center; padding: 0 18px; }
/* 原価の列が無い人は NO・名前・内容量・使用量の4列 */
.rcp-mat--nocost .rcp-mat__head,
.rcp-mat--nocost .rcp-mat__row { grid-template-columns: 40px minmax(120px, 1fr) 100px 100px; }
/* 旧ヘッダー: 12px/700/rgba(0,0,0,.55)・border-bottom rgba(0,0,0,.2) */
.rcp-mat__head { font-size: 12px; font-weight: var(--fw-bold); color: var(--ds-text-muted); border-bottom: 1px solid var(--border-default); }
.rcp-mat__head .rcp-mcell { padding-top: 8px; padding-bottom: 8px; white-space: nowrap; }
.rcp-mat__row { font-size: 14px; border-bottom: 1px solid var(--border-subtle); min-height: var(--tap); }
.rcp-mcell { padding: 8px 6px; }
.rcp-mcell--no { padding-left: 0; font-family: ui-monospace, Menlo, monospace; font-size: 11.5px; color: var(--ds-text-muted); }
/* 旧: 14.5px/600 → 700 */
.rcp-mcell--name { font-weight: var(--fw-bold); font-size: 14.5px; color: var(--ds-text-heading); }
/* 数値＋単位（旧 326-328行：数値は右寄せ・単位は左寄せ幅20px） */
.rcp-mcell--spec, .rcp-mcell--qty { display: flex; align-items: baseline; justify-content: flex-end; gap: 2px; font-family: ui-monospace, Menlo, monospace; font-size: 13px; color: var(--text-muted); }
.rcp-mcell__unit { width: 20px; text-align: left; font-size: 11px; color: var(--ds-text-muted); }
.rcp-mcell--speccost { text-align: right; font-family: ui-monospace, Menlo, monospace; font-size: 13.5px; color: var(--text-muted); }
/* 旧: 使用量原価（行の基準原価）は太字 15px */
.rcp-mcell--basecost { text-align: right; font-family: ui-monospace, Menlo, monospace; font-weight: var(--fw-bold); font-size: 15px; }
.rcp-mcell--stores { display: flex; flex-wrap: wrap; gap: 5px; padding: 6px; }
/* 旧: 12.5px/600/rgba(0,0,0,.7) */
.rcp-mat__same { font-size: 12.5px; color: var(--text-muted); }
/* 旧チップ: 高い=赤系（#fdecea）／安い=緑系（#eaf5ec）→ 状態トークンの tint へ */
.rcp-store-chip { display: inline-flex; align-items: baseline; gap: 4px; border-radius: 4px; padding: 2px 8px; font-size: 12.5px; }
.rcp-store-chip__name { font-weight: var(--fw-bold); }
.rcp-store-chip__cost { font-family: ui-monospace, Menlo, monospace; font-weight: var(--fw-bold); }
.rcp-store-chip--higher { background: var(--ds-danger-tint); border: 1px solid var(--ds-danger-border); }
.rcp-store-chip--higher .rcp-store-chip__name { color: var(--ds-danger); }
.rcp-store-chip--lower { background: var(--state-done-tint); border: 1px solid var(--state-done-border); }
.rcp-store-chip--lower .rcp-store-chip__name { color: var(--state-done); }
/* 旧: #f0f2f7・12px・rgba(0,0,0,.5) */
.rcp-mat__foot { padding: 11px 18px; background: var(--surface-muted); font-size: 12px; color: var(--ds-text-muted); }

/* ---- 材料：スマホの内訳カード（旧 299-315行） ---- */
.rcp-matm { display: none; padding: 12px 14px; flex-direction: column; gap: 7px; }
/* 旧: 11px/700/rgba(0,0,0,.5)/letter-spacing .06em */
.rcp-matm__label { font-size: 11px; font-weight: var(--fw-bold); color: var(--ds-text-muted); letter-spacing: .06em; }
/* 旧カード: #f7f8fa・border rgba(0,0,0,.08)・radius 7・padding 9px 11px */
.rcp-matm__card { background: var(--surface-muted); border: 1px solid var(--border-subtle); border-radius: 7px; padding: 9px 11px; }
.rcp-matm__top { display: flex; align-items: baseline; gap: 8px; }
/* 旧: 600→700 */
.rcp-matm__name { flex: 1; font-weight: var(--fw-bold); font-size: 14px; color: var(--ds-text-heading); }
.rcp-matm__cost { font-family: ui-monospace, Menlo, monospace; font-weight: var(--fw-bold); font-size: 14px; }
.rcp-matm__meta { display: flex; gap: 12px; margin-top: 3px; font-size: 12px; color: var(--text-muted); }
.rcp-matm__sup { margin-left: auto; }
/* 旧: 1人前原価の行 700/14px */
.rcp-matm__total { display: flex; justify-content: space-between; padding: 8px 4px 2px; font-weight: var(--fw-bold); font-size: 14px; }
.rcp-matm__total-num { font-family: ui-monospace, Menlo, monospace; }

/* PC表とスマホカードの切替（旧 isDesktop/isMobile の2ブロックをレスポンシブで） */
@media (max-width: 767px) {
  .rcp-mat { display: none; }
  .rcp-matm { display: flex; }
}

/* ---- 調理工程（旧 375-393行） ---- */
.rcp-steps { border-top: 1px solid var(--border-default); padding: 14px 18px; }
/* 旧: 11px/700/rgba(0,0,0,.5)/letter-spacing .08em */
.rcp-steps__label { font-size: 11px; font-weight: var(--fw-bold); color: var(--ds-text-muted); letter-spacing: .08em; margin-bottom: 10px; }
.rcp-steps__list { display: flex; flex-direction: column; gap: 10px; font-size: 13px; line-height: 1.6; color: var(--text); }
.rcp-step { display: flex; gap: 9px; align-items: flex-start; }
/* 旧: 900・紺 → 700・--ds-text-heading（2026-08-27 確定） */
.rcp-step__n { font-weight: var(--fw-bold); color: var(--ds-text-heading); flex: none; }
.rcp-step__text { white-space: pre-line; flex: 1; }
/* 旧: 縞地の未登録案内（390行）。「編集から追加」の文言は段階3まで落とす */
.rcp-steps__empty {
  font-size: 12.5px; color: var(--ds-text-muted);
  background: repeating-linear-gradient(45deg, var(--surface-muted), var(--surface-muted) 6px, var(--border-subtle) 6px, var(--border-subtle) 12px);
  border: 1px dashed var(--border-default); border-radius: 4px;
  padding: 16px; text-align: center; font-family: ui-monospace, Menlo, monospace;
}

/* ---- レシピ編集（段階3a-②。views/recipes-edit.ejs） ----
   旧・編集モード（app-body 397-567行）は紺枠＋表グリッドだが、色は既存トークンへ。
   材料の行は PC＝5列グリッド、狭い幅＝2列に畳んでラベルを行内に出す（表ヘッダーは隠す）。 */

.rcp-edit { display: flex; flex-direction: column; gap: 16px; margin-top: 12px; }
.rcp-edit__panel {
  background: var(--surface); border: 1px solid var(--border-default);
  border-radius: 8px; padding: 14px 16px;
}
.rcp-edit__sec { font-size: 13px; font-weight: var(--fw-bold); color: var(--ds-text-heading); margin: 0 0 10px; }
.rcp-edit__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 12px; }
.rcp-edit__name { grid-column: 1 / -1; }
.rcp-edit__actions { display: flex; gap: 10px; }
.rcp-edit__add { margin-top: 8px; }

/* 材料の行：原材料 / 内容量 / 使用量 / 歩留り / 使用量原価 / 削除 */
.rcp-eline {
  display: grid; grid-template-columns: minmax(200px, 1fr) 110px 100px 84px 90px 52px;
  gap: 8px; align-items: end; padding: 7px 0;
  border-bottom: 1px solid var(--border-subtle);
}
.rcp-eline--head {
  font-size: 11px; font-weight: var(--fw-bold); color: var(--ds-text-muted);
  border-bottom: 1px solid var(--border-default); padding: 0 0 4px;
}
.rcp-eline__cell { min-width: 0; }
.rcp-eline__ing { width: 100%; max-width: 100%; }
.rcp-eline__label { display: none; }
.rcp-eline__missing { font-size: 13.5px; align-self: center; }
/* 使用量原価（リアルタイム原価の行表示。旧 486行の mono・太字・右寄せ） */
.rcp-eline__cost { align-self: center; text-align: right; }
/* 見出しの揃え方は**セルの中身と一致させる**（2026-09-05。値=右寄せ・アイコン=中央。
   .rcp-eline__remove をそのまま当てると min-height: var(--tap) が見出し行を太らせるため、
   見出し専用の揃えだけを持つ） */
.rcp-eline--head .rcp-eline__cell--cost { text-align: right; }
.rcp-eline--head .rcp-eline__cell--remove { text-align: center; }
.rcp-eline__cost-v { font-family: ui-monospace, Menlo, monospace; font-weight: var(--fw-bold); font-size: 14px; }
/* 統計ボックス（.rcp-detail__stats を編集画面でも使う。余白だけ画面用に足す） */
.rcp-edit__stats { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--border-subtle); }
/* 完成後の量：JS がカテゴリーに合わせて付け外しする明示クラス（hidden 属性に頼らない） */
.rcp-edit__batch.is-off { display: none; }
/* 完成後の量：量と単位を 1 行に（20260911000001）。単位は 4 択の select。375px でも 1 行に収まる幅配分 */
.rcp-edit__batch-row { display: flex; gap: 8px; align-items: center; }
.rcp-edit__batch-row .rcp-edit__num { flex: 1 1 auto; min-width: 0; }
.rcp-edit__unit { flex: 0 0 auto; width: 6em; box-sizing: border-box; }
/* 仕込みレシピを材料にした行の印（詳細）。no の列に収まる小さなピル。リンクは通常の色 */
.rcp-sub-tag {
  display: inline-block; padding: 0 5px; border-radius: 999px; font-size: 10.5px; line-height: 16px;
  font-family: inherit; color: var(--ds-text-muted); border: 1px solid var(--border-default); white-space: nowrap;
}
.rcp-sub-link { font-weight: var(--fw-bold); }

/* ---- 並べ替え（2026-09-06。取っ手は JS が生成＝JS 無しでは出ない） ----
   is-sortable は JS が付ける。取っ手ぶんの余白もそのときだけ作る */
.rcp-edit__lines.is-sortable .rcp-eline,
.rcp-edit__steps.is-sortable .rcp-estep,
.rcpc-list.is-sortable .rcpc-row,
.rcp-list.is-sortable .rcp-row { position: relative; padding-left: 44px; } /* 一覧（2026-09-10）。grid の padding 0 16px の左だけ 44 に */
.rcp-drag {
  position: absolute; left: 0; top: 0; bottom: 0;
  width: 44px; /* 当たり判定は --tap（44px）を満たす。行の高さは入力欄で 44px 以上ある */
  display: flex; align-items: center; justify-content: center;
  color: var(--ds-text-muted); font-size: 16px;
  cursor: grab;
  /* **取っ手にだけ** touch-action: none。行の他の場所は普通にスクロールできる */
  touch-action: none;
  user-select: none; -webkit-user-select: none;
}
/* 持ち上げ中：面は既存の --surface-muted、浮きは影だけ（新しい色相は作らない）。
   行は transform: translateY でポインタに追従する（JS。DOM は離すまで動かさない） */
.rcp-eline.is-dragging,
.rcp-estep.is-dragging,
.rcpc-row.is-dragging,
.rcp-row.is-dragging {
  background: var(--surface-muted);
  box-shadow: 0 4px 18px rgba(0, 0, 0, .18);
  z-index: 1;
  will-change: transform;
}
.rcp-eline.is-dragging .rcp-drag,
.rcpc-row.is-dragging .rcp-drag,
.rcp-row.is-dragging .rcp-drag { cursor: grabbing; }
/* 一覧の並べ替えの案内と状態（JS が生やす。保存ボタンは無い＝入れ替えたらそのまま保存。2026-09-10） */
.rcp-order { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 12px 0 16px; min-height: 20px; }
.rcp-order__hint { font-size: 12px; color: var(--ds-text-muted); }
.rcp-order__status { font-size: 12px; color: var(--ds-text-muted); }
.rcp-order__status.is-ok { color: #0A7A3A; font-weight: var(--fw-bold); } /* 完了＝状態の濃い緑 */
.rcp-order__error { margin: 0 0 12px; }
/* 送信中は取っ手を押せない（is-saving は JS が付ける） */
.rcp-list.is-saving .rcp-drag { pointer-events: none; opacity: .4; }
/* 場所を空ける動き：ドラッグ中（is-drag-active）だけ、掴んでいない行に transition。
   **動きを減らす設定（prefers-reduced-motion: reduce）の人には付けない**＝即座にずれる */
@media (prefers-reduced-motion: no-preference) {
  .rcp-edit__lines.is-drag-active .rcp-eline:not(.is-dragging),
  .rcp-edit__steps.is-drag-active .rcp-estep:not(.is-dragging),
  .rcpc-list.is-drag-active .rcpc-row:not(.is-dragging),
  .rcp-list.is-drag-active .rcp-row:not(.is-dragging) {
    transition: transform .15s ease;
  }
}

/* ---- 食材の選択ポップアップ（2026-09-08。中身は JS が select から組む） ----
   旧アプリの「原材料を選択」ポップアップ（app-body 490-514行）の並び：
   ヘッダ（タイトル・検索・×）→ 仕入先タブ → 一覧。色は既存トークンへ。 */
/* JS 有効時：select は値の正として残したまま隠し、ボタンに置き換える */
select.rcp-eline__ing.is-replaced { display: none; }
.rcp-picker-open {
  display: flex; align-items: center; justify-content: space-between; gap: 6px;
  width: 100%; min-height: var(--tap); text-align: left; cursor: pointer;
  background: var(--surface);
}
.rcp-picker-open::after { content: '▾'; color: var(--ds-text-muted); flex: none; }
/* 名前は1行で省略（長い食材名で行が2行に伸びない。狭い幅の行高を揃える） */
.rcp-picker-open__label {
  flex: 1; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* **高さは画面基準で固定（80vh）**：中身任せにすると件数でダイアログの大きさが揺れ、
   スマホでは（flex の min-height 既定と相まって）一覧が潰れて消える
   （2026-09-08 実機で発生。1280px でも「めいらく564 / 他640」と揺れるのを実測）。
   ヘッダとタブは固定（flex:none）、残り全部を一覧に渡してそこだけスクロールする。 */
.rcp-picker {
  border: 1px solid var(--border-default); border-radius: 8px; padding: 0;
  width: 640px; max-width: 92vw; height: 80vh;
  color: var(--text);
}
.rcp-picker[open] { display: flex; flex-direction: column; }
/* 背景の覆い。旧アプリのオーバーレイ実測値（影と同類の生値。2026-09-08 承認済み） */
.rcp-picker::backdrop { background: rgba(20, 25, 35, .45); }
/* 開いている間は背後をスクロールさせない（明示クラス。hidden 属性に頼らない流儀） */
body.rcp-modal-open { overflow: hidden; }

.rcp-picker__head {
  display: flex; align-items: center; gap: 8px;
  flex: none; /* ヘッダは固定（スクロールしない） */
  padding: 8px 12px; background: var(--surface-muted);
  border-bottom: 1px solid var(--border-default);
}
.rcp-picker__title { font-size: 13px; font-weight: var(--fw-bold); white-space: nowrap; }
.rcp-picker__search { flex: 1; min-width: 0; }
.rcp-picker__close {
  flex: none; width: var(--tap); min-height: var(--tap);
  border: none; background: none; cursor: pointer;
  font-size: 15px; color: var(--ds-text-muted);
}
.rcp-picker__close:hover { color: var(--ds-text-heading); }

.rcp-picker__tabs {
  display: flex; flex-wrap: wrap; gap: 6px;
  flex: none; /* タブは固定。2行に折り返しても、残りは必ず一覧に渡る */
  padding: 8px 12px; border-bottom: 1px solid var(--border-default);
}
.rcp-picker__tab {
  display: inline-flex; align-items: center; min-height: var(--tap);
  padding: 0 14px; border-radius: 999px;
  border: 1px solid var(--border-default); background: var(--surface);
  color: var(--ds-text-heading); font-size: 13px; cursor: pointer;
}
.rcp-picker__tab:hover { background: var(--page-bg); }
/* 選択中＝ajcloud の既存表現（#1F4E5F 塗り・白字・700。2026-08-27 確定） */
.rcp-picker__tab.is-active {
  background: #1F4E5F; border-color: #1F4E5F; color: #fff; font-weight: var(--fw-bold);
}
/* 検索中：タブは効いていない（全件から検索。押すと検索を消してそのタブへ＝出口） */
.rcp-picker__tab.is-off { opacity: .45; }
.rcp-picker__searching { align-self: center; font-size: 12px; color: var(--ds-text-muted); }

/* **min-height: 0 が肝**：flex の既定（min-height:auto）だと中身より縮めず、
   スマホでヘッダ＋タブに縦を食われたとき一覧が枠の外へ押し出されて見えなくなる */
.rcp-picker__list { overflow-y: auto; flex: 1 1 0; min-height: 0; }
.rcp-picker__item {
  display: grid; grid-template-columns: 56px 1fr; gap: 8px; align-items: center;
  width: 100%; min-height: var(--tap); padding: 0 14px;
  border: none; border-bottom: 1px solid var(--border-subtle);
  background: var(--surface); text-align: left; cursor: pointer; font-size: 13.5px;
  color: var(--text);
}
.rcp-picker__item:hover { background: var(--surface-muted); }
.rcp-picker__item.is-current { background: #1F4E5F; color: #fff; }
.rcp-picker__item.is-current .rcp-picker__no { color: rgba(255, 255, 255, .7); }
.rcp-picker__no { font-family: ui-monospace, Menlo, monospace; font-size: 12px; color: var(--ds-text-muted); }
/* 仕込みレシピの行（値が負の鍵）：no の列の「仕込」は詳細の .rcp-sub-tag と同じピル */
.rcp-picker__no--sub {
  display: inline-block; padding: 0 5px; border-radius: 999px; font-size: 10.5px; line-height: 16px;
  font-family: inherit; border: 1px solid var(--border-default); white-space: nowrap; justify-self: start;
}
.rcp-picker__item.is-current .rcp-picker__no--sub { border-color: rgba(255, 255, 255, .5); }
.rcp-picker__name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 検索中の行：右端にどの仕入先かを出す（全件から探しているため） */
.rcp-picker__item--sup { grid-template-columns: 56px 1fr auto; }
.rcp-picker__sup { font-size: 11px; color: var(--ds-text-muted); white-space: nowrap; }
.rcp-picker__item.is-current .rcp-picker__sup { color: rgba(255, 255, 255, .7); }
.rcp-picker__empty { padding: 16px; text-align: center; font-size: 12.5px; color: var(--ds-text-muted); }

/* 狭い幅：ヘッダを2段に（タイトル＋×／検索）。375px でも検索欄が潰れない */
@media (max-width: 519px) {
  .rcp-picker__head { flex-wrap: wrap; }
  .rcp-picker__search { order: 3; flex-basis: 100%; }
  .rcp-picker__close { margin-left: auto; }
}
.rcp-eline__missing-note { display: block; font-size: 11px; color: var(--status-warning); }
.rcp-eline__nospec { align-self: center; color: var(--ds-text-muted); text-align: center; }
/* 削除チェック：当たり判定は label 全体で 44px を確保（--tap は変えない決めごと） */
.rcp-eline__remove { display: flex; align-items: center; justify-content: center; min-height: var(--tap); }
.rcp-eline__remove input { width: 18px; height: 18px; }

/* 工程 */
.rcp-edit__steps { display: flex; flex-direction: column; gap: 8px; }
.rcp-estep { display: flex; gap: 8px; align-items: flex-start; }
.rcp-estep__n { font-weight: var(--fw-bold); color: var(--ds-text-heading); flex: none; padding-top: 10px; min-width: 1.4em; text-align: right; }
.rcp-estep__text { flex: 1; resize: vertical; }

/* 狭い幅：**1段目＝原材料だけで横一行、2段目＝残り5項目**（2026-09-09。
   かつての3列折り返しは3段になり、1行が200〜224pxまで伸びていた・実測）。
   数値3欄は等分（minmax(0,1fr)＝ラベルの長さで広がらない）、原価と削除は内容幅 */
@media (max-width: 679px) {
  /* スマホは flex の2段組（1段目＝原材料、2段目＝残り5項目）。
     grid の max-content 列は、全列に跨る原材料セルの固有幅（食材名の長さ）が
     列幅へ配られ、**行ごとに列幅が変わって**しまった（実測）。flex なら各セルは
     自分のラベル幅で決まり、行をまたいでも同じ幅になる */
  .rcp-eline {
    display: flex; flex-wrap: wrap; align-items: flex-start;
    /* 列間だけ 6px に詰める（行間は 8px のまま）。2段目は 375px の幅予算が際どく、
       8px×4 だと数値入力の幅を広げた分（2026-09-04）で溢れる */
    gap: 8px 6px;
  }
  .rcp-eline--head { display: none; }
  /* 1段目＝原材料だけで幅いっぱい。**:first-child では狙えない**（DOM の先頭は JS が挿す取っ手） */
  .rcp-eline__cell--name { flex: 1 1 100%; min-width: 0; }
  /* 取っ手ぶんの字下げは1段目（原材料セル）だけに掛け、2段目は取っ手の下まで使う。
     375px では行の全幅を2段目に渡さないとラベル5本が1行に収まらない（実測 265px では不足） */
  .rcp-edit__lines.is-sortable .rcp-eline { padding-left: 0; }
  .rcp-edit__lines.is-sortable .rcp-eline .rcp-eline__cell--name { margin-left: 44px; }
  .rcp-edit__lines.is-sortable .rcp-eline .rcp-drag { bottom: auto; height: 73px; }
  .rcp-eline .field__control { width: 100%; min-width: 44px; box-sizing: border-box; }
  /* width:100% のままだと入力欄の固有幅（約155px）がセルを膨らませるため、
     数値入力は固定幅にする。幅は**入る値の桁数**から（44px固定は「100」が切れた。実測）：
     - 歩留り%：最大100＝3桁（検証の上限も100）→ 56px
     - 使用量：原本に4桁（1000）が5行ある（実測）→ 64px
     - 内容量：placeholder のマスタ値（例:「1800cc」）が見える 77px */
  .rcp-eline .rcp-eline__num { width: 56px; }
  .rcp-eline .rcp-eline__num[name^='line_qty'] { width: 64px; }
  .rcp-eline .rcp-eline__num[name^='line_spec'] { width: 77px; }
  /* ゴミ箱は2段目では見た目24px（44pxのままだと2段目の幅予算が溢れて3段目に折れる。実測）。
     **当たり判定44pxは疑似要素で左右に確保**——これは当たり判定の話で見た目の話ではない
     （CLAUDE.md）。左隣は使用量原価の文字＝押す物が無いので、重なっても誤タップ先が無い。
     上下には広げない（row-gap の重なり規則に触れない） */
  .rcp-eline .rcp-trash { min-width: 0; width: 24px; position: relative; }
  .rcp-eline .rcp-trash::after { content: ''; position: absolute; inset: 0 -10px; }
  /* 使用量原価を伸ばして、削除を右端に寄せる（原価の桁数で削除の位置が揺れない） */
  .rcp-eline__cost { flex: 1 1 auto; }
  .rcp-eline__label {
    display: block; font-size: 11px; color: var(--ds-text-muted);
    margin-bottom: 2px; white-space: nowrap;
  }
  .rcp-eline__nospec { text-align: left; }
  /* 削除セルは他のセルと同じ縦積み（ラベルの下に部品）。PC用の flex のままだと
     ラベル「削除」とゴミ箱が横に並んでセルが46pxに広がり、2段目が折れる（実測） */
  .rcp-eline__remove { display: block; }
  .rcp-eline__cost { text-align: left; align-self: start; } /* wide 用の中央寄せを戻し、ラベル行を揃える */
}

/* ---- 行の削除：ゴミ箱＋行内確認（2026-09-04。部品は JS が生やす＝JS 無しでは出ない） ---- */
.rcp-trash {
  min-width: var(--tap); min-height: var(--tap); /* 当たり判定は 44px */
  padding: 0; border: 0; background: none; cursor: pointer;
  font-size: 18px; line-height: 1;
}
/* 材料行：ゴミ箱に置き換えたらチェックボックスは明示クラスで消す（hidden 属性に頼らない） */
.rcp-eline__remove.is-replaced input[type='checkbox'] { display: none; }
.rcp-estep .rcp-trash { flex: none; align-self: flex-start; }
/* 行内の削除確認。**行に覆いかぶせる**＝どの行の話かが目で分かる。
   行は is-sortable（JS 有効時に必ず付く）で position: relative になっている。
   色は既存の ds-danger 系（新しい色は作らない） */
.rcp-delc {
  position: absolute; inset: 0; z-index: 2;
  display: flex; align-items: center; gap: 12px; padding: 0 12px;
  background: var(--ds-danger-tint);
  border: 1px solid var(--ds-danger-border);
  border-radius: var(--radius);
}
.rcp-delc__text {
  flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  color: var(--danger-dark); font-size: 13px; font-weight: var(--fw-bold);
}

/* 削除（段階3a-③）。危険操作の面は既存の ds-danger 系トークンで */
.rcp-edit__danger { margin-top: 4px; }
.rcp-edit__danger-panel {
  margin-top: 8px; padding: 14px 16px;
  background: var(--ds-danger-tint); border: 1px solid var(--ds-danger-border); border-radius: 8px;
}
.rcp-edit__danger-text { margin: 0 0 12px; font-size: 13px; line-height: 1.7; }
.rcp-bar__new { white-space: nowrap; }

/* ---- 原材料マスタ一覧（段階3b-②）----
   PL 分析表（.pl-scroll / .pl-table）と同じ作法：横スクロールは箱の内側に閉じ、
   thead は縦 sticky、左の2列（no・名前）は横 sticky。**共有クラスは使わず写す**
   （pl 側の定義を触ると PL の画面に効くため。CLAUDE.md の決まり）。 */
.rcpm-scroll {
  overflow: auto;
  margin-top: 12px; border: 1px solid var(--border-default); border-radius: var(--radius);
  /* 箱に高さの上限が無いと箱の中で縦スクロールが起きず、thead の sticky が発火しない
     （.pl-scroll の注記と同じ理由）。
     引く値＝箱の上端の実測＋15（PL の --pl-top と同じ作法。test/plTop.test.js が検査）。
     測り方は .pl の節の手順と同じ（偽DBは recipeDbFixtures、画面は /recipes/master）。
     **2026-09-06 の実測**（アプリバー 375px=98px／1280px=48px の後。見出し＋検索＋
     仕入先チップ。チップの行数はデータ次第で、フィクスチャは4社＋仕込み＝375px で2行）：
       箱の上端＝スマホ(375px) 384px ／ PC(1280px) 249px → 399／264
     以前の 260（1値）は段階2でバーに替えた後も測り直しておらず、375px では箱の下端が
     画面を 124px 越えていた（sticky は効くので気づかなかった）。
     **2026-09-09 の実測**（段階4-④-②。加藤＝canImport で「仕入CSV取込」の段が出る状態。
     検索＋「未設定のみ」＋「仕入未紐付けのみ」＋絞り込むが 375px で2行。
     **仕入先チップは「すべて」込みで 7 個以内なら 375px で 2 行**＝view.js の SUPPLIER_TABS_MEASURED。
     超えると一覧の表の下に見張りの1行が出る（4-⑥）。**超えても即 3 行にはならない**：2026-09-10 の実測では
     短い名前（西原商会・角三宮田青果・その他）で 8 個でも 2 行だった。3 行になったらここを測り直す）。
     **2026-09-10 以後、狭い幅（767px 以下）の仕入先はプルダウン（.rcp-sup）なのでチップの数に依らない。
     この前提は 768px 以上（PC）の折り返しの話**（20 個でも 1024px で 2 行＝実測）：
       箱の上端＝スマホ(375px) 470px ／ PC(1280px) 305px → 485／320
     内訳：4-③ の「仕入CSV取込」の段（+40 前後）は 09-06 の実測に入っておらず、今回の
     チェック追加は 375px で +46（PC は同じ行に収まり ±0）。
     **2026-09-10 の実測**（3つ目のチェック「マスタ単価が未設定」を足した後。375px で
     チェック2つ＋［チェック1つ＋絞り込む］の2行）：スマホ 478 ／ PC 305（不変）→ 493／320
     **2026-09-10 の実測（仕入先をプルダウンに・「作る」の入口をバー右に移して 3 ボタン）**（375px：プルダウン 1 段＋
     ボタンが［作る・未紐付け商品］［仕入CSV取込］の 2 段。1280px：チップ 1 行・ボタン 1 段。加藤＝canImport・canEdit）：
       スマホ 508 ／ PC 305 → 523／320（PC は preview-views で 303 と出たが、偽DBの本物アプリで測ると従来どおり 305）
     **2026-09-10 の実測（業態別の設定②-B：4 つ目のチェック「この業態で使っていない」＋「非表示 N」チップ）**
     （375px：チェックが 3 行に［2・1・1＋絞り込む］、チップはプルダウンと同じ行。1280px：チェックが 2 行に。
       加藤＝canImport・canEdit・非表示 2 件でチップあり）：スマホ 562（+54）／ PC 349（+44）→ 577／364
     **PC は仕入先チップ 21 個（本番）で 3 行になる**（2026-09-10 実測：本番の取引先名 20＋「非表示 N」を 1280px／1024px に
     並べて 3 行＝箱の上端 431。取引先は 2 か月の CSV で 22 社＝頭打ちの見立てなので 3 行前提で持つ）：PC 431 → 446。
     **2026-09-07 の実測（「非表示設定」ボタン＋絞り込み「入り数が未設定」＋ボタン名「新規原材料登録」の後。加藤・非表示 2 件でチップあり）**：
     375px はボタンが 3 段（新規原材料登録／未紐付けの仕入データ／非表示設定・仕入CSV取込。.rcp-bar__right の幅 309 で 1 段に
     2 つ入らない。ボタン名を「その他の原材料」に戻しても同じ 664）：スマホ 664（+102。うち「非表示設定」の段 +56 は
     実装後に測っていなかった）→ 679。1280px はボタン 1 段・フィクスチャのチップ 1 行で 359（+10）、チップを足して 3 行にすると
     439（1 行 40px）→ 454 */
  max-height: calc(100vh - 679px);
  max-height: calc(100dvh - 679px);
  min-height: 280px; /* 画面が短くても潰れないように（.admin-user__scroll と同じ） */
}
@media (min-width: 768px) {
  .rcpm-scroll { max-height: calc(100vh - 454px); max-height: calc(100dvh - 454px); }
}
.rcpm-table { border-collapse: collapse; width: 100%; font-size: 13px; background: var(--surface); }
.rcpm-table th, .rcpm-table td { padding: 8px 12px; border-bottom: 1px solid var(--border-default); white-space: nowrap; text-align: left; }
.rcpm-table thead th {
  position: sticky; top: 0; z-index: 2;
  background: var(--page-bg); font-weight: var(--fw-bold);
  /* sticky には border が付いてこないので影で下端の線を作る（.pl-table の注記と同じ） */
  box-shadow: inset 0 -1px 0 #AEB4B8;
}
/* 左固定の2列。**2列目の left は1列目の総幅**なので、1列目は幅を固定で持つ。
   **border-box で総幅68pxを明示する**——content-box の max-width 指定だと表のセルは
   padding 込みで44pxに潰れ、left:68 との間に隙間ができて後ろの列が透けた（実測） */
.rcpm-table__no {
  position: sticky; left: 0; z-index: 1; background: var(--surface);
  /* 2026-09-10：68 → 52px（数字は最大 4 桁「1090」＝13px 等幅で約 30px＋padding 10px×2）。右寄せで桁を揃える。詰めた 16px は名前へ */
  box-sizing: border-box; min-width: 52px; max-width: 52px; padding-left: 10px !important; padding-right: 10px !important;
  font-variant-numeric: tabular-nums;
}
/* 右寄せは「.rcpm-table th, .rcpm-table td { text-align: left }」より強い指定で（クラスだけでは負ける＝実測） */
.rcpm-table th.rcpm-table__no, .rcpm-table td.rcpm-table__no { text-align: right; }
.rcpm-table__name {
  position: sticky; left: 52px; z-index: 1; background: var(--surface);
  min-width: 120px; max-width: 176px; overflow: hidden; text-overflow: ellipsis;
  /* 横スクロールしたとき、固定列と本文の境目になる線（.pl-matrix__label と同じ理由） */
  box-shadow: inset -1px 0 0 #AEB4B8;
}
/* 左上の角（no・名前の見出し）は縦横どちらの sticky にも載るので、両方より前に出す */
.rcpm-table thead .rcpm-table__no,
.rcpm-table thead .rcpm-table__name { background: var(--page-bg); z-index: 3; }
.rcpm-table__num { text-align: right; font-variant-numeric: tabular-nums; }
.rcpm-table__status { font-variant-numeric: tabular-nums; }
.rcpm-table__note { margin-left: 6px; font-size: 11px; color: var(--ds-text-muted); }
/* 「全店設定済」だけ状態の緑（完了は LINE緑ではなく濃い緑。CLAUDE.md の使い分け） */
.rcpm-table__note.is-done { color: #0A7A3A; }
.rcpm-table__empty { text-align: center; color: var(--ds-text-muted); padding: 24px 12px; }
/* 行のチェック（②-B）＝ no の左隣の独立した列（2026-09-10）。canEdit のときだけ列がある（rcpm-table--check）。
   **左固定**：チェック列は left 0、no と名前は列幅 40px ぶん右へ（横スクロールしてもチェックと no が一緒に残る）。
   当たり判定はラベルをセルいっぱい（44px）に広げる */
.rcpm-table__check {
  position: sticky; left: 0; z-index: 1; background: var(--surface);
  box-sizing: border-box; min-width: 40px; max-width: 40px; padding: 0 !important; text-align: center;
}
.rcpm-table thead .rcpm-table__check { background: var(--page-bg); z-index: 3; }
.rcpm-table--check .rcpm-table__no { left: 40px; }
.rcpm-table--check .rcpm-table__name { left: 92px; }
.rcpm-table__checkbox { display: flex; align-items: center; justify-content: center; min-height: var(--tap); width: 40px; cursor: pointer; }
.rcpm-table__checkbox input { width: 18px; height: 18px; margin: 0; }
/* 「過去のみ」の印（過去レシピだけで使用。非表示にしても行は残る） */
.rcpm-table__tag { margin-left: 6px; font-size: 10.5px; color: var(--ds-text-muted); border: 1px solid var(--border-default); border-radius: 3px; padding: 0 4px; white-space: nowrap; }
/* 「非表示 N」チップは仕入先の絞り込みの右隣（狭い幅はプルダウンと同じ行、広い幅はチップ列の末尾） */
.rcpm-hidden-chip { margin-left: 4px; }
/* 一括の非表示／表示に戻す（表の下。未紐付け一覧の .rcpit-bulk と同じ形） */
.rcpm-bulk { display: flex; align-items: center; gap: 8px 10px; flex-wrap: wrap; row-gap: 10px; margin: 8px 0 0; padding: 8px 12px; background: var(--surface-muted); border: 1px solid var(--border-default); border-radius: var(--radius); }
.rcpm-bulk__label { font-size: 12px; font-weight: var(--fw-bold); color: var(--ds-text-muted); }
.rcpm-bulk__hint { flex: 1 1 100%; font-size: 12px; color: var(--ds-text-muted); line-height: 1.6; }
/* 非表示の確認画面 */
.rcpmh-summary { margin: 0 0 12px; line-height: 1.7; }
.rcpmh-list { list-style: none; margin: 0 0 16px; padding: 0; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.rcpmh-row { padding: 8px 12px; border-bottom: 1px solid var(--border-subtle); font-size: 13.5px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.rcpmh-row:last-child { border-bottom: 0; }
.rcpmh-row--more { color: var(--ds-text-muted); }
.rcpmh-row__use { font-size: 11.5px; color: var(--ds-text-muted); }
.rcpmh-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.rcpm-count { margin: 8px 0 0; font-size: 12px; color: var(--ds-text-muted); }
.rcpm-table__link { color: inherit; text-decoration: underline; text-underline-offset: 2px; }

/* ---- 原材料マスタ：店舗別単価ページ（段階3b-③）---- */
.rcpmd-meta { margin: 0 0 4px; font-size: 13px; color: var(--ds-text-muted); }
.rcpmd-meta__use { font-weight: var(--fw-bold); }
/* 上部の要約 2 行目＝仕入データの状態（取引先の列挙）。長い取引先名が並ぶので折り返しを許す */
.rcpmd-meta--sup { margin-bottom: 8px; overflow-wrap: anywhere; }
.rcpmd-hint { margin: 0 0 12px; font-size: 12px; color: var(--ds-text-muted); line-height: 1.7; }
/* この食材を作るレシピ（名前一致の表示だけ。メタ行と同じ調子で1行） */
.rcpmd-maker { margin: 0 0 4px; font-size: 13px; color: var(--ds-text-muted); line-height: 1.7; }
.rcpmd-maker__link { font-weight: var(--fw-bold); }
.rcpmd-stores {
  border: 1px solid var(--border-default); border-radius: var(--radius);
  background: var(--surface); overflow: hidden;
}
/* 1店舗＝1行（店名／現単価＋出所／入力欄）。375px でも1行に収まる幅配分 */
.rcpmd-store {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px; border-bottom: 1px solid var(--border-subtle);
  min-height: var(--tap);
}
.rcpmd-store:last-child { border-bottom: 0; }
.rcpmd-store__name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rcpmd-store__now { flex: none; font-variant-numeric: tabular-nums; white-space: nowrap; }
.rcpmd-store__src {
  display: inline-block; margin-left: 4px; padding: 1px 6px; border-radius: 999px;
  font-size: 11px; color: var(--ds-text-muted); border: 1px solid var(--border-default);
}
.rcpmd-store__src.is-manual { color: #0A7A3A; border-color: #0A7A3A; } /* 手入力＝状態の濃い緑 */
.rcpmd-store__input { flex: none; display: flex; align-items: center; gap: 4px; white-space: nowrap; }
.rcpmd-store__price { width: 88px; box-sizing: border-box; }
.rcpmd-actions { margin-top: 12px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }

/* ---- 不定貫（kg単価）トグル（段階4-②）----
   状態の1行（いま／説明）＋ 押す前に影響が見える表（店舗ごとの 100g あたり 前→後）＋ ボタン。
   影響が無い（変わる店舗が0）ときは表も警告も出さない（うるさくしない） */
.rcpmd-flag {
  margin: 0 0 16px; padding: 12px; border: 1px solid var(--border-default);
  border-radius: var(--radius); background: var(--surface);
}
.rcpmd-flag__head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 0 0 4px; }
.rcpmd-flag__title { font-weight: var(--fw-bold); }
.rcpmd-flag__state {
  display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 12px;
  color: var(--ds-text-muted); border: 1px solid var(--border-default);
}
.rcpmd-flag__state.is-on { color: #0A7A3A; border-color: #0A7A3A; } /* 立っている＝状態の濃い緑 */
.rcpmd-flag__desc { margin: 0 0 8px; font-size: 12px; color: var(--ds-text-muted); line-height: 1.7; }
.rcpmd-flag__warn { margin: 8px 0; }
/* 影響の表：店名／出所／100g あたり いま → 後。**table-layout: fixed** で右3列の幅を決め、
   店名は残りの幅で省略（…）する。auto のままだと 375px で表が 376px に膨らみ、ページが
   横に 406px へ伸びた（2026-09-06 実測）。数字は等幅 */
.rcpmd-flag__table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 13px; margin: 8px 0; }
.rcpmd-flag__table th, .rcpmd-flag__table td {
  padding: 6px 6px; border-bottom: 1px solid var(--border-subtle); text-align: left; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis;
}
.rcpmd-flag__table th { font-weight: var(--fw-regular); color: var(--ds-text-muted); font-size: 12px; }
.rcpmd-flag__table th:nth-child(2), .rcpmd-flag__table td:nth-child(2) { width: 5em; }
.rcpmd-flag__table th:nth-child(3), .rcpmd-flag__table td:nth-child(3),
.rcpmd-flag__table th:nth-child(4), .rcpmd-flag__table td:nth-child(4) { width: 5.5em; }
.rcpmd-flag__table .is-num { text-align: right; font-variant-numeric: tabular-nums; }
.rcpmd-flag__table tr.is-changed td.is-num { font-weight: var(--fw-bold); }
.rcpmd-flag__caption { margin: 8px 0 0; font-size: 12px; color: var(--ds-text-muted); }
/* 単位の変更：仕入データとの換算の前後（.rcpmd-flag__table と同じ作法。右 2 列は「換算できる／単位不一致」の幅） */
.rcpmd-attr__unit-table th:nth-child(2), .rcpmd-attr__unit-table td:nth-child(2) { width: 7em; }
.rcpmd-attr__unit-table th:nth-child(3), .rcpmd-attr__unit-table td:nth-child(3),
.rcpmd-attr__unit-table th:nth-child(4), .rcpmd-attr__unit-table td:nth-child(4) { width: 6em; }
.rcpmd-attr__unit-table td.is-warn { color: #B42318; }
.rcpmd-attr__unit-table td:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rcpmd-flag__form { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 8px; }
/* 規格・歩留まり・マスタ単価（③-②）：3 欄＋「影響を見る」を 1 行に。375px では欄が 2 列＋ボタンに折り返す（並べ方だけ幅で変わる） */
.rcpmd-attr__form { display: flex; flex-wrap: wrap; gap: 10px 12px; align-items: flex-end; margin: 4px 0 8px; }
.rcpmd-attr__field { flex: 1 1 140px; margin: 0; }
.rcpmd-attr__num { width: 100%; box-sizing: border-box; }
.rcpmd-attr__actions { flex: 0 0 auto; }

/* ---- 食材ページ：名前と仕入先（2026-09-07）。不定貫の区画（.rcpmd-flag）と同じ枠の作法。
   375px では名前・仕入先・ボタンが縦に3段、広い幅では1行（flex-wrap。並べ方だけ幅で変える） ---- */
.rcpmd-edit {
  margin: 12px 0; padding: 12px 14px;
  border: 1px solid var(--border-default); border-radius: var(--radius);
  background: var(--surface);
}
.rcpmd-edit__head { margin: 0 0 6px; }
.rcpmd-edit__title { font-weight: var(--fw-bold); }
.rcpmd-edit__form { display: flex; flex-wrap: wrap; gap: 10px 12px; align-items: flex-end; }
.rcpmd-edit__name { flex: 1 1 220px; margin: 0; }
.rcpmd-edit__sup { flex: 1 1 160px; margin: 0; }
.rcpmd-edit__actions { flex: 0 0 auto; }
.rcpmd-edit__hint { margin: 8px 0 0; font-size: 12px; color: var(--ds-text-muted); line-height: 1.7; }
/* この業態での設定（②-A）。名前と仕入先の区画と同じ枠。非表示中の印は不定貫の状態ピルと同じ形 */
.rcpmd-brand__state {
  display: inline-block; margin-left: 8px; padding: 1px 8px; border-radius: 999px; font-size: 12px;
  color: var(--ds-text-muted); border: 1px solid var(--border-default);
}
.rcpmd-brand__hidden { display: flex; align-items: center; gap: 8px; min-height: var(--tap); flex: 1 1 220px; font-size: 14px; }

/* 原材料ページ：置き換えの入口（④）。select と「影響を見る」を 1 行に（375px では折り返す） */
.rcpmd-replace { display: flex; flex-wrap: wrap; gap: 10px 12px; align-items: flex-end; margin: 0 0 12px; }
.rcpmd-replace__field { flex: 1 1 220px; margin: 0; }
.rcpmd-replace__actions { flex: 0 0 auto; }
.rcpmb-note { margin: 0 0 8px; font-size: 12.5px; color: var(--ds-text-muted); line-height: 1.7; }

/* ---- 原価の前後を見せる確認画面の部品（.rcpmb-*）。段階 2 の「結ぶ」確認画面は 2026-09-11 に撤去したが、
   ④「原材料をレシピに置き換える」の確認画面で同じ見た目（要約 3 行＋変わるレシピの表）を使うため残す。
   カテゴリー削除の確認（.rcpcd）と同じ container--narrow ---- */
.rcpmb-summary {
  margin: 0 0 8px; padding: 10px 14px;
  border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface);
}
.rcpmb-summary__line { margin: 0; padding: 4px 0; line-height: 1.7; font-variant-numeric: tabular-nums; }
.rcpmb-summary__k { display: inline-block; min-width: 3.5em; font-size: 12px; color: var(--ds-text-muted); }
.rcpmb-summary__src {
  display: inline-block; margin-left: 4px; padding: 0 6px; border-radius: 999px; font-size: 11px;
  color: #0A7A3A; border: 1px solid #0A7A3A; vertical-align: middle;
}
.rcpmb-why { margin: 0 0 12px; font-size: 13px; line-height: 1.8; }
.rcpmb-warn { margin: 0 0 16px; line-height: 1.7; }
.rcpmb-warn__link { display: inline-block; margin-top: 4px; font-weight: var(--fw-bold); }
/* 変わるレシピの表：不定貫の表（.rcpmd-flag__table）と同じ作法＝table-layout: fixed で右 3 列を決め、名前は省略 */
.rcpmb-table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 13px; margin: 4px 0 12px; }
.rcpmb-table th, .rcpmb-table td {
  padding: 6px 6px; border-bottom: 1px solid var(--border-subtle); text-align: left; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis;
}
.rcpmb-table th { font-weight: var(--fw-regular); color: var(--ds-text-muted); font-size: 12px; }
.rcpmb-table th:nth-child(2), .rcpmb-table td:nth-child(2),
.rcpmb-table th:nth-child(3), .rcpmb-table td:nth-child(3),
.rcpmb-table th:nth-child(4), .rcpmb-table td:nth-child(4) { width: 5.5em; }
.rcpmb-table .is-num { text-align: right; font-variant-numeric: tabular-nums; }
.rcpmb-table td.is-up, .rcpmb-table td.is-down { font-weight: var(--fw-bold); }
.rcpmb-actions { margin-top: 4px; }

/* ---- 食材ページ：仕入商品（段階4-④-②）。不定貫の区画（.rcpmd-flag）と同じ枠の作法 ---- */
.rcpmd-items {
  margin: 12px 0; padding: 12px 14px;
  border: 1px solid var(--border-default); border-radius: var(--radius);
  background: var(--surface);
}
.rcpmd-items__head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; row-gap: 4px; margin: 0; }
.rcpmd-items__title { font-weight: var(--fw-bold); }
.rcpmd-items__count, .rcpmd-items__period { font-size: 12px; color: var(--ds-text-muted); }
.rcpmd-items__empty { margin: 6px 0 0; font-size: 12.5px; color: var(--ds-text-muted); line-height: 1.7; }
.rcpmd-item { padding: 8px 0 4px; margin-top: 8px; border-top: 1px solid var(--border-default); }
/* 名前・取引先・経路の印・「外す」を1行に。狭い幅では折り返す（当たり判定の重なりは row-gap 10px） */
.rcpmd-item__head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; row-gap: 10px; }
.rcpmd-item__name { font-weight: var(--fw-bold); }
.rcpmd-item__sup { font-size: 12px; color: var(--ds-text-muted); }
/* 経路の印。一括確定は「あとでまとめて疑える」ように見た目で分ける（色は意味を足さず枠だけ実線→点線） */
.rcpmd-item__method {
  font-size: 11px; padding: 1px 6px; border-radius: 3px;
  border: 1px solid var(--border-default); color: var(--ds-text-muted); white-space: nowrap;
}
.rcpmd-item__method.is-auto { border-style: dashed; }
.rcpmd-item__unlink { margin-left: auto; }
/* 入り数（段階 2）：取引先・規格の行の末尾。「直す」はリンクのまま、疑似要素で当たり判定 44px（行の高さは変えない） */
.rcpmd-item__pack.is-unset { color: #B42318; }
.rcpmd-item__pack-edit { position: relative; font-weight: var(--fw-bold); padding: 0 4px; }
.rcpmd-item__pack-edit::after { content: ''; position: absolute; inset: -14px -6px; }
.rcpmd-item__pack-warn { color: #B42318; }
/* 入り数を入れる画面：入り数と単位を 1 行に */
.rcpk-row { display: flex; gap: 10px; align-items: flex-end; }
.rcpk-row__count { flex: 1 1 auto; margin: 0; }
.rcpk-row__unit { flex: 0 0 8em; margin: 0; }
.rcpk-src { margin-top: 6px; }
.rcpk-actions { margin-top: 12px; }
.rcpmd-item__table { width: 100%; border-collapse: collapse; font-size: 13px; margin-top: 6px; }
.rcpmd-item__table th, .rcpmd-item__table td { padding: 4px 6px; border-bottom: 1px solid var(--border-default); text-align: left; }
.rcpmd-item__table th { font-weight: var(--fw-regular); color: var(--ds-text-muted); font-size: 12px; }
.rcpmd-item__table .is-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.rcpmd-item__none { margin: 4px 0 0; font-size: 12px; color: var(--ds-text-muted); }
/* 一覧の「仕入商品」列：未紐付けは薄く */
.rcpm-table__link-count.is-none { color: var(--ds-text-muted); }
.rcpmd-items__link { margin-left: auto; }

/* ---- 仕入商品を選ぶ画面（段階4-④-③）。行は 375px で「名前と情報」の下に「ボタン」が回り込む ---- */
.rcpl-prep { margin: 0 0 12px; }
.rcpl-section {
  margin: 12px 0; padding: 12px 14px;
  border: 1px solid var(--border-default); border-radius: var(--radius);
  background: var(--surface);
}
.rcpl-section__title { margin: 0; font-size: 15px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rcpl-section__count { font-size: 12px; font-weight: var(--fw-regular); color: var(--ds-text-muted); }
.rcpl-section__hint { margin: 4px 0 0; font-size: 12px; color: var(--ds-text-muted); line-height: 1.7; }
.rcpl-section__empty { margin: 8px 0 0; font-size: 12.5px; color: var(--ds-text-muted); }
.rcpl-list { list-style: none; margin: 6px 0 0; padding: 0; }
.rcpl-list__caption { margin: 10px 0 0; font-size: 12px; color: var(--ds-text-muted); }
.rcpl-row {
  display: flex; align-items: center; gap: 8px 12px; flex-wrap: wrap;
  padding: 8px 0; border-top: 1px solid var(--border-default);
}
.rcpl-row__main { flex: 1 1 220px; min-width: 0; }
.rcpl-row__name { display: block; font-weight: var(--fw-bold); }
.rcpl-row__sup { display: block; font-size: 12px; color: var(--ds-text-muted); }
.rcpl-row__match { color: #0A7A3A; } /* 一致＝状態の濃い緑（LINE 緑は使わない） */
.rcpl-row__act { flex: none; display: flex; align-items: center; gap: 8px; margin-left: auto; }
/* 「結ぶ」「外す」は指で押す行のボタン。見た目の 36px（btn--sm）のまま当たり判定を 44px に（--tap は変えない） */
.rcpl-row__act .btn { position: relative; }
.rcpl-row__act .btn::after { content: ""; position: absolute; inset: -4px 0; }
.rcpl-row__state {
  font-size: 11px; padding: 1px 6px; border-radius: 3px;
  border: 1px solid var(--border-default); color: var(--ds-text-muted); white-space: nowrap;
}
.rcpl-row__state.is-auto { border-style: dashed; }
/* 他の食材に結び済み：押せる（向こうの食材ページへ）。当たり判定は 44px を確保 */
.rcpl-row__other { display: inline-flex; align-items: center; min-height: var(--tap); font-size: 12.5px; color: var(--ds-text-muted); }
.rcpl-search { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 8px; }
.rcpl-hint { margin: 12px 0; font-size: 12.5px; color: var(--ds-text-muted); }
.rcpl-auto__form { margin-top: 8px; }
/* ---- 仕入実績を店舗別単価に反映（段階4-⑤-②）。食材ごとの details、店舗の行は 375px で2段に折れる ---- */
.rcpi-apply-link { margin-left: 8px; }
.rcpa-period { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 0 12px; }
.rcpa-period__label { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; }
.rcpa-period__select { min-height: var(--tap); }
.rcpa-period__meta { font-size: 12px; color: var(--ds-text-muted); }
.rcpa-summary { margin: 0 0 12px; font-size: 13px; line-height: 1.7; }
.rcpa-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 12px 0; }
.rcpa-group {
  margin: 0 0 10px; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface);
}
.rcpa-group__summary {
  display: flex; align-items: center; gap: 6px 12px; flex-wrap: wrap;
  padding: 10px 14px; min-height: var(--tap); cursor: pointer; list-style: none;
}
.rcpa-group__summary::-webkit-details-marker { display: none; }
.rcpa-group__summary::before { content: "▸"; color: var(--ds-text-muted); }
.rcpa-group[open] .rcpa-group__summary::before { content: "▾"; }
.rcpa-group__name { font-weight: var(--fw-bold); }
/* 行の左端：「● 入る」（既定）か「□ 入れる」（例外）。右端：「□ 外す」（既定の行だけ）。
   「チェック＝入れる」と「チェック＝外す」が同じ表に混ざるので、位置（左／右）と動詞（必ず書く）の両方で区別する */
.rcpa-row__auto { flex: none; color: #0A7A3A; font-size: 12px; white-space: nowrap; min-width: 52px; }
.rcpa-row__opt { display: inline-flex; align-items: center; gap: 4px; min-height: var(--tap); cursor: pointer; white-space: nowrap; font-size: 12px; }
.rcpa-row__opt--in { color: var(--danger-dark); min-width: 52px; }
.rcpa-row__opt--out { margin-left: auto; color: var(--ds-text-muted); }
.rcpa-row.is-exception { background: var(--ds-danger-tint, #FBEAE7); border-radius: 4px; padding-left: 4px; padding-right: 4px; }
.rcpa-group__meta { font-size: 12px; color: var(--ds-text-muted); }
.rcpa-group__meta .is-warn { color: var(--danger-dark); }
.rcpa-group__items { margin: 0; padding: 0 14px 6px; font-size: 12px; color: var(--ds-text-muted); line-height: 1.6; }
.rcpa-rows { list-style: none; margin: 0; padding: 0 14px 6px; }
.rcpa-row { padding: 6px 0; border-top: 1px solid var(--border-default); }
.rcpa-row.is-blocked .rcpa-row__store, .rcpa-row.is-blocked .rcpa-row__prices { color: var(--ds-text-muted); }
.rcpa-row.is-same .rcpa-row__new { color: var(--ds-text-muted); }
/* 行の主役：チェック・店舗・現在→新（変動）。狭い幅では価格が下の段に回る */
.rcpa-row__main { display: flex; align-items: center; gap: 6px 10px; flex-wrap: wrap; min-height: var(--tap); cursor: pointer; font-size: 13px; }
.rcpa-row__check { width: 20px; height: 20px; margin: 0; flex: none; }
.rcpa-row__nocheck { width: 20px; height: 20px; flex: none; display: inline-block; }
.rcpa-row__store { flex: 1 1 120px; min-width: 0; font-weight: var(--fw-bold); }
.rcpa-row__prices { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; font-variant-numeric: tabular-nums; }
.rcpa-row__src {
  font-size: 11px; padding: 0 5px; border-radius: 3px;
  border: 1px solid var(--border-default); color: var(--ds-text-muted); white-space: nowrap;
}
.rcpa-row__src.is-manual { color: #0A7A3A; border-color: #0A7A3A; } /* 手入力＝状態の濃い緑（既存の .rcpmd-store__src と同じ） */
.rcpa-row__arrow { color: var(--ds-text-muted); }
.rcpa-row__new { font-weight: var(--fw-bold); }
.rcpa-row__pct { font-size: 12px; }
.rcpa-row__pct.is-up { color: var(--danger-dark); }
.rcpa-row__pct.is-down { color: #0A7A3A; }
.rcpa-row__reasons { margin: 2px 0 0 30px; padding: 0; list-style: none; font-size: 12px; color: var(--danger-dark); line-height: 1.6; }
.rcpa-row__items { margin: 2px 0 0 30px; font-size: 11.5px; color: var(--ds-text-muted); line-height: 1.6; }
/* 入り数を入れれば解決する行の導線（入り数 段階 3）。理由の下・同じ字下げ。当たり判定 44px は疑似要素（.rcpmd-item__pack-edit と同じ作法） */
.rcpa-row__fix { margin: 4px 0 0 30px; font-size: 12px; line-height: 1.6; }
.rcpa-row__fix-link { position: relative; font-weight: var(--fw-bold); padding: 0 4px; }
.rcpa-row__fix-link::after { content: ''; position: absolute; inset: -14px -4px; } /* 文字 17px＋28px＝45px（375px 実測） */
.rcpa-result {
  margin: 0 0 16px; padding: 12px 14px;
  border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface);
}
.rcpa-result__title { margin: 0 0 8px; font-size: 18px; }
.rcpa-recipes, .rcpa-ings { list-style: none; margin: 8px 0 0; padding: 0; font-size: 13px; }
.rcpa-recipes__item, .rcpa-ings__item { display: flex; align-items: center; gap: 6px 10px; flex-wrap: wrap; padding: 6px 0; border-top: 1px solid var(--border-default); min-height: var(--tap); }
.rcpa-recipes__name { font-weight: var(--fw-bold); }
.rcpa-recipes__brand { font-size: 12px; color: var(--ds-text-muted); }
.rcpa-recipes__cost { margin-left: auto; font-variant-numeric: tabular-nums; }
.rcpa-recipes__cost.is-up { color: var(--danger-dark); }
.rcpa-recipes__cost.is-down { color: #0A7A3A; }
.rcpa-ings__use { font-size: 12px; }

/* ---- 未紐付けの仕入商品（段階4-⑥-②）。行は「名前・取引先・金額」の下に候補ボタンと「作る」が折れる ---- */
.rcpit-note { margin: 0; font-size: 12px; color: var(--ds-text-muted); line-height: 1.6; }
.rcpit-count { margin: 8px 0 0; font-size: 12px; color: var(--ds-text-muted); }
.rcpit-list { list-style: none; margin: 8px 0 0; padding: 0; }
.rcpit-row {
  padding: 10px 0; border-top: 1px solid var(--border-default);
  display: flex; flex-direction: column; gap: 6px;
}
.rcpit-row__main { display: flex; align-items: baseline; gap: 4px 10px; flex-wrap: wrap; }
.rcpit-row__name { font-weight: var(--fw-bold); }
.rcpit-row__sup { font-size: 12px; color: var(--ds-text-muted); }
.rcpit-row__amt { margin-left: auto; font-variant-numeric: tabular-nums; font-size: 13px; white-space: nowrap; }
.rcpit-row__act { display: flex; align-items: center; gap: 8px 10px; flex-wrap: wrap; row-gap: 10px; }
.rcpit-cand { margin: 0; }
.rcpit-cand__btn { max-width: 100%; white-space: normal; text-align: left; }
.rcpit-cand__btn.is-exact { border-color: #0A7A3A; color: #0A7A3A; } /* 完全一致＝状態の濃い緑 */
.rcpit-new { white-space: nowrap; }
/* 非表示（2026-09-07）：行の「非表示にする」は控えめ（原材料にする側が主動作）。チップは分類チップの列末 */
.rcpit-hide { color: var(--ds-text-muted); }
.rcpit-hidden-chip { margin-left: 4px; }
.rcpit-row__hidden-at { font-size: 11.5px; color: var(--ds-text-muted); }
.rcpit-row__act .btn { position: relative; }
.rcpit-row__act .btn::after { content: ""; position: absolute; inset: -4px 0; } /* 当たり判定 44px（見た目は btn--sm） */
.rcpit-pager { display: flex; gap: 10px; flex-wrap: wrap; margin: 12px 0; }
/* ---- 食材を作る（段階4-⑥-③）。狭いフォーム。規格と単位は 375px でも横に並ぶ ---- */
.rcpn-form .field { display: block; margin: 0 0 14px; }
.rcpn-form .field__control { width: 100%; box-sizing: border-box; min-height: var(--tap); }
.rcpn-row { display: flex; gap: 12px; }
.rcpn-row__spec { flex: 1 1 60%; }
.rcpn-row__unit { flex: 1 1 40%; }
.rcpn-src { margin: -6px 0 14px; }
/* 仕入先の固定表示（商品なし版）。入力欄と同じ枠で、無効状態の面（--surface-muted）と薄い文字（--ds-text-muted）＝既存トークンだけ */
/* 単価欄＋添える単位（「/500cc」）。入力欄は残りの幅、単位は折り返さない */
.rcpn-price-row { display: flex; align-items: center; gap: 8px; }
.rcpn-form .rcpn-price-row .field__control { flex: 1 1 auto; width: auto; min-width: 0; }
.rcpn-price__unit { flex: 0 0 auto; white-space: nowrap; font-size: 13px; color: var(--ds-text-muted); font-variant-numeric: tabular-nums; }
.rcpn-same { margin: 0 0 12px; }
.rcpn-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 8px; }
/* 一括操作（一覧の上のボタン列と行のチェック） */
.rcpit-bulk { display: flex; align-items: center; gap: 8px 10px; flex-wrap: wrap; row-gap: 10px; margin: 8px 0 0; padding: 8px 12px; background: var(--surface-muted); border: 1px solid var(--border-default); border-radius: var(--radius); }
.rcpit-bulk__label { font-size: 12px; font-weight: var(--fw-bold); color: var(--ds-text-muted); }
.rcpit-bulk__hint { flex: 1 1 100%; font-size: 12px; color: var(--ds-text-muted); }
.rcpit-row__check { display: inline-flex; align-items: center; gap: 4px; min-height: var(--tap); cursor: pointer; font-size: 12px; color: var(--ds-text-muted); }
.rcpit-row__check input { width: 20px; height: 20px; margin: 0; }
/* ---- 一括の確認・結果（.rcpb）---- */
.rcpb-summary { margin: 0 0 12px; font-size: 14px; line-height: 1.7; }
.rcpb-summary__create { color: #0A7A3A; }
.rcpb-summary__skip { color: var(--danger-dark); }
.rcpb-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 12px 0; }
.rcpb-section { margin: 12px 0; padding: 12px 14px; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.rcpb-section__title { margin: 0 0 6px; font-size: 15px; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.rcpb-section__hint { font-size: 12px; font-weight: var(--fw-regular); color: var(--ds-text-muted); }
.rcpb-list { list-style: none; margin: 0; padding: 0; }
.rcpb-row { padding: 8px 0; border-top: 1px solid var(--border-default); }
.rcpb-row__name { display: block; }
.rcpb-row__label { display: block; font-size: 11px; color: var(--ds-text-muted); margin-bottom: 2px; }
.rcpb-row__name .field__control { width: 100%; box-sizing: border-box; min-height: var(--tap); }
.rcpb-row__meta { margin: 4px 0 0; font-size: 12px; color: var(--ds-text-muted); line-height: 1.6; }
.rcpb-row__items { margin: 4px 0 0; font-size: 13px; line-height: 1.6; }
.rcpb-row__arrow { color: var(--ds-text-muted); }
.rcpb-row__reason { margin: 2px 0 0; font-size: 12px; color: var(--danger-dark); line-height: 1.6; }
.rcpb-row__gone { color: var(--ds-text-muted); }
.rcpb-undo { margin: 0; }
/* 「食材を作る」の入口（表の下＝バーの高さを動かさない。バー右に置くと 375px で2段になり箱の上端が動いた） */
/* タブ増の見張り（原材料マスタ一覧・管理者だけ。**表の下**＝箱の上端を動かさない） */
.rcpm-tabwarn { margin: 6px 0 0; font-size: 12px; color: var(--danger-dark); }

/* 一覧の「一括確定のみ」の帯（レシピ一覧の食材絞り込み .rcp-ingfilter と同じ見た目。共有クラスは触らず写す） */
.rcp-filter-band {
  margin: 0 0 12px; padding: 8px 12px;
  background: var(--surface-muted); border: 1px solid var(--border-default); border-radius: var(--radius);
  font-size: 13px; line-height: 1.7;
}

/* ---- 仕入CSV取込（段階4-③）---- */
.rcpi-result {
  margin: 0 0 20px; padding: 12px 14px; border: 1px solid var(--border-default);
  border-radius: var(--radius); background: var(--surface);
}
.rcpi-result__title { margin: 0 0 8px; font-size: 18px; }
.rcpi-result__sub { margin: 16px 0 8px; font-size: 15px; }
.rcpi-result__dl { display: grid; grid-template-columns: max-content 1fr; gap: 4px 12px; margin: 0; font-size: 13px; }
.rcpi-result__dl dt { color: var(--ds-text-muted); white-space: nowrap; }
.rcpi-result__dl dd { margin: 0; overflow-wrap: anywhere; }
.rcpi-stores { list-style: none; margin: 0; padding: 0; font-size: 13px; }
.rcpi-stores__item {
  display: flex; align-items: center; gap: 8px; padding: 4px 0;
  border-bottom: 1px solid var(--border-subtle);
}
.rcpi-stores__item:last-child { border-bottom: 0; }
.rcpi-stores__name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rcpi-stores__code { color: var(--ds-text-muted); font-size: 12px; }
.rcpi-stores__n { flex: none; font-variant-numeric: tabular-nums; }
.rcpi-stores--skipped .rcpi-stores__name { color: var(--danger-dark); }
.rcpi-hint { margin: 8px 0 0; font-size: 12px; color: var(--ds-text-muted); line-height: 1.7; }
.rcpi-form-wrap { margin: 0 0 20px; }
.rcpi-form { margin-top: 8px; }
.rcpi-file { display: block; margin: 0 0 12px; }
.rcpi-file__input { display: block; margin-top: 6px; max-width: 100%; font-size: 14px; min-height: var(--tap); }
.rcpi-form__actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
/* 最近の取込の表。**table-layout: fixed** で右4列の幅を決め、対象月は残り幅で折り返す
   （nowrap のままだと 375px で 445px に膨らみ、ページが 461px に伸びた。2026-09-07 実測） */
.rcpi-table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 13px; }
.rcpi-table th, .rcpi-table td {
  padding: 6px 4px; border-bottom: 1px solid var(--border-subtle); text-align: left;
  vertical-align: top; overflow-wrap: anywhere;
}
.rcpi-table th:nth-child(2), .rcpi-table td:nth-child(2) { width: 6em; }
.rcpi-table th:nth-child(3), .rcpi-table td:nth-child(3) { width: 4.5em; }
.rcpi-table th:nth-child(4), .rcpi-table td:nth-child(4) { width: 3.4em; }
.rcpi-table th:nth-child(5), .rcpi-table td:nth-child(5) { width: 4em; }
.rcpi-table th { font-weight: var(--fw-regular); color: var(--ds-text-muted); font-size: 12px; }
.rcpi-table .is-num { text-align: right; font-variant-numeric: tabular-nums; }
.rcpi-table__tag, .rcpi-table__skip {
  display: inline-block; margin-left: 4px; padding: 0 6px; border-radius: 999px;
  font-size: 11px; color: var(--ds-text-muted); border: 1px solid var(--border-default);
}
.rcpi-table__skip { color: var(--danger-dark); border-color: var(--danger-dark); }

/* ---- カテゴリ管理（段階3b-④）---- */
.rcp-bar__cats-link { white-space: nowrap; }

/* ---- 原材料マスタ一覧：仕入先の絞り込みを幅で出し分ける（2026-09-10。PL の .pl-periods と同じ作法）----
   767px 以下＝<details> のプルダウン（.rcp-sup）、768px 以上＝折り返すチップ（.rcp-bar__cats--wide）。
   本番で仕入先が 20 個になり、375px でチップが 6 行＝箱の上端が 638 になったため。
   位置の基準（.rcp-bar の中）は幅で変えない。変えるのは並べ方だけ。**hidden 属性は使わない**。 */
.rcp-bar__cats--wide { display: none; }
/* 器は position: relative だけ（z-index を付けるとメニューが器に閉じ込められ sticky な表ヘッダーに負ける） */
.rcp-sup { position: relative; }
/* 閉じたボタン。チップと同じ見た目＋「▾」。絞っているときだけ選択中の塗り（すべては塗らない） */
.rcp-sup__toggle {
  display: inline-flex; align-items: center; min-height: var(--tap);
  padding: 0 12px; border: 1px solid var(--border-default); border-radius: 3px;
  background: var(--surface); color: var(--ds-text-heading); font-size: 13px;
  cursor: pointer; list-style: none; user-select: none;
}
.rcp-sup__toggle::-webkit-details-marker { display: none; }
.rcp-sup__toggle::after { content: '▾'; margin-left: 6px; font-size: 11px; }
.rcp-sup[open] > .rcp-sup__toggle::after { content: '▴'; }
.rcp-sup__toggle.is-active { background: #1F4E5F; border-color: #1F4E5F; color: #fff; font-weight: var(--fw-bold); }
/* メニュー：器基準の absolute を**左右いっぱい**に（ボタン左端基準だと右に寄ったとき画面からはみ出す）。
   1 列の縦並び（名前の長さが揃わない・指で選ぶので誤タップを減らす）。項目の当たり判定は 44px */
.rcp-sup__menu {
  position: absolute; left: 0; right: 0; z-index: 5; margin-top: 6px; padding: 6px;
  max-width: calc(100vw - 24px); max-height: 60vh; overflow: auto;
  display: flex; flex-direction: column; gap: 2px;
  background: var(--surface); border: 1px solid var(--border-default);
  border-radius: var(--radius); box-shadow: var(--shadow-card);
}
.rcp-sup__item {
  display: flex; align-items: center; min-height: var(--tap); padding: 0 12px;
  border-radius: 3px; color: var(--ds-text-heading); font-size: 13px; text-decoration: none;
}
.rcp-sup__item:hover { background: var(--surface-muted); }
.rcp-sup__item.is-active { background: #1F4E5F; color: #fff; font-weight: var(--fw-bold); }
/* 狭い幅：プルダウンと「非表示 N」チップを同じ行に（器は position を持たない＝メニューの absolute は .rcp-sup 基準のまま） */
.rcpm-supline { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; row-gap: 10px; }
@media (min-width: 768px) {
  .rcp-bar__cats--wide { display: flex; }
  .rcp-sup, .rcpm-supline { display: none; }
}
.rcpc-hint { margin: 0 0 12px; font-size: 12px; color: var(--ds-text-muted); }
.rcpc-list {
  border: 1px solid var(--border-default); border-radius: var(--radius);
  background: var(--surface); overflow: hidden; margin-bottom: 16px;
}
.rcpc-row { padding: 8px 12px; border-bottom: 1px solid var(--border-subtle); min-height: var(--tap); display: flex; align-items: center; }
.rcpc-row:last-child { border-bottom: 0; }
.rcpc-row__form { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; }
.rcpc-row__name { flex: 1 1 120px; min-width: 0; box-sizing: border-box; }
.rcpc-row__count { flex: none; font-size: 12px; color: var(--ds-text-muted); white-space: nowrap; }
/* 仕込みの行：他の行と同じ3スロット（名前・件数・ボタン幅）＋2行目に理由文。
   名前のスパンは**入力欄と同じ寸法**（padding 10px 12px＋透明の枠1px・min-height 44・
   font-size 16px）にして、他の行の入力の文字と縦横の位置を揃える */
.rcpc-row--batch { flex-wrap: wrap; gap: 10px; }
.rcpc-row--batch .rcpc-row__name {
  display: flex; align-items: center; min-height: var(--tap);
  padding: 10px 12px; border: 1px solid transparent; font-size: 16px;
}
.rcpc-row__fixed { font-weight: var(--fw-bold); }
.rcpc-row__ghost { visibility: hidden; } /* 保存ボタンの席取り（幅は本物のボタンと同じ） */
.rcpc-row__note { flex: 1 1 100%; margin: 0; font-size: 12px; color: var(--ds-text-muted); }
/* 行の「削除」リンク（確認画面へ）。当たり判定は疑似要素で 44px（見た目は文字だけ） */
.rcpc-row__delete {
  position: relative; flex: none; font-size: 12px; color: var(--danger-dark); text-decoration: underline; white-space: nowrap;
}
.rcpc-row__delete::after { content: ""; position: absolute; inset: -13px -6px; } /* 文字 19px＋26px＝45px（375px 実測） */
/* 削除したカテゴリー（30 日以内）。行ごとに 名前・削除日／合流先の文／復元ボタン */
.rcpc-restore { margin-top: 24px; padding: 12px 14px; border: 1px solid var(--border-default); border-radius: var(--radius); background: var(--surface); }
.rcpc-restore__title { margin: 0 0 8px; font-size: 15px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rcpc-restore__hint { font-size: 12px; font-weight: var(--fw-regular); color: var(--ds-text-muted); }
.rcpc-restore__list { list-style: none; margin: 0; padding: 0; }
.rcpc-restore__row { padding: 8px 0; border-top: 1px solid var(--border-subtle); }
.rcpc-restore__meta { margin: 0 0 4px; font-size: 13px; }
.rcpc-restore__text { margin: 0 0 8px; font-size: 12.5px; color: var(--ds-text-muted); line-height: 1.7; }
.rcpc-restore__text.is-merge { color: var(--danger-dark); } /* 合流＝中身の違うカテゴリーに加わる。目に留まる色に */
.rcpc-restore__form { margin: 0; }
/* 削除の確認画面 */
.rcpcd-warn { margin: 0 0 16px; line-height: 1.7; }
.rcpcd-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.rcpc-add { display: flex; align-items: center; gap: 10px; }
.rcpc-add__name { flex: 1 1 160px; min-width: 0; box-sizing: border-box; }
/* 並び順の保存フォーム（JS が生やす。押すまでサーバーに送らない） */
.rcpc-order { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 0 0 16px; }
.rcpc-order__hint { font-size: 12px; color: var(--ds-text-muted); }

/* 一覧の「◯◯を使うレシピ」帯（食材の絞り込み中） */
.rcp-ingfilter {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  margin: 0 0 12px; padding: 8px 12px;
  background: var(--surface-muted); border: 1px solid var(--border-default); border-radius: var(--radius);
  font-size: 13px;
}
.rcp-ingfilter__label { font-weight: var(--fw-bold); }

/* ================================================================
   目標設定（第1段・2026-09-23 加藤さん決定）。views/targets-*.ejs
   ■ **同じマークアップのまま、幅で見せ方だけ変える**
     スマホ（〜767px）… 月ごとのカード（A-1）。入力済みの月は畳む（checkbox と CSS だけ・JS 無し）
     パソコン（768px〜）… 横に12か月・縦に項目の表（A-2）。畳みは効かせない（全部見せる）
   ■ 入れる欄は色の付いた面（今のスプレッドシートの「色の付いた所」に当たる）。自動で出るものは沈めた文字
   ■ 当たり判定は 44px（--tap）。人時生産性は % ではなく 円／時（欄にも表にも単位を添える）
   ================================================================ */
.tg-page { --tg-input-tint: #EAF2F5; --tg-input-line: #9DBCC6; --tg-auto: #5C6672; }
.tg-lead { color: var(--ds-text-muted); margin: 0 0 12px; font-size: 14px; line-height: 1.7; }

/* 期のチップ（PL の期間チップとは別クラス＝共有クラスの定義を巻き込まない） */
.tg-terms { display: flex; flex-wrap: wrap; gap: 8px; row-gap: 10px; margin: 0 0 16px; }
.tg-term {
  display: inline-flex; align-items: center; min-height: var(--tap); padding: 0 16px;
  border: 1px solid var(--border-default); border-radius: 999px; background: var(--surface);
  color: var(--text); font-size: 14px; text-decoration: none; white-space: nowrap;
}
a.tg-term:hover { background: var(--surface-muted); }
.tg-term.is-current { background: var(--app-bar-bg, #1F4E5F); border-color: var(--app-bar-bg, #1F4E5F); color: #fff; font-weight: var(--fw-bold); }

/* 過去の実績（らくらく帳票につなぐまでは枠だけ） */
.tg-past { border: 1px solid var(--border-default); border-radius: 12px; background: var(--surface); padding: 14px; margin: 0 0 16px; }
.tg-past__title { font-size: 15px; font-weight: var(--fw-bold); margin: 0 0 8px; }
.tg-past__empty {
  margin: 0; padding: 20px 12px; text-align: center; font-size: 13px; color: var(--ds-text-muted);
  border: 1px dashed var(--border-default); border-radius: 8px; background: var(--page-bg);
}

/* どこが入れる欄かの説明 */
.tg-legend { display: flex; flex-wrap: wrap; gap: 8px 16px; margin: 0 0 12px; font-size: 13px; color: var(--ds-text-muted); }
.tg-legend__box, .tg-legend__auto { display: inline-block; width: 16px; height: 16px; vertical-align: -3px; margin-right: 6px; border-radius: 4px; }
.tg-legend__box { background: var(--tg-input-tint); border: 1px solid var(--tg-input-line); }
.tg-legend__auto { background: var(--page-bg); border: 1px dashed var(--border-default); }

/* 入れる欄。高さは 44px を切らない */
.tg-input {
  width: 100%; min-height: var(--tap); box-sizing: border-box; padding: 0 10px;
  border: 1px solid var(--tg-input-line); border-radius: 8px; background: var(--tg-input-tint);
  font-family: inherit; font-size: 15px; text-align: right; font-variant-numeric: tabular-nums; color: var(--text);
}
.tg-input:disabled { background: var(--surface-muted); border-color: var(--border-default); color: var(--ds-text-muted); }
.tg-input:focus-visible { outline: 2px solid var(--app-bar-bg, #1F4E5F); outline-offset: 1px; }
.tg-cell { display: grid; gap: 4px; }
.tg-cell__label { font-size: 12px; color: var(--ds-text-muted); }

/* ---- スマホ：月ごとのカード。畳みは checkbox（name 無し＝送られない）と CSS だけ ---- */
.tg-grid { display: grid; gap: 12px; margin: 0 0 16px; }
.tg-rowhead { display: none; }
.tg-month { border: 1px solid var(--border-default); border-radius: 12px; background: var(--surface); padding: 0; }
.tg-month.is-empty { border-left: 4px solid var(--state-alert); }
.tg-fold { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.tg-month__head {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  min-height: var(--tap); padding: 8px 14px; cursor: pointer;
}
.tg-month__head::after { content: '▾'; margin-left: auto; color: var(--ds-text-muted); }
.tg-fold:checked ~ .tg-month__head::after { content: '▸'; }
.tg-fold:focus-visible ~ .tg-month__head { outline: 2px solid var(--app-bar-bg, #1F4E5F); outline-offset: -2px; }
.tg-month__name { font-size: 16px; font-weight: var(--fw-bold); }
.tg-month__prev, .tg-month__state { font-size: 12px; color: var(--ds-text-muted); }
.tg-month.is-empty .tg-month__state { color: var(--state-alert); }
.tg-month > .tg-cell { padding: 0 14px 10px; }
.tg-month > .tg-calc { margin: 0; padding: 4px 14px 12px; display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: 13px; color: var(--tg-auto); }
.tg-calc b { color: var(--text); font-variant-numeric: tabular-nums; }
.tg-prev { display: none; }
/* 畳んだ月は、欄と自動の行を隠す（見出しだけ残る） */
.tg-fold:checked ~ .tg-cell, .tg-fold:checked ~ .tg-calc { display: none; }

/* 合計 */
.tg-total { margin: 0 0 16px; border: 1px solid var(--border-default); border-radius: 12px; background: var(--surface); padding: 8px 14px; }
.tg-total__row { display: flex; justify-content: space-between; gap: 12px; padding: 6px 0; border-bottom: 1px solid var(--border-subtle); font-size: 14px; }
.tg-total__row:last-child { border-bottom: 0; }
.tg-total dt { color: var(--ds-text-muted); }
.tg-total dd { margin: 0; font-weight: var(--fw-bold); font-variant-numeric: tabular-nums; }
.tg-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 16px 0; }

/* ---- 表（全店の一覧・変更の履歴） ---- */
.tg-scroll { overflow-x: auto; margin: 0 0 16px; -webkit-overflow-scrolling: touch; }
.tg-table, .tg-log { border-collapse: collapse; width: 100%; font-size: 13px; background: var(--surface); }
.tg-table th, .tg-table td, .tg-log th, .tg-log td { padding: 8px; border-bottom: 1px solid var(--border-default); white-space: nowrap; }
.tg-table thead th, .tg-log thead th { position: sticky; top: 0; background: var(--page-bg); color: var(--ds-text-muted); text-align: right; z-index: 2; }
.tg-table thead th:first-child, .tg-log thead th, .tg-log td { text-align: left; }
.tg-table tbody th { position: sticky; left: 0; background: var(--surface); text-align: left; font-weight: var(--fw-bold); z-index: 1; }
.tg-table thead th:first-child { left: 0; z-index: 3; }
.tg-table td { text-align: right; font-variant-numeric: tabular-nums; }
.tg-table__brand { font-size: 11px; color: var(--ds-text-muted); font-weight: var(--fw-regular); }
.tg-table tr.is-total th, .tg-table tr.is-total td { background: var(--page-bg); font-weight: var(--fw-bold); border-top: 2px solid var(--border-default); }
.tg-table td.is-auto { color: var(--tg-auto); background: var(--page-bg); }
.tg-table td.is-missing { background: var(--state-alert-tint); color: var(--state-alert); }
/* 目標を甘くした変更（向きは項目ごと＝services/targets/store.isLoosened） */
.tg-log .is-loosened { color: var(--danger-dark); font-weight: var(--fw-bold); }
/* スマホでは履歴を1件ずつ縦に積む（横に送らないと「変更」の列＝赤が見えない、を作らない） */
@media (max-width: 767px) {
  .tg-log, .tg-log tbody, .tg-log tr, .tg-log td { display: block; }
  .tg-log thead { display: none; }
  .tg-log tr { padding: 8px 0; border-bottom: 1px solid var(--border-default); }
  .tg-log td { border-bottom: 0; padding: 2px 8px; white-space: normal; }
  .tg-log td:first-child { font-size: 12px; color: var(--ds-text-muted); }
}

/* 全店の一覧の上の3枚 */
.tg-sum { display: grid; gap: 10px; margin: 0 0 16px; }
.tg-sum__card { border: 1px solid var(--border-default); border-radius: 12px; background: var(--surface); padding: 12px 14px; }
.tg-sum__title { font-size: 13px; color: var(--ds-text-muted); margin: 0 0 4px; }
.tg-sum__big { font-size: 19px; font-weight: var(--fw-bold); margin: 0; font-variant-numeric: tabular-nums; }
.tg-sum__note { font-size: 13px; margin: 4px 0 0; color: var(--ds-text-muted); }
.tg-sum__note.is-short { color: var(--danger-dark); }
.tg-sum__note.is-ok, .tg-sum__note.is-over { color: var(--state-done); }
.tg-miss { border: 1px solid var(--state-alert); background: var(--state-alert-tint); border-radius: 12px; padding: 12px 14px; margin: 0 0 16px; }
.tg-miss__title { font-weight: var(--fw-bold); color: var(--danger-dark); margin: 0 0 6px; }
.tg-miss__list { margin: 0; padding-left: 1.2em; font-size: 14px; line-height: 1.8; }

/* 全社の売上目標（開閉は details。JS 無しで開く） */
.tg-org { border: 1px solid var(--border-default); border-radius: 12px; background: var(--surface); margin: 0 0 16px; }
.tg-org__summary { display: flex; align-items: center; min-height: var(--tap); padding: 0 14px; font-weight: var(--fw-bold); cursor: pointer; }
.tg-org__form { padding: 0 14px 12px; }
.tg-org__grid { display: grid; gap: 10px; }

@media (min-width: 768px) {
  /* ---- パソコン：横に12か月・縦に項目（A-2）。畳みは効かせない ---- */
  .tg-grid {
    display: grid; gap: 0;
    grid-template-columns: 96px repeat(12, minmax(56px, 1fr));
    border: 1px solid var(--border-default); border-radius: 12px; background: var(--surface); padding: 8px;
    overflow-x: auto;
  }
  .tg-month { display: contents; }
  .tg-rowhead { display: block; font-size: 12px; color: var(--ds-text-muted); padding: 8px 6px; align-self: center; grid-column: 1; }
  /* 「自動で出るもの」の行は、パソコンでは出さない（FL は保存した値から下の合計で見る） */
  .tg-rowhead.tg-r5 { display: none; }
  .tg-rowhead__unit { font-size: 11px; }
  .tg-month__head {
    grid-row: 1; min-height: 0; padding: 4px 4px 8px; cursor: default;
    display: block; text-align: center; white-space: nowrap;
  }
  .tg-month__head::after, .tg-month__prev, .tg-month__state { display: none; }
  .tg-month__name { font-size: 14px; }
  /* 欄の「中身の幅」で列が広がらないようにする（grid の min-width: auto を外す）＝12か月が1画面に収まる */
  .tg-month > .tg-cell { padding: 3px 4px; min-width: 0; }
  .tg-input { min-width: 0; }
  .tg-cell__label { display: none; }
  .tg-month > .tg-calc { display: none; }
  /* 自動で出るもの（FL）と前の期の目標は、下の行にまとめて出す */
  .tg-prev { display: block; grid-row: 6; margin: 0; padding: 6px 4px; font-size: 12px; color: var(--tg-auto); text-align: right; font-variant-numeric: tabular-nums; }
  .tg-month.is-empty { border-left: 0; }
  .tg-month.is-empty .tg-month__name { color: var(--state-alert); }
  /* 畳んだ月も、パソコンでは全部見せる（スマホの畳みを持ち込まない） */
  .tg-fold:checked ~ .tg-cell { display: grid; }
  .tg-r0 { grid-row: 1; }
  .tg-r1 { grid-row: 2; }
  .tg-r2 { grid-row: 3; }
  .tg-r3 { grid-row: 4; }
  .tg-r4 { grid-row: 5; }
  .tg-r5 { grid-row: 5; }
  .tg-r6 { grid-row: 6; }
  .tg-c1 > * { grid-column: 2; }
  .tg-c2 > * { grid-column: 3; }
  .tg-c3 > * { grid-column: 4; }
  .tg-c4 > * { grid-column: 5; }
  .tg-c5 > * { grid-column: 6; }
  .tg-c6 > * { grid-column: 7; }
  .tg-c7 > * { grid-column: 8; }
  .tg-c8 > * { grid-column: 9; }
  .tg-c9 > * { grid-column: 10; }
  .tg-c10 > * { grid-column: 11; }
  .tg-c11 > * { grid-column: 12; }
  .tg-c12 > * { grid-column: 13; }
  .tg-input { padding: 0 4px; font-size: 13px; }
  .tg-sum { grid-template-columns: repeat(3, 1fr); }
  .tg-org__grid { grid-template-columns: repeat(6, 1fr); }
  .tg-total { display: flex; flex-wrap: wrap; gap: 8px 24px; }
  .tg-total__row { border-bottom: 0; gap: 8px; }
}
