@charset "UTF-8";

#print.service .main {
  /* hidden だと main がスクロールコンテナになり、未表示の .js-fade-in（translateY 0.24rem）の分だけ
     縦にスクロールできてしまい、SPで最初のスワイプが main 側に取られて止まることがあった。clip はスクロールしない */
  overflow-x: clip;
  color: var(--color-primary);
}

#print.service .c-page-title {
  --page-title-heading-padding-inline: 0.37rem 0.4rem;
  --page-title-main-top: -0.03rem;
  --page-title-divider-margin-start: 0.3rem;
  --page-title-divider-margin-end: 0.39rem;
}

#print.service .hero {
  --subpage-hero-left-height: 3.68rem;
  --subpage-hero-notch-x: calc(var(--fluid-overhang) + 5.566rem); /* ページタイトル右端 + 0.44rem（下 0.44rem と揃える） */
  --subpage-hero-notch-y: 1.28rem;
  --subpage-hero-cut-x: 0.04rem;
  --subpage-hero-cut-y: 0.04rem;
  --subpage-hero-image-width: 100%; /* 1920px超でも画面いっぱいに（旧 13.6rem） */
}

#print.service .badge {
  --beveled-cut: 0.04rem;
  display: inline-flex;
  align-items: center;
  min-height: 0.84rem;
  padding: 0.16rem 0.42rem;
  background: var(--color-primary);
  color: var(--color-white);
  font-size: 0.32rem;
  line-height: 1.4;
  letter-spacing: 0.02em;
}

#print.service .badge > span {
  position: relative;
  top: 0.04em; /* 見出しの文字を少し下げて上下中央に（上下 padding は対称のまま。Gen Interface JP は字面が約1〜2px上寄り） */
}

#print.service .body-copy {
  font-size: 0.16rem;
  line-height: 1.875;
  letter-spacing: 0.02em;
}

#print.service .frame {
  height: 14.88rem;
  padding-top: 0.56rem;
  background: var(--color-primary);
}

#print.service .frame__inner {
  position: relative;
  left: 0.4rem;
  width: 11.8rem;
  height: 13.52rem;
  margin-inline: auto;
  isolation: isolate;
}

#print.service .frame__inner::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0.72rem;
  right: calc(100% + 0.3rem);
  z-index: -1;
  width: 99.99rem;
  background: var(--color-white);
  clip-path: polygon(0 0,
      calc(100% - 0.04rem) 0,
      100% 0.04rem,
      100% calc(100% - 0.04rem),
      calc(100% - 0.04rem) 100%,
      0 100%);
}

#print.service .overview {
  display: grid;
  grid-template-columns: 4.9rem 4.9rem;
  align-content: start;
  column-gap: 0.5rem;
  row-gap: 0.37rem;
  height: 13.52rem;
  padding: 0.8rem 0.7rem 0 0.8rem;
  background: var(--color-white);
  clip-path: polygon(0.04rem 0,
      calc(100% - 0.04rem) 0,
      100% 0.04rem,
      100% calc(100% - 0.04rem),
      calc(100% - 0.04rem) 100%,
      calc(5.85rem + 0.04rem) 100%,
      5.85rem calc(100% - 0.04rem),
      5.85rem calc(100% - 0.72rem + 0.04rem),
      calc(5.85rem - 0.04rem) calc(100% - 0.72rem),
      0.04rem calc(100% - 0.72rem),
      0 calc(100% - 0.72rem - 0.04rem),
      0 0.04rem);
}

#print.service .overview__text {
  min-width: 0;
}

#print.service .overview__text--first {
  grid-column: 1;
  grid-row: 1;
}

#print.service .overview__text--first .badge {
  margin-top: 0.15rem;
}

#print.service .overview__text--first .body-copy {
  margin-top: 0.36rem;
  font-size: 0.18rem;
  line-height: 2;
}

#print.service .overview__photo {
  display: block;
  min-width: 0;
}

#print.service .overview__photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

#print.service .overview__photo--swatch {
  grid-column: 2;
  grid-row: 1;
  justify-self: end; /* テキスト 4.9rem・写真 4.7rem をコンテンツ幅の両端に寄せる（grid は2段目と共有のため列幅は変えない） */
  width: 4.7rem;
  height: 4.14rem;
}

#print.service .overview__photo--swatch img {
  clip-path: polygon(0.03rem 0,
      calc(100% - 0.03rem) 0,
      100% 0.03rem,
      100% calc(100% - 0.03rem),
      calc(100% - 0.03rem) 100%,
      0.03rem 100%,
      0 calc(100% - 0.03rem),
      0 0.03rem);
}

