/* ============================================================
   styles.css — 全ページ共通スタイル
   ・色は variables.css の変数のみを使用する
   ・font-size は variables.css のトークンのみを使用する
   ・ブレークポイントは 1024 / 768（デスクトップファースト max-width）
   ============================================================ */

@font-face {
  font-family: "Noto Sans JP";
  src: url("assets/NotoSansJP-400-ext.woff2?v=20260730-4") format("woff2");
  font-weight: 400;
  font-display: swap;
  unicode-range: U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+20000-2FA1F;
}

@font-face {
  font-family: "Noto Sans JP";
  src: url("assets/NotoSansJP-500-ext.woff2?v=20260730-4") format("woff2");
  font-weight: 500;
  font-display: swap;
  unicode-range: U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+20000-2FA1F;
}

@font-face {
  font-family: "Noto Sans JP";
  src: url("assets/NotoSansJP-700-ext.woff2?v=20260730-4") format("woff2");
  font-weight: 700;
  font-display: swap;
  unicode-range: U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+20000-2FA1F;
}

@font-face {
  font-family: "Noto Sans JP";
  src: url("assets/NotoSansJP-400-core.woff2?v=20260730-4") format("woff2");
  font-weight: 400;
  font-display: swap;
  unicode-range: U+0020-007E, U+00A0-00FF, U+2002-2003, U+2010-2016, U+2018-201A, U+201C-201E, U+2020-2022, U+2025-2027, U+2030, U+2032-2033, U+2035, U+2039-203C, U+2042, U+2047-2049, U+2051, U+2122, U+2190-2199, U+25A0-25AB, U+25B1-25B3, U+25B6-25B7, U+25BC-25BD, U+25C0-25C1, U+25C6-25C7, U+25C9-25CC, U+25CE-25D3, U+25E2-25E6, U+25EF, U+2606, U+3000-303F, U+3041-3096, U+3099-30FE, U+4E00, U+4E09-4E0B, U+4E0D-4E0E, U+4E21, U+4E2D, U+4E3B, U+4E4B, U+4E86, U+4E8B-4E8C, U+4EAC, U+4EBA, U+4ECA-4ECB, U+4ED5-4ED6, U+4ED8-4ED9, U+4EE3-4EE5, U+4EF6, U+4EFB, U+4F01, U+4F1A, U+4F34, U+4F3A, U+4F4D-4F4F, U+4F53, U+4F55, U+4F5C, U+4F7F, U+4F8B, U+4F9B, U+4F9D, U+4FA1, U+4FDD, U+4FE1, U+4FEE, U+500B, U+5019, U+5024, U+505C, U+5074, U+5099, U+50CD, U+50CF, U+5143, U+5148, U+5165, U+5168, U+516C, U+5177, U+5185-5186, U+518D, U+5192, U+51AC, U+51E6, U+51FA, U+5206-5207, U+5217, U+521D, U+5224-5225, U+5229, U+5236, U+524A, U+524D, U+5272, U+529B, U+529F-52A0, U+52A9-52AA, U+52D5, U+52D9, U+52DF, U+5316, U+533A, U+533F, U+5357-5358, U+5370, U+539A, U+539F, U+53BB, U+53C2, U+53CD-53CE, U+53D6-53D7, U+53E3-53E4, U+53E9, U+53EF-53F0, U+53F7, U+5404, U+5408, U+540C-540D, U+5411, U+5426, U+542B, U+544A, U+5473, U+547D, U+54C1, U+5546, U+554F, U+5584, U+55B6, U+56DE, U+56F2-56F3, U+56FD, U+5728, U+5730, U+578B, U+57CB, U+57FA, U+5831, U+5834, U+5897, U+58C1, U+58EB, U+5909, U+5916, U+591A, U+5927, U+5929, U+5931, U+5951, U+5968, U+59CB, U+59D4, U+59FF, U+5B50, U+5B57-5B58, U+5B66, U+5B88-5B89, U+5B8C, U+5B9A, U+5B9C, U+5B9F, U+5BA2, U+5BAE, U+5BB3, U+5BB6, U+5BB9, U+5BC4, U+5BC6, U+5BCC, U+5BE9, U+5BFE, U+5C02, U+5C0E-5C0F, U+5C3E, U+5C45, U+5C4B, U+5C55, U+5C5E, U+5C65, U+5C71, U+5D29, U+5DDD, U+5DE1, U+5DEE, U+5E0C, U+5E30, U+5E45, U+5E74, U+5E83, U+5E97, U+5EA6, U+5F01, U+5F0F, U+5F15, U+5F35, U+5F37, U+5F53, U+5F62, U+5F79, U+5F85, U+5F8B-5F8C, U+5F92-5F93, U+5F97, U+5FB4, U+5FC3, U+5FC5, U+5FD7, U+5FDC, U+5FF5, U+601D, U+6025, U+6027, U+60A9, U+60C5, U+60F3, U+610F, U+611B, U+611F, U+614B, U+616E, U+6210, U+6226, U+623B, U+6240, U+624B, U+6253, U+6271, U+627F-6280, U+628A, U+6291, U+6295, U+62C5, U+62D2, U+62E1, U+6301, U+6307, U+63A1-63A2, U+63A5, U+63A8, U+63AA, U+63B2, U+63D0, U+63DB, U+63E1, U+63F4, U+643E, U+652F, U+6539, U+6545, U+6557, U+6559, U+6570, U+6574, U+6587, U+6599, U+65AD, U+65B0, U+65B9, U+65BD, U+65E2, U+65E5, U+65E8, U+65EC, U+660E, U+6613, U+6620, U+6627, U+6642, U+6697, U+66D6, U+66F4, U+66F8, U+66FF-6700, U+6708-6709, U+671B, U+671F, U+672A-672C, U+6750, U+6761, U+6771, U+6790, U+679C, U+67FB, U+682A, U+683C, U+6848, U+691C, U+696D, U+6982, U+69CB, U+69D8, U+6A19, U+6A21, U+6A29-6A2A, U+6A5F, U+6B21, U+6B62-6B63, U+6B69, U+6B74, U+6B8B, U+6BB5, U+6BD4, U+6C0F, U+6C17, U+6C34, U+6C41-6C42, U+6C7A, U+6CBF, U+6CC1, U+6CD5, U+6D29, U+6D3E, U+6D41, U+6D77, U+6D88, U+6E05, U+6E08, U+6E29, U+6E2F, U+6E96, U+6EC5, U+6F0F, U+6FC3, U+70B9, U+7121, U+713C, U+7167, U+7269, U+7279, U+72B6, U+72EC, U+7387, U+73FE, U+7406, U+751F, U+7528, U+7530-7531, U+7533, U+753B, U+754C, U+7565, U+756A, U+7570, U+767A-767B, U+767D, U+7684, U+76DB, U+76DF, U+76E3, U+76EE, U+76F4, U+76F8, U+7701, U+7740, U+7763, U+77E5, U+77F3, U+7814, U+78BA, U+793A, U+793E, U+7956, U+79C1, U+79D2, U+79D8, U+79F0, U+79FB, U+7A0E, U+7A2E, U+7A32, U+7A3C, U+7A3F, U+7A4D, U+7A74, U+7A7A, U+7ACB, U+7AE0, U+7B2C, U+7B49, U+7B54, U+7B56, U+7BA1, U+7BC4, U+7BC9, U+7C21, U+7C4D, U+7CFB, U+7D04, U+7D1B, U+7D20, U+7D22, U+7D30, U+7D39, U+7D42, U+7D44, U+7D4C, U+7D50, U+7D5E, U+7D61, U+7D71, U+7D76, U+7D99-7D9A, U+7DCF, U+7DD2, U+7DDA, U+7DE0, U+7E3E, U+7E41, U+7E54, U+7F6E, U+7F72, U+7FA9, U+8003, U+8005, U+805E, U+8077, U+8089, U+80B2, U+80FD, U+81EA, U+8217, U+822C, U+8272, U+82F1, U+83DC, U+83F1, U+843D, U+8449, U+8457, U+884C, U+8853, U+8868, U+88C5, U+88D5, U+88DC, U+88FD, U+8907, U+8981, U+898B, U+898F, U+8996, U+899A, U+89A7, U+89AA, U+89E3, U+8A00, U+8A02, U+8A08, U+8A0E, U+8A17-8A18, U+8A2D, U+8A31, U+8A3A, U+8A3C, U+8A66, U+8A70-8A73, U+8A8D, U+8A98, U+8A9E, U+8AA4, U+8AAC-8AAD, U+8AB0, U+8AB2, U+8ABF, U+8AC7, U+8ACB, U+8AE6, U+8AFE, U+8B1B, U+8B58, U+8B77, U+8C4A, U+8C61, U+8CA0, U+8CAB-8CAC, U+8CB4, U+8CBB, U+8CC7, U+8CEA, U+8D70, U+8D77, U+8D85, U+8DB3, U+8EAB, U+8EE2, U+8EF8, U+8EFD, U+8F03, U+8F09, U+8F9E, U+8FBC, U+8FD4, U+8FF0, U+8FFD, U+9001, U+9014, U+901A, U+901F-9020, U+9023, U+9032, U+9045, U+904B, U+9054-9055, U+9060, U+9063, U+9069, U+9075, U+9078, U+90CE, U+90E8, U+90FD, U+914D, U+9152, U+916C, U+91CD, U+91CF, U+91D1, U+91DD, U+9280, U+9332, U+9577, U+9580, U+9589, U+958B, U+9593, U+95A2, U+95B2, U+9632, U+9650, U+9664, U+968E, U+969B-969C, U+96C6, U+96DB, U+96E2, U+96FB, U+975E, U+9762, U+9805-9806, U+9808, U+9810-9811, U+982D, U+983C, U+984C-984D, U+9858, U+985E, U+9867, U+98DB, U+98DF, U+98F2, U+9903, U+99C5, U+9A13, U+9AA8, U+9AD8, U+9B45, U+9CE5, U+9EBA, U+9ED9, U+FA11, U+FF01-FF60, U+FFE0-FFE6;
}

