@charset "UTF-8";

/* ==========================================================================
   SCSK Consulting - style.css

   Class naming: BEM (Block__Element--Modifier)
     c-*  : shared components used in several sections
     u-*  : small helper utilities (line breaks / visibility)
     is-* : states toggled by JavaScript

   Breakpoints
     SP  : max-width 1023.98px
     PC  : min-width 1024px (also 1280px / 1536px for wide screens)
   ========================================================================== */

/* ==========================================================================
   Variables
   ========================================================================== */
:root {
	--font-sans: "Meiryo UI", sans-serif;
	--font-en: "Inter", sans-serif;
	--font-serif: "Source Serif 4", serif;

	--color-black: #000;
	--color-white: #fff;
	--color-ink: #000;
	--color-line: #7d7d7d40;
	--color-soft: #ccc;
	--color-dim: #575757;
	--color-copy: #333;
	--color-scroll-line: #434343;
	--color-rule: #8b8b8b;
	--color-separator: #d9d9d9;
	--color-meta: #818181;
	--color-cta: #313131;
	--color-cta-border: #949494;
	--color-footer-rule: #5e5e5e;
	--color-footer-nav: #a9a9a9;
	--color-footer-text: #b7b7b7;
	/* mid gray: stands apart from both the black and the white sections */
	--color-cookie: #555;

	--spacing-gutter: 15px;
	--spacing-gutter-lg: 80px;
	--spacing-indent: 30px;
	--spacing-indent-lg: 160px;

	--transition-duration-hover: 0.3s;
	--ease-out: cubic-bezier(0, 0, 0.2, 1);
}

/* ==========================================================================
   Reset / Base
   ========================================================================== */
*,
::before,
::after,
::backdrop,
::file-selector-button {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
	border: 0 solid;
}

html {
	-webkit-text-size-adjust: 100%;
	tab-size: 4;
	line-height: 1.5;
	font-family: var(--font-sans);
	-webkit-tap-highlight-color: transparent;
	line-break: strict;
	overflow-wrap: anywhere;
	scrollbar-gutter: stable;
}

body {
	min-block-size: 100dvh;
	font-size: 18px;
}

hr {
	height: 0;
	color: inherit;
	border-top-width: 1px;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	font-size: inherit;
	font-weight: inherit;
}

a {
	color: inherit;
	-webkit-text-decoration: inherit;
	text-decoration: inherit;
}

b,
strong {
	font-weight: bolder;
}

small {
	font-size: 80%;
}

ol,
ul,
menu {
	list-style: none;
}

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
	display: block;
	vertical-align: middle;
}

img,
video {
	max-width: 100%;
	height: auto;
}

button,
input,
select,
optgroup,
textarea,
::file-selector-button {
	font: inherit;
	font-feature-settings: inherit;
	font-variation-settings: inherit;
	letter-spacing: inherit;
	color: inherit;
	opacity: 1;
	background-color: transparent;
	border-radius: 0;
}

button,
input:where([type="button"], [type="reset"], [type="submit"]),
::file-selector-button {
	appearance: button;
}

::placeholder {
	opacity: 1;
}

textarea {
	resize: vertical;
}

[hidden]:where(:not([hidden="until-found"])) {
	display: none !important;
}

/* ==========================================================================
   States
   ========================================================================== */
/* Added to <html> by the modal script while a dialog is open */
.is-scroll-locked {
	overflow: hidden;
}

/* ==========================================================================
   Scroll reveal
   .u-reveal elements fade up from below when scrolled into view.
   Active only while <html> has .is-reveal; assets/js/reveal.js adds .is-revealed.
   ========================================================================== */
.is-reveal .u-reveal {
	opacity: 0;
	translate: 0 40px;
	transition:
		opacity 1s var(--ease-out) var(--reveal-delay, 0s),
		translate 1s cubic-bezier(0.22, 1, 0.36, 1) var(--reveal-delay, 0s);
}

/* `none` (not 0) so revealed elements don't keep a containing block for their modals */
.is-reveal .u-reveal.is-revealed {
	opacity: 1;
	translate: none;
}

/* ==========================================================================
   Section heading reveal
   Same block reveal as the hero title: a block grows, then shrinks to the right
   uncovering the text. The block uses the text color (black on light sections,
   white on dark ones); the glyphs are hidden with -webkit-text-fill-color so
   `color` stays available for the block. The Japanese line follows 0.15s later.
   Keyframes are shared with the hero (hero-intro-block-*).
   ========================================================================== */
.is-reveal .c-section-heading.u-reveal {
	opacity: 1;
	translate: none;
	transition: none;
}

.is-reveal .c-section-heading__icon {
	opacity: 0;
	transition: opacity 0.6s var(--ease-out) var(--reveal-delay, 0s);
}

.is-reveal .c-section-heading.is-revealed .c-section-heading__icon {
	opacity: 1;
}

.is-reveal .c-section-heading__en,
.is-reveal .c-section-heading__ja {
	--heading-delay: var(--reveal-delay, 0s);
	background-image: linear-gradient(currentColor, currentColor);
	background-repeat: no-repeat;
	background-position: left center;
	background-size: 0 100%;
	-webkit-text-fill-color: transparent;
}

.is-reveal .c-section-heading__ja {
	--heading-delay: calc(var(--reveal-delay, 0s) + 0.15s);
}

.is-reveal .c-section-heading.is-revealed .c-section-heading__en,
.is-reveal .c-section-heading.is-revealed .c-section-heading__ja {
	animation:
		heading-reveal-text 1ms linear calc(var(--heading-delay) + 0.6s) forwards,
		hero-intro-block-grow 0.6s cubic-bezier(0.65, 0, 0.35, 1) var(--heading-delay) both,
		hero-intro-block-shrink 0.6s cubic-bezier(0.65, 0, 0.35, 1) calc(var(--heading-delay) + 0.6s) forwards,
		hero-intro-block-hide 0.15s linear calc(var(--heading-delay) + 1.2s) forwards;
}

@keyframes heading-reveal-text {
	from,
	to {
		-webkit-text-fill-color: currentColor;
	}
}

/* ==========================================================================
   Photo parallax
   The photo inside a .u-parallax frame is made taller than the frame and
   slides down within it as the page scrolls, so it moves slower than the page.
   assets/js/parallax.js sets --parallax (0 -> 1) while the frame crosses the screen.
   --parallax-extra: how much taller than the frame the photo is (% of frame height).
   ========================================================================== */
.is-parallax .u-parallax {
	--parallax-extra: 16;
	overflow: hidden;
}

.is-parallax .u-parallax > img {
	height: calc(100% * (100 + var(--parallax-extra)) / 100);
	/* 0 -> photo bottom aligned with frame bottom, 1 -> photo top aligned with frame top */
	translate: 0 calc((var(--parallax, 0.5) - 1) * var(--parallax-extra) / (100 + var(--parallax-extra)) * 100%);
	will-change: translate;
}

/* ==========================================================================
   Section
   ========================================================================== */
.c-section {
	position: relative;
	overflow-x: clip;
}

.c-section--dark {
	background-color: var(--color-ink);
	color: var(--color-white);
}

.c-section__inner {
	position: relative;
	z-index: 20;
}

.c-section--light {
	background-color: var(--color-white);
	color: var(--color-black);
}

/* ==========================================================================
   Decoration (line images)
   ========================================================================== */
.c-deco {
	pointer-events: none;
	position: absolute;
	z-index: 10;
	height: auto;
}

/* ==========================================================================
   Decoration (rules)
   ========================================================================== */
.c-deco-rule {
	position: absolute;
	z-index: 10;
	background-color: var(--color-line);
}

/* ==========================================================================
   Cover image
   ========================================================================== */
.c-cover-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* ==========================================================================
   Section heading
   ========================================================================== */
.c-section-heading {
	display: flex;
	align-items: flex-end;
	gap: 9px;
}

.c-section-heading__icon {
	height: 38px;
	width: 18px;
}

/* flex-start: each line is only as wide as its text (needed for the reveal block) */
.c-section-heading__title {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 1px;
}

