/* Client revisions, October 17. Keep previous site styles intact. */
.service-copy .program-label { padding-left:18px;gap:0; }
.service h3 { font-size:46px;line-height:56px;letter-spacing:0;margin:16px 0 10px 4px;white-space:normal; }
.service-tagline { font-size:20px;font-weight:600;line-height:52px;padding-left:4px; }
.service .service-text { font-size:16px;line-height:26px;padding-left:4px;max-width:540px; }
.service-copy>.service-details { margin:28px 0 0 4px;background:var(--blue);color:white;border-color:var(--blue); }
.service-visual { align-self:start; }
.company-page .inner-heading { align-items:center; }
.company-page .inner-heading>p { transform:translateY(7px); }
.company-page .message-text { padding-top:40px; }
.company-page .message-text h3 { font-size:36px;line-height:46px;font-weight:600;margin-bottom:30px; }
.company-page .message-text p { margin:0; }
.map,.map img,.map iframe { filter:none; }
.contact-page .form-row label { gap:6px; }
.contact-page .form-row label .required,.contact-page .form-row label .optional { margin-left:auto;margin-right:44px; }
.optional { border:1px solid #999;color:#777;border-radius:3px;font-size:12px;line-height:22px;width:41px;text-align:center;flex:none; }
.menu-open .header nav>a[href$='/about/'],.menu-open .header nav>a[href$='/privacy/'] { margin-bottom:8vw; }
@media(min-width:769px) and (max-width:1250px) {
 .service h3 { font-size:3.2cqw;line-height:1.3; }
 .service-tagline { font-size:1.5cqw;line-height:2.5; }
 .service .service-text { font-size:14px;line-height:1.8; }
 .contact-page .form-row label .required,.contact-page .form-row label .optional { margin-right:15px; }
}
@media(max-width:768px) {
 .service .service-layout { gap:6vw; }
 .service h3 { font-size:6.133333cqw;line-height:1.3;margin:3vw 0 2vw; }
 .service-tagline { font-size:3.733333cqw;line-height:1.7;padding:0;margin-bottom:2vw; }
 .service .service-text { font-size:3.466667cqw;line-height:1.8;padding:0;max-width:none; }
 .service-copy>.service-details { margin:5vw 0 0;width:100%; }
 .company-page .message-text { padding-top:5vw; }
 .company-page .message-text h3 { font-size:24px;line-height:1.5;margin-bottom:24px; }
 .company-page .inner-heading>p { transform:translateY(1px); }
 .contact-page .form-row label .required,.contact-page .form-row label .optional { margin:0 0 0 6px; }
}

.contact-symbol-viewport { position:absolute;inset:0;overflow:hidden;pointer-events:none; }

/* Match the supplied Message / Overview heading reference. */
@media(min-width:769px) {
 .company-page .inner-heading { gap:56px;padding-bottom:10px; }
}

/* Client revisions, October 19. */
.service-copy>.service-details {
 transition:background-color .2s,color .2s,border-color .2s,opacity .2s;
}
.service-copy>.service-details:hover,
.service-copy>.service-details:focus-visible {
 background:#fff;
 color:var(--blue);
 border-color:var(--blue);
 opacity:1;
}
.service-copy>.service-details:hover :is(.pc-arrow,.sp-chevron) img,
.service-copy>.service-details:focus-visible :is(.pc-arrow,.sp-chevron) img {
 filter:brightness(0) saturate(100%) invert(31%) sepia(32%) saturate(1799%) hue-rotate(178deg) brightness(86%) contrast(94%);
}

/* Snow Monkey Forms supplies the small select arrow; remove the duplicate large background arrow. */
.ak-contact-form .smf-form .form-row select {
 background-image:none;
}

/* Keep the long consent label and its required badge on one line. */
.ak-program-form .ak-consent .smf-item__label__text {
 padding-right:0;
 white-space:nowrap;
}
.ak-program-form .ak-consent {
 column-gap:16px;
}

/* Client revisions: service application form, October 19. */
@media(min-width:769px) {
 /* Participant count: compact pale-blue field with the unit outside. */
 .ak-program-form .smf-form .application-row:has(input[name="participants"]) .smf-item__controls {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-start;
  column-gap:12px;
  row-gap:6px;
 }
 .ak-program-form .smf-form .application-row:has(input[name="participants"]) .smf-text-control {
  flex:0 1 171px;
  width:171px;
  max-width:calc(100% - 40px);
 }
 .ak-program-form .smf-form .application-row:has(input[name="participants"]) input[name="participants"] {
  width:100%;
  height:51px;
  padding:0 10px;
  font-size:31px;
  font-weight:700;
  line-height:1;
  text-align:center;
 }
 .ak-program-form .smf-form .application-row:has(input[name="participants"]) .smf-item__controls::after {
  content:'名';
  flex:none;
  color:#111;
  font-size:16px;
  line-height:1;
 }

 /* Two-row calculation panel. */
 .ak-program-form .application-side .application-total {
  display:flex;
  flex-direction:column;
  align-items:stretch;
  justify-content:center;
  gap:18px;
  min-height:174px;
  padding:16px 32px;
  text-align:left;
 }
 .ak-program-form .application-side .application-total>p,
 .ak-program-form .application-side .application-total .ak-total-row {
  display:grid;
  grid-template-columns:122px minmax(0,1fr);
  align-items:baseline;
  width:100%;
  margin:0;
  text-align:left;
 }
 .ak-program-form .application-side .application-total>p {
  padding:0 0 12px;
  border-bottom:1px solid var(--line);
  font-size:16px;
 }
 .ak-program-form .application-side .application-total>p>strong {
  justify-self:start;
  min-width:0;
  margin:0;
  font-size:32px;
  line-height:1.3;
  text-align:left;
 }
 .ak-program-form .application-side .application-total>p>strong small {
  margin-left:3px;
  font-size:16px;
 }
 .ak-program-form .application-side .application-total .ak-total-row {
  flex:1;
  padding:0;
  border:0;
 }
 .ak-program-form .application-side .application-total .smf-item__label__text {
  justify-content:flex-start;
  padding:0;
  text-align:left;
 }
 .ak-program-form .application-side .application-total .smf-item__controls {
  position:relative;
  text-align:left;
 }
 .ak-program-form .application-side .application-total input[name="total"] {
  width:100%;
  padding:0;
  border:0;
  background:none;
  color:#111;
  font-size:46px;
  font-weight:700;
  line-height:1.3;
  text-align:left;
 }
 .ak-program-form .application-side .application-total .smf-item__controls.has-total-display .smf-text-control {
  position:absolute;
  width:1px;
  height:1px;
  overflow:hidden;
  clip-path:inset(50%);
 }
 .ak-program-form .application-side .ak-total-display {
  display:flex;
  align-items:baseline;
  color:#000;
  font-weight:700;
  line-height:1;
 }
 .ak-program-form .application-side .ak-total-display strong {
  font-size:46px;
 }
 .ak-program-form .application-side .ak-total-display small {
  margin-left:2px;
  font-size:18px;
 }
 .ak-program-form .snow-monkey-form[data-screen="confirm"] .application-side .ak-total-row .smf-placeholder {
  display:none!important;
 }
 .ak-program-form .application-side .payment-method {
  margin:10px 0 18px;
  text-align:left;
 }

 /* Coupon entry: one-line input and action button. */
 .ak-program-form .application-side .ak-coupon-row {
  display:block;
  margin:20px 0 34px;
  padding:0;
  border:0;
 }
 .ak-program-form .application-side .ak-coupon-row .smf-item__col--label {
  display:none;
 }
 .ak-program-form .application-side .ak-coupon-row .smf-item__controls {
  display:grid;
  grid-template-columns:minmax(0,1fr) 112px;
  gap:16px;
 }
 .ak-program-form .application-side .ak-coupon-row input[name="coupon"] {
  width:100%;
  min-width:0;
  height:51px;
  padding:10px 26px;
  border:1px solid var(--line);
  border-radius:0;
  background:#fff;
  color:var(--blue);
  font-size:20px;
 }
 .ak-program-form .application-side .ak-coupon-row input[name="coupon"]::placeholder {
  color:var(--blue);
  opacity:1;
 }
 .ak-program-form .application-side .ak-coupon-row .ak-apply-coupon {
  height:51px;
  border:1px solid var(--blue);
  background:var(--blue);
  color:#fff;
  font-size:18px;
 }

 /* Static-form fallback used before Snow Monkey Forms is available. */
 .program-page #application-form .participants-field {
  gap:12px;
 }
 .program-page #application-form .participants-field input[name="participants"] {
  width:171px;
  max-width:calc(100% - 40px);
  height:51px;
  padding:0 10px;
  font-size:31px;
  font-weight:700;
  line-height:1;
  text-align:center;
 }
 .program-page #application-form .participants-field>span {
  font-size:16px;
  line-height:1;
 }
}