@font-face {
  font-family: "Noto Sans JP";
  src: url("assets/NotoSansJP-500-core.woff2?v=20260730-4") format("woff2");
  font-weight: 500;
  font-display: swap;
  unicode-range: U+0020-007E, U+00A0-00FF, U+2002-2003, U+2010-2016, U+2018-201A, U+201C-201E, U+2020-2022, U+2025-2027, U+2030, U+2032-2033, U+2035, U+2039-203C, U+2042, U+2047-2049, U+2051, U+2122, U+2190-2199, U+25A0-25AB, U+25B1-25B3, U+25B6-25B7, U+25BC-25BD, U+25C0-25C1, U+25C6-25C7, U+25C9-25CC, U+25CE-25D3, U+25E2-25E6, U+25EF, U+2606, U+3000-303F, U+3041-3096, U+3099-30FE, U+4E00, U+4E09-4E0B, U+4E0D-4E0E, U+4E21, U+4E2D, U+4E3B, U+4E4B, U+4E86, U+4E8B-4E8C, U+4EAC, U+4EBA, U+4ECA-4ECB, U+4ED5-4ED6, U+4ED8-4ED9, U+4EE3-4EE5, U+4EF6, U+4EFB, U+4F01, U+4F1A, U+4F34, U+4F3A, U+4F4D-4F4F, U+4F53, U+4F55, U+4F5C, U+4F7F, U+4F8B, U+4F9B, U+4F9D, U+4FA1, U+4FDD, U+4FE1, U+4FEE, U+500B, U+5019, U+5024, U+505C, U+5074, U+5099, U+50CD, U+50CF, U+5143, U+5148, U+5165, U+5168, U+516C, U+5177, U+5185-5186, U+518D, U+5192, U+51AC, U+51E6, U+51FA, U+5206-5207, U+5217, U+521D, U+5224-5225, U+5229, U+5236, U+524A, U+524D, U+5272, U+529B, U+529F-52A0, U+52A9-52AA, U+52D5, U+52D9, U+52DF, U+5316, U+533A, U+533F, U+5357-5358, U+5370, U+539A, U+539F, U+53BB, U+53C2, U+53CD-53CE, U+53D6-53D7, U+53E3-53E4, U+53E9, U+53EF-53F0, U+53F7, U+5404, U+5408, U+540C-540D, U+5411, U+5426, U+542B, U+544A, U+5473, U+547D, U+54C1, U+5546, U+554F, U+5584, U+55B6, U+56DE, U+56F2-56F3, U+56FD, U+5728, U+5730, U+578B, U+57CB, U+57FA, U+5831, U+5834, U+5897, U+58C1, U+58EB, U+5909, U+5916, U+591A, U+5927, U+5929, U+5931, U+5951, U+5968, U+59CB, U+59D4, U+59FF, U+5B50, U+5B57-5B58, U+5B66, U+5B88-5B89, U+5B8C, U+5B9A, U+5B9C, U+5B9F, U+5BA2, U+5BAE, U+5BB3, U+5BB6, U+5BB9, U+5BC4, U+5BC6, U+5BCC, U+5BE9, U+5BFE, U+5C02, U+5C0E-5C0F, U+5C3E, U+5C45, U+5C4B, U+5C55, U+5C5E, U+5C65, U+5C71, U+5D29, U+5DDD, U+5DE1, U+5DEE, U+5E0C, U+5E30, U+5E45, U+5E74, U+5E83, U+5E97, U+5EA6, U+5F01, U+5F0F, U+5F15, U+5F35, U+5F37, U+5F53, U+5F62, U+5F79, U+5F85, U+5F8B-5F8C, U+5F92-5F93, U+5F97, U+5FB4, U+5FC3, U+5FC5, U+5FD7, U+5FDC, U+5FF5, U+601D, U+6025, U+6027, U+60A9, U+60C5, U+60F3, U+610F, U+611B, U+611F, U+614B, U+616E, U+6210, U+6226, U+623B, U+6240, U+624B, U+6253, U+6271, U+627F-6280, U+628A, U+6291, U+6295, U+62C5, U+62D2, U+62E1, U+6301, U+6307, U+63A1-63A2, U+63A5, U+63A8, U+63AA, U+63B2, U+63D0, U+63DB, U+63E1, U+63F4, U+643E, U+652F, U+6539, U+6545, U+6557, U+6559, U+6570, U+6574, U+6587, U+6599, U+65AD, U+65B0, U+65B9, U+65BD, U+65E2, U+65E5, U+65E8, U+65EC, U+660E, U+6613, U+6620, U+6627, U+6642, U+6697, U+66D6, U+66F4, U+66F8, U+66FF-6700, U+6708-6709, U+671B, U+671F, U+672A-672C, U+6750, U+6761, U+6771, U+6790, U+679C, U+67FB, U+682A, U+683C, U+6848, U+691C, U+696D, U+6982, U+69CB, U+69D8, U+6A19, U+6A21, U+6A29-6A2A, U+6A5F, U+6B21, U+6B62-6B63, U+6B69, U+6B74, U+6B8B, U+6BB5, U+6BD4, U+6C0F, U+6C17, U+6C34, U+6C41-6C42, U+6C7A, U+6CBF, U+6CC1, U+6CD5, U+6D29, U+6D3E, U+6D41, U+6D77, U+6D88, U+6E05, U+6E08, U+6E29, U+6E2F, U+6E96, U+6EC5, U+6F0F, U+6FC3, U+70B9, U+7121, U+713C, U+7167, U+7269, U+7279, U+72B6, U+72EC, U+7387, U+73FE, U+7406, U+751F, U+7528, U+7530-7531, U+7533, U+753B, U+754C, U+7565, U+756A, U+7570, U+767A-767B, U+767D, U+7684, U+76DB, U+76DF, U+76E3, U+76EE, U+76F4, U+76F8, U+7701, U+7740, U+7763, U+77E5, U+77F3, U+7814, U+78BA, U+793A, U+793E, U+7956, U+79C1, U+79D2, U+79D8, U+79F0, U+79FB, U+7A0E, U+7A2E, U+7A32, U+7A3C, U+7A3F, U+7A4D, U+7A74, U+7A7A, U+7ACB, U+7AE0, U+7B2C, U+7B49, U+7B54, U+7B56, U+7BA1, U+7BC4, U+7BC9, U+7C21, U+7C4D, U+7CFB, U+7D04, U+7D1B, U+7D20, U+7D22, U+7D30, U+7D39, U+7D42, U+7D44, U+7D4C, U+7D50, U+7D5E, U+7D61, U+7D71, U+7D76, U+7D99-7D9A, U+7DCF, U+7DD2, U+7DDA, U+7DE0, U+7E3E, U+7E41, U+7E54, U+7F6E, U+7F72, U+7FA9, U+8003, U+8005, U+805E, U+8077, U+8089, U+80B2, U+80FD, U+81EA, U+8217, U+822C, U+8272, U+82F1, U+83DC, U+83F1, U+843D, U+8449, U+8457, U+884C, U+8853, U+8868, U+88C5, U+88D5, U+88DC, U+88FD, U+8907, U+8981, U+898B, U+898F, U+8996, U+899A, U+89A7, U+89AA, U+89E3, U+8A00, U+8A02, U+8A08, U+8A0E, U+8A17-8A18, U+8A2D, U+8A31, U+8A3A, U+8A3C, U+8A66, U+8A70-8A73, U+8A8D, U+8A98, U+8A9E, U+8AA4, U+8AAC-8AAD, U+8AB0, U+8AB2, U+8ABF, U+8AC7, U+8ACB, U+8AE6, U+8AFE, U+8B1B, U+8B58, U+8B77, U+8C4A, U+8C61, U+8CA0, U+8CAB-8CAC, U+8CB4, U+8CBB, U+8CC7, U+8CEA, U+8D70, U+8D77, U+8D85, U+8DB3, U+8EAB, U+8EE2, U+8EF8, U+8EFD, U+8F03, U+8F09, U+8F9E, U+8FBC, U+8FD4, U+8FF0, U+8FFD, U+9001, U+9014, U+901A, U+901F-9020, U+9023, U+9032, U+9045, U+904B, U+9054-9055, U+9060, U+9063, U+9069, U+9075, U+9078, U+90CE, U+90E8, U+90FD, U+914D, U+9152, U+916C, U+91CD, U+91CF, U+91D1, U+91DD, U+9280, U+9332, U+9577, U+9580, U+9589, U+958B, U+9593, U+95A2, U+95B2, U+9632, U+9650, U+9664, U+968E, U+969B-969C, U+96C6, U+96DB, U+96E2, U+96FB, U+975E, U+9762, U+9805-9806, U+9808, U+9810-9811, U+982D, U+983C, U+984C-984D, U+9858, U+985E, U+9867, U+98DB, U+98DF, U+98F2, U+9903, U+99C5, U+9A13, U+9AA8, U+9AD8, U+9B45, U+9CE5, U+9EBA, U+9ED9, U+FA11, U+FF01-FF60, U+FFE0-FFE6;
}

