:root {
  --ink:#111;
  --muted:#666;
  --line:#d8d8d8;
  --paper:#fff;
  --gutter:clamp(24px,5.55vw,88px);
  --max-width:1600px;
  --font-sans:Arial,"Helvetica Neue","Hiragino Kaku Gothic ProN","Hiragino Sans",Meiryo,sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
}
* {
  box-sizing:border-box;
}
html {
  scroll-behavior:smooth;
  scroll-padding-top:32px;
}
body {
  margin:0;
  color:var(--ink);
  background:var(--paper);
  font-family:var(--font-sans);
  -webkit-font-smoothing:antialiased;
}
a {
  color:inherit;
  text-decoration:none;
}
button {
  font:inherit;
}
a,button {
  -webkit-tap-highlight-color:transparent;
}
a:focus-visible,button:focus-visible {
  outline:2px solid var(--ink);
  outline-offset:7px;
}
p,h1,h2,h3 {
  margin:0;
}
img {
  display:block;
  max-width:100%;
}
::selection {
  background:#111;
  color:#fff;
}
.wrap {
  width:min(100%,var(--max-width));
  padding-inline:var(--gutter);
  margin-inline:auto;
}
.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}
.skip-link {
  position:fixed;
  top:12px;
  left:12px;
  z-index:100;
  background:#111;
  color:#fff;
  padding:12px 20px;
  transform:translateY(-160%);
}
.skip-link:focus {
  transform:none;
}
.site-header {
  height:122px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:32px;
  position:relative;
  z-index:20;
}
.home-link {
  display:block;
  flex-shrink:0;
}
.wordmark {
  display:block;
  position:relative;
  overflow:hidden;
  width:204px;
  aspect-ratio:750/175;
}
.wordmark img {
  position:absolute;
  max-width:none;
  width:167.2%;
  height:auto;
  left:-12%;
  top:-562.85714%;
}
.desktop-nav {
  display:flex;
  gap:36px;
  font-size:1rem;
  letter-spacing:-.02em;
}
.desktop-nav a {
  position:relative;
  padding-block:12px;
}
.desktop-nav a::after {
  content:"";
  position:absolute;
  left:0;
  bottom:5px;
  width:100%;
  height:1px;
  background:currentColor;
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .3s var(--ease);
}
.desktop-nav a:hover::after,.desktop-nav a[aria-current="page"]::after {
  transform:scaleX(1);
}
.menu-toggle {
  display:none;
}
.mobile-nav[hidden] {
  display:none;
}
.mobile-nav {
  display:none;
}
.eyebrow,.section-label {
  font-size:12px;
  line-height:1.5;
  font-weight:500;
  letter-spacing:.045em;
}
.section-label {
  display:flex;
  align-items:baseline;
  gap:24px;
}
.section-label>span:first-child {
  font-size:11px;
  color:var(--muted);
  min-width:18px;
}
.home-hero {
  padding-top:40px;
  padding-bottom:40px;
  display:flex;
  flex-direction:column;
  gap:40px;
}
.hero-topline {
  display:flex;
  justify-content:space-between;
  align-items:center;
}
.hero-topline .eyebrow:last-child {
  color:var(--muted);
  font-size:11px;
  letter-spacing:.075em;
}
.home-hero h1 {
  font-size:clamp(48px,6.9vw,110px);
  letter-spacing:-.015em;
  line-height:1.48;
  font-weight:600;
  margin-left:-.045em;
}
.hero-line {
  display:block;
}
@keyframes hero-slide-enter {
  from {
    opacity:0;
    transform:translate3d(clamp(-56px,-4vw,-28px),0,0);
  }
  25% {
    opacity:1;
  }
  to {
    opacity:1;
    transform:translate3d(0,0,0);
  }
}
.inner-title-line {
  display:block;
}
@keyframes inner-title-enter {
  from {
    opacity:0;
    transform:translate3d(0,12px,0);
  }
  to {
    opacity:1;
    transform:translate3d(0,0,0);
  }
}
@keyframes inner-copy-enter {
  from { opacity:0; }
  to { opacity:1; }
}
@media(prefers-reduced-motion:no-preference) {
  .home .hero-bottom>p {
    animation:inner-title-enter .8s var(--ease) .3s both;
  }
  .inner-page .inner-title-line {
    animation:inner-title-enter .78s var(--ease) .08s both;
  }
  .inner-page .inner-title-line:nth-child(2) {
    animation-delay:.22s;
  }
  .inner-page .inner-subtitle {
    animation:inner-copy-enter .65s var(--ease) .28s both;
  }
  .hero-line {
    animation:hero-slide-enter .95s cubic-bezier(.16,1,.3,1) both;
  }
  .hero-line:nth-child(2) {
    animation-delay:.12s;
  }
}
.hero-bottom>p {
  font-size:1rem;
  letter-spacing:.04em;
  line-height:1.8;
}
.statement {
  position:relative;
  margin-top:24px;
  padding-top:36px;
  padding-bottom:96px;
  display:block;
}
.statement::before,.home-story::before,.home-service::before {
  content:"";
  position:absolute;
  left:var(--gutter);
  right:var(--gutter);
  top:0;
  border-top:1px solid var(--line);
}
.statement>.section-label {
  padding-top:0;
}
.statement-body {
  padding-top:36px;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:48px;
}
.statement-heading {
  font-size:clamp(30px,3.65vw,56px);
  line-height:1.75;
  font-weight:500;
  letter-spacing:-.015em;
}
.statement-copy {
  padding-top:10px;
  max-width:670px;
}
.statement-copy .desktop-break {
  display:none;
}
.statement-copy p,.body-copy {
  font-size:1rem;
  line-height:2.3;
  letter-spacing:.025em;
}
.text-link {
  display:inline-flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  min-height:50px;
  margin-top:32px;
  font-size:.875rem;
  border-bottom:1px solid #111;
}
.arrow {
  display:inline-block;
  font-family:Arial,sans-serif;
  font-size:27px;
  font-weight:400;
  line-height:1;
}
.text-link .arrow {
  font-size:22px;
  transition:transform .3s var(--ease);
}
@media(hover:hover) and (pointer:fine) {
  .text-link:hover .arrow {
    transform:translate(3px,-3px);
  }
}
.home-story {
  position:relative;
  padding-top:44px;
  padding-bottom:88px;
  display:grid;
  grid-template-columns:1fr 2.2fr;
  gap:32px;
}
.home-story-body {
  padding-top:24px;
}
.story-quote {
  font-size:clamp(23px,2.4vw,36px);
  font-weight:500;
  line-height:1.9;
  letter-spacing:-.035em;
}
.story-phrase {
  display:inline-block;
}
.home-story .body-copy {
  margin-top:35px;
  color:#444;
}
.home-service {
  position:relative;
  padding-top:44px;
  padding-bottom:88px;
}
.service-entry {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:32px;
  padding-top:40px;
  padding-left:calc(31.25% + 22px);
}
.service-overline {
  font-size:.875rem;
  letter-spacing:.035em;
}
.service-entry h2 {
  font-size:clamp(48px,5vw,72px);
  font-weight:500;
  letter-spacing:0;
  line-height:1.2;
  margin-top:14px;
}
.service-entry h2,.service-hero .habit-title {
  transform:scaleY(.9);
  transform-origin:left center;
}
.service-number {
  padding-left:.06em;
  font-weight:400;
}
.service-entry p {
  font-size:.875rem;
  line-height:1.8;
  margin-top:18px;
  color:#555;
}
.service-link-circle {
  height:70px;
  width:70px;
  flex-shrink:0;
  border:1px solid #b5b5b5;
  border-radius:50%;
  display:grid;
  place-items:center;
  transition:background .3s,color .3s,transform .3s;
}
.service-entry:hover .service-link-circle {
  background:#111;
  border-color:#111;
  color:#fff;
  transform:translate(3px,-3px);
}
.inner-hero {
  padding-top:72px;
  padding-bottom:112px;
}
.inner-hero h1 {
  font-size:clamp(42px,6.15vw,88px);
  font-weight:500;
  line-height:1.5;
  letter-spacing:-.015em;
  margin-top:74px;
}
.inner-subtitle {
  margin-top:36px;
  font-size:1rem;
  line-height:1.9;
}
.editorial-section {
  position:relative;
  padding-top:56px;
  padding-bottom:105px;
  display:grid;
  grid-template-columns:1fr 2.2fr;
  gap:32px;
}
.editorial-section::before {
  content:"";
  position:absolute;
  left:var(--gutter);
  right:var(--gutter);
  top:0;
  border-top:1px solid var(--line);
}
.editorial-copy {
  max-width:690px;
  font-size:1rem;
  line-height:2.25;
  letter-spacing:.025em;
}
.editorial-copy h2 {
  font-size:clamp(28px,3.2vw,43px);
  line-height:1.7;
  letter-spacing:-.04em;
  font-weight:500;
  margin-bottom:32px;
}
.editorial-copy p+p {
  margin-top:25px;
}
.editorial-copy p+h2 {
  margin-top:80px;
}
.next-page {
  position:relative;
  display:grid;
  grid-template-columns:1fr 2.2fr;
  align-items:center;
  gap:32px;
  padding-top:50px;
  padding-bottom:70px;
  border-top:1px solid var(--line);
}
.next-page>.section-label {
  width:auto;
  font-size:11px;
  color:#666;
  align-self:flex-start;
  padding-top:15px;
}
.next-title {
  padding-right:72px;
  font-size:clamp(38px,5.3vw,72px);
  line-height:1.2;
  letter-spacing:-.015em;
}
.next-title small {
  display:block;
  font-size:.875rem;
  margin-top:16px;
  letter-spacing:0;
}
.next-page>.arrow {
  position:absolute;
  right:var(--gutter);
  top:50%;
  margin-left:auto;
  font-size:45px;
  transform:translateY(-50%);
  transition:transform .3s;
}
.next-page:hover>.arrow {
  transform:translate(5px,calc(-50% - 5px));
}
.founder-story {
  display:grid;
  grid-template-columns:1fr 2.2fr;
  gap:32px;
  padding-bottom:130px;
}
.founder-aside {
  padding-right:44px;
}
.founder-portrait {
  width:100%;
  height:auto;
  aspect-ratio:4/5;
  object-fit:cover;
  object-position:center;
}
.founder-caption {
  font-size:12px;
  margin-top:16px;
  line-height:1.8;
}
.story-lead {
  font-size:24px;
  letter-spacing:-.03em;
  margin-bottom:30px;
}
.service-hero .habit-title {
  font-family:Arial,sans-serif;
  font-size:clamp(64px,8vw,112px);
  letter-spacing:0;
  line-height:1.08;
}
.habit-title .service-number {
  padding-left:.06em;
  font-weight:400;
}
.service-facts {
  margin-top:48px;
  margin-bottom:45px;
  font-size:.875rem;
}
.service-facts div {
  display:grid;
  grid-template-columns:140px 1fr;
  gap:20px;
  padding:20px 0;
  border-top:1px solid var(--line);
}
.service-facts div:last-child {
  border-bottom:1px solid var(--line);
}
.service-facts dt {
  color:#666;
}
.service-facts dd {
  margin:0;
}
.service-notice {
  border-left:2px solid #aaa;
  padding-left:24px;
  font-size:.875rem;
  line-height:2;
}
.service-notice p+p {
  color:#666;
  margin-top:10px;
}
.will-reveal {
  opacity:0;
  transform:translateY(15px);
  transition:opacity .85s var(--ease),transform .85s var(--ease);
}
.will-reveal.revealed {
  opacity:1;
  transform:none;
}
.home-reveal.will-reveal {
  transition:opacity .75s var(--ease),transform .85s var(--ease);
  transition-delay:var(--reveal-delay,0ms);
}
.home-reveal.will-reveal:not(.revealed) {
  transform:translateY(12px);
}
.detail-reveal.will-reveal {
  transform:none;
  transition:opacity .65s var(--ease),transform .8s var(--ease);
  transition-delay:var(--reveal-delay,0ms);
}
.detail-reveal.will-reveal:is(h2,.story-lead):not(.revealed) {
  transform:translateY(8px);
}
@media(max-width:1000px) {
  .desktop-nav {
    gap:24px;
  }
  .home-story,.editorial-section,.founder-story {
    grid-template-columns:1fr 2.5fr;
  }
  .statement-copy p,.body-copy,.editorial-copy {
    font-size:1rem;
  }
  .service-entry {
    padding-left:calc(28.5714% + 22.8571px);
  }
  .founder-aside {
    padding-right:12px;
  }
  .next-page {
    grid-template-columns:1fr 2.5fr;
  }
  .home-hero h1 {
    font-size:7vw;
  }
}
@media(max-width:760px) {
  .site-header {
    height:76px;
    gap:18px;
  }
  .wordmark {
    width:164px;
  }
  .desktop-nav {
    display:none;
  }
  .menu-toggle {
    -webkit-appearance:none;
    appearance:none;
    color:var(--ink);
    display:flex;
    align-items:center;
    justify-content:center;
    gap:15px;
    border:0;
    padding:10px 0 10px 14px;
    background:transparent;
    font-size:13px;
    min-height:44px;
    cursor:pointer;
  }
  .menu-icon {
    width:21px;
    height:12px;
    position:relative;
  }
  .menu-icon::before,.menu-icon::after {
    content:"";
    position:absolute;
    left:0;
    width:21px;
    height:1px;
    background:#111;
    transition:transform .3s,top .3s;
  }
  .menu-icon::before {
    top:2px;
  }
  .menu-icon::after {
    top:9px;
  }
  .menu-toggle[aria-expanded="true"] .menu-icon::before {
    top:6px;
    transform:rotate(45deg);
  }
  .menu-toggle[aria-expanded="true"] .menu-icon::after {
    top:6px;
    transform:rotate(-45deg);
  }
  .mobile-nav {
    display:block;
    padding:26px var(--gutter) 42px;
    background:#fff;
    border-bottom:1px solid var(--line);
  }
  .mobile-nav a {
    display:flex;
    align-items:center;
    gap:22px;
    padding:23px 0;
    border-top:1px solid var(--line);
    font-size:28px;
    letter-spacing:-.035em;
  }
  .mobile-nav a>span:nth-child(2) {
    flex:1;
  }
  .mobile-nav small {
    display:block;
    font-size:12px;
    letter-spacing:0;
    color:#666;
    margin-top:8px;
  }
  .nav-number {
    font-size:11px;
    color:#666;
  }
  .mobile-nav a[aria-current="page"]>span:nth-child(2) {
    text-decoration:underline;
    text-underline-offset:6px;
  }
  .home-hero {
    padding-top:16px;
    padding-bottom:20px;
    gap:20px;
  }
  .hero-topline .eyebrow:last-child {
    display:none;
  }
  .home-hero h1 {
    font-size:clamp(33px,6.75vw,51px);
    font-weight:600;
    line-height:1.5;
    letter-spacing:0;
  }
  .hero-bottom>p {
    font-size:13px;
    letter-spacing:.015em;
  }
  .home-hero .eyebrow {
    font-size:11px;
  }
  .statement {
    margin-top:12px;
    padding-top:30px;
    padding-bottom:56px;
    display:block;
  }
  .section-label {
    font-size:11px;
    gap:15px;
  }
  .statement>.section-label {
    padding-top:0;
  }
  .statement-body {
    padding-top:32px;
    display:block;
  }
  .statement-heading {
    font-size:clamp(26px,7.5vw,31px);
    line-height:1.75;
  }
  .statement-copy {
    margin-top:24px;
    padding-top:0;
  }
  .statement-copy p,.body-copy,.editorial-copy {
    font-size:1rem;
    line-height:2.1;
  }
  .desktop-break {
    display:none;
  }
  .text-link {
    font-size:.875rem;
    margin-top:26px;
    gap:18px;
  }
  .home-story {
    display:block;
    padding-top:30px;
    padding-bottom:56px;
  }
  .home-story-body {
    padding-top:32px;
  }
  .story-quote {
    font-size:23px;
    line-height:1.9;
    letter-spacing:-.015em;
  }
  .home-story .body-copy {
    margin-top:28px;
    font-size:1rem;
  }
  .home-service {
    padding-top:30px;
    padding-bottom:56px;
  }
  .service-entry {
    padding-left:0;
    padding-top:32px;
    gap:20px;
  }
  .service-entry h2 {
    font-size:48px;
    margin-top:12px;
  }
  .service-entry p {
    font-size:12px;
    margin-top:12px;
  }
  .service-overline {
    font-size:13px;
  }
  .service-link-circle {
    width:48px;
    height:48px;
  }
  .service-link-circle .arrow {
    font-size:25px;
  }
  .inner-hero {
    padding-top:44px;
    padding-bottom:66px;
  }
  .inner-hero h1 {
    font-size:clamp(35px,7.8vw,57px);
    margin-top:54px;
    line-height:1.65;
  }
  .inner-subtitle {
    font-size:.875rem;
    margin-top:28px;
  }
  .editorial-section {
    display:block;
    padding-top:30px;
    padding-bottom:70px;
  }
  .editorial-section .editorial-copy {
    margin-top:44px;
  }
  .editorial-copy h2 {
    font-size:29px;
    line-height:1.75;
    margin-bottom:25px;
  }
  .editorial-copy p+h2 {
    margin-top:55px;
  }
  .next-page {
    display:flex;
    padding-top:28px;
    padding-bottom:43px;
    gap:22px;
    flex-wrap:wrap;
  }
  .next-page>.section-label {
    width:100%;
    padding-top:0;
    font-size:11px;
  }
  .next-title {
    padding-right:72px;
    font-size:47px;
  }
  .next-title small {
    font-size:12px;
    margin-top:14px;
  }
  .next-page>.arrow {
    font-size:32px;
    top:55%;
  }
  .founder-story {
    display:flex;
    flex-direction:column;
    gap:44px;
    padding-bottom:80px;
  }
  .founder-aside {
    padding-right:0;
    width:60%;
    max-width:250px;
  }
  .founder-caption {
    font-size:12px;
  }
  .story-lead {
    font-size:21px;
  }
  .service-hero .habit-title {
    font-size:clamp(52px,10vw,76px);
    margin-top:52px;
  }
  .service-facts div {
    grid-template-columns:100px 1fr;
    gap:12px;
  }
  .service-facts {
    font-size:.875rem;
  }
  .service-notice {
    font-size:.875rem;
    padding-left:18px;
  }
}
@media(max-width:370px) {
  .home-hero h1 {
    font-size:8.15vw;
  }
  .hero-bottom>p {
    font-size:12px;
  }
  .story-quote {
    font-size:20px;
  }
  .service-entry h2 {
    font-size:44px;
  }
}
@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto;
  }
  *,*::before,*::after {
    animation:none!important;
    transition:none!important;
  }
  .will-reveal {
    opacity:1!important;
    transform:none!important;
  }
}

