/* ==========================================================================
   포르마 키트 — Elementor 무료판에 없는 것만 담는다. 색·글꼴·여백은 위젯 Style 탭에서.
   ========================================================================== */
:root {
	--fm-ink: #0E1013;
	--fm-ink-2: #2A2F35;
	--fm-mute: #565E67;
	--fm-line: #DADDE1;
	--fm-paper: #F2F3F1;
	--fm-night: #0B0D10;
	--fm-sig: #FF5A1F;      /* 어두운 바탕·큰 글자·그래픽 전용 */
	--fm-sig-dk: #C2410C;   /* 흰 바탕 작은 글자용 (5.1:1) */
	--fm-ease: cubic-bezier(.22, 1, .36, 1);
	--fm-hh: 116px;         /* 헤더 높이 (유틸 바 40 + 메인 76) */
}
@media (max-width: 1024px) { :root { --fm-hh: 68px; } }

/* ---- 한글 줄바꿈: 단어 중간에서 끊지 않는다 (Elementor 에 컨트롤이 없는 CJK 속성) ---- */
.elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor,
.elementor-widget-image-box .elementor-image-box-title,
.elementor-widget-image-box .elementor-image-box-description,
.elementor-widget-icon-box .elementor-icon-box-title,
.elementor-widget-icon-box .elementor-icon-box-description,
.elementor-widget-icon-list .elementor-icon-list-text,
.elementor-widget-button .elementor-button-text,
.elementor-tab-title, .elementor-tab-content,
.e-n-accordion-item-title-text, .e-n-tab-title-text,
.fm-hl, .fm-tl__title, .fm-tl__desc, .fm-ps__title, .fm-ps__desc, .fm-hv__title, .fm-hv__desc, .fm-spec {
	word-break: keep-all;
	overflow-wrap: break-word;
}
.elementor-widget-button .elementor-button { white-space: nowrap; }
/* 링크 걸린 이미지: Elementor 기본 <a> 가 inline-block 이라 고정 높이 사진이 원본 비율 폭으로 줄어든다 → 블록으로 */
.elementor-widget-image a { display: block; }
.elementor-counter-number-wrapper, .fm-num, .fm-spec td { font-variant-numeric: tabular-nums; }
/* 진행 막대 안 퍼센트 — Elementor 기본 11px 은 40px 막대에서 너무 작다 */
.elementor-widget-progress .elementor-progress-percentage { font-size: 15px; font-weight: 700; padding-right: 14px; font-variant-numeric: tabular-nums; }

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

/* ---- 헤더: 고정(컨테이너 컨트롤 position:fixed) + 스크롤하면 유틸 바가 위로 접힌다 ---- */
.fm-header { transition: transform .45s var(--fm-ease), box-shadow .35s var(--fm-ease); will-change: transform; }
html.fm-scrolled .fm-header { box-shadow: 0 1px 0 rgba(14, 16, 19, .06), 0 12px 32px rgba(14, 16, 19, .08); }
@media (min-width: 1025px) {
	html.fm-scrolled .fm-header { transform: translateY(-40px); }
}
.fm-util a { text-decoration: none; }
/* 관리자 바가 있을 때 고정 헤더를 그 아래로 */
body.admin-bar .fm-header { top: 32px !important; }
@media (max-width: 782px) { body.admin-bar .fm-header { top: 46px !important; } }

/* ---- HFE 드롭다운: 메뉴와 하위 메뉴 사이 간격을 지나는 동안 닫히지 않게 (호버 브리지) ---- */
.hfe-nav-menu .sub-menu::before { content: ""; position: absolute; left: 0; right: 0; top: -18px; height: 18px; }