@font-face {
  font-family: "Noto Sans JP";
  src: url("assets/NotoSansJP-700-core.woff2?v=20260730-4") format("woff2");
  font-weight: 700;
  font-display: swap;
  unicode-range: U+0020-007E, U+00A0-00FF, U+2002-2003, U+2010-2016, U+2018-201A, U+201C-201E, U+2020-2022, U+2025-2027, U+2030, U+2032-2033, U+2035, U+2039-203C, U+2042, U+2047-2049, U+2051, U+2122, U+2190-2199, U+25A0-25AB, U+25B1-25B3, U+25B6-25B7, U+25BC-25BD, U+25C0-25C1, U+25C6-25C7, U+25C9-25CC, U+25CE-25D3, U+25E2-25E6, U+25EF, U+2606, U+3000-303F, U+3041-3096, U+3099-30FE, U+4E00, U+4E09-4E0B, U+4E0D-4E0E, U+4E21, U+4E2D, U+4E3B, U+4E4B, U+4E86, U+4E8B-4E8C, U+4EAC, U+4EBA, U+4ECA-4ECB, U+4ED5-4ED6, U+4ED8-4ED9, U+4EE3-4EE5, U+4EF6, U+4EFB, U+4F01, U+4F1A, U+4F34, U+4F3A, U+4F4D-4F4F, U+4F53, U+4F55, U+4F5C, U+4F7F, U+4F8B, U+4F9B, U+4F9D, U+4FA1, U+4FDD, U+4FE1, U+4FEE, U+500B, U+5019, U+5024, U+505C, U+5074, U+5099, U+50CD, U+50CF, U+5143, U+5148, U+5165, U+5168, U+516C, U+5177, U+5185-5186, U+518D, U+5192, U+51AC, U+51E6, U+51FA, U+5206-5207, U+5217, U+521D, U+5224-5225, U+5229, U+5236, U+524A, U+524D, U+5272, U+529B, U+529F-52A0, U+52A9-52AA, U+52D5, U+52D9, U+52DF, U+5316, U+533A, U+533F, U+5357-5358, U+5370, U+539A, U+539F, U+53BB, U+53C2, U+53CD-53CE, U+53D6-53D7, U+53E3-53E4, U+53E9, U+53EF-53F0, U+53F7, U+5404, U+5408, U+540C-540D, U+5411, U+5426, U+542B, U+544A, U+5473, U+547D, U+54C1, U+5546, U+554F, U+5584, U+55B6, U+56DE, U+56F2-56F3, U+56FD, U+5728, U+5730, U+578B, U+57CB, U+57FA, U+5831, U+5834, U+5897, U+58C1, U+58EB, U+5909, U+5916, U+591A, U+5927, U+5929, U+5931, U+5951, U+5968, U+59CB, U+59D4, U+59FF, U+5B50, U+5B57-5B58, U+5B66, U+5B88-5B89, U+5B8C, U+5B9A, U+5B9C, U+5B9F, U+5BA2, U+5BAE, U+5BB3, U+5BB6, U+5BB9, U+5BC4, U+5BC6, U+5BCC, U+5BE9, U+5BFE, U+5C02, U+5C0E-5C0F, U+5C3E, U+5C45, U+5C4B, U+5C55, U+5C5E, U+5C65, U+5C71, U+5D29, U+5DDD, U+5DE1, U+5DEE, U+5E0C, U+5E30, U+5E45, U+5E74, U+5E83, U+5E97, U+5EA6, U+5F01, U+5F0F, U+5F15, U+5F35, U+5F37, U+5F53, U+5F62, U+5F79, U+5F85, U+5F8B-5F8C, U+5F92-5F93, U+5F97, U+5FB4, U+5FC3, U+5FC5, U+5FD7, U+5FDC, U+5FF5, U+601D, U+6025, U+6027, U+60A9, U+60C5, U+60F3, U+610F, U+611B, U+611F, U+614B, U+616E, U+6210, U+6226, U+623B, U+6240, U+624B, U+6253, U+6271, U+627F-6280, U+628A, U+6291, U+6295, U+62C5, U+62D2, U+62E1, U+6301, U+6307, U+63A1-63A2, U+63A5, U+63A8, U+63AA, U+63B2, U+63D0, U+63DB, U+63E1, U+63F4, U+643E, U+652F, U+6539, U+6545, U+6557, U+6559, U+6570, U+6574, U+6587, U+6599, U+65AD, U+65B0, U+65B9, U+65BD, U+65E2, U+65E5, U+65E8, U+65EC, U+660E, U+6613, U+6620, U+6627, U+6642, U+6697, U+66D6, U+66F4, U+66F8, U+66FF-6700, U+6708-6709, U+671B, U+671F, U+672A-672C, U+6750, U+6761, U+6771, U+6790, U+679C, U+67FB, U+682A, U+683C, U+6848, U+691C, U+696D, U+6982, U+69CB, U+69D8, U+6A19, U+6A21, U+6A29-6A2A, U+6A5F, U+6B21, U+6B62-6B63, U+6B69, U+6B74, U+6B8B, U+6BB5, U+6BD4, U+6C0F, U+6C17, U+6C34, U+6C41-6C42, U+6C7A, U+6CBF, U+6CC1, U+6CD5, U+6D29, U+6D3E, U+6D41, U+6D77, U+6D88, U+6E05, U+6E08, U+6E29, U+6E2F, U+6E96, U+6EC5, U+6F0F, U+6FC3, U+70B9, U+7121, U+713C, U+7167, U+7269, U+7279, U+72B6, U+72EC, U+7387, U+73FE, U+7406, U+751F, U+7528, U+7530-7531, U+7533, U+753B, U+754C, U+7565, U+756A, U+7570, U+767A-767B, U+767D, U+7684, U+76DB, U+76DF, U+76E3, U+76EE, U+76F4, U+76F8, U+7701, U+7740, U+7763, U+77E5, U+77F3, U+7814, U+78BA, U+793A, U+793E, U+7956, U+79C1, U+79D2, U+79D8, U+79F0, U+79FB, U+7A0E, U+7A2E, U+7A32, U+7A3C, U+7A3F, U+7A4D, U+7A74, U+7A7A, U+7ACB, U+7AE0, U+7B2C, U+7B49, U+7B54, U+7B56, U+7BA1, U+7BC4, U+7BC9, U+7C21, U+7C4D, U+7CFB, U+7D04, U+7D1B, U+7D20, U+7D22, U+7D30, U+7D39, U+7D42, U+7D44, U+7D4C, U+7D50, U+7D5E, U+7D61, U+7D71, U+7D76, U+7D99-7D9A, U+7DCF, U+7DD2, U+7DDA, U+7DE0, U+7E3E, U+7E41, U+7E54, U+7F6E, U+7F72, U+7FA9, U+8003, U+8005, U+805E, U+8077, U+8089, U+80B2, U+80FD, U+81EA, U+8217, U+822C, U+8272, U+82F1, U+83DC, U+83F1, U+843D, U+8449, U+8457, U+884C, U+8853, U+8868, U+88C5, U+88D5, U+88DC, U+88FD, U+8907, U+8981, U+898B, U+898F, U+8996, U+899A, U+89A7, U+89AA, U+89E3, U+8A00, U+8A02, U+8A08, U+8A0E, U+8A17-8A18, U+8A2D, U+8A31, U+8A3A, U+8A3C, U+8A66, U+8A70-8A73, U+8A8D, U+8A98, U+8A9E, U+8AA4, U+8AAC-8AAD, U+8AB0, U+8AB2, U+8ABF, U+8AC7, U+8ACB, U+8AE6, U+8AFE, U+8B1B, U+8B58, U+8B77, U+8C4A, U+8C61, U+8CA0, U+8CAB-8CAC, U+8CB4, U+8CBB, U+8CC7, U+8CEA, U+8D70, U+8D77, U+8D85, U+8DB3, U+8EAB, U+8EE2, U+8EF8, U+8EFD, U+8F03, U+8F09, U+8F9E, U+8FBC, U+8FD4, U+8FF0, U+8FFD, U+9001, U+9014, U+901A, U+901F-9020, U+9023, U+9032, U+9045, U+904B, U+9054-9055, U+9060, U+9063, U+9069, U+9075, U+9078, U+90CE, U+90E8, U+90FD, U+914D, U+9152, U+916C, U+91CD, U+91CF, U+91D1, U+91DD, U+9280, U+9332, U+9577, U+9580, U+9589, U+958B, U+9593, U+95A2, U+95B2, U+9632, U+9650, U+9664, U+968E, U+969B-969C, U+96C6, U+96DB, U+96E2, U+96FB, U+975E, U+9762, U+9805-9806, U+9808, U+9810-9811, U+982D, U+983C, U+984C-984D, U+9858, U+985E, U+9867, U+98DB, U+98DF, U+98F2, U+9903, U+99C5, U+9A13, U+9AA8, U+9AD8, U+9B45, U+9CE5, U+9EBA, U+9ED9, U+FA11, U+FF01-FF60, U+FFE0-FFE6;
}

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;
  color: var(--ink);
  background: var(--white);
  font-family: "Noto Sans JP", sans-serif;
  font-size: var(--fs-body-e);
  line-height: 1.9;
  -webkit-font-smoothing: antialiased;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 1000;
  pointer-events: none;
  border: 12px solid color-mix(in srgb, var(--blue) 2.5%, transparent);
}