#print.service .overview__photo--factory {
  grid-column: 1;
  grid-row: 2;
  width: 5.8rem;
  height: 6.35rem;
  margin-left: -0.8rem;
}

#print.service .overview__photo--factory img {
  clip-path: polygon(0 0,
      calc(3.22rem - 0.04rem) 0,
      3.22rem 0.04rem,
      3.22rem calc(0.95rem - 0.04rem),
      calc(3.22rem + 0.04rem) 0.95rem,
      calc(100% - 0.04rem) 0.95rem,
      100% calc(0.95rem + 0.04rem),
      100% calc(100% - 0.04rem),
      calc(100% - 0.04rem) 100%,
      0 100%);
}

#print.service .overview__text--second {
  grid-column: 2;
  grid-row: 2;
  width: 3.9rem;
  margin: 0.43rem 0 0 0.5rem;
}

#print.service .badge--second {
  min-height: 0.8rem;
  padding-inline: 0.29rem;
  font-size: 0.25rem;
  white-space: nowrap;
}

#print.service .overview__text--second .body-copy {
  margin-top: 0.27rem;
}

#print.service .specs {
  margin-top: 0.3rem;
  padding: 0.25rem 0;
  border-block: 0.01rem solid var(--color-border-cool-strong);
}

#print.service .specs__title {
  margin-bottom: 0.09rem;
  font-size: 0.17rem;
  font-weight: 600;
  letter-spacing: 0.03em;
}

#print.service .specs__text {
  font-size: 0.14rem;
  line-height: calc(24 / 14);
  letter-spacing: 0.03em;
}

#print.service .equipment-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 0.44rem;
  padding-bottom: 0.26rem;
  border-bottom: 0.03rem solid var(--color-primary);
  font-size: 0.19rem;
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0.01em;
}

#print.service .equipment-link__arrow {
  display: block;
  flex: 0 0 0.2rem;
  width: 0.2rem;
  height: 0.2rem;
}

#print.service .quality {
  position: relative;
  padding-top: 0.8rem;
  background: #cddae9; /* 下の CTA の写真の「見えている上端」の色（L116）。
    PCの写真はセクションより背が高く上が切れるので、境界に出るのは単色部分ではなく
    画像 77 行目付近（空のグラデーションの途中）。その行の中央値を実測した値。SPは単色部分が見えるので #cedbeb のまま */
  isolation: isolate;
}

#print.service .quality__visual {
  position: absolute;
  /* 正方形に切り抜かれた人物写真。パネル右上のノッチに収め、
     下端はノッチの底（3.84rem）でパネルの白に隠れる。
     新写真は全身寄りで余白が多いため、デザインの頭の位置・紙の大きさに合わせて拡大し上へ寄せる。 */
  top: -0.28rem;
  left: calc(50% + 0.22rem);
  z-index: -1;
  width: 5.5rem;
}

#print.service .quality__visual-image {
  display: block;
  width: 100%;
  height: auto;
}

#print.service .quality__panel {
  position: relative;
  left: -0.4rem;
  width: 11.8rem;
  margin-inline: auto;
  padding: 0.72rem 0.8rem 0.8rem;
  isolation: isolate;
}

#print.service .quality__panel::after {
  --beveled-cut: 0.05rem;
  content: "";
  position: absolute;
  top: 3.84rem;
  left: calc(100% + 0.3rem);
  bottom: 0;
  z-index: -1;
  width: 99.99rem;
  background: var(--color-white);
  clip-path: polygon(
    var(--beveled-cut) 0,
    100% 0,
    100% 100%,
    var(--beveled-cut) 100%,
    0 calc(100% - var(--beveled-cut)),
    0 var(--beveled-cut)
  );
}

#print.service .quality__panel::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--color-white);
  clip-path: polygon(0.05rem 0,
      calc(6.2223rem - 0.05rem) 0,
      6.2223rem 0.05rem,
      6.2223rem calc(3.84rem - 0.05rem),
      calc(6.2223rem + 0.05rem) 3.84rem,
      calc(100% - 0.05rem) 3.84rem,
      100% calc(3.84rem + 0.05rem),
      100% calc(100% - 0.05rem),
      calc(100% - 0.05rem) 100%,
      0.05rem 100%,
      0 calc(100% - 0.05rem),
      0 0.05rem);
}