/* ---- 키보드 초점 ---- */
.hfe-nav-menu a.hfe-menu-item:focus-visible,
.hfe-nav-menu a.hfe-sub-menu-item:focus-visible,
.elementor-button:focus-visible,
.fm-hv__row:focus-visible { outline: 2px solid var(--fm-sig-dk); outline-offset: 3px; }
.fm-qb__item:focus-visible { outline: 2px solid #fff; outline-offset: -5px; }

/* ---- 섹션 머리 표식: 시그널 사각형 ---- */
.fm-eye .elementor-heading-title::before {
	content: ""; display: inline-block; width: 8px; height: 8px; margin-right: 12px;
	background: var(--fm-sig); vertical-align: middle; transform: translateY(-2px);
}

/* ---- 윤곽선 숫자 (큰 인덱스 번호) ---- */
.fm-outline .elementor-heading-title { color: transparent !important; -webkit-text-stroke: 1px currentColor; }
.fm-outline.is-dark .elementor-heading-title { -webkit-text-stroke-color: rgba(242, 243, 241, .45); }
.fm-outline.is-light .elementor-heading-title { -webkit-text-stroke-color: rgba(14, 16, 19, .34); }

/* ---- 도면 격자 배경 (컨테이너 클래스) ---- */
.fm-grid {
	background-image: linear-gradient(to right, rgba(14, 16, 19, .055) 1px, transparent 1px), linear-gradient(to bottom, rgba(14, 16, 19, .055) 1px, transparent 1px);
	background-size: 88px 88px;
	background-position: center top;
}
.fm-grid-dark {
	background-image: linear-gradient(to right, rgba(255, 255, 255, .055) 1px, transparent 1px), linear-gradient(to bottom, rgba(255, 255, 255, .055) 1px, transparent 1px);
	background-size: 88px 88px;
	background-position: center top;
}

/* ---- 히어로: 배경 위에 덮개 → 그 위에 레이저 스캔 선 → 그 위에 글자 ---- */
.fm-hero { position: relative; overflow: hidden; }
.fm-hero::before { z-index: 1 !important; }
.fm-hero > .e-con-inner, .fm-hero > .elementor-element { position: relative; z-index: 3; }
.fm-scan::after {
	content: ""; position: absolute; left: 0; right: 0; top: 0; height: 1px; z-index: 2; pointer-events: none;
	background: linear-gradient(90deg, transparent 0, rgba(255, 90, 31, .0) 6%, rgba(255, 90, 31, .85) 45%, rgba(255, 140, 90, 1) 50%, rgba(255, 90, 31, .85) 55%, rgba(255, 90, 31, 0) 94%, transparent 100%);
	box-shadow: 0 0 18px 2px rgba(255, 90, 31, .35);
	animation: fm-scan 7.5s cubic-bezier(.45, 0, .55, 1) infinite;
	opacity: .75;
}
@keyframes fm-scan {
	0% { transform: translateY(8vh); opacity: 0; }
	12% { opacity: .75; }
	88% { opacity: .75; }
	100% { transform: translateY(92vh); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) { .fm-scan::after { animation: none; display: none; } }

/* ---- 사진 리빌: 왼쪽에서 오른쪽으로 깎여 나오듯 열리고, 가장자리에 시그널 선이 지나간다 ---- */
.fm-reveal { position: relative; }
.fm-reveal .elementor-widget-container { position: relative; overflow: hidden; }
html.fm-js .fm-reveal img {
	clip-path: inset(0 100% 0 0);
	transform: scale(1.06);
	transition: clip-path 1.15s cubic-bezier(.7, 0, .2, 1), transform 1.9s var(--fm-ease);
}
html.fm-js .fm-reveal .elementor-widget-container::after {
	content: ""; position: absolute; top: 0; bottom: 0; left: 0; width: 3px; background: var(--fm-sig);
	transform: translateX(-4px); opacity: 0; pointer-events: none;
}
html.fm-js .fm-reveal.is-in img { clip-path: inset(0 0 0 0); transform: none; }
html.fm-js .fm-reveal.is-in .elementor-widget-container::after { animation: fm-pass 1.15s cubic-bezier(.7, 0, .2, 1) forwards; }
@keyframes fm-pass {
	0% { left: 0; opacity: 1; }
	92% { opacity: 1; }
	100% { left: calc(100% - 3px); opacity: 0; }
}
.elementor-editor-active .fm-reveal img { clip-path: none !important; transform: none !important; }
@media (prefers-reduced-motion: reduce) {
	html.fm-js .fm-reveal img { clip-path: none; transform: none; transition: none; }
	html.fm-js .fm-reveal .elementor-widget-container::after { display: none; }
}

/* ---- 사진 호버 줌 (카드 컨테이너에 fm-zoom) ---- */
.fm-zoom .elementor-widget-image .elementor-widget-container { overflow: hidden; }
.fm-zoom img { transition: transform .9s var(--fm-ease); }
.fm-zoom:hover img { transform: scale(1.045); }

/* ---- 카드: 테두리 + 호버 시 시그널 상단선 ---- */
.fm-card { position: relative; transition: border-color .3s, transform .45s var(--fm-ease), box-shadow .45s var(--fm-ease); }
.fm-card::after { content: ""; position: absolute; left: 0; top: 0; height: 2px; width: 0; background: var(--fm-sig); transition: width .55s var(--fm-ease); }
.fm-card:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgba(14, 16, 19, .08); }
.fm-card:hover::after { width: 100%; }
@media (prefers-reduced-motion: reduce) { .fm-card, .fm-card:hover { transform: none; } }

/* ---- 데스크톱에서 왼쪽 제목 고정 (오른쪽 목록이 길 때) ---- */
@media (min-width: 1025px) {
	.fm-sticky { position: sticky; top: calc(var(--fm-hh) - 20px); align-self: flex-start; }
}

/* ---- 모바일 가로 스냅 줄 (카드가 많은 줄을 손가락으로 넘긴다) ---- */
@media (max-width: 767px) {
	.fm-snap > .e-con-inner, .fm-snap.e-con-full {
		flex-wrap: nowrap !important; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch;
		scrollbar-width: none; padding-bottom: 6px;
	}
	.fm-snap > .e-con-inner::-webkit-scrollbar, .fm-snap.e-con-full::-webkit-scrollbar { display: none; }
	.fm-snap > .e-con-inner > .e-con, .fm-snap.e-con-full > .e-con { flex: 0 0 82% !important; max-width: 82% !important; scroll-snap-align: start; }
}

/* ---- 서브 히어로 경로 · 형제 페이지 탭 (모바일은 가로로 넘긴다) ---- */
.fm-crumb-now { color: #fff; font-weight: 600; }
@media (max-width: 767px) {
	.fm-tabs { flex-wrap: nowrap !important; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
	.fm-tabs::-webkit-scrollbar { display: none; }
	.fm-tabs > .elementor-element { flex: 0 0 auto; }
}

/* ---- 산업 타일 (링크 컨테이너): 호버하면 아래 시그널 선 ---- */
.fm-tile { position: relative; overflow: hidden; text-decoration: none; }
.fm-tile::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--fm-sig); transform: scaleX(0); transform-origin: left; transition: transform .5s var(--fm-ease); z-index: 3; }
.fm-tile:hover::after, .fm-tile:focus-visible::after { transform: scaleX(1); }
.fm-tile > .elementor-element { position: relative; z-index: 2; }
.fm-tile:focus-visible { outline: 2px solid var(--fm-sig); outline-offset: 2px; }

/* ==========================================================================
   위젯
   ========================================================================== */

/* 회전 헤드라인 */
.fm-hl { margin: 0; }
.fm-hl.is-break .fm-hl__pre { display: block; }
.fm-hl__rot {
	position: relative; display: inline-block; vertical-align: top; white-space: nowrap; overflow: hidden;
	transition: width .6s var(--fm-ease); padding-bottom: .04em;
}
.fm-hl__rot::after {
	content: ""; position: absolute; left: 0; right: 0; bottom: .08em; height: .07em; min-height: 3px;
	background: var(--fm-bar, var(--fm-sig)); transform-origin: left; transition: transform .6s var(--fm-ease);
}
.fm-hl__w { display: inline-block; }
html.fm-js .fm-hl__w { position: absolute; left: 0; top: 0; transform: translateY(110%); opacity: 0; transition: transform .7s var(--fm-ease), opacity .5s; }
html.fm-js .fm-hl__w.is-on { position: relative; transform: none; opacity: 1; }
html.fm-js .fm-hl__w.is-out { transform: translateY(-110%); opacity: 0; }
html:not(.fm-js) .fm-hl__w:not(.is-on) { display: none; }
@media (prefers-reduced-motion: reduce) { html.fm-js .fm-hl__w { transition: none; } .fm-hl__rot { transition: none; } }

/* 연혁 타임라인 */
.fm-tl { --fm-tl-line: var(--fm-line); --fm-tl-fill: var(--fm-sig); position: relative; }
.fm-tl__list, .fm-tl__items { list-style: none; margin: 0; padding: 0; }
.fm-tl__track { position: absolute; top: 0; bottom: 0; left: 240px; width: 1px; background: var(--fm-tl-line); }
.fm-tl__fill { position: absolute; left: 0; top: 0; width: 100%; height: calc(var(--p, 0) * 100%); background: var(--fm-tl-fill); }
.fm-tl__group { display: grid; grid-template-columns: 240px minmax(0, 1fr); padding: 56px 0 8px; }
.fm-tl__group + .fm-tl__group { border-top: 1px solid var(--fm-tl-line); }
.fm-tl__year {
	margin: 0; font-size: clamp(40px, 4.2vw, 68px); font-weight: 800; line-height: 1; letter-spacing: -.04em; color: var(--fm-ink);
	font-variant-numeric: tabular-nums; align-self: start;
}
@media (min-width: 1025px) { .fm-tl__year { position: sticky; top: calc(var(--fm-hh) + 4px); } }
.fm-tl__items { padding-left: 48px; }
.fm-tl__item { position: relative; display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 0 12px; padding: 0 0 34px; }
.fm-tl__item::before {
	content: ""; position: absolute; left: -53px; top: .55em; width: 9px; height: 9px; border-radius: 50%;
	background: #fff; border: 2px solid var(--fm-tl-line); box-sizing: border-box; transition: border-color .3s, background-color .3s;
}
.fm-tl__item.is-past::before { border-color: var(--fm-tl-fill); background: var(--fm-tl-fill); }
.fm-tl__month { grid-column: 1; font-size: 15px; font-weight: 700; color: var(--fm-mute); font-variant-numeric: tabular-nums; padding-top: .2em; }
.fm-tl__body { grid-column: 2; }
.fm-tl__item:not(:has(.fm-tl__month)) .fm-tl__body { grid-column: 1 / -1; }
.fm-tl__title { margin: 0; font-size: clamp(16px, 1.15vw, 19px); font-weight: 500; line-height: 1.6; color: var(--fm-ink-2); }
.fm-tl__item.is-key .fm-tl__title { font-weight: 700; color: var(--fm-ink); }
.fm-tl__desc { margin: 6px 0 0; font-size: 15px; line-height: 1.7; color: var(--fm-mute); }
@media (max-width: 1024px) {
	.fm-tl__track { left: 6px; }
	.fm-tl__group { grid-template-columns: 1fr; padding: 40px 0 4px 34px; }
	.fm-tl__year { margin-bottom: 22px; }
	.fm-tl__items { padding-left: 0; }
	.fm-tl__item::before { left: -32px; }
	.fm-tl__item { grid-template-columns: 44px minmax(0, 1fr); padding-bottom: 26px; }
}

/* 전후 비교 슬라이더 */
.fm-cmp {
	--fm-cmp-handle: #fff; --pos: 50%;
	position: relative; overflow: hidden; aspect-ratio: 16 / 9; background: #1a1d21; user-select: none; touch-action: pan-y;
}
.fm-cmp__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; pointer-events: none; }
.fm-cmp__after { position: absolute; inset: 0; clip-path: inset(0 0 0 var(--pos)); }
.fm-cmp__line { position: absolute; top: 0; bottom: 0; left: var(--pos); width: 2px; margin-left: -1px; background: var(--fm-cmp-handle); pointer-events: none; }
.fm-cmp__knob {
	position: absolute; top: 50%; left: 50%; width: 52px; height: 52px; margin: -26px 0 0 -26px; border-radius: 50%;
	background: var(--fm-cmp-handle); box-shadow: 0 6px 24px rgba(0, 0, 0, .3);
}
.fm-cmp__knob::before, .fm-cmp__knob::after {
	content: ""; position: absolute; top: 50%; width: 0; height: 0; margin-top: -6px; border: 6px solid transparent;
}
.fm-cmp__knob::before { left: 10px; border-right-color: var(--fm-ink); }
.fm-cmp__knob::after { right: 10px; border-left-color: var(--fm-ink); }
.fm-cmp__label {
	position: absolute; top: 18px; padding: 7px 12px; font-size: 13px; font-weight: 700; letter-spacing: .04em;
	background: rgba(11, 13, 16, .78); color: #fff; pointer-events: none;
}
.fm-cmp__label--before { left: 18px; }
.fm-cmp__label--after { right: 18px; }
.fm-cmp__range { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; -webkit-appearance: none; appearance: none; }
.fm-cmp:focus-within .fm-cmp__knob { outline: 3px solid var(--fm-sig); outline-offset: 3px; }