a {
  color: inherit;
  text-decoration: none;
}

img {
  display: block;
  max-width: 100%;
}

button,
a {
  -webkit-tap-highlight-color: transparent;
}

.site-header {
  height: 82px;
  background: color-mix(in srgb, var(--white) 97%, transparent);
  border-bottom: 1px solid color-mix(in srgb, color-mix(in srgb, var(--blue) 22%, var(--ink)) 10%, transparent);
  position: relative;
  z-index: 30;
}

.header-inner {
  width: var(--page);
  height: 100%;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.brand {
  width: 130px;
  height: 60px;
  overflow: hidden;
  display: flex;
  align-items: center;
}

.brand img {
  width: 118px;
  height: 78px;
  object-fit: contain;
}

.global-nav {
  display: flex;
  align-items: center;
  gap: 31px;
  font-size: var(--fs-ui-b);
  font-weight: 700;
}

.global-nav > a:not(.nav-cta) {
  position: relative;
}

.global-nav > a:not(.nav-cta)::after {
  content: "";
  position: absolute;
  left: 0;
  right: 100%;
  bottom: -8px;
  height: 2px;
  background: var(--yellow);
  transition: right 0.25s ease;
}

.global-nav > a:not(.nav-cta):hover::after {
  right: 0;
}

.nav-cta {
  min-width: 132px;
  min-height: 48px;
  padding: 10px 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-btn);
  color: var(--white);
  background: var(--blue);
}