.c-section-heading__en {
	font-family: var(--font-en);
	font-size: 28px;
	line-height: normal;
	font-weight: 600;
	letter-spacing: 0.05em;
}

.c-section-heading__ja {
	font-size: 10px;
	line-height: 1;
	font-weight: 700;
	letter-spacing: 0.3em;
}

@media (min-width: 1024px) {
	.c-section-heading {
		gap: 17px;
	}

	.c-section-heading__icon {
		height: 67px;
		width: 2rem;
	}

	.c-section-heading__title {
		gap: 0.25rem;
	}

	.c-section-heading__en {
		font-size: 3rem;
		letter-spacing: 0.1em;
	}

	.c-section-heading__ja {
		font-size: 15px;
	}
}

/* ==========================================================================
   More link (VIEW PROFILE / READ INTERVIEW)
   ========================================================================== */
.c-more-link {
	position: relative;
	display: flex;
	max-width: 100%;
	align-items: flex-start;
	justify-content: space-between;
	border-bottom-width: 2px;
	border-color: var(--color-white);
	padding-right: 13px;
	padding-bottom: 1.25rem;
	font-family: var(--font-en);
	font-size: 1rem;
	line-height: normal;
	font-weight: 700;
	letter-spacing: 0.05em;
	color: var(--color-white);
	transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke;
	transition-duration: var(--transition-duration-hover);
	transition-timing-function: var(--ease-out);
}

.c-more-link::before {
	content: "";
	pointer-events: none;
	position: absolute;
	inset: 0;
	transform-origin: left;
	scale: 0 1;
	background-color: var(--color-white);
	opacity: 0;
	transition-property: scale, opacity;
	transition-duration: var(--transition-duration-hover);
	transition-timing-function: var(--ease-out);
}

.c-more-link--black {
	border-color: var(--color-black);
	color: var(--color-black);
}

.c-more-link--black::before {
	background-color: var(--color-black);
}

.c-more-link--button {
	cursor: pointer;
	text-align: left;
}

.c-more-link__label {
	position: relative;
	transition-property: translate;
	transition-duration: var(--transition-duration-hover);
	transition-timing-function: var(--ease-out);
}

.c-more-link__dot {
	pointer-events: none;
	position: relative;
	margin-top: 0.375rem;
	width: 0.375rem;
	height: 0.375rem;
	border-radius: 9999px;
	background-color: currentColor;
	transition-property: translate, opacity;
	transition-duration: var(--transition-duration-hover);
	transition-timing-function: var(--ease-out);
}

.c-more-link__arrow {
	pointer-events: none;
	position: absolute;
	top: 26.6px;
	right: 17px;
	height: 3.9px;
	width: 24.5px;
	translate: -0.5rem;
	opacity: 0;
	transition-property: translate, opacity;
	transition-duration: var(--transition-duration-hover);
	transition-timing-function: var(--ease-out);
}

.c-more-link--black .c-more-link__arrow {
	right: 17.5px;
}

@media (min-width: 1024px) {
	.c-more-link {
		height: 3.75rem;
		padding-top: 21px;
		font-size: 0.875rem;
	}

	.c-more-link:focus-visible {
		color: var(--color-black);
	}

	.c-more-link:focus-visible::before {
		scale: 1;
		opacity: 1;
	}

	.c-more-link--black:focus-visible {
		color: var(--color-white);
	}

	.c-more-link:focus-visible .c-more-link__label {
		translate: 0.75rem;
	}

	.c-more-link:focus-visible .c-more-link__dot {
		translate: 0.5rem;
		opacity: 0;
	}

	.c-more-link--black:focus-visible .c-more-link__dot {
		translate: 0.625rem;
	}

	.c-more-link:focus-visible .c-more-link__arrow {
		translate: 0;
		opacity: 1;
	}
}

@media (min-width: 1024px) and (hover: hover) {
	.c-more-link:hover {
		color: var(--color-black);
	}

	.c-more-link:hover::before {
		scale: 1;
		opacity: 1;
	}

	.c-more-link--black:hover {
		color: var(--color-white);
	}

	.c-more-link:hover .c-more-link__label {
		translate: 0.75rem;
	}

	.c-more-link:hover .c-more-link__dot {
		translate: 0.5rem;
		opacity: 0;
	}

	.c-more-link--black:hover .c-more-link__dot {
		translate: 0.625rem;
	}

	.c-more-link:hover .c-more-link__arrow {
		translate: 0;
		opacity: 1;
	}
}

/* ==========================================================================
   Modal
   ========================================================================== */
.c-modal {
	position: fixed;
	inset: 0;
	margin: 0;
	width: 100%;
	height: 100%;
	max-height: none;
	max-width: none;
	overflow-y: auto;
	overscroll-behavior: contain;
	border-width: 0;
	background-color: #ffffff8c;
	padding-inline: 0;
	padding-block: 49px;
	color: var(--color-black);
	opacity: 0;
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
	transition-property: opacity;
	transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
	transition-duration: 0.3s;
}

.c-modal::backdrop {
	background-color: transparent;
}

.c-modal.is-shown {
	opacity: 1;
}

.c-modal__panel {
	position: relative;
	margin-inline: auto;
	width: calc(100% - 30px);
	max-width: 1120px;
	overflow-x: clip;
	background-color: #fffffff2;
	box-shadow: 0 4px 84px 0 #00000012;
	-webkit-backdrop-filter: blur(10px);
	backdrop-filter: blur(10px);
}

.c-modal__header {
	position: relative;
	z-index: 30;
	display: flex;
	height: 0;
	justify-content: flex-end;
}

.c-modal__close {
	display: grid;
	width: 47px;
	height: 47px;
	flex-shrink: 0;
	cursor: pointer;
	place-items: center;
	background-color: #4a4a4a;
	color: var(--color-white);
}

.c-modal__close-line {
	grid-column-start: 1;
	grid-row-start: 1;
	height: 1px;
	width: 18px;
	background-color: currentColor;
}

.c-modal__close-line--1 {
	rotate: 45deg;
}

.c-modal__close-line--2 {
	rotate: -45deg;
}

.c-modal__body {
	position: relative;
	z-index: 20;
}

.c-modal__sections {
	padding-inline: 15px;
}

.c-modal__section-title {
	font-family: var(--font-en);
	font-size: 1.125rem;
	line-height: normal;
	font-weight: 600;
	letter-spacing: 0.1em;
}

.c-modal__section-body {
	margin-top: 1.75rem;
}

@media (max-width: 1023.98px) {
	.c-modal--interview .c-modal__panel {
		box-shadow: 0 4px 34px 0 #0000002b;
	}
}

@media (min-width: 1024px) {
	.c-modal {
		padding-block: 65px;
	}

	.c-modal--interview {
		padding-block: 91px;
	}

	.c-modal__sections {
		padding-inline: 5rem;
	}

	.c-modal__section {
		display: grid;
		grid-template-columns: minmax(0, 240fr) minmax(0, 720fr);
		align-items: flex-start;
	}

	.c-modal__section-title {
		font-size: 22px;
	}

	.c-modal__section-body {
		margin-top: 0;
	}
}

/* ==========================================================================
   Button (CTA)
   ========================================================================== */
.c-button {
	position: relative;
	display: flex;
	height: 70px;
	width: 100%;
	max-width: 100%;
	align-items: center;
	justify-content: center;
	border-width: 1px;
	border-color: var(--color-cta);
	padding-bottom: 0.125rem;
	font-size: 1.125rem;
	line-height: 1;
	font-weight: 700;
	letter-spacing: 0.1em;
	color: var(--color-white);
	transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke;
	transition-duration: var(--transition-duration-hover);
	transition-timing-function: var(--ease-out);
}

.c-button--filled {
	background-color: var(--color-cta);
}

.c-button--outline {
	border-color: var(--color-cta-border);
}

.c-button__dot {
	pointer-events: none;
	position: absolute;
	top: 50%;
	right: 22px;
	width: 0.375rem;
	height: 0.375rem;
	translate: 0 -50%;
	border-radius: 9999px;
	background-color: currentColor;
	transition-property: translate, opacity;
	transition-duration: var(--transition-duration-hover);
	transition-timing-function: var(--ease-out);
}

