/* ===============================================
   CSS変数の定義（theme.jsonのバックアップ）
   =============================================== */
html {
  --wp--preset--color--primary: #8EAB3F;
  --wp--preset--color--accent: #EA5514;
  --wp--preset--color--base: #F5F4E6;
  --wp--preset--color--black: #000000;
  --wp--preset--color--white: #FFFFFF;
  --wp--preset--color--text-gray: #ACACAC;
  --wp--preset--color--gray: #D2D2D2;
  --wp--preset--color--event-spring: #FF9398;
  --wp--preset--color--event-summer: #5EA9E2;
  --wp--preset--color--event-autumn: #DB5A24;
  --wp--preset--color--event-winter: #84547F;

  /* WordPress標準 */
  --wp--preset--color--background: #F5F4E6;
  --wp--preset--color--contrast: #000000;
  --wp--preset--color--contrast-2: #f0f0f0;

  /* =========================================================
     Fluid（375px〜1440pxで伸びて、1440pxで頭打ち）
     ========================================================= */
  --vw-min: 375;
  --vw-max: 1440;
  --vw: clamp(calc(var(--vw-min) * 1px), 100vw, calc(var(--vw-max) * 1px));
  --fluid: calc(
    (var(--vw) - calc(var(--vw-min) * 1px)) /
    ((var(--vw-max) - var(--vw-min)) * 1px)
  );

  font-size: clamp(
    13.33px,
    calc(13.33px + (16 - 13.33) * 1px * var(--fluid)),
    16px
  );

  /* =========================================================
     Font tokens（1440pxで必ず「変数名の数値(px)」に到達）
     ※ min値は現状の375px相当をベースにしています
     ========================================================= */

  /* serif */
  --font-serif-56: clamp(24px, calc(24px + (56 - 24) * 1px * var(--fluid)), 56px);
  --font-serif-50: clamp(36px, calc(36px + (50 - 36) * 1px * var(--fluid)), 50px);
  --font-serif-42: clamp(20px, calc(20px + (42 - 20) * 1px * var(--fluid)), 42px);
  --font-serif-36: clamp(30px, calc(30px + (36 - 30) * 1px * var(--fluid)), 36px);
  --font-serif-35: clamp(20px, calc(20px + (35 - 20) * ((100vw - 375px) / (1440 - 375))), 35px);
  --font-serif-26: clamp(20px, calc(20px + (26 - 20) * 1px * var(--fluid)), 26px);
  --font-serif-24: clamp(18px, calc(18px + (24 - 18) * 1px * var(--fluid)), 24px);
  --font-serif-20: clamp(15px, calc(15px + (20 - 15) * 1px * var(--fluid)), 20px);
  --font-serif-18: clamp(15px, calc(15px + (18 - 15) * 1px * var(--fluid)), 18px);
  --font-serif-16: clamp(14px, calc(14px + (16 - 14) * 1px * var(--fluid)), 16px);
  --font-serif-11: clamp(9.17px, calc(9.17px + (11 - 9.17) * 1px * var(--fluid)), 11px);

  /* gothic */
  --font-gothic-60: clamp(24px, calc(24px + (60 - 24) * 1px * var(--fluid)), 60px);
  --font-gothic-56: clamp(24px, calc(24px + (56 - 24) * 1px * var(--fluid)), 56px);
  --font-gothic-28: clamp(16px, calc(16px + (28 - 16) * 1px * var(--fluid)), 28px);
  --font-gothic-24: clamp(16px, calc(16px + (24 - 16) * 1px * var(--fluid)), 24px);
  --font-gothic-20: clamp(15px, calc(15px + (20 - 15) * 1px * var(--fluid)), 20px);
  --font-gothic-18: clamp(15px, calc(15px + (18 - 15) * 1px * var(--fluid)), 18px);
  --font-gothic-17: clamp(14px, calc(14px + (17 - 14) * ((100vw - 375px) / (1440 - 375))), 17px);
  --font-gothic-16: clamp(13.34px, calc(13.34px + (16 - 13.34) * 1px * var(--fluid)), 16px);
  --font-gothic-15: clamp(12.5px, calc(12.5px + (15 - 12.5) * 1px * var(--fluid)), 15px);
  --font-gothic-14: clamp(12px, calc(12px + (14 - 12) * 1px * var(--fluid)), 14px);
  --font-gothic-12: clamp(10px, calc(10px + (12 - 10) * 1px * var(--fluid)), 12px);

  /* display */
  --font-display-99: clamp(82.53px, calc(82.53px + (99 - 82.53) * 1px * var(--fluid)), 99px);
  --font-display-90: clamp(67.5px, calc(67.5px + (90 - 67.5) * ((100vw - 375px) / (1440 - 375))), 90px);
  --font-display-72: clamp(60.02px, calc(60.02px + (72 - 60.02) * 1px * var(--fluid)), 72px);
  --font-display-55: clamp(35px, calc(35px + (55 - 35) * ((100vw - 375px) / (1440 - 375))), 55px);
  --font-display-40: clamp(20px, calc(20px + (40 - 20) * 1px * var(--fluid)), 40px);
  --font-display-36: clamp(16px, calc(16px + (36 - 16) * 1px * var(--fluid)), 36px);
  --font-display-28: clamp(14.04px, calc(14.04px + (28 - 14.04) * 1px * var(--fluid)), 28px);
  --font-display-24: clamp(11px, calc(11px + (24 - 11) * 1px * var(--fluid)), 24px);
  --font-display-16: clamp(11px, calc(11px + (16 - 11) * 1px * var(--fluid)), 16px);
  --font-display-14: clamp(9px, calc(9px + (14 - 9) * ((100vw - 375px) / (1440 - 375))), 14px);
  --font-display-11: clamp(9.17px, calc(9.17px + (11 - 9.17) * 1px * var(--fluid)), 11px);

  /* Line-height */
  --lh-tight: 1.429;
  --lh-normal: 1.667;
  --lh-loose: 1.714;
  --lh-extra-loose: 1.75;

  /* コンテンツ幅（px） */
  --content-width-narrow: 780px;
  --content-width-medium: 880px;
  --content-width-default: 980px;
  --content-width-wide: 1180px;

  /* 共通パディング（px推奨） */
  --inner-padding-inline: clamp(20px, 5vw, 40px);

  /* 余白システム（remのままでもOK：rootが1440で止まるので肥大化しない） */
  --space-scale: 1;
  --space-xs:  calc(0.5rem  * var(--space-scale));  /* 8px */
  --space-sm:  calc(1rem    * var(--space-scale));  /* 16px */
  --space-md:  calc(1.25rem * var(--space-scale));  /* 20px */
  --space-lg:  calc(1.5rem  * var(--space-scale));  /* 24px */
  --space-xl:  calc(2rem    * var(--space-scale));  /* 32px */
  --space-2xl: calc(2.5rem  * var(--space-scale));  /* 40px */
  --space-3xl: calc(3rem    * var(--space-scale));  /* 48px */
  --space-4xl: calc(4rem    * var(--space-scale));  /* 64px */
  --space-5xl: calc(4.5rem  * var(--space-scale));  /* 72px */
  --space-6xl: calc(5rem    * var(--space-scale));  /* 80px */
  --space-7xl: calc(6.25rem * var(--space-scale));  /* 100px */
  --space-8xl: calc(7.5rem  * var(--space-scale));  /* 120px */

  overflow-x: hidden;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

@media (max-width: 781px){
  html{ --space-scale: .5; }
}

/* ===============================================
   WordPress Block Group 余白リセット
   =============================================== */

* {
  box-sizing: border-box;
}

body {
  overflow-x: hidden;
  font-feature-settings: "palt";
  line-break: strict;
  hanging-punctuation: last allow-end;
  font-size: 18px;
  font-weight: 500;
  position: relative;
}

@media (max-width: 768px) {
  body {
    font-size: 15px;
  }
}


a:focus,
a:focus-visible {
  outline: none !important;
  box-shadow: none !important;
  border: none !important;
}

.wp-block-button__link:focus,
.wp-block-button__link:focus-visible {
  outline: none !important;
  box-shadow: none !important;
  border: none !important;
}

/* ===============================================
   inner
   =============================================== */

.inner-narrow,
.inner-medium,
.inner-default,
.inner-wide {
  margin: 0 auto;
  padding-inline: var(--inner-padding-inline);
  padding-block: var(--space-8xl);
}

.obanazawa-inner-narrow{
  margin: 0 auto;
  padding-inline: var(--inner-padding-inline);
}
.obanazawa-inner-narrow,
.inner-narrow {
  max-width: var(--content-width-narrow);
}

.inner-medium {
  max-width: var(--content-width-medium);
}

.inner-default {
  max-width: var(--content-width-default);
}

.inner-wide {
  max-width: var(--content-width-wide);
}

@media screen and (max-width: 782px) {
  .obanazawa-inner-narrow{
    padding: 0;
    max-width: 100%;
  }
}

/* ===============================================
   背景色
   =============================================== */

body.page-bg--base {
    --page-bg: var(--wp--preset--color--base);
    background: var(--page-bg);
}

body.page-bg--white {
    --page-bg: var(--wp--preset--color--white);
    background: var(--page-bg);
}

body:not(.home).page-bg--base,
body:not(.home).page-bg--white {
    background-image: linear-gradient(
        var(--wp--preset--color--primary) 0,
        var(--wp--preset--color--primary) 100px,
        var(--page-bg) 100px
    );
    background-repeat: no-repeat;
}

body.page-bg--white .wp-site-blocks,
body.page-bg--base  .wp-site-blocks{
  background-color: var(--page-bg);
}

body.page-bg--white main,
body.page-bg--base  main{
  background-color: var(--page-bg);
}

body.page-bg--white .archive-hero::after,
body.page-bg--base  .archive-hero::after{
  background: var(--page-bg);
}

/* ===============================================
   用途別タイポグラフィクラス
   =============================================== */

.entry-content h2.wp-block-heading{
  margin-block: var(--space-6xl) var(--space-xl);
}

.entry-content > h2.wp-block-heading.has-text-align-center:first-child {
  margin-top: 0;
}

.page-title {
  font-family: var(--wp--preset--font-family--serif);
  font-size: var(--font-serif-56);
  font-weight: 400;
}

.event-season-title {
  font-family: var(--wp--preset--font-family--serif);
  font-size: var(--font-serif-50);
  font-weight: 400;
  letter-spacing: 0.1em;
}

.hero-copy-vertical {
  font-family: var(--wp--preset--font-family--serif);
  font-size: var(--font-serif-24);
  font-weight: 400;
  letter-spacing: 2px;
}

.header-catchcopy {
  font-family: var(--wp--preset--font-family--serif);
  font-size: var(--font-serif-20);
  font-weight: 400;
  letter-spacing: 0.1em;
}

.header-catchcopy-sp {
  font-family: var(--wp--preset--font-family--serif);
  font-size: var(--font-serif-11);
  font-weight: 400;
  letter-spacing: 0.1em;
}

.modal-link,
.card-link {
  font-family: var(--wp--preset--font-family--serif);
  font-size: var(--font-serif-20);
  font-weight: 400;
}

.header-nav,
.area-label {
  font-family: var(--wp--preset--font-family--serif);
  font-size: var(--font-serif-18);
  font-weight: 400;
}

.page-lead {
  font-family: var(--wp--preset--font-family--sans);
  font-size: var(--font-gothic-28);
  font-weight: 700;
  line-height: var(--lh-loose);
}

.btn-text,
.course-number {
  font-family: var(--wp--preset--font-family--sans);
  font-size: var(--font-gothic-20);
  font-weight: 700;
}

.body-text,
.text-pc {
  font-family: var(--wp--preset--font-family--sans);
  font-size: var(--font-gothic-18);
  font-weight: 500;
  line-height: var(--lh-normal);
}

.body-text-small {
  font-family: var(--wp--preset--font-family--sans);
  font-size: var(--font-gothic-16);
  font-weight: 500;
  line-height: var(--lh-extra-loose);
}

.text-sp,
.body-text-sp {
  font-family: var(--wp--preset--font-family--sans);
  font-size: var(--font-gothic-15);
  line-height: var(--lh-normal);
}

.news-title {
  font-family: var(--wp--preset--font-family--sans);
  font-size: var(--font-gothic-14);
  line-height: var(--lh-tight);
}

.caption-text,
.breadcrumb-pc {
  font-family: var(--wp--preset--font-family--sans);
  font-size: var(--font-gothic-14);
}

.label-text,
.tag-text,
.breadcrumb-sp {
  font-family: var(--wp--preset--font-family--sans);
  font-size: var(--font-gothic-12);
}

.animation-text-pc {
  font-family: var(--wp--preset--font-family--display);
  font-size: var(--font-display-99);
  font-weight: 700;
}

.animation-text-sp {
  font-family: var(--wp--preset--font-family--display);
  font-size: var(--font-display-72);
  font-weight: 700;
}

.section-label {
  font-family: var(--wp--preset--font-family--display);
  font-size: var(--font-display-16);
  font-weight: 700;
  letter-spacing: 0.1em;
}

.section-label-small {
  font-family: var(--wp--preset--font-family--display);
  font-size: var(--font-display-11);
  font-weight: 700;
  letter-spacing: 0.1em;
}

p:not([class*="has-text-align"]):not([class*="section-tag"]):not([class*="block-title"]),
.section-text {
  text-align: justify;
  line-break: strict;
  hanging-punctuation: last allow-end;
}

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

body.admin-bar .hero {
  margin-top: 32px;
}

@media screen and (max-width: 782px) {
  body.admin-bar .hero {
    margin-top: 46px;
  }
  /* p:not([class*="has-text-align"]):not([class*="section-tag"]):not([class*="block-title"]), .section-text {
    text-align: start;
  } */
}

/* ===============================================
   共通レイアウト
   =============================================== */

/* .pageクラスは削除 - セクションが直接body直下に配置されるため不要 */

.inner {
    margin-right: auto;
    margin-left: auto;
    padding-right: clamp(1.25rem, 4.6875vw, 4.1875rem);
    padding-left: clamp(1.25rem, 4.6875vw, 4.1875rem);
    max-width: calc(66.25rem + 9.375vw);
    width: clamp(90%, 82.8125vw, 100%);
}

@media (min-width: 1440px) {
    .inner {
        padding-right: 4.1875rem;
        padding-left: 4.1875rem;
        max-width: 1440px;
        width: 100%;
    }
}

.l-two-col {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: clamp(1.25rem, 2.78vw, 2.5rem);
    row-gap: clamp(1rem, 1.67vw, 1.5rem);
}

@media (min-width: 1440px) {
    .l-two-col {
        column-gap: 2.5rem;
        row-gap: 1.5rem;
    }
}

.section {
    padding: clamp(2.5rem, 5.5vw, 4.9375rem) 0 clamp(3.75rem, 8vw, 7.1875rem);
    position: relative;
}

@media (min-width: 1440px) {
    .section {
        padding: 4.9375rem 0 7.1875rem;
    }
}

body.front-page :where(.wp-block-group){
  padding: clamp(1.25rem, 2.75vw, 2.46875rem) 0
           clamp(1.875rem, 4vw, 3.59375rem);
}


.section-lead {
    font-family: var(--wp--preset--font-family--serif);
    font-weight: 300;
    font-size: var(--font-serif-36);
    line-height: 1.4444;
    margin-bottom: clamp(0.625rem, 1.04vw, 0.9375rem);
}

@media (min-width: 1440px) {
    .section-lead {
        font-size: 2.125rem;
        margin-bottom: 0.9375rem;
    }
}

.section-text {
    font-size: clamp(0.875rem, 1.2vw, 1.0625rem);
    letter-spacing: 0;
    line-height: 1.75;
}

@media (min-width: 1440px) {
    .section-text {
        font-size: 1.0625rem;
    }
}

.block-heading {
    text-align: center;
    margin-bottom: clamp(1.25rem, 2vw, 1.8125rem);
}

@media (min-width: 1440px) {
    .block-heading {
        margin-bottom: 1.8125rem;
    }
}

.block-title-ja {
    font-family: var(--wp--preset--font-family--serif);
    font-size: clamp(1rem, 2.7vw, 2.125rem);
    line-height: 1.5;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(1.25rem, 2.4vw, 2.1875rem);
    width: 100%;
    margin: 0 auto;
}

@media (min-width: 1440px) {
    .block-title-ja {
        font-size: 2.125rem;
        gap: 2.1875rem;
    }
}

.block-title-ja::before,
.block-title-ja::after {
    content: "";
    flex: 1 1 auto;
    height: 1px;
    background-color: #111;
    max-width: 38vw;
}

.block-title-en,
.block-title-en,
.wp-block-paragraph.block-title-en {
    font-family: var(--wp--preset--font-family--display) !important;
    font-size: var(--font-display-14);
    font-weight: 600;
    margin-top: 0;
}

@supports (-webkit-hyphens:none){
  .block-title-ja{
    margin-left: -2px !important;
  }
}

@media (max-width: 520px){
  .block-title-ja{
    display: block;
  }
  .block-title-ja::before,
  .block-title-ja::after {
    display: none;
  }
}


/* ===============================================
   Button component
   =============================================== */

.wp-block-button.btn,
a.btn{
  --btn-bg: transparent;
  --btn-fg: var(--wp--preset--color--primary);
  --btn-bd: currentColor;

  --btn-pad-y: clamp(.6rem, 3vw, 1.2rem);
  --btn-pad-x: clamp(1.25rem, 5.7vw, 12.5rem);

  --btn-min-w: 11.25rem;
  --btn-w: clamp(11.25rem, 21vw, 18.875rem);
  --btn-h: auto;

  --btn-icon: none;
  --btn-icon-size: clamp(1.7rem, 1.6vw, 1.4375rem);
  --btn-icon-gap: clamp(1.75rem, 1.25vw, 1.125rem);

  width: 100%;
  max-height: 72px;
  max-width: 450px;

  margin-top: var(--space-5xl);
}

.wp-block-button.btn > .wp-block-button__link,
a.btn{
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;

  min-width: var(--btn-min-w);
  width: var(--btn-w);
  height: var(--btn-h);

  padding: var(--btn-pad-y) var(--btn-pad-x);
  border-radius: 999px;

  background: var(--btn-bg);
  color: var(--btn-fg);
  border: 1px solid var(--btn-bd);

  font-size: var(--font-gothic-18);
  letter-spacing: 0;
  width: 100%;
  max-height: 72px;
  min-height: 48px;
  max-width: 450px;
  text-align: center;
  text-decoration: none;

  cursor: pointer;
  transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease;
}

a {
  transition: opacity 0.3s ease-out !important;
    
    -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  
  display: inline-block;
}

a:hover {
  opacity: 0.7;
}

h2.wp-block-heading{
  font-size: var(--font-serif-42);
}

/* sizes */
.wp-block-button.btn.btn--lg,
a.btn.btn--lg{
  --btn-w: min(100%, 46rem);
  --btn-min-w: 0;
  --btn-pad-y: clamp(1rem, 2.2vw, 1.6rem);
  --btn-pad-x: clamp(1.25rem, 3vw, 2.5rem);
}

/* 450x72 (PC) / 337x48 (SP) */
.wp-block-button.btn.btn--return,
a.btn.btn--return{
  --btn-w: min(100%, 28.125rem);
  --btn-min-w: 0;
  --btn-h: 4.5rem;
  --btn-pad-y: 0;
}

.wp-block-button__link{
  --btn-icon: url("../img/common/icon-arrow.svg");
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: .6em 3.5rem;
}

.wp-block-button__link::after{
  content: "";
  width: 16px;
  height: 16px;
  background-color: currentColor;
  -webkit-mask-image: var(--btn-icon);
  mask-image: var(--btn-icon);
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  flex-shrink: 0;
}

.wp-block-button.btn--external > .wp-block-button__link,
.wp-block-button__link.btn--external{
  --btn-icon: url("../img/common/icon-external.svg");
}

.wp-block-button{
  --btn-icon: url(../img/common/icon-arrow.svg);
  --btn-icon-size: 16px;
  --btn-icon-right: 3.5rem;
}

.wp-block-button.btn--external{
  --btn-icon: url(../img/common/icon-external.svg);
}

.wp-block-button > .wp-block-button__link{
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .9em var(--btn-icon-right);
}

.wp-block-button > .wp-block-button__link::after{
  content: "";
  position: absolute;
  top: 50%;
  right: 1.75rem;
  transform: translateY(-50%);
  width: calc(var(--btn-icon-size) * 1.5);
  height: calc(var(--btn-icon-size) * 1.5);
  background-color: currentColor;
  -webkit-mask-image: var(--btn-icon);
  mask-image: var(--btn-icon);
  -webkit-mask-size: contain;
  mask-size: contain;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  flex-shrink: 0;
}

.wp-block-button.btn--external.is-style-outline > .wp-block-button__link {
  display: block;
  width: 100%;
  max-width: 450px;
  min-width: 450px;
  min-height: 48px;
  max-height: 72px;
  margin-block: 0 var(--space-6xl);
  padding: clamp(12px, 2vw, 20px) 3.5rem clamp(12px, 2vw, 20px) clamp(20px, 3vw, 40px);
  border-radius: 999px;
  text-align: center;
  font-size: var(--font-gothic-18);
  letter-spacing: 0;
  text-decoration: none;
  cursor: pointer;
  transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease;
  position: relative;
}

.wp-block-buttons:not(:has(+ .wp-block-lazyblock-lb-info-section)) .wp-block-button.btn--external.is-style-outline > .wp-block-button__link {
  margin-bottom: 0;
}

@media (max-width: 781px){
  .wp-block-button.btn.btn--return,
  a.btn.btn--return{
    --btn-w: min(100%, 21.0625rem);
    --btn-h: 3rem;
  }
  
  .wp-block-button.btn--external.is-style-outline > .wp-block-button__link {
    max-width: 337px;
    min-width: 335px;
  }
}

/* styles */
.wp-block-button.btn.btn--primary,
a.btn.btn--primary{
  --btn-bg: var(--wp--preset--color--primary);
  --btn-fg: var(--wp--preset--color--white);
  --btn-bd: transparent;
}

.wp-block-button.btn.btn--outline,
a.btn.btn--outline{
  --btn-bg: var(--wp--preset--color--white);
  --btn-fg: var(--wp--preset--color--primary);
  --btn-bd: var(--wp--preset--color--primary);
}

/* icon right */
.wp-block-button.btn.btn--icon-right > .wp-block-button__link,
a.btn.btn--icon-right{
  padding-right: var(--btn-pad-x);
  padding-left: var(--btn-pad-x);
  justify-content: center;
}
.wp-block-button.btn.btn--icon-right > .wp-block-button__link::after,
a.btn.btn--icon-right::after{
  content: "";
  position: absolute;
  top: 50%;
  right: var(--btn-icon-gap);
  transform: translateY(-50%);
  width: var(--btn-icon-size);
  height: var(--btn-icon-size);
  background-color: currentColor;
  -webkit-mask: var(--btn-icon) center / contain no-repeat;
          mask: var(--btn-icon) center / contain no-repeat;
  transition: transform .15s ease;
}

.wp-block-button.btn.btn--icon-left > .wp-block-button__link,
a.btn.btn--icon-left{
  padding-left: var(--btn-pad-x);
  padding-right: var(--btn-pad-x);
  justify-content: center;
}
.wp-block-button.btn.btn--icon-left > .wp-block-button__link::before,
a.btn.btn--icon-left::before{
  content: "";
  position: absolute;
  top: 50%;
  left: var(--btn-icon-gap);
  transform: translateY(-50%);
  width: var(--btn-icon-size);
  height: var(--btn-icon-size);
  background-color: currentColor;
  -webkit-mask: var(--btn-icon) center / contain no-repeat;
          mask: var(--btn-icon) center / contain no-repeat;
  transition: transform .15s ease;
}

.wp-block-button.btn.btn--arrow,   a.btn.btn--arrow{   --btn-icon: url("../img/common/icon-arrow.svg"); }
.wp-block-button.btn.btn--download,a.btn.btn--download{--btn-icon: url("../img/icon-download.svg"); }
.wp-block-button.btn.btn--external,a.btn.btn--external{--btn-icon: url("../img/icon-external.svg"); }
.wp-block-button.btn.btn--back,    a.btn.btn--back{    --btn-icon: url("../img/common/icon-arrow.svg"); }

.wp-block-button.btn.btn--back.btn--icon-left > .wp-block-button__link,
a.btn.btn--back.btn--icon-left{
  padding-right: var(--btn-pad-x);
}
.wp-block-button.btn.btn--back.btn--icon-left > .wp-block-button__link::after,
a.btn.btn--back.btn--icon-left::after{
  content: none !important;
}
.wp-block-button.btn.btn--back.btn--icon-left > .wp-block-button__link::before,
a.btn.btn--back.btn--icon-left::before{
  transform: translateY(-50%) scaleX(-1);
}

/* hover */
.wp-block-button.btn.btn--arrow.btn--icon-right:hover > .wp-block-button__link::after,
a.btn.btn--arrow.btn--icon-right:hover::after{
  transform: translateY(-50%) translateX(8px);
}

/* focus */
.wp-block-button.btn > .wp-block-button__link:focus,
a.btn:focus{
  outline: none;
  box-shadow: none;
}
.wp-block-button.btn > .wp-block-button__link:focus-visible,
a.btn:focus-visible{
  outline: 2px solid var(--wp--preset--color--primary);
  outline-offset: 6px;
  box-shadow: none;
}

/* ===============================================
   レスポンシブ改行制御
   =============================================== */

.br-pc {
    display: inline;
}

/* ===============================================
   PC/SP表示切り替え
   =============================================== */

.is-style-pc-only {
    display: inline;
}

.is-style-sp-only {
    display: none;
}



/* ===============================================
   セクション幅制御（Section / Narrow）
   - PC：max-width 700px で中央寄せ
   - SP：幅差を出さず通常幅（親コンテナ幅）に戻す
   ※左右paddingは外側（ページ側）で管理
   =============================================== */

.is-style-section-narrow{
    width: 100%;
    margin-left: auto;
    margin-right: auto;
}

@media (min-width: 782px){
    .is-style-section-narrow{
        max-width: 700px;
    }
}

@media (max-width: 781px){
    .is-style-section-narrow{
        max-width: none;
    }
}
/* ===============================================
   改行制御スタイル
   =============================================== */

@media (max-width: 781px) {
    .pc-break {
        display: none !important;
    }
}

/* スマホのみ改行（PCでは消す） */
@media (min-width: 782px) {
    .sp-break {
        display: none !important;
    }
}

/* ===============================================
   アニメーションスタイル
   =============================================== */

/* ふわっと */
@keyframes fade-in {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.is-style-fade-in-slow {
    animation: fade-in 1.5s ease-out;
}

.is-style-fade-in-normal {
    animation: fade-in 1s ease-out;
}

.is-style-fade-in-fast {
    animation: fade-in 0.6s ease-out;
}

/* 揺れる */
@keyframes swing {
    0%, 100% {
        transform: rotate(-3deg);
    }
    50% {
        transform: rotate(3deg);
    }
}

.is-style-swing-slow {
    animation: swing 3s ease-in-out infinite;
    transform-origin: center bottom;
}

.is-style-swing-normal {
    animation: swing 2s ease-in-out infinite;
    transform-origin: center bottom;
}

.is-style-swing-fast {
    animation: swing 1s ease-in-out infinite;
    transform-origin: center bottom;
}

/* 跳ねる */
@keyframes bounce {
    0%, 100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-10px);
    }
}

