.subpage {
  --pg-bg: #ffffff;
  --pg-fg: #222f30;
  --pg-muted: #505e5b;
  --pg-accent: #222f30;
  --pg-accent-fg: #ffffff;
  --pg-line: #b5bfc0;
  --pg-card-bg: #ffffff;
  --pg-radius: 0;
  --pg-max: 1152px;
  --pg-font-head: "Noto Sans JP", sans-serif;
  --pg-font-body: "Noto Sans JP", sans-serif;
}
.subpage .site-header nav a[aria-current="page"]::after { transform: scaleX(1); background: #cef79e; }
.subpage .site-footer nav a[aria-current="page"] { text-decoration: underline; text-underline-offset: 6px; }
.page { padding-top: 0; line-height: 2; }
.page h1, .page h2, .page h3 { letter-spacing: -.035em; }
.page .page-head { position: relative; display: grid; grid-template-columns: 1.1fr 1fr; align-items: end; gap: 32px; max-width: none; margin-inline: calc(-1 * max(5vw, 20px)); padding: 52px max(5vw, 20px) 55px; border-bottom: 1px solid #536463; background: #222f30; color: #fff; }
.page .page-head::after { content: ""; position: absolute; bottom: -1px; left: max(5vw, 20px); width: 96px; height: 3px; background: #cef79e; transform-origin: left; }
.page .page-title { font-size: clamp(40px, 5.8vw, 76px); line-height: 1.45; }
.page .page-lead { max-width: 38em; margin: 0; font-size: 14px; line-height: 2; color: #d3dfd9; }
.page .section-title { font-size: clamp(28px, 3.5vw, 43px); line-height: 1.5; }
.page .prose { max-width: 48em; }
.page .prose li + li { margin-top: .65em; }
.page .prose a, .page .faq__answer a { text-decoration-thickness: 1px; text-underline-offset: 5px; }
.page .prose a:hover, .page .faq__answer a:hover { background: #cef79e; }
.page .notice { max-width: none; padding: 22px 26px; border: 1px solid #b5bfc0; border-left: 4px solid #222f30; background: #f3f5ef; color: #222f30; font-size: 14px; }
.page .notice--privacy { border-left-color: #222f30; background: #eaf5dd; }
.page figure.media { width: 100%; }
.page figure.media img { max-height: 440px; object-fit: cover; object-position: center 55%; border-radius: 0; filter: saturate(.55); }
.page figure.media figcaption { margin-top: 10px; font: 12px/1.8 "IBM Plex Mono", "Noto Sans JP", monospace; color: #505e5b; }
.page .button { min-height: 54px; font-size: 14px; border-radius: 0; cursor: pointer; }
.page a.button::after { content: ""; width: 22px; height: 12px; flex: 0 0 22px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 14'%3E%3Cpath d='M1 7h21m-6-6 6 6-6 6' fill='none' stroke='%23222f30' stroke-width='1.4'/%3E%3C/svg%3E") center / contain no-repeat; transition: transform .2s; }
.page a.button:hover::after { transform: translateX(3px); }
.page .price-cards { display: grid; grid-template-columns: 1fr; gap: 0; border-bottom: 1px solid #222f30; }
.page .price-card { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.2fr) minmax(0, 1.4fr); gap: 26px 34px; padding: 34px 0; background: #fff; border: 0; border-top: 1px solid #222f30; border-radius: 0; }
.page .price-card__intro, .page .price-card__detail { display: contents; }
.page .price-card__heading { grid-column: 1; grid-row: 1; }
.page .price-card__name { font-size: clamp(22px, 2.2vw, 28px); line-height: 1.6; }
.page .price-card__badge { display: inline-block; margin: 14px 0 0; padding: 3px 9px; font: 12px/1.8 "IBM Plex Mono", "Noto Sans JP", monospace; color: #222f30; background: #cef79e; }
.page .price-card__price { grid-column: 2; grid-row: 1; display: block; align-self: start; padding: 0 0 0 26px; border-left: 1px solid #b5bfc0; line-height: 1.8; }
.page .price-card__ex { display: block; font-size: 13px; }
.page .price-card__value { font-family: "IBM Plex Mono", monospace; font-size: clamp(33px, 3.45vw, 44px); letter-spacing: -.075em; line-height: 1.4; font-variant-numeric: tabular-nums; }
.page .price-card__tax { display: inline-block; font-size: 12px; white-space: nowrap; }
.page .price-card__in { display: block; margin-top: 7px; font-size: 12px; color: #505e5b; }
.page .price-card__summary { grid-column: 3; grid-row: 1; align-self: start; font-size: 14px; }
.page .price-card__for { grid-column: 1; grid-row: 2; font-size: 13px; }
.page .price-card__for strong { display: block; margin-bottom: 10px; font: 12px/1.8 "IBM Plex Mono", "Noto Sans JP", monospace; color: #505e5b; }
.page .price-card__includes { grid-column: 2; grid-row: 2; display: grid; align-content: start; gap: 6px; margin: 0; padding: 0 0 0 26px; border-left: 1px solid #b5bfc0; list-style: none; font-size: 13px; }
.page .price-card__includes li { position: relative; padding-left: 15px; }
.page .price-card__includes li::before { content: ""; position: absolute; left: 0; top: .8em; width: 5px; height: 5px; background: currentColor; }
.page .price-card__terms { grid-column: 3; grid-row: 2; align-content: start; gap: 12px; font-size: 13px; }
.page .price-card__terms > div { grid-template-columns: minmax(0, 1fr); gap: 2px; }
.page .price-card__terms dt { font: 12px/1.8 "IBM Plex Mono", "Noto Sans JP", monospace; color: #505e5b; }
.page .price-card__cta { grid-column: 3; grid-row: 3; justify-self: start; align-self: end; margin-top: 0; }
.page .price-card.is-featured { margin: 0; padding: 34px; color: #fff; background: #222f30; border: 0; border-top: 1px solid #222f30; box-shadow: inset 4px 0 #cef79e; }
.page .price-card.is-featured .price-card__name { color: #cef79e; }
.page .price-card.is-featured .price-card__in, .page .price-card.is-featured .price-card__for strong, .page .price-card.is-featured .price-card__terms dt { color: #d3dfd9; }
.page .price-card.is-featured .price-card__price, .page .price-card.is-featured .price-card__includes { border-color: #65776e; }
.page #plan-series .price-card__value { font-size: clamp(30px, 3vw, 39px); }
.page #plan-care { background: #f3f5ef; padding-left: 26px; padding-right: 26px; }
.page #plans > .notice { margin-top: 26px; }
.page dl.terms-list { max-width: none; }
.page dl.terms-list > div { grid-template-columns: minmax(9em, 15em) minmax(0, 1fr); gap: 12px 38px; padding: 23px 0; border-color: #b5bfc0; }
.page dl.terms-list dt { font: 14px/2 "IBM Plex Mono", "Noto Sans JP", monospace; }
.page dl.terms-list dd { max-width: 48em; font-size: 14px; }
.page #approach { padding: 36px; border: 1px solid #b5bfc0; background: #f3f5ef; }
.page #approach dl.terms-list > div { grid-template-columns: minmax(10em, 13em) minmax(0, 1fr); }
.page .checks { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; border-top: 1px solid #222f30; border-bottom: 1px solid #222f30; }
.page .checks > .check { gap: 12px; padding: 28px; border: 0; border-right: 1px solid #b5bfc0; background: #fff; color: #222f30; }
.page .checks > .check:first-child { padding-left: 0; }
.page .checks > .check:last-child { padding-right: 0; border-right: 0; }
.page .checks > .check .check__role { display: flex; align-items: center; gap: 12px; min-height: 0; margin: 0; font-size: 27px; font-family: "Noto Sans JP", sans-serif; }
.page .checks > .check .check__role::before { content: ""; width: 8px; height: 8px; flex: 0 0 8px; margin: 0; background: #222f30; border-radius: 50%; transition: background .4s, box-shadow .4s; }
.page .checks > .check.is-lit .check__role::before { background: #cef79e; box-shadow: 0 0 0 4px #222f30; }
.page .checks > .check .check__who { min-height: 4em; margin: 0; font: 12px/1.9 "IBM Plex Mono", "Noto Sans JP", monospace; color: #505e5b; }
.page .checks > .check .check__looks { margin: 0; font-size: 14px; line-height: 2; color: #222f30; }
.page .steps { border-bottom: 1px solid #222f30; }
.page .steps > .step, .page .steps > .step:first-child, .page .steps > .step:nth-child(3), .page .steps > .step:last-child { grid-template-columns: 62px minmax(0, 1.1fr) minmax(0, 1fr); gap: 10px 32px; padding: 30px 0; border-top: 1px solid #222f30; border-right: 0; }
.page .steps > .step:last-child { border-bottom: 0; }
.page .steps > .step::before, .page .steps > .step:first-child::before, .page .steps > .step:nth-child(3)::before { display: block; position: static; grid-row: 1 / span 3; font: 38px/1.4 "IBM Plex Mono", monospace; color: #222f30; }
.page .steps > .step > .step__title { grid-column: 2; grid-row: 1; font-size: 23px; margin: 0; }
.page .steps > .step > .step__weeks { grid-column: 2; grid-row: 2; color: #505e5b; font: 12px/2 "IBM Plex Mono", "Noto Sans JP", monospace; }
.page .steps > .step > .step__body { grid-column: 2; grid-row: 3; font-size: 14px; color: #222f30; }
.page .steps > .step > .step__ask { grid-column: 3; grid-row: 1 / span 3; align-self: start; padding: 20px 24px; background: #f3f5ef; border-left: 2px solid #222f30; font-size: 14px; color: #222f30; }
.page .step__ask strong { display: block; margin-bottom: 8px; font: 12px/2 "IBM Plex Mono", "Noto Sans JP", monospace; color: #505e5b; }
.page .steps .step li { counter-increment: none; }
.page .steps .step li::before { content: none; }
.page ul.deliverables { max-width: none; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 40px; }
.page ul.deliverables > li { position: relative; padding: 20px 0 20px 20px; border-color: #b5bfc0; font-size: 14px; }
.page ul.deliverables > li::before { content: ""; position: absolute; left: 0; top: 31px; width: 6px; height: 6px; background: #222f30; }
.page .faq { max-width: none; border-bottom: 1px solid #222f30; }
.page details.faq__item, .page details.faq__item:last-child { border-top: 1px solid #222f30; border-bottom: 0; }
.page .faq__item > summary { min-height: 72px; padding: 22px 60px 22px 0; font-size: 18px; line-height: 1.8; }
.page .faq__item > summary::after { display: grid; place-content: center; top: 23px; right: 0; width: 28px; height: 28px; background: #cef79e; color: #222f30; font: 22px/1 "IBM Plex Mono", monospace; }
.page .faq__item > summary:hover { background: #f3f5ef; }
.page .faq__item > summary:focus-visible { outline: 2px solid #222f30; outline-offset: 4px; }
.page .faq__answer { max-width: 57em; padding: 0 60px 25px 0; font-size: 14px; line-height: 2; }
.page form.contact-form { max-width: none; padding: 34px; border: 1px solid #b5bfc0; background: #f3f5ef; }
.page .contact-form fieldset { gap: 27px 30px; }
.page .contact-form .field { gap: 10px; }
.page .contact-form label { font: 13px/1.9 "IBM Plex Mono", "Noto Sans JP", monospace; }
.page .contact-form input, .page .contact-form select, .page .contact-form textarea { min-height: 54px; padding: 12px 15px; border: 1px solid #95a39c; border-radius: 0; background: #fff; color: #222f30; font-size: 15px; opacity: 1; -webkit-text-fill-color: #222f30; }
.page .contact-form input::placeholder, .page .contact-form textarea::placeholder { color: #505e5b; opacity: 1; }
.page .contact-form :disabled { cursor: not-allowed; }
.page .contact-form button:disabled { margin-top: 6px; background: #e1e8dc; border-color: #95a39c; color: #222f30; opacity: 1; }
.page .contact-form input:focus-visible, .page .contact-form select:focus-visible, .page .contact-form textarea:focus-visible { outline: 2px solid #222f30; outline-offset: 3px; }
.page .cta-band { grid-template-columns: minmax(0, 1fr) auto; gap: 20px 45px; padding: 46px; border: 0; border-top: 4px solid #cef79e; background: #222f30; color: #fff; border-radius: 0; }
.page .cta-band h2 { grid-column: 1; max-width: 22em; font-size: clamp(27px, 3.2vw, 42px); line-height: 1.6; }
.page .cta-band p { grid-column: 1; max-width: 40em; font-size: 14px; color: #d3dfd9; }
.page .cta-band .button { grid-column: 2; grid-row: 1 / span 2; align-self: end; }
.page .price-card.is-featured .button:focus-visible, .page .cta-band .button:focus-visible { outline-color: #cef79e; }
.page.page--privacy .prose { max-width: none; }
.page.page--privacy .prose ol { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 42px; padding-left: 25px; }
.page.page--privacy .prose li { padding: 16px 0 16px 8px; border-bottom: 1px solid #b5bfc0; }
.page.page--privacy .prose li + li { margin: 0; }
.page.page--privacy .prose li::marker { font-family: "IBM Plex Mono", monospace; }
@media (max-width: 900px) {
  .page .page-head { grid-template-columns: 1fr; gap: 24px; padding-top: 38px; padding-bottom: 40px; }
  .page .page-title { font-size: 52px; }
  .page .price-card { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 30px; }
  .page .price-card__heading { grid-column: 1; grid-row: 1; }
  .page .price-card__price { grid-column: 2; grid-row: 1; padding-left: 22px; }
  .page .price-card__value { font-size: 38px; }
  .page #plan-series .price-card__value { font-size: 34px; }
  .page .price-card__summary { grid-column: 1 / -1; grid-row: 2; padding-top: 22px; border-top: 1px solid #b5bfc0; }
  .page .price-card__for { grid-column: 1; grid-row: 3; }
  .page .price-card__includes { grid-column: 2; grid-row: 3; padding-left: 22px; }
  .page .price-card__terms { grid-column: 1; grid-row: 4; }
  .page .price-card__cta { grid-column: 2; grid-row: 4; align-self: end; }
  .page .price-card.is-featured { padding: 28px; }
  .page .price-card.is-featured .price-card__summary { border-color: #65776e; }
  .page .checks { grid-template-columns: 1fr; }
  .page .checks > .check, .page .checks > .check:first-child, .page .checks > .check:last-child { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 10px 28px; padding: 26px 0; border-right: 0; border-bottom: 1px solid #b5bfc0; }
  .page .checks > .check:last-child { border-bottom: 0; }
  .page .checks > .check .check__role { grid-column: 1; grid-row: 1; }
  .page .checks > .check .check__who { grid-column: 2; grid-row: 1; align-self: center; min-height: 0; }
  .page .checks > .check .check__looks { grid-column: 1 / -1; }
  .page .steps > .step, .page .steps > .step:first-child, .page .steps > .step:nth-child(3), .page .steps > .step:last-child { grid-template-columns: 44px minmax(0, 1fr); gap: 10px 24px; }
  .page .steps > .step > .step__ask { grid-column: 2; grid-row: 4; margin-top: 8px; }
  .page .cta-band { grid-template-columns: 1fr; padding: 34px; }
  .page .cta-band .button { grid-column: 1; grid-row: auto; margin-top: 8px; }
}
@media (max-width: 600px) {
  .page { padding-top: 0; font-size: 14px; }
  .page .page-head { gap: 20px; margin-inline: -6vw; padding: 30px 6vw 36px; }
  .page .page-head::after { left: 6vw; }
  .page .page-title { font-size: clamp(33px, 10vw, 44px); }
  .page .page-lead { font-size: 14px; }
  .page .section-title { font-size: 28px; }
  .page .notice { padding: 18px 20px; font-size: 13px; }
  .page figure.media img { max-height: 300px; }
  .page .price-card, .page .price-card.is-featured, .page #plan-care { grid-template-columns: 1fr; gap: 22px; padding: 28px 20px; }
  .page .price-card:not(.is-featured):not(#plan-care) { padding-left: 0; padding-right: 0; }
  .page .price-card__heading, .page .price-card__price, .page .price-card__summary, .page .price-card__for, .page .price-card__includes, .page .price-card__terms, .page .price-card__cta { grid-column: 1; grid-row: auto; }
  .page .price-card__name { font-size: 24px; }
  .page .price-card__price { padding: 0; border: 0; }
  .page .price-card__value { font-size: 46px; }
  .page #plan-series .price-card__value { font-size: 40px; }
  .page .price-card__summary { padding-top: 20px; }
  .page .price-card__includes { padding: 0; border: 0; }
  .page .price-card__terms { padding-top: 20px; border-top: 1px solid #b5bfc0; }
  .page .price-card__terms > div { grid-template-columns: 1fr; gap: 3px; }
  .page .price-card.is-featured .price-card__terms { border-color: #65776e; }
  .page .price-card__cta { margin-top: 4px; }
  .page dl.terms-list > div, .page #approach dl.terms-list > div { grid-template-columns: 1fr; gap: 8px; padding: 21px 0; }
  .page dl.terms-list dt { font-size: 15px; }
  .page #approach { padding: 26px 20px; }
  .page .checks > .check, .page .checks > .check:first-child, .page .checks > .check:last-child { grid-template-columns: 80px minmax(0, 1fr); gap: 12px 18px; }
  .page .checks > .check .check__role { font-size: 24px; gap: 9px; }
  .page .checks > .check .check__who { font-size: 12px; }
  .page .steps > .step, .page .steps > .step:first-child, .page .steps > .step:nth-child(3), .page .steps > .step:last-child { grid-template-columns: 30px minmax(0, 1fr); gap: 8px 16px; padding: 27px 0; }
  .page .steps > .step::before, .page .steps > .step:first-child::before, .page .steps > .step:nth-child(3)::before { font-size: 26px; }
  .page .steps > .step > .step__title { font-size: 21px; }
  .page .steps > .step > .step__ask { padding: 17px 18px; font-size: 13px; }
  .page ul.deliverables { grid-template-columns: 1fr; }
  .page .faq__item > summary { padding-right: 44px; font-size: 16px; }
  .page .faq__item > summary::after { width: 25px; height: 25px; top: 25px; }
  .page .faq__answer { padding-right: 8px; }
  .page form.contact-form { padding: 24px 20px; }
  .page .contact-form fieldset { gap: 23px; grid-template-columns: 1fr; }
  .page .contact-form input, .page .contact-form select, .page .contact-form textarea { font-size: 16px; }
  .page .cta-band { padding: 30px 24px; gap: 20px; }
  .page .cta-band h2 { font-size: 28px; }
  .page.page--privacy .prose ol { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: no-preference) {
  .lab-pages-ready .page-head::after { transform: scaleX(0); transition: transform .8s ease; }
  .lab-pages-ready .page-head.is-lit::after { transform: scaleX(1); }
}