.c-button__arrow {
	pointer-events: none;
	position: absolute;
	top: 34.6px;
	right: 21.5px;
	height: 3.9px;
	width: 24.5px;
	translate: -1.25rem;
	opacity: 0;
	transition-property: translate, opacity;
	transition-duration: var(--transition-duration-hover);
	transition-timing-function: var(--ease-out);
}

@media (min-width: 1024px) {
	.c-button {
		height: 5rem;
		width: 480px;
		padding-bottom: 0.25rem;
		font-size: 1.25rem;
	}

	.c-button:focus-visible {
		background-color: var(--color-white);
		color: var(--color-black);
	}

	.c-button--filled:focus-visible {
		background-color: var(--color-white);
	}

	.c-button--outline:focus-visible {
		border-color: var(--color-cta);
	}

	.c-button__dot {
		top: 34px;
		right: 28px;
		translate: 0;
	}

	.c-button:focus-visible .c-button__dot {
		translate: 1.25rem;
		opacity: 0;
	}

	.c-button:focus-visible .c-button__arrow {
		translate: 0;
		opacity: 1;
	}
}

@media (min-width: 1024px) and (hover: hover) {
	.c-button:hover {
		background-color: var(--color-white);
		color: var(--color-black);
	}

	.c-button--filled:hover {
		background-color: var(--color-white);
	}

	.c-button--outline:hover {
		border-color: var(--color-cta);
	}

	.c-button:hover .c-button__dot {
		translate: 1.25rem;
		opacity: 0;
	}

	.c-button:hover .c-button__arrow {
		translate: 0;
		opacity: 1;
	}
}

/* ==========================================================================
   Header
   ========================================================================== */
/* Fixed to the top while scrolling (sticky keeps its space in the layout) */
.header {
	position: sticky;
	top: 0;
	z-index: 50;
	background-color: var(--color-ink);
	color: var(--color-white);
}

.header__inner {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
}

.header__logo {
	margin-top: 14px;
	margin-left: 13px;
	display: block;
}

.header__logo-img {
	height: 26px;
	width: auto;
}

.header__nav-list {
	display: flex;
	gap: 1.5rem;
	font-family: var(--font-en);
	font-size: 1rem;
	white-space: nowrap;
}

.header__menu-button {
	display: flex;
	width: 50px;
	height: 50px;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	padding-left: 14px;
	cursor: pointer;
}

.header__menu-line {
	height: 1px;
	background-color: var(--color-white);
	transition-property: width, translate, rotate;
	transition-duration: var(--transition-duration-hover);
	transition-timing-function: var(--ease-out);
}

.header__menu-line--top {
	width: 23px;
}

.header__menu-line--bottom {
	width: 17px;
}

/* SP menu: opened by toggling .is-open on .header (assets/js/header.js) */
@media (max-width: 1023.98px) {
	.header__nav {
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		background-color: var(--color-ink);
		clip-path: inset(0 0 100% 0);
		visibility: hidden;
		transition: clip-path 0.4s var(--ease-out), visibility 0s linear 0.4s;
	}

	.header.is-open .header__nav {
		clip-path: inset(0);
		visibility: visible;
		transition: clip-path 0.4s var(--ease-out), visibility 0s;
	}

	.header__nav-list {
		flex-direction: column;
		gap: 0;
		padding: 0 var(--spacing-gutter) 8px;
	}

	.header__nav-list li + li {
		border-top: 1px solid var(--color-white);
	}

	.header__nav-list a {
		display: block;
		padding-block: 18px;
	}

	.header.is-open .header__menu-line--top {
		translate: 0 3px;
		rotate: 45deg;
	}

	.header.is-open .header__menu-line--bottom {
		width: 23px;
		translate: 0 -3px;
		rotate: -45deg;
	}
}

@media (max-width: 1023.98px) and (prefers-reduced-motion: reduce) {
	.header__nav,
	.header.is-open .header__nav,
	.header__menu-line {
		transition: none;
	}
}

@media (min-width: 1024px) {
	.header__inner {
		align-items: center;
		padding: 13px 77px;
	}

	.header__logo {
		margin: 0;
	}

	.header__logo-img {
		height: 59px;
	}

	.header__menu-button {
		display: none;
	}

	/* PC menu: soft gray, white on hover (same as the footer links) */
	.header__nav-list a {
		color: var(--color-soft);
		transition: color var(--transition-duration-hover) var(--ease-out);
	}

	.header__nav-list a:focus-visible {
		color: var(--color-white);
	}
}

@media (min-width: 1024px) and (hover: hover) {
	.header__nav-list a:hover {
		color: var(--color-white);
	}
}

@media (min-width: 1280px) {
	.header__nav-list {
		gap: 60px;
	}
}

/* ==========================================================================
   Main
   ========================================================================== */
.main-content {
	overflow: clip;
}

/* ==========================================================================
   Hero
   ========================================================================== */
.hero__deco-pc {
	top: 989px;
	left: -1.56%;
	width: 55.68%;
}

.hero__deco-sp {
	top: 546px;
	left: 0;
	width: 62.82%;
}

.hero__rule-1 {
	top: 916px;
	left: 49.75%;
	height: 327px;
	width: 1px;
}

.hero__rule-2 {
	top: 685px;
	left: 98.875%;
	height: 597px;
	width: 1px;
}

/* the photo covers the whole hero; its black matches the page black, so the edges need no fade */
.hero__visual {
	position: absolute;
	inset: 0;
	z-index: 10;
}

.hero__picture {
	display: block;
	width: 100%;
	height: 100%;
	min-width: 0;
}

/* the photo is absolutely positioned, so the hero height is set here */
.hero__inner {
	min-height: 380px;
	padding-inline: 13px;
	padding-top: 0;
	/* title centered vertically in the hero */
	display: flex;
	flex-direction: column;
	justify-content: center;
}

/* serif, close to the logo lettering */
.hero__title {
	font-family: var(--font-serif);
	font-size: 32px;
	line-height: 1.244;
	font-weight: 600;
}

@media (max-width: 1023.98px) {
	.hero__deco-pc {
		display: none;
	}

	/* SP shares the wide PC photo; right aligned so the light comes in from the right edge */
	.hero__photo {
		object-position: right center;
	}

	.hero__rule-1 {
		display: none;
	}

	.hero__rule-2 {
		display: none;
	}
}

@media (min-width: 1024px) {
	.hero__deco-sp {
		display: none;
	}

	/* header + hero fill the first view (at least 640px for the hero).
	   --header-height is set by assets/js/header.js; svh = height of the screen with the browser toolbars shown */
	.hero__inner {
		min-height: max(640px, calc(100vh - var(--header-height, 85px)));
		min-height: max(640px, calc(100svh - var(--header-height, 85px)));
		padding-inline: var(--spacing-gutter-lg);
		padding-top: 0;
	}

	.hero__title {
		font-size: 56px;
		line-height: 1.39;
	}
}

@media (min-width: 1280px) {
	.hero__title {
		font-size: 72px;
	}
}

/* ==========================================================================
   Hero opening animation
   Runs only while <html> has .is-intro (set by the inline script in <head>,
   on every page load). Total length: about 2.4s.

     0.0 - 0.8s  white blocks grow over each title line (left -> right)
     0.8 - 1.6s  blocks shrink to the right, revealing the title; photo brightens
     1.2 - 2.4s  decoration lines are drawn
     1.8 - 2.0s  remaining cursor bars disappear
   ========================================================================== */