#print.service .quality__intro {
  height: 3.12rem;
  margin-left: 0.1rem;
}

#print.service .quality__intro-text {
  width: 4.5rem;
}

#print.service .quality__intro .badge {
  min-height: 0.8rem;
  padding-inline: 0.32rem;
  font-size: 0.29rem;
}

#print.service .quality__intro .body-copy {
  margin-top: 0.33rem;
}

#print.service .features {
  display: grid;
  grid-template-columns: 0.75rem repeat(3, 3.38rem) 0.75rem;
  gap: 0.04rem;
  width: 11.8rem;
  height: 7.04rem;
  margin: 0.4rem 0 0 -0.8rem;
}

#print.service .features::before,
#print.service .features::after {
  content: "";
  background: var(--color-primary);
}

#print.service .features::before {
  height: 4.56rem;
  margin-top: 1.2rem;
  clip-path: polygon(0 0,
      calc(100% - 0.03rem) 0,
      100% 0.03rem,
      100% calc(100% - 0.03rem),
      calc(100% - 0.03rem) 100%,
      0 100%);
}

#print.service .features::after {
  height: 4.4rem;
  margin-top: 1rem;
  clip-path: polygon(0.03rem 0,
      100% 0,
      100% 100%,
      0.03rem 100%,
      0 calc(100% - 0.03rem),
      0 0.03rem);
}

#print.service .feature {
  position: relative;
  height: 4.8rem;
  padding: 0.52rem 0.53rem 0.7rem;
  overflow: hidden;
  background: var(--color-primary);
  color: var(--color-white);
}

#print.service .feature--01 {
  clip-path: polygon(0.03rem 0,
      calc(100% - 0.03rem) 0,
      100% 0.03rem,
      100% calc(100% - 0.03rem),
      calc(100% - 0.03rem) 100%,
      calc(0.71rem + 0.03rem) 100%,
      0.71rem calc(100% - 0.03rem),
      0.71rem calc(100% - 0.35rem + 0.03rem),
      calc(0.71rem - 0.03rem) calc(100% - 0.35rem),
      0.03rem calc(100% - 0.35rem),
      0 calc(100% - 0.35rem - 0.03rem),
      0 0.03rem);
}

#print.service .feature--02 {
  margin-top: 0.75rem;
  clip-path: polygon(0.03rem 0,
      calc(100% - 0.49rem - 0.03rem) 0,
      calc(100% - 0.49rem) 0.03rem,
      calc(100% - 0.49rem) calc(0.4443rem - 0.03rem),
      calc(100% - 0.49rem + 0.03rem) 0.4443rem,
      calc(100% - 0.03rem) 0.4443rem,
      100% calc(0.4443rem + 0.03rem),
      100% calc(100% - 0.03rem),
      calc(100% - 0.03rem) 100%,
      0.03rem 100%,
      0 calc(100% - 0.03rem),
      0 0.03rem);
}

#print.service .feature--03 {
  margin-top: 2.24rem;
  clip-path: polygon(0.03rem 0,
      calc(100% - 0.03rem) 0,
      100% 0.03rem,
      100% calc(100% - 0.03rem),
      calc(100% - 0.03rem) 100%,
      calc(1.27rem + 0.03rem) 100%,
      1.27rem calc(100% - 0.03rem),
      1.27rem calc(100% - 0.31rem + 0.03rem),
      calc(1.27rem - 0.03rem) calc(100% - 0.31rem),
      0.03rem calc(100% - 0.31rem),
      0 calc(100% - 0.31rem - 0.03rem),
      0 0.03rem);
}

#print.service .feature__title {
  font-size: 0.21rem;
  line-height: calc(30 / 21);
  letter-spacing: 0.02em;
}

#print.service .feature__text {
  margin-top: 0.13rem;
  font-size: 0.13rem;
  font-weight: 400; /* 1つ落とす（滲み対策） */
  line-height: calc(22.55 / 13);
  letter-spacing: 0.03em;
}

#print.service .feature__number {
  position: absolute;
  right: 0.13rem;
  bottom: 0.06rem;
  font-family: var(--font-family-brand);
  color: var(--color-primary-soft); /* 01〜03 の色 #6b85c2 */
  font-size: 1.0165rem;
  line-height: 1;
  letter-spacing: 0; /* SPIKVANSTAR（TEST_V13）は字間がフォントに含まれるため 0 */
}

#print.service .process {
  margin-top: 0.08rem;
}