.menu-button {
  display: none;
  width: 48px;
  height: 48px;
  padding: 0 12px;
  border: 0;
  border-radius: var(--radius-card);
  background: var(--blue);
}

.menu-button span {
  display: block;
  height: 2px;
  margin: 6px 0;
  background: var(--white);
}

.cta-actions {
  display: flex;
  gap: 14px;
  margin-top: 34px;
}

.button {
  min-width: 220px;
  min-height: 62px;
  padding: 14px 22px;
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 26px;
  /* ボタン形状はサイト全体で共通（トークン参照） */
  border: var(--btn-border-w) solid transparent;
  border-radius: var(--radius-btn);
  font-size: var(--fs-body-d);
  font-weight: 700;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.button span[aria-hidden] {
  font-size: var(--fs-body-b);
}

.button:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 25px color-mix(in srgb, var(--blue-deep) 13%, transparent);
}

.button-blue {
  border-color: var(--blue-deep);
  color: var(--white);
  background: var(--blue);
}

.section {
  padding: 126px 0 132px;
  position: relative;
  overflow: hidden;
}

.tone-beige {
  isolation: isolate;
}

.tone-beige {
  background:
    repeating-linear-gradient(135deg, color-mix(in srgb, var(--ink) 2.2%, transparent) 0, color-mix(in srgb, var(--ink) 2.2%, transparent) 1px, transparent 1px, transparent 16px),
    linear-gradient(145deg, color-mix(in srgb, var(--beige-light) 95%, transparent), color-mix(in srgb, var(--beige) 94%, transparent)),
    var(--beige);
}