@media (prefers-reduced-motion: no-preference) {
	/* Title: block reveal. The block is the inline background, so every wrapped line gets its own block. */
	.is-intro .hero__title-line {
		-webkit-box-decoration-break: clone;
		box-decoration-break: clone;
		background-image: linear-gradient(var(--color-white), var(--color-white));
		background-repeat: no-repeat;
		background-position: left center;
		background-size: 0 100%;
		animation:
			hero-intro-hide-text 1ms linear 0.8s backwards,
			hero-intro-block-grow 0.8s cubic-bezier(0.65, 0, 0.35, 1) both,
			hero-intro-block-shrink 0.8s cubic-bezier(0.65, 0, 0.35, 1) 0.8s forwards,
			hero-intro-block-hide 0.2s linear 1.8s forwards;
	}

	/* Photo: dim -> normal */
	.is-intro .hero__picture {
		animation: hero-intro-photo 1.4s ease-out 0.6s backwards;
	}

	/* Decoration lines */
	.is-intro .hero__rule-1,
	.is-intro .hero__rule-2 {
		transform-origin: top;
		animation: hero-intro-rule 1s ease-out 1.2s backwards;
	}

	.is-intro .hero__deco-pc,
	.is-intro .hero__deco-sp {
		animation: hero-intro-fade-in 1.2s ease-out 1.2s backwards;
	}
}

@keyframes hero-intro-hide-text {
	from,
	to {
		color: transparent;
	}
}

@keyframes hero-intro-block-grow {
	from {
		background-size: 0 100%;
	}

	to {
		background-size: 100% 100%;
	}
}

/* anchored to the right, shrinks to a cursor-like bar */
@keyframes hero-intro-block-shrink {
	from {
		background-position: right center;
		background-size: 100% 100%;
	}

	to {
		background-position: right center;
		background-size: 0.3em 100%;
	}
}

@keyframes hero-intro-block-hide {
	from {
		background-position: right center;
		background-size: 0.3em 100%;
	}

	to {
		background-position: right center;
		background-size: 0 100%;
	}
}

@keyframes hero-intro-fade-in {
	from {
		opacity: 0;
	}
}

@keyframes hero-intro-photo {
	from {
		filter: brightness(0.6);
	}
}

@keyframes hero-intro-rule {
	from {
		scale: 1 0;
	}
}

/* ==========================================================================
   News
   ========================================================================== */
.news__deco-pc {
	top: 0;
	left: 27.94%;
	width: 66.62%;
}

.news__deco-sp {
	top: 673px;
	left: 0;
	width: 100%;
}

.news__inner {
	padding-inline: var(--spacing-gutter);
	padding-top: 96px;
	padding-bottom: 60px;
}

.news__list {
	margin-top: 81px;
	margin-left: var(--spacing-indent);
	display: flex;
	flex-direction: column;
	gap: 2rem;
}

.news__date {
	font-family: var(--font-en);
	font-size: 0.875rem;
	line-height: normal;
	font-weight: 700;
	letter-spacing: 0.1em;
}

.news__title {
	margin-top: 7px;
	font-size: 1.125rem;
	line-height: 1.5;
	font-weight: 700;
	letter-spacing: 0.05em;
}

/* underline grows from left to right on hover / focus (on wrapped titles it runs line by line) */
.news__link {
	background-image: linear-gradient(currentColor, currentColor);
	background-repeat: no-repeat;
	background-position: left bottom;
	background-size: 0 1px;
	padding-bottom: 0.15em;
	transition: background-size 0.5s var(--ease-out);
}

.news__link:focus-visible {
	background-size: 100% 1px;
}

@media (hover: hover) {
	.news__link:hover {
		background-size: 100% 1px;
	}
}

.news__text {
	margin-top: 0.625rem;
	line-height: 2;
	letter-spacing: 0.06em;
	color: var(--color-copy);
}

@media (max-width: 1023.98px) {
	.news__deco-pc {
		display: none;
	}
}

@media (min-width: 1024px) {
	.news__deco-sp {
		display: none;
	}

	.news__inner {
		padding-inline: var(--spacing-gutter-lg);
		padding-top: 153px;
		padding-bottom: 167px;
	}

	.news__list {
		margin-top: 138px;
		margin-left: var(--spacing-indent-lg);
		gap: 61px;
	}

	.news__item {
		display: grid;
		grid-template-columns: 243px 1fr;
	}

	.news__date {
		font-size: 1rem;
	}

	/* titles can wrap to two lines */
	.news__title {
		margin-top: 0;
		line-height: 1.6;
	}

	.news__text {
		margin-top: 37px;
		line-height: 2.4;
		letter-spacing: 0.05em;
	}
}

/* ==========================================================================
   About
   ========================================================================== */
.about__deco-pc-1 {
	top: 310px;
	left: 80.06%;
	width: 39.93%;
}

.about__rule-pc-1 {
	top: 329px;
	right: 0;
	left: 55.31%;
	height: 1px;
}

.about__rule-pc-2 {
	top: 913px;
	left: 0;
	height: 1px;
	width: 38.69%;
}

.about__deco-sp-1 {
	top: 1107px;
	left: -0.26%;
	width: 53.85%;
}

.about__deco-sp-2 {
	top: 1800px;
	left: 0;
	width: 100%;
}

.about__rule-sp {
	top: 2020px;
	left: 0;
	height: 1px;
	width: 74.36%;
}

.about__inner {
	padding-inline: var(--spacing-gutter);
	padding-top: 97px;
	padding-bottom: 81px;
}

.about__body {
	margin-left: var(--spacing-indent);
}

.about__philosophy {
	margin-top: 81px;
}

.about__heading {
	font-family: var(--font-en);
	font-size: 1.125rem;
	line-height: normal;
	font-weight: 600;
	letter-spacing: 0.05em;
}

/* OUR ASPIRATION (full width), then MISSION | VISION (two columns on PC) */
/* breaks at Japanese phrase boundaries and evens out the lines (supporting browsers) */
/* same size as the body text in ABOUT (1rem, line-height 2.4) */
.about__statement {
	margin-top: 1.75rem;
	line-height: 2.4;
	letter-spacing: 0.1em;
	word-break: auto-phrase;
	text-wrap: pretty;
}

.about__mission,
.about__vision {
	margin-top: 64px;
}

.about__paragraph {
	margin-top: 1lh;
}

.about__message {
	margin-top: 5rem;
	margin-right: calc(var(--spacing-gutter) * -1);
	border-top-width: 1px;
	border-color: var(--color-line);
	padding-top: 81px;
	padding-right: var(--spacing-gutter);
}

.about__message-text {
	margin-top: 46px;
	text-align: justify;
	line-height: 2.4;
	letter-spacing: 0.1em;
	color: var(--color-soft);
}

.about__ceo-photo {
	margin-top: 3.5rem;
	display: block;
	aspect-ratio: 660/824;
	width: 100%;
	min-width: 0;
}

/* portrait with little headroom: no parallax, crop from the bottom so the head is never cut */
.about__ceo-photo > img {
	object-position: center top;
}

.about__ceo-sign {
	margin-top: 27px;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
}

.about__ceo-company {
	font-size: 0.75rem;
	line-height: 1.2;
	font-weight: 500;
	letter-spacing: 0.05em;
}

.about__ceo-role {
	margin-top: 8px;
	font-size: 0.75rem;
	line-height: 1.2;
	font-weight: 500;
	letter-spacing: 0.05em;
}

.about__ceo-name {
	margin-top: 17px;
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	justify-content: flex-end;
	gap: 18px;
}

.about__ceo-name-en {
	margin-top: 0.375rem;
	font-family: var(--font-en);
	font-size: 10px;
	line-height: normal;
	letter-spacing: 0.1em;
	color: var(--color-dim);
}

.about__ceo-name-ja {
	font-size: 1.25rem;
	line-height: 1.2;
	letter-spacing: 0.05em;
	white-space: nowrap;
}

@media (max-width: 1023.98px) {
	.about__deco-pc-1 {
		display: none;
	}

	.about__rule-pc-1 {
		display: none;
	}

	.about__rule-pc-2 {
		display: none;
	}

	.about__message-text {
		font-feature-settings: "palt";
	}
}