/* 공정 스텝 */
.fm-ps { --fm-ps-line: var(--fm-line); --fm-ps-accent: var(--fm-sig-dk); display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 0 72px; }
.fm-ps__list { list-style: none; margin: 0; padding: 0; }
.fm-ps__step { padding: 44px 0 44px 28px; border-left: 2px solid var(--fm-ps-line); transition: border-color .4s; min-height: 34vh; }
.fm-ps__step.is-on { border-left-color: var(--fm-ps-accent); }
.fm-ps__meta { margin: 0 0 10px; font-size: 13px; font-weight: 700; letter-spacing: .1em; color: var(--fm-mute); transition: color .4s; }
.fm-ps__step.is-on .fm-ps__meta { color: var(--fm-ps-accent); }
.fm-ps__title { margin: 0; font-size: clamp(22px, 2vw, 32px); font-weight: 700; line-height: 1.35; letter-spacing: -.02em; color: var(--fm-ink); }
.fm-ps__desc { margin: 14px 0 0; font-size: 16px; line-height: 1.8; color: var(--fm-ink-2); max-width: 520px; }
.fm-ps__tags { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 20px 0 0; padding: 0; }
.fm-ps__tags li { padding: 6px 11px; border: 1px solid var(--fm-ps-line); font-size: 13px; font-weight: 600; color: var(--fm-ink-2); font-variant-numeric: tabular-nums; }
.fm-ps__inline { display: none; overflow: hidden; margin-bottom: 22px; }
.fm-ps__inline .fm-ps__img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fm-ps__stage { position: sticky; top: calc(var(--fm-hh) + 24px); height: 620px; overflow: hidden; background: #1a1d21; align-self: start; }
.fm-ps__frame { position: absolute; inset: 0; margin: 0; opacity: 0; transform: scale(1.04); transition: opacity .7s var(--fm-ease), transform 1.2s var(--fm-ease); }
.fm-ps__frame.is-on { opacity: 1; transform: none; }
.fm-ps__frame .fm-ps__img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fm-ps__frame figcaption {
	position: absolute; left: 20px; bottom: 18px; padding: 6px 10px; background: rgba(11, 13, 16, .78); color: #fff;
	font-size: 13px; font-weight: 700; letter-spacing: .08em; font-variant-numeric: tabular-nums;
}
@media (max-width: 1024px) {
	.fm-ps { grid-template-columns: 1fr; }
	.fm-ps__stage { display: none; }
	.fm-ps__inline { display: block; }
	.fm-ps__step { min-height: 0; padding: 36px 0 36px 22px; }
}

/* 호버 리스트 */
.fm-hv { --fm-hv-line: var(--fm-line); position: relative; }
.fm-hv__list { list-style: none; margin: 0; padding: 0; border-bottom: 1px solid var(--fm-hv-line); }
.fm-hv__row {
	display: grid; grid-template-columns: 64px minmax(0, 1fr) auto 40px; align-items: center; gap: 0 20px;
	padding: 30px 4px; border-top: 1px solid var(--fm-hv-line); color: inherit; text-decoration: none; cursor: pointer; outline-offset: -2px;
}
.fm-hv__num { font-size: 14px; font-weight: 700; color: var(--fm-mute); font-variant-numeric: tabular-nums; letter-spacing: .06em; }
.fm-hv__text { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 24px; min-width: 0; }
.fm-hv__title {
	font-size: clamp(26px, 3.2vw, 54px); font-weight: 700; line-height: 1.15; letter-spacing: -.035em; color: var(--fm-ink);
	transition: color .3s, transform .5s var(--fm-ease); display: inline-block;
}
.fm-hv__desc { font-size: 15px; line-height: 1.6; color: var(--fm-mute); }
.fm-hv__row:hover .fm-hv__title, .fm-hv__row:focus-visible .fm-hv__title { transform: translateX(14px); }
.fm-hv__thumb { display: none; width: 112px; height: 76px; overflow: hidden; }
.fm-hv__thumb .fm-hv__img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fm-hv__arrow { width: 40px; height: 40px; position: relative; }
.fm-hv__arrow::before {
	content: ""; position: absolute; left: 10px; top: 50%; width: 20px; height: 2px; background: currentColor; color: var(--fm-ink);
	transition: transform .4s var(--fm-ease);
}
.fm-hv__arrow::after {
	content: ""; position: absolute; left: 20px; top: 50%; width: 9px; height: 9px; margin-top: -4px; border-top: 2px solid var(--fm-ink); border-right: 2px solid var(--fm-ink);
	transform: rotate(45deg); transition: transform .4s var(--fm-ease);
}
.fm-hv__row:hover .fm-hv__arrow::before { transform: translateX(6px); }
.fm-hv__row:hover .fm-hv__arrow::after { transform: translateX(6px) rotate(45deg); }
.fm-hv__float {
	position: fixed; left: 0; top: 0; width: 340px; height: 230px; z-index: 50; pointer-events: none; overflow: hidden;
	opacity: 0; transform: translate3d(-9999px, 0, 0) scale(.92); transition: opacity .25s, transform .12s linear;
	box-shadow: 0 24px 60px rgba(0, 0, 0, .25);
}
.fm-hv__float.is-on { opacity: 1; }
.fm-hv__float img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fm-hv.is-dark .fm-hv__arrow::before { background: #fff; }
.fm-hv.is-dark .fm-hv__arrow::after { border-color: #fff; }
@media (max-width: 1024px), (hover: none) {
	.fm-hv__thumb { display: block; }
	.fm-hv__float { display: none; }
	.fm-hv__row { grid-template-columns: 40px minmax(0, 1fr) auto; padding: 22px 0; }
	.fm-hv__arrow { display: none; }
	.fm-hv__row:hover .fm-hv__title { transform: none; }
}
@media (max-width: 767px) {
	.fm-hv__thumb { width: 84px; height: 60px; }
	.fm-hv__row { grid-template-columns: 30px minmax(0, 1fr) auto; gap: 0 12px; }
}

/* 사양 표 */
.fm-spec { --fm-spec-line: var(--fm-line); width: 100%; overflow-x: auto; }
.fm-spec table { width: 100%; border-collapse: collapse; font-size: 16px; line-height: 1.6; }
.fm-spec caption { text-align: left; padding: 0 0 14px; font-size: 18px; font-weight: 700; color: var(--fm-ink); }
.fm-spec thead th {
	text-align: left; padding: 0 16px 12px 0; font-size: 13px; font-weight: 700; letter-spacing: .08em; color: var(--fm-mute);
	border-bottom: 2px solid var(--fm-ink);
}
.fm-spec tbody th { text-align: left; font-weight: 600; color: var(--fm-ink); width: 30%; }
.fm-spec tbody th, .fm-spec td { padding: 16px 16px 16px 0; border-bottom: 1px solid var(--fm-spec-line); vertical-align: top; }
.fm-spec td { color: var(--fm-ink-2); }
.fm-spec tr.is-hl { background: #FFF4EE; }
.fm-spec tr.is-hl th { box-shadow: inset 3px 0 0 var(--fm-sig); padding-left: 14px; }
.fm-spec__note { margin: 14px 0 0; font-size: 14px; line-height: 1.7; color: var(--fm-mute); }
@media (max-width: 767px) {
	.fm-spec thead { display: none; }
	.fm-spec table, .fm-spec tbody, .fm-spec tr, .fm-spec th, .fm-spec td { display: block; width: auto; }
	.fm-spec tr { padding: 16px 0; border-bottom: 1px solid var(--fm-spec-line); }
	.fm-spec tbody th, .fm-spec td { border: 0; padding: 2px 0; }
	.fm-spec tbody th { font-size: 16px; margin-bottom: 6px; width: auto; }   /* 데스크톱 30% 가 (0,1,2) 로 남는다 */
	.fm-spec caption { display: block; }
	.fm-spec td::before { content: attr(data-h); display: inline-block; min-width: 56px; margin-right: 10px; font-size: 12px; font-weight: 700; color: var(--fm-mute); }
	.fm-spec tr.is-hl th { box-shadow: none; padding-left: 0; }
	.fm-spec tr.is-hl { padding-left: 12px; box-shadow: inset 3px 0 0 var(--fm-sig); }
}

/* 게시판 최신글 */
.fm-lt { --fm-lt-line: var(--fm-line); list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--fm-ink); }
.fm-lt__row { display: grid; grid-template-columns: 96px minmax(0, 1fr) auto; align-items: baseline; gap: 0 18px; padding: 19px 0; border-bottom: 1px solid var(--fm-lt-line); color: inherit; text-decoration: none; }
.fm-lt__date { font-size: 14px; font-weight: 600; color: var(--fm-mute); font-variant-numeric: tabular-nums; }
.fm-lt__title { font-size: 17px; font-weight: 500; line-height: 1.5; color: var(--fm-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: color .25s; }
.fm-lt__item.is-notice .fm-lt__title { font-weight: 700; }
a.fm-lt__row:hover .fm-lt__title, a.fm-lt__row:focus-visible .fm-lt__title { color: var(--fm-sig-dk); }
.fm-lt__file { font-size: 12px; font-weight: 700; padding: 3px 8px; border: 1px solid var(--fm-lt-line); color: var(--fm-mute); }
.fm-lt__empty { margin: 0; padding: 24px 0; color: var(--fm-mute); border-top: 1px solid var(--fm-ink); }
@media (max-width: 767px) {
	.fm-lt__row { grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; padding: 16px 0; }
	.fm-lt__date { grid-column: 1 / -1; font-size: 13px; }
	.fm-lt__title { font-size: 16px; white-space: normal; }
}

/* 모바일 하단 퀵바 */
.fm-qb { display: none; }
@media (max-width: 767px) {
	.fm-qb {
		display: grid; grid-template-columns: 1fr 1.25fr 1fr; position: fixed; left: 0; right: 0; bottom: 0; z-index: 97;
		background: var(--fm-night); padding-bottom: env(safe-area-inset-bottom, 0); box-shadow: 0 -6px 24px rgba(0, 0, 0, .18);
	}
	.fm-qb__item {
		display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; min-height: 60px;
		color: #F2F3F1; fill: #F2F3F1; text-decoration: none; font-size: 13px; font-weight: 600;
	}
	.fm-qb__item.is-accent { background: var(--fm-sig); color: var(--fm-ink); fill: var(--fm-ink); }
	.fm-qb__icon { font-size: 17px; line-height: 1; }
	.fm-qb__icon svg { width: 17px; height: 17px; }
	body.fm-has-qb { padding-bottom: calc(60px + env(safe-area-inset-bottom, 0)); }
	/* 실제 고정 요소는 버튼 자신(.hfe-scroll-to-top-button, fixed). wrap 은 static 이라 효과가 없었다(독립 검증 발견) */
	body.fm-has-qb .hfe-scroll-to-top-button { bottom: 76px !important; }
	/* mobileN 백링크(mu-plugin, 인라인 bottom:8px)가 퀵바를 덮지 않게 바 위로 (10-16) */
	body.fm-has-qb #mn-backlink { bottom: calc(68px + env(safe-area-inset-bottom, 0px)) !important; }
}

/* ==========================================================================
   견적 문의 폼 (Contact Form 7 숏코드 — 숏코드 위젯의 고급 › CSS 클래스에 fm-form)
   ========================================================================== */
.fm-form .wpcf7-form p { margin: 0 0 22px; }
.fm-form .fm-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0 24px; }
@media (max-width: 767px) { .fm-form .fm-row { grid-template-columns: 1fr; } }
.fm-form .fm-label { display: block; margin-bottom: 8px; font-size: 14px; font-weight: 700; color: var(--fm-ink); }
.fm-form .fm-label em { font-style: normal; color: var(--fm-sig-dk); }
.fm-form input[type="text"], .fm-form input[type="tel"], .fm-form input[type="email"], .fm-form input[type="number"],
.fm-form input[type="date"], .fm-form select, .fm-form textarea {
	width: 100%; box-sizing: border-box; padding: 14px 16px; border: 1px solid #C9CED4; border-radius: 2px;
	background: #fff; color: var(--fm-ink); font: inherit; font-size: 16px; transition: border-color .25s, box-shadow .25s;
}
.fm-form select {
	appearance: none; background-image: linear-gradient(45deg, transparent 50%, #565E67 50%), linear-gradient(135deg, #565E67 50%, transparent 50%);
	background-position: calc(100% - 20px) 52%, calc(100% - 15px) 52%; background-size: 5px 5px, 5px 5px; background-repeat: no-repeat; padding-right: 40px;
}
.fm-form input:focus, .fm-form select:focus, .fm-form textarea:focus { outline: none; border-color: var(--fm-ink); box-shadow: inset 3px 0 0 var(--fm-sig); }
.fm-form textarea { min-height: 170px; resize: vertical; }
.fm-form ::placeholder { color: #747B84; }
.fm-form .wpcf7-checkbox .wpcf7-list-item, .fm-form .wpcf7-radio .wpcf7-list-item { margin: 0 18px 8px 0; }
.fm-form .wpcf7-checkbox label, .fm-form .wpcf7-radio label { display: inline-flex; align-items: center; gap: 8px; min-height: 32px; font-size: 15px; color: var(--fm-ink-2); cursor: pointer; }
.fm-form .wpcf7-checkbox input, .fm-form .wpcf7-radio input, .fm-form .wpcf7-acceptance input { width: 20px; height: 20px; margin: 0; accent-color: var(--fm-ink); }
.fm-form .wpcf7-acceptance .wpcf7-list-item { margin: 0; }
.fm-form .wpcf7-acceptance label { display: inline-flex; align-items: center; gap: 10px; font-size: 14px; color: var(--fm-ink-2); cursor: pointer; }
.fm-form .wpcf7-file { font-size: 15px; }
.fm-form .wpcf7-submit {
	appearance: none; border: 0; border-radius: 2px; background: var(--fm-ink); color: #fff; padding: 19px 44px;
	font: inherit; font-size: 16px; font-weight: 700; cursor: pointer; transition: background-color .25s;
}
.fm-form .wpcf7-submit:hover { background: var(--fm-sig-dk); }
.fm-form .wpcf7-submit:disabled { opacity: .45; cursor: not-allowed; }
.fm-form .wpcf7-not-valid-tip { margin-top: 6px; font-size: 13px; color: var(--fm-sig-dk); }
.fm-form .wpcf7 form .wpcf7-response-output { margin: 18px 0 0; padding: 14px 18px; border-radius: 2px; font-size: 14px; }
.fm-form .wpcf7-spinner { vertical-align: middle; }
.fm-form .fm-note { font-size: 13px; color: var(--fm-mute); margin: -10px 0 20px; }