.tone-beige::before {
  content: "";
  position: absolute;
  inset: -12%;
  z-index: 0;
  opacity: 0.17;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='360' height='360' viewBox='0 0 360 360'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.013 .052' numOctaves='3' seed='8'/%3E%3CfeColorMatrix values='1 0 0 0 .56 0 1 0 0 .52 0 0 1 0 .45 0 0 0 .22 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.72'/%3E%3C/svg%3E");
  background-size: 430px 430px;
  transform: rotate(-2deg);
}

.section-heading {
  max-width: 1020px;
  margin-bottom: 74px;
  display: grid;
  grid-template-columns: 58px 1fr;
  gap: 30px;
  align-items: start;
}

.heading-ornament {
  width: 58px;
  height: 58px;
  position: relative;
}

.heading-ornament::before,
.heading-ornament::after {
  content: "";
  position: absolute;
}

.heading-ornament::before {
  width: 58px;
  height: 8px;
  left: 0;
  top: 13px;
  background: var(--blue);
}

.heading-ornament::after {
  width: 32px;
  height: 8px;
  left: 26px;
  top: 29px;
  background: var(--yellow);
}

.section-heading h2 {
  margin: 0;
  font-size: var(--fs-h2-b);
  line-height: 1.42;
  letter-spacing: -0.045em;
}

.section-heading p {
  max-width: 760px;
  margin: 18px 0 0;
  color: var(--muted);
  font-size: var(--fs-body-e);
}

.logo-viewport {
  width: 100%;
  overflow: hidden;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--white) 82%, transparent);
}

.logo-track {
  width: max-content;
  display: flex;
  animation: logo-slide 32s linear infinite;
}

/* aspect-ratio は box-sizing:border-box + padding の解釈が
   Chromium（境界ボックス基準）と WebKit（コンテンツボックス基準）で異なり、
   WebKit では padding 分だけ高くなる。height を明示して差をなくす。 */
.client-logo {
  width: 192px;
  height: 192px;
  padding: 32px;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  border-right: 1px solid var(--line);
  background: color-mix(in srgb, var(--white) 84%, transparent);
  text-align: center;
}

.client-logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

@keyframes logo-slide {
  to {
    transform: translateX(-1344px);
  }
}

.case-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  overflow: hidden;
  border: var(--card-border);
  border-radius: var(--radius-card);
  box-shadow: var(--card-shadow);
  background: color-mix(in srgb, var(--white) 82%, transparent);
}

.case-card {
  min-width: 0;
  border-right: 1px solid var(--line);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.case-card:last-child {
  border-right: 0;
}

.case-card:hover {
  position: relative;
  z-index: 2;
  transform: translateY(-8px);
  box-shadow: var(--shadow);
}

.case-logo {
  height: 300px;
  padding: 62px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--white);
  border-bottom: 1px solid var(--line);
}

.case-logo img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.case-copy {
  display: flex;
  flex-direction: column;
  min-height: 320px;
  padding: 34px 34px 36px;
  background: linear-gradient(160deg, color-mix(in srgb, var(--yellow) 16%, var(--white)) 0%, color-mix(in srgb, var(--yellow) 6%, var(--white)) 100%);
}

.case-copy > span {
  color: var(--blue);
  font-size: var(--fs-ui-c);
  font-weight: 700;
}

.case-copy h3 {
  margin: 14px 0 0;
  font-size: var(--fs-h4-c);
}

.case-copy p {
  min-height: 82px;
  margin: 18px 0 26px;
  color: var(--muted);
  font-size: var(--fs-ui);
}

.about {
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
}

.about-photo {
  min-height: 720px;
}

.about-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 58% center;
}

.about-copy {
  max-width: 670px;
  min-height: 720px;
  padding: 90px 88px;
  position: relative;
  z-index: 2;
}

.about-copy .section-heading {
  max-width: none;
  margin-bottom: 38px;
}

.cta {
  min-height: 520px;
  padding: 96px 0;
  position: relative;
  overflow: hidden;
  color: var(--ink);
  background:
    radial-gradient(circle at 90% 20%, color-mix(in srgb, var(--yellow) 38%, transparent), transparent 22%),
    linear-gradient(105deg, var(--blue-light) 0%, color-mix(in srgb, var(--blue-pale) 35%, var(--white)) 47%, var(--beige) 100%);
}

.cta::after {
  content: "";
  position: absolute;
  left: -4%;
  right: -4%;
  bottom: -94px;
  height: 170px;
  border-radius: 50% 50% 0 0 / 34% 34% 0 0;
  background: linear-gradient(100deg, var(--blue) 0%, color-mix(in hsl, var(--blue) 35%, var(--blue-light)) 60%, var(--blue-light) 100%);
}