@media (min-width: 1024px) {
	.about__deco-sp-1 {
		display: none;
	}

	.about__deco-sp-2 {
		display: none;
	}

	.about__rule-sp {
		display: none;
	}

	.about__inner {
		padding-inline: var(--spacing-gutter-lg);
		padding-top: 190px;
		padding-bottom: 165px;
	}

	.about__body {
		margin-left: var(--spacing-indent-lg);
	}

	.about__philosophy {
		margin-top: 130px;
	}

	.about__heading {
		font-size: 26px;
	}

	.about__philosophy {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: 80px;
	}

	.about__aspiration {
		grid-column: 1 / -1;
	}

	.about__mission,
	.about__vision {
		margin-top: 100px;
	}

	.about__statement {
		margin-top: 40px;
	}

	.about__message {
		margin-top: 114px;
		margin-right: 0;
		padding-top: 116px;
		padding-right: 0;
	}

	.about__message-text {
		margin-top: 41px;
		text-align: left;
	}

	.about__ceo-photo {
		margin-top: 71px;
		aspect-ratio: 4/5;
	}

	.about__ceo-sign {
		margin-top: 53px;
	}

	.about__ceo-company,
	.about__ceo-role {
		font-size: 1rem;
	}

	.about__ceo-name {
		margin-top: 0.875rem;
		align-items: baseline;
		gap: 0.875rem;
	}

	.about__ceo-name-en {
		margin-top: 0;
		font-size: 0.75rem;
	}

	.about__ceo-name-ja {
		font-size: 26px;
	}
}

@media (min-width: 1024px) and (max-width: 1279.98px) {
	.about__ceo {
		margin-left: auto;
		max-width: 400px;
	}
}

@media (min-width: 1280px) {
	.about__message-grid {
		display: grid;
		grid-template-columns: minmax(0, 764fr) minmax(0, 400fr);
		column-gap: 116px;
	}
}

/* ==========================================================================
   Service
   ========================================================================== */
.service__deco-sp {
	top: 426px;
	left: 19.74%;
	width: 46.15%;
}

.service__inner {
	padding-inline: var(--spacing-gutter);
	padding-top: 82px;
	padding-bottom: 101px;
}

.service__box {
	position: relative;
	margin-top: 75px;
	margin-left: var(--spacing-indent);
	border-block-width: 1px;
	border-color: var(--color-line);
	background-color: var(--color-white);
	padding-block: 2.75rem;
}

.service__box-rule-top {
	position: absolute;
	top: 0;
	right: 3px;
	left: -84px;
	height: 1px;
	background-color: var(--color-line);
}

.service__box-rule-bottom {
	position: absolute;
	right: -5rem;
	bottom: 0;
	left: -1px;
	height: 1px;
	background-color: var(--color-line);
}

.service__coming {
	font-family: var(--font-en);
	font-size: 1.25rem;
	line-height: normal;
	font-weight: 600;
	letter-spacing: 0.1em;
}

.service__slash {
	height: 5rem;
	width: 1px;
	rotate: 24.79deg;
	background-color: #d9d9d9;
}

.service__text {
	margin-top: 1.5rem;
	line-height: 1.8;
	letter-spacing: 0.1em;
}

@media (max-width: 1023.98px) {
	.service__box-rule-top {
		display: none;
	}

	.service__box-rule-bottom {
		display: none;
	}

	.service__slash {
		display: none;
	}
}

@media (min-width: 1024px) {
	.service__deco-sp {
		display: none;
	}

	.service__inner {
		padding-inline: var(--spacing-gutter-lg);
		padding-top: 131px;
		padding-bottom: 191px;
	}

	.service__box {
		margin-top: 105px;
		margin-left: var(--spacing-indent-lg);
		display: flex;
		height: 368px;
		align-items: center;
		justify-content: center;
		gap: 72px;
		border-width: 0;
		padding-block: 0;
	}

	.service__coming {
		flex-shrink: 0;
		font-size: 32px;
	}

	.service__text {
		margin-top: 0;
		width: 553px;
	}
}

/* ==========================================================================
   Company
   ========================================================================== */
.company__deco-pc {
	bottom: 0;
	left: 52.25%;
	width: 55.68%;
}

.company__deco-sp-1 {
	top: 734px;
	left: 0;
	width: 87.69%;
}

.company__deco-sp-2 {
	top: 1693px;
	left: 20.26%;
	width: 79.74%;
}

.company__inner {
	padding-inline: var(--spacing-gutter);
	padding-top: 105px;
	padding-bottom: 113px;
}

.company__body {
	margin-left: var(--spacing-indent);
}

.company__heading {
	font-size: 1.125rem;
	line-height: 1;
	font-weight: 700;
	letter-spacing: 0.1em;
}

.company__heading--info {
	margin-top: 89px;
}

.company__table {
	margin-top: 42px;
	border-block-width: 1px;
	border-color: var(--color-rule);
	line-height: 1.5;
	letter-spacing: 0.1em;
	color: var(--color-soft);
}

.company__table > :not(:last-child) {
	border-top-width: 0;
	border-bottom-width: 1px;
	border-color: var(--color-line);
}

.company__table-row {
	display: flex;
	align-items: flex-start;
	gap: 0.75rem;
	padding-block: 1.5rem;
}

.company__table-head {
	width: 5rem;
	flex-shrink: 0;
}

.company__heading--members {
	margin-top: 93px;
}

.company__members {
	margin-top: 66px;
	display: flex;
	flex-direction: column;
	gap: 63px;
}

@media (max-width: 1023.98px) {
	.company__deco-pc {
		display: none;
	}
}

@media (min-width: 1024px) {
	.company__deco-sp-1 {
		display: none;
	}

	.company__deco-sp-2 {
		display: none;
	}

	.company__inner {
		padding-inline: var(--spacing-gutter-lg);
		padding-top: 196px;
		padding-bottom: 191px;
	}

	.company__body {
		margin-left: var(--spacing-indent-lg);
	}

	.company__heading {
		font-size: 22px;
	}

	.company__heading--info {
		margin-top: 116px;
	}

	.company__table {
		margin-top: 58px;
	}

	.company__table-row {
		display: grid;
		grid-template-columns: 320px minmax(0, 1fr);
		align-items: center;
		gap: 0;
		padding-block: 33px;
	}

	.company__table-head {
		width: auto;
	}

	.company__heading--members {
		letter-spacing: 0.05em;
	}

	.company__members {
		margin-top: 59px;
		display: grid;
		row-gap: 63px;
	}
}

/* two member cards side by side from 1280px; the gap widens with the screen (60px at 1280px -> 160px from about 1680px) */
@media (min-width: 1280px) {
	.company__members {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: clamp(60px, 60px + (100vw - 1280px) * 0.25, 160px);
	}
}

/* ==========================================================================
   Member card
   ========================================================================== */
.member-card {
	display: grid;
	grid-template-columns: 150px minmax(0, 1fr);
	column-gap: 30px;
}

.member-card__photo {
	display: block;
	aspect-ratio: 150/187;
	min-width: 0;
}

/* portraits with little headroom: no parallax, crop from the bottom so the head is never cut */
.member-card__photo > img {
	object-position: center top;
}

.member-card__header {
	align-self: center;
}

.member-card__role {
	font-size: 0.75rem;
	line-height: 1;
	letter-spacing: 0.05em;
}

.member-card__name {
	margin-top: 1.5rem;
	font-size: 1.25rem;
	line-height: 1;
	letter-spacing: 0.05em;
}

.member-card__name-en {
	margin-top: 13px;
	font-family: var(--font-en);
	font-size: 10px;
	line-height: normal;
	letter-spacing: 0.1em;
	color: var(--color-dim);
}

.member-card__more {
	grid-column: 1/-1;
	margin-top: 25px;
}

@media (min-width: 1024px) {
	.member-card {
		grid-template-columns: 160px minmax(0, 1fr);
		column-gap: 75px;
	}

	.member-card__photo {
		grid-row: span 2/span 2;
		aspect-ratio: 4/5;
		align-self: flex-start;
	}

	.member-card__header {
		align-self: flex-start;
	}

	.member-card__role {
		font-size: 0.875rem;
	}

	.member-card__name {
		margin-top: 22px;
		font-size: 28px;
	}

	.member-card__name-en {
		font-size: 0.75rem;
	}

	.member-card__more {
		grid-column: span 1/span 1;
		grid-column-start: 2;
		margin-top: 21px;
		width: 320px;
		align-self: flex-end;
	}
}

