@font-face{font-family:SpreadSans;src:url('../fonts/NotoSansJP-subset.ttf') format('truetype');font-display:swap}
@font-face{font-family:SpreadSerif;src:url('../fonts/NotoSerifJP-subset.ttf') format('truetype');font-display:swap}
@font-face{font-family:SpreadGrotesk;src:url('../fonts/NimbusSans-Regular.otf') format('opentype');font-display:swap}

:root{--blue:#193470;--ink:#171b22;--muted:#637080;--pale:#eef2f5;--line:#c8d1dc;--red:#e60023;--frame:1232px;--side:104px;--section-space:78px}
*{box-sizing:border-box}
html{scroll-behavior:smooth;overflow-x:hidden}
body{margin:0;overflow-x:hidden;color:var(--ink);background:#fff;font-family:SpreadSans,'Noto Sans JP',sans-serif;font-size:16px;font-weight:400;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4,p,ul,dl,dd{margin:0}
ul{padding:0;list-style:none}
button,input,textarea{font:inherit}
.page-frame{width:min(var(--frame),calc(100% - 48px));margin-inline:auto}
.body-copy{font-size:18px;line-height:2.02;letter-spacing:.012em}
.body-copy p+p{margin-top:20px}
.section-label{display:flex;align-items:center;gap:18px;color:var(--blue);font:15px/1 SpreadGrotesk,Arial,sans-serif;letter-spacing:.05em}
.section-label>span{display:block;width:28px;height:2px;background:var(--blue)}
.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;z-index:999;top:8px;left:8px;padding:10px 16px;background:#fff;color:var(--blue);transform:translateY(-150%)}
.skip-link:focus{transform:none}
.mobile-only{display:none}

.site-header{position:absolute;z-index:20;top:35px;left:50%;width:min(var(--frame),calc(100% - 48px));transform:translateX(-50%);display:flex;align-items:center;justify-content:space-between}
.site-header__brand{width:292px;height:98px}
.site-header__brand img{width:100%;height:100%;object-fit:contain}
.global-nav{display:flex;align-items:center;gap:34px;font:14px/1 SpreadGrotesk,Arial,sans-serif;letter-spacing:.015em}
.global-nav a{position:relative;padding:14px 0}
.global-nav a::after{content:"";position:absolute;left:0;right:100%;bottom:5px;height:1px;background:var(--blue);transition:right .25s ease}
.global-nav a:hover::after,.global-nav a:focus-visible::after{right:0}
.menu-button{display:none}

.hero{height:800px;background:#fff}
.hero__inner{height:100%;display:grid;grid-template-columns:700px 1fr;gap:34px;align-items:center;padding-top:100px}
.hero h1{color:var(--blue);font:400 52px/1.8 SpreadSerif,serif;letter-spacing:.025em;white-space:nowrap}
.hero__mark{width:430px;height:430px;object-fit:contain;justify-self:end}

.introduction{height:790px;background:var(--pale);position:relative;overflow:hidden}
.introduction__inner{width:min(1072px,calc(100% - 48px));margin-inline:auto;padding-top:92px}
.eyeline-heading{display:flex;align-items:center;gap:24px}
.eyeline-heading>span{width:28px;height:1px;background:var(--blue);flex:none}
.eyeline-heading h2{font:400 32px/1.6 SpreadSerif,serif;letter-spacing:.014em}
.introduction__body{margin:36px 0 0 136px;font-size:19px;line-height:1.9}
.introduction__body p+p{margin-top:23px}
.introduction__question{color:var(--blue);font:400 38px/1.5 SpreadSerif,serif;letter-spacing:.033em;padding-top:2px}

.value-chapter{position:relative;background:#fff}
.value-chapter__axis{position:absolute;z-index:3;left:calc(50% - 24px);top:397px;width:1px;height:597px;background:var(--blue)}
.communication{height:820px;position:relative;overflow:hidden}
.communication__plane{position:absolute;left:0;top:72px;width:calc((100% - var(--frame))/2 + 416px);height:642px;background:#f0f4f7}
.communication__inner{position:relative;height:100%;padding-top:112px}
.value-title{color:var(--blue);font:400 91px/1.08 SpreadSerif,serif;letter-spacing:.02em;white-space:nowrap}
.value-title small{display:block;margin-bottom:20px;font:400 51px/1.1 SpreadSerif,serif;letter-spacing:.03em}
.communication .value-title{margin-top:105px}
.communication__body{position:absolute;left:637px;top:397px;width:590px}

.definition{height:1160px;position:relative;overflow:hidden}
.definition__plane{position:absolute;right:0;top:95px;width:calc((100% - var(--frame))/2 + 416px);height:535px;background:#f0f4f7}
.definition__inner{position:relative;height:100%}
.definition__label{position:absolute;right:0;top:135px}
.definition__title{position:absolute;right:0;top:237px}
.definition__title small{margin-left:141px}
.definition__body{position:absolute;left:0;top:174px;width:500px}
.definition-diagram{position:absolute;left:0;right:104px;top:766px;height:245px}
.definition-diagram h3{color:var(--blue);font:400 25px/1 SpreadSerif,serif;letter-spacing:.16em;padding-bottom:18px;border-bottom:1px solid #aebaca}
.definition-diagram__steps{width:420px;height:74px;border-bottom:1px solid #9facbf;display:grid;grid-template-columns:repeat(4,1fr);align-items:end;padding-bottom:13px}
.definition-diagram__steps span{position:relative;font-size:16px;letter-spacing:.045em;text-align:center}
.definition-diagram__steps span::after{content:"";position:absolute;left:50%;top:27px;width:1px;height:23px;background:#aebaca;transform:translateX(-50%)}
.definition-diagram__flow{display:grid;grid-template-columns:404px 155px 478px;align-items:center;margin:12px 0 0 91px}
.definition-diagram__flow strong,.definition-diagram__flow span{height:106px;display:flex;align-items:center;justify-content:center;font-family:SpreadSerif,serif;font-weight:400;color:var(--blue)}
.definition-diagram__flow strong{background:var(--blue);color:#fff;font-size:38px;letter-spacing:.12em}
.definition-diagram__flow i{height:2px;background:var(--blue)}
.definition-diagram__flow span{border:1px solid #c1ccda;font-size:28px;letter-spacing:.09em}

.service{height:1000px;background:#edf1f4}
.service>.page-frame{height:100%;padding-top:30px}
.service__head{height:480px;display:grid;grid-template-columns:650px 1fr;align-items:start}
.service__head>img{width:670px;height:480px;object-fit:contain;transform:translateX(-66px)}
.service__heading{padding-top:80px}
.service__heading h2{margin-top:70px;color:var(--blue);font:400 61px/1.28 SpreadSerif,serif;letter-spacing:.023em}
.service__heading h2 em{display:block;margin-left:82px;font-style:normal;font-size:77px}
.service-grid{display:grid;grid-template-columns:repeat(3,1fr);height:444px;border-top:1px solid #9aa9bc;border-bottom:1px solid #c6d0db}
.service-item{padding:52px 26px 0 0}
.service-item+.service-item{border-left:1px solid #c6d0db;padding-left:26px}
.service-item__number{color:#617082;font:13px/1 SpreadGrotesk,Arial,sans-serif;letter-spacing:.14em}
.service-item h3{min-height:64px;margin-top:27px;font:25px/1.15 SpreadGrotesk,Arial,sans-serif;letter-spacing:-.015em}
.service-item__catch{position:relative;margin-top:14px;padding-bottom:24px;color:var(--blue);font:400 27px/1.4 SpreadSerif,serif;letter-spacing:.02em;white-space:nowrap}
.service-item__catch::after{content:"";position:absolute;left:0;bottom:9px;width:48px;height:1px;background:var(--blue)}
.service-item ul{font-size:16px;line-height:2}
.service-item--creative ul{columns:2;column-gap:28px}

.profile{height:960px;background:#fff;position:relative;overflow:hidden}
.profile>.page-frame{padding-top:var(--section-space)}
.profile__top{display:grid;grid-template-columns:1fr 1fr;gap:36px;margin-top:53px;padding-bottom:64px;border-bottom:1px solid var(--line)}
.profile__top>div:last-child{padding-left:36px}
.profile__meta{color:#687483;font:13px/1 SpreadGrotesk,Arial,sans-serif;letter-spacing:.085em}
.profile__meta span{margin-left:34px;font-family:SpreadSans,sans-serif;letter-spacing:.03em}
.profile__philosophy{margin-top:29px;color:var(--blue);font:400 35px/1.55 SpreadSerif,serif;letter-spacing:.014em}
.profile__meaning{margin-top:29px;font:400 30px/1.63 SpreadSerif,serif;letter-spacing:.013em}
.identity{padding-top:31px}
.identity>h3{color:var(--blue);font:400 27px/1.5 SpreadSerif,serif;letter-spacing:.018em}
.identity__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:52px;margin-top:35px;padding-bottom:34px;border-bottom:1px solid var(--line)}
.identity__grid h4{color:var(--blue);font:48px/1 SpreadGrotesk,Arial,sans-serif;letter-spacing:-.015em}
.identity__grid p{margin-top:27px;font-size:17px;line-height:1.82}
.identity__reveal{position:relative;margin-top:60px;padding-top:34px;color:var(--blue);font-size:18px;letter-spacing:.014em;white-space:nowrap}
.identity__reveal::before{content:"";position:absolute;left:0;top:0;width:28px;height:2px;background:var(--blue)}
.profile-pattern{position:absolute;left:0;right:0;bottom:0;height:190px;background:#858b94;display:flex;align-items:center;justify-content:space-around;overflow:hidden}
.profile-pattern img{width:135px;height:135px;object-fit:contain}
.profile-pattern img:nth-child(odd){transform:translateY(20px)}

.message{height:1400px;background:#fff;position:relative;overflow:hidden}
.message__sun{position:absolute;z-index:0;left:calc(50% - 220px);top:70px;width:960px;height:960px;border-radius:50%;background:var(--red)}
.message__inner{position:relative;z-index:1;padding-top:var(--section-space)}
.message__lead-wrap{position:relative;margin-top:55px}
.message__lead{color:var(--ink);font:400 39px/1.58 SpreadSerif,serif;letter-spacing:.006em}
.message__lead--light{position:absolute;inset:0;color:#fff;clip-path:circle(480px at min(876px,calc(50vw + 236px)) 400px)}
.message__opening{margin-top:62px}
.message__body{width:430px;margin-top:56px}
.message__body p+p{margin-top:30px}
.message__closing{margin-top:45px;color:var(--blue);font:400 29px/1.5 SpreadSerif,serif;letter-spacing:.015em}
.message__signature{margin-top:31px;font-size:16px;letter-spacing:.02em}

.about{height:746px;background:var(--pale)}
.about__inner{display:grid;grid-template-columns:456px 1fr;height:100%;padding-top:var(--section-space)}
.about h2{margin-top:120px;color:var(--blue);font:400 48px/1 SpreadSerif,serif;letter-spacing:.025em}
.about dl{border-top:1px solid #aeb8c5;margin-top:64px}
.about dl>div{display:grid;grid-template-columns:210px 1fr;min-height:94px;padding:28px 0;border-bottom:1px solid #c9d0d8;align-items:baseline}
.about dl>div:nth-child(2){min-height:150px}
.about dt{color:#5f6a78;font-size:14px;line-height:1.78;letter-spacing:.05em}
.about dd{font-size:18px;line-height:1.78;letter-spacing:.02em}

.contact{min-height:1020px;background:#fff;padding:var(--section-space) 0 32px}
.contact__grid{display:grid;grid-template-columns:576px 576px;gap:80px;margin-top:78px}
.contact h2{color:var(--blue);font:400 43px/1.42 SpreadSerif,serif;letter-spacing:.018em}
.contact__copy{margin-top:70px;font-size:17px;line-height:1.9}
.contact__copy p+p{margin-top:34px}
.contact-form{display:flex;flex-direction:column}
.contact-form__trap{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.contact-form label{color:#5f6a78;font-size:13px;letter-spacing:.04em}
.contact-form label+label{margin-top:20px}
.contact-form input,.contact-form textarea{display:block;width:100%;margin-top:13px;border:0;border-radius:0;background:var(--pale);color:var(--ink);padding:14px 16px;outline:1px solid transparent;transition:outline-color .2s}
.contact-form input{height:56px}
.contact-form textarea{height:144px;resize:vertical}
.contact-form input:focus,.contact-form textarea:focus{outline-color:var(--blue)}
.contact-form__privacy{margin-top:28px;color:#5f6a78;font-size:12px;line-height:1.8;letter-spacing:.01em}
.contact-form button{align-self:flex-end;display:flex;justify-content:space-between;align-items:center;width:220px;height:58px;margin-top:28px;padding:0 22px 0 76px;border:0;background:var(--blue);color:#fff;font-size:15px;letter-spacing:.08em;cursor:pointer}
.contact-form button:hover,.contact-form button:focus-visible{background:#10265c}
.contact-form button:disabled{cursor:wait;opacity:.62}
.contact-form__status{margin-top:0;color:#9b2334;font-size:13px;text-align:right}
.contact-form__status:not(:empty){margin-top:10px}
.contact-form__status.is-success{color:var(--blue)}

.back-to-top{position:fixed;right:28px;bottom:24px;z-index:40;display:flex;width:54px;height:72px;flex-direction:column;align-items:center;justify-content:center;gap:9px;color:var(--blue);background:rgba(255,255,255,.9);font:12px/1 SpreadGrotesk,Arial,sans-serif;letter-spacing:.12em;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(8px);transition:opacity .24s ease,transform .24s ease,visibility .24s ease}
.back-to-top::before{content:"";position:absolute;left:0;top:0;width:1px;height:100%;background:currentColor}
.back-to-top.is-visible{opacity:1;visibility:visible;pointer-events:auto;transform:none}
.back-to-top__arrow{position:relative;width:13px;height:19px}
.back-to-top__arrow::before{content:"";position:absolute;left:6px;top:1px;width:1px;height:18px;background:currentColor}
.back-to-top__arrow::after{content:"";position:absolute;left:3px;top:2px;width:7px;height:7px;border-top:1px solid currentColor;border-left:1px solid currentColor;transform:rotate(45deg)}
.back-to-top:hover{background:#fff}
.back-to-top:focus-visible{outline:2px solid var(--blue);outline-offset:3px}

.reveal{opacity:1;transform:none}

@media (max-width:1120px){
  .service-item h3{font-size:21px}
  .service-item__catch{font-size:23px}
}

@media (max-width:1100px){
  :root{--side:48px}
  .site-header__brand{width:220px;height:74px}
  .global-nav{gap:20px;font-size:13px}
  .hero__inner{grid-template-columns:1.1fr .9fr}
  .hero h1{font-size:43px}
  .hero__mark{width:360px;height:360px}
  .communication__body{left:54%;width:44%}
  .definition-diagram{right:0}
  .definition-diagram__flow{grid-template-columns:34% 12% 42%;margin-left:7%}
  .service__head{grid-template-columns:53% 47%}
  .service__head>img{width:100%;transform:none}
  .service__heading h2{font-size:50px}
  .service__heading h2 em{font-size:65px;margin-left:42px}
  .identity__grid h4{font-size:40px}
  .identity__reveal{font-size:15px}
  .contact__grid{grid-template-columns:1fr 1fr;gap:48px}
}

@media (min-width:821px) and (max-width:1000px){
  .service{height:auto;padding-bottom:64px}
  .service>.page-frame{height:auto}
  .service-grid{display:block;height:auto;border-bottom:0}
  .service-item{padding:42px 0;border-bottom:1px solid #c6d0db}
  .service-item+.service-item{border-left:0;padding-left:0}
}

@media (max-width:820px){
  .page-frame{width:calc(100% - 48px)}
  .body-copy{font-size:16px;line-height:1.95}
  .section-label{font-size:13px;gap:12px}
  .section-label>span{width:22px}
  .mobile-only{display:block}
  .site-header{top:18px;left:20px;right:20px;width:auto;transform:none}
  .site-header__brand{width:155px;height:52px}
  .menu-button{display:flex;position:relative;z-index:2;width:44px;height:44px;padding:11px 8px;border:0;background:transparent;flex-direction:column;justify-content:space-between}
  .menu-button span:not(.sr-only){display:block;width:100%;height:1px;background:var(--blue);transition:transform .2s,opacity .2s}
  .menu-button[aria-expanded="true"] span:nth-child(1){transform:translateY(10px) rotate(45deg)}
  .menu-button[aria-expanded="true"] span:nth-child(2){opacity:0}
  .menu-button[aria-expanded="true"] span:nth-child(3){transform:translateY(-10px) rotate(-45deg)}
  .global-nav{position:fixed;z-index:1;inset:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:14px;padding-left:20vw;background:rgba(255,255,255,.98);font-size:20px;transform:translateX(100%);visibility:hidden;pointer-events:none;transition:transform .3s ease,visibility 0s linear .3s}
  .global-nav.is-open{transform:none;visibility:visible;pointer-events:auto;transition-delay:0s}
  body.menu-open{overflow:hidden}

  .hero{height:720px}
  .hero__inner{display:block;padding-top:180px}
  .hero h1{font-size:29px;line-height:1.85;white-space:normal}
  .hero__mark{width:270px;height:270px;margin:62px 0 0 auto}

  .introduction{height:auto;min-height:780px;padding:76px 0 88px}
  .introduction__inner{width:calc(100% - 48px);padding:0}
  .eyeline-heading{align-items:flex-start;gap:14px}
  .eyeline-heading>span{margin-top:17px}
  .eyeline-heading h2{font-size:26px;line-height:1.65}
  .introduction__body{margin:40px 0 0 36px;font-size:16px}
  .introduction__body br{display:none}
  .introduction__body p+p{margin-top:26px}
  .introduction__question{font-size:31px!important;padding:8px 0}

  .value-chapter__axis{display:none}
  .communication,.definition{height:auto;min-height:760px;padding-bottom:90px}
  .communication__plane{top:48px;width:82%;height:330px}
  .communication__inner{padding-top:78px}
  .value-title{font-size:58px;white-space:normal}
  .value-title small{font-size:34px;margin-bottom:12px}
  .communication .value-title{margin-top:78px}
  .communication__body{position:relative;left:auto;top:auto;width:auto;margin:134px 0 0 36px}
  .communication__body br,.definition__body br{display:none}
  .definition{padding-bottom:76px}
  .definition__plane{top:54px;width:82%;height:330px}
  .definition__inner{padding-top:78px}
  .definition__label{right:0;top:84px}
  .definition__title{right:0;top:175px}
  .definition__title small{margin-left:74px}
  .definition__body{position:relative;left:auto;top:auto;width:78%;padding-top:470px}
  .definition-diagram{position:relative;left:auto;right:auto;top:auto;height:auto;margin-top:76px}
  .definition-diagram h3{font-size:23px}
  .definition-diagram__steps{width:100%;grid-template-columns:repeat(4,1fr)}
  .definition-diagram__steps span{font-size:12px}
  .definition-diagram__steps span::after{left:50%;top:25px}
  .definition-diagram__flow{grid-template-columns:1fr;gap:0;margin:12px 0 0}
  .definition-diagram__flow strong,.definition-diagram__flow span{height:82px}
  .definition-diagram__flow strong{font-size:30px}
  .definition-diagram__flow i{width:1px;height:44px;justify-self:center}
  .definition-diagram__flow span{font-size:22px}

  .service{height:auto;padding:64px 0 76px}
  .service>.page-frame{padding-top:0}
  .service__head{height:auto;display:flex;flex-direction:column}
  .service__head>img{order:2;width:100%;height:auto;margin-top:22px}
  .service__heading{order:1;padding:0}
  .service__heading h2{margin-top:52px;font-size:42px}
  .service__heading h2 em{font-size:56px;margin-left:42px}
  .service-grid{display:block;height:auto;margin-top:18px;border-bottom:0}
  .service-item{padding:42px 0;border-bottom:1px solid #c6d0db}
  .service-item+.service-item{border-left:0;padding-left:0}
  .service-item h3{font-size:24px}
  .service-item__catch{font-size:26px}
  .service-item--creative ul{columns:2}

  .profile{height:auto;padding-top:66px}
  .profile>.page-frame{padding-top:0}
  .profile__top{grid-template-columns:1fr;gap:54px;margin-top:48px;padding-bottom:55px}
  .profile__top>div:last-child{padding-left:0}
  .profile__meta span{margin-left:18px}
  .profile__philosophy{font-size:31px}
  .profile__meaning{font-size:28px}
  .identity{padding-top:34px}
  .identity>h3{font-size:25px}
  .identity__grid{grid-template-columns:1fr;gap:38px;padding-bottom:38px}
  .identity__grid h4{font-size:44px}
  .identity__grid p{margin-top:16px}
  .identity__reveal{margin-top:42px;padding-bottom:54px;white-space:normal;font-size:16px;line-height:1.9}
  .profile-pattern{position:relative;height:126px;justify-content:flex-start;gap:34px;padding-left:24px}
  .profile-pattern img{width:92px;height:92px;flex:none}
  .profile-pattern img:nth-child(odd){transform:translateY(13px)}

  .message{height:auto;min-height:1320px;padding-bottom:72px}
  .message__sun{left:42%;top:135px;width:620px;height:620px}
  .message__inner{padding-top:70px}
  .message__lead-wrap{margin-top:50px}
  .message__lead{font-size:29px;line-height:1.7}
  .message__lead--light{display:block;clip-path:circle(310px at calc(42vw + 286px) 312px)}
  .message__opening{margin-top:64px;width:64%}
  .message__body{width:100%;margin-top:66px}
  .message__body p+p{margin-top:28px}
  .message__closing{font-size:25px;line-height:1.65;margin-top:44px}

  .about{height:auto;padding:68px 0 70px}
  .about__inner{display:block;padding-top:0}
  .about h2{margin-top:75px;font-size:42px}
  .about dl{margin-top:118px}
  .about dl>div{grid-template-columns:94px 1fr;min-height:0;padding:24px 0}
  .about dl>div:nth-child(2){min-height:0}
  .about dd{font-size:16px}

  .back-to-top{right:12px;bottom:16px;width:46px;height:62px}

  .contact{min-height:0;padding:68px 0 54px}
  .contact .page-frame{width:calc(100% - 40px)}
  .contact__grid{grid-template-columns:1fr;gap:66px;margin-top:60px}
  .contact h2{font-size:35px}
  .contact__copy{margin-top:52px;font-size:16px}
  .contact__copy br{display:none}
  .contact-form label+label{margin-top:18px}
  .contact-form button{width:100%;justify-content:center;gap:70px;padding:0 22px;margin-top:28px}
}

@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.global-nav{transition:none}}