/* Application validation feedback remains visible independently of plugin defaults. */
.ak-program-form .ak-validation-message,
.ak-program-form .smf-error-messages {
 display:block!important;
 width:100%;
 margin:7px 0 0!important;
 color:#c1001a!important;
 font-size:14px;
 font-weight:500;
 line-height:1.6;
 text-align:left;
}
.ak-program-form .smf-form .application-row:has(input[name="participants"]) .ak-validation-message {
 flex:0 0 100%;
 order:2;
}
.ak-program-form .smf-form :is(input,textarea)[aria-invalid="true"] {
 border-color:#c1001a!important;
 outline:1px solid #c1001a;
 outline-offset:1px;
}
.ak-program-form .smf-form input[type="checkbox"][aria-invalid="true"] {
 outline:2px solid #c1001a;
 outline-offset:2px;
}

/* Completion screen: retain the header, hero, application result and footer. */
body.program-page.is-application-complete #main > :not(.program-hero):not(#application) {
 display:none!important;
}
body.program-page.is-application-complete #application {
 margin-top:0;
}

/* Show WordPress news titles in the homepage mobile list. */
@media(max-width:768px) {
 .home-page .news .wp-news-list h3 {
  display:block;
 }
}

/* Client feedback, October 21. */
.home-page .section-heading {
 align-items:center;
}