/* cards side by side: photo-to-text gap widens with the screen (40px at 1280px -> 75px from about 1530px) */
@media (min-width: 1280px) {
	.member-card {
		column-gap: clamp(40px, 40px + (100vw - 1280px) * 0.14, 75px);
	}
}

/* ==========================================================================
   Profile modal
   ========================================================================== */
.profile-modal__emblem {
	pointer-events: none;
	position: absolute;
	top: 272px;
	left: 42px;
	z-index: 10;
	height: auto;
	width: 319px;
}

.profile-modal__body {
	padding-bottom: 2.5rem;
}

.profile-modal__photo {
	display: block;
	aspect-ratio: 242/293;
	width: 67.1%;
	min-width: 0;
}

.profile-modal__name-box {
	margin-top: 21px;
	padding-left: 45%;
}

.profile-modal__role {
	font-size: 0.875rem;
	line-height: 2.2;
	letter-spacing: 0.1em;
}

.profile-modal__name {
	margin-top: -0.75rem;
	font-size: 1.5rem;
	line-height: 2.2;
	letter-spacing: 0.1em;
}

.profile-modal__name-en {
	margin-top: -3px;
	margin-left: 1px;
	font-family: var(--font-en);
	font-size: 10px;
	line-height: normal;
	letter-spacing: 0.1em;
	color: var(--color-dim);
}

.profile-modal__text {
	margin-top: 49px;
	padding-inline: 15px;
	text-align: justify;
	line-height: 1.8;
	letter-spacing: 0.1em;
	color: var(--color-copy);
}

@media (min-width: 1024px) {
	/* fits inside the panel (40px from top and bottom), behind the text column */
	.profile-modal__emblem {
		top: 40px;
		left: 44%;
		height: calc(100% - 80px);
		width: auto;
	}

	/* photo runs to the bottom edge; the text block is centered against the photo (at least 48px above and below) */
	.profile-modal__body {
		padding-bottom: 0;
	}

	.profile-modal__intro {
		display: grid;
		/* text column a little wider than the photo so the profile lines wrap less */
		grid-template-columns: minmax(0, 480fr) minmax(0, 540fr);
		grid-template-rows: minmax(48px, 1fr) auto auto minmax(48px, 1fr);
		column-gap: 5rem;
		padding-right: 48px;
	}

	.profile-modal__photo {
		grid-row: 1/-1;
		aspect-ratio: 480/582;
		width: 100%;
		align-self: flex-start;
	}

	.profile-modal__name-box {
		grid-column: 2;
		grid-row: 2;
		margin-top: 0;
		padding-left: 0;
	}

	.profile-modal__role {
		font-size: 1rem;
	}

	.profile-modal__name {
		margin-top: 7px;
		font-size: 32px;
	}

	.profile-modal__name-en {
		margin-top: -0.25rem;
		margin-left: 0;
		font-size: 0.75rem;
	}

	/* wrap at Japanese phrase boundaries and avoid a lone character or two on the last line (supporting browsers) */
	.profile-modal__text {
		grid-column: 2;
		grid-row: 3;
		margin-top: 70px;
		padding-inline: 0;
		text-align: left;
		line-height: 2.2;
		text-wrap: pretty;
		word-break: auto-phrase;
	}
}

/* ==========================================================================
   Recruit
   ========================================================================== */
.recruit__deco-pc-1 {
	top: 0;
	left: 15.5%;
	width: 55.68%;
}

.recruit__deco-pc-2 {
	top: 0;
	left: -33.44%;
	width: 55.68%;
}

.recruit__deco-pc-3 {
	top: 104px;
	left: 88.875%;
	width: 55.68%;
}

.recruit__rule-pc {
	top: 1095px;
	left: 0;
	height: 1px;
	width: 32.875%;
}

.recruit__deco-sp {
	top: 1270px;
	left: 50.77%;
	width: 48.97%;
}

.recruit__rule-sp {
	top: 524px;
	left: 0;
	height: 1px;
	width: 84.6%;
}

.recruit__inner {
	padding-inline: var(--spacing-gutter);
	padding-top: 93px;
	padding-bottom: 124px;
}

.recruit__body {
	margin-top: 81px;
	margin-left: var(--spacing-indent);
}

.recruit__catch {
	font-size: min(24px, (100vw - 60px) / 15.9);
	line-height: 1.7;
	letter-spacing: 0.05em;
}

.recruit__lead {
	margin-top: 32px;
	font-size: 18px;
	line-height: 2.3;
	font-weight: 700;
	letter-spacing: 0.15em;
}

.recruit__photo {
	margin-top: 48px;
	margin-right: calc(var(--spacing-gutter) * -1);
	aspect-ratio: 4/3;
	min-width: 0;
}

.recruit__interviews {
	margin-top: 80px;
	margin-left: var(--spacing-indent);
	display: flex;
	flex-direction: column;
	gap: 63px;
}

.recruit__message {
	position: relative;
	margin-top: 88px;
	margin-left: var(--spacing-indent);
	border-top-width: 1px;
	border-color: var(--color-line);
	padding-top: 65px;
}

.recruit__message-bg {
	position: absolute;
	top: 1px;
	left: -83px;
	z-index: -10;
	height: 435px;
	width: 275px;
	background-color: var(--color-white);
}

.recruit__message-title {
	font-size: 1.125rem;
	line-height: 1;
	font-weight: 700;
	letter-spacing: 0.1em;
}

.recruit__message-text {
	margin-top: 2.5rem;
	line-height: 2;
	letter-spacing: 0.1em;
}

/* one blank line between paragraphs */
.recruit__message-text + .recruit__message-text {
	margin-top: 2em;
}

.recruit__entry-btn {
	margin-top: 2.5rem;
}

@media (max-width: 1023.98px) {
	.recruit__deco-pc-1 {
		display: none;
	}

	.recruit__deco-pc-2 {
		display: none;
	}

	.recruit__deco-pc-3 {
		display: none;
	}

	.recruit__rule-pc {
		display: none;
	}

	.recruit__lead {
		font-feature-settings: "palt";
	}

	.recruit__message-bg {
		display: none;
	}

	.recruit__message-title {
		font-feature-settings: "palt";
	}

	.recruit__message-text {
		font-feature-settings: "palt";
	}
}

@media (min-width: 1024px) {
	.recruit__deco-sp {
		display: none;
	}

	.recruit__rule-sp {
		display: none;
	}

	.recruit__inner {
		padding-inline: var(--spacing-gutter-lg);
		padding-top: 166px;
		padding-bottom: 134px;
	}

	.recruit__body {
		margin-top: 130px;
		margin-left: var(--spacing-indent-lg);
	}

	/* the catch shrinks with the column so its first line (15 characters) stays on one line */
	.recruit__intro {
		display: flex;
		flex-direction: column;
		container-type: inline-size;
	}

	.recruit__catch {
		font-size: min(37px, 100cqi / 15.9);
		line-height: 1.7;
		letter-spacing: 0.05em;
	}

	.recruit__lead {
		margin-top: 2.5rem;
		line-height: 2.5;
	}

	.recruit__photo {
		margin-top: 60px;
		margin-right: 0;
	}

	.recruit__interviews {
		margin-top: 105px;
		margin-left: var(--spacing-indent-lg);
		max-width: 799px;
		gap: 105px;
	}

	.recruit__message {
		margin-top: 100px;
		margin-left: var(--spacing-indent-lg);
		display: grid;
		grid-template-columns: minmax(0, 481fr) minmax(0, 799fr);
		padding-top: 4rem;
	}

	.recruit__message-title {
		padding-top: 15px;
		font-size: 1.25rem;
	}

	.recruit__message-text {
		margin-top: 0;
	}

	.recruit__entry-btn {
		margin-top: 102px;
	}
}

