/* =========================================================
   Future Attraction — main stylesheet
   ========================================================= */

:root {
	--fa-blue: #2660ad;
	--fa-blue-dark: #1c4a85;
	--fa-blue-light: #6991c5;
	--fa-navy: #34495a;
	--fa-bg: #eeeded;
	--fa-white: #ffffff;
	--fa-text: #222222;
	--fa-text-light: #5b5b5b;
	--fa-border: #dcdcdc;
	--fa-radius: 14px;
	--fa-container: 1240px;
	--fa-font: "Zen Kaku Gothic New", "Hiragino Kaku Gothic ProN", "Hiragino Sans", "Noto Sans JP", sans-serif;
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; overflow-x: hidden; }
body {
	margin: 0;
	font-family: var(--fa-font);
	color: var(--fa-text);
	background: var(--fa-white);
	line-height: 1.8;
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
	width: 100%;
}
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
ul, ol, dl, dd { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, h4, p { margin: 0; }
button { font-family: inherit; cursor: pointer; }
iframe { border: 0; }
input, textarea, button { font-family: inherit; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(1px,1px,1px,1px);
	white-space: nowrap;
}

.fa-skip-link {
	position: fixed;
	top: -100px;
	left: 12px;
	background: var(--fa-blue);
	color: #fff;
	padding: 10px 18px;
	border-radius: 8px;
	z-index: 9999;
	transition: top .2s ease;
}
.fa-skip-link:focus { top: 12px; }

/* ---------- Layout helpers ---------- */
.fa-section-flat {
	max-width: var(--fa-container);
	margin: 0 auto;
	padding: 60px 24px 100px;
}
.fa-empty { text-align: center; padding: 60px 24px; color: var(--fa-text-light); }

/* ---------- Buttons ---------- */
.fa-btn {
	display: inline-flex;
	align-items: center;
	gap: 37px;
	background: var(--fa-blue);
	color: #fff;
	border: none;
	border-radius: 999px;
	padding: 12px 22px;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .03em;
	transition: background .2s ease, transform .2s ease;
}
.fa-btn:hover { background: var(--fa-blue-dark); transform: translateY(-1px); }
.fa-btn--pill { padding: 5px 5px 5px 16px; }
.fa-btn--pill > span[aria-hidden]:not(.fa-btn__icon--external) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 25px;
	height: 25px;
	border-radius: 50%;
	background: #ececeb;
	font-size: 0;
}
.fa-btn--pill > span[aria-hidden]:not(.fa-btn__icon--external)::after {
	content: '';
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 4px 0 4px 6px;
	border-color: transparent transparent transparent var(--fa-blue);
	margin-left: 3px;
}
.fa-btn--pill.fa-btn--white > span[aria-hidden]:not(.fa-btn__icon--external) { background: var(--fa-blue); }
.fa-btn--pill.fa-btn--white > span[aria-hidden]:not(.fa-btn__icon--external)::after { border-left-color: #fff; }
.fa-btn__icon--external {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: #ececeb;
	font-size: 0;
	background-image: url('../images/icon-window.svg');
	background-repeat: no-repeat;
	background-position: center;
	background-size: 12px 12px;
}
.fa-btn--outline {
	background: transparent;
	border: 2px solid var(--fa-blue);
	color: var(--fa-blue);
}
.fa-btn--outline:hover { background: var(--fa-blue); color: #fff; }
.fa-btn--white { background: #fff; color: var(--fa-blue); }
.fa-btn--white:hover { background: #eef2f8; }
.fa-btn--back {
	background: #fff;
	color: var(--fa-blue);
	font-size: 25px;
	font-weight: 500;
	justify-content: space-between;
	padding: 12px 49px 12px 12px;
}
.fa-btn__icon--back {
	display: inline-flex; align-items: center; justify-content: center;
	width: 75px; height: 75px;
	flex-shrink: 0;
	border-radius: 50%;
	background: var(--fa-blue);
}
.fa-btn__icon--back::after {
	content: '';
	width: 0; height: 0;
	border-style: solid;
	border-width: 6px 9px 6px 0;
	border-color: transparent #fff transparent transparent;
}

/* ---------- Section tab (vertical label) ---------- */
.fa-section-tab {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--fa-blue);
	color: #fff;
	font-weight: 900;
	font-size: 35px;
	padding: 5px 0px 5px 4px;
	width: 50px;
	flex: 0 0 50px;
	align-self: flex-start;
	writing-mode: vertical-rl;
	white-space: nowrap;
}
.fa-section-tab--navy { background: var(--fa-blue); }
.fa-agency-list .fa-section-tab {
	text-orientation: upright;
	letter-spacing: .08em;
	padding: 18px 8px;
	font-size: 25px;
}
.fa-section {
	position: relative;
	padding-left: 64px;
}

/* =========================================================
   Header / Off-canvas navigation
   ========================================================= */
.fa-menu-trigger {
	position: fixed;
	top: 64px;
	right: 22px;
	z-index: 600;
	width: 51px;
	height: 51px;
	border-radius: 50%;
	background: var(--fa-blue);
	opacity: 1;
	border: none;
	color: var(--fa-blue);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 3px;
	box-shadow: 0 4px 14px rgba(0,0,0,.12);
}
.fa-menu-trigger__icon { display: none; }
.fa-menu-trigger__icon span {
	display: block;
	width: 18px;
	height: 2px;
	background: var(--fa-blue);
	transition: transform .2s ease, opacity .2s ease;
}
.fa-menu-trigger__label { color: #fff; font-weight: 800; font-size: 9px; letter-spacing: .05em; transform: translateY(-1px); }
.fa-menu-trigger[aria-expanded="true"] .fa-menu-trigger__icon span:first-child { transform: translateY(3px) rotate(45deg); }
.fa-menu-trigger[aria-expanded="true"] .fa-menu-trigger__icon span:last-child { transform: translateY(-3px) rotate(-45deg); }

.fa-nav-drawer {
	position: fixed;
	inset: 0;
	z-index: 700;
	visibility: hidden;
	pointer-events: none;
}
.fa-nav-drawer.is-open { visibility: visible; pointer-events: auto; }
.fa-nav-drawer__overlay {
	position: absolute;
	inset: 0;
	z-index: 1;
	background: rgba(20,30,45,.55);
	opacity: 0;
	transition: opacity .25s ease;
}
.fa-nav-drawer.is-open .fa-nav-drawer__overlay { opacity: 1; }
.fa-nav-drawer__inner {
	position: absolute;
	top: 0; right: 0;
	z-index: 2;
	height: 100%;
	width: min(380px, 88vw);
	background: #fff;
	padding: 32px 32px 40px;
	transform: translateX(100%);
	transition: transform .3s ease;
	overflow-y: auto;
	display: flex;
	flex-direction: column;
}
.fa-nav-drawer.is-open .fa-nav-drawer__inner { transform: translateX(0); }
.fa-nav-drawer__close.fa-menu-trigger {
	position: absolute;
	top: 64px;
	right: 22px;
	z-index: auto;
}
.fa-nav-drawer__logo { display: block; margin: 12px 0 32px; width: 130px; }
.fa-nav-drawer__nav ul { display: flex; flex-direction: column; gap: 4px; }
.fa-nav-drawer__nav a {
	display: block;
	padding: 16px 4px;
	border-bottom: 1px solid var(--fa-border);
	font-weight: 700;
	color: var(--fa-blue-dark);
	font-size: 17px;
}

/* =========================================================
   Fixed brand bar — "画面最下部に常に追従"
   ========================================================= */
.fa-fixed-brand {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 500;
	pointer-events: none;
}
.fa-fixed-brand__bar {
	height: 31px;
	background: var(--fa-blue);
	box-shadow: 0 -2px 10px rgba(0,0,0,.15);
}
.fa-fixed-brand__badge {
	position: absolute;
	right: clamp(14px, 4vw, 40px);
	bottom: 48px;
	width: clamp(78px, 9vw, 118px);
	pointer-events: auto;
	transition: transform .2s ease;
}
.fa-fixed-brand__badge:hover { transform: translateY(-4px); }
body { padding-bottom: 14px; }

/* =========================================================
   TOP page
   ========================================================= */
.fa-hero { position: relative; background: var(--fa-blue-dark); height: 100vh; }
.fa-hero__bar--top { height: 25px; background: var(--fa-blue); }
.fa-hero__marquee {
	position: absolute;
	top: -5%;
	left: 0;
	width: 100%;
	overflow: hidden;
	white-space: nowrap;
	z-index: 2;
	pointer-events: none;
}
.fa-hero__marquee span {
	display: inline-block;
	font-weight: 900;
	color: var(--fa-blue);
	opacity: 1;
	font-size: 14.64vw;
	letter-spacing: .01em;
	animation: fa-marquee 22s linear infinite;
}
@keyframes fa-marquee {
	from { transform: translateX(0); }
	to { transform: translateX(-33.333%); }
}
.fa-hero__photo { line-height: 0; }
.fa-hero__photo video { display: block; width: 100%; height: 100vh; object-fit: cover; }
.fa-hero__bar { height: 25px; background: var(--fa-blue); }

.fa-intro { background: var(--fa-bg); padding: 56px 24px 0; position: relative; }
.fa-intro__inner {
	max-width: var(--fa-container);
	margin: 0 auto;
	position: relative;
	z-index: 1;
}
.fa-intro__text {
	max-width: 640px;
	font-size: 14px;
	line-height: 2.1;
	color: var(--fa-blue);
	font-weight: 800;
	transform: rotate(-13deg);
}
.fa-ceo-trigger {
	position: absolute;
	top: -40px;
	right: 24%;
	background: none;
	border: none;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 6px;
	text-align: right;
	z-index: 3;
	transform: rotate(-13deg);
}
.fa-ceo-trigger__click {
	font-size: 16px;
	font-weight: 700;
	color: var(--fa-blue);
}
.fa-ceo-trigger__label {
	position: relative;
	display: inline-block;
	background: #fff;
	border: 3px solid var(--fa-blue);
	color: var(--fa-blue);
	font-weight: 700;
	font-size: 26px;
	padding: 14px 23px;
	border-radius: 14px;
	transition: background .2s ease, color .2s ease;
}
.fa-ceo-trigger__label::before {
	content: '';
	position: absolute;
	inset: 0;
	border: 3px solid var(--fa-blue);
	border-radius: 14px;
	background: #fff;
	transform: translate(10px, 11px);
	z-index: -1;
}
.fa-ceo-trigger:hover .fa-ceo-trigger__label { background: var(--fa-blue); color: #fff; }

.fa-headline {
	position: relative;
	max-width: none;
	width: calc(100% + 220px);
	margin: 0 auto;
	padding: 0 0 110px;
	margin-top: -50px;
	transform: translateX(-75px);
}
.fa-headline__banner {
	position: relative;
	background-color: var(--fa-blue);
	clip-path: polygon(0% 20%, 78% 20%, 78% 0%, 85% 50%, 78% 100%, 78% 80%, 0% 80%);
	padding: 86px 0% 86px 7%;
	transform: rotate(-13deg);
}
.fa-headline__text {
	font-size: 6.95vw;
	font-weight: 900;
	color: #fff;
	line-height: 1.4;
	max-width: none;
	white-space: nowrap;
}
.fa-headline__illustration {
	position: absolute;
	right: 0;
	bottom: -124px;
	width: clamp(180px, 49vw, 918px);
	z-index: 10;
}

.fa-section__body {
	max-width: calc(var(--fa-container) - 40px);
}
.fa-news { background: var(--fa-bg); display: flex; align-items: flex-end; gap: 30px 50px; padding-bottom: 74px; }
.fa-news__list { display: flex; flex-direction: column; max-width: 620px; flex: 1 1 auto; }
.fa-news__item { position: relative; }
.fa-news__item:nth-child(1) { margin-left: 0; }
.fa-news__item:nth-child(2) { margin-left: 30px; }
.fa-news__item:nth-child(3) { margin-left: 60px; }
.fa-news__item a {
	display: block;
	padding: 6px 50px 10px 0;
	border-bottom: 1px solid var(--fa-border);
	position: relative;
}
.fa-news__item--empty { padding: 18px 4px; color: var(--fa-text-light); }
.fa-news__date { display: block; color: var(--fa-blue); font-weight: 700; font-size: 15px; margin-bottom: 2px; }
.fa-news__title { display: block; font-weight: 700; font-size: 15px; margin-bottom: 4px; }
.fa-news__excerpt { display: block; font-size: 12px; color: var(--fa-text-light); }
.fa-news__arrow {
	position: absolute;
	right: 0;
	bottom: 33px;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--fa-blue);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0;
}
.fa-news__arrow::after {
	content: '';
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 4px 0 4px 6px;
	border-color: transparent transparent transparent #fff;
	margin-left: 2px;
}

.fa-business { background: #fff; display: flex; gap: 60px; justify-content: center; }
.fa-business .fa-section-tab { transform: translateY(25%); }
.fa-business__list { display: flex; flex-direction: column; }
.fa-business__item {
	display: grid;
	grid-template-columns: 1fr minmax(550px, 1fr);
	gap: 40px;
	align-items: center;
	padding: 48px 0;
}
.fa-business__item:nth-child(even) { background: var(--fa-bg); margin: 0 -1000px; padding-left: 1000px; padding-right: 1000px; }
.fa-business__meta { display: flex; align-items: flex-start; gap: 20px; margin-bottom: 159px; }
.fa-business__no { font-size: 110px; font-weight: 500; color: var(--fa-blue); line-height: .7; display: block; flex: 0 0 auto; }
.fa-business__info { padding-top: 8px; }
.fa-business__label { font-size: 15px; color: var(--fa-blue); font-weight: 700; margin: 0 0 6px; }
.fa-business__title { font-size: 40px; font-weight: 900; color: var(--fa-blue); line-height: 1.3; }
.fa-business__desc { font-size: 14px; color: #717171; font-weight: 600; margin-bottom: 22px; max-width: 480px; }
/* Temporarily hidden pending content — see 1st/4th business items' CTA buttons */
.fa-business__list > .fa-business__item:nth-child(1) .fa-btn,
.fa-business__list > .fa-business__item:nth-child(4) .fa-btn { display: none; }
.fa-business__photo img { border-radius: 30px; width: 100%; height: 413px; object-fit: cover; box-shadow: 10px 10px 14px 0px rgba(0,0,0,.25); }
@media (min-width: 1025px) {
	.fa-business { justify-content: flex-start; }
	.fa-news { padding-top: 24px; }
}

.fa-company { background: var(--fa-bg) url('../images/background-company.jpg') no-repeat center / cover; padding: 52px 46px; display: flex; gap: 47px; }
.fa-agency-list { display: flex; gap: 63px; padding-right: 64px; justify-content: center; }
.fa-company-detail,
.fa-contact { display: flex; padding-right: 76px; gap: 47px; padding-bottom: 64px; justify-content: center; }
.fa-company__body { display: grid; grid-template-columns: 1fr 2fr; gap: 40px; align-items: start; }
.fa-company__table { display: flex; flex-direction: column; gap: 18px; }
.fa-company__table > div { display: grid; grid-template-columns: 58px 1fr; gap: 20px; align-items: baseline; }
.fa-company__table dt {
	background: #fff;
	color: var(--fa-blue);
	border-radius: 999px;
	text-align: center;
	font-size: 12px;
	font-weight: 700;
	padding: 2px 4px;
}
.fa-company__table dd { font-size: 17px; color: #fff; font-weight: 600; }
.fa-company__map iframe { width: 100%; height: 340px; border-radius: var(--fa-radius); }

/* =========================================================
   CEO modal
   ========================================================= */
.fa-modal { position: fixed; inset: 0; z-index: 900; }
.fa-modal[hidden] { display: none; }
.fa-modal__overlay { position: absolute; inset: 0; background: rgba(15,25,40,.6); }
.fa-modal__panel {
	position: relative;
	max-width: 760px;
	margin: 6vh auto;
	max-height: 88vh;
	overflow-y: auto;
	background: #fff;
	border-radius: 22px;
	padding: 48px 48px 40px;
}
.fa-modal__illustration { position: absolute; top: 30px; left: 40px; width: 90px; }
.fa-modal__close {
	position: absolute;
	top: 22px;
	right: 22px;
	width: 60px; height: 60px;
	border-radius: 50%;
	border: 1px solid var(--fa-blue);
	background: #fff;
	color: var(--fa-blue);
	font-size: 11px;
	font-weight: 700;
	display: flex;
	align-items: center;
	justify-content: center;
}
.fa-modal h2 { color: var(--fa-blue-dark); font-size: 22px; text-align: center; margin-bottom: 26px; }
.fa-modal__text p { font-size: 14px; color: var(--fa-text); margin-bottom: 16px; }

/* CEO message modal (TOP page only — scoped to #fa-ceo-modal so the news modal is unaffected) */
#fa-ceo-modal .fa-modal__text p { font-weight: 800; color: var(--fa-blue); }
#fa-ceo-modal h2 { color: var(--fa-blue); font-size: 25px; margin-bottom: 48px; }
#fa-ceo-modal .fa-modal__illustration { width: 190px; transform: rotate(-15deg); }
#fa-ceo-modal .fa-modal__panel { padding: 74px 48px 40px; }

/* =========================================================
   Inner page banner
   ========================================================= */
.fa-banner {
	position: relative;
	overflow: hidden;
	padding: 12px 0 6px;
}
.fa-banner__bar { position: absolute; top: 0; left: 0; right: 0; height: 12px; background: var(--fa-blue); }
.fa-banner__grid {
	position: relative;
	width: 100%;
	overflow: hidden;
	white-space: nowrap;
	z-index: 2;
	pointer-events: none;
}

/* IP help ("知財とは？") trigger + dialog */
.fa-chizai-archive .fa-ip-help-trigger,
.fa-chizai-single .fa-ip-help-trigger { display: none; }
.fa-ip-help-trigger {
	position: absolute;
	top: 26px;
	right: 96px;
	z-index: 30;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: rgba(255,255,255,.94);
	border: 1px solid var(--fa-blue);
	color: var(--fa-blue);
	border-radius: 999px;
	padding: 10px 18px 10px 10px;
	font-size: 12px;
	font-weight: 700;
}
.fa-ip-help-trigger__q {
	width: 22px; height: 22px;
	border-radius: 50%;
	background: var(--fa-blue);
	color: #fff;
	display: inline-flex; align-items: center; justify-content: center;
	font-size: 12px;
}
.fa-ip-help__panel { max-width: 640px; text-align: left; padding-top: 56px; }
.fa-ip-help__label { font-size: 12px; font-weight: 700; color: var(--fa-blue); margin-bottom: 8px; }
.fa-ip-help__heading { font-size: clamp(24px, 4vw, 34px); font-weight: 900; color: var(--fa-blue-dark); line-height: 1.3; margin-bottom: 20px; }
.fa-ip-help__text p { font-size: 14px; line-height: 1.9; color: var(--fa-text); margin-bottom: 14px; }
.fa-banner__marquee { width: 100%; overflow: hidden; white-space: nowrap; }
.fa-banner__text {
	display: inline-block;
	height: 270px;
	font-size: 14.64vw;
	font-weight: 900;
	color: var(--fa-blue);
	line-height: 1.2;
	animation: fa-banner-marquee 18s linear infinite;
}
@keyframes fa-banner-marquee {
	from { transform: translateX(0); }
	to { transform: translateX(-16.6667%); }
}

/* =========================================================
   知財一覧 (chizai archive)
   ========================================================= */
.fa-ip-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
@media (min-width: 1025px) {
	/* True CSS Grid masonry: every row shares one fixed 177px unit, and each
	   card spans 2 or 3 of those units via grid-row (2 units = 382px,
	   3 units = 587px, gap included). grid-auto-flow: row dense then packs
	   each card into the first free slot in its assigned column, so columns
	   2/3 stack independently — a short card never gets stretched by a
	   taller neighbour sharing its row. Movie + patent are pinned to
	   column 1 (span 2 / span 3); once posts accumulate past that combined
	   height, the extra space simply shows as blank space below the patent
	   card, which is expected. */
	.fa-ip-grid {
		grid-auto-flow: row dense;
		grid-auto-rows: 177px;
	}
	.fa-ip-grid > .fa-ip-card--movie,
	.fa-ip-grid > .fa-ip-card--patent { grid-column: 1; }
	.fa-ip-grid > .fa-ip-card--movie { grid-row: span 2; }
	.fa-ip-grid > .fa-ip-card--patent { grid-row: span 3; }
	.fa-ip-grid > .fa-ip-card:not(.fa-ip-card--movie):not(.fa-ip-card--patent) {
		grid-column: var(--fa-col, auto);
		grid-row: span var(--fa-span, 3);
	}
}
.fa-ip-card {
	background: #fff;
	border-radius: var(--fa-radius);
	overflow: hidden;
	box-shadow: 0 6px 20px rgba(0,0,0,.06);
	display: flex;
	flex-direction: column;
}
.fa-ip-card__top { display: flex; flex-direction: column; padding: 20px 19px 18px; flex: 1; min-height: 0; color: inherit; }
.fa-ip-card--movie .fa-ip-card__top,
.fa-ip-card--patent .fa-ip-card__top { background: var(--fa-blue); }
.fa-ip-card__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.fa-ip-card__title { font-size: 18px; font-weight: 500; color: var(--fa-blue); }
.fa-ip-card__detail {
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	gap: 14px;
	font-size: 11px;
	font-weight: 700;
	color: var(--fa-blue);
	border-radius: 999px;
}
.fa-ip-card__detail-arrow {
	background: var(--fa-blue); color: #fff; border-radius: 50%;
	width: 46px; height: 46px;
	display: inline-flex; align-items: center; justify-content: center;
	font-size: 0;
}
.fa-ip-card__detail-arrow::after {
	content: '';
	width: 0; height: 0;
	border-style: solid;
	border-width: 5px 0 5px 8px;
	border-color: transparent transparent transparent #fff;
	margin-left: 2px;
}
.fa-ip-card__eyebrow { font-size: 11px; letter-spacing: .06em; color: var(--fa-blue); margin: 4px 0 14px; font-weight: 700; }
.fa-ip-card--movie .fa-ip-card__eyebrow,
.fa-ip-card--patent .fa-ip-card__eyebrow {
	font-size: 20px;
	text-align: center;
	color: #fff;
	margin-bottom: 5px;
	font-weight: 700;
}
.fa-ip-card__caption {
	color: #fff;
	text-align: center;
	font-size: 13px;
	font-weight: 400;
	margin-bottom: 14px;
}
.fa-ip-card__thumb { flex: 1; min-height: 60px; }
.fa-ip-card__thumb img,
.fa-ip-card__thumb video { width: 100%; height: 100%; object-fit: cover; border-radius: 10px; display: block; }
.fa-ip-card__thumb video { width: calc(100% - 2px); height: calc(100% - 2px); margin: 1px; }
.fa-ip-card--adjustable-bolt .fa-ip-card__thumb video { height: calc(150% - 2px); }
.fa-ip-card__bar { position: relative; background: var(--fa-blue); color: #fff; text-align: center; padding: 8px 10px; font-size: 13px; font-weight: 700; }
.fa-ip-card--movie .fa-ip-card__bar,
.fa-ip-card--patent .fa-ip-card__bar { background-color: #fff; color: var(--fa-blue); }
.fa-ip-card--movie .fa-ip-card__movie-thumb { margin-top: 10px; border-radius: 10px; overflow: hidden; flex: 1; min-height: 60px; }
.fa-ip-card__movie-thumb iframe { display: block; width: 100%; height: 100%; border: 0; }
.fa-ip-card--patent .fa-ip-card__patent-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 10px 0 18px; }
.fa-ip-card__patent-thumb {
	aspect-ratio: 3/4;
	background: #fff;
	border: 1px solid var(--fa-border);
	border-radius: 6px;
	display: flex; align-items: center; justify-content: center;
	overflow: hidden;
}
.fa-ip-card__patent-thumb img { width: 100%; height: 100%; object-fit: contain; }
.fa-ip-card--patent .fa-btn { align-self: center; justify-content: center; }

.fa-our-works { background: var(--fa-blue); color: #fff; }
.fa-our-works__heading { text-align: center; padding: 40px 24px 0; }
.fa-our-works__eyebrow { font-size: 12px; letter-spacing: .12em; font-weight: 700; opacity: .8; margin-bottom: 6px; }
.fa-our-works__heading h2 { font-size: 24px; font-weight: 900; }
.fa-our-works__grid { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 32px; }
.fa-our-works__item img { width: 100%; height: 320px; object-fit: cover; display: block; }

/* =========================================================
   知財詳細 (single chizai)
   ========================================================= */
.fa-chizai-layout {
	max-width: var(--fa-container);
	margin: 0 auto;
	padding: 50px 0px 40px;
	display: grid;
	grid-template-columns: 412px 1fr;
	gap: 28px;
	align-items: start;
}
.fa-chizai-side { display: flex; flex-direction: column; gap: 20px; }
.fa-side-block { background: var(--fa-blue); color: #fff; border-radius: var(--fa-radius); padding: 20px; }
.fa-side-block--concept { padding: 20px 40px; }
.fa-side-block--concept .fa-side-block__label {
	color: #fff;
	font-size: 25px;
	text-align: center;
	font-weight: 700;
	position: relative;
	padding-bottom: 16px;
	margin-bottom: 20px;
}
.fa-side-block--concept .fa-side-block__label::after {
	content: '';
	position: absolute;
	bottom: 0; left: 50%;
	transform: translateX(-50%);
	width: 18px; height: 2px;
	background: #fff;
}
.fa-side-block--dark { background: #fff; color: var(--fa-text); overflow: hidden; padding: 0px 40px 20px; }
.fa-side-block--dark .fa-side-block__label {
	color: #fff;
	background: #909090;
	font-size: 19px;
	text-align: center;
	margin: 0 -40px 16px;
	padding: 6px 20px;
}
.fa-side-block--dark .fa-side-block__text { color: #000; font-weight: 500; }
.fa-side-block--movie { background: var(--fa-blue); color: #fff; padding: 0; overflow: hidden; }
.fa-side-block--movie .fa-side-block__label { color: #fff; padding: 16px 20px 0; font-size: 20px; text-align: center; }
.fa-side-block__movie { aspect-ratio: 16/9; width: 90%; margin: 0 auto 14px; }
.fa-side-block__movie iframe { width: 100%; height: 100%; }
.fa-side-block--movie .fa-side-block__caption { padding: 12px 20px; text-align: center; font-size: 13px; background-color: #fff; color: var(--fa-blue); }
.fa-side-block__label { font-size: 11px; font-weight: 700; letter-spacing: .06em; color: var(--fa-blue); margin-bottom: 10px; }
.fa-side-block__text { font-size: 13px; line-height: 1.9; }
.fa-side-block__text p { margin: 0; }
.fa-side-block__text a { color: #fff; display: inline-block; text-decoration: underline; }
.fa-side-block--case { border: 20px solid var(--fa-blue); padding: 0; position: relative; }
.fa-side-block--case img { border-radius: 10px; margin-top: 0; display: block; }
.fa-side-block--case .fa-side-block__caption {
	position: absolute; top: -10px; left: -10px;
	background: var(--fa-blue); color: #fff;
	font-size: 16px; padding: 6px 12px;
}
.fa-side-block__caption { font-size: 12px; color: var(--fa-text-light); font-weight: 700; }

.fa-chizai-hero { position: relative; border-radius: var(--fa-radius); overflow: hidden; }
.fa-chizai-hero img { width: 100%; height: auto; display: block; }

.fa-features { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin: 40px 0; }
.fa-feature { background: #fff; border-radius: var(--fa-radius); padding: 14px 20px; }
.fa-feature__no { font-size: 35px; font-weight: 500; text-align: center; line-height: 1; color: var(--fa-blue); }
.fa-feature__eyebrow { font-size: 18px; font-weight: 500; text-align: center; color: var(--fa-blue); margin: 2px 0 0; }
.fa-feature__label { font-size: 11px; font-weight: 800; text-align: center; letter-spacing: .08em; color: var(--fa-blue); margin-bottom: 14px; }
.fa-feature__image { margin-bottom: 14px; border-radius: 10px; overflow: hidden; }
.fa-feature__image img { width: 100%; height: 160px; object-fit: cover; }
.fa-feature__title { font-size: 17px; font-weight: 700; margin: 0 0 8px; text-align: center; }
.fa-feature__desc { font-size: 12px; color: #000; line-height: 1.9; }
.fa-side-block__list { display: flex; flex-direction: column; gap: 6px; font-size: 12px; line-height: 1.7; color: #000; font-weight: 500; }
.fa-side-block__list li { padding-bottom: 6px; border-bottom: 1px solid rgba(255,255,255,.2); }
.fa-side-block__list li:last-child { border-bottom: none; padding-bottom: 0; }

.fa-cases { display: flex; flex-direction: column; gap: 24px; }
.fa-cases__item { position: relative; border: 20px solid var(--fa-blue); border-radius: var(--fa-radius); overflow: hidden; }
.fa-cases__item img { width: 100%; height: 440px; object-fit: cover; }
.fa-cases__caption {
	position: absolute; top: -10px; left: -10px;
	background: var(--fa-blue); color: #fff; font-size: 16px; font-weight: 700;
	padding: 6px 12px;
}
.fa-chizai-actions { display: flex; flex-direction: column; gap: 16px; }
.fa-chizai-actions .fa-btn--pill {
	font-size: 25px;
	font-weight: 500;
	justify-content: space-between;
	padding: 12px 12px 12px 41px;
}

.fa-other-ip { max-width: 820px; margin: 0 auto; padding: 36px 24px 100px; }
.fa-other-ip__heading { text-align: center; font-size: 30px; letter-spacing: .1em; color: var(--fa-blue); font-weight: 700; margin-bottom: 20px; }
.fa-other-ip__list { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.fa-other-ip__list a {
	display: flex; justify-content: space-between; align-items: center;
	gap: 37px;
	background: var(--fa-blue); color: #fff;
	border: none; border-radius: 999px; padding: 12px 12px 12px 43px;
	font-size: 20px; font-weight: 700; letter-spacing: .03em;
	transition: background .2s ease, transform .2s ease;
}
.fa-other-ip__list a:hover { background: var(--fa-blue-dark); transform: translateY(-1px); }
.fa-other-ip__arrow {
	display: inline-flex; align-items: center; justify-content: center;
	width: 70px; height: 70px;
	flex-shrink: 0;
	border-radius: 50%;
	background: #fff;
}
.fa-other-ip__arrow::after {
	content: '';
	width: 0; height: 0;
	border-style: solid;
	border-width: 6px 0 6px 10px;
	border-color: transparent transparent transparent var(--fa-blue);
	margin-left: 1px;
}

/* =========================================================
   特許実績 (patent)
   ========================================================= */
.fa-patent,
.fa-chizai-archive,
.fa-chizai-single {
	background-color: #dcdddd;
	background-image:
		linear-gradient(#fff 1px, transparent 1px),
		linear-gradient(90deg, #fff 1px, transparent 1px);
	background-size: 75px 75px;
}
.fa-patent-grid-section.fa-section-flat {
	max-width: none;
	margin: 0;
	padding-top: 40px;
	padding-left: 0;
	padding-right: 0;
}
.fa-patent-slider {
	overflow: hidden;
}
.fa-patent-grid {
	display: flex;
	gap: 28px;
	overflow-x: auto;
	scroll-snap-type: x proximity;
	-webkit-overflow-scrolling: touch;
	padding: 10px 0 30px;
	scrollbar-width: none;
	-ms-overflow-style: none;
}
.fa-patent-grid::-webkit-scrollbar { display: none; }
.fa-patent-grid--single { justify-content: center; }
.fa-patent-card {
	display: flex;
	flex-direction: column;
	gap: 16px;
	align-items: center;
	flex: 0 0 auto;
	width: clamp(220px, 26vw, 320px);
	scroll-snap-align: start;
}
.fa-patent-card[aria-hidden="true"] { pointer-events: none; }
.fa-cert {
	width: 100%; aspect-ratio: 3 / 4.3;
	background: #fff; border: none;
	border-radius: 6px;
	padding: 18px 16px;
	position: relative;
	overflow-y: auto;
}
.fa-cert--design { background: #fdf6d8; }
.fa-cert__image { width: 100%; height: 100%; object-fit: cover; }
.fa-cert__emblem { text-align: center; font-size: 24px; color: var(--fa-blue); margin-bottom: 4px; }
.fa-cert__type { text-align: center; font-weight: 700; font-size: 15px; color: var(--fa-text); }
.fa-cert__type span { display: block; font-size: 8px; font-weight: 400; color: var(--fa-text-light); }
.fa-cert__number { text-align: center; font-size: 13px; font-weight: 700; margin: 6px 0 10px; }
.fa-cert__meta { display: flex; flex-direction: column; gap: 8px; font-size: 10px; }
.fa-cert__meta dt { color: var(--fa-text-light); font-weight: 700; }
.fa-cert__meta dt span { display: block; font-size: 8px; font-weight: 400; }
.fa-cert__meta dd { font-size: 11px; }
.fa-cert__footnote { font-size: 8px; color: var(--fa-text-light); margin-top: 10px; }
.fa-cert--photo {
	padding: 0;
	overflow: hidden;
	box-shadow: 0 14px 34px rgba(0,0,0,.14);
}
.fa-cert--photo .fa-cert__image { object-fit: cover; }
.fa-patent-card__detail { border: none; justify-content: center; }

.fa-patent-nav {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	margin-top: 40px;
}
.fa-patent-nav__prev {
	position: absolute;
	left: 42px;
	top: 50%;
	transform: translateY(-50%);
	display: inline-flex;
	align-items: center;
	gap: 10px;
	background: none;
	border: none;
	color: var(--fa-blue);
	font-weight: 700;
	font-size: 12px;
	letter-spacing: .05em;
}
.fa-patent-nav__prev-icon {
	width: 40px; height: 40px;
	border-radius: 50%;
	background: var(--fa-blue);
	position: relative;
	flex: 0 0 auto;
}
.fa-patent-nav__prev-icon::after {
	content: '';
	position: absolute;
	top: 50%; left: 50%;
	width: 0; height: 0;
	border-style: solid;
	border-width: 6px 9px 6px 0;
	border-color: transparent #fff transparent transparent;
	transform: translate(-45%, -50%);
}
.fa-patent-nav__numbers { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.fa-patent-nav__num {
	display: inline-flex; align-items: center; justify-content: center;
	width: 36px; height: 36px; border-radius: 50%;
	background: #fff; border: 0; color: #D9D9D9;
	font-weight: 700; font-size: 20px; padding: 0;
}
.fa-patent-nav__num.is-active { background: var(--fa-blue); color: #fff; border-color: var(--fa-blue); }

.fa-pagination { display: flex; justify-content: center; gap: 8px; margin-top: 50px; flex-wrap: wrap; }
.fa-pagination .page-numbers {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 40px; height: 40px; border-radius: 50%;
	background: #fff; border: 1px solid var(--fa-border); color: var(--fa-text);
	font-weight: 700; font-size: 13px; padding: 0 10px;
}
.fa-pagination .page-numbers.current { background: var(--fa-blue); color: #fff; border-color: var(--fa-blue); }
.fa-pagination .prev, .fa-pagination .next { border-radius: 999px; padding: 0 18px; }

/* =========================================================
   代理店業務 (agency)
   ========================================================= */
.fa-partner { display: grid; grid-template-columns: 1fr 420px; gap: 40px; align-items: center; padding: 45px 0; border-bottom: 1px solid #958E8E; }
.fa-partner:first-child { padding-top: 0; }
.fa-partner .fa-btn--pill { padding: 4px 10px 4px 20px; }
.fa-partner:last-child { border-bottom: none; }
.fa-partner__name { font-size: 25px; font-weight: 900; margin-bottom: 16px; }
.fa-partner__services { display: flex; flex-direction: column; margin-bottom: 16px; }
.fa-partner__services li { font-size: 13px; padding: 10px 0; border-bottom: 1px solid var(--fa-border); }
.fa-partner__desc { font-size: 13px; color: var(--fa-text-light); line-height: 1.9; margin-bottom: 22px; }
.fa-partner__desc p:first-child { margin-top: 0; }
.fa-partner__photo img { width: 100%; height: 260px; object-fit: cover; border-radius: var(--fa-radius); box-shadow: 10px 10px 14px 0px rgba(0,0,0,.25); }

/* =========================================================
   会社概要 (company detail page)
   ========================================================= */
.fa-company-detail__body { display: grid; grid-template-columns: 1fr 1fr; gap: 50px; align-items: start; }
.fa-company-detail__table { display: flex; flex-direction: column; gap: 12px; }
.fa-company-detail__table > div { display: grid; grid-template-columns: 58px 1fr; gap: 18px; }
.fa-company-detail__table dt span {
	display: inline-flex; align-items: center; justify-content: center;
	border: 1px solid var(--fa-blue); color: var(--fa-blue);
	border-radius: 999px; font-size: 12px; font-weight: 700;
	padding: 2px 3px; width: 100%; text-align: center;
}
.fa-company-detail__table dd { font-size: 17px; font-weight: 500; }
.fa-purpose-list { display: flex; flex-direction: column; gap: 8px; counter-reset: item; }
.fa-purpose-list { counter-reset: fa-purpose; }
.fa-purpose-list li { font-size: 17px; padding-left: 1.6em; position: relative; counter-increment: fa-purpose; }
.fa-purpose-list li::before { content: counter(fa-purpose) "．"; position: absolute; left: 0; color: var(--fa-blue); font-weight: 700; }
.fa-company-detail__map iframe { width: 100%; height: 420px; border-radius: var(--fa-radius); }

/* =========================================================
   お問い合わせ (contact page)
   ========================================================= */
.fa-contact__body { display: flex; flex-direction: column; gap: 24px; width: 100%; }
.fa-contact__notice { padding: 16px 20px; border-radius: var(--fa-radius); font-weight: 700; font-size: 14px; }
.fa-contact__notice--success { background: #e8f3ec; color: #1f7a43; }
.fa-contact__notice--error { background: #fbe9e9; color: #b3261e; }
.fa-contact__form { display: flex; flex-direction: column; gap: 22px; }
.fa-contact__field { display: flex; flex-direction: column; gap: 8px; }
.fa-contact__field label { display: flex; align-items: center; gap: 8px; font-weight: 700; color: var(--fa-blue); font-size: 14px; }
.fa-contact__badge { font-size: 11px; font-weight: 700; border-radius: 999px; padding: 2px 10px; }
.fa-contact__badge--required { background: var(--fa-blue); color: #fff; }
.fa-contact__badge--optional { background: var(--fa-bg); color: var(--fa-text-light); }
.fa-contact__field input[type="text"],
.fa-contact__field input[type="tel"],
.fa-contact__field input[type="email"],
.fa-contact__field textarea {
	font: inherit;
	font-size: 15px;
	color: var(--fa-text);
	padding: 14px 18px;
	border: 1px solid var(--fa-border);
	border-radius: 12px;
	background: #fff;
}
.fa-contact__field textarea { resize: vertical; }
.fa-contact__field input:focus,
.fa-contact__field textarea:focus { outline: 2px solid var(--fa-blue); outline-offset: 1px; }
.fa-contact__field input[type="file"] { font: inherit; font-size: 13px; }
.fa-contact__address { display: flex; flex-direction: column; gap: 10px; }
.fa-contact__zip { max-width: 220px; }
.fa-contact__submit { align-self: flex-start; }

/* =========================================================
   News archive / single
   ========================================================= */
.fa-news-archive__layout { display: grid; grid-template-columns: 200px 1fr; gap: 40px; align-items: start; }
.fa-news-archive__filters { display: flex; flex-direction: column; gap: 12px; padding-top: 21px; }
.fa-news-archive__filter {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--fa-blue);
	color: #fff;
	border: none;
	border-radius: 999px;
	padding: 12px 20px;
	font-size: 14px;
	font-weight: 700;
}
.fa-news-archive__filter.is-active { background: var(--fa-blue-dark); box-shadow: inset 0 0 0 3px rgba(255,255,255,.5); }
.fa-news-archive__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 40px; align-content: start; }
.fa-news-archive__item { border-bottom: 1px solid var(--fa-border); }
.fa-news-archive__trigger {
	display: block;
	width: 100%;
	position: relative;
	background: none;
	border: none;
	text-align: left;
	padding: 20px 50px 12px 0;
	cursor: pointer;
}
.fa-news-archive__date { display: block; color: var(--fa-blue); font-weight: 700; font-size: 14px; margin-bottom: 4px; }
.fa-news-archive__title { display: block; font-weight: 700; font-size: 16px; color: var(--fa-text); margin-bottom: 6px; }
.fa-news-archive__excerpt { display: block; font-size: 12px; color: var(--fa-text-light); }
.fa-news-archive__arrow {
	position: absolute;
	right: 0;
	bottom: 16px;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background: var(--fa-blue);
}
.fa-news-archive__arrow::after {
	content: '';
	position: absolute;
	top: 50%; left: 50%;
	width: 0; height: 0;
	border-style: solid;
	border-width: 4px 0 4px 6px;
	border-color: transparent transparent transparent #fff;
	transform: translate(-40%, -50%);
}
.fa-news-modal .fa-modal__panel { background-color: var(--fa-blue); }
.fa-news-modal__panel { max-width: 720px; padding-top: 70px; text-align: left; }
.fa-news-modal .fa-news-modal__title { color: #fff; font-size: 25px; font-weight: 900; text-align: left; margin-bottom: 14px; }
.fa-news-modal__date { display: block; color: #fff; font-weight: 700; font-size: 19px; }
.fa-news-modal__thumb { margin-bottom: 24px; border-radius: var(--fa-radius); overflow: hidden; }
.fa-news-modal__content { font-size: 12px; line-height: 2; color: #fff; }
.fa-news-modal .fa-modal__close {
	font-size: 20px;
	width: 40px;
	height: 40px;
	color: #fff;
	background-color: transparent;
	border: 1px solid #fff;
}
.wp-block-image img { margin-top: 20px; }
.fa-news-single__date { color: var(--fa-blue); font-weight: 700; }
.fa-news-single__title { font-size: 26px; font-weight: 900; margin: 10px 0 30px; }
.fa-news-single__thumb { margin-bottom: 30px; border-radius: var(--fa-radius); overflow: hidden; }
.fa-news-single__content { margin-bottom: 40px; font-size: 15px; line-height: 2; }

.fa-404 { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 20px; }

/* =========================================================
   Footer
   ========================================================= */
.fa-footer { background: var(--fa-blue); color: #fff; position: relative; padding: 60px 24px 40px; overflow: hidden; }
.fa-footer__rocket { position: absolute; left: 0; bottom: 0; width: clamp(160px, 29vw, 351px); }
.fa-footer__inner { max-width: var(--fa-container); margin: 0 auto; position: relative; z-index: 1; }
.fa-footer__nav ul { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; max-width: 420px; margin: 0 auto; }
.fa-footer__nav a {
	display: flex; align-items: center; justify-content: space-between;
	background-color: #EEEDED; color: var(--fa-blue-dark);
	border-radius: 999px; padding: 5px 5px 5px 16px; font-size: 13px; font-weight: 500;
}
.fa-footer__nav-arrow {
	background: var(--fa-blue); color: #fff; border-radius: 50%;
	width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center;
	font-size: 0;
}
.fa-footer__nav-arrow::after {
	content: '';
	width: 0; height: 0;
	border-style: solid;
	border-width: 3px 0 3px 5px;
	border-color: transparent transparent transparent #fff;
	margin-left: 1px;
}
.fa-footer__copyright { text-align: center; margin-top: 36px; font-size: 15px; font-weight: 600; }

/* =========================================================
   Responsive
   ========================================================= */
@media (min-width: 1366px) {
	.fa-headline { width: calc(100% + 360px); }
	.fa-headline__illustration { bottom: -244px; }
}
@media (max-width: 1024px) {
	.fa-ip-grid { grid-template-columns: repeat(2, 1fr); }
	.fa-patent-grid { padding: 10px 0 30px; }
	.fa-chizai-layout { grid-template-columns: 1fr; }
	.fa-chizai-side { order: 2; }
	.fa-company__body, .fa-company-detail__body { grid-template-columns: 1fr; }
	.fa-business__item, .fa-business__item:nth-child(even) { grid-template-columns: 1fr; margin: 0; padding: 36px 0; }
	.fa-business__photo { order: -1; }
	.fa-business__no { font-size: 64px; }
	.fa-business__title { font-size: 28px; }
	.fa-partner { grid-template-columns: 1fr; }
	.fa-partner__photo { order: -1; }
	.fa-headline__text { max-width: 80%; white-space: normal; }
}

@media (max-width: 720px) {
	.fa-hero__marquee { top: 2%; }
	.fa-section, .fa-section-flat { padding-left: 16px; padding-right: 16px; }
	.fa-section { padding-left: 0; }
	.fa-section-tab {
		position: static;
		writing-mode: horizontal-tb;
		width: 100%;
		flex: 0 0 auto;
		display: flex;
		justify-content: center;
		padding: 10px;
		font-size: 20px;
		margin-bottom: 0;
	}
	.fa-top .fa-section-tab { width: fit-content; padding: 0px 10px; }
	.fa-news, .fa-business, .fa-company, .fa-agency-list, .fa-company-detail, .fa-contact { flex-direction: column; }
	.fa-section__body { padding: 24px 16px 40px; }
	.fa-news__body { padding: 0; }
	.fa-news-archive__layout { grid-template-columns: 1fr; gap: 20px; }
	.fa-news-archive__filters { flex-direction: row; flex-wrap: wrap; }
	.fa-news-archive__grid { grid-template-columns: 1fr; }
	.fa-intro { padding: 40px 16px 0; display: flex; flex-direction: column; }
	.fa-intro__inner { order: 2; }
	.fa-headline { order: 1; }
	.fa-headline__illustration { order: 3; }
	.fa-ceo-trigger { position: static; align-items: flex-start; margin-top: 16px; transform: none; }
	.fa-ceo-trigger__label { font-size: 19px; }
	.fa-intro__text { transform: none; max-width: 100%; }
	.fa-intro__text br { display: none; }
	.fa-headline { padding: 0 0 50px; margin-top: 0; transform: none; width: 100%; }
	.fa-headline__banner { clip-path: none; border-radius: 0; padding: 12px 24px; transform: none; }
	.fa-headline__text { max-width: 100%; font-size: clamp(24px, 8vw, 36px); white-space: normal; text-align: center; }
	.fa-headline__illustration { position: static; width: 100%; margin-top: 30px; right: auto; }
	.fa-top .fa-section__body { max-width: 100%; width: 100%; }
	.fa-news { gap: 10px; padding-left: 16px; }
	.fa-news__list { max-width: 100%; }
	.fa-news__item:nth-child(2) { margin-left: 0; }
	.fa-news__item:nth-child(3) { margin-left: 0; }
	.fa-news__more { margin-left: 0; align-self: center; margin-top: 0; }
	.fa-business { gap: 0; margin-right: 0; padding-right: 0; padding-top: 0; }
	.fa-business .fa-section-tab { transform: translateY(0); }
	.fa-business .fa-section__body { padding: 24px 0px 40px; }
	.fa-business__item { gap: 24px; }
	.fa-business__item, .fa-business__item:nth-child(even) { padding: 36px 16px; }
	.fa-business__no { font-size: 104px; }
	.fa-business__meta { margin-bottom: 48px; }
	.fa-company { padding: 32px 16px 43px 16px; gap: 17px; }
	.fa-company__body { padding: 0; }
	.fa-ip-grid { grid-template-columns: 1fr; }
	.fa-chizai-archive .fa-banner__text { height: 131px; }
	.fa-patent .fa-banner__text { height: 110px; }
	.fa-patent-grid { padding: 10px 0 24px; gap: 18px; }
	.fa-patent-card { width: 74vw; }
	.fa-patent-nav { margin-top: 28px; }
	.fa-patent-nav__prev { left: 16px; }
	.fa-features, .fa-other-ip__list { grid-template-columns: 1fr; }
	.fa-cases__item img { height: 260px; }
	.fa-chizai-layout { padding: 30px 16px 60px; gap: 13px; }
	.fa-chizai-single .fa-banner__text { height: 131px; }
	.fa-chizai-actions { flex-direction: column; }
	.fa-agency .fa-banner { padding: 30px 0 106px; }
	.fa-agency .fa-banner__text { height: 131px; }
	.fa-agency-list.fa-section { padding-right: 0; }
	.fa-agency-list { gap: 13px; }
	.fa-agency-list .fa-section-tab { width: fit-content; padding: 0 16px; font-size: 18px; }
	.fa-company-page .fa-section-tab,
	.fa-contact-page .fa-section-tab { width: fit-content; padding: 0 16px; font-size: 18px; }
	.fa-contact-page .fa-banner__text { height: 180px; }
	.fa-agency-list .fa-section__body { padding-top: 24px; }
	.fa-partner { gap: 20px; }
	.fa-news-archive .fa-banner { padding: 30px 0 0px; }
	.fa-news-archive .fa-banner__text { height: 110px; }
	.fa-news-modal .fa-modal__panel { margin: 10vh 12px; }
	.fa-footer__nav ul { grid-template-columns: 1fr 1fr; }
	.fa-footer__rocket { width: 230px; }
	.fa-modal__panel { margin: 4vh 12px; padding: 70px 20px 30px; }
	.fa-modal__illustration { width: 60px; top: 16px; left: 16px; }
	.fa-modal__close { width: 46px; height: 46px; top: 12px; right: 12px; }
	#fa-ceo-modal .fa-modal__close { width: 58px; height: 58px; }
	#fa-ceo-modal .fa-modal__illustration { width: 180px; }
	.fa-company__table > div, .fa-company-detail__table > div { grid-template-columns: 90px 1fr; }
	.fa-company-page .fa-banner__text { height: 170px; }
	.fa-company-detail { margin-bottom: 14px; }
	.fa-ip-help-trigger { position: static; margin: 16px auto 0; }
	.fa-ip-help__panel { padding-top: 70px; }
	.fa-our-works__grid { grid-template-columns: 1fr; }
	.fa-our-works__item img { height: 220px; }
}

@media (max-width: 480px) {
	.fa-footer__nav ul { grid-template-columns: 1fr; }
	.fa-banner__text { font-size: clamp(30px, 13vw, 60px); }

	/* お問い合わせページ */
	.fa-contact-page .fa-banner { padding: 30px 0 0px; }
	.fa-contact-page .fa-banner__text { height: 98px; }

	/* CEO message modal (TOP page only) */
	#fa-ceo-modal .fa-modal__text p { font-size: 14px; }
	#fa-ceo-modal h2 { margin-bottom: 24px; }
	#fa-ceo-modal .fa-modal__illustration { width: 110px; }

	/* 特許ページ */
	.fa-patent-nav__prev { top: 230%; }
	.fa-patent .fa-banner__text { height: 60px; }
	.fa-patent-grid-section.fa-section-flat { padding-top: 20px; padding-bottom: 100px; }

	/* 特許・知財一覧・知財詳細ページ 共通 */
	.fa-patent .fa-banner,
	.fa-chizai-archive .fa-banner,
	.fa-chizai-single .fa-banner { padding: 30px 0 0; }

	/* フッター */
	.fa-footer__rocket { display: none; }
	.fa-footer { padding: 30px 24px 40px; }

	/* お知らせページ */
	.fa-news-archive__list.fa-section-flat { padding: 40px 24px 50px; }
	.fa-news-archive .fa-banner__text { height: 60px; }
	.fa-news-archive__filter { padding: 7px 20px; }
	.fa-news-modal .fa-news-modal__title { font-size: 24px; }
	.fa-news-modal .fa-modal__panel { padding: 60px 20px 30px; }

	/* ヘッダー */
	.fa-menu-trigger__label { font-size: 11px; }
	.fa-menu-trigger { top: 54px; right: 11px; }

	/* 代理店ページ */
	.fa-agency .fa-banner { padding: 30px 0 0px; }
	.fa-agency .fa-banner__text { height: 111px; }
	.fa-agency .fa-section__body { padding: 24px 16px 10px; }

	/* 知財一覧ページ */
	.fa-chizai-archive .fa-banner__text { height: 0; }

	/* 知財詳細ページ */
	.fa-chizai-single .fa-banner__text { height: 80px; }
	.fa-features { margin: 17px 0; }
	.fa-chizai-layout { gap: 0; padding: 30px 16px 20px; }
	.fa-chizai-single .fa-btn--back { font-size: 18px; }
	.fa-chizai-single .fa-btn__icon--back { width: 45px; height: 45px; }
	.fa-chizai-single .fa-btn__icon--back::after { border-width: 4px 7px 4px 0; }
	.fa-chizai-single .fa-other-ip__list a { font-size: 18px; }
	.fa-chizai-single .fa-other-ip__arrow { width: 45px; height: 45px; }
	.fa-chizai-single .fa-other-ip__arrow::after { border-width: 4px 0 4px 7px; }
	.fa-other-ip { padding: 36px 24px 60px; }

	/* 会社概要ページ */
	.fa-company-page .fa-banner { padding: 30px 0 0px; }
	.fa-company-page .fa-banner__text { height: 100px; }
	.fa-company-detail { padding-right: 0; padding-bottom: 24px; gap: 17px; }
	.fa-company-detail__body { padding-left: 16px; }
	.fa-company-detail__table dd { font-size: 15px; }
	.fa-purpose-list li { font-size: 15px; }

	/* TOPページ */
	.fa-intro { padding: 25px 16px 0; }
	.fa-headline__banner { padding: 12px; }
	.fa-headline__text { font-size: clamp(24px, 6vw, 36px); }
	.fa-headline { padding: 0 0 20px; }
	.fa-ceo-trigger { margin: 0 auto; margin-top: 17px; align-items: center; }
	.fa-news__more { margin-top: 10px; }
	.fa-business .fa-section-tab { margin-top: 16px; margin-left: 16px; }
	.fa-business .fa-section__body { padding: 0; }
	.fa-business__item, .fa-business__item:nth-child(even) { padding: 26px 16px; }
	.fa-business__photo img { height: 263px; }
	.fa-business__label { font-size: 11px; }
	.fa-business__title { font-size: 24px; }
	.fa-business__no { font-size: 84px; }
	.fa-business__meta { margin-bottom: 28px; }
	.fa-business__item { gap: 14px; }
	.fa-company__table dd { font-size: 14px; }
}

/* Reduce motion */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	.fa-hero__marquee span { animation: none; }
}