#print.service .process__heading {
  min-height: 0.8rem;
  padding-inline: 0.37rem;
  font-size: 0.29rem;
}

#print.service .process__content {
  display: grid;
  grid-template-columns: 5.4rem 3.9rem;
  column-gap: 0.8rem;
  margin-top: 0.4rem;
}

#print.service .process__steps {
  position: relative;
  height: 4.1513rem;
  background: url("../../images/print/bg-step.svg") no-repeat center / 100% 100%;
}

#print.service .process__step {
  position: absolute;
  left: 0.4rem;
  display: flex;
  align-items: center;
  gap: 0.28rem;
  font-size: 0.17rem;
  font-weight: 600;
  line-height: 1.45;
  letter-spacing: 0.03em;
}

#print.service .process__step:nth-child(1) {
  top: 0.3rem;
}

#print.service .process__step:nth-child(2) {
  top: 1.26rem;
}

#print.service .process__step:nth-child(3) {
  top: 2.32rem;
}

#print.service .process__step:nth-child(4) {
  top: 3.4rem;
}

#print.service .process__step-badge {
  display: flex;
  flex: 0 0 0.48rem;
  height: 0.46rem;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: var(--color-primary);
  color: var(--color-white);
  line-height: 1;
}

#print.service .process__step-badge span {
  font-size: 0.1rem;
  font-weight: 500;
  letter-spacing: 0.03em;
}

#print.service .process__step-badge strong {
  margin-top: 0.02rem;
  font-size: 0.21rem;
  font-weight: 600;
}

#print.service .process__description .body-copy {
  margin-top: -0.03rem;
}

#print.service .achievements {
  width: 10.3rem;
  margin-top: 0.7rem;
}

#print.service .achievements__heading {
  --beveled-cut: 0.02rem;
  display: flex;
  align-items: center;
  width: 100%;
  height: 0.48rem;
  padding-inline: 0.22rem;
  background: var(--color-primary);
  color: var(--color-white);
  font-size: 0.21rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

#print.service .achievements__heading > span {
  position: relative;
  top: 0.04em; /* 見出しの文字を少し下げて上下中央に（他の青ベタ見出しと同じ方式） */
}

#print.service .achievements__description {
  margin-top: 0.25rem;
  font-size: 0.16rem;
  font-weight: 500;
  line-height: 1.875;
  letter-spacing: 0.02em;
}

#print.service .achievements__grid {
  display: grid;
  grid-template-columns: repeat(4, 2.28rem);
  justify-content: space-between;
  margin-top: 0.35rem;
}

#print.service .achievements__item {
  --beveled-cut: 0.03rem;
  aspect-ratio: 228 / 240;
  background: var(--color-surface-placeholder);
}

/* 写真はセクション全幅の背景として敷く（L116）。支給画像の上端は単色 #cedbeb なので、
   背景色を同じにしておけば写真との継ぎ目が出ない。高さはデザインの実測値。 */
#print.service .cta {
  position: relative;
  height: 8.3rem;
  padding-top: 1.17rem;
  overflow: hidden;
  /* 1920px超で写真の左右に出る余り用。写真の左右端の色（見えている範囲を上から 0/20/…/100% で実測、左右の平均）に
     合わせた縦グラデーションで、写真との縦の境目を目立たなくする。1920px以下は写真で全面が隠れるので見えない。 */
  background: #cedbeb linear-gradient(to bottom, #cddbea 0%, #d1dde9 20%, #d7e1ec 40%, #cfd9e6 60%, #d6e0ea 80%, #d6e0ea 100%);
}

/* テキスト列の左端はデザインどおり l-outer の左端から 6.7rem（チェックリストが x=700px） */
#print.service .cta__grid {
  padding-left: 6.7rem;
}

/* 写真は画面幅いっぱい・縦横比固定で、セクションの下端に吸着させる（L116）。
   画像はセクションより背が高く、はみ出す上側は単色なので切れてよい。
   1920px超はセクションの高さが頭打ち（--rem-size の上限）になるのに写真だけ伸びて人物の頭が切れるため、
   幅を 13.6rem（＝1920px）で止めて中央に置く。左右の余りはセクションの背景色。 */
#print.service .cta__photo {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  max-width: 13.6rem;
  margin-inline: auto;
}

#print.service .cta__photo img {
  display: block;
  width: 100%;
  max-width: none;
  height: auto;
}