/* 1280px+: catch and lead on the left of the group photo, interview cards side by side */
@media (min-width: 1280px) {
	.recruit__body {
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
		column-gap: 60px;
	}

	.recruit__intro {
		justify-content: space-between;
		gap: 40px;
		padding-top: 56px;
	}

	.recruit__lead {
		margin-top: 0;
	}

	/* Always 4:3 (nobody in the group photo is cropped), top aligned; a taller intro leaves space below the photo.
	   The 4:3 box comes from ::before padding. */
	.recruit__photo {
		position: relative;
		margin-top: 0;
		aspect-ratio: auto;
		align-self: start;
	}

	.recruit__photo::before {
		content: "";
		display: block;
		padding-top: 75%;
	}

	.recruit__photo > img {
		position: absolute;
		top: 0;
		left: 0;
	}

	.recruit__interviews {
		margin-top: 100px;
		max-width: none;
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: 60px;
	}
}

/* 1280-1439px: a more compact intro */
@media (min-width: 1280px) and (max-width: 1439.98px) {
	.recruit__intro {
		gap: 32px;
		padding-top: 24px;
	}
}

/* ==========================================================================
   Interview card
   ========================================================================== */
.interview-card {
	margin-right: calc(var(--spacing-gutter) * -1);
	display: grid;
	grid-template-columns: 60px minmax(0, 1fr);
}

.interview-card__label {
	grid-column-start: 1;
	grid-row-start: 1;
	margin-left: -1px;
	font-family: var(--font-en);
	font-size: 0.75rem;
	line-height: normal;
	font-weight: 700;
	letter-spacing: 0.1em;
	writing-mode: vertical-rl;
}

.interview-card__photo {
	grid-column-start: 2;
	grid-row-start: 1;
	display: block;
	aspect-ratio: 285/297;
	min-width: 0;
}

.interview-card__header {
	position: relative;
	grid-column: 1/-1;
	grid-row-start: 1;
	margin-bottom: 21px;
	align-self: flex-end;
}

.interview-card__meta {
	font-family: var(--font-en);
	font-size: 0.75rem;
	line-height: 19px;
	letter-spacing: 0.1em;
	color: var(--color-meta);
}

.interview-card__title {
	margin-top: 0.625rem;
	font-size: 1.125rem;
	line-height: 31px;
	letter-spacing: 0.1em;
	color: var(--color-white);
}

.interview-card__title-marker {
	background-color: var(--color-black);
	-webkit-box-decoration-break: clone;
	box-decoration-break: clone;
	padding-inline: 3px;
	padding-block: 1px;
}

.interview-card__text {
	position: relative;
	grid-column: 1/-1;
	margin-top: 21px;
	margin-right: var(--spacing-gutter);
	line-height: 2;
	letter-spacing: 0.1em;
}

.interview-card__more {
	grid-column: 1/-1;
	margin-top: 26px;
	margin-right: var(--spacing-gutter);
}

@media (max-width: 1023.98px) {
	/* one line each, on a white band as wide as the text (they overlap the photo) */
	.interview-card__role,
	.interview-card__joined {
		display: block;
		width: fit-content;
		background-color: var(--color-white);
		padding-inline: 3px;
	}

	.interview-card__title {
		font-feature-settings: "palt";
	}

	.interview-card__text {
		font-feature-settings: "palt";
	}
}

@media (min-width: 1024px) {
	.interview-card {
		margin-right: 0;
		grid-template-columns: minmax(0, 319fr) minmax(0, 480fr);
		grid-template-rows: auto auto auto 1fr;
	}

	.interview-card__label {
		margin-left: 0;
		font-size: 0.875rem;
		writing-mode: horizontal-tb;
	}

	.interview-card__photo {
		grid-row: span 4/span 4;
		aspect-ratio: 24/25;
	}

	.interview-card__header {
		grid-column: span 1/span 1;
		grid-column-start: 1;
		grid-row-start: 2;
		margin-top: 93px;
		margin-bottom: 0;
		align-self: flex-start;
	}

	/* stays inside the text column: wraps after the slash instead of running onto the photo */
	.interview-card__meta {
		padding-right: 24px;
		font-size: 0.875rem;
		line-height: normal;
	}

	.interview-card__role,
	.interview-card__joined {
		display: inline-block;
	}

	.interview-card__title {
		margin-top: 23px;
		font-size: 27px;
		line-height: 50px;
		white-space: nowrap;
	}

	.interview-card__title-marker {
		padding-inline: 9px;
		padding-block: 0.375rem;
	}

	.interview-card__text {
		grid-column: span 1/span 1;
		grid-column-start: 1;
		grid-row-start: 3;
		margin-top: 22px;
		margin-right: 0;
		/* stays inside the text column, with a gap before the photo */
		padding-right: 24px;
		width: 372px;
		max-width: 100%;
	}

	.interview-card__more {
		grid-column: span 1/span 1;
		grid-column-start: 1;
		grid-row-start: 4;
		margin-right: 0;
		width: 240px;
		align-self: flex-end;
	}
}

@media (min-width: 1280px) {
	.interview-card {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	}

	.interview-card__title {
		font-size: clamp(20px, 1.41vw, 27px);
		line-height: 1.85;
	}
}

/* ==========================================================================
   Interview modal
   ========================================================================== */
.interview-modal__deco-sp-1 {
	top: 0;
	left: 0;
	width: 167px;
}

.interview-modal__deco-sp-2 {
	right: 0;
	bottom: 0;
	width: 260px;
}

.interview-modal__deco-pc-1 {
	top: 0;
	left: 2px;
	width: 483px;
}

.interview-modal__deco-pc-2 {
	right: 0;
	bottom: 0;
	width: 329px;
}

.interview-modal__body {
	padding-bottom: 2.5rem;
}

.interview-modal__intro {
	display: grid;
	grid-template-columns: minmax(0, 120fr) minmax(0, 240fr);
}

.interview-modal__title {
	display: flex;
	align-items: flex-start;
	gap: 7px;
	align-self: flex-start;
	padding-top: 9px;
	padding-left: 15px;
	font-family: var(--font-en);
	line-height: normal;
}

.interview-modal__title-label {
	margin-top: 0.75rem;
	font-size: 9px;
	font-weight: 500;
	letter-spacing: 0.1em;
	writing-mode: vertical-rl;
}

.interview-modal__title-num {
	font-size: 64px;
	font-weight: 100;
	letter-spacing: 0.1em;
}

.interview-modal__photo {
	display: block;
	aspect-ratio: 240/216;
	min-width: 0;
	align-self: flex-start;
}

.interview-modal__profile {
	grid-column: 1/-1;
	margin-top: 43px;
	padding-inline: 15px;
}

.interview-modal__role {
	font-size: 0.875rem;
	line-height: 1.8;
	letter-spacing: 0.1em;
}

.interview-modal__name {
	margin-top: 0.625rem;
	font-family: var(--font-en);
	font-size: 40px;
	line-height: normal;
	font-weight: 300;
	letter-spacing: 0.05em;
}

.interview-modal__sections {
	margin-top: 61px;
}

/* photo placed between two Q&A lists */
.interview-modal__figure {
	margin-block: 40px;
}

.interview-modal__figure > img {
	width: 100%;
}

@media (max-width: 1023.98px) {
	.interview-modal__deco-pc-1 {
		display: none;
	}

	.interview-modal__deco-pc-2 {
		display: none;
	}
}

@media (min-width: 1024px) {
	.interview-modal__deco-sp-1 {
		display: none;
	}

	.interview-modal__deco-sp-2 {
		display: none;
	}

	.interview-modal__body {
		padding-bottom: 5rem;
	}

	.interview-modal__intro {
		grid-template-columns: minmax(0, 559fr) minmax(0, 561fr);
	}

	.interview-modal__title {
		gap: 11px;
		padding-top: 53px;
		padding-left: 5rem;
	}

	.interview-modal__title-label {
		margin-top: 19px;
		font-size: 0.875rem;
		line-height: calc(1.25 / 0.875);
	}

	.interview-modal__title-num {
		font-size: 101px;
	}

	.interview-modal__photo {
		grid-row: span 2/span 2;
		margin-bottom: 110px;
		aspect-ratio: 561/501;
	}

	.interview-modal__profile {
		grid-column: span 1/span 1;
		margin-top: 166px;
		padding-bottom: 101px;
		padding-left: 5rem;
	}

	.interview-modal__name {
		margin-top: 26px;
		font-size: 64px;
		font-weight: 500;
	}

	.interview-modal__sections {
		margin-top: 0;
	}

	.interview-modal__figure {
		margin-block: 48px;
	}
}