.site-footer {
  display:flex;
  align-items:center;
  gap:32px;
  border-top:1px solid var(--line);
  padding-top:24px;
  padding-bottom:24px;
}
.footer-home .wordmark {
  width:160px;
}
.copyright {
  margin-left:auto;
  font-size:12px;
  color:var(--muted);
}
.back-top {
  display:flex;
  align-items:center;
  gap:20px;
  min-height:44px;
  font-size:12px;
}
.back-top span {
  font-size:20px;
}
.inner-hero.philosophy-hero {
  padding-top:48px;
  padding-bottom:72px;
}
.philosophy-hero h1 {
  font-size:clamp(28px,5.5vw,72px);
  margin-top:40px;
  letter-spacing:0;
}
@media(max-width:760px) {
  .site-footer {
    display:grid;
    grid-template-columns:1fr auto;
    gap:8px 20px;
    padding-top:20px;
    padding-bottom:20px;
  }
  .footer-home .wordmark {
    width:144px;
  }
  .copyright {
    grid-column:1;
    grid-row:2;
    margin-left:0;
    font-size:11px;
  }
  .back-top {
    grid-column:2;
    grid-row:1 / 3;
    gap:12px;
  }
  .inner-hero.philosophy-hero {
    padding-top:32px;
    padding-bottom:48px;
  }
  .philosophy-hero h1 {
    font-size:clamp(28px,6.8vw,48px);
    margin-top:32px;
    line-height:1.5;
  }
}

/* 正式名称はブランド名とプログラム名を二段で表示する。 */
.service-entry .program-brand-name,.service-hero .habit-title .program-brand-name {
  display:block;
  padding-left:0;
  margin-bottom:10px;
  font-size:18px;
  font-weight:500;
  letter-spacing:.015em;
}
@media(max-width:760px) {
  .service-entry h2 {
    font-size:clamp(28px,7.8vw,44px);
  }
  .service-hero .habit-title {
    font-size:clamp(40px,9vw,68px);
  }
  .service-entry .program-brand-name,.service-hero .habit-title .program-brand-name {
    font-size:14px;
    margin-bottom:8px;
  }
}