.cta-inner {
  width: var(--page);
  min-height: 300px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  gap: 80px;
  align-items: center;
}

.cta h2 {
  margin: 0;
  font-size: var(--fs-h1-g);
  line-height: 1.42;
  letter-spacing: -0.05em;
}

.cta p {
  margin: 22px 0 0;
  color: var(--muted);
}

.cta-actions {
  margin-top: 0;
  display: grid;
  grid-template-columns: 1fr;
}

.cta-actions .button {
  width: 100%;
  min-height: 72px;
  font-size: var(--fs-body-c);
}

.button-yellow {
  border-color: var(--blue-deep);
  color: var(--ink);
  background: var(--yellow);
}

.button-white {
  border-color: var(--blue);
  color: var(--blue);
  background: color-mix(in srgb, var(--white) 86%, transparent);
}

.floating-cta {
  position: fixed;
  z-index: 25;
  right: 0;
  top: 54%;
  width: 154px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.floating-cta a {
  padding: 12px 18px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  /* 画面右端に貼り付くため左側のみ角丸 */
  border-radius: var(--radius-card) 0 0 var(--radius-card);
  color: var(--ink);
  background: var(--yellow);
  box-shadow: 0 10px 24px color-mix(in srgb, var(--blue-dark) 26%, transparent);
}

.floating-cta span,
.floating-cta strong {
  line-height: 1.35;
}

.floating-cta a:last-child {
  color: var(--white);
  background: var(--blue);
}

.floating-cta span {
  font-size: var(--fs-ui-d);
}

.floating-cta strong {
  font-size: var(--fs-body-d);
}

.site-footer {
  padding: 104px 0 38px;
  color: color-mix(in srgb, var(--white) 82%, transparent);
  background:
    radial-gradient(circle at 86% 7%, color-mix(in srgb, var(--blue) 42%, transparent), transparent 25%),
    var(--blue-dark);
}

.footer-inner {
  width: var(--page);
  margin: 0 auto;
}

.footer-brand {
  margin-bottom: 62px;
}

.footer-brand img {
  width: 154px;
  height: 102px;
  object-fit: contain;
}

.footer-brand p {
  margin: 16px 0 0;
  color: color-mix(in srgb, var(--white) 64%, transparent);
  font-size: var(--fs-ui);
}

.footer-logo {
  width: fit-content;
  display: block;
}

.footer-logo:hover img {
  opacity: 0.78;
}

.footer-address {
  margin: 22px 0 0;
  color: color-mix(in srgb, var(--white) 64%, transparent);
  font-size: var(--fs-ui-b);
  font-style: normal;
  line-height: 2;
}

.footer-corp {
  display: block;
  color: var(--white);
  font-weight: 700;
}

.footer-address a {
  color: inherit;
  text-underline-offset: 3px;
}

.footer-address a:hover {
  color: var(--white);
}

.footer-address-sep {
  margin: 0 0.5em;
  color: color-mix(in srgb, var(--white) 32%, transparent);
}

.footer-sitemap {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 38px 30px;
}

.footer-sitemap h2 {
  margin: 0 0 20px;
  padding-bottom: 12px;
  color: var(--white);
  font-size: var(--fs-ui);
  line-height: 1.6;
  border-bottom: 1px solid color-mix(in srgb, var(--white) 22%, transparent);
}

.footer-sitemap a {
  width: fit-content;
  margin: 0 0 12px;
  display: block;
  color: color-mix(in srgb, var(--white) 62%, transparent);
  font-size: var(--fs-ui-b);
}

.footer-sitemap a:hover {
  color: var(--white);
}

.footer-sitemap h2 a {
  width: auto;
  margin: 0;
  display: inline;
  color: var(--white);
  font-size: inherit;
  text-decoration: none;
}

.footer-sitemap h2 a:hover {
  color: var(--yellow);
  text-decoration: underline;
  text-underline-offset: 4px;
}

.footer-bottom {
  margin-top: 68px;
  padding-top: 28px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  border-top: 1px solid color-mix(in srgb, var(--white) 20%, transparent);
  color: color-mix(in srgb, var(--white) 52%, transparent);
  font-size: var(--fs-ui-c);
}

.footer-legal,
.footer-copy {
  margin: 0;
}

.footer-legal span {
  margin: 0 0.4em;
  color: color-mix(in srgb, var(--white) 30%, transparent);
}

.site-header {
  background: var(--white);
}

.section-heading {
  max-width: none;
  grid-template-columns: 16px 1fr;
  gap: 36px;
}

.heading-ornament {
  width: 16px;
  height: 100%;
  min-height: 120px;
  background: var(--blue);
}

.heading-ornament::before {
  width: 38px;
  height: 12px;
  left: 0;
  top: 0;
  background: var(--yellow);
}

.heading-ornament::after {
  display: none;
}

.section-heading h2 {
  color: var(--blue-deep);
  font-size: var(--fs-h1-h);
}

.case-grid {
  height: 740px;
  grid-template-columns: 1.12fr 0.88fr;
  grid-template-rows: 370px 370px;
}

.case-card:first-child {
  grid-row: 1 / 3;
  height: 740px;
  display: grid;
  grid-template-rows: 500px 240px;
}

.case-card:not(:first-child) {
  display: grid;
  grid-template-rows: 196px 174px;
  height: 370px;
  border-bottom: 1px solid var(--line);
}

.case-logo {
  height: 100%;
  min-height: 0;
  padding: 34px 38px;
  border-right: 0;
  border-bottom: 1px solid var(--line);
}

.case-card:first-child .case-logo {
  height: 500px;
  min-height: 0;
  padding: 62px;
}

.case-card:first-child .case-copy {
  min-height: 0;
  padding: 30px 34px 32px;
}

.case-card:first-child .case-copy p {
  min-height: 0;
  margin: 16px 0 22px;
}

.case-card:not(:first-child) .case-copy {
  min-height: 0;
  padding: 22px 28px 24px;
}

.case-card:not(:first-child) .case-copy p {
  min-height: 0;
  margin: 12px 0 18px;
  font-size: var(--fs-ui-c);
}

.about {
  grid-template-columns: 1fr;
}

.about-photo {
  height: 460px;
  min-height: 0;
}

.about-photo img {
  object-position: center 42%;
}

.about-copy {
  width: var(--page);
  max-width: none;
  min-height: 0;
  margin: 0 auto;
  padding: 88px 0 96px;
}

.about-copy .section-heading {
  margin-bottom: 44px;
}

.about-detail .button {
  min-width: 230px;
}

.cta {
  color: var(--white);
  background: linear-gradient(110deg, var(--blue-deep), var(--blue) 70%, color-mix(in srgb, var(--blue) 72%, var(--blue-light)));
}

.cta p {
  color: color-mix(in srgb, var(--white) 72%, transparent);
}

.cta::after {
  background: linear-gradient(100deg, var(--yellow), color-mix(in srgb, var(--yellow) 20%, transparent));
}

@media (max-width: 1024px) {
  .global-nav {
    gap: 18px;
  }

  .floating-cta {
    display: none;
  }

  .about-copy {
    padding: 76px 0 84px;
  }

  .about-copy .section-heading {
    margin-bottom: 38px;
  }
}

@media (max-width: 768px) {

  .global-nav {
    display: none;
  }

  .global-nav.is-open {
    position: absolute;
    left: 0;
    right: 0;
    top: 82px;
    padding: 18px 24px 26px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    color: var(--ink);
    background: var(--white);
    border-top: 1px solid var(--line);
    box-shadow: var(--shadow);
  }

  .global-nav.is-open > a {
    min-height: 52px;
    padding: 12px 8px;
    display: flex;
    align-items: center;
    border-bottom: 1px solid var(--line);
  }

  .global-nav.is-open .nav-cta {
    margin-top: 14px;
    justify-content: center;
    color: var(--white);
    border-bottom: 0;
  }

  .menu-button {
    display: block;
  }

  .section {
    padding: 94px 0;
  }

  .section-heading {
    grid-template-columns: 58px 1fr;
    gap: 22px;
  }

  .section-heading h2 {
    font-size: var(--fs-sp-h2-e);
  }

  .client-logo {
    width: 158px;
    height: 158px;
  }

  @keyframes logo-slide {
    to {
      transform: translateX(-1106px);
    }
  }

  .case-grid {
    height: auto;
    grid-template-columns: 1fr;
    grid-template-rows: none;
    gap: 20px;
    border: 0;
  }

  .case-card,
.case-card:first-child,
.case-card:not(:first-child) {
    grid-row: auto;
    display: grid;
    grid-template-columns: 0.42fr 0.58fr;
    grid-template-rows: none;
    height: auto;
    border: 1px solid var(--line);
  }

  .case-logo,
.case-card:first-child .case-logo {
    height: 100%;
    min-height: 300px;
    padding: 42px;
    border-right: 1px solid var(--line);
    border-bottom: 0;
  }

  .about {
    padding: 0;
    display: grid;
    grid-template-columns: 1fr;
  }

  .about-photo {
    height: 500px;
    min-height: 0;
    order: 0;
  }

  .about-copy {
    width: var(--page);
    max-width: none;
    min-height: 0;
    margin: 0 auto;
    padding: 76px 0 92px;
    display: block;
  }

  .about-copy .section-heading {
    margin-bottom: 34px;
  }

  .cta-inner {
    grid-template-columns: 1fr;
    gap: 44px;
  }

  .cta-actions {
    max-width: none;
    grid-template-columns: 1fr 1fr;
  }

  .footer-sitemap {
    grid-template-columns: repeat(3, 1fr);
    gap: 42px;
  }
}

@media (max-width: 768px) {

  body::before {
    border-width: 6px;
  }

  .site-header {
    height: 72px;
  }

  .global-nav.is-open {
    top: 72px;
  }

  .brand {
    width: 112px;
  }

  .brand img {
    width: 100px;
  }

  .cta-actions {
    grid-template-columns: 1fr;
    flex-direction: column;
  }

  .button {
    width: 100%;
    min-width: 0;
  }

  .section-heading {
    display: block;
  }

  .heading-ornament {
    display: block;
    width: 58px;
    height: 42px;
    min-height: 0;
    margin-bottom: 18px;
    border: 0;
    background: transparent;
  }

  .heading-ornament::before {
    width: 58px;
    height: 8px;
    left: 0;
    top: 5px;
    display: block;
    background: var(--blue);
  }

  .section-heading h2 {
    font-size: var(--fs-sp-h3-c);
  }

  .case-card,
.case-card:first-child,
.case-card:not(:first-child) {
    display: block;
  }

  .case-logo,
.case-card:first-child .case-logo {
    height: 250px;
    min-height: 0;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }

  .case-copy,
.case-card:not(:first-child) .case-copy {
    min-height: 0;
    padding: 28px;
  }

  .case-copy p {
    min-height: 0;
  }

  .about-photo {
    height: 360px;
  }

  .about-photo img {
    object-position: 70% 42%;
  }

  .about-detail .button {
    min-width: 0;
  }

  .cta {
    min-height: 560px;
    padding: 80px 0 100px;
  }

  .cta h2 {
    font-size: var(--fs-sp-h3-b);
  }

  .footer-sitemap {
    grid-template-columns: 1fr 1fr;
  }

  .footer-bottom {
    flex-direction: column;
    gap: 12px;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  .logo-track {
    animation-play-state: paused;
  }

  * {
    transition-duration: 0.01ms !important;
  }
}

picture {display:contents}
.skip-link {position:fixed;left:16px;top:16px;z-index:1001;padding:10px 16px;color:var(--white);background:var(--blue);transform:translateY(-160%)}
.skip-link:focus-visible {transform:translateY(0);outline:3px solid var(--yellow);outline-offset:3px}
:focus-visible {outline:3px solid var(--yellow);outline-offset:3px}
.visually-hidden {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