.home-page .about .eyebrow {
 font-size:20px;
}

@media(min-width:769px) {
 .program-page .program-coach>.program-section-title {
  font-size:24px;
 }
 .program-page .price-note {
  font-size:16px;
 }
 .program-page .program-conditions tr>th:first-child {
  width:28%;
 }
 .program-page .program-conditions thead th:nth-child(2) {
  width:auto;
 }
 .ak-program-form textarea[name="message"],
 .program-page #application-message {
  min-height:165px;
  height:165px;
  resize:vertical;
 }
}

/* Keep the moving marker behind the four learning-cycle elements. */
.program-coach-diagram .coach-orbit-dot {
 z-index:1;
}
.program-coach-diagram [data-coach-step] {
 z-index:2;
}

/* Client feedback, October 22. */

/* Keep the animated marker behind every learning-cycle card at all widths. */
.program-coach-diagram .coach-diagram-canvas {
 isolation:isolate;
}
.program-coach-diagram .coach-orbit-dot {
 z-index:1!important;
}
.program-coach-diagram [data-coach-step] {
 z-index:2!important;
}

/* The generated amount replaces the plugin's original total field on mobile too. */
.ak-program-form .application-side .application-total .smf-item__controls.has-total-display .smf-text-control {
 position:absolute!important;
 width:1px!important;
 height:1px!important;
 overflow:hidden!important;
 clip-path:inset(50%)!important;
 white-space:nowrap!important;
}
.ak-program-form .snow-monkey-form[data-screen="confirm"] .application-side .ak-total-row .smf-placeholder {
 display:none!important;
}

/* Keep contact labels readable and give the message field a practical height. */
.contact-page .ak-contact-form label[for="contact-kana"] .smf-item__label__text {
 white-space:nowrap;
}
.contact-page .ak-contact-form textarea[name="message"],
.contact-page .ak-contact-form #contact-message {
 min-height:180px!important;
 height:240px!important;
 resize:vertical;
}

/* Keep the privacy title inside the textured half of the hero. */
@media(min-width:769px) {
 .privacy-page:not(.legal-page) .page-hero h1 {
  font-size:clamp(56px,5.3vw,76px);
  line-height:1.35;
 }
}
@media(max-width:768px) {
 .privacy-page:not(.legal-page) .page-hero h1 {
  font-size:6.4vw;
 }
 .contact-page .ak-contact-form textarea[name="message"],
 .contact-page .ak-contact-form #contact-message {
  min-height:160px!important;
  height:180px!important;
 }
}

/* Draw attention to the homepage service CTA with a continuous arrow sweep. */
.home-page .service-copy>.service-details :is(.pc-arrow,.sp-chevron) img {
 animation:ak-service-cta-arrow 1.4s cubic-bezier(.22,.61,.36,1) infinite;
 will-change:transform,opacity;
}
@keyframes ak-service-cta-arrow {
 0% { transform:translateX(-9px);opacity:0; }
 22% { opacity:1; }
 76% { transform:translateX(6px);opacity:1; }
 100% { transform:translateX(6px);opacity:0; }
}
@media(prefers-reduced-motion:reduce) {
 .home-page .service-copy>.service-details :is(.pc-arrow,.sp-chevron) img {
  animation:none;
  opacity:1;
  transform:none;
 }
}

/* Client feedback: align contact badges and restore the mobile message height. */
@media(max-width:768px) {
 .contact-page .ak-contact-form .smf-item__label__text {
  display:grid;
  grid-template-columns:minmax(0,61.2vw) 10.4vw;
  justify-content:start;
  align-items:center;
  column-gap:3.2vw;
  width:100%;
 }
 .contact-page .ak-contact-form .smf-item__label__text :is(.required,.optional) {
  justify-self:start;
  margin:0!important;
 }
 .program-page .ak-program-form .smf-form .application-row textarea[name="message"],
 .program-page .ak-program-form #application-message {
  min-height:180px!important;
  height:clamp(180px,56.933333vw,260px)!important;
  resize:vertical;
 }
 .program-page .ak-program-form .application-side .ak-total-row .smf-item__controls {
  text-align:right;
 }
 .program-page .ak-program-form .application-side .ak-total-display {
  width:100%;
  justify-content:flex-end;
  text-align:right;
 }
}