.is-style-bounce-slow {
    animation: bounce 3s ease-in-out infinite;
}

.is-style-bounce-normal {
    animation: bounce 2s ease-in-out infinite;
}

.is-style-bounce-fast {
    animation: bounce 1s ease-in-out infinite;
}

/* 回転 */
@keyframes rotate {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

.is-style-rotate-slow {
    animation: rotate 8s linear infinite;
}

.is-style-rotate-fast {
    animation: rotate 4s linear infinite;
}

/* ===============================================
   セクション見出し背景
   =============================================== */
.section-heading-bg,
.wp-block-paragraph.section-heading-bg {
    overflow: visible;
    white-space: nowrap;
    padding-inline: 0;
    box-sizing: border-box;
    font-family: var(--wp--preset--font-family--display);
    font-size: var(--font-display-99) !important;
    letter-spacing: .05em;
    font-weight: 700;
    color: var(--wp--preset--color--primary);
    width: 100vw;
    position: relative;
    left: 50%;
    transform: translate(-50%, 35px);
}

.model-cours .section-heading-bg{
  top: -28px;
}

.section-heading {
    text-align: center;
    margin-bottom: 2rem;
}

.section-title-ja {
    font-family: var(--wp--preset--font-family--serif);
    font-size: var(--font-serif-56) !important;
    line-height: 1.1;
    letter-spacing: 0.1em;
    margin-left: auto !important;
    margin-right: auto !important;
}

.section-heading .section-title-ja{
  margin-top: 0px !important;
  margin-bottom: -11px !important;
}

.section-tag-en,
p.section-tag-en,
.wp-block-paragraph.section-tag-en {
    margin-bottom: clamp(1.25rem, 2.22vw, 2rem);
    font-family: var(--wp--preset--font-family--display) !important;
    font-weight: 700;
    font-size: var(--font-display-14);
}
@media (max-width: 781px) {
    .l-two-col {
        grid-template-columns: 1fr;
    }
    
    .is-style-pc-only {
        display: none;
    }
    
    .is-style-sp-only {
        display: block;
    }
    
    .is-style-pc-break br {
        display: none;
    }
    
    .is-style-sp-break br {
        display: inline;
    }
    
    .br-pc {
        display: none;
    }
}

@media (max-width: 520px) {
    .section {
        padding: clamp(3.125rem, 13vw, 4.25rem) 0 clamp(3.75rem, 16vw, 5.1875rem);
    }
    
    .section-text {
        font-size: clamp(0.9375rem, 3.9vw, 1.25rem);
        line-height: 1.9;
    }
    
    .block-heading {
        margin-bottom: clamp(1.1875rem, 5vw, 1.625rem);
    }
    
    .block-title-ja,
    .section-lead {
        font-size: clamp(1.25rem, 5.3vw, 1.75rem);
        letter-spacing: 0;
    }
    .section-heading .section-title-ja {
      margin-top: 25px !important;
      margin-bottom: 8px !important;
    }

    .discove .section-heading-bg{
      top: 38px;
    }

    .model-cours .section-heading-bg{
      top: -11px;
    }

    .about .section-heading-bg{
      top: 21px;
    }
    
    .block-title-en {
        font-size: clamp(0.6875rem, 2.9vw, 0.9375rem);
    }
    
    .block-title-ja::before,
    .block-title-ja::after {
        display: none;
    }
    
    .btn {
        font-size: clamp(0.875rem, 3.7vw, 1.1875rem);
        min-width: 12.5rem;
    }
    
    .section-title-ja {
        letter-spacing: 0;
        margin-bottom: 0;
    }
    
    .section-tag-en {
        margin-top: 0;
        line-height: .7;
    }
}

/* ========================================
   モデルコースカード連番
   ======================================== */
.model-card__number {
    font-family: var(--wp--preset--font-family--sans);
    font-size: var(--font-gothic-20);
    font-weight: 700;
    color: var(--wp--preset--color--primary);
    margin-bottom: 0.5em;
}

/* ========================================
   ボタン矢印アイコン（SVG - mask-image）
   ======================================== */
/* デフォルト：全ボタンに右矢印 */
.wp-block-button__link {
    display: inline-flex !important;
    align-items: center;
    gap: 8px;
    padding: .6em 3.5rem;
}

.wp-block-button__link::after {
    content: "";
    width: 16px;
    height: 16px;
    background-color: currentColor;
    mask-image: url('../img/common/icon-arrow.svg');
    mask-size: contain;
    mask-repeat: no-repeat;
    mask-position: center;
    -webkit-mask-image: url('../img/common/icon-arrow.svg');
    -webkit-mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-position: center;
    flex-shrink: 0;
}

/* ダウンロードボタン：ダウンロードアイコン */
.btn--download .wp-block-button__link::after {
    mask-image: url('../img/common/icon-download.svg');
    -webkit-mask-image: url('../img/common/icon-download.svg');
}



/* ===============================================
   マルキーアニメーション
   =============================================== */
.section-heading-bg__track {
  display: inline-flex;
  width: max-content;
  will-change: transform;
  animation: marquee var(--dur, 20s) linear infinite;
}

.section-heading-bg__item {
  white-space: nowrap;
  padding-right: 1em;
}

@keyframes marquee {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-50%);
  }
}

/* ===============================================
   汎用フォントサイズクラス
   =============================================== */
.has-font-size-14,
.fs-14 {
  font-size: var(--font-gothic-14);
}

/* ===============================================
   フォーカス非表示
   =============================================== */
:where(a, button, input, textarea, select, summary, [tabindex]):focus:not(:focus-visible){
  outline: none !important;
}

:where(a, button, input, textarea, select, summary, [tabindex]):focus-visible{
  outline: 2px solid var(--green-main) !important;
  outline-offset: 6px !important;
}

:where(a, button, input, textarea, select, summary, [tabindex], .wp-element-button):focus,
:where(a, button, input, textarea, select, summary, [tabindex], .wp-element-button):focus-visible{
  outline: none !important;
  box-shadow: none !important;
}

/* ===============================================
   ネガティブマージン
   =============================================== */
.obz-pull-up{
  margin-bottom: -50px;
}

@media (max-width: 520px) {
  .obz-pull-up{
    margin-bottom: -20px;
  }
}