/* 絶対配置の写真より手前に出す。写真の基準はセクション（.cta）なので、ここに position を付けても
   cta__grid には付けない。 */
#print.service .cta__text {
  position: relative;
  z-index: 1;
  width: 5.3rem;
}

#print.service .cta__title {
  font-size: 0.43rem;
  font-weight: 600;
  line-height: 1.49;
  letter-spacing: 0.02em;
}

#print.service .cta__description {
  margin-top: 0.19rem;
  font-size: 0.16rem;
  line-height: 1.875;
  letter-spacing: 0.02em;
}

#print.service .cta__checklist {
  margin-top: 0.39rem;
}

#print.service .cta__checklist-item {
  --beveled-cut: 0.02rem;
  display: flex;
  align-items: center;
  gap: 0.08rem;
  height: 0.48rem;
  padding-inline: 0.16rem;
  background: var(--color-white);
  font-size: 0.15rem;
  font-weight: 600;
  letter-spacing: 0.02em;
}

#print.service .cta__checklist-item+.cta__checklist-item {
  margin-top: 0.04rem;
}

#print.service .cta__check {
  display: block;
  width: 0.16rem;
  height: 0.16rem;
  flex-shrink: 0;
}

#print.service .equipment-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 1000;
}

#print.service .equipment-modal:target {
  display: block;
}

#print.service .equipment-modal__overlay {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.25);
}

#print.service .equipment-modal__inner {
  position: relative;
  z-index: 1;
  pointer-events: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  padding: 0.4rem;
}

#print.service .equipment-modal__dialog {
  position: relative;
  pointer-events: auto;
  width: 10.9rem;
  max-width: 100%;
  max-height: 100%;
  display: flex;
  flex-direction: column;
  outline: none;
  padding: 0.51rem 1.25rem 0.69rem 0.55rem;
}

#print.service .equipment-modal__bg {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  background: var(--color-white);
  clip-path: polygon(0 0.04rem,
      0.04rem 0,
      calc(100% - 0.04rem) 0,
      100% 0.04rem,
      100% 0.72rem,
      calc(100% - 0.04rem) 0.76rem,
      10.24rem 0.76rem,
      10.2rem 0.8rem,
      10.2rem calc(100% - 0.04rem),
      10.16rem 100%,
      0.04rem 100%,
      0 calc(100% - 0.04rem));
}

#print.service .equipment-modal__close {
  position: absolute;
  z-index: 2;
  top: 0.25rem;
  right: 0.19rem;
  width: 0.32rem;
  height: 0.32rem;
}

#print.service .equipment-modal__close::before,
#print.service .equipment-modal__close::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0.34rem;
  height: 0.04rem;
  background: var(--color-primary);
}

#print.service .equipment-modal__close::before {
  transform: translate(-50%, -50%) rotate(45deg);
}

#print.service .equipment-modal__close::after {
  transform: translate(-50%, -50%) rotate(-45deg);
}

#print.service .equipment-modal__body {
  position: relative;
  z-index: 1;
  min-height: 0;
  overflow-y: auto;
  display: grid;
  grid-template-columns: minmax(0, 3.35fr) minmax(0, 2.81fr) minmax(0, 2.94fr);
  row-gap: 0.26rem;
}

#print.service .equipment-modal__bar {
  --beveled-cut: 0.02rem;
  display: flex;
  align-items: center;
  grid-row: 1;
  height: 0.36rem;
  padding-left: 0.14rem;
  background: var(--color-primary);
  color: var(--color-white);
  font-size: 0.18rem;
  font-weight: 600;
  letter-spacing: 0.03em;
}

#print.service .equipment-modal__bar--print {
  grid-column: 1;
  width: 2.95rem;
  max-width: 100%;
}

#print.service .equipment-modal__bar--paper {
  grid-column: 2 / -1;
}

#print.service .equipment-modal__column {
  grid-row: 2;
  padding-left: 0.14rem;
}

#print.service .equipment-modal__column--print {
  grid-column: 1;
}

#print.service .equipment-modal__column--paper {
  grid-column: 2;
}

#print.service .equipment-modal__column--system {
  grid-column: 3;
}

#print.service .equipment-group+.equipment-group {
  margin-top: 0.2rem;
}

#print.service .equipment-group__title {
  font-size: 0.18rem;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: 0.02em;
}

#print.service .equipment-group__list {
  margin-top: 0.04rem;
  font-size: 0.15rem;
  line-height: calc(28 / 15);
  letter-spacing: 0.02em;
}