/* ==========================================================================
   Q&A list
   ========================================================================== */
.qa-list {
	display: flex;
	flex-direction: column;
	gap: 1.5rem;
}

.qa-list__question {
	display: grid;
	grid-template-columns: 25px minmax(0, 1fr);
	align-items: flex-start;
	font-weight: 700;
	letter-spacing: 0.1em;
	color: var(--color-copy);
}

.qa-list__q-mark {
	margin-top: 1px;
	font-family: var(--font-en);
	font-size: 22px;
	line-height: normal;
	font-weight: 600;
	color: #b9b9b9;
}

.qa-list__q-text {
	line-height: 1.8;
}

.qa-list__answer {
	margin-top: 17px;
	line-height: 1.8;
	letter-spacing: 0.1em;
	color: var(--color-copy);
}

@media (min-width: 1024px) {
	.qa-list {
		gap: 29px;
	}

	.qa-list__question {
		grid-template-columns: 31px minmax(0, 1fr);
		font-size: 1.125rem;
		line-height: calc(1.75 / 1.125);
		color: var(--color-black);
	}

	.qa-list__q-mark {
		margin-top: 0;
		font-size: 28px;
	}

	.qa-list__answer {
		margin-top: 1.25rem;
	}
}

/* ==========================================================================
   Contact
   ========================================================================== */
.contact__inner {
	padding-inline: var(--spacing-gutter);
	padding-top: 100px;
	padding-bottom: 71px;
}

.contact__body {
	margin-top: 62px;
	margin-left: var(--spacing-indent);
}

.contact__text {
	line-height: 1.8;
	letter-spacing: 0.1em;
	color: var(--color-soft);
}

.contact__btn {
	margin-top: 29px;
}

@media (min-width: 1024px) {
	.contact__inner {
		display: grid;
		grid-template-columns: 640fr 800fr;
		align-items: flex-start;
		padding-inline: var(--spacing-gutter-lg);
		padding-top: 134px;
		padding-bottom: 124px;
	}

	.contact__body {
		margin-top: 0;
		margin-left: 0;
	}

	.contact__text {
		padding-left: 0.125rem;
	}

	.contact__btn {
		margin-top: 50px;
	}
}

/* ==========================================================================
   Footer
   ========================================================================== */
.footer {
	background-color: var(--color-ink);
	padding-inline: var(--spacing-gutter);
	padding-bottom: 1.75rem;
}

/* SP: one centered column (nav, legal, brand), PC: grid */
.footer__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	border-top-width: 1px;
	border-color: var(--color-footer-rule);
	padding-top: 35px;
}

.footer__nav-list {
	display: grid;
	grid-template-columns: repeat(3, auto);
	justify-content: center;
	column-gap: 2rem;
	row-gap: 1.5rem;
	font-family: var(--font-en);
	font-size: 1rem;
	line-height: normal;
	color: var(--color-footer-nav);
}

/* white on hover, same as the privacy policy link */
.footer__nav-list a {
	transition: color var(--transition-duration-hover) var(--ease-out);
}

.footer__nav-list a:focus-visible {
	color: var(--color-white);
}

@media (hover: hover) {
	.footer__nav-list a:hover {
		color: var(--color-white);
	}
}

.footer__brand {
	margin-top: 48px;
}

.footer__logo-img {
	margin-inline: auto;
	height: 43px;
	width: auto;
}

.footer__tagline {
	margin-top: 11px;
	font-family: var(--font-en);
	font-size: 1rem;
	line-height: 1.6;
	letter-spacing: 0.15em;
	color: var(--color-footer-text);
}

.footer__privacy {
	margin-top: 40px;
	font-family: var(--font-en);
	font-size: 1rem;
	line-height: 1;
	letter-spacing: 0.05em;
	color: var(--color-footer-nav);
	transition: color var(--transition-duration-hover) var(--ease-out);
}

.footer__privacy:focus-visible {
	color: var(--color-white);
}

@media (hover: hover) {
	.footer__privacy:hover {
		color: var(--color-white);
	}
}

.footer__copyright {
	margin-top: 40px;
	font-family: var(--font-en);
	font-size: 1rem;
	line-height: 1;
	letter-spacing: 0.05em;
	color: var(--color-footer-text);
}

@media (min-width: 1024px) {
	.footer {
		padding-inline: var(--spacing-gutter-lg);
		padding-bottom: 31px;
	}

	.footer__inner {
		display: grid;
		grid-template-columns: minmax(0, 1fr) auto;
		align-items: stretch;
		text-align: left;
		padding-top: 26px;
	}

	.footer__nav {
		grid-column: span 1/span 1;
		grid-column-start: 2;
		grid-row-start: 1;
		padding-top: 42px;
	}

	.footer__nav-list {
		display: flex;
		gap: 1.5rem;
	}

	.footer__brand {
		grid-column-start: 1;
		grid-row: 1 / span 3;
		margin-top: 0;
	}

	.footer__logo-img {
		margin-inline: 0;
		height: 59px;
	}

	.footer__tagline {
		margin-top: 15px;
	}

	.footer__privacy {
		grid-column-start: 2;
		grid-row-start: 2;
		justify-self: end;
		margin-top: 16px;
	}

	.footer__copyright {
		grid-column-start: 2;
		grid-row-start: 3;
		justify-self: end;
		margin-top: 22px;
	}
}

@media (min-width: 1280px) {
	.footer__nav-list {
		gap: 2.5rem;
	}
}

/* ==========================================================================
   Cookie banner
   Fixed to the bottom of the screen until the visitor accepts
   (assets/js/cookie-consent.js removes [hidden] / adds .is-closing).
   ========================================================================== */
.cookie-banner {
	position: fixed;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 60;
	background-color: var(--color-cookie);
	color: var(--color-white);
	box-shadow: 0 -4px 24px rgb(0 0 0 / 15%);
	transition:
		translate 0.5s var(--ease-out),
		opacity 0.5s var(--ease-out);
	animation: cookie-banner-in 0.6s var(--ease-out);
}

.cookie-banner.is-closing {
	translate: 0 100%;
	opacity: 0;
}

.cookie-banner__inner {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: 16px var(--spacing-gutter);
}

.cookie-banner__text {
	font-size: 14px;
	line-height: 1.8;
	letter-spacing: 0.05em;
}

.cookie-banner__link {
	text-decoration: underline;
	text-underline-offset: 2px;
}

.cookie-banner__accept {
	height: 44px;
	background-color: var(--color-white);
	color: var(--color-black);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.1em;
	cursor: pointer;
	transition: background-color var(--transition-duration-hover) var(--ease-out);
}

.cookie-banner__accept:focus-visible {
	outline: 2px solid var(--color-white);
	outline-offset: 3px;
}

@keyframes cookie-banner-in {
	from {
		translate: 0 100%;
	}
}

@media (hover: hover) {
	.cookie-banner__accept:hover {
		background-color: #e0e0e0;
	}
}

@media (min-width: 1024px) {
	.cookie-banner__inner {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
		gap: 40px;
		padding: 20px var(--spacing-gutter-lg);
	}

	.cookie-banner__accept {
		flex-shrink: 0;
		width: 200px;
		height: 48px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.cookie-banner {
		transition: none;
		animation: none;
	}
}

/* ==========================================================================
   Utilities
   ========================================================================== */

@media (max-width: 1023.98px) {
	.u-sp-block {
		display: block;
	}
}

@media (max-width: 1023.98px) {
	.u-pc-only {
		display: none;
	}
}

/* keeps a short phrase (e.g. a quoted word) on one line */
.u-nowrap {
	white-space: nowrap;
}

.u-visually-hidden {
	clip-path: inset(50%);
	white-space: nowrap;
	border-width: 0;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	position: absolute;
	overflow: hidden;
}

@media (min-width: 1024px) {
	.u-sp-only {
		display: none;
	}
}

@media (min-width: 1024px) {
	.u-pc-block {
		display: block;
	}
}
