/**
 * main.scss
 * 프로젝트의 스타일 메인 엔트리 파일
 * Tailwind CSS와 방법론(Elements, Modules, Patterns) 컴포넌트 레이어를 격리하여 컴파일합니다.
 */

/* 1. Tailwind 및 변수 임포트 (모든 @import는 파일 최상단에 모여야 함)*/

*, ::before, ::after{
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop{
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
 */

/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e0e0e0; /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
  -moz-tab-size: 4; /* 3 */
  -o-tab-size: 4;
     tab-size: 4; /* 3 */
  font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */
  font-feature-settings: normal; /* 5 */
  font-variation-settings: normal; /* 6 */
  -webkit-tap-highlight-color: transparent; /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
  margin: 0; /* 1 */
  line-height: inherit; /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
  border-top-width: 1px; /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

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

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

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

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */
  font-feature-settings: normal; /* 2 */
  font-variation-settings: normal; /* 3 */
  font-size: 1em; /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
  border-collapse: collapse; /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-feature-settings: inherit; /* 1 */
  font-variation-settings: inherit; /* 1 */
  font-size: 100%; /* 1 */
  font-weight: inherit; /* 1 */
  line-height: inherit; /* 1 */
  letter-spacing: inherit; /* 1 */
  color: inherit; /* 1 */
  margin: 0; /* 2 */
  padding: 0; /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button; /* 1 */
  background-color: transparent; /* 2 */
  background-image: none; /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

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

/*
Reset default styling for dialogs.
*/

dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1; /* 1 */
  color: #cbcbcb; /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1; /* 1 */
  color: #cbcbcb; /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/

:disabled {
  cursor: default;
}

/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

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

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

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

/* Make elements with the HTML hidden attribute stay hidden by default */

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

/**
 * _fonts.scss
 * 웹폰트 선언 파일 (롯데마트 더 잠실체 The Jamsil 웹폰트 세트)
 * 눈누(https://noonnu.cc/font_page/1127) 2302 배포본을 로컬 저장 — 폐쇄망 대응 (../../font/the-jamsil/)
 */

/**
 * 롯데마트 더 잠실체 (The Jamsil) - 1Thin ~ 6ExtraBold (100 ~ 800) 굵기 세분화 매핑
 */

@font-face {
  font-family: 'The Jamsil';
  font-weight: 100;
  font-style: normal;
  font-display: swap;
  src: url('../../font/the-jamsil/TheJamsil1Thin.woff2') format('woff2');
}

@font-face {
  font-family: 'The Jamsil';
  font-weight: 300;
  font-style: normal;
  font-display: swap;
  src: url('../../font/the-jamsil/TheJamsil2Light.woff2') format('woff2');
}

@font-face {
  font-family: 'The Jamsil';
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  src: url('../../font/the-jamsil/TheJamsil3Regular.woff2') format('woff2');
}

@font-face {
  font-family: 'The Jamsil';
  font-weight: 500;
  font-style: normal;
  font-display: swap;
  src: url('../../font/the-jamsil/TheJamsil4Medium.woff2') format('woff2');
}

@font-face {
  font-family: 'The Jamsil';
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  src: url('../../font/the-jamsil/TheJamsil5Bold.woff2') format('woff2');
}

@font-face {
  font-family: 'The Jamsil';
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  src: url('../../font/the-jamsil/TheJamsil5Bold.woff2') format('woff2');
}

@font-face {
  font-family: 'The Jamsil';
  font-weight: 800;
  font-style: normal;
  font-display: swap;
  src: url('../../font/the-jamsil/TheJamsil6ExtraBold.woff2') format('woff2');
}

/* 본문 기본 서체 + 테마 전환 트랜지션 (index.html 인라인 \3c style>에서 이관) */

body {
  font-family: 'Pretendard Variable', 'Pretendard', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  transition: background-color 0.3s ease, color 0.3s ease;
}

/* 폰트 렌더링 선명도 보정 */

body, button, input, select, textarea {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/**
 * _tokens.scss
 * Figma Variables Export(variables.json) 1:1 변환 디자인 토큰
 * 원본: variables.json (version 1.0.4)
 *
 * [역할] 신규 Figma 디자인 시스템의 기반(Primitive + Semantic) 레이어.
 *   - 신규 화면은 이 파일의 토큰(--button-primary-fill, --text-default 등)을 직접 사용한다.
 *   - main.scss에서 _variables.scss보다 "먼저" import 된다.
 *
 * [radius 이름 충돌 정책] ⚠️
 *   --radius-sm/md/lg/xl/2xl 는 기존 _variables.scss와 이름이 겹치나 값이 다르다.
 *   기존 화면 보호를 위해 _variables.scss(나중에 로드)의 "구(舊) 값"이 우선한다.
 *   → 기존 컴포넌트: 그대로 유지 (sm2 / md4 / lg5 / xl8 / 2xl10 px)
 *   → 신규 화면에서 Figma radius 스케일이 필요하면 충돌 없는
 *     --radius-fig-* 별칭(하단 정의)을 사용한다.
 *
 * [Token 구조 — variables.json 컬렉션 매핑]
 * Primitive  : gray / alpha-white / alpha-black / blue / cyan / red 원시 색상 스케일
 * Semantic   : text / background / border / input / chip / element / button / tab (Light 모드)
 * Spacing & Radius : spacing / radius / size-height (px)
 * Typography : display, title, body, label 스타일 (size / weight / line-height / letter-spacing)
 * Effects    : Shadow sm / md / lg / xl (Drop Shadow)
 */

:root {

  /* ─────────────────────────────────────────────────────────────*/
  /* Primitive — Gray*/
  /* ─────────────────────────────────────────────────────────────*/
  --gray-0: #FFFFFF;
  --gray-50: #FCFCFD;
  --gray-100: #F8F9FB;
  --gray-200: #F2F3F8;
  --gray-300: #DCE0EA;
  --gray-400: #CBD1DC;
  --gray-500: #929AAA;
  --gray-600: #4A5667;
  --gray-700: #262F3C;
  --gray-800: #141A24;
  --gray-900: #090C10;
  --gray-1000: #000000;

  /* Primitive — Alpha White / Alpha Black*/
  --alpha-white-0: #FFFFFF00;
  --alpha-white-20: #FFFFFF33;
  --alpha-white-40: #FFFFFF66;
  --alpha-white-60: #FFFFFF99;
  --alpha-white-80: #FFFFFFCC;
  --alpha-white-100: #FFFFFF;

  --alpha-black-0: #00000000;
  --alpha-black-20: #00000033;
  --alpha-black-40: #00000066;
  --alpha-black-60: #00000099;
  --alpha-black-80: #000000CC;
  --alpha-black-100: #000000;

  /* Primitive — Blue*/
  --blue-0: #FFFFFF;
  --blue-50: #F5F8FF;
  --blue-100: #D8E1FE;
  --blue-200: #9BB4FB;
  --blue-300: #7096FA;
  --blue-400: #5481FA;
  --blue-500: #396CFA;
  --blue-600: #2E56C8;
  --blue-700: #234197;
  --blue-800: #182C65;
  --blue-900: #1F2C42;
  --blue-1000: #000000;

  /* Primitive — Cyan*/
  --cyan-0: #FFFFFF;
  --cyan-50: #E6F7FB;
  --cyan-100: #B3E8F2;
  --cyan-200: #80D9E9;
  --cyan-300: #4DC9E0;
  --cyan-400: #26B5D3;
  --cyan-500: #01A1C5;
  --cyan-600: #01819E;
  --cyan-700: #016177;
  --cyan-800: #004150;
  --cyan-900: #002530;
  --cyan-1000: #000000;

  /* Primitive — Red*/
  --red-0: #FFFFFF;
  --red-50: #FCDEE0;
  --red-100: #FAC7C9;
  --red-200: #F69CA1;
  --red-300: #F47C81;
  --red-400: #EF4850;
  --red-500: #D0121B;
  --red-600: #A80F1C;
  --red-700: #750A0F;
  --red-800: #5E080C;
  --red-900: #3D0508;
  --red-1000: #000000;

  /* ─────────────────────────────────────────────────────────────*/
  /* Semantic (Light) — Text*/
  /* ─────────────────────────────────────────────────────────────*/
  --text-bolder: var(--gray-900);
  --text-bold: var(--gray-700);
  --text-default: var(--gray-600);
  --text-muted: var(--gray-500);
  --text-tertiary: var(--gray-400);
  --text-disabled: var(--gray-500);
  --text-inverse: var(--gray-0);
  --text-primary: var(--blue-500);
  --text-danger: var(--red-500);

  /* Semantic — Background*/
  --background-default: var(--gray-0);
  --background-subtle: var(--gray-100);
  --background-muted: var(--gray-200);
  --background-primary: var(--blue-500);
  --background-primary-subtle: var(--blue-100);
  --background-primary-subtler: var(--blue-50);
  --background-blue-darker: var(--blue-900);
  --background-dim: var(--alpha-black-80);
  --background-dim-navy: #050E20E6;          /* 사이트맵 딤 (Figma rgba(5,14,32,0.9))*/

  /* Semantic — Border*/
  --border-default: var(--gray-300);
  --border-default-strong: var(--gray-400);
  --border-strong: var(--gray-500);
  --border-strong-dark: var(--gray-600);
  --border-strong-darker: var(--gray-800);

  /* Semantic — Input*/
  --input-border: var(--gray-300);
  --input-border-active: var(--gray-400);
  --input-border-disabled: var(--gray-300);
  --input-border-error: var(--red-500);
  --input-surface: var(--gray-0);
  --input-surface-disabled: var(--gray-100);

  /* Semantic — Chip*/
  --chip-secondary-border: var(--gray-400);
  --chip-secondary-border-active: var(--gray-700);
  --chip-secondary-fill: var(--alpha-white-0);
  --chip-secondary-fill-active: var(--gray-700);
  --chip-primary-fill: var(--gray-300);
  --chip-primary-fill-active: var(--blue-500);

  /* Semantic — Element*/
  --element-primary: var(--blue-500);
  --element-primary-light: var(--blue-100);
  --element-primary-lighter: var(--blue-50);
  --element-primary-dark: var(--blue-800);
  --element-primary-darker: var(--blue-900);
  --element-secondary: var(--cyan-500);
  --element-secondary-light: var(--cyan-100);
  --element-secondary-lighter: var(--cyan-50);
  --element-gray: var(--gray-500);
  --element-gray-light: var(--gray-300);
  --element-gray-lighter: var(--gray-200);

  /* Semantic — Button*/
  --button-primary-fill: var(--blue-500);
  --button-primary-fill-hover: var(--blue-600);
  --button-primary-fill-pressed: var(--blue-700);
  --button-secondary-border: var(--gray-400);
  --button-secondary-border-hover: var(--gray-500);
  --button-secondary-border-pressed: var(--gray-600);
  --button-tertiary-border: var(--gray-600);
  --button-tertiary-border-hover: var(--gray-700);
  --button-tertiary-border-pressed: var(--gray-800);
  --button-tertiary-fill: var(--gray-50);
  --button-tertiary-fill-hover: var(--gray-100);
  --button-tertiary-fill-pressed: var(--gray-200);
  --button-danger-border: var(--red-500);
  --button-danger-border-hover: var(--red-600);
  --button-danger-border-pressed: var(--red-800);
  --button-disabled-fill: var(--gray-200);
  --button-disabled-border: var(--gray-400);

  /* Semantic — Tab*/
  --tab-active: var(--blue-900);
  --tab-inactive: var(--gray-300);
  --tab-tertiary-active: var(--blue-500);

  /* ─────────────────────────────────────────────────────────────*/
  /* Spacing (Figma: Spacing & Radius / spacing)*/
  /* ─────────────────────────────────────────────────────────────*/
  --spacing-0: 0px;
  --spacing-2: 2px;
  --spacing-4: 4px;
  --spacing-8: 8px;
  --spacing-12: 12px;
  --spacing-16: 16px;
  --spacing-18: 18px;
  --spacing-20: 20px;
  --spacing-24: 24px;
  --spacing-32: 32px;
  --spacing-40: 40px;
  --spacing-48: 48px;
  --spacing-64: 64px;
  --spacing-80: 80px;

  /* ─────────────────────────────────────────────────────────────*/
  /* Radius (Figma 스케일) — 충돌 없는 별칭*/
  /* 기존 _variables.scss와 이름이 겹치는 sm/md/lg/xl/2xl 은 뒤에서 구(舊) 값으로*/
  /* 재정의되므로, 신규 Figma radius가 필요한 화면은 아래 --radius-fig-* 를 사용한다.*/
  /* ─────────────────────────────────────────────────────────────*/
  --radius-fig-none: 0px;
  --radius-fig-xs: 2px;
  --radius-fig-sm: 4px;
  --radius-fig-md: 8px;
  --radius-fig-lg: 12px;
  --radius-fig-xl: 16px;
  --radius-fig-2xl: 24px;
  --radius-fig-3xl: 32px;
  --radius-fig-circle: 9999px;
  /* 신규 전용(구 파일에 없는 값)은 표준 이름 그대로도 노출*/
  --radius-xs: 2px;
  --radius-3xl: 32px;
  --radius-circle: 9999px;

  /* Size Height*/
  --size-height-1: 1px;
  --size-height-2: 2px;
  --size-height-3: 3px;
  --size-height-4: 4px;
  --size-height-8: 8px;
  --size-height-10: 10px;
  --size-height-12: 12px;
  --size-height-14: 14px;
  --size-height-16: 16px;
  --size-height-17: 17px;
  --size-height-18: 18px;
  --size-height-20: 20px;
  --size-height-24: 24px;
  --size-height-28: 28px;
  --size-height-30: 30px;
  --size-height-32: 32px;
  --size-height-40: 40px;
  --size-height-48: 48px;
  --size-height-50: 50px;
  --size-height-56: 56px;
  --size-height-60: 60px;
  --size-height-70: 70px;
  --size-height-80: 80px;
  --size-height-90: 90px;

  /* ─────────────────────────────────────────────────────────────*/
  /* Typography (Figma: Typography / Style)*/
  /* font-weight 매핑: "6 ExtraBold"→800, "5 Bold"/"Bold"→700, "Medium"→500, "Regular"→400*/
  /* line-height 150% → 1.5(unitless), letter-spacing n% → n/100 em*/
  /* font-size는 16px 기준 rem 환산 (기존 _variables.scss와 동일 기준)*/
  /* ─────────────────────────────────────────────────────────────*/
  --font-family-jamsil: 'The Jamsil', sans-serif;
  --font-family-pretendard: 'Pretendard', 'Pretendard GOV', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  /* Display*/
  --font-display-large-size: 4.75rem;      /* 76px*/
  --font-display-large-weight: 800;
  --font-display-large-line-height: 1.5;
  --font-display-large-letter-spacing: 0em;
  --font-display-large-family: var(--font-family-jamsil);

  --font-display-medium-size: 3.75rem;     /* 60px*/
  --font-display-medium-weight: 700;
  --font-display-medium-line-height: 1.5;
  --font-display-medium-letter-spacing: 0em;
  --font-display-medium-family: var(--font-family-jamsil);

  --font-display-small-size: 3rem;         /* 48px*/
  --font-display-small-weight: 700;
  --font-display-small-line-height: 1.5;
  --font-display-small-letter-spacing: 0em;
  --font-display-small-family: var(--font-family-jamsil);

  /* Title*/
  --font-title-xxlarge-size: 3.25rem;      /* 52px*/
  --font-title-xxlarge-weight: 700;
  --font-title-xxlarge-line-height: 1.5;
  --font-title-xxlarge-letter-spacing: -0.01em;
  --font-title-xxlarge-family: var(--font-family-pretendard);

  --font-title-xlarge-size: 2.5rem;        /* 40px*/
  --font-title-xlarge-weight: 700;
  --font-title-xlarge-line-height: 1.5;
  --font-title-xlarge-letter-spacing: -0.01em;
  --font-title-xlarge-family: var(--font-family-pretendard);

  --font-title-large-size: 2rem;           /* 32px*/
  --font-title-large-weight: 700;
  --font-title-large-line-height: 1.5;
  --font-title-large-letter-spacing: -0.01em;
  --font-title-large-family: var(--font-family-pretendard);

  --font-title-medium-size: 1.75rem;       /* 28px*/
  --font-title-medium-weight: 700;
  --font-title-medium-line-height: 1.5;
  --font-title-medium-letter-spacing: -0.01em;
  --font-title-medium-family: var(--font-family-pretendard);

  --font-title-small-size: 1.5rem;         /* 24px*/
  --font-title-small-weight: 700;
  --font-title-small-line-height: 1.5;
  --font-title-small-letter-spacing: -0.01em;
  --font-title-small-family: var(--font-family-pretendard);

  --font-title-xsmall-size: 1.25rem;       /* 20px*/
  --font-title-xsmall-weight: 700;
  --font-title-xsmall-line-height: 1.5;
  --font-title-xsmall-letter-spacing: -0.01em;
  --font-title-xsmall-family: var(--font-family-pretendard);

  --font-title-xxsmall-size: 1.125rem;     /* 18px*/
  --font-title-xxsmall-weight: 700;
  --font-title-xxsmall-line-height: 1.5;
  --font-title-xxsmall-letter-spacing: -0.01em;
  --font-title-xxsmall-family: var(--font-family-pretendard);

  /* Body*/
  --font-body-large-bold-size: 1.0625rem;      /* 17px*/
  --font-body-large-bold-weight: 700;
  --font-body-large-bold-line-height: 1.5;
  --font-body-large-bold-letter-spacing: -0.01em;
  --font-body-large-bold-family: var(--font-family-pretendard);

  --font-body-large-medium-size: 1.0625rem;
  --font-body-large-medium-weight: 500;
  --font-body-large-medium-line-height: 1.5;
  --font-body-large-medium-letter-spacing: -0.01em;
  --font-body-large-medium-family: var(--font-family-pretendard);

  --font-body-large-regular-size: 1.0625rem;
  --font-body-large-regular-weight: 400;
  --font-body-large-regular-line-height: 1.5;
  --font-body-large-regular-letter-spacing: -0.01em;
  --font-body-large-regular-family: var(--font-family-pretendard);

  --font-body-medium-bold-size: 1rem;          /* 16px*/
  --font-body-medium-bold-weight: 700;
  --font-body-medium-bold-line-height: 1.5;
  --font-body-medium-bold-letter-spacing: -0.01em;
  --font-body-medium-bold-family: var(--font-family-pretendard);

  --font-body-medium-medium-size: 1rem;
  --font-body-medium-medium-weight: 500;
  --font-body-medium-medium-line-height: 1.5;
  --font-body-medium-medium-letter-spacing: -0.01em;
  --font-body-medium-medium-family: var(--font-family-pretendard);

  --font-body-medium-regular-size: 1rem;
  --font-body-medium-regular-weight: 400;
  --font-body-medium-regular-line-height: 1.5;
  --font-body-medium-regular-letter-spacing: -0.01em;
  --font-body-medium-regular-family: var(--font-family-pretendard);

  --font-body-small-bold-size: 0.9375rem;      /* 15px*/
  --font-body-small-bold-weight: 700;
  --font-body-small-bold-line-height: 1.5;
  --font-body-small-bold-letter-spacing: -0.01em;
  --font-body-small-bold-family: var(--font-family-pretendard);

  --font-body-small-medium-size: 0.9375rem;
  --font-body-small-medium-weight: 500;
  --font-body-small-medium-line-height: 1.5;
  --font-body-small-medium-letter-spacing: -0.01em;
  --font-body-small-medium-family: var(--font-family-pretendard);

  --font-body-small-regular-size: 0.9375rem;
  --font-body-small-regular-weight: 400;
  --font-body-small-regular-line-height: 1.5;
  --font-body-small-regular-letter-spacing: -0.01em;
  --font-body-small-regular-family: var(--font-family-pretendard);

  --font-body-xsmall-bold-size: 0.875rem;      /* 14px*/
  --font-body-xsmall-bold-weight: 700;
  --font-body-xsmall-bold-line-height: 1.5;
  --font-body-xsmall-bold-letter-spacing: -0.01em;
  --font-body-xsmall-bold-family: var(--font-family-pretendard);

  --font-body-xsmall-medium-size: 0.875rem;
  --font-body-xsmall-medium-weight: 500;
  --font-body-xsmall-medium-line-height: 1.5;
  --font-body-xsmall-medium-letter-spacing: -0.01em;
  --font-body-xsmall-medium-family: var(--font-family-pretendard);

  --font-body-xsmall-regular-size: 0.875rem;
  --font-body-xsmall-regular-weight: 400;
  --font-body-xsmall-regular-line-height: 1.5;
  --font-body-xsmall-regular-letter-spacing: -0.01em;
  --font-body-xsmall-regular-family: var(--font-family-pretendard);

  --font-body-xxsmall-bold-size: 0.8125rem;    /* 13px*/
  --font-body-xxsmall-bold-weight: 700;
  --font-body-xxsmall-bold-line-height: 1.5;
  --font-body-xxsmall-bold-letter-spacing: -0.01em;
  --font-body-xxsmall-bold-family: var(--font-family-pretendard);

  --font-body-xxsmall-medium-size: 0.8125rem;
  --font-body-xxsmall-medium-weight: 500;
  --font-body-xxsmall-medium-line-height: 1.5;
  --font-body-xxsmall-medium-letter-spacing: -0.01em;
  --font-body-xxsmall-medium-family: var(--font-family-pretendard);

  --font-body-xxsmall-regular-size: 0.8125rem;
  --font-body-xxsmall-regular-weight: 400;
  --font-body-xxsmall-regular-line-height: 1.5;
  --font-body-xxsmall-regular-letter-spacing: -0.01em;
  --font-body-xxsmall-regular-family: var(--font-family-pretendard);

  /* Label*/
  --font-label-large-bold-size: 0.9375rem;     /* 15px*/
  --font-label-large-bold-weight: 700;
  --font-label-large-bold-line-height: 1.5;
  --font-label-large-bold-letter-spacing: -0.01em;
  --font-label-large-bold-family: var(--font-family-pretendard);

  --font-label-large-medium-size: 0.9375rem;
  --font-label-large-medium-weight: 500;
  --font-label-large-medium-line-height: 1.5;
  --font-label-large-medium-letter-spacing: -0.01em;
  --font-label-large-medium-family: var(--font-family-pretendard);

  --font-label-large-regular-size: 0.9375rem;
  --font-label-large-regular-weight: 400;
  --font-label-large-regular-line-height: 1.5;
  --font-label-large-regular-letter-spacing: -0.01em;
  --font-label-large-regular-family: var(--font-family-pretendard);

  --font-label-medium-bold-size: 0.875rem;     /* 14px*/
  --font-label-medium-bold-weight: 700;
  --font-label-medium-bold-line-height: 1.5;
  --font-label-medium-bold-letter-spacing: -0.01em;
  --font-label-medium-bold-family: var(--font-family-pretendard);

  --font-label-medium-medium-size: 0.875rem;
  --font-label-medium-medium-weight: 500;
  --font-label-medium-medium-line-height: 1.5;
  --font-label-medium-medium-letter-spacing: -0.01em;
  --font-label-medium-medium-family: var(--font-family-pretendard);

  --font-label-medium-regular-size: 0.875rem;
  --font-label-medium-regular-weight: 400;
  --font-label-medium-regular-line-height: 1.5;
  --font-label-medium-regular-letter-spacing: -0.01em;
  --font-label-medium-regular-family: var(--font-family-pretendard);

  --font-label-small-bold-size: 0.8125rem;     /* 13px*/
  --font-label-small-bold-weight: 700;
  --font-label-small-bold-line-height: 1.5;
  --font-label-small-bold-letter-spacing: -0.01em;
  --font-label-small-bold-family: var(--font-family-pretendard);

  --font-label-small-medium-size: 0.8125rem;
  --font-label-small-medium-weight: 500;
  --font-label-small-medium-line-height: 1.5;
  --font-label-small-medium-letter-spacing: -0.01em;
  --font-label-small-medium-family: var(--font-family-pretendard);

  --font-label-small-regular-size: 0.8125rem;
  --font-label-small-regular-weight: 400;
  --font-label-small-regular-line-height: 1.5;
  --font-label-small-regular-letter-spacing: -0.01em;
  --font-label-small-regular-family: var(--font-family-pretendard);

  /* ─────────────────────────────────────────────────────────────*/
  /* Effects (Figma: Effects / Style) — Drop Shadow*/
  /* ─────────────────────────────────────────────────────────────*/
  --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05), 0 0 2px 0 rgba(0, 0, 0, 0.05);
  --shadow-md: 0 4px 8px 0 rgba(0, 0, 0, 0.08), 0 0 2px 0 rgba(0, 0, 0, 0.05);
  --shadow-lg: 0 8px 16px 0 rgba(0, 0, 0, 0.12), 0 0 2px 0 rgba(0, 0, 0, 0.08);
  --shadow-xl: 0 16px 24px 0 rgba(0, 0, 0, 0.12), 0 0 2px 0 rgba(0, 0, 0, 0.08);
}

/* ─────────────────────────────────────────────────────────────*/

/* Typography Mixin — 위 커스텀 프로퍼티를 한 번에 적용*/

/* ※ 이 프로젝트는 Sass가 아닌 postcss-mixins 기반 (_mixins.scss 참조)*/

/* 사용 예:  .el-title { @mixin font-style title-large; }*/

/* ─────────────────────────────────────────────────────────────*/

/* 신규 Figma 디자인 시스템 토큰 (기반)*/

/**
 * _variables.scss
 * 최상위 CSS Custom Properties (CSS Variables) 선언 파일
 * Figma Design Token 기준으로 정의됩니다.
 * Tailwind CSS 투명도 연동을 위해 RGB 값도 함께 제공합니다.
 *
 * [Token 구조]
 * brand     : 브랜드 주/보조 색상 (primary blue, navy)
 * status    : 상태 색상 (success, warning, error, info, disabled)
 * neutral   : 배경, 텍스트, 표면
 * text      : 텍스트 계열 전용
 * border    : 테두리 계열
 * bg        : 배경 계열
 * component : 컴포넌트 전용 토큰 (button, badge, alert, form, tab)
 * spacing   : 간격, 크기, radius
 * typography: 폰트 크기, 굵기, 행간
 */

:root {

  /* ─────────────────────────────────────────────────────────────*/
  /* Brand Colors (Figma: brand)*/
  /* ─────────────────────────────────────────────────────────────*/
  --color-primary-rgb: 57 108 250;          /* #396CFA (= --blue-500) - 메인 파랑*/
  --color-primary-hover-rgb: 46 86 200;     /* #2E56C8 (= --blue-600) - 파랑 호버*/
  --color-navy-rgb: 27 43 67;               /* #1B2B43 - 네이비 (보조 브랜드)*/
  --color-navy-hover-rgb: 18 30 48;         /* #121e30 - 네이비 호버*/

  --color-primary: rgb(var(--color-primary-rgb));
  --color-primary-hover: rgb(var(--color-primary-hover-rgb));
  --color-navy: rgb(var(--color-navy-rgb));
  --color-navy-hover: rgb(var(--color-navy-hover-rgb));

  /* ─────────────────────────────────────────────────────────────*/
  /* Status Colors (Figma: semantic)*/
  /* ─────────────────────────────────────────────────────────────*/
  --color-success-rgb: 43 138 62;           /* #2b8a3e*/
  --color-success-bg-rgb: 232 245 235;      /* #e8f5eb*/
  --color-success-text-rgb: 43 138 62;      /* #2b8a3e*/

  --color-warning-rgb: 225 98 24;           /* #e16218*/
  --color-warning-bg-rgb: 255 248 240;      /* #fff8f0*/
  --color-warning-text-rgb: 225 98 24;      /* #e16218*/

  --color-error-rgb: 235 42 41;             /* #eb2a29*/
  --color-error-alt-rgb: 235 0 4;           /* #eb0004 (아웃라인 버튼용)*/
  --color-error-bg-rgb: 255 245 245;        /* #fff5f5*/
  --color-error-text-rgb: 235 42 41;        /* #eb2a29*/

  --color-info-rgb: 57 108 250;             /* #396CFA (primary와 동일)*/
  --color-info-bg-rgb: 241 247 255;         /* #f1f7ff*/
  --color-info-text-rgb: 57 108 250;        /* #396CFA*/

  --color-muted-rgb: 96 114 136;            /* #607288*/
  --color-muted-bg-rgb: 240 243 246;        /* #f0f3f6*/

  --color-disabled-rgb: 170 170 170;        /* #aaaaaa*/

  --color-success: rgb(var(--color-success-rgb));
  --color-success-bg: rgb(var(--color-success-bg-rgb));
  --color-success-text: rgb(var(--color-success-text-rgb));
  --color-warning: rgb(var(--color-warning-rgb));
  --color-warning-bg: rgb(var(--color-warning-bg-rgb));
  --color-warning-text: rgb(var(--color-warning-text-rgb));
  --color-error: rgb(var(--color-error-rgb));
  --color-error-alt: rgb(var(--color-error-alt-rgb));
  --color-error-bg: rgb(var(--color-error-bg-rgb));
  --color-error-text: rgb(var(--color-error-text-rgb));
  /* 흰 바탕 위 상태 텍스트용 진한 단계 (15px Bold 제목도 AA 4.5:1 이상) — 토스트 제목*/
  --color-success-strong: #237a36;          /* 5.4:1 (기본 #2b8a3e 는 4.4:1)*/
  --color-warning-strong: #b8520f;          /* 4.9:1 (기본 #e16218 는 3.5:1)*/
  --color-info: rgb(var(--color-info-rgb));
  --color-info-bg: rgb(var(--color-info-bg-rgb));
  --color-info-text: rgb(var(--color-info-text-rgb));
  --color-muted: rgb(var(--color-muted-rgb));
  --color-muted-bg: rgb(var(--color-muted-bg-rgb));
  --color-disabled: rgb(var(--color-disabled-rgb));

  /* ─────────────────────────────────────────────────────────────*/
  /* Neutral (Figma: neutral)*/
  /* ─────────────────────────────────────────────────────────────*/
  --color-white: #ffffff;
  --color-black: #000000;

  --color-gray-50:  #f8f9fa;
  --color-gray-100: #f0f0f0;
  --color-gray-200: #e0e0e0;
  --color-gray-300: #d5d5d5;
  --color-gray-400: #cbcbcb;
  --color-gray-500: #aaaaaa;
  --color-gray-600: #888888;
  --color-gray-700: #555555;
  --color-gray-800: #333333;
  --color-gray-900: #111111;

  /* ─────────────────────────────────────────────────────────────*/
  /* Background (Figma: bg)*/
  /* ─────────────────────────────────────────────────────────────*/
  --color-bg-rgb: 255 255 255;              /* #ffffff - 페이지 배경*/
  --color-surface-rgb: 255 255 255;         /* #ffffff - 카드/표면*/
  --color-bg-hover-rgb: 247 247 247;        /* #f7f7f7 - 호버 배경*/
  --color-bg-dark-rgb: 0 6 30;              /* #00061e - 푸터 배경*/
  --color-bg-input-disabled-rgb: 245 245 245; /* #f5f5f5*/
  --color-bg-subtle-rgb: 248 249 251;         /* #f8f9fb - 인증/계정 페이지 카드 밖 배경*/

  --color-bg-subtle: rgb(var(--color-bg-subtle-rgb));
  --color-bg: rgb(var(--color-bg-rgb));
  --color-surface: rgb(var(--color-surface-rgb));
  --color-bg-hover: rgb(var(--color-bg-hover-rgb));
  --color-bg-dark: rgb(var(--color-bg-dark-rgb));

  /* ─────────────────────────────────────────────────────────────*/
  /* Text (Figma: text)*/
  /* ─────────────────────────────────────────────────────────────*/
  --color-text-primary-rgb: 17 17 17;       /* #111*/
  --color-text-secondary-rgb: 34 34 34;     /* #222*/
  --color-text-body-rgb: 85 85 85;          /* #555*/
  --color-text-muted-rgb: 136 136 136;      /* #888*/
  --color-text-disabled-rgb: 170 170 170;   /* #aaa*/
  --color-text-hint-rgb: 91 97 122;         /* #5b617a (폼 힌트)*/

  --color-text-primary: rgb(var(--color-text-primary-rgb));
  --color-text-secondary: rgb(var(--color-text-secondary-rgb));
  --color-text-body: rgb(var(--color-text-body-rgb));
  --color-text-muted: rgb(var(--color-text-muted-rgb));
  --color-text-disabled: rgb(var(--color-text-disabled-rgb));
  --color-text-hint: rgb(var(--color-text-hint-rgb));

  /* ─────────────────────────────────────────────────────────────*/
  /* Border (Figma: border)*/
  /* ─────────────────────────────────────────────────────────────*/
  --color-border-default: #e0e0e0;
  --color-border-strong: #d0d0d0;
  --color-border-form: #dadcde;
  --color-border-focus: var(--color-primary);
  --color-border-navy: var(--color-navy);
  --color-border-danger: var(--color-error-alt);
  --color-border-disabled: #d5d5d5;

  /* ─────────────────────────────────────────────────────────────*/
  /* Typography (Figma: font-size, font-weight)*/
  /* ─────────────────────────────────────────────────────────────*/
  --font-family-base: 'Pretendard', 'Pretendard GOV', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-family-title: 'The Jamsil', var(--font-family-base);


  --font-size-h1: 4rem;         /* 64px*/
  --font-size-h2: 2.875rem;     /* 46px*/
  --font-size-h3: 1.875rem;     /* 30px*/
  --font-size-h4: 1.5625rem;    /* 25px*/
  --font-size-xl: 1.375rem;     /* 22px*/
  --font-size-lg: 1.125rem;     /* 18px*/
  --font-size-md: 1.0625rem;    /* 17px (기본 본문)*/
  --font-size-sm: 1rem;         /* 16px*/
  --font-size-xs: 0.9375rem;    /* 15px*/
  --font-size-xxs: 0.8125rem;   /* 13px*/

  --font-weight-bold: 700;
  --font-weight-semibold: 600;
  --font-weight-medium: 500;
  --font-weight-regular: 400;

  --line-height-tight: 1.2;
  --line-height-normal: 1.4;
  --line-height-relaxed: 1.5;

  --letter-spacing-tight: -0.034em;  /* -0.34px (17px 기준)*/
  --letter-spacing-body: -0.016em;   /* -0.16px*/
  --letter-spacing-normal: 0;

  /* ─────────────────────────────────────────────────────────────*/
  /* Breakpoints*/
  /* PC: 1280px 이상 / 태블릿: 768px~1279px / 모바일: 767px 이하*/
  /* ※ CSS Variables는 미디어쿼리에 직접 사용 불가 → _mixins.scss 참조*/
  /* ─────────────────────────────────────────────────────────────*/
  --bp-mobile-max:   767px;
  --bp-tablet-min:   768px;
  --bp-tablet-max:   1279px;
  --bp-desktop-min:  1280px;

  /* ─────────────────────────────────────────────────────────────*/
  /* Spacing & Sizing (Figma: spacing, radius, size)*/
  /* ─────────────────────────────────────────────────────────────*/
  --radius-sm: 0.125rem;    /* 2px  - 배지*/
  --radius-md: 0.25rem;     /* 4px  - 버튼, 카드, 탭*/
  --radius-lg: 0.3125rem;   /* 5px  - 인풋*/
  --radius-xl: 0.5rem;      /* 8px  - 아이콘 뱃지*/
  --radius-2xl: 0.625rem;   /* 10px - 정보박스, 카드*/
  --radius-full: 9999px;    /* pill - 로그인 버튼, 스텝*/

  --radius-global: var(--radius-md); /* 전역 기본값 4px*/

  --size-header-height: 80px;                       /* 메인 GNB 바 높이*/
  --size-topbar-height: 40px;                       /* 상단 유틸리티 바 높이*/
  --size-header-total: 120px;                        /* 유틸바 + GNB 합산 오프셋 (40 + 80)*/
  --size-inner-xl: 1760px;                           /* 와이드 PC용 1760px inner (1920px 모니터 반응형)*/
  --size-gutter-xl: 80px;                            /* 와이드 PC용 좌우 80px 여백*/
  --size-gutter-tablet: 24px;                        /* 태블릿(768~1279) 좌우 여백*/
  --size-gutter-mobile: 20px;                        /* 모바일(767 이하) 좌우 여백*/
  --size-header-inner: var(--size-inner-xl);        /* 메인 비주얼·GNB 메가 패널 inner 1760px*/
  --size-page-inner: var(--size-inner-xl);           /* 서브페이지 비주얼 + 본문 공통 inner 1760px (둘이 어긋나지 않도록 한 토큰으로 묶음)*/
  --size-chrome-inner: none;                         /* 헤더·푸터 바 inner — 폭 제한 없이 좌우 거터만 적용 (와이드 PC)*/
  --size-header-gutter: var(--size-gutter-xl);       /* 헤더 전용 좌우 여백 (반응형: 아래 @media에서 재정의)*/
  --size-sidebar-width: 260px;
  --size-inner-lg: 1500px;
  --size-inner-md: 1160px;
  --size-inner-sm: 800px;

  --size-btn-height-lg: 60px;
  --size-btn-height-md: 44px;
  --size-btn-height-sm: 36px;
  --size-input-height: 44px;
  --size-tab-height: 60px;

  --size-icon-sm: 16px;
  --size-icon-md: 20px;
  --size-icon-lg: 24px;

  /* ─────────────────────────────────────────────────────────────*/
  /* Component Tokens (Figma: component)*/
  /* ─────────────────────────────────────────────────────────────*/

  /* Button*/
  --btn-primary-bg: var(--color-primary);
  --btn-primary-text: #ffffff;
  --btn-navy-bg: var(--color-navy);
  --btn-navy-text: #ffffff;
  --btn-outline-navy-border: var(--color-navy);
  --btn-outline-navy-text: var(--color-navy);
  --btn-outline-danger-border: var(--color-error-alt);
  --btn-outline-danger-text: var(--color-error-alt);
  --btn-ghost-bg: var(--color-gray-100);
  --btn-ghost-text: var(--color-text-secondary);

  /* Badge / Label*/
  --badge-info-bg: rgb(var(--color-info-rgb) / 0.1);
  --badge-info-text: var(--color-info);
  --badge-danger-bg: rgb(var(--color-error-rgb) / 0.1);
  --badge-danger-text: #de3412;
  --badge-muted-bg: rgb(var(--color-muted-rgb) / 0.1);
  --badge-muted-text: var(--color-muted);
  --badge-success-bg: rgb(var(--color-success-rgb) / 0.1);
  --badge-success-text: var(--color-success);

  /* Badge / 카테고리 5색 (Figma 미등록 — 기존 뱃지 색상군과 겹치지 않는 전용 세트, 글씨/배경 명암비 AA 4.5:1 이상)*/
  /*   파랑·시안·회색·초록·주황·빨강은 상태·구분 뱃지가 사용 중 → 카테고리는 색상각이 다른 5계열*/
  --badge-cat-amber-text: #8a5c00;    /* 호박 (5.07:1)*/
  --badge-cat-amber-bg: #f3efe6;
  --badge-cat-violet-text: #7048e8;   /* 보라 (4.83:1)*/
  --badge-cat-violet-bg: #f1edfd;
  --badge-cat-teal-text: #067566;     /* 청록 (4.86:1)*/
  --badge-cat-teal-bg: #e6f1f0;
  --badge-cat-magenta-text: #c2255c;  /* 자홍 (4.83:1)*/
  --badge-cat-magenta-bg: #f9e9ef;
  --badge-cat-olive-text: #52700a;    /* 올리브 (4.99:1)*/
  --badge-cat-olive-bg: #eef1e6;

  /* 파트너십 유형 4색 (Figma 미등록 — 클라이언트 샘플 이미지 색 그대로, .mod-group-map 표식 전용)*/
  /*   공동 출자는 연한 하늘색이라 흰 바탕에서 보이도록 표식 테두리를 함께 둔다*/
  --partnership-inst: #f4a63a;          /* 제도화 파트너십 (주황)*/
  --partnership-coprog: #0b3d91;        /* 공동 프로그램 (네이비)*/
  --partnership-cofund: #ddeff7;        /* 공동 출자 (연하늘)*/
  --partnership-cofund-border: #8fbfd6; /* 공동 출자 표식 테두리*/
  --partnership-kic: #86bc42;           /* EIT KIC (연두)*/

  /* Alert*/
  --alert-info-bg: var(--color-info-bg);
  --alert-info-border: var(--color-border-default);
  --alert-info-text: var(--color-info);
  --alert-danger-bg: var(--color-error-bg);
  --alert-danger-border: var(--color-border-default);
  --alert-danger-text: var(--color-error);
  --alert-warning-bg: var(--color-warning-bg);
  --alert-warning-border: var(--color-border-default);
  --alert-warning-text: var(--color-warning);
  --alert-neutral-bg: var(--color-gray-50);
  --alert-neutral-border: var(--color-border-default);
  --alert-neutral-text: #585858;

  /* Form*/
  --form-label-bg: var(--color-gray-50);
  --form-label-text: var(--color-gray-900);
  --form-required-color: var(--color-error);
  --form-input-border: var(--color-border-strong);
  --form-input-border-focus: var(--color-primary);
  --form-input-bg: var(--color-white);
  --form-input-bg-disabled: #f5f5f5;
  --form-input-text: var(--color-text-secondary);
  --form-input-placeholder: var(--color-text-body);
  --form-hint-text: var(--color-text-hint);
  --form-divider: var(--color-border-form);

  /* Tab*/
  --tab-active-bg: var(--color-navy);
  --tab-active-text: #ffffff;
  --tab-inactive-bg: rgb(var(--color-navy-rgb) / 0.08);
  --tab-inactive-text: var(--color-navy);

  /* Step*/
  --step-active-bg: var(--color-navy);
  --step-active-text: #ffffff;
  --step-inactive-border: var(--color-gray-300);
  --step-inactive-text: #777777;
  --step-connector: var(--color-gray-400);

  /* Navigation*/
  --nav-footer-bg: var(--color-bg-dark);
  --nav-footer-text: #ffffff;
  --nav-footer-text-muted: rgba(255, 255, 255, 0.7);
  --nav-divider: rgb(var(--color-navy-rgb) / 0.15);
}

/* ─────────────────────────────────────────────────────────────*/

/* 반응형 거터 재정의 (헤더/탑바/서브비주얼 inner 공통 적용)*/

/* ※ CSS Variables는 @mixin(믹스인) 안에서 재정의가 까다로워 raw @media 사용*/

/*   → --size-header-gutter 한 곳만 바꿔도 모든 inner가 동시에 정렬됨*/

/* ─────────────────────────────────────────────────────────────*/

@media screen and (max-width: 1279px) {
  :root {
    --size-header-gutter: var(--size-gutter-tablet); /* 태블릿 24px*/
  }
}

@media screen and (max-width: 767px) {
  :root {
    --size-header-gutter: var(--size-gutter-mobile); /* 모바일 20px*/
  }
}

/* ─────────────────────────────────────────────────────────────*/

/* Dark Theme (추후 다크모드 디자인 확정 시 업데이트)*/

/* ─────────────────────────────────────────────────────────────*/

[data-theme="dark"] {
  --color-primary-rgb: 57 108 250;
  --color-navy-rgb: 0 31 71;

  --color-bg-rgb: 15 20 35;
  --color-surface-rgb: 22 30 50;
  --color-text-primary-rgb: 241 245 249;
  --color-text-secondary-rgb: 203 213 225;
  --color-text-body-rgb: 148 163 184;
  --color-text-muted-rgb: 100 116 139;

  --color-border-default: #2a3347;
  --color-border-strong: #334060;
  --color-border-form: #2a3347;

  --form-label-bg: rgba(255, 255, 255, 0.04);
  --form-label-text: var(--color-text-primary);
  --form-input-bg: rgba(255, 255, 255, 0.06);
  --form-input-bg-disabled: rgba(255, 255, 255, 0.03);

  --tab-active-bg: var(--color-primary);
  --tab-inactive-bg: rgb(var(--color-primary-rgb) / 0.08);
  --tab-inactive-text: var(--color-primary);
}

/* 기존 토큰 (radius 충돌 시 구 값 우선 유지)*/

/**
 * _mixins.scss
 * 공통 SCSS 믹스인 모음
 *
 * [반응형 브레이크포인트]
 *   PC      : 1280px 이상
 *   태블릿   : 768px ~ 1279px
 *   모바일   : 767px 이하
 *
 * [사용법]  ※ 이 프로젝트는 Sass가 아닌 postcss-mixins 기반입니다.
 *          믹스인 호출은 반드시 @mixin 을 사용하세요. (@include 는 Sass 문법이라 전개되지 않음)
 *   .pat-gnb {
 *     height: 80px;
 *
 *     @mixin tablet { height: 64px; }
 *     @mixin mobile { height: 56px; }
 *   }
 */

/* ─────────────────────────────────────────────────────────────*/

/* Breakpoint 변수 (믹스인 내부 전용 — CSS Variables 미디어쿼리 미지원 대체)*/

/* ─────────────────────────────────────────────────────────────*/

$bp-mobile-max: 767px;

$bp-tablet-min: 768px;

$bp-tablet-max: 1279px;

$bp-desktop-min: 1280px;

$bp-wide-min: 1920px;

/* ─────────────────────────────────────────────────────────────*/

/* 반응형 믹스인*/

/* ─────────────────────────────────────────────────────────────*/

/*/ 모바일 전용 (767px 이하)*/

/*/ 태블릿 전용 (768px ~ 1279px)*/

/*/ 태블릿 이하 (1279px 이하 — 태블릿 + 모바일 동시 대응)*/

/*/ 태블릿 이상 (768px 이상 — 태블릿 + 데스크탑 동시 대응)*/

/*/ 데스크탑 전용 (1280px 이상)*/

/*/ 와이드 PC 전용 (1920px 이상)*/

/* ─────────────────────────────────────────────────────────────*/

/* 유틸 믹스인*/

/* ─────────────────────────────────────────────────────────────*/

/*/ Flexbox 중앙 정렬*/

/*/ 텍스트 말줄임*/

/*/ 여러 줄 말줄임*/

/*/ sr-only (스크린리더 전용)*/

.\!container{
  width: 100% !important;
}

.container{
  width: 100%;
}

@media (min-width: 640px){

  .\!container{
    max-width: 640px !important;
  }

  .container{
    max-width: 640px;
  }
}

@media (min-width: 768px){

  .\!container{
    max-width: 768px !important;
  }

  .container{
    max-width: 768px;
  }
}

@media (min-width: 1024px){

  .\!container{
    max-width: 1024px !important;
  }

  .container{
    max-width: 1024px;
  }
}

@media (min-width: 1280px){

  .\!container{
    max-width: 1280px !important;
  }

  .container{
    max-width: 1280px;
  }
}

@media (min-width: 1536px){

  .\!container{
    max-width: 1536px !important;
  }

  .container{
    max-width: 1536px;
  }
}

@media (min-width: 1920px){

  .\!container{
    max-width: 1920px !important;
  }

  .container{
    max-width: 1920px;
  }
}

/* 2. 방법론 레이어 (postcss-import가 완벽히 병합할 수 있도록 글로벌 스코프에 노출)*/

/* Elements Layer Index*/

/* 이 폴더에는 가장 쪼갤 수 없는 단위인 최소 기본 요소(Elements) 스타일이 위치합니다.*/

/**
 * _buttons.scss
 * Elements 레이어 - 버튼 기본 클래스 (.el-btn)
 * ※ 2026-09 신규 Figma 디자인 시스템(_tokens.scss) 연결 완료
 *   - 피그마에 존재하는 변형(primary / secondary(기본 outline) / tertiary(ghost) / danger-outline)은
 *     신 토큰(--button-*, --text-*, --spacing-*)으로 재연결.
 *   - 피그마에 없는 변형(navy / outline-navy / danger-fill / success / warning)은 구 토큰 유지.
 *   - radius / height 는 피그마 변수 미바인딩 → 기존 값 유지.
 *
 * [버튼 종류 (Variants)]
 * .el-btn--primary        : 파랑 Fill (메인 폼 저장, 로그인, 주요 CTA)        [피그마]
 * .el-btn--ghost          : 연회색 Fill / 보조 버튼 (취소, 이전) = Figma Tertiary [피그마]
 * .el-btn--outline-danger : 빨강 아웃라인 (회원 탈퇴 신청, 삭제 취소) = Figma Danger [피그마]
 * .el-btn--navy           : 네이비 Fill (보조 메인 액션)                       [유지]
 * .el-btn--outline-navy   : 네이비 아웃라인 (상세보기, 인증하기 등)            [유지]
 * .el-btn--danger         : 빨강 Fill (강한 위험 삭제/강제 중단)              [유지]
 * .el-btn--success        : 초록 Fill (완료/승인)                            [유지]
 * .el-btn--warning        : 주황 Fill (경고/검토)                            [유지]
 * .el-btn--icon-only      : 아이콘 단독 사각형/원형 버튼
 */

.el-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--spacing-8, 8px);
  font-family: var(--font-family-pretendard);
  font-weight: var(--font-body-large-medium-weight, 500);
  font-size: var(--font-body-large-medium-size, 17px);
  line-height: var(--font-body-large-medium-line-height, 1.5);
  letter-spacing: var(--font-body-large-medium-letter-spacing, -0.01em);
  padding: 0 var(--spacing-20, 20px);
  height: var(--size-btn-height-lg, 60px);
  border-radius: var(--radius-md, 4px);
  border: 1px solid transparent;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color 0.15s ease, border-color 0.15s ease,
              color 0.15s ease, box-shadow 0.15s ease, transform 0.1s ease;
  outline: none;
  box-sizing: border-box;

  /* 기본 상태 = Figma Secondary (흰 배경 + 연회색 보더 + 기본 텍스트)*/
  background-color: var(--input-surface, #ffffff);
  color: var(--text-default, #4a5667);
  border-color: var(--button-secondary-border, #cbd1dc);
}

.el-btn svg,
  .el-btn i[data-feather] {
    transition: color 0.15s ease, transform 0.15s ease;
    flex-shrink: 0;
  }

/* ── 호버 / 액티브 공통 기저 정의 (Secondary) ──────────────────*/

.el-btn:hover:not(:disabled):not(.el-btn--disabled) {
    background-color: var(--background-subtle, #f8f9fb);
    border-color: var(--button-secondary-border-hover, #929aaa);
    color: var(--text-bold, #262f3c);
  }

.el-btn:focus-visible {
    box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.25);
  }

.el-btn:active:not(:disabled):not(.el-btn--disabled) {
    border-color: var(--button-secondary-border-pressed, #4a5667);
    transform: scale(0.98);
  }

.el-btn:disabled,
  .el-btn.el-btn--disabled {
    cursor: not-allowed;
    pointer-events: none;
    opacity: 0.5;
    box-shadow: none;
  }

/* ── 크기 규격 변형자 (Size Modifiers) ───────────────*/

.el-btn--lg {
    height: var(--size-btn-height-lg, 60px);
    font-size: var(--font-body-large-medium-size, 17px);
    padding: 0 var(--spacing-24, 24px);
  }

.el-btn--md {
    height: var(--size-btn-height-md, 44px);
    font-size: var(--font-body-xsmall-medium-size, 14px);
    padding: 0 var(--spacing-16, 16px);
  }

.el-btn--sm {
    height: var(--size-btn-height-sm, 36px);
    font-size: var(--font-body-xxsmall-medium-size, 13px);
    padding: 0 var(--spacing-12, 12px);
    border-radius: var(--radius-md, 4px);
  }

.el-btn--full {
    width: 100%;
  }

.el-btn--pill {
    height: auto;
    padding: var(--spacing-8, 8px) var(--spacing-16, 16px);
    border-radius: var(--radius-full, 9999px);
    font-size: var(--font-body-xsmall-medium-size, 14px);
  }

.el-btn--icon-only {
    padding: 0;
    width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-md, 4px);
  }

.el-btn--icon-only.el-btn--sm {
      width: 36px;
      height: 36px;
    }

/* ─────────────────────────────────────────────────────*/

/* 명확한 Color Variant 규칙 (보더/배경/글자 상속 오염 방지)*/

/* ─────────────────────────────────────────────────────*/

/* 1. Primary - 파랑 Fill  [Figma: button/primary-*]*/

.el-btn--primary {
    background-color: var(--button-primary-fill, #396cfa);
    color: var(--text-inverse, #ffffff);
    border-color: var(--button-primary-fill, #396cfa);
  }

.el-btn--primary:hover:not(:disabled):not(.el-btn--disabled) {
      background-color: var(--button-primary-fill-hover, #2e56c8);
      border-color: var(--button-primary-fill-hover, #2e56c8);
      color: var(--text-inverse, #ffffff);
    }

.el-btn--primary:active:not(:disabled):not(.el-btn--disabled) {
      background-color: var(--button-primary-fill-pressed, #234197);
      border-color: var(--button-primary-fill-pressed, #234197);
    }

/* 2. Navy - 네이비 Fill  [유지: 피그마에 navy 없음]*/

.el-btn--navy {
    background-color: var(--color-navy, #1B2B43);
    color: #ffffff;
    border-color: var(--color-navy, #1B2B43);
  }

.el-btn--navy:hover:not(:disabled):not(.el-btn--disabled) {
      background-color: var(--color-navy-hover, #121e30);
      border-color: var(--color-navy-hover, #121e30);
      color: #ffffff;
    }

/* 3. Outline Navy - 네이비 아웃라인  [유지: 피그마에 navy 없음]*/

.el-btn--outline-navy {
    background-color: var(--color-surface, #ffffff);
    color: var(--color-navy, #001f47);
    border-color: var(--color-navy, #001f47);
  }

.el-btn--outline-navy:hover:not(:disabled):not(.el-btn--disabled) {
      background-color: rgba(0, 31, 71, 0.06);
      color: var(--color-navy-hover, #00122b);
      border-color: var(--color-navy-hover, #00122b);
    }

.el-btn--outline-navy:hover:not(:disabled):not(.el-btn--disabled) svg,
      .el-btn--outline-navy:hover:not(:disabled):not(.el-btn--disabled) i[data-feather] {
        color: var(--color-navy-hover, #00122b);
      }

/* 4. Outline Danger - 빨강 아웃라인  [Figma: button/danger-*]*/

.el-btn--outline-danger {
    background-color: var(--input-surface, #ffffff);
    color: var(--button-danger-border, #d0121b);
    border-color: var(--button-danger-border, #d0121b);
  }

.el-btn--outline-danger:hover:not(:disabled):not(.el-btn--disabled) {
      background-color: rgba(208, 18, 27, 0.08);
      color: var(--button-danger-border-hover, #a80f1c);
      border-color: var(--button-danger-border-hover, #a80f1c);
    }

.el-btn--outline-danger:hover:not(:disabled):not(.el-btn--disabled) svg,
      .el-btn--outline-danger:hover:not(:disabled):not(.el-btn--disabled) i[data-feather] {
        color: var(--button-danger-border-hover, #a80f1c);
      }

.el-btn--outline-danger:active:not(:disabled):not(.el-btn--disabled) {
      color: var(--button-danger-border-pressed, #5e080c);
      border-color: var(--button-danger-border-pressed, #5e080c);
    }

/* 5. Danger - 빨강 Fill  [유지: 피그마 danger는 아웃라인만]*/

.el-btn--danger {
    background-color: var(--color-error, #eb2a29);
    color: #ffffff;
    border-color: var(--color-error, #eb2a29);
  }

.el-btn--danger:hover:not(:disabled):not(.el-btn--disabled) {
      background-color: #d11e1d;
      border-color: #d11e1d;
      color: #ffffff;
    }

/* 6. Ghost - 연회색 보조 Fill  [Figma: button/tertiary-*]*/

.el-btn--ghost {
    background-color: var(--button-tertiary-fill, #fcfcfd);
    color: var(--text-bold, #262f3c);
    border-color: var(--button-secondary-border, #cbd1dc);
  }

.el-btn--ghost:hover:not(:disabled):not(.el-btn--disabled) {
      background-color: var(--button-tertiary-fill-hover, #f8f9fb);
      border-color: var(--button-secondary-border-hover, #929aaa);
      color: var(--text-bolder, #090c10);
    }

.el-btn--ghost:active:not(:disabled):not(.el-btn--disabled) {
      background-color: var(--button-tertiary-fill-pressed, #f2f3f8);
    }

/* 7. Success - 초록 Fill  [유지: ① 상태색 유지]*/

.el-btn--success {
    background-color: var(--color-success, #2b8a3e);
    color: #ffffff;
    border-color: var(--color-success, #2b8a3e);
  }

.el-btn--success:hover:not(:disabled):not(.el-btn--disabled) {
      background-color: #237032;
      border-color: #237032;
      color: #ffffff;
    }

/* 8. Warning - 주황 Fill  [유지: ① 상태색 유지]*/

.el-btn--warning {
    background-color: var(--color-warning, #e16218);
    color: #ffffff;
    border-color: var(--color-warning, #e16218);
  }

.el-btn--warning:hover:not(:disabled):not(.el-btn--disabled) {
      background-color: #c75210;
      border-color: #c75210;
      color: #ffffff;
    }

/**
 * _label.scss
 * Elements 레이어 - 폼 레이블 (.el-label)
 * Figma 노드 52:714 기준 — 인풋/셀렉트 높이 단계에 맞춘 레이블 크기 체계
 *
 *   large  (인풋 56px) → 레이블 17px  (.el-label--lg)
 *   medium (인풋 48px) → 레이블 16px  (.el-label--md, 기본)
 *   small  (인풋 40px) → 레이블 15px  (.el-label--sm)
 *   공통: Pretendard Medium(500), color text/bold(#262F3C), 하단 갭 8px
 */

/**
 * 한/영 병기 타이틀의 영문 표기 (.el-title-en)
 * Figma 155:10285 — 영문은 muted(#929aaa) + 한글보다 약간 작게(≈0.7em) + Bold 유지
 * 인라인/블록 모두 사용 가능 (em 상대크기라 부모 타이틀 크기에 비례)
 */

.el-title-en {
  color: var(--text-muted, #929aaa);
  font-size: 0.72em;
  font-weight: var(--font-weight-bold, 700);
  letter-spacing: -0.01em;
}

/**
 * 콘텐츠 제목 (.el-content-title) — Figma 166:9100
 * 서브비주얼(메뉴명)과 별개로, 같은 메뉴 내 하위 페이지의 개별 콘텐츠 제목.
 * 국문(굵게) + 영문(muted, 약간 작게) 인라인 병기.
 */

.el-content-title {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 12px;
  font-family: var(--font-family-base);
  /* 타이틀 스케일 정합: title-xlarge (40px). 서브비주얼 64px 아래 콘텐츠 제목 레벨*/
  font-size: var(--font-title-xlarge-size, 2.5rem);
  font-weight: var(--font-weight-bold, 700);
  color: var(--text-bolder, #090c10);
  letter-spacing: var(--letter-spacing-tight, -0.02em);
  margin-bottom: 1.5rem;
}

.el-content-title .el-title-en {
    font-size: 0.65em;
  }

/* ※ 변형 클래스명 ↔ Figma title 토큰은 한 칸 어긋나 있음 (--md 가 시안 32px 제목에 먼저 붙은 이름)*/

/*   --md = title/large 32 · --sm = title/medium 28 · --xs = title/xsmall 20*/

/*   각 변형은 글꼴·굵기까지 해당 토큰 한 세트로 연결 — 토큰 값이 바뀌면 그대로 따라가도록*/

/* 32px 콘텐츠 소제목 (Figma title/large, 프로그램 안내 "Pillar 1. 우수과학") — 간격은 감싸는 블록이 담당*/

/* flex 대신 block: 긴 제목(Pillar 2)이 "Pillar 2." 뒤에서 문장처럼 이어서 줄바꿈되도록*/

.el-content-title--md {
    display: block;
    font-family: var(--font-title-large-family);
    font-size: var(--font-title-large-size); /* 32px*/
    font-weight: var(--font-title-large-weight);
    line-height: var(--font-title-large-line-height);
    letter-spacing: var(--font-title-large-letter-spacing);
    margin-bottom: 0;
    word-break: keep-all;
  }

/* 28px 섹션 제목 (Figma title/medium, 프로그램 안내 "ERC 프로그램") — 필라 제목(--md) 아래 단계*/

.el-content-title--sm {
    display: block;
    font-family: var(--font-title-medium-family);
    font-size: var(--font-title-medium-size); /* 28px*/
    font-weight: var(--font-title-medium-weight);
    line-height: var(--font-title-medium-line-height);
    letter-spacing: var(--font-title-medium-letter-spacing);
    margin-bottom: 0;
    word-break: keep-all;
  }

/* 20px 소제목 (Figma title/xsmall, 프로그램 안내 "EIC 하위 프로그램") — 섹션 제목(--sm) 아래 단계*/

.el-content-title--xs {
    display: block;
    font-family: var(--font-title-xsmall-family);
    font-size: var(--font-title-xsmall-size); /* 20px*/
    font-weight: var(--font-title-xsmall-weight);
    line-height: var(--font-title-xsmall-line-height);
    letter-spacing: var(--font-title-xsmall-letter-spacing);
    margin-bottom: 0;
    word-break: keep-all;
  }

/* 국문 뒤에 이어 붙는 영문 병기 — block 제목 안에서는 flex gap이 없어 간격을 직접 둠*/

.el-content-title--md .el-title-en,
  .el-content-title--sm .el-title-en {
    margin-left: 0.35em;
  }

/* 제목 뒤 보조 표기 (국문, "2026–2027 워크프로그램") — 영문 병기와 같은 위치·색, 굵기만 Regular*/

.el-content-title__sub {
    margin-left: 0.35em;
    font-size: 0.8em;
    font-weight: var(--font-weight-regular);
    color: var(--text-muted);
  }

/* 필라 헤더 하단선: 페이지에서 굵은 선은 필라 헤더와 표 상단 두 곳만 쓴다*/

.el-content-title--rule {
    padding-bottom: var(--spacing-20);
    border-bottom: 2px solid var(--border-strong-darker);
  }

/* 제목 앞 국기 (헤더 로고와 같은 원형 국기, src/assets/images/flags/) — 장식이라 alt=""*/

/* 글자 크기에 비례(1.2em)해 --md · --sm 어디에 써도 맞음 — 1em 은 원형이라 글자보다 작아 보여 1.2배*/

.el-content-title__flag {
    display: inline-block;
    width: 1.2em;
    height: 1.2em;
    margin-right: 0.3em;
    vertical-align: -0.24em;
  }

/* 제목 앞 파랑 구분 표기 ("Pillar 1.")*/

.el-content-title__prefix {
    margin-right: 0.35em;
    color: var(--text-primary);
  }

@media screen and (max-width: 1279px) {
  .el-content-title--md {
    font-size: var(--font-title-small-size); /* 24px*/
  }

  .el-content-title--sm {
    font-size: var(--font-title-xsmall-size); /* 20px*/
  }

  .el-content-title--xs {
    font-size: var(--font-title-xxsmall-size); /* 18px*/
  }
  }

@media screen and (max-width: 767px) {
  .el-content-title--md {
    font-size: var(--font-title-xsmall-size); /* 20px*/
  }

  .el-content-title--sm {
    font-size: var(--font-title-xxsmall-size); /* 18px*/
  }

  .el-content-title--xs {
    font-size: var(--font-size-md); /* 17px*/
  }

  .el-content-title--rule {
    padding-bottom: var(--spacing-16);
  }
  }

/**
 * 한/영 병기 타이틀 스택 (.el-title-stack)
 * 영문(상단, muted·작게) / 국문(하단, 원래 타이틀 크기) 세로 배치.
 * 마크업에서 .el-title-en 을 먼저(위) 두고 국문 텍스트를 뒤에 둔다.
 */

.el-title-stack {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.el-title-stack .el-title-en {
    display: block;
    line-height: 1.3;
  }

/**
 * 폼테이블 2줄 라벨 (.el-flabel) — 국문(상단, Bold) / 영문(하단, muted)
 * `.mod-form-table__label`에 조합. Figma 146:3843 작성 폼 라벨 기준.
 */

/* 구조: [* (필수, 좌측 여백에 absolute)] [__group(국문 / 영문 수직)]*/

/*  → 국문·영문 시작점이 행마다 항상 일치(별표가 그룹을 밀지 않음), 블록은 상하 중앙 정렬*/

.el-flabel {
  position: relative;
  flex-direction: row;
  align-items: center;      /* 블록 상하 중앙 정렬*/
  justify-content: flex-start;
}

.el-flabel__group {
    position: relative; /* 별표 기준점*/
    display: flex;
    flex-direction: column;
    gap: 3px; /* 국문↔영문 간격*/
    min-width: 0;
  }

/* 별표: 그룹 좌측 바깥, 국문 첫 줄(KR)에 라인 맞춤*/

.el-flabel__req {
    position: absolute;
    right: 100%;
    top: 0;
    margin-right: 4px;
    color: var(--color-error, #eb2a29);
    font-weight: var(--font-weight-bold, 700);
    font-size: 17px;
    line-height: 1.3; /* KR 라인과 동일하게*/
  }

.el-flabel__kr {
    font-size: 17px;
    line-height: 1.3;
    font-weight: var(--font-weight-medium, 500);
    color: var(--text-bold, #262f3c);
    letter-spacing: -0.01em;
  }

.el-flabel__en {
    font-size: 15px;
    line-height: 1.3;
    font-weight: var(--font-weight-regular, 400);
    color: var(--text-muted, #929aaa);
  }

/* 모바일: 국문/영문을 병렬(가로) 배치, 넘치면 keep-all로 자연스럽게 줄바꿈*/

@media (max-width: 768px) {
    .el-flabel__group {
      flex-direction: row;
      flex-wrap: wrap;
      align-items: baseline;
      -moz-column-gap: 6px;
           column-gap: 6px;
      row-gap: 2px;
      word-break: keep-all;
    }

    .el-flabel__kr,
    .el-flabel__en {
      word-break: keep-all;
    }
  }

.el-label {
  display: block;
  font-family: var(--font-family-pretendard);
  font-weight: var(--font-weight-medium, 500);
  color: var(--text-bold, #262f3c);
  letter-spacing: -0.01em;
  line-height: 1.5;
  margin-bottom: 8px; /* Figma 레이블↔인풋 갭*/

  /* 기본 = medium (16px)*/
  font-size: var(--font-body-medium-medium-size, 16px);
}

/* large (인풋 56px 대응)*/

.el-label--lg {
    font-size: var(--font-body-large-medium-size, 17px);
  }

/* medium (인풋 48px 대응)*/

.el-label--md {
    font-size: var(--font-body-medium-medium-size, 16px);
  }

/* small (인풋 40px 대응)*/

.el-label--sm {
    font-size: var(--font-body-small-medium-size, 15px);
  }

/* 필수 표시(*) 조합용*/

.el-label .el-label__req,
  .el-label .el-required {
    color: var(--color-error, #eb2a29);
    margin-left: 2px;
  }

/**
 * _required.scss
 * Elements 레이어 - 필수 입력사항 표시 별마크 (.el-required)
 * 폼 레이블 옆이나 가이드 영역에서 필수값임을 나타내는 '*' 텍스트 스타일 캡슐화
 */

.el-required {
  color: var(--form-required-color, var(--color-error));
  font-weight: var(--font-weight-bold);
  font-size: var(--font-size-md); /* 17px*/
  font-family: var(--font-family-base);
  display: inline-block;
  line-height: 1;
  vertical-align: middle;
  margin-left: 2px;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

/**
 * _skeleton.scss
 * 스켈레톤 로더 모듈 (순수 CSS & Shimmer 광원 효과)
 * 
 * 부모 요소에 `.is-loading`이 부여되면 내부 자식 요소들(.js-skel 또는 h1~h6, p, img, button, badge 등)이
 * 자동으로 투명화되어 1px의 위치 오차 없이 스켈레톤 블록으로 즉시 둔갑합니다.
 */

/* Shimmer 광원 이동 애니메이션*/

@keyframes skeleton-shimmer {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(100%);
  }
}

/* 1. 단독 사용이 가능한 스켈레톤 요소*/

.el-skeleton {
  display: inline-block;
  position: relative;
  overflow: hidden;
  background-color: var(--neutral-bg, #f1f3f5);
  border-radius: var(--radius-md, 4px);
  color: transparent !important;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  pointer-events: none;
}

.el-skeleton::after {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    transform: translateX(-100%);
    background: linear-gradient(
      90deg,
      rgba(255, 255, 255, 0) 0%,
      rgba(255, 255, 255, 0.55) 50%,
      rgba(255, 255, 255, 0) 100%
    );
    animation: skeleton-shimmer 1.5s infinite;
  }

/* 2. 부모 자동 스켈레톤 변환 제어자 (.is-loading)*/

.is-loading:not(.is-spinner-loading) {
  pointer-events: none !important;
  -webkit-user-select: none !important;
     -moz-user-select: none !important;
          user-select: none !important;
}

/* 자식 요소 자동 스켈레톤화 대상 (스피너가 포함된 요소는 제외)*/

.is-loading:not(.is-spinner-loading) .js-skel,
  .is-loading:not(.is-spinner-loading) h1,
  .is-loading:not(.is-spinner-loading) h2,
  .is-loading:not(.is-spinner-loading) h3,
  .is-loading:not(.is-spinner-loading) h4,
  .is-loading:not(.is-spinner-loading) h5,
  .is-loading:not(.is-spinner-loading) h6,
  .is-loading:not(.is-spinner-loading) p,
  .is-loading:not(.is-spinner-loading) span:not(.mod-badge):not(.el-spinner-text),
  .is-loading:not(.is-spinner-loading) img,
  .is-loading:not(.is-spinner-loading) svg:not(.el-spinner-svg),
  .is-loading:not(.is-spinner-loading) button:not(.is-spinner-btn),
  .is-loading:not(.is-spinner-loading) input,
  .is-loading:not(.is-spinner-loading) select,
  .is-loading:not(.is-spinner-loading) textarea,
  .is-loading:not(.is-spinner-loading) .mod-badge,
  .is-loading:not(.is-spinner-loading) .el-btn:not(.is-spinner-btn),
  .is-loading:not(.is-spinner-loading) .mod-card__title,
  .is-loading:not(.is-spinner-loading) .mod-card__desc {
    color: transparent !important;
    background-color: var(--neutral-bg, #e9ecef) !important;
    border-color: transparent !important;
    box-shadow: none !important;
    position: relative !important;
    overflow: hidden !important;
    border-radius: var(--radius-md, 4px);
  }

/* 하위 자식 요소 투명화 (텍스트/아이콘 숨김)*/

.is-loading:not(.is-spinner-loading) .js-skel *, .is-loading:not(.is-spinner-loading) h1 *, .is-loading:not(.is-spinner-loading) h2 *, .is-loading:not(.is-spinner-loading) h3 *, .is-loading:not(.is-spinner-loading) h4 *, .is-loading:not(.is-spinner-loading) h5 *, .is-loading:not(.is-spinner-loading) h6 *, .is-loading:not(.is-spinner-loading) p *, .is-loading:not(.is-spinner-loading) span:not(.mod-badge):not(.el-spinner-text) *, .is-loading:not(.is-spinner-loading) img *, .is-loading:not(.is-spinner-loading) svg:not(.el-spinner-svg) *, .is-loading:not(.is-spinner-loading) button:not(.is-spinner-btn) *, .is-loading:not(.is-spinner-loading) input *, .is-loading:not(.is-spinner-loading) select *, .is-loading:not(.is-spinner-loading) textarea *, .is-loading:not(.is-spinner-loading) .mod-badge *, .is-loading:not(.is-spinner-loading) .el-btn:not(.is-spinner-btn) *, .is-loading:not(.is-spinner-loading) .mod-card__title *, .is-loading:not(.is-spinner-loading) .mod-card__desc * {
      opacity: 0 !important;
      visibility: hidden !important;
    }

/* Shimmer 광원 자동 주입*/

.is-loading:not(.is-spinner-loading) .js-skel::after, .is-loading:not(.is-spinner-loading) h1::after, .is-loading:not(.is-spinner-loading) h2::after, .is-loading:not(.is-spinner-loading) h3::after, .is-loading:not(.is-spinner-loading) h4::after, .is-loading:not(.is-spinner-loading) h5::after, .is-loading:not(.is-spinner-loading) h6::after, .is-loading:not(.is-spinner-loading) p::after, .is-loading:not(.is-spinner-loading) span:not(.mod-badge):not(.el-spinner-text)::after, .is-loading:not(.is-spinner-loading) img::after, .is-loading:not(.is-spinner-loading) svg:not(.el-spinner-svg)::after, .is-loading:not(.is-spinner-loading) button:not(.is-spinner-btn)::after, .is-loading:not(.is-spinner-loading) input::after, .is-loading:not(.is-spinner-loading) select::after, .is-loading:not(.is-spinner-loading) textarea::after, .is-loading:not(.is-spinner-loading) .mod-badge::after, .is-loading:not(.is-spinner-loading) .el-btn:not(.is-spinner-btn)::after, .is-loading:not(.is-spinner-loading) .mod-card__title::after, .is-loading:not(.is-spinner-loading) .mod-card__desc::after {
      content: '' !important;
      position: absolute !important;
      top: 0 !important;
      right: 0 !important;
      bottom: 0 !important;
      left: 0 !important;
      transform: translateX(-100%);
      background: linear-gradient(
        90deg,
        rgba(255, 255, 255, 0) 0%,
        rgba(255, 255, 255, 0.6) 50%,
        rgba(255, 255, 255, 0) 100%
      ) !important;
      animation: skeleton-shimmer 1.5s infinite !important;
      visibility: visible !important;
    }

/* 이미지/아바타 전용 형태 보정*/

.is-loading:not(.is-spinner-loading) img, .is-loading:not(.is-spinner-loading) .mod-avatar, .is-loading:not(.is-spinner-loading) svg {
    background-color: var(--color-border-strong, #dee2e6) !important;
  }

/**
 * _spinner.scss
 * 전역 공통 로딩 스피너 및 영역/화면 딤드 오버레이 모듈
 */

/* 스피너 키프레임 회전 애니메이션*/

@keyframes spinner-rotate {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

/* 1. 단독/버튼 내부 스피너 요소 (.el-spinner)*/

.el-spinner {
  display: inline-block;
  width: 1.25rem;
  height: 1.25rem;
  vertical-align: text-bottom;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: spinner-rotate 0.75s linear infinite;
}

/* 사이즈 변종*/

.el-spinner--sm {
    width: 1rem;
    height: 1rem;
    border-width: 2px;
  }

.el-spinner--lg {
    width: 2.5rem;
    height: 2.5rem;
    border-width: 3px;
  }

/* 2. 버튼 요소 결합 스타일 (.el-btn.is-spinner-loading)*/

.el-btn.is-spinner-loading,
button.is-spinner-loading {
  cursor: wait !important;
  pointer-events: none !important;
  opacity: 0.82;
}

.el-btn.is-spinner-loading .el-spinner, button.is-spinner-loading .el-spinner {
    flex-shrink: 0;
    margin-right: 0.35rem;
  }

/* 2. 영역 및 전체 화면 오버레이 스피너 (.mod-spinner-overlay)*/

.mod-spinner-overlay {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 100;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  background-color: rgba(255, 255, 255, 0.75);
  backdrop-filter: blur(2px);
  border-radius: inherit;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out;
  pointer-events: all;
}

.mod-spinner-overlay.is-visible {
    opacity: 1;
    visibility: visible;
  }

/* Body 전용 전체 화면 모드*/

.mod-spinner-overlay--global {
    position: fixed !important;
    z-index: 9999 !important;
    background-color: rgba(15, 23, 42, 0.55) !important;
  }

/* 약간 어두운 네비 딤드*/

.mod-spinner-overlay--global .mod-spinner-overlay__content {
      background-color: #ffffff;
      padding: 24px 32px;
      border-radius: var(--radius-2xl, 12px);
      box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 12px;
    }

.mod-spinner-overlay--global .mod-spinner-overlay__text {
      color: var(--neutral-text-primary, #111111);
      font-weight: 600;
    }

/* 텍스트 안내 메시지*/

.mod-spinner-overlay__text {
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--neutral-text-secondary, #333333);
  }

/**
 * _drag.scss
 * 드래그 앤 드롭 순서 변경 패턴 전용 스타일 모듈 (SortableJS 연동)
 */

/* 1. 드래그 핸들 아이콘 버튼*/

.js-drag-handle {
  cursor: grab;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  touch-action: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--color-text-muted);
  transition: color 0.15s ease, transform 0.15s ease;
}

.js-drag-handle:hover {
    color: var(--color-primary);
    transform: scale(1.1);
  }

.js-drag-handle:active {
    cursor: grabbing !important;
  }

/* 2. 드래그 중 고스트 영역 (.sortable-ghost - 비워진 원래 자리)*/

.sortable-ghost {
  opacity: 0.35 !important;
  background-color: rgba(var(--color-primary-rgb), 0.08) !important;
  border: 2px dashed var(--color-primary) !important;
}

/* 3. 마우스를 따라 이동 중인 드래그 요소 (.sortable-drag)*/

.sortable-drag {
  opacity: 0.95 !important;
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15) !important;
  background-color: var(--color-white) !important;
  transform: scale(1.02);
}

/* 4. 선택되어 반응 중인 요소 (.sortable-chosen)*/

.sortable-chosen {
  cursor: grabbing !important;
}

/**
 * _chip.scss
 * Elements 레이어 - 선택 칩 (.el-chip)
 * Figma 155:8130 Filter 칩 기준. <button aria-pressed> 로 사용, .pat-chip-filter 안에서 선택 제어
 *
 * [구성]  라벨 텍스트 + __count(파란 개수, 선택)
 * [상태]  .is-selected : 선택 (네이비 fill, 흰 글자)
 *         .is-zero     : 결과 0건 (흐리게, 선택은 가능)
 *         :disabled    : 선택 불가
 */

.el-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 40px;
  padding: 10px var(--spacing-16, 16px);
  border: 1px solid var(--border-default-strong, #cbd1dc);
  border-radius: var(--radius-fig-sm, 4px);
  background-color: var(--background-default, #ffffff);
  font-family: inherit;
  font-size: var(--font-body-small-regular-size, 0.9375rem); /* 15px*/
  font-weight: var(--font-weight-regular, 400);
  line-height: 1.3;
  color: var(--text-bold, #262f3c);
  text-align: left;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.el-chip__count {
    font-weight: var(--font-weight-medium, 500);
    color: var(--text-primary, #396cfa);
  }

.el-chip:hover {
    border-color: var(--border-strong-dark, #4a5667);
  }

.el-chip:focus-visible {
    outline: 2px solid var(--element-primary, #396cfa);
    outline-offset: 2px;
  }

.el-chip.is-selected {
    /* Figma #172335 → 시스템 네이비 토큰(--color-navy #1B2B43, .el-btn--navy와 동일)*/
    border-color: var(--color-navy, #1b2b43);
    background-color: var(--color-navy, #1b2b43);
    font-weight: var(--font-weight-medium, 500);
    color: var(--text-inverse, #ffffff);
  }

.el-chip.is-selected .el-chip__count {
      color: var(--blue-200, #9bb4fb); /* Figma #2875FA는 네이비 위 대비 부족 → 밝은 블루로 보정*/
    }

.el-chip.is-zero:not(.is-selected) {
    color: var(--text-muted, #929aaa);
  }

.el-chip.is-zero:not(.is-selected) .el-chip__count {
      color: var(--text-muted, #929aaa);
    }

.el-chip:disabled {
    opacity: 0.45;
    cursor: not-allowed;
  }

/* ── 채움형 칩 (.el-chip--fill) — Figma 검색그룹 Chip / Primary (2084:12961) ──*/

/* 목록 검색 필터(공고구분 · 진행상태)용. 선택 제어는 기존 칩 그룹(.pat-chip-filter__chips) 그대로*/

/* 비활성 글자: Figma text/muted(#929AAA)는 회색 바탕 대비 2:1 수준 → 가독성(AA)을 위해 text/default 로 보정*/

.el-chip--fill {
  justify-content: center;
  min-width: 74px;
  padding: 0 var(--spacing-12);
  border-color: transparent;
  background-color: var(--chip-primary-fill);
  font-size: var(--font-body-xsmall-medium-size, 0.875rem); /* 14px*/
  font-weight: var(--font-weight-medium, 500);
  line-height: 1.5;
  color: var(--text-default);
  text-align: center;
}

.el-chip--fill:hover {
    border-color: transparent;
    background-color: var(--border-default-strong);
  }

.el-chip--fill.is-selected {
    border-color: transparent;
    background-color: var(--chip-primary-fill-active);
    color: var(--text-inverse);
  }

/**
 * _highlight.scss
 * Elements 레이어 - 검색어 강조 (.el-highlight)
 * <mark class="el-highlight">키워드</mark> — 검색 결과 제목/요약 내 일치 텍스트 표시
 */

.el-highlight {
  padding: 0 2px;
  border-radius: 2px;
  background-color: var(--element-primary-light, #d8e1fe);
  color: var(--text-primary, #396cfa);
  font-weight: var(--font-weight-medium, 500);
}

/**
 * _external-icon.scss
 * Elements 레이어 - 외부(새 창) 이동 아이콘 (.el-external-icon)
 * 메뉴(GNB·메가 드롭다운·모바일 드로어) 항목이 외부 링크일 때 라벨 뒤에 병기.
 * ui-schema.json 메뉴 항목에 "external": true 또는 http(s) url이면 renderNavigation()이 자동 삽입.
 * 색은 글자색(currentColor)을 따르고, 크기는 글자 크기에 비례.
 */

.el-external-icon {
  display: inline-block;
  width: 0.875em;   /* 16px 글자 기준 14px*/
  height: 0.875em;
  margin-left: var(--spacing-4);
  vertical-align: -0.1em;
  flex-shrink: 0;
}

/**
 * _figure.scss
 * Elements 레이어 - 테두리 이미지 (.el-figure)
 * Figma: 프로그램 안내 구조도 2070:4500 — 4px 테두리 이미지 (+ 선택 캡션)
 *
 * 구조:
 *   figure.el-figure
 *     a.el-figure__frame (또는 div)   ← 링크로 두면 원본을 새 창으로 열어 좁은 화면에서 확대해 볼 수 있음
 *       img.el-figure__img
 *     figcaption.el-figure__caption  ← 선택
 */

.el-figure {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-12);
  margin: 0;
}

.el-figure__frame {
    display: block;
    overflow: hidden;
    border: 4px solid var(--border-default);
    background-color: var(--background-default);
  }

.el-figure a.el-figure__frame {
    transition: border-color 0.15s ease;
  }

.el-figure a.el-figure__frame:hover {
      border-color: var(--border-default-strong);
    }

.el-figure a.el-figure__frame:focus-visible {
      outline: 2px solid var(--text-primary);
      outline-offset: 2px;
    }

.el-figure__img {
    display: block;
    width: 100%;
    height: auto;
  }

.el-figure__caption {
    font-family: var(--font-family-pretendard);
    font-size: var(--font-size-sm); /* 16px*/
    line-height: 1.5;
    color: var(--text-default);
  }

@media screen and (max-width: 767px) {
  .el-figure__frame {
    border-width: 2px; /* 좁은 화면에서 4px 테두리가 이미지 대비 과하게 두꺼워 보이는 것 방지*/
  }
  }

/**
 * _lead.scss
 * Elements 레이어 - 리드 블록 (.el-lead)
 * 섹션 첫머리 굵은 요약 문장 + 보조 설명(문단 또는 .el-bullet-list)
 * 적용: 프로그램 안내 필라 도입부 · 섹션 도입부
 *
 * 구조:
 *   div.el-lead
 *     p.el-lead__text     ← 요약 문장 (18px SemiBold)
 *     p.el-lead__desc     ← 보조 문단 (선택, 여러 개 가능)
 *     ul.el-bullet-list   ← 보조 불릿 (선택)
 */

.el-lead {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-12);
}

.el-lead__text {
    margin: 0;
    font-family: var(--font-title-xxsmall-family);
    font-size: var(--font-title-xxsmall-size); /* 18px*/
    font-weight: var(--font-weight-semibold);
    line-height: var(--font-title-xxsmall-line-height);
    letter-spacing: var(--font-title-xxsmall-letter-spacing);
    color: var(--text-bolder);
    word-break: keep-all;
  }

.el-lead__desc {
    margin: 0;
    font-family: var(--font-body-large-regular-family);
    font-size: var(--font-body-large-regular-size); /* 17px*/
    font-weight: var(--font-body-large-regular-weight);
    line-height: var(--font-body-large-regular-line-height);
    letter-spacing: var(--font-body-large-regular-letter-spacing);
    color: var(--text-default);
    word-break: keep-all;
  }

@media screen and (max-width: 767px) {
  .el-lead__text {
    font-size: var(--font-size-md); /* 17px*/
  }

  .el-lead__desc {
    font-size: var(--font-size-sm); /* 16px*/
  }
  }

/**
 * _bullet-list.scss
 * Elements 레이어 - 사각 불릿 목록 (.el-bullet-list)
 * .mod-num-list__bullet 의 5px 사각 불릿을 단독 요소로 분리 — 리드·표 셀·카드 어디서나 같은 불릿을 쓰기 위함
 *
 * 구조:
 *   ul.el-bullet-list[.el-bullet-list--sm]
 *     li.el-bullet-list__item
 *       ul.el-bullet-list   ← 하위 목록 (대시 표기, 1단계까지만)
 */

.el-bullet-list {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-8);
  margin: 0;
  padding: 0;
  list-style: none;
}

.el-bullet-list__item {
    position: relative;
    padding-left: 15px;
    font-family: var(--font-body-large-regular-family);
    font-size: var(--font-body-large-regular-size); /* 17px*/
    font-weight: var(--font-body-large-regular-weight);
    line-height: var(--font-body-large-regular-line-height);
    letter-spacing: var(--font-body-large-regular-letter-spacing);
    color: var(--text-default);
    word-break: keep-all;
  }

/* 사각 불릿 5px: 첫 줄 가운데 (줄 높이 1.5 기준)*/

.el-bullet-list__item::before {
      content: '';
      position: absolute;
      top: calc(0.75em - 2.5px);
      left: 0;
      width: 5px;
      height: 5px;
      background-color: var(--border-default);
    }

.el-bullet-list__item strong {
      font-weight: var(--font-weight-semibold);
      color: var(--text-bold);
    }

/* "이름: 설명" 항목의 이름표 (예: Open, Challenges) — 꼭 봐야 할 조건(<strong>, 600)과 구분되도록 한 단계 약한 Medium*/

.el-bullet-list__term {
    font-weight: var(--font-weight-medium);
    color: var(--text-bold);
  }

/* 16px 촘촘한 변형 — 표 셀·카드 안*/

.el-bullet-list--sm {
    gap: var(--spacing-4);
  }

.el-bullet-list--sm > .el-bullet-list__item {
    font-size: var(--font-body-medium-regular-size); /* 16px*/
  }

/* 하위 목록: 사각 대신 대시로 단계 구분*/

/* 들여쓰기만으로는 위계가 약해 한 단계 작은 글자로 구분 — 글자색은 유지(하위에도 중요한 정보가 있으므로 흐리게 하지 않음)*/

/* 항목 간격은 부모와 같게: 2px이면 두 줄짜리 항목이 다음 항목과 붙어 보임*/

.el-bullet-list .el-bullet-list {
  gap: var(--spacing-4);
  margin-top: var(--spacing-4);
}

.el-bullet-list .el-bullet-list > .el-bullet-list__item {
  font-size: var(--font-body-small-regular-size); /* 15px*/
}

.el-bullet-list .el-bullet-list > .el-bullet-list__item::before {
  top: 0.75em;
  width: 8px;
  height: 1px;
  background-color: var(--border-strong); /* 1px 선이라 6px로는 줄 시작점이 흐려 8px로 늘림*/
}

@media screen and (max-width: 767px) {
  .el-bullet-list__item {
    font-size: var(--font-size-sm); /* 16px*/
  }

  .el-bullet-list--sm > .el-bullet-list__item {
    font-size: var(--font-body-small-regular-size); /* 15px*/
  }

  .el-bullet-list .el-bullet-list > .el-bullet-list__item {
    font-size: var(--font-body-xsmall-regular-size); /* 14px*/
  }
  }

/**
 * _footnote.scss
 * Elements 레이어 - 각주 (.el-footnote)
 * 표·도표 아래 출처·산정 기준 안내. 기호는 ※ 로 통일하고 텍스트에 직접 쓴다.
 * 색: 14px 소형이라 대비 확보를 위해 --text-muted 대신 --text-default
 */

.el-footnote {
  margin: 0;
  font-family: var(--font-body-xsmall-regular-family);
  font-size: var(--font-body-xsmall-regular-size); /* 14px*/
  font-weight: var(--font-body-xsmall-regular-weight);
  line-height: var(--font-body-xsmall-regular-line-height);
  letter-spacing: var(--font-body-xsmall-regular-letter-spacing);
  color: var(--text-default);
  word-break: keep-all;
}

/* Modules Layer Index*/

/* 페이지를 구성하는 독립적인 컴포넌트(모듈) 스타일*/

/**
 * _badges.scss
 * Modules 레이어 - 배지 / 라벨 (.mod-badge)
 * Figma: Label/Badge 컴포넌트 기준
 *
 * [변형]
 * mod-badge--info    : 파랑 (신청완료, 정보)
 * mod-badge--success : 초록 (접수완료, 승인)
 * mod-badge--danger  : 빨강 (반려, 오류)
 * mod-badge--warning : 주황 (검토중)
 * mod-badge--muted   : 회색 (기본, 비활성)
 * mod-badge--notice  : 네이비 채움 필형 (게시판 공지·고정 글)
 * mod-badge--tag     : 회색 fill 태그형 (필터 태그 등)
 * mod-badge--outline-primary : 파랑 테두리형 (표 안 "신설" 등 알림 표기)
 * mod-badge--official : 공식 포털 표시 필형 (메인 비주얼 · 소개 페이지) — 어두운 배경은 --inverse 추가
 */

.mod-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: var(--spacing-4, 4px) var(--spacing-8, 8px);   /* 4px 8px*/
  border-radius: var(--radius-sm);     /* 2px*/
  font-family: var(--font-family-pretendard);
  font-size: var(--font-body-small-regular-size, 15px);   /* 15px*/
  font-weight: var(--font-body-small-medium-weight, 500);
  line-height: var(--font-body-small-regular-line-height, 1.5);
  letter-spacing: var(--font-body-small-regular-letter-spacing, -0.01em);
  white-space: nowrap;
}

/* ── 컬러 변형 ──────────────────────────────────────*/

/* [Figma] element/primary(파랑) · secondary(cyan) · gray 만 존재*/

/*  → info / primary / secondary / muted 는 신 토큰 재연결*/

/*  → success / warning / danger 는 상태색(구 토큰) 유지 (① 정책)*/

.mod-badge--info {
    background-color: rgba(57, 108, 250, 0.1);
    color: var(--element-primary, #396cfa);
  }

.mod-badge--primary {
    background-color: rgba(57, 108, 250, 0.1);
    color: var(--element-primary, #396cfa);
  }

.mod-badge--secondary {
    background-color: rgba(1, 161, 197, 0.1);
    color: var(--element-secondary, #01a1c5);
  }

/* ── 채움형(Solid) 변형 — Figma 행사구분 온라인/오프라인 뱃지 ──*/

.mod-badge--online {
    background-color: var(--element-primary, #396cfa);
    color: var(--text-inverse, #ffffff);
  }

.mod-badge--offline {
    background-color: var(--element-secondary, #01a1c5);
    color: var(--text-inverse, #ffffff);
  }

/* 공지(고정) 표시 — 연한 배경형 카테고리 뱃지와 색·모양 모두 구분되도록 네이비 채움 + 필형*/

.mod-badge--notice {
    padding-inline: var(--spacing-12, 12px);
    border-radius: var(--radius-full, 9999px);
    background-color: var(--color-navy, #1b2b43);
    color: var(--text-inverse, #ffffff);
    font-weight: var(--font-weight-bold, 700);
  }

.mod-badge--muted {
    background-color: var(--element-gray-lighter, #f2f3f8);
    color: var(--element-gray, #929aaa);
  }

.mod-badge--outline {
    background-color: transparent;
    border: 1px solid var(--border-default-strong, #cbd1dc);
    color: var(--text-bold, #262f3c);
  }

/* 파랑 테두리형 — 표 안 "신설" 같은 알림 표기. 선 위주 표에서 채움형(--primary)보다 가볍게 강조*/

.mod-badge--outline-primary {
    background-color: transparent;
    border: 1px solid var(--element-primary, #396cfa);
    color: var(--element-primary, #396cfa);
  }

/* ── 상태색(유지) ────────────────────────────────────*/

.mod-badge--success {
    background-color: var(--badge-success-bg);
    color: var(--badge-success-text);
  }

.mod-badge--danger,
  .mod-badge--error {
    background-color: var(--badge-danger-bg, rgba(235, 42, 41, 0.1));
    color: var(--badge-danger-text, #eb2a29);
  }

.mod-badge--warning {
    background-color: rgba(225, 98, 24, 0.1);
    color: var(--color-warning, #e16218);
  }

/* ── 카테고리 5색 (연한 배경형, 전용 토큰) ──────────────*/

/*  색 이름으로 명명 → 게시판마다 카테고리 매핑만 JS에서 지정 (예: 질의응답 문의 구분)*/

.mod-badge--cat-amber   { background-color: var(--badge-cat-amber-bg);   color: var(--badge-cat-amber-text); }

.mod-badge--cat-violet  { background-color: var(--badge-cat-violet-bg);  color: var(--badge-cat-violet-text); }

.mod-badge--cat-teal    { background-color: var(--badge-cat-teal-bg);    color: var(--badge-cat-teal-text); }

.mod-badge--cat-magenta { background-color: var(--badge-cat-magenta-bg); color: var(--badge-cat-magenta-text); }

.mod-badge--cat-olive   { background-color: var(--badge-cat-olive-bg);   color: var(--badge-cat-olive-text); }

/* ── 태그형 (필터/카테고리) ──────────────────────────*/

.mod-badge--tag {
    background-color: var(--element-gray-lighter, #f2f3f8);
    color: var(--text-bold, #262f3c);
    font-size: var(--font-body-small-medium-size, 15px);     /* 15px (Figma badge 최대 레벨)*/
    font-weight: var(--font-body-small-medium-weight, 500);
    padding: var(--spacing-4, 6px) var(--spacing-16, 17px);  /* 6px 17px*/
    border-radius: var(--radius-md);   /* 4px*/
  }

/* ── 공식 포털 표시 (메인 비주얼 · 소개 페이지 타이틀 위) ──*/

/*  상태 배지와 구분되도록 크게 + 필형 + 테두리만. 페이지마다 같은 모양·문구여야 "공식" 표시로 인식됨*/

.mod-badge--official {
    gap: var(--spacing-8, 8px);
    height: 32px;
    padding: 0 var(--spacing-16, 16px);
    box-sizing: border-box;
    border: 1px solid var(--element-primary, #396cfa);
    border-radius: var(--radius-full, 9999px);
    background-color: transparent;
    color: var(--element-primary, #396cfa);
    font-size: var(--font-body-xsmall-regular-size, 0.875rem); /* 14px*/
    font-weight: var(--font-weight-medium, 500);
    line-height: 1;
    letter-spacing: 0.02em;
  }

/* 국문 · 영문 사이 점 — 가운뎃점(·) 글자보다 약하게 보이도록 3px 원*/

.mod-badge__dot {
    display: inline-block;
    width: 3px;
    height: 3px;
    border-radius: 50%;
    background-color: currentColor;
    flex-shrink: 0;
  }

/* 어두운 이미지 배경 위 (메인 비주얼)*/

.mod-badge--inverse {
    border-color: rgba(255, 255, 255, 0.7);
    color: var(--text-inverse, #ffffff);
  }

@media screen and (max-width: 767px) {
  .mod-badge--official {
    gap: 6px;
    height: 28px;
    padding: 0 var(--spacing-12, 12px);
    font-size: var(--font-size-xxs, 13px);
  }
  }

/**
 * _alerts.scss
 * Modules 레이어 - 알림/안내 박스 (.mod-alert)
 * Figma: Alert 컴포넌트 기준
 *
 * [변형]
 * mod-alert--info    : 파랑 (승인 완료, 안내)
 * mod-alert--danger  : 빨강 (반려, 오류)
 * mod-alert--warning : 주황 (검토중)
 * mod-alert--neutral : 회색 (접수, 일반 안내)
 *
 * [사이즈]
 * 기본: 한 줄 (h-[62px])
 * mod-alert--multiline: 여러 줄 (반려 사유 등)
 */

.mod-alert {
  display: flex;
  align-items: center;
  gap: 0.625rem;                        /* 10px*/
  padding: 0 1.5rem;                    /* 24px*/
  height: 62px;
  border-radius: var(--radius-md);      /* 4px*/
  border: 1px solid var(--color-border-default);
  font-family: var(--font-family-base);
}

/* 아이콘 슬롯*/

.mod-alert__icon {
    flex-shrink: 0;
    width: var(--size-icon-lg);         /* 24px*/
    height: var(--size-icon-lg);
    display: flex;
    align-items: center;
    justify-content: center;
  }

.mod-alert__icon img, .mod-alert__icon svg { width: 100%; height: 100%; }

/* 텍스트 슬롯*/

.mod-alert__text {
    font-size: var(--font-size-md);     /* 17px (기본) / 18px (승인 알림)*/
    font-weight: var(--font-weight-medium);
    line-height: var(--line-height-relaxed);
    white-space: nowrap;
  }

.mod-alert__text strong {
      font-weight: var(--font-weight-bold);
    }

/* ── 여러 줄 (반려 사유 등) ─────────────────────────*/

.mod-alert--multiline {
    height: auto;
    align-items: flex-start;
    padding: 1.125rem 1.5rem;
  }

/* 18px 24px*/

.mod-alert--multiline .mod-alert__text {
      white-space: normal;
      line-height: var(--line-height-relaxed);
    }

/* ── 컬러 변형 ──────────────────────────────────────*/

.mod-alert--info {
    background-color: var(--alert-info-bg);
    border-color: var(--alert-info-border);
  }

.mod-alert--info .mod-alert__text { color: var(--alert-info-text); }

.mod-alert--info .mod-alert__icon { color: var(--alert-info-text); }

.mod-alert--danger {
    background-color: var(--alert-danger-bg);
    border-color: var(--alert-danger-border);
  }

.mod-alert--danger .mod-alert__text { color: var(--alert-danger-text); }

.mod-alert--danger .mod-alert__icon { color: var(--alert-danger-text); }

.mod-alert--warning {
    background-color: var(--alert-warning-bg);
    border-color: var(--alert-warning-border);
  }

.mod-alert--warning .mod-alert__text { color: var(--alert-warning-text); }

.mod-alert--warning .mod-alert__icon { color: var(--alert-warning-text); }

.mod-alert--neutral {
    background-color: var(--alert-neutral-bg);
    border-color: var(--alert-neutral-border);
  }

.mod-alert--neutral .mod-alert__text { color: var(--alert-neutral-text); }

.mod-alert--neutral .mod-alert__icon { color: var(--alert-neutral-text); }

/* ── 인라인 알림 (경고 문구, 개인정보 주의 등) ────────*/

.mod-alert--inline {
    height: auto;
    padding: 1rem;
    align-items: flex-start;
    border-radius: var(--radius-md);
  }

.mod-alert--inline .mod-alert__icon {
      width: 22px;
      height: 22px;
      margin-top: 1px;
    }

.mod-alert--inline .mod-alert__text {
      font-size: var(--font-size-sm);   /* 16px*/
      white-space: normal;
    }

/**
 * _tabs.scss
 * Modules 레이어 - 탭 (.mod-tab)
 * Figma: Tab 컴포넌트 기준 (네이비 fill 방식)
 */

.mod-tab {
  display: flex;
  align-items: stretch;
  gap: var(--spacing-4, 4px);
}

/* [Figma] Primary 탭 간격 4px (개별 블록)*/

/* ── 탭 아이템 (Primary: 개별 라운드 블록) ──────────────*/

.mod-tab__item {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    height: var(--size-tab-height);     /* 60px*/
    padding: 0 var(--spacing-24, 24px);
    font-family: var(--font-family-pretendard);
    font-size: var(--font-title-xsmall-size, 20px);     /* 20px (Figma title/xsmall)*/
    font-weight: var(--font-title-xsmall-weight, 700);
    letter-spacing: var(--font-title-xsmall-letter-spacing, -0.01em);
    cursor: pointer;
    transition: background-color 0.2s ease, color 0.2s ease;
    white-space: nowrap;
    border-radius: var(--radius-fig-sm, 4px);   /* 네 모서리 전부 4px*/

    /* 비활성 (Figma: tab/inactive)*/
    background-color: var(--tab-inactive, #dce0ea);
    color: var(--text-default, #4a5667);
  }

/* 활성 (Figma: tab/active)*/

.mod-tab__item.is-active,
    .mod-tab__item[aria-selected="true"] {
      background-color: var(--tab-active, #1f2c42);
      color: var(--text-inverse, #ffffff);
      font-weight: var(--font-title-xsmall-weight, 700);
    }

.mod-tab__item:hover:not(.is-active):not([aria-selected="true"]) {
      background-color: rgba(38, 47, 60, 0.08);
    }

/* ── Secondary: 언더라인 방식 ──────────────────────────────*/

/* [Figma] 활성 = 진한 네이비(tab/active #101E44) 2px 밑줄 + Bold 16px*/

/*         비활성 = text/muted + 1px inactive 밑줄*/

.mod-tab--underline {
    border-bottom: 1px solid var(--tab-inactive, #dce0ea);
    gap: 0;
  }

.mod-tab--underline .mod-tab__item {
      flex: initial;
      padding: 0 var(--spacing-20, 20px);
      height: 48px;
      background-color: transparent;
      color: var(--text-muted, #929aaa);
      font-size: var(--font-body-medium-regular-size, 16px);
      font-weight: var(--font-body-medium-regular-weight, 400);
      border-radius: 0;
      border-bottom: 2px solid transparent;
      margin-bottom: -1px;
    }

.mod-tab--underline .mod-tab__item.is-active,
      .mod-tab--underline .mod-tab__item[aria-selected="true"] {
        background-color: transparent;
        color: var(--tab-active, #1f2c42);
        border-bottom-color: var(--tab-active, #1f2c42);
        font-weight: var(--font-body-medium-bold-weight, 700);
      }

.mod-tab--underline .mod-tab__item:hover:not(.is-active) {
        background-color: var(--background-subtle, #f8f9fb);
        color: var(--text-bold, #262f3c);
      }

/* ── Tertiary: 분절 아웃라인 그룹 (신설) ──────────────────────*/

/* [Figma] 활성 = 파랑 테두리+텍스트(tab/tertiary-active #396CFA) Bold 15px*/

/*         비활성 = inactive 테두리 + text/muted Medium 15px, 양끝 radius 4px*/

.mod-tab--tertiary {
    display: inline-flex;
    align-items: stretch;
    gap: 0;
  }

.mod-tab--tertiary .mod-tab__item {
      flex: initial;
      height: 40px;
      padding: 0 var(--spacing-16, 16px);
      background-color: var(--gray-0, #ffffff);
      color: var(--text-muted, #929aaa);
      font-size: var(--font-body-small-medium-size, 15px);
      font-weight: var(--font-body-small-medium-weight, 500);
      border: 1px solid var(--tab-inactive, #dce0ea);
      border-radius: 0;
    }

.mod-tab--tertiary .mod-tab__item:not(:first-child) {
        margin-left: -1px; /* 이웃 테두리 1px 공유(겹침 방지)*/
      }

.mod-tab--tertiary .mod-tab__item:first-child {
        border-top-left-radius: var(--radius-fig-sm, 4px);
        border-bottom-left-radius: var(--radius-fig-sm, 4px);
      }

.mod-tab--tertiary .mod-tab__item:last-child {
        border-top-right-radius: var(--radius-fig-sm, 4px);
        border-bottom-right-radius: var(--radius-fig-sm, 4px);
      }

.mod-tab--tertiary .mod-tab__item.is-active,
      .mod-tab--tertiary .mod-tab__item[aria-selected="true"] {
        position: relative;
        z-index: 1; /* 파랑 테두리가 이웃 위로 보이도록*/
        background-color: var(--gray-0, #ffffff);
        border-color: var(--tab-tertiary-active, #396cfa);
        color: var(--text-primary, #396cfa);
        font-weight: var(--font-body-small-bold-weight, 700);
      }

.mod-tab--tertiary .mod-tab__item:hover:not(.is-active):not([aria-selected="true"]) {
        background-color: var(--background-subtle, #f8f9fb);
      }

/* ── Page: 페이지 3뎁스 이동 탭 (신설, Figma Tab Bar / Primary 2070:4492) ──*/

/* 탭마다 라우트가 분리된 링크(<a aria-current="page">) — Primary 스킨 그대로, 간격 16px · 높이 64px · 탭 폭 409px 가운데 정렬*/

.mod-tab--page {
  justify-content: center;
  gap: var(--spacing-16);
}

.mod-tab--page .mod-tab__item {
    flex: 0 1 409px;
    height: 64px;
    text-decoration: none;
  }

.mod-tab--page .mod-tab__item:focus-visible {
      outline: 2px solid var(--text-primary);
      outline-offset: 2px;
    }

/* "Pillar 1." — 이름과 한 칸 띄움 (태블릿 이하에서는 윗줄로 분리)*/

.mod-tab--page .mod-tab__prefix {
    margin-right: 0.5em;
  }

/* ── Page + 국영문 병기 (.mod-tab--bilingual) — 마이페이지 등 국/영 사용자 공용 화면 ──*/

/* 국문(위) + __en 영문(아래, 작게) 두 줄. 탭 폭·높이·정렬은 --page 그대로, 모바일은 한 줄*/

.mod-tab--bilingual .mod-tab__item {
  flex-direction: column;
  gap: 2px;
  line-height: 1.3;
}

.mod-tab__en {
  font-size: var(--font-body-xsmall-regular-size, 0.875rem);
  font-weight: var(--font-weight-regular, 400);
  letter-spacing: 0;
  opacity: 0.8;
}

/* 태블릿 이하: 3개 탭이 한 줄에 들어가도록 "Pillar N." / 이름 두 줄*/

@media screen and (max-width: 1279px) {
  .mod-tab--page {
    gap: var(--spacing-8);
  }

  .mod-tab--page .mod-tab__item {
    flex: 1 1 0;
    flex-direction: column;
    height: auto;
    min-height: 64px;
    padding: var(--spacing-12) var(--spacing-16);
    font-size: var(--font-size-md); /* 17px*/
    line-height: 1.4;
    text-align: center;
    white-space: normal;
    word-break: keep-all;
  }

  .mod-tab--page .mod-tab__prefix {
    margin-right: 0;
  }
  }

/* 모바일: 세로로 쌓고 한 줄 표기로 복귀*/

@media screen and (max-width: 767px) {
  .mod-tab--page {
    flex-direction: column;
  }

  .mod-tab--page .mod-tab__item {
    flex: none;
    flex-direction: row;
    justify-content: flex-start;
    min-height: 52px;
    text-align: left;
  }

  .mod-tab--page .mod-tab__prefix {
    margin-right: 0.5em;
  }

  /* 국영문: 세로로 쌓인 탭에서는 "국문 영문" 한 줄*/
  .mod-tab--bilingual .mod-tab__item {
    flex-direction: row;
    align-items: center;
    gap: 0.5em;
  }
  }

/**
 * _stepper.scss
 * Modules 레이어 - 단계 인디케이터 (.mod-stepper)
 * Figma: Step 컴포넌트 기준 (1→2→3→4 단계)
 */

.mod-stepper {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
}

/* ── 단계 아이템 ────────────────────────────────────*/

.mod-stepper__item {
    display: flex;
    align-items: center;
    gap: 0.5rem;                        /* 8px*/
    position: relative;
  }

/* ── 단계 번호 원 ───────────────────────────────────*/

.mod-stepper__circle {
    width: 40px;
    height: 40px;
    border-radius: var(--radius-full);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-family: var(--font-family-base);
    font-size: var(--font-size-md);     /* 17px*/
    font-weight: var(--font-weight-semibold);
    letter-spacing: var(--letter-spacing-tight);
    transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;

    /* 기본 (비활성)*/
    border: 2px solid var(--step-inactive-border);
    background-color: transparent;
    color: var(--step-inactive-text);
  }

/* ── 단계 라벨 ──────────────────────────────────────*/

.mod-stepper__label {
    font-family: var(--font-family-base);
    font-size: var(--font-size-md);     /* 17px*/
    font-weight: var(--font-weight-medium);
    letter-spacing: var(--letter-spacing-tight);
    color: var(--color-text-body);
    white-space: nowrap;
  }

/* ── 연결선 (점선) ──────────────────────────────────*/

.mod-stepper__connector {
    display: flex;
    align-items: center;
    gap: 4px;
    margin: 0 0.25rem;
  }

/* 4px*/

.mod-stepper__connector span {
      display: block;
      width: 4px;
      height: 4px;
      border-radius: 50%;
      background-color: var(--step-connector);
      flex-shrink: 0;
    }

/* ── 활성 상태 ──────────────────────────────────────*/

.mod-stepper__item.is-active .mod-stepper__circle {
        background-color: var(--step-active-bg);
        border-color: var(--step-active-bg);
        color: var(--step-active-text);
      }

.mod-stepper__item.is-active .mod-stepper__label {
        color: var(--color-text-body);
        font-weight: var(--font-weight-medium);
      }

/* 완료 상태*/

.mod-stepper__item.is-done .mod-stepper__circle {
        background-color: var(--color-primary);
        border-color: var(--color-primary);
        color: #ffffff;
      }

.mod-stepper__item.is-done .mod-stepper__label {
        color: var(--color-text-body);
      }

/**
 * _info-box.scss
 * Modules 레이어 - 안내 박스 (.mod-info-box)
 * Figma: Info-box 컴포넌트 기준
 * 사용처: 자료 활용 안내, 모바일 서비스 신청 안내 등
 *
 * [변형]
 * 기본(아이콘X): 텍스트 + 불릿 리스트
 * mod-info-box--icon: 아이콘 + 텍스트 + 불릿 리스트
 */

.mod-info-box {
  display: flex;
  align-items: flex-start;
  gap: 1.5rem;                          /* 24px*/
  padding: 2.25rem 1.875rem;            /* 36px 30px*/
  background-color: var(--color-gray-50);
  border-radius: var(--radius-2xl);
}

/* 10px*/

/* ── 아이콘 영역 ────────────────────────────────────*/

.mod-info-box__icon-wrap {
    flex-shrink: 0;
    width: 50px;
    height: 50px;
    border-radius: var(--radius-xl);    /* 8px*/
    background-color: var(--color-primary);
    display: flex;
    align-items: center;
    justify-content: center;
  }

.mod-info-box__icon-wrap img, .mod-info-box__icon-wrap svg {
      width: 24px;
      height: 24px;
    }

/* ── 콘텐츠 영역 ────────────────────────────────────*/

.mod-info-box__content {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.875rem;                      /* 14px (아이콘O) / 10px (아이콘X)*/
  }

/* ── 제목 ───────────────────────────────────────────*/

.mod-info-box__title {
    font-family: var(--font-family-base);
    font-size: var(--font-size-xl);     /* 22px*/
    font-weight: var(--font-weight-semibold);
    color: var(--color-primary);
    letter-spacing: var(--letter-spacing-tight);
    white-space: nowrap;
  }

/* ── 불릿 리스트 ────────────────────────────────────*/

.mod-info-box__list {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;                       /* 4px*/
    list-style: none;
    padding: 0;
    margin: 0;
  }

.mod-info-box__list-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
  }

/* 8px*/

/* 불릿 점*/

.mod-info-box__list-item::before {
      content: '';
      flex-shrink: 0;
      width: 5px;
      height: 5px;
      border-radius: 50%;
      background-color: var(--color-gray-400);
    }

.mod-info-box__list-item span {
      font-family: var(--font-family-base);
      font-size: var(--font-size-sm);   /* 16px*/
      font-weight: var(--font-weight-regular);
      color: var(--color-text-body);
      line-height: var(--line-height-relaxed);
      letter-spacing: -0.01em;
    }

/* ── 아이콘 없는 변형 ───────────────────────────────*/

.mod-info-box--no-icon .mod-info-box__content {
      gap: 0.625rem;                    /* 10px*/
    }

/* ── Flat: 아이콘·제목 없는 설명 단락 박스 (신설, Figma 2070:4546) ──*/

/* 필라 도입부처럼 긴 설명을 회색 바탕에 담는 용도*/

.mod-info-box--flat {
  padding: 30px; /* Figma 패딩 (spacing 스케일에 30 없음)*/
  background-color: var(--background-subtle);
  border-radius: var(--radius-fig-sm);
}

.mod-info-box__text {
  margin: 0;
  font-family: var(--font-family-pretendard);
  font-size: var(--font-body-large-medium-size, 1.0625rem); /* 17px*/
  font-weight: var(--font-weight-medium, 500);
  line-height: 1.5;
  letter-spacing: -0.01em;
  color: var(--text-bold);
  word-break: keep-all;
}

.mod-info-box__text + .mod-info-box__text {
    margin-top: var(--spacing-4);
  }

@media screen and (max-width: 767px) {
  .mod-info-box--flat {
    padding: var(--spacing-20);
  }

  .mod-info-box__text {
    font-size: var(--font-size-sm); /* 16px*/
  }
  }

/**
 * _cards.scss
 * Modules 레이어 - 범용 카드 (.mod-card)
 * Figma: Card 컴포넌트 표준
 *
 * [슬롯 구조]
 * .mod-card
 *  ├── .mod-card__head          : 상단 헤더 (제목/설명/도구)
 *  │    ├── .mod-card__title    : 카드 타이틀 (아이콘 + 텍스트)
 *  │    ├── .mod-card__desc     : 부연 설명글
 *  │    └── .mod-card__extra    : 우측 보조 도구 (배지, 버튼, 필수 표시)
 *  ├── .mod-card__body          : 메인 영역 (폼 테이블, 메타 리스트 등)
 *  └── .mod-card__foot          : 하단 액션 영역 (버튼 세트)
 *
 * [변형자]
 * .mod-card--interactive : 클릭 가능한 목록 카드 (호버 시 테두리 & 그림자)
 * .mod-card--compact     : 좁은 여백 카드
 * .mod-card--table-row   : 테이블 행형 카드
 */

.mod-card {
  display: flex;
  flex-direction: column;
  background-color: var(--color-surface);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-2xl);
  padding: 1.5rem; /* 24px 표준 패딩*/
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  transition: box-shadow 0.2s ease, border-color 0.2s ease;
}

/* ── 1. 카드 상단 헤더 슬롯 ─────────────────────*/

.mod-card__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--color-border-default);
    margin-bottom: 1rem;
  }

.mod-card__title {
    font-family: var(--font-family-base);
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-bold);
    color: var(--color-text-primary);
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0;
  }

.mod-card__title svg, .mod-card__title i[data-feather] {
      color: var(--color-primary);
      width: 1.25rem;
      height: 1.25rem;
      flex-shrink: 0;
    }

.mod-card__desc {
    font-family: var(--font-family-base);
    font-size: var(--font-size-xxs);
    color: var(--color-text-muted);
    margin-top: 0.25rem;
    line-height: var(--line-height-normal);
  }

.mod-card__extra {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
  }

/* ── 2. 카드 메인 바디 슬롯 ─────────────────────*/

.mod-card__body {
    flex: 1;
    min-width: 0;
  }

/* ── 3. 카드 하단 푸터 슬롯 ─────────────────────*/

.mod-card__foot,
  .mod-card__footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5rem;
    padding-top: 1rem;
    margin-top: 1rem;
    border-top: 1px solid var(--color-border-default);
  }

/* 기존 데이터 호환용 ID & Meta*/

.mod-card__id {
    font-family: var(--font-family-base);
    font-size: var(--font-size-md);
    font-weight: var(--font-weight-medium);
    color: var(--color-text-secondary);
  }

.mod-card__meta {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
  }

.mod-card__meta-item {
    font-family: var(--font-family-base);
    font-size: var(--font-size-xs);
    color: var(--color-text-body);
  }

/* ── 4. 타입 변형자 ──────────────────────────────*/

.mod-card--interactive {
    cursor: pointer;
  }

.mod-card--interactive:hover {
      border-color: var(--color-primary);
      box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
    }

.mod-card--compact {
    padding: 1rem;
  }

.mod-card--compact .mod-card__head {
      padding-bottom: 0.75rem;
      margin-bottom: 0.75rem;
    }

.mod-card--table-row {
    flex-direction: row;
    align-items: center;
    gap: 1rem;
    padding: 1rem 1.5rem;
    border-radius: 0;
    border-left: none;
    border-right: none;
    border-top: none;
  }

.mod-card--table-row:last-child {
      border-bottom: none;
    }

.mod-card--table-row:hover {
      background-color: var(--color-gray-50);
      box-shadow: none;
    }

/**
 * _forms.scss
 * Modules 레이어 - 폼 요소 (.mod-form)
 * Figma: Form/Table 컴포넌트 기준 (label + input 행 구조)
 */

/* ── 폼 테이블 (label 좌측 고정 + input 우측) ──────────*/

.mod-form-table {
  width: 100%;
  border-top: 2px solid var(--color-text-primary);
}

.mod-form-table__row {
    display: flex;
    align-items: stretch;
    border-bottom: 1px solid var(--form-divider);
  }

.mod-form-table__label {
    flex-shrink: 0;
    width: 228px;
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 0 1.25rem; /* 20px*/
    background-color: var(--form-label-bg);
    font-family: var(--font-family-base);
    font-size: var(--font-size-md); /* 17px*/
    font-weight: var(--font-weight-medium);
    color: var(--form-label-text);
    letter-spacing: var(--letter-spacing-tight);
    min-height: 54px;
    line-height: 54px;
  }

/* 필수 표시 (*)*/

.mod-form-table__label-required {
      color: var(--form-required-color);
      font-size: var(--font-size-sm);
      font-weight: var(--font-weight-bold);
      line-height: 1;
    }

.mod-form-table__control {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 0.8125rem; /* 13px*/
    padding: 1.25rem 1rem; /* 20px 16px*/
    min-width: 0;
  }

/* 2줄 라벨(.el-flabel) 조합 시 정렬 보장 (모듈 로드 순서 우선순위 보정)*/

/* 별표(좌측 absolute) + 국/영문 그룹 → 가로 배치, 상하 중앙 정렬*/

.mod-form-table__label.el-flabel {
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    padding-left: 1.75rem; /* 별표 공간 + 자연스러운 들여쓰기 (기존 20px보다 우측으로)*/
  }

/* ── 인풋 기본 (.mod-input) ────────────────────────────*/

.mod-input {
  display: flex;
  align-items: center;
  gap: 0.625rem; /* 10px*/
  height: var(--size-input-height); /* 44px*/
  padding: 0 0.75rem; /* 12px*/
  background-color: var(--input-surface, #ffffff);
  border: 1px solid var(--input-border, #dce0ea);
  border-radius: var(--radius-lg); /* 5px*/
  font-family: var(--font-family-pretendard);
  font-size: var(--font-body-medium-regular-size, 16px); /* 16px*/
  font-weight: var(--font-body-medium-regular-weight, 400);
  color: var(--text-default, #4a5667);
  letter-spacing: var(--font-body-medium-regular-letter-spacing, -0.01em);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  width: 100%;
}

.mod-input::-moz-placeholder {
    color: var(--text-muted, #929aaa);
  }

.mod-input::placeholder {
    color: var(--text-muted, #929aaa);
  }

.mod-input:focus {
    outline: none;
    border-color: var(--input-border-active, #cbd1dc);
    box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.12);
  }

.mod-input:disabled,
  .mod-input.is-disabled {
    background-color: var(--input-surface-disabled, #f8f9fb);
    color: var(--text-disabled, #929aaa);
    cursor: not-allowed;
  }

/* 고정 너비 (폼 테이블 내 표준 너비)*/

.mod-input--fixed {
    width: 400px;
  }

/* 높이 단계 (Figma 52:714) — .el-label 단계와 짝을 이룸*/

.mod-input--lg { height: 56px; }

/* large  → .el-label--lg (17px)*/

.mod-input--md { height: 48px; }

/* medium → .el-label--md (16px)*/

.mod-input--sm {                  /* small  → .el-label--sm (15px)*/
    height: 40px;
    font-size: var(--font-body-small-regular-size, 15px);
  }

/* 여러 줄 입력 (<textarea>) — Figma 155:10249 (높이 160 · 패딩 16/20 · 15px)*/

.mod-input--textarea {
    display: block;
    height: 160px;
    padding: var(--spacing-16, 16px) var(--spacing-20, 20px);
    font-size: var(--font-body-small-regular-size, 15px);
    line-height: var(--font-body-small-regular-line-height, 1.5);
    resize: vertical;
  }

/* 에러 상태*/

.mod-input.is-error {
    border-color: var(--input-border-error, #d0121b);
  }

.mod-input.is-error:focus {
      box-shadow: 0 0 0 3px rgba(208, 18, 27, 0.12);
    }

/* ── 셀렉트 박스 (.mod-select) ─────────────────────────*/

.mod-select {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  min-height: var(--size-input-height, 44px);
  padding: 0.5rem 1rem;
  background-color: var(--input-surface, #ffffff);
  border: 1px solid var(--input-border, #dce0ea);
  border-radius: var(--radius-md, 4px);
  font-family: var(--font-family-pretendard);
  font-size: var(--font-body-medium-regular-size, 16px);
  font-weight: var(--font-body-medium-regular-weight, 400);
  color: var(--text-default, #4a5667);
  letter-spacing: var(--font-body-medium-regular-letter-spacing, -0.01em);
  cursor: pointer;
  min-width: 200px;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.mod-select:hover {
    border-color: var(--input-border-active, #cbd1dc);
  }

/* 키보드 포커스 (Tab 이동) — 마우스 클릭에는 표시 안 함*/

.mod-select:focus-visible {
    outline: none;
    border-color: var(--element-primary, #396cfa);
    box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.12);
  }

.mod-select.is-open {
    border-color: var(--element-primary, #396cfa);
    box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.12);
  }

/* 비활성 (선행 항목 미선택 등) — 클릭 차단*/

.mod-select.is-disabled {
    background-color: var(--input-surface-disabled, #f8f9fb);
    border-color: var(--input-border-disabled, #dce0ea);
    color: var(--text-disabled, #929aaa);
    cursor: not-allowed;
    pointer-events: none;
  }

/* 에러 (필수 미선택)*/

.mod-select.is-error {
    border-color: var(--input-border-error, #d0121b);
  }

.mod-select__value-text {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

.mod-select__icon {
    flex-shrink: 0;
    width: var(--size-icon-sm, 16px);
    height: var(--size-icon-sm, 16px);
    transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  }

.mod-select.is-open .mod-select__icon {
    transform: rotate(180deg);
  }

/* 커스텀 옵션 드롭다운 오버레이*/

.mod-select__dropdown {
    position: absolute;
    top: calc(100% + 6px);
    left: -1px;
    right: -1px;
    z-index: 150;
    background-color: var(--color-surface);
    border: 1px solid var(--color-border-default);
    border-radius: var(--radius-md, 4px);
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.12);
    max-height: 280px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;
  }

.mod-select.is-open .mod-select__dropdown {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
  }

/* 1. 드롭다운 내 실시간 검색창 (Search Wrapper)*/

.mod-select__search-wrapper {
    padding: 8px 10px;
    border-bottom: 1px solid var(--color-border-default, #e0e0e0);
    background-color: var(--color-gray-50, #f8f9fa);
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
  }

.mod-select__search-input {
    width: 100%;
    padding: 6px 10px;
    font-size: 14px;
    border: 1px solid var(--color-border-default, #e0e0e0);
    border-radius: var(--radius-sm, 2px);
    outline: none;
    background-color: var(--input-surface, #ffffff);
    color: var(--text-default, #4a5667);
  }

.mod-select__search-input:focus {
      border-color: var(--element-primary, #396cfa);
    }

/* 2. 옵션 목록 리스트*/

.mod-select__options-list {
    overflow-y: auto;
    overscroll-behavior: contain; /* 목록 끝에 닿아도 배경 페이지로 스크롤이 넘어가지 않게*/
    padding: 4px 0;
    max-height: 220px;
  }

.mod-select__options-list::-webkit-scrollbar {
      width: 6px;
    }

.mod-select__options-list::-webkit-scrollbar-thumb {
      background-color: var(--color-gray-300, #d5d5d5);
      border-radius: 3px;
    }

.mod-select__option {
    padding: 10px 16px;
    font-size: 15px;
    color: var(--color-text-primary, #111111);
    transition: background-color 0.15s ease, color 0.15s ease;
    cursor: pointer;
    text-align: left;
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

.mod-select__option svg {
      color: var(--color-text-muted, #888888);
      transition: color 0.15s ease, transform 0.15s ease;
    }

/* .is-active: 키보드(↑↓)로 이동 중인 항목 — 마우스 hover 와 같은 표시*/

.mod-select__option:hover,
    .mod-select__option.is-active {
      background-color: var(--element-primary-lighter, #f5f8ff);
      color: var(--element-primary, #396cfa);
      font-weight: var(--font-weight-medium, 500);
    }

.mod-select__option:hover svg, .mod-select__option.is-active svg {
        color: var(--element-primary, #396cfa);
      }

.mod-select__option:hover .mod-checkbox__label, .mod-select__option.is-active .mod-checkbox__label {
        color: var(--element-primary, #396cfa);
      }

.mod-select__option.is-selected {
      background-color: var(--element-primary-lighter, #f5f8ff);
      font-weight: var(--font-weight-bold, 700);
      color: var(--element-primary, #396cfa);
    }

.mod-select__option.is-selected svg {
        color: var(--element-primary, #396cfa);
      }

/* 검색 결과 없음 안내*/

.mod-select__option--empty {
      padding: 16px;
      text-align: center;
      color: var(--color-text-muted, #888888);
      font-size: 14px;
      cursor: default;
    }

.mod-select__option--empty:hover {
        background-color: transparent;
        color: var(--color-text-muted, #888888);
      }

/* 3. 다중 선택 (Multi-Select) 특화 스타일*/

.mod-select--multi .mod-select__option {
      gap: 10px;
      justify-content: flex-start;
    }

.mod-select--multi .mod-select__option .mod-checkbox {
        pointer-events: none; /* 클릭 이벤트는 li.mod-select__option이 전체 처리*/
      }

/* ═══════════════════════════════════════════════════════════*/

/* 신규 셀렉트 스타일 (Figma 노드 155:8727 기준)*/

/*  - 기능은 기존과 동일, 룩만 신규 (높이 48 / 진한 테두리 #4A5667 / 15px Medium)*/

/*  - 일반(native): .el-select--line*/

/*  - 커스텀(mod-select): .mod-select--line (기존 JS 그대로 동작)*/

/* ═══════════════════════════════════════════════════════════*/

/* (A) 커스텀 셀렉트 신규 변형 (.mod-select--line) — 기존 .mod-select 위에 조합*/

.mod-select--line {
  min-height: 48px;
  padding: 0.5rem 0.75rem 0.5rem 1rem;
  border: 1px solid var(--border-strong-dark, #4a5667);
  border-radius: var(--radius-md, 4px);
  font-size: var(--font-body-small-medium-size, 15px);
  font-weight: var(--font-weight-medium, 500);
  color: var(--text-bold, #262f3c);
}

.mod-select--line:hover {
    border-color: var(--text-bolder, #090c10);
  }

.mod-select--line.is-open {
    border-color: var(--element-primary, #396cfa);
    box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.12);
  }

/* 화살표 24px*/

.mod-select--line .mod-select__icon {
    width: 24px;
    height: 24px;
    color: var(--border-strong-dark, #4a5667);
  }

/* (A-1) 커스텀 셀렉트 높이 단계 — 기본(연한 테두리) 스킨 그대로 높이·글자만 조정 (Figma 검색그룹 2084:13244)*/

/*   --md 48px · 15px (목록 한 줄 검색) / --sm 40px · 14px (상세 검색)*/

.mod-select--md {
  min-height: 48px;
  font-size: var(--font-body-small-regular-size, 15px);
}

.mod-select--md .mod-select__icon {
    width: 20px;
    height: 20px;
  }

.mod-select--sm {
  min-height: 40px;
  padding: 0.25rem 0.75rem;
  font-size: var(--font-body-xsmall-regular-size, 14px);
}

.mod-select--sm .mod-select__icon {
    width: 16px;
    height: 16px;
  }

/* (A-2) 커스텀 셀렉트 밑줄형 (.mod-select--underline) — Figma 92:749 "Sort Order"*/

/*  셀렉트 2종 체계: 폼 입력 = --line(박스형) / 게시판 정렬 등 툴바 = --underline(밑줄형)*/

/*  아이콘은 채워진 삼각형(▼) 24px, fill: currentColor*/

.mod-select--underline {
  min-width: 120px;
  min-height: 48px;
  gap: var(--spacing-8); /* 텍스트 ↔ 보조 텍스트 (아이콘 앞은 아래 margin으로 40px)*/
  padding: 0 var(--spacing-4);
  background-color: var(--background-default);
  border: 0;
  border-bottom: 1px solid var(--border-strong-dark);
  border-radius: 0;
  font-size: var(--font-body-small-medium-size, 15px);
  font-weight: var(--font-weight-medium, 500);
  color: var(--text-bold);
}

.mod-select--underline:hover {
    border-bottom-color: var(--text-bolder);
  }

/* 박스형과 달리 외곽 그림자 없이 밑줄 색만 전환*/

.mod-select--underline.is-open,
  .mod-select--underline:focus-visible {
    border-bottom-color: var(--element-primary);
    box-shadow: none; /* 기본 .mod-select.is-open 외곽 그림자 해제*/
    outline: none;
  }

/* 보조 텍스트(선택)는 value-text 형제로 둔다 — 선택 시 JS가 value-text를 통째로 교체하기 때문*/

.mod-select--underline .mod-select__value-text:has(+ .mod-select__subtext) {
    flex: 0 1 auto;
  }

.mod-select--underline .mod-select__subtext {
    flex: 1 1 auto;
    font-size: var(--font-body-xsmall-regular-size, 14px);
    font-weight: var(--font-weight-regular, 400);
    color: var(--text-muted);
    white-space: nowrap;
  }

.mod-select--underline .mod-select__icon {
    width: 24px;
    height: 24px;
    margin-left: 32px; /* gap 8 + 32 = 텍스트 ↔ 아이콘 40px (Figma)*/
    color: var(--text-bold);
    fill: currentColor;
  }

/* 드롭다운은 밑줄 폭에 맞춤 (박스형의 -1px 보정 불필요)*/

.mod-select--underline .mod-select__dropdown {
    left: 0;
    right: 0;
  }

/* (B) 일반 네이티브 셀렉트 신규 스타일 (.el-select--line)*/

/*  네이티브 <select>에 직접 적용. 커스텀 화살표는 배경 SVG로 처리.*/

.el-select {
  width: 100%;
  min-height: 48px;
  padding: 0 2.5rem 0 1rem;
  font-family: var(--font-family-pretendard);
  font-size: var(--font-body-medium-regular-size, 16px);
  font-weight: var(--font-weight-regular, 400);
  color: var(--text-default, #4a5667);
  background-color: var(--background-default, #ffffff);
  border: 1px solid var(--input-border, #dce0ea);
  border-radius: var(--radius-md, 4px);
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  cursor: pointer;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%234a5667' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.625rem center;
  background-size: 20px 20px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.el-select:hover {
    border-color: var(--input-border-active, #cbd1dc);
  }

.el-select:focus {
    outline: none;
    border-color: var(--element-primary, #396cfa);
    box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.12);
  }

/* 신규 라인 변형 (Figma 155:8727) — 진한 테두리 / 15px Medium / 텍스트 #262F3C*/

.el-select--line {
    font-size: var(--font-body-small-medium-size, 15px);
    font-weight: var(--font-weight-medium, 500);
    color: var(--text-bold, #262f3c);
    border-color: var(--border-strong-dark, #4a5667);
  }

.el-select--line:hover {
      border-color: var(--text-bolder, #090c10);
    }

/* 높이 단계 (Figma 52:714) — .el-label 단계와 짝*/

.el-select--lg { min-height: 56px; }

/* large  → .el-label--lg*/

.el-select--md { min-height: 48px; }

/* medium → .el-label--md*/

.el-select--sm {                      /* small → .el-label--sm*/
    min-height: 40px;
    font-size: var(--font-body-small-regular-size, 15px);
  }

/* ── 에디터 플레이스홀더 (.mod-editor) ─────────────────*/

/* 실제 WYSIWYG 연동 전 목업 툴바 + 입력 영역 (작성 폼용)*/

.mod-editor {
  border: 1px solid var(--input-border, #dce0ea);
  border-radius: var(--radius-md, 4px);
  overflow: hidden;
  background-color: var(--input-surface, #ffffff);
}

.mod-editor__toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border-bottom: 1px solid var(--border-default, #dce0ea);
    background-color: var(--color-bg-subtle, #f8f9fb);
    font-size: 13px;
    color: var(--text-muted, #929aaa);
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
  }

/* 아이콘 툴바 버튼 (목업) — B · I · U · 정렬 · 목록 · 링크 · 실행 취소/다시 실행*/

.mod-editor__tool {
    width: 28px;
    height: 28px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 0;
    border-radius: var(--radius-fig-xs, 2px);
    background: none;
    color: var(--text-bold, #262f3c);
    cursor: pointer;
  }

.mod-editor__tool svg {
      width: 16px;
      height: 16px;
    }

.mod-editor__tool:hover {
      background-color: var(--background-muted, #eef0f5);
    }

.mod-editor__tool-sep {
    width: 1px;
    height: 16px;
    background-color: var(--border-default, #dce0ea);
  }

.mod-editor__tool-end {
    margin-left: auto;
    display: inline-flex;
    gap: 4px;
  }

.mod-editor.is-error {
    border-color: var(--input-border-error, #d0121b);
  }

.mod-editor__area {
    min-height: 320px;
    padding: 1rem;
    font-family: var(--font-family-base);
    font-size: var(--font-body-medium-regular-size, 16px);
    color: var(--text-default, #4a5667);
    line-height: 1.6;
    outline: none;
  }

.mod-editor__area:empty::before {
      content: attr(data-placeholder);
      color: var(--text-muted, #929aaa);
    }

/* ── 검색 인풋 (.mod-search) ───────────────────────────*/

.mod-search {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  height: var(--size-btn-height-lg); /* 55px*/
  padding: 0 1rem;
  background-color: var(--color-surface);
  border: 1px solid var(--color-border-default);
  border-radius: var(--radius-md); /* 3px*/
  min-width: 400px;
}

.mod-search__input {
    flex: 1;
    border: none;
    outline: none;
    background: transparent;
    font-family: var(--font-family-base);
    font-size: var(--font-size-sm); /* 16px*/
    font-weight: var(--font-weight-regular);
    color: var(--color-text-secondary);
    letter-spacing: var(--letter-spacing-body);
  }

.mod-search__input::-moz-placeholder {
      color: var(--color-text-body);
    }

.mod-search__input::placeholder {
      color: var(--color-text-body);
    }

.mod-search__icon {
    flex-shrink: 0;
    width: var(--size-icon-lg); /* 24px*/
    height: var(--size-icon-lg);
    color: var(--color-text-body);
  }

/* ── 힌트 텍스트 (.mod-form-hint) ─────────────────────*/

.mod-form-hint {
  font-family: var(--font-family-base);
  font-size: var(--font-size-xs); /* 15px*/
  font-weight: var(--font-weight-regular);
  color: var(--form-hint-text);
  letter-spacing: var(--letter-spacing-body);
  line-height: var(--line-height-normal);
}

/* ── 체크박스 (.mod-checkbox) ──────────────────────────*/

.mod-checkbox {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

/* 실제 input은 숨기되 접근성(Focus) 유지*/

.mod-checkbox__input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
  }

.mod-checkbox__input:focus-visible + .mod-checkbox__box {
      box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.25);
    }

.mod-checkbox__box {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    border-radius: var(--radius-fig-xs, 2px);
    border: 1px solid var(--input-border, #dce0ea);
    background-color: var(--input-surface, #ffffff);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
  }

.mod-checkbox__icon {
    width: 14px;
    height: 14px;
    color: var(--text-inverse, #ffffff);
    opacity: 0;
    transform: scale(0.5);
    transition: opacity 0.15s ease, transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  }

.mod-checkbox__label {
    font-family: var(--font-family-pretendard);
    font-size: var(--font-body-medium-regular-size, 16px);
    font-weight: var(--font-body-medium-regular-weight, 400);
    color: var(--text-bold, #262f3c);
    line-height: var(--font-body-medium-regular-line-height, 1.5);
  }

.mod-checkbox:hover .mod-checkbox__box {
    border-color: var(--element-primary, #396cfa);
  }

/* 체크 상태*/

.mod-checkbox.is-checked,
  .mod-checkbox__input:checked + .mod-checkbox__box {
    background-color: var(--button-primary-fill, #396cfa);
    border-color: var(--button-primary-fill, #396cfa);
  }

.mod-checkbox.is-checked .mod-checkbox__icon, .mod-checkbox__input:checked + .mod-checkbox__box .mod-checkbox__icon {
      opacity: 1;
      transform: scale(1);
    }

/* 비활성화 상태*/

.mod-checkbox.is-disabled,
  .mod-checkbox__input:disabled ~ .mod-checkbox__box,
  .mod-checkbox__input:disabled ~ .mod-checkbox__label {
    cursor: not-allowed;
    opacity: 0.55;
  }

/* 색상 변형자 (Color Modifiers)*/

.mod-checkbox--success.is-checked,
    .mod-checkbox--success .mod-checkbox__input:checked + .mod-checkbox__box {
      background-color: var(--color-success, #2b8a3e);
      border-color: var(--color-success, #2b8a3e);
    }

.mod-checkbox--danger.is-checked,
    .mod-checkbox--danger .mod-checkbox__input:checked + .mod-checkbox__box {
      background-color: var(--color-error, #eb2a29);
      border-color: var(--color-error, #eb2a29);
    }

.mod-checkbox--navy.is-checked,
    .mod-checkbox--navy .mod-checkbox__input:checked + .mod-checkbox__box {
      background-color: var(--color-navy, #001f47);
      border-color: var(--color-navy, #001f47);
    }

/* 칩/버튼 스타일 변형자 (.mod-checkbox--chip)*/

.mod-checkbox--chip {
    padding: 0.5rem 1rem;
    border: 1px solid var(--input-border, #dce0ea);
    border-radius: var(--radius-full, 9999px);
    background-color: var(--input-surface, #ffffff);
    transition: all 0.2s ease;
  }

.mod-checkbox--chip .mod-checkbox__box {
      display: none; /* 칩 스타일에서는 체크 박스 아이콘 숨김 처리 가능*/
    }

.mod-checkbox--chip:hover {
      border-color: var(--element-primary, #396cfa);
      background-color: rgba(57, 108, 250, 0.04);
    }

.mod-checkbox--chip.is-checked,
    .mod-checkbox--chip .mod-checkbox__input:checked ~ .mod-checkbox__label {
      font-weight: var(--font-weight-semibold, 600);
      color: var(--element-primary, #396cfa);
    }

.mod-checkbox--chip.is-checked,
    .mod-checkbox--chip:has(.mod-checkbox__input:checked) {
      border-color: var(--element-primary, #396cfa);
      background-color: rgba(57, 108, 250, 0.08);
    }

/* ── 라디오 버튼 (.mod-radio) ──────────────────────────*/

.mod-radio {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

.mod-radio__input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
  }

.mod-radio__input:focus-visible + .mod-radio__circle {
      box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.25);
    }

.mod-radio__circle {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    border: 1px solid var(--input-border, #dce0ea);
    background-color: var(--input-surface, #ffffff);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
  }

.mod-radio__circle::after {
      content: '';
      width: 10px;
      height: 10px;
      border-radius: 50%;
      background-color: var(--button-primary-fill, #396cfa);
      transform: scale(0);
      transition: transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    }

.mod-radio__label {
    font-family: var(--font-family-pretendard);
    font-size: var(--font-body-medium-regular-size, 16px);
    font-weight: var(--font-body-medium-regular-weight, 400);
    color: var(--text-bold, #262f3c);
    line-height: var(--font-body-medium-regular-line-height, 1.5);
  }

.mod-radio:hover .mod-radio__circle {
    border-color: var(--element-primary, #396cfa);
  }

/* 체크 상태*/

.mod-radio.is-checked,
  .mod-radio__input:checked + .mod-radio__circle {
    border-color: var(--button-primary-fill, #396cfa);
  }

.mod-radio.is-checked::after, .mod-radio__input:checked + .mod-radio__circle::after {
      transform: scale(1);
    }

/* 비활성화 상태*/

.mod-radio.is-disabled,
  .mod-radio__input:disabled ~ .mod-radio__circle,
  .mod-radio__input:disabled ~ .mod-radio__label {
    cursor: not-allowed;
    opacity: 0.55;
  }

/* 색상 변형자*/

.mod-radio--success.is-checked,
    .mod-radio--success .mod-radio__input:checked + .mod-radio__circle {
      border-color: var(--color-success, #2b8a3e);
    }

.mod-radio--success.is-checked::after, .mod-radio--success .mod-radio__input:checked + .mod-radio__circle::after { background-color: var(--color-success, #2b8a3e); }

.mod-radio--danger.is-checked,
    .mod-radio--danger .mod-radio__input:checked + .mod-radio__circle {
      border-color: var(--color-error, #eb2a29);
    }

.mod-radio--danger.is-checked::after, .mod-radio--danger .mod-radio__input:checked + .mod-radio__circle::after { background-color: var(--color-error, #eb2a29); }

.mod-radio--navy.is-checked,
    .mod-radio--navy .mod-radio__input:checked + .mod-radio__circle {
      border-color: var(--color-navy, #001f47);
    }

.mod-radio--navy.is-checked::after, .mod-radio--navy .mod-radio__input:checked + .mod-radio__circle::after { background-color: var(--color-navy, #001f47); }

/* 칩/버튼 스타일 변형자 (.mod-radio--chip)*/

.mod-radio--chip {
    padding: 0.5rem 1rem;
    border: 1px solid var(--input-border, #dce0ea);
    border-radius: var(--radius-full, 9999px);
    background-color: var(--input-surface, #ffffff);
    transition: all 0.2s ease;
  }

.mod-radio--chip .mod-radio__circle {
      display: none; /* 칩 스타일에서는 원형 아이콘 숨김 처리 가능*/
    }

.mod-radio--chip:hover {
      border-color: var(--element-primary, #396cfa);
      background-color: rgba(57, 108, 250, 0.04);
    }

.mod-radio--chip.is-checked,
    .mod-radio--chip .mod-radio__input:checked ~ .mod-radio__label {
      font-weight: var(--font-weight-semibold, 600);
      color: var(--element-primary, #396cfa);
    }

.mod-radio--chip.is-checked,
    .mod-radio--chip:has(.mod-radio__input:checked) {
      border-color: var(--element-primary, #396cfa);
      background-color: rgba(57, 108, 250, 0.08);
    }

/* ── 반응형 폼 테이블 변형자 (.mod-form-table--responsive) ───────*/

.mod-form-table--responsive {
  @media screen and (max-width: 1279px) {
    border-top: 2px solid var(--color-text-primary);

    .mod-form-table__row {
      flex-direction: column;
      align-items: stretch;
    }

    .mod-form-table__label {
      width: 100% !important;
      min-height: auto;
      line-height: 1.5;
      padding: 0.875rem 1.25rem;
      border-bottom: 1px solid var(--form-divider);
    }

    .mod-form-table__control {
      width: 100% !important;
      padding: 1rem 1.25rem;
    }
  }
}

/* ── 공통 데이트피커 범위 모듈 (.mod-date-range) ───────────*/

.mod-date-range {
  display: flex;
  align-items: center;
  gap: 0.75rem; /* 12px*/
  width: 100%;
}

.mod-date-range__input {
    flex: 1;
    min-width: 0;
  }

.mod-date-range__separator {
    font-family: var(--font-family-pretendard);
    font-size: var(--font-body-large-medium-size, 17px);
    font-weight: var(--font-body-large-medium-weight, 500);
    color: var(--text-default, #4a5667);
    flex-shrink: 0;
  }

.mod-date-range{

  @media screen and (max-width: 1279px) {
    flex-direction: column;
    align-items: stretch;
    gap: 0.5rem;

    .mod-date-range__separator {
      text-align: center;
      padding: 0.125rem 0;
      font-size: var(--font-body-xsmall-regular-size, 14px);
      color: var(--text-muted, #929aaa);
    }

    .mod-input {
      width: 100% !important;
    }
  }
}

/* 기간 소형 (검색 필터용, Figma 2084:12978): 간격 8 · "~" 16px 회색 · 입력 200px — 태블릿에서도 한 줄 유지, 모바일만 세로*/

.mod-date-range--sm {
  gap: var(--spacing-8);
  width: auto;
}

.mod-date-range--sm .mod-date-range__input {
    flex: 0 0 200px;
  }

.mod-date-range--sm .mod-date-range__separator {
    font-size: var(--font-body-medium-medium-size, 16px);
    color: var(--text-muted);
  }

.mod-date-range--sm .mod-date-input svg {
    width: 16px;
    height: 16px;
  }

@media screen and (max-width: 1279px) {
  .mod-date-range--sm {
    flex-direction: row;
    align-items: center;
  }

  .mod-date-range--sm .mod-date-range__separator {
    padding: 0;
    font-size: var(--font-body-medium-medium-size, 16px);
  }
  }

@media screen and (max-width: 767px) {
  .mod-date-range--sm {
    flex-direction: column;
    align-items: stretch;
    width: 100%;
  }

  .mod-date-range--sm .mod-date-range__input {
    flex: 1 1 auto;
  }
  }

/* ── Flatpickr 디자인 시스템 테마 오버라이드 ───────────*/

.flatpickr-calendar {
  font-family: var(--font-family-base);
  border: 1px solid var(--color-border-default, #e0e0e0);
  border-radius: var(--radius-2xl, 10px);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
  overflow: hidden;
}

.flatpickr-months {
  background: var(--color-navy, #001f47);
  padding: 0;
  height: 48px;
  display: flex;
  align-items: center;
  position: relative;
}

.flatpickr-months .flatpickr-month {
    background: transparent;
    color: #ffffff;
    fill: #ffffff;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
  }

.flatpickr-months .flatpickr-prev-month,
  .flatpickr-months .flatpickr-next-month {
    fill: #ffffff;
    color: #ffffff;
    height: 48px;
    width: 40px;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    top: 0;
  }

.flatpickr-months .flatpickr-prev-month svg, .flatpickr-months .flatpickr-next-month svg {
      width: 14px;
      height: 14px;
    }

.flatpickr-months .flatpickr-prev-month svg path, .flatpickr-months .flatpickr-next-month svg path { fill: #ffffff; }

.flatpickr-months .flatpickr-prev-month:hover svg path, .flatpickr-months .flatpickr-next-month:hover svg path {
      fill: #ffffff;
    }

.flatpickr-months .flatpickr-prev-month:hover, .flatpickr-months .flatpickr-next-month:hover {
      background-color: rgba(255, 255, 255, 0.15);
    }

.flatpickr-current-month {
  color: #ffffff;
  font-weight: 700;
  font-size: 16px;
  padding: 0;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  left: 0;
  right: 0;
  width: 100%;
}

.flatpickr-current-month .flatpickr-monthDropdown-months {
    color: #ffffff;
    background: var(--color-navy, #001f47);
    font-weight: 700;
    padding: 2px 4px;
    height: auto;
  }

.flatpickr-current-month .flatpickr-monthDropdown-months option {
      background-color: #ffffff;
      color: var(--color-text-primary, #111111);
    }

.flatpickr-current-month .cur-month {
    color: #ffffff;
    font-weight: 700;
  }

.flatpickr-current-month .numInputWrapper {
    display: inline-flex;
    align-items: center;
  }

.flatpickr-current-month .numInputWrapper span.arrowUp::after { border-bottom-color: #ffffff; }

.flatpickr-current-month .numInputWrapper span.arrowDown::after { border-top-color: #ffffff; }

.flatpickr-current-month input.cur-year {
    color: #ffffff;
    font-weight: 700;
    padding: 0;
    margin: 0;
  }

.flatpickr-weekdays {
  background: #f0f4f9;
  border-bottom: 1px solid var(--color-border-default, #e0e0e0);
}

span.flatpickr-weekday {
  background: transparent;
  color: var(--color-navy, #001f47);
  font-weight: 700;
  font-size: 13px;
}

.flatpickr-day {
  border-radius: var(--radius-md, 4px);
  font-size: 14px;
  font-weight: 500;
  color: var(--color-text-primary, #111111);
  transition: all 0.15s ease;
}

.flatpickr-day:hover {
    background-color: #e8f1ff;
    border-color: var(--color-primary, #396CFA);
    color: var(--color-primary, #396CFA);
    font-weight: 700;
  }

.flatpickr-day.selected,
  .flatpickr-day.selected:hover,
  .flatpickr-day.startRange,
  .flatpickr-day.endRange {
    background: var(--color-primary, #396CFA) !important;
    border-color: var(--color-primary, #396CFA) !important;
    color: #ffffff !important;
    font-weight: 700;
    box-shadow: 0 2px 8px rgba(57, 108, 250, 0.3);
  }

.flatpickr-day.inRange {
    background-color: #e8f1ff !important;
    border-color: #e8f1ff !important;
    color: var(--color-primary, #396CFA) !important;
    font-weight: 600;
  }

.flatpickr-day.today {
    border-color: var(--color-primary, #396CFA);
    color: var(--color-primary, #396CFA);
    font-weight: 700;
    background-color: rgba(57, 108, 250, 0.06);
  }

.flatpickr-day.today.selected {
      color: #ffffff !important;
      background: var(--color-primary, #396CFA) !important;
    }

.flatpickr-day.flatpickr-disabled,
  .flatpickr-day.flatpickr-disabled:hover {
    color: #cccccc !important;
    background: transparent !important;
    border-color: transparent !important;
    cursor: not-allowed;
  }

/* ── 토글 스위치 (.mod-switch) ─────────────────────────*/

.mod-switch {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 0.625rem;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

.mod-switch__input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
  }

.mod-switch__input:focus-visible + .mod-switch__track {
      box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.25);
    }

.mod-switch__track {
    width: 44px;
    height: 24px;
    background-color: var(--border-default-strong, #cbd1dc);
    border-radius: var(--radius-full, 9999px);
    position: relative;
    transition: background-color 0.2s ease;
  }

.mod-switch__track::after {
      content: '';
      position: absolute;
      top: 2px;
      left: 2px;
      width: 20px;
      height: 20px;
      border-radius: 50%;
      background-color: var(--text-inverse, #ffffff);
      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
      transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    }

.mod-switch__label {
    font-family: var(--font-family-pretendard);
    font-size: var(--font-body-medium-regular-size, 16px);
    color: var(--text-bold, #262f3c);
  }

/* ON 상태*/

.mod-switch.is-active,
  .mod-switch__input:checked + .mod-switch__track {
    background-color: var(--button-primary-fill, #396cfa);
  }

.mod-switch.is-active::after, .mod-switch__input:checked + .mod-switch__track::after {
      transform: translateX(20px);
    }

.mod-switch.is-disabled,
  .mod-switch__input:disabled ~ .mod-switch__track,
  .mod-switch__input:disabled ~ .mod-switch__label {
    cursor: not-allowed;
    opacity: 0.5;
  }

/* ── 커스텀 파일 업로드 모듈 (.mod-file-upload) ─────────────*/

.mod-file-upload {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  width: 100%;
}

.mod-file-upload__dropzone {
    border: 1px dashed var(--color-border-strong, #d0d0d0);
    border-radius: var(--radius-xl, 8px); /* 한 단계 축소 (2xl 10px → xl 8px)*/
    padding: 1.5rem;
    text-align: center;
    background-color: var(--color-gray-50, #f8f9fa);
    cursor: pointer;
    transition: border-color 0.2s ease, background-color 0.2s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
  }

.mod-file-upload__dropzone:hover {
      border-color: var(--element-primary);               /* #396CFA (신 토큰)*/
      background-color: var(--background-primary-subtler); /* #F5F8FF*/
    }

.mod-file-upload__icon {
    width: 32px;
    height: 32px;
    color: var(--element-primary); /* #396CFA (신 토큰, 호버 테두리와 동일)*/
  }

.mod-file-upload__text {
    font-size: 15px;
    color: var(--color-text-secondary, #222222);
    font-weight: 500;
  }

.mod-file-upload__hint {
    font-size: 13px;
    color: var(--color-text-muted, #888888);
  }

/* 업로드된 파일 리스트*/

.mod-file-upload__list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
  }

.mod-file-upload__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.625rem 1rem;
    background-color: var(--color-surface, #ffffff);
    border: 1px solid var(--color-border-default, #e0e0e0);
    border-radius: var(--radius-md, 4px);
    font-size: 14px;
  }

.mod-file-upload__item-name {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--color-text-primary, #111111);
    font-weight: 500;
  }

.mod-file-upload__item-size {
    color: var(--color-text-muted, #888888);
    font-size: 12px;
  }

.mod-file-upload__remove-btn {
    color: var(--color-error, #eb2a29);
    cursor: pointer;
    padding: 2px;
    border-radius: 2px;
  }

.mod-file-upload__remove-btn:hover { background-color: #fff0f0; }

/* ── 인풋 그룹 및 아돈 세트 (.mod-input-group) ─────────────*/

.mod-input-group {
  display: flex;
  align-items: stretch;
  width: 100%;
}

.mod-input-group .mod-input,
  .mod-input-group input[type="text"],
  .mod-input-group input[type="number"] {
    border-radius: 0;
  }

.mod-input-group .mod-input:first-child, .mod-input-group input[type="text"]:first-child, .mod-input-group input[type="number"]:first-child {
      border-top-left-radius: var(--radius-lg, 5px);
      border-bottom-left-radius: var(--radius-lg, 5px);
    }

.mod-input-group .mod-input:last-child, .mod-input-group input[type="text"]:last-child, .mod-input-group input[type="number"]:last-child {
      border-top-right-radius: var(--radius-lg, 5px);
      border-bottom-right-radius: var(--radius-lg, 5px);
    }

.mod-input-group .el-btn {
    border-radius: 0;
    height: auto;
    flex-shrink: 0;
  }

.mod-input-group .el-btn:last-child {
      border-top-right-radius: var(--radius-lg, 5px);
      border-bottom-right-radius: var(--radius-lg, 5px);
    }

.mod-input-group__addon {
    display: flex;
    align-items: center;
    padding: 0 1rem;
    background-color: var(--color-gray-100, #f0f0f0);
    border: 1px solid var(--color-border-strong, #d0d0d0);
    color: var(--color-text-secondary, #222222);
    font-size: 14px;
    font-weight: 600;
    flex-shrink: 0;
  }

.mod-input-group__addon:first-child {
      border-top-left-radius: var(--radius-lg, 5px);
      border-bottom-left-radius: var(--radius-lg, 5px);
      border-right: none;
    }

.mod-input-group__addon:last-child {
      border-top-right-radius: var(--radius-lg, 5px);
      border-bottom-right-radius: var(--radius-lg, 5px);
      border-left: none;
    }

/* ── 실시간 자수 카운터 (.mod-textarea-counter) ─────────────*/

.mod-textarea-counter {
  position: relative;
  width: 100%;
}

.mod-textarea-counter textarea {
    width: 100%;
    padding-bottom: 2rem; /* 하단 자수 카운터 공간 확보*/
  }

.mod-textarea-counter__count {
    position: absolute;
    bottom: 8px;
    right: 12px;
    font-size: 13px;
    color: var(--color-text-muted, #888888);
    pointer-events: none;
  }

.mod-textarea-counter__count .current {
      font-weight: 700;
      color: var(--element-primary, #396cfa);
    }

.mod-textarea-counter__count.is-max .current { color: var(--color-error, #eb2a29); }

/* ── 슬라이더 및 범위 제어 (.mod-range-slider) ─────────────*/

.mod-range-slider {
  display: flex;
  align-items: center;
  gap: 1rem;
  width: 100%;
}

.mod-range-slider__input {
    -webkit-appearance: none;
    -moz-appearance: none;
         appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: var(--color-gray-200, #e0e0e0);
    outline: none;
  }

.mod-range-slider__input::-webkit-slider-thumb {
      -webkit-appearance: none;
      appearance: none;
      width: 20px;
      height: 20px;
      border-radius: 50%;
      background: var(--color-primary, #396CFA);
      cursor: pointer;
      box-shadow: 0 2px 6px rgba(57, 108, 250, 0.4);
      -webkit-transition: transform 0.15s ease;
      transition: transform 0.15s ease;
    }

.mod-range-slider__input::-webkit-slider-thumb:hover { transform: scale(1.15); }

.mod-range-slider__value {
    min-width: 48px;
    text-align: center;
    font-weight: 700;
    font-size: 15px;
    color: var(--element-primary);                     /* #396CFA (신 토큰)*/
    background-color: var(--background-primary-subtler); /* #F5F8FF*/
    padding: 4px 8px;
    border-radius: var(--radius-sm, 2px);
  }

/* ── 읽기 전용 정보 표 (.mod-form-table--view) ─────────────*/

/* 상세 페이지 "라벨 | 값" 표. 작성 화면과 동일한 라벨 칸(.el-flabel 국/영 2줄) 재사용*/

/* [변형] __row--split : 한 줄에 라벨·값 두 쌍 (≤1279 한 쌍씩 줄바꿈, ≤767 라벨 위·값 아래)*/

.mod-form-table--view {
  border-top: 1px solid var(--border-default, #dce0ea);
}

.mod-form-table--view .mod-form-table__label {
    width: 200px;
    min-height: 56px;
    line-height: 1.3;
    padding-top: var(--spacing-12, 12px);
    padding-bottom: var(--spacing-12, 12px);
  }

.mod-form-table--view .mod-form-table__control {
    padding: 14px var(--spacing-20, 20px);
    font-size: var(--font-body-medium-regular-size, 1rem);
    line-height: 1.5;
    color: var(--text-bold, #262f3c);
    word-break: keep-all;
    overflow-wrap: anywhere;
  }

/* 두 쌍 행: [라벨][값][라벨][값]*/

.mod-form-table__row--split > .mod-form-table__control {
  flex: 1 1 0;
}

@media screen and (max-width: 1279px) {
  .mod-form-table__row--split {
    flex-wrap: wrap;
  }

  .mod-form-table__row--split > .mod-form-table__control {
    flex: 1 1 calc(100% - 200px);
  }

  /* 두 번째 쌍은 다음 줄 — 쌍 사이 구분선*/
  .mod-form-table__row--split > :nth-child(n + 3) {
    border-top: 1px solid var(--form-divider);
  }
  }

@media screen and (max-width: 767px) {
  .mod-form-table--view .mod-form-table__row {
    flex-direction: column;
  }

  .mod-form-table--view .mod-form-table__label {
    width: 100% !important;
    min-height: 0;
    padding: 10px var(--spacing-16, 16px) 10px 1.75rem;
  }

  .mod-form-table--view .mod-form-table__control {
    padding: 12px var(--spacing-16, 16px);
  }

  .mod-form-table--view .mod-form-table__row--split > :nth-child(n + 3) {
    border-top: 1px solid var(--form-divider);
  }
  }

/* ── 날짜 입력 + 달력 아이콘 (.mod-date-input) ─────────────*/

/* <div class="mod-date-input"><input class="mod-input js-datepicker" readonly><i data-feather="calendar"></i></div>*/

.mod-date-input {
  position: relative;
  display: flex;
  width: 100%;
}

.mod-date-input .mod-input {
    padding-right: 2.5rem;
    cursor: pointer;
  }

.mod-date-input svg {
    position: absolute;
    top: 50%;
    right: 0.75rem;
    width: 18px;
    height: 18px;
    transform: translateY(-50%);
    color: var(--text-default, #4a5667);
    pointer-events: none;
  }

/**
 * _breadcrumb.scss
 * Modules 레이어 - 브레드크럼 + 페이지 타이틀 (.mod-breadcrumb)
 * Figma: node 151:199 (홈 아이콘 › 1뎁스 › 2뎁스 › 현재)
 *
 * 구조:
 *   .mod-breadcrumb
 *     .mod-breadcrumb__home           ← 홈 아이콘 링크 (배경 마스크 아이콘)
 *     .mod-breadcrumb__item           ← 뎁스 항목 (앞에 chevron ::before 자동 삽입)
 *       └ .is-current                 ← 현재(마지막) 뎁스 (네이비, 볼드)
 *
 * ※ 구분자(›)는 마크업이 아닌 각 __item 의 ::before 가상선택자에
 *   chevron-right SVG를 background(mask)로 그려 렌더링합니다.
 */

.mod-page-header {
  display: flex;
  flex-direction: column;
  gap: 2.5rem;
}

/* 40px*/

/* 태블릿/모바일 상하 여백 및 수직 간격 조율*/

@media (max-width: 768px) {

.mod-page-header {
    gap: 1.25rem
}
  }

.mod-breadcrumb {
  display: flex;
  flex-wrap: wrap; /* 3뎁스(예: Pillar 2 긴 이름)가 좁은 화면에서 잘리지 않도록 항목 단위 줄바꿈*/
  align-items: center;
  gap: 8px; /* Figma gap 8px*/
  row-gap: var(--spacing-4);
}

/* ── 홈 아이콘 (항상 노출) ──────────────────────────────*/

.mod-breadcrumb__home {
    flex-shrink: 0;
    width: var(--size-icon-lg); /* 24px*/
    height: var(--size-icon-lg);
    background-color: rgba(255, 255, 255, 0.7);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 26'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' fill='black' d='M3.24995 10.8333V19.5C3.24995 20.3623 3.59228 21.1889 4.2022 21.7977C4.81103 22.4077 5.63761 22.75 6.49995 22.75H19.4999C20.3623 22.75 21.1889 22.4077 21.7977 21.7977C22.4076 21.1889 22.7499 20.3623 22.7499 19.5V10.8333C23.2439 10.8333 23.6751 10.4997 23.7986 10.0219C23.9221 9.54308 23.7076 9.04258 23.2754 8.80317L13.5113 3.3865C13.1841 3.2045 12.7865 3.2045 12.4594 3.3865L2.72345 8.80317C2.29228 9.04367 2.07778 9.54417 2.20128 10.0219C2.32478 10.4997 2.75595 10.8333 3.24995 10.8333ZM5.41661 9.78467L12.9869 5.57267L20.5833 9.78683V19.5C20.5833 19.7871 20.4695 20.0633 20.2659 20.2659C20.0633 20.4696 19.787 20.5833 19.4999 20.5833H6.49995C6.21286 20.5833 5.93661 20.4696 5.73403 20.2659C5.53036 20.0633 5.41661 19.7871 5.41661 19.5V9.78467ZM10.8333 18.4167H15.1666C15.7646 18.4167 16.2499 17.9313 16.2499 17.3333C16.2499 16.7353 15.7646 16.25 15.1666 16.25H10.8333C10.2353 16.25 9.74995 16.7353 9.74995 17.3333C9.74995 17.9313 10.2353 18.4167 10.8333 18.4167Z'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 26'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' fill='black' d='M3.24995 10.8333V19.5C3.24995 20.3623 3.59228 21.1889 4.2022 21.7977C4.81103 22.4077 5.63761 22.75 6.49995 22.75H19.4999C20.3623 22.75 21.1889 22.4077 21.7977 21.7977C22.4076 21.1889 22.7499 20.3623 22.7499 19.5V10.8333C23.2439 10.8333 23.6751 10.4997 23.7986 10.0219C23.9221 9.54308 23.7076 9.04258 23.2754 8.80317L13.5113 3.3865C13.1841 3.2045 12.7865 3.2045 12.4594 3.3865L2.72345 8.80317C2.29228 9.04367 2.07778 9.54417 2.20128 10.0219C2.32478 10.4997 2.75595 10.8333 3.24995 10.8333ZM5.41661 9.78467L12.9869 5.57267L20.5833 9.78683V19.5C20.5833 19.7871 20.4695 20.0633 20.2659 20.2659C20.0633 20.4696 19.787 20.5833 19.4999 20.5833H6.49995C6.21286 20.5833 5.93661 20.4696 5.73403 20.2659C5.53036 20.0633 5.41661 19.7871 5.41661 19.5V9.78467ZM10.8333 18.4167H15.1666C15.7646 18.4167 16.2499 17.9313 16.2499 17.3333C16.2499 16.7353 15.7646 16.25 15.1666 16.25H10.8333C10.2353 16.25 9.74995 16.7353 9.74995 17.3333C9.74995 17.9313 10.2353 18.4167 10.8333 18.4167Z'/%3E%3C/svg%3E") center / contain no-repeat;
    transition: background-color 0.15s ease;
  }

.mod-breadcrumb__home:hover {
      background-color: #ffffff;
    }

/* ── 뎁스 항목 ────────────────────────────────────────*/

.mod-breadcrumb__item {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-8, 8px); /* chevron ↔ 텍스트 간격 (Figma number/8)*/
    font-family: var(--font-family-pretendard);
    font-size: var(--font-body-large-regular-size, 17px); /* 17px (Figma body/large)*/
    font-weight: var(--font-body-large-regular-weight, 400);
    color: rgba(255, 255, 255, 0.7);
    white-space: nowrap;
    text-decoration: none;
    transition: color 0.15s ease;
  }

/* 구분자(›): 각 항목 앞에 chevron-right 아이콘을 마스크 배경으로 렌더링*/

.mod-breadcrumb__item::before {
      content: "";
      flex-shrink: 0;
      width: var(--size-icon-md); /* 20px*/
      height: var(--size-icon-md);
      background-color: rgba(255, 255, 255, 0.7);
      -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18l6-6-6-6'/%3E%3C/svg%3E") center / contain no-repeat;
      mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18l6-6-6-6'/%3E%3C/svg%3E") center / contain no-repeat;
    }

/* 링크형 항목 호버*/

.mod-breadcrumb__item:is(a):hover {
      color: #ffffff;
    }

/* 모바일 기기에서의 미려한 소형 폰트 축소 (14px급)*/

@media (max-width: 768px) {

.mod-breadcrumb__item {
      font-size: var(--font-size-xs);
      gap: 4px
  }

      .mod-breadcrumb__item::before {
        width: var(--size-icon-sm); /* 16px*/
        height: var(--size-icon-sm);
      }
    }

/* 현재 (마지막) 뎁스*/

.mod-breadcrumb__item.is-current,
    .mod-breadcrumb__item:last-child {
      color: var(--text-inverse, #ffffff);
      font-weight: var(--font-body-large-bold-weight, 700);
    }

.mod-page-title {
  font-family: var(--font-family-base);
  font-size: var(--font-size-h1); /* 64px*/
  font-weight: var(--font-weight-bold);
  color: #ffffff;
  line-height: var(--line-height-tight);
  letter-spacing: -0.02em;
}

/* 타이틀 폰트 지능형 반응형 축소 (WOW 포인트)*/

@media (max-width: 1024px) {

.mod-page-title {
    font-size: var(--font-size-h2) /* 46px*/
}
  }

@media (max-width: 768px) {

.mod-page-title {
    font-size: var(--font-size-h3) /* 30px*/
}
  }

.mod-page-desc {
  margin-top: -1.5rem; /* 타이틀과의 여백 조율*/
  font-family: var(--font-family-base);
  font-size: var(--font-size-lg); /* 18px*/
  font-weight: var(--font-weight-regular);
  color: rgba(255, 255, 255, 0.85);
  line-height: var(--line-height-relaxed);
  word-break: keep-all;
}

@media (max-width: 768px) {

.mod-page-desc {
    margin-top: -0.75rem;
    font-size: var(--font-size-md) /* 17px / 16px*/
}
  }

/**
 * _dropdown.scss
 * Modules 레이어 - 포털 잘림 방지 드롭다운 메뉴 (.mod-dropdown)
 * Figma & 전사 공통 가이드 준수
 */

.mod-dropdown {
  position: absolute;
  z-index: var(--z-index-dropdown, 9999);
  min-width: 180px;
  max-width: 280px;
  background-color: var(--color-surface, #ffffff);
  border: 1px solid var(--color-border-default, #e0e0e0);
  border-radius: var(--radius-lg, 8px);
  box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.05);
  padding: 0.375rem;
  font-family: var(--font-family-base, 'Pretendard', sans-serif);
  opacity: 0;
  visibility: hidden; /* 닫힌 메뉴 항목이 Tab 포커스를 받지 않도록*/
  transform: scale(0.95);
  transform-origin: top left;
  /* 닫힐 때만 visibility 를 애니메이션 뒤로 미룸 — 열릴 때는 즉시 보여야 키보드로 연 직후 첫 항목에 포커스가 들어감*/
  transition: opacity 0.15s cubic-bezier(0.16, 1, 0.3, 1), transform 0.15s cubic-bezier(0.16, 1, 0.3, 1), visibility 0s linear 0.15s;
  pointer-events: none;
}

.mod-dropdown.is-open {
    opacity: 1;
    visibility: visible;
    transform: scale(1);
    pointer-events: auto;
    transition: opacity 0.15s cubic-bezier(0.16, 1, 0.3, 1), transform 0.15s cubic-bezier(0.16, 1, 0.3, 1), visibility 0s;
  }

/* 상단으로 팝업될 때*/

.mod-dropdown--top {
    transform-origin: bottom left;
  }

/* 메뉴 그룹 헤더*/

.mod-dropdown__header {
    padding: 0.5rem 0.75rem 0.375rem;
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--color-text-hint, #5b617a);
    text-transform: uppercase;
    letter-spacing: 0.05em;
  }

/* 구분선*/

.mod-dropdown__divider {
    height: 1px;
    margin: 0.375rem -0.375rem;
    background-color: var(--color-border-subtle, #f0f0f0);
  }

/* 드롭다운 메인 리스트*/

.mod-dropdown__list {
    list-style: none;
    margin: 0;
    padding: 0;
  }

/* 드롭다운 아이템*/

.mod-dropdown__item {
    display: flex;
    align-items: center;
    width: 100%;
    gap: 0.625rem;
    padding: 0.5rem 0.75rem;
    font-size: var(--font-size-sm, 14px);
    font-weight: 500;
    color: var(--color-text-primary, #111111);
    text-align: left;
    background: transparent;
    border: none;
    border-radius: var(--radius-md, 6px);
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
    text-decoration: none;
  }

.mod-dropdown__item i, .mod-dropdown__item svg {
      width: 1rem;
      height: 1rem;
      color: var(--color-text-muted, #888888);
      transition: color 0.15s ease;
      flex-shrink: 0;
    }

/* 아이콘 오른쪽 배치 옵션*/

.mod-dropdown__item .mod-dropdown__badge {
      margin-left: auto;
      font-size: 0.75rem;
    }

.mod-dropdown__item:hover, .mod-dropdown__item:focus-visible {
      background-color: var(--color-neutral-background-subtle, #f4f6f8);
      color: var(--color-navy, #001f47);
      outline: none;
    }

.mod-dropdown__item:hover i, .mod-dropdown__item:hover svg, .mod-dropdown__item:focus-visible i, .mod-dropdown__item:focus-visible svg {
        color: var(--color-navy, #001f47);
      }

/* 위험/삭제 아이템 스타일 (Danger Zone)*/

.mod-dropdown__item--danger {
      color: var(--color-error, #eb2a29);
    }

.mod-dropdown__item--danger i, .mod-dropdown__item--danger svg {
        color: var(--color-error, #eb2a29);
      }

.mod-dropdown__item--danger:hover, .mod-dropdown__item--danger:focus-visible {
        background-color: rgb(235 42 41 / 0.08);
        color: var(--color-error, #eb2a29);
      }

.mod-dropdown__item--danger:hover i, .mod-dropdown__item--danger:hover svg, .mod-dropdown__item--danger:focus-visible i, .mod-dropdown__item--danger:focus-visible svg {
          color: var(--color-error, #eb2a29);
        }

/* 비활성화 아이템*/

.mod-dropdown__item.is-disabled, .mod-dropdown__item[disabled] {
      opacity: 0.45;
      cursor: not-allowed;
      pointer-events: none;
    }

/* src/styles/scss/modules/_attachments.scss*/

/* 첨부파일 목록 및 개별 파일 다운로드 공통 UI 컴포넌트 모듈*/

/**/

/* [변형]*/

/* mod-attachment--row  : 좌측 라벨(__title) + 우측 목록 가로 배치 (게시판 상세 뷰 첨부 행)*/

/* mod-attachment--plain: 박스·배경 없이 목록만 (정보 표 셀 안 삽입용)*/

/* [요소 추가] __size(파일 용량) · __link(첨부 링크 URL 앵커, 새 창)*/

.mod-attachment {
  display: flex;
  flex-direction: column;
  gap: 0.9375rem; /* 15px*/
  width: 100%;
}

.mod-attachment__title {
    font-size: var(--font-title-xxsmall-size, 1.125rem); /* 18px*/
    font-weight: var(--font-weight-bold, 700);
    color: var(--text-bolder, #090c10);
  }

.mod-attachment__title strong {
      color: var(--text-primary, #396cfa);
      margin-left: 4px;
    }

.mod-attachment__list {
    border: 1px solid var(--border-default, #dce0ea);
    border-radius: var(--radius-md, 4px);
    padding: var(--spacing-24, 24px);
    display: flex;
    flex-direction: column;
    gap: var(--spacing-8, 8px);
    background-color: var(--background-default, #ffffff);
    width: 100%;
  }

.mod-attachment__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-16, 16px);
    padding: var(--spacing-8, 8px) var(--spacing-12, 12px);
    background-color: var(--background-subtle, #f8f9fb);
    border-radius: var(--radius-md, 4px);
    font-size: var(--font-body-medium-regular-size, 1rem);
    transition: background-color 0.2s ease;
  }

.mod-attachment__item:hover {
      background-color: var(--background-muted, #f2f3f8);
    }

.mod-attachment__left {
    display: flex;
    align-items: center;
    gap: var(--spacing-8, 8px);
    flex: 1;
    min-width: 0;
  }

.mod-attachment__left svg {
      width: 20px;
      height: 20px;
      color: var(--text-muted, #929aaa);
      flex-shrink: 0;
    }

.mod-attachment__name {
    color: var(--text-bold, #262f3c);
    font-weight: var(--font-weight-regular, 400);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

/* 파일명 자체를 다운로드 링크로 사용 (<a class="mod-attachment__name" download>)*/

.mod-attachment a.mod-attachment__name {
    text-decoration: none;
    cursor: pointer;
    transition: color 0.2s ease;
  }

.mod-attachment a.mod-attachment__name:hover,
    .mod-attachment a.mod-attachment__name:focus-visible {
      color: var(--text-primary, #396cfa);
      text-decoration: underline;
      text-underline-offset: 3px;
    }

/* 파일 용량 (파일명 옆 보조 표기)*/

.mod-attachment__size {
    flex-shrink: 0;
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    color: var(--text-muted, #929aaa);
  }

/* 첨부 링크 (URL) 앵커*/

.mod-attachment__link {
    min-width: 0;
    color: var(--text-primary, #396cfa);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    text-decoration: none;
  }

.mod-attachment__link:hover,
    .mod-attachment__link:focus-visible {
      text-decoration: underline;
      text-underline-offset: 3px;
    }

.mod-attachment__download {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-4, 4px);
    color: var(--text-default, #4a5667);
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    text-decoration: none;
    cursor: pointer;
    transition: color 0.2s ease;
    flex-shrink: 0;
  }

.mod-attachment__download:hover,
    .mod-attachment__download:focus-visible {
      color: var(--text-primary, #396cfa);
    }

.mod-attachment__download svg {
      width: 16px;
      height: 16px;
    }

/* ── 가로 행 변형 (게시판 상세 뷰) ─────────────────*/

.mod-attachment--row {
    flex-direction: row;
    align-items: flex-start;
    gap: var(--spacing-24, 24px);
    padding: var(--spacing-16, 16px);
    background-color: var(--background-subtle, #f8f9fb);
  }

.mod-attachment--row + .mod-attachment--row {
      border-top: 1px solid var(--border-default, #dce0ea);
    }

.mod-attachment--row .mod-attachment__title {
      flex-shrink: 0;
      width: 120px;
      font-size: var(--font-body-medium-medium-size, 1rem);
      font-weight: var(--font-weight-medium, 500);
      line-height: 1.5;
    }

.mod-attachment--row .mod-attachment__list {
      flex: 1;
      min-width: 0;
      padding: 0;
      border: 0;
      border-radius: 0;
      background-color: transparent;
      gap: var(--spacing-4, 4px);
    }

.mod-attachment--row .mod-attachment__item {
      padding: 0;
      background-color: transparent;
      line-height: 1.5;
    }

.mod-attachment--row .mod-attachment__item:hover {
        background-color: transparent;
      }

/* ── 박스 없는 변형 (.mod-attachment--plain) — 표 셀 등 다른 컨테이너 안에 삽입 ──*/

.mod-attachment--plain {
  gap: 0;
}

.mod-attachment--plain .mod-attachment__list {
    padding: 0;
    border: 0;
    border-radius: 0;
    background-color: transparent;
    gap: var(--spacing-4, 4px);
  }

.mod-attachment--plain .mod-attachment__item {
    padding: 0;
    background-color: transparent;
  }

.mod-attachment--plain .mod-attachment__item:hover {
      background-color: transparent;
    }

/* ── 반응형 (모바일) ── @media 내부 중첩 선택자 전개 이슈로 최상위 전체 선택자로 작성*/

@media screen and (max-width: 767px) {
  .mod-attachment--row {
    flex-direction: column;
    gap: var(--spacing-8, 8px);
    padding: var(--spacing-12, 12px) var(--spacing-8, 8px);
  }

  .mod-attachment--row .mod-attachment__title {
    width: auto;
  }
  }

/**
 * _event-info.scss
 * Modules 레이어 - 행사정보 표기 (.mod-event-info)
 * 일시(calendar) + 장소(map-pin) 아이콘·텍스트 쌍. 게시판 목록 행사정보 컬럼, 상세 뷰 등에서 재사용
 *
 * [구조]  <dl> > __item(아이콘 + dt.sr-only + dd) × 2
 * [변형]
 * mod-event-info--inline : 한 줄 배치 (일시 · 장소), 장소만 말줄임 — 모바일 목록/상세 뷰
 * mod-event-info--dual   : 시간대 라벨(국내·해외)이 붙는 일정 — 각 __item 앞 dt.__zone 노출
 *                          온라인 = 국내/해외 두 줄, 오프라인 = 국내 한 줄(+ 해외 선택 시 두 줄)
 *                          일시는 --text-bold, 온라인 해외만 __item--muted 로 옅게
 * __item--muted          : 항목 옅게(opacity .65) — 온라인의 해외 항목에만
 * __item--place          : 장소 항목 (말줄임 우선 대상)
 * __empty                : 행사정보 없음 표기 (-)
 */

.mod-event-info {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--spacing-4, 4px);
  max-width: 100%;
  min-width: 0;
  text-align: left;
  vertical-align: middle;
  font-size: var(--font-body-small-regular-size, 0.9375rem); /* 15px*/
  line-height: 1.4;
  letter-spacing: -0.01em;
  color: var(--text-default, #4a5667);
}

.mod-event-info__item {
    display: flex;
    align-items: center;
    gap: 6px;
    max-width: 100%;
    min-width: 0;
  }

.mod-event-info__item svg {
      flex-shrink: 0;
      width: 16px;
      height: 16px;
      color: var(--text-muted, #929aaa);
    }

.mod-event-info__item dd {
      min-width: 0;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }

.mod-event-info__empty {
    color: var(--text-muted, #929aaa);
  }

/* ── 한 줄 변형 ────────────────────────────────────*/

.mod-event-info--inline {
    flex-direction: row;
    align-items: center;
    gap: var(--spacing-12, 12px);
  }

.mod-event-info--inline .mod-event-info__item {
      flex-shrink: 0;
    }

/* 장소만 줄어들며 말줄임 (일시는 항상 온전히 노출)*/

.mod-event-info--inline .mod-event-info__item--place {
      flex-shrink: 1;
      position: relative;
      padding-left: var(--spacing-12, 12px);
    }

/* 일시 · 장소 사이 1×10 구분선*/

.mod-event-info--inline .mod-event-info__item--place::before {
        content: '';
        position: absolute;
        left: 0;
        top: 50%;
        width: 1px;
        height: 10px;
        transform: translateY(-50%);
        background-color: var(--border-default-strong, #cbd1dc);
      }

/* ── 국내/해외 시간대 라벨 변형 ─────────────*/

.mod-event-info--dual {
    gap: 6px;
  }

.mod-event-info--dual .mod-event-info__item {
      gap: var(--spacing-8, 8px);
    }

/* 일시는 한 단계 짙게 — 옅게 처리한 온라인 해외 일시(__item--muted)와 대비*/

.mod-event-info--dual dd {
      color: var(--text-bold);
    }

/* 온라인 해외 일시: 국내 이용자에게 보조 정보라 옅게*/

.mod-event-info__item--muted {
    opacity: 0.65;
  }

/* 시간대 라벨 (국내 / 해외)*/

.mod-event-info__zone {
    flex-shrink: 0;
    padding: 0 6px;
    border-radius: var(--radius-fig-xs, 2px);
    background-color: var(--background-muted, #eef0f5);
    font-size: var(--font-body-xxsmall-regular-size, 0.8125rem); /* 13px*/
    line-height: 20px;
    color: var(--text-default, #4a5667);
  }

/**
 * _empty-state.scss
 * Modules 레이어 - 빈 상태 안내 (.mod-empty-state)
 * 답글 없음, 검색 결과 없음 등 "내용 없음" 공통 안내 박스
 *
 * [구조]  아이콘(feather) + __text(주 문구) + __desc(보조 문구, 선택)
 * [변형]  mod-empty-state--lg : 넓은 여백 (검색 결과 등 페이지 단위 빈 상태)
 */

.mod-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--spacing-8, 8px);
  padding: var(--spacing-32, 32px) var(--spacing-16, 16px);
  border-radius: var(--radius-fig-md, 8px);
  background-color: var(--background-subtle, #f8f9fb);
  text-align: center;
}

.mod-empty-state[hidden] {
    display: none;
  }

.mod-empty-state svg {
    width: 28px;
    height: 28px;
    color: var(--text-tertiary, #cbd1dc);
  }

.mod-empty-state__text {
    font-size: var(--font-body-medium-regular-size, 1rem);
    color: var(--text-muted, #929aaa);
  }

.mod-empty-state__desc {
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    color: var(--text-muted, #929aaa);
  }

.mod-empty-state--lg {
    gap: var(--spacing-12, 12px);
    padding: var(--spacing-64, 64px) var(--spacing-16, 16px);
  }

.mod-empty-state--lg svg {
      width: 40px;
      height: 40px;
    }

.mod-empty-state--lg .mod-empty-state__text {
      font-size: var(--font-title-xxsmall-size, 1.125rem);
      font-weight: var(--font-weight-medium, 500);
      color: var(--text-bold, #262f3c);
    }

/**
 * _guide-banner.scss
 * Modules 레이어 - GNB형 상단 가이드 배너 (.mod-guide-banner)
 * 여러 화면 상단에서 주요 안내 및 행동 강령을 전달하기 위한 재사용 배너 컴포넌트
 */

.mod-guide-banner {
  background-color: var(--color-gray-50);
  display: flex;
  align-items: flex-start;
  padding: 1.875rem; /* 30px*/
  border-radius: var(--radius-2xl); /* 10px*/
  width: 100%;
  gap: 1.5rem; /* 24px*/

  @media screen and (max-width: 1279px) {
    flex-direction: column;
    align-items: flex-start;
    padding: 1.25rem; /* 20px*/
    gap: 1rem; /* 16px*/
  }
}

.mod-guide-banner__icon-box {
    background-color: var(--color-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 0.5375rem; /* 8.6px*/
    flex-shrink: 0;
    width: 3.125rem; /* 50px*/
    height: 3.125rem; /* 50px*/
    color: var(--color-white);
  }

.mod-guide-banner__icon-box svg {
      width: 1.5rem; /* 24px*/
      height: 1.5rem; /* 24px*/
    }

.mod-guide-banner__content {
    display: flex;
    flex-direction: column;
    gap: 0.375rem; /* 6px*/
    justify-content: center;
  }

.mod-guide-banner__title {
    font-weight: var(--font-weight-bold);
    color: var(--color-primary);
    font-size: 1.375rem; /* 22px*/
    letter-spacing: -0.02em; /* -0.44px (22px 기준)*/

    @media screen and (max-width: 1279px) {
      font-size: var(--font-size-lg); /* 18px*/
  }
  }

.mod-guide-banner__list {
    display: flex;
    flex-direction: column;
    gap: 0.25rem; /* 4px*/
    font-size: var(--font-size-xs); /* 15px (Figma text)*/
    color: var(--color-text-body); /* #555*/
    line-height: var(--line-height-relaxed);

    @media screen and (max-width: 1279px) {
      gap: 0.375rem; /* 6px*/
  }
  }

.mod-guide-banner__item {
    display: flex;
    align-items: center;
    gap: 0.5rem; /* 8px*/
  }

.mod-guide-banner__bullet {
    background-color: var(--color-gray-400); /* #cbcbcb*/
    border-radius: var(--radius-full);
    width: 5px;
    height: 5px;
    flex-shrink: 0;
  }

.mod-guide-banner__text strong {
      font-weight: var(--font-weight-semibold);
      color: var(--color-text-secondary); /* #222*/
    }

/**
 * _page-tabs.scss
 * Modules 레이어 - 페이지 헤더 탭 내비게이션 (.mod-page-tabs)
 * 페이지 간 이동을 위한 상단 탭 바. common-ui-engine.js의 renderPageHeader()가 주입.
 *
 * ⚠️ 사용 안 함 (2026-10-02~) — 적용 화면 없음. 삭제하지 않고 보존만 한다.
 *    3뎁스 탭은 .mod-tab--page (+ --bilingual, modules/_tabs.scss) 를 쓴다 — 프로그램 안내 · 마이페이지
 */

.mod-page-tabs {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--spacing-4, 4px);   /* [Figma] Primary 탭 간격 4px (개별 블록)*/
  width: 100%;
  max-width: var(--size-inner-sm, 800px);
  margin: 40px auto 0;

  @media screen and (min-width: 768px) {
    width: auto;
  }

  @media screen and (max-width: 1279px) {
    width: calc(100% - 40px);
    margin: 30px auto 0;
  }

  @media screen and (max-width: 767px) {
    width: 100%;
    justify-content: flex-start;
    overflow-x: auto;
    overflow-y: visible;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;

    &::-webkit-scrollbar {
      display: none;
    }
  }
}

.mod-page-tabs__btn {
    flex: none;
    min-width: 160px;
    padding: 0 var(--spacing-24, 24px);
    white-space: nowrap;
    height: var(--size-tab-height, 60px);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--font-title-xsmall-size, 20px);         /* 20px (Figma title/xsmall)*/
    font-weight: var(--font-title-xsmall-weight, 700);
    letter-spacing: var(--font-title-xsmall-letter-spacing, -0.01em);
    background-color: var(--tab-inactive, #dce0ea);
    color: var(--text-default, #4a5667);
    border: none;
    outline: none;
    border-radius: var(--radius-fig-sm, 4px);   /* 네 모서리 전부 4px*/
    cursor: pointer;
    text-decoration: none;
    transition: background-color 0.25s ease, color 0.25s ease;
  }

.mod-page-tabs__btn:hover {
      background-color: rgba(38, 47, 60, 0.08);
    }

.mod-page-tabs__btn.is-active {
      background-color: var(--tab-active, #1f2c42);
      color: var(--text-inverse, #ffffff);
      font-weight: var(--font-title-xsmall-weight, 700);
    }

.mod-page-tabs__btn{

    @media screen and (max-width: 1279px) {
      height: 50px;
      font-size: var(--font-body-large-medium-size, 17px);
  }

    @media screen and (max-width: 767px) {
      flex: none;
      width: auto;
      min-width: 120px;
      padding: 0 var(--spacing-20, 20px);
  }
}

/**
 * _modal.scss
 * Modules 레이어 - 레이어 팝업 & 모달 컴포넌트 (.mod-modal)
 * ※ 2026-09 Figma 155:10169(문의하기 팝업) 기준으로 기본 룩 전면 교체 — 호라이즌유럽 전역 표준 팝업
 *
 * [구조]  Head(고정: 영문 eyebrow + 국문 제목 + 닫기, 하단 구분선) / Body(내부 스크롤) / Foot(고정: 가운데 정렬 버튼)
 * [크기]  기본 800px · --sm 480px(알림/확인) · --md 640px(정보 조회) · --lg 960px · --full 1280px
 * [예외]  --floating / --draggable : 딤드 없는 플로팅 툴 패널 (네이비 컴팩트 헤더 유지)
 * [동작]  열기/닫기·포커스 트랩·ESC·스크롤 잠금은 common-ui-engine.js 전역 모달 엔진이 담당
 *
 * ※ 패딩 60/50, 버튼 간격 10px 은 Figma 실측값 (spacing 토큰 미정의 값)
 */

/* 1. 모달 딤드 오버레이 배경 (.mod-modal-overlay)*/

.mod-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 1000;
  background-color: var(--alpha-black-60, rgba(0, 0, 0, 0.6));
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--spacing-24, 24px);
  opacity: 0;
  visibility: hidden;
  /* 닫힐 때: 페이드 후 숨김 / 열릴 때: 즉시 visible (초기 포커스 이동이 가능하도록)*/
  transition: opacity 0.2s ease, visibility 0s linear 0.2s;
}

.mod-modal-overlay.is-open {
    opacity: 1;
    visibility: visible;
    transition: opacity 0.2s ease, visibility 0s;
  }

@media (max-width: 768px) {

.mod-modal-overlay {
    padding: var(--spacing-16, 16px)
}
  }

/* 2. 모달 컨테이너 (.mod-modal)*/

.mod-modal {
  /* 크기 변형자가 덮어쓰는 로컬 변수*/
  --modal-pad-y: 60px;
  --modal-pad-x: 50px;
  --modal-title-size: var(--font-title-xlarge-size, 2.5rem);       /* 40px*/
  --modal-eyebrow-size: var(--font-title-xsmall-size, 1.25rem);    /* 20px*/
  --modal-close-size: 46px;

  position: relative;
  width: 100%;
  max-width: 800px;
  max-height: 90vh;
  padding: var(--modal-pad-y) var(--modal-pad-x);
  background-color: var(--background-default, #ffffff);
  border-radius: var(--radius-fig-xl, 16px);
  box-shadow: var(--shadow-sm, 0 1px 2px 0 rgba(0, 0, 0, 0.05), 0 0 2px 0 rgba(0, 0, 0, 0.05));
  font-family: var(--font-family-pretendard);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  outline: none;
  transform: translateY(-16px) scale(0.98);
  transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.mod-modal-overlay.is-open .mod-modal {
    transform: translateY(0) scale(1);
  }

/* ── Head (상단 고정 + 하단 구분선) ───────────────────*/

.mod-modal__head {
    flex-shrink: 0;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--spacing-16, 16px);
    padding-bottom: var(--spacing-20, 20px);
    margin-bottom: var(--spacing-20, 20px);
    border-bottom: 1px solid var(--border-strong-darker, #141a24);
  }

/* 국문 제목 (eyebrow가 있으면 그 아래로 쌓임)*/

.mod-modal__head-title {
      display: flex;
      flex-direction: column;
      gap: var(--spacing-2, 2px);
      margin: 0;
      font-size: var(--modal-title-size);
      font-weight: var(--font-title-xlarge-weight, 700);
      line-height: var(--font-title-xlarge-line-height, 1.5);
      letter-spacing: var(--font-title-xlarge-letter-spacing, -0.01em);
      color: var(--text-bold, #262f3c);
      word-break: keep-all;
    }

/* 영문 보조 제목 (선택) — 제목 요소 안 첫 자식으로 둔다*/

.mod-modal__head-eyebrow {
      display: block;
      font-size: var(--modal-eyebrow-size);
      font-weight: var(--font-title-xsmall-weight, 700);
      line-height: var(--font-title-xsmall-line-height, 1.5);
      letter-spacing: var(--font-title-xsmall-letter-spacing, -0.01em);
      color: var(--text-muted, #929aaa);
    }

.mod-modal__head-actions {
      flex-shrink: 0;
      display: flex;
      align-items: center;
      gap: var(--spacing-8, 8px);
    }

/* 닫기 등 헤더 아이콘 버튼*/

.mod-modal__head-btn {
      flex-shrink: 0;
      width: var(--modal-close-size);
      height: var(--modal-close-size);
      padding: 0;
      background: none;
      border: none;
      border-radius: var(--radius-fig-md, 8px);
      color: var(--text-bold, #262f3c);
      cursor: pointer;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      transition: color 0.15s ease, background-color 0.15s ease;
    }

.mod-modal__head-btn svg {
        width: 60%;
        height: 60%;
        stroke-width: 1.75;
      }

.mod-modal__head-btn:hover {
        background-color: var(--background-subtle, #f8f9fb);
        color: var(--text-bolder, #090c10);
      }

.mod-modal__head-btn:focus-visible {
        outline: none;
        box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.25);
      }

/* ── Body (중앙 영역 / 내용이 길면 내부 스크롤) ───────*/

.mod-modal__body {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    /* 인풋 포커스 링(3px)이 스크롤 영역에 잘리지 않도록 여유 확보*/
    margin: 0 -4px;
    padding: 4px;
    font-size: var(--font-body-medium-regular-size, 1rem);
    line-height: var(--font-body-medium-regular-line-height, 1.5);
    color: var(--text-default, #4a5667);
  }

.mod-modal__body::-webkit-scrollbar {
      width: 6px;
    }

.mod-modal__body::-webkit-scrollbar-thumb {
      background-color: var(--gray-300, #dce0ea);
      border-radius: 3px;
    }

/* 폼 필드 세로 스택 (레이블 + 컨트롤 묶음 간격 20px)*/

.mod-modal__form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-20, 20px);
  }

/* ── Foot (하단 고정 · 가운데 정렬 버튼 세트) ─────────*/

.mod-modal__foot {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-top: var(--spacing-40, 40px);
  }

/* 팝업 내 버튼 규격 통일 (Figma: 최소 160 × 56)*/

.mod-modal__foot > .el-btn {
      min-width: 160px;
      height: var(--size-height-56, 56px);
      padding: 0 var(--spacing-20, 20px);
      font-size: var(--font-body-medium-medium-size, 1rem);
    }

.mod-modal__foot--between {
      justify-content: space-between;
    }

.mod-modal__foot--end {
      justify-content: flex-end;
    }

/* ── 크기 규격 변형자 ──────────────────────────────────*/

.mod-modal--sm {
    --modal-pad-y: var(--spacing-40, 40px);
    --modal-pad-x: var(--spacing-32, 32px);
    --modal-title-size: var(--font-title-small-size, 1.5rem);      /* 24px*/
    --modal-eyebrow-size: var(--font-body-medium-bold-size, 1rem); /* 16px*/
    --modal-close-size: 40px;
    max-width: 480px;
  }

.mod-modal--sm .mod-modal__foot {
      margin-top: var(--spacing-32, 32px);
    }

.mod-modal--sm .mod-modal__foot > .el-btn {
        flex: 1 1 0;
        min-width: 0;
      }

/* 정보 조회용 중형 (NCP 정보 등 라벨·값 목록)*/

.mod-modal--md {
    --modal-pad-y: var(--spacing-48, 48px);
    --modal-pad-x: var(--spacing-40, 40px);
    --modal-title-size: var(--font-title-medium-size, 1.75rem);    /* 28px*/
    --modal-eyebrow-size: var(--font-body-large-bold-size, 1.0625rem); /* 17px*/
    --modal-close-size: 40px;
    max-width: 640px;
  }

.mod-modal--md .mod-modal__foot {
      margin-top: var(--spacing-32, 32px);
    }

.mod-modal--lg {
    max-width: 960px;
  }

.mod-modal--full {
    max-width: 1280px;
    height: 90vh;
  }

/* ── 모바일 ────────────────────────────────────────────*/

@media (max-width: 768px) {

.mod-modal {
    --modal-pad-y: var(--spacing-32, 32px);
    --modal-pad-x: var(--spacing-20, 20px);
    --modal-title-size: var(--font-title-small-size, 1.5rem);      /* 24px*/
    --modal-eyebrow-size: var(--font-body-medium-bold-size, 1rem); /* 16px*/
    --modal-close-size: 40px;
    max-height: calc(100vh - 32px)
}

    .mod-modal__foot {
      margin-top: var(--spacing-32, 32px);
    }

      .mod-modal__foot > .el-btn {
        flex: 1 1 0;
        min-width: 0;
        height: var(--size-height-48, 48px);
      }
  }

/* ── 딤드 없는 플로팅 드래그 패널 변형자 (기존 컴팩트 룩 유지) ─────*/

.mod-modal--floating,
  .mod-modal--draggable {
    position: fixed;
    z-index: 1100;
    max-width: none;
    padding: 0;
    border-radius: var(--radius-fig-md, 8px);
    border: 1px solid var(--border-default, #dce0ea);
    box-shadow: 0 12px 36px rgba(0, 0, 0, 0.22);
    transform: none !important;
  }

.mod-modal--floating .mod-modal__head, .mod-modal--draggable .mod-modal__head {
      align-items: center;
      margin: 0;
      padding: var(--spacing-12, 12px) var(--spacing-16, 16px);
      border-bottom: none;
      cursor: move; /* 드래그 핸들 표시*/
      -webkit-user-select: none;
         -moz-user-select: none;
              user-select: none;
      background-color: var(--color-navy, #1b2b43);
    }

.mod-modal--floating .mod-modal__head-title, .mod-modal--draggable .mod-modal__head-title {
      flex-direction: row;
      align-items: center;
      gap: var(--spacing-8, 8px);
      font-size: var(--font-body-medium-bold-size, 1rem);
      color: var(--text-inverse, #ffffff);
    }

.mod-modal--floating .mod-modal__head-btn, .mod-modal--draggable .mod-modal__head-btn {
      width: 32px;
      height: 32px;
      color: rgba(255, 255, 255, 0.7);
    }

.mod-modal--floating .mod-modal__head-btn:hover, .mod-modal--draggable .mod-modal__head-btn:hover {
        color: var(--text-inverse, #ffffff);
        background-color: rgba(255, 255, 255, 0.15);
      }

.mod-modal--floating .mod-modal__body, .mod-modal--draggable .mod-modal__body {
      margin: 0;
      padding: var(--spacing-16, 16px);
    }

.mod-modal--floating .mod-modal__foot, .mod-modal--draggable .mod-modal__foot {
      justify-content: flex-end;
      gap: var(--spacing-8, 8px);
      margin: 0;
      padding: var(--spacing-12, 12px) var(--spacing-16, 16px);
      border-top: 1px solid var(--border-default, #dce0ea);
      background-color: var(--background-subtle, #f8f9fb);
    }

.mod-modal--floating .mod-modal__foot > .el-btn, .mod-modal--draggable .mod-modal__foot > .el-btn {
        flex: 0 0 auto;
        min-width: 0;
        height: var(--size-btn-height-sm, 36px);
        padding: 0 var(--spacing-12, 12px);
        font-size: var(--font-body-xxsmall-medium-size, 13px);
      }

/* ── 하단 버튼 영문 병기 (.mod-modal__btn-en) — 모바일은 버튼 폭이 반반이라 영문을 숨겨 글자 넘침 방지 ──*/

/* 예) <button class="el-btn el-btn--primary">이메일 전체 복사 <span class="mod-modal__btn-en" lang="en">(Copy Emails)</span></button>*/

@media screen and (max-width: 767px) {
  .mod-modal__btn-en {
    display: none;
  }
  }

/**
 * _desc-list.scss
 * Modules 레이어 - 라벨·값 설명 목록 (.mod-desc-list)
 * NCP 정보 팝업(화면정의서) 기준. 상세 팝업·요약 정보 영역 공통 (배경 없는 가벼운 행 구분형)
 *
 * [구조]  dl.mod-desc-list > div.__row > dt(라벨) + dd(값)
 * [변형]  --grid        : 칸형 배치 — "라벨 | 값" 회색 칸을 3열(≤1279 2열, ≤767 1열) 그리드로 나열 (상세 페이지 정보 영역)
 *         __row--span-2 / __row--full : (--grid) 2칸 차지 / 한 줄 전체
 *         __row--strong : 값 굵게 (이름 등 대표 항목)
 *         __value--pre  : 줄바꿈 보존 (소개 등 여러 줄 텍스트)
 *         __link        : 값 안 링크 (mailto 등)
 * ※ 폼 표 형태(라벨 배경·200px)가 필요하면 .mod-form-table--view 사용
 */

.mod-desc-list {
  margin: 0;
  border-top: 1px solid var(--border-default, #dce0ea);
}

.mod-desc-list__row {
    display: grid;
    grid-template-columns: 120px minmax(0, 1fr);
    -moz-column-gap: var(--spacing-16, 16px);
         column-gap: var(--spacing-16, 16px);
    padding: var(--spacing-16, 16px) var(--spacing-4, 4px);
    border-bottom: 1px solid var(--border-default, #dce0ea);
  }

.mod-desc-list__row dt {
      font-size: var(--font-body-medium-medium-size, 1rem);
      font-weight: var(--font-body-medium-medium-weight, 500);
      line-height: var(--font-body-medium-medium-line-height, 1.5);
      color: var(--text-bolder, #090c10);
    }

.mod-desc-list__row dd {
      margin: 0;
      min-width: 0;
      font-size: var(--font-body-medium-regular-size, 1rem);
      line-height: var(--font-body-medium-regular-line-height, 1.5);
      color: var(--text-default, #4a5667);
      word-break: keep-all;
      overflow-wrap: anywhere;
    }

.mod-desc-list__row--strong dd {
      font-weight: var(--font-body-medium-bold-weight, 700);
      color: var(--text-bolder, #090c10);
    }

.mod-desc-list__value--pre {
    white-space: pre-line;
  }

/* 모달 바디 첫 요소일 때: 헤더 구분선과 겹치지 않도록 상단선 제거*/

.mod-modal__body > .mod-desc-list:first-child {
    border-top: 0;
  }

.mod-modal__body > .mod-desc-list:first-child .mod-desc-list__row:first-child {
      padding-top: 0;
    }

.mod-desc-list__link {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color 0.15s ease;
  }

.mod-desc-list__link:hover,
    .mod-desc-list__link:focus-visible {
      color: var(--text-primary, #396cfa);
    }

/* ── (변형) 칸형 그리드 (.mod-desc-list--grid) — 공고정보 상세 등 ─────────*/

.mod-desc-list--grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--spacing-8, 8px);
  border-top: 0;
}

.mod-desc-list--grid .mod-desc-list__row {
    display: flex;
    align-items: baseline;
    gap: var(--spacing-12, 12px);
    min-width: 0;
    padding: var(--spacing-12, 12px) var(--spacing-16, 16px);
    background-color: var(--background-subtle, #f8f9fb);
    border-bottom: 0;
    border-radius: var(--radius-fig-xs, 2px);
  }

/* 라벨 뒤 1×12 구분선*/

.mod-desc-list--grid .mod-desc-list__row dt {
      display: inline-flex;
      align-items: center;
      gap: var(--spacing-12, 12px);
      flex-shrink: 0;
      white-space: nowrap;
    }

.mod-desc-list--grid .mod-desc-list__row dt::after {
        content: '';
        width: 1px;
        height: 12px;
        background-color: var(--border-default-strong, #cbd1dc);
      }

.mod-desc-list--grid .mod-desc-list__row dd {
      flex: 1 1 auto;
    }

.mod-desc-list--grid .mod-desc-list__row--span-2 { grid-column: span 2; }

.mod-desc-list--grid .mod-desc-list__row--full { grid-column: 1 / -1; }

/* ── 반응형 ── @media 내부 &__ 미전개 이슈로 최상위 전체 선택자로 작성*/

@media screen and (max-width: 767px) {
  .mod-desc-list__row {
    grid-template-columns: 88px minmax(0, 1fr);
    -moz-column-gap: var(--spacing-12, 12px);
         column-gap: var(--spacing-12, 12px);
    padding: var(--spacing-12, 12px) 0;
  }

  .mod-desc-list__row dt,
  .mod-desc-list__row dd {
    font-size: var(--font-body-small-regular-size, 0.9375rem);
  }
  }

@media screen and (max-width: 1279px) {
  .mod-desc-list--grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  }

/* 모바일 1열: 칸을 하나의 회색 박스 + 행 구분선으로 합침, 라벨 칸 고정 폭 → 값 시작점 정렬*/

@media screen and (max-width: 767px) {
  .mod-desc-list--grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
    border-radius: var(--radius-fig-sm, 4px);
    overflow: hidden;
  }

  .mod-desc-list--grid .mod-desc-list__row {
    padding: 10px var(--spacing-12, 12px);
    border-radius: 0;
    border-bottom: 1px solid var(--border-default, #dce0ea);
  }

    .mod-desc-list--grid .mod-desc-list__row:last-child {
      border-bottom: 0;
    }

  .mod-desc-list--grid .mod-desc-list__row dt {
    width: 108px;
    justify-content: space-between;
    white-space: normal;
  }

  .mod-desc-list--grid .mod-desc-list__row--span-2,
  .mod-desc-list--grid .mod-desc-list__row--full {
    grid-column: auto;
  }
  }

/**
 * _calendar.scss
 * Modules 레이어 - 월별 캘린더 스킨 (.mod-calendar) — FullCalendar v6 테마
 * 행사정보 캘린더 보기(화면정의서 ④) 기준. FullCalendar 기본 룩을 프로젝트 토큰으로 덮어씀
 *
 * [구조]
 * .mod-calendar[data-can-write]
 * ├ __head   : __nav(이전) · __title(2026. 09) · __nav(다음)   ← FullCalendar headerToolbar 대신 자체 헤더
 * ├ __body   : FullCalendar 렌더 루트 (dayGridMonth / 모바일 listMonth)
 * └ __legend : __legend-item--online / --offline (점 + 라벨)
 * [셀 내부 (JS 주입)]
 * __date : 날짜 숫자 (일·토 색, 이전/다음 달 흐림, 오늘 프라이머리 원형 + 흰 글자, 행사 있는 날 Bold)
 * __add  : [+] 날짜별 등록 버튼 — data-can-write 일 때만 주입, hover / focus 시 노출
 * [행사 구분]  이벤트 classNames: is-online(파랑 --element-primary) / is-offline(청록 --element-secondary)
 */

.mod-calendar {
  --cal-online: var(--element-primary, #396cfa);
  --cal-offline: var(--element-secondary, #01a1c5);

  display: flex;
  flex-direction: column;
  gap: var(--spacing-20, 20px);
  font-family: var(--font-family-pretendard);
}

/* ── 자체 헤더: < 2026. 09 > ─────────────────────────*/

.mod-calendar__head {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-20, 20px);
  }

.mod-calendar__title {
    min-width: 120px;
    margin: 0;
    text-align: center;
    font-size: var(--font-title-small-size, 1.5rem);
    font-weight: var(--font-title-small-weight, 700);
    line-height: 1.4;
    color: var(--text-bolder, #090c10);
    font-variant-numeric: tabular-nums;
  }

.mod-calendar__nav {
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    background-color: var(--background-default, #ffffff);
    border: 1px solid var(--border-default, #dce0ea);
    border-radius: var(--radius-fig-sm, 4px);
    color: var(--text-bold, #262f3c);
    cursor: pointer;
    transition: background-color 0.15s ease, border-color 0.15s ease;
  }

.mod-calendar__nav svg {
      width: 20px;
      height: 20px;
    }

.mod-calendar__nav:hover {
      background-color: var(--background-subtle, #f8f9fb);
      border-color: var(--border-default-strong, #cbd1dc);
    }

.mod-calendar__nav:focus-visible {
      outline: none;
      box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.25);
    }

/* ── 범례 ─────────────────────────────────────────────*/

.mod-calendar__legend {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-8, 8px) var(--spacing-20, 20px);
    margin: 0;
    padding: 0;
    list-style: none;
  }

.mod-calendar__legend-item {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-8, 8px);
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    color: var(--text-default, #4a5667);
  }

.mod-calendar__legend-item::before {
      content: '';
      width: 10px;
      height: 10px;
      border-radius: 50%;
      background-color: currentColor;
    }

.mod-calendar__legend-item--online::before { background-color: var(--cal-online); }

.mod-calendar__legend-item--offline::before { background-color: var(--cal-offline); }

/* ── 로드 실패 안내 ────────────────────────────────────*/

.mod-calendar__error[hidden] {
    display: none;
  }

/* ═══════════════════════════════════════════════════*/

/* FullCalendar 테마 (CSS 변수 + .fc 선택자 덮어쓰기)*/

/* ═══════════════════════════════════════════════════*/

.mod-calendar .fc {
    --fc-border-color: var(--border-default, #dce0ea);
    --fc-page-bg-color: var(--background-default, #ffffff);
    --fc-neutral-bg-color: var(--background-subtle, #f8f9fb);
    --fc-today-bg-color: transparent;
    --fc-event-bg-color: transparent;
    --fc-event-border-color: transparent;
    --fc-list-event-hover-bg-color: var(--background-subtle, #f8f9fb);
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    color: var(--text-default, #4a5667);
  }

/* 요일 헤더 (일 빨강 / 토 파랑)*/

.mod-calendar .fc .fc-col-header-cell {
    background-color: var(--background-subtle, #f8f9fb);
  }

.mod-calendar .fc .fc-col-header-cell .fc-col-header-cell-cushion {
      display: block;
      padding: var(--spacing-12, 12px) 0;
      font-size: var(--font-body-medium-bold-size, 1rem);
      font-weight: var(--font-body-medium-bold-weight, 700);
      color: var(--text-bold, #262f3c);
      text-decoration: none;
    }

.mod-calendar .fc .fc-col-header-cell.fc-day-sun .fc-col-header-cell-cushion { color: var(--text-danger, #d0121b); }

.mod-calendar .fc .fc-col-header-cell.fc-day-sat .fc-col-header-cell-cushion { color: var(--text-primary, #396cfa); }

/* 날짜 칸*/

.mod-calendar .fc .fc-daygrid-day-frame {
    position: relative;
    min-height: 112px;
  }

.mod-calendar .fc .fc-daygrid-day-top {
    justify-content: center; /* 기본 우측 정렬 → 가운데*/
    padding-top: var(--spacing-8, 8px);
  }

.mod-calendar .fc .fc-daygrid-day-number {
    padding: 0;
    text-decoration: none;
  }

/* 날짜 숫자*/

.mod-calendar .mod-calendar__date {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 30px;
    height: 30px;
    padding: 0 4px;
    border-radius: 50%;
    font-size: var(--font-body-medium-medium-size, 1rem);
    font-weight: var(--font-body-medium-medium-weight, 500);
    color: var(--text-bold, #262f3c);
  }

.mod-calendar .fc .fc-day-sun .mod-calendar__date { color: var(--text-danger, #d0121b); }

.mod-calendar .fc .fc-day-sat .mod-calendar__date { color: var(--text-primary, #396cfa); }

/* 행사 있는 날: Bold만 — 구분색은 점이 담당하므로 숫자는 일반 색 유지*/

.mod-calendar .fc .has-online .mod-calendar__date,
  .mod-calendar .fc .has-offline .mod-calendar__date {
    font-weight: var(--font-body-medium-bold-weight, 700);
  }

/* 이전/다음 달 날짜 흐림 (FullCalendar 기본 opacity 대신 색으로)*/

.mod-calendar .fc .fc-day-other .fc-daygrid-day-top {
    opacity: 1;
  }

.mod-calendar .fc .fc-day-other .mod-calendar__date {
    color: var(--text-tertiary, #cbd1dc);
    font-weight: var(--font-body-medium-medium-weight, 500);
  }

/* 오늘: 프라이머리 원형 + 흰 글자 — 일·토 · 지난/다음 달 색보다 우선하도록 날짜색 규칙들 뒤에 둠*/

.mod-calendar .fc .fc-day-today .mod-calendar__date {
    background-color: var(--background-primary);
    color: var(--text-inverse);
  }

/* 행사 항목 (점 + 제목 1줄 말줄임)*/

.mod-calendar .fc .fc-daygrid-dot-event {
    gap: 6px;
    margin: 2px 6px 0;
    padding: 1px 2px;
    border-radius: var(--radius-fig-xs, 2px);
    font-size: var(--font-body-xsmall-regular-size, 0.875rem); /* 14px (기본 .85em 대체)*/
    cursor: pointer;
  }

.mod-calendar .fc .fc-daygrid-dot-event:hover,
    .mod-calendar .fc .fc-daygrid-dot-event:focus-visible {
      background-color: var(--background-subtle, #f8f9fb);
    }

.mod-calendar .fc .fc-daygrid-dot-event .fc-event-title {
      font-weight: var(--font-weight-regular, 400);
      color: var(--text-default, #4a5667);
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

/* 지역 구분 뱃지 (국내 / 해외 / 국·해외 — 동일 색상 스타일 mod-badge--muted 톤)*/

.mod-calendar__region {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 1px 4px;
    border-radius: var(--radius-sm, 2px);
    font-size: var(--font-body-xxsmall-medium-size, 0.75rem);
    font-weight: var(--font-weight-medium, 500);
    line-height: 1.2;
    background-color: var(--element-gray-lighter, #f2f3f8);
    color: var(--element-gray, #929aaa);
    white-space: nowrap;
    flex-shrink: 0;
  }

.mod-calendar .fc .fc-daygrid-event-dot,
  .mod-calendar .fc .fc-list-event-dot {
    margin: 0;
    border-width: 4px;
    border-radius: 50%;
  }

.mod-calendar .fc .is-online .fc-daygrid-event-dot,
  .mod-calendar .fc .is-online .fc-list-event-dot { border-color: var(--cal-online); }

.mod-calendar .fc .is-offline .fc-daygrid-event-dot,
  .mod-calendar .fc .is-offline .fc-list-event-dot { border-color: var(--cal-offline); }

/* +N 더보기 링크 · 팝오버*/

.mod-calendar .fc .fc-daygrid-more-link {
    margin: 2px 8px 0;
    font-size: var(--font-body-xxsmall-medium-size, 0.8125rem);
    font-weight: var(--font-weight-medium, 500);
    color: var(--text-primary, #396cfa);
    text-decoration: none;
  }

.mod-calendar .fc .fc-popover {
    border-radius: var(--radius-fig-md, 8px);
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
    overflow: hidden;
  }

.mod-calendar .fc .fc-popover-header {
    padding: var(--spacing-8, 8px) var(--spacing-12, 12px);
    font-weight: var(--font-weight-bold, 700);
    color: var(--text-bold, #262f3c);
  }

/* [+] 날짜별 등록 버튼 (hover / focus 시 노출)*/

.mod-calendar .mod-calendar__add {
    position: absolute;
    top: 6px;
    right: 6px;
    z-index: 2;
    width: 26px;
    height: 26px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    background-color: var(--background-default, #ffffff);
    border: 1px solid var(--border-default-strong, #cbd1dc);
    border-radius: var(--radius-fig-sm, 4px);
    color: var(--text-primary, #396cfa);
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.15s ease, background-color 0.15s ease;
  }

.mod-calendar .mod-calendar__add svg {
      width: 16px;
      height: 16px;
    }

.mod-calendar .mod-calendar__add:hover {
      background-color: var(--background-primary-subtler, #f0f4ff);
    }

.mod-calendar .mod-calendar__add:focus-visible {
      opacity: 1;
      outline: none;
      box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.25);
    }

.mod-calendar .fc .fc-daygrid-day:hover .mod-calendar__add,
  .mod-calendar .fc .fc-daygrid-day:focus-within .mod-calendar__add {
    opacity: 1;
  }

/* 월별 목록 보기 (모바일 listMonth)*/

.mod-calendar .fc .fc-list {
    border-radius: var(--radius-fig-md, 8px);
    overflow: hidden;
  }

.mod-calendar .fc .fc-list-day-cushion {
    background-color: var(--background-subtle, #f8f9fb);
    font-weight: var(--font-weight-bold, 700);
    color: var(--text-bold, #262f3c);
  }

.mod-calendar .fc .fc-list-day-cushion a {
      color: inherit;
      text-decoration: none;
    }

.mod-calendar .fc .fc-list-event {
    cursor: pointer;
  }

.mod-calendar .fc .fc-list-event-time {
    color: var(--text-muted, #929aaa);
    white-space: nowrap;
  }

.mod-calendar .fc .fc-list-event-title a {
    color: var(--text-default, #4a5667);
    text-decoration: none;
  }

.mod-calendar .fc .fc-list-empty {
    background-color: var(--background-default, #ffffff);
    color: var(--text-muted, #929aaa);
  }

/* ── 반응형 ── @media 내부 &__ 미전개 이슈로 최상위 전체 선택자로 작성*/

@media screen and (min-width: 768px) and (max-width: 1279px) {
  .mod-calendar .fc .fc-daygrid-day-frame {
    min-height: 96px;
  }

  .mod-calendar .fc .fc-daygrid-dot-event {
    margin: 2px 3px 0;
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
  }
  }

@media screen and (max-width: 767px) {
  .mod-calendar {
    gap: var(--spacing-16, 16px);
  }

  .mod-calendar__head {
    gap: var(--spacing-12, 12px);
  }

  .mod-calendar__title {
    font-size: var(--font-title-xsmall-size, 1.25rem);
  }

  .mod-calendar__nav {
    width: 36px;
    height: 36px;
  }

  .mod-calendar__legend-item {
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
  }
  }

/**
 * _repeater.scss
 * Modules 레이어 - 반복 입력 필드 (.mod-repeater)
 * 같은 입력을 여러 줄 추가·삭제 (마감일 여러 개, 첨부 링크 여러 개 등)
 *
 * [구조]
 * .mod-repeater[data-repeater][data-max]
 * ├ __item (첫 줄: __field + [+] .js-repeater-add)
 * ├ __item (추가 줄: __field + [−] .js-repeater-remove)
 * └ <template class="mod-repeater__template"> 추가 줄 원본
 * [동작]  common-ui-engine.js 전역 위임 — 추가/삭제, data-max 도달 시 [+] 비활성,
 *         'repeater:add' / 'repeater:remove' 이벤트 (detail: { item }) — 추가 줄 datepicker 초기화 등
 */

.mod-repeater {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-8, 8px);
  width: 100%;
}

.mod-repeater__item {
    display: flex;
    align-items: center;
    gap: var(--spacing-8, 8px);
  }

.mod-repeater__field {
    flex: 0 1 260px;
    min-width: 0;
  }

/* 전체 폭 필드 (링크 등)*/

.mod-repeater--wide .mod-repeater__field {
    flex: 1 1 auto;
  }

.mod-repeater__btn {
    flex-shrink: 0;
    width: 48px;
    height: 48px;
    color: var(--text-bold, #262f3c);
  }

.mod-repeater__btn svg {
      width: 18px;
      height: 18px;
    }

@media screen and (max-width: 767px) {
  .mod-repeater__field {
    flex: 1 1 auto;
  }
  }

/**
 * _tooltip.scss
 * Modules 레이어 - 포털 툴팁 모듈 (.mod-tooltip-portal)
 * 
 * DOM 잘림(Overflow Clipping)을 방지하기 위해 body 직하단 포털로 렌더링되며,
 * 상하좌우 자동 반전(Auto-Flip) 및 화살표 꼬리 인디케이터를 캡슐화합니다.
 */

.mod-tooltip-portal {
  position: fixed;
  z-index: 9999; /* 최상위 지점*/
  pointer-events: none; /* 마우스 이벤트 통과 (호버 방해 금지)*/
  padding: 0.5rem 0.75rem; /* 8px 12px*/
  background-color: var(--color-navy, #001f47);
  color: #ffffff;
  font-size: var(--font-size-xs, 15px);
  font-weight: var(--font-weight-medium, 500);
  line-height: var(--line-height-normal, 1.4);
  border-radius: var(--radius-md, 4px);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
  white-space: normal;
  max-width: 280px;
  word-break: keep-all;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s ease;
}

.mod-tooltip-portal.is-visible {
    opacity: 1;
    visibility: visible;
  }

/* 화살표 꼬리 기본 인디케이터*/

.mod-tooltip-portal::after {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    border-style: solid;
  }

/* ── 방향별 꼬리 스타일 ──────────────────────────────*/

/* 1. Top (상단 노출 → 꼬리는 아래로)*/

.mod-tooltip-portal--top {
    transform: translateY(-4px);
  }

.mod-tooltip-portal--top.is-visible {
      transform: translateY(0);
    }

.mod-tooltip-portal--top::after {
      bottom: -6px;
      left: 50%;
      transform: translateX(-50%);
      border-width: 6px 6px 0 6px;
      border-color: var(--color-navy, #001f47) transparent transparent transparent;
    }

/* 2. Bottom (하단 노출 → 꼬리는 위로)*/

.mod-tooltip-portal--bottom {
    transform: translateY(4px);
  }

.mod-tooltip-portal--bottom.is-visible {
      transform: translateY(0);
    }

.mod-tooltip-portal--bottom::after {
      top: -6px;
      left: 50%;
      transform: translateX(-50%);
      border-width: 0 6px 6px 6px;
      border-color: transparent transparent var(--color-navy, #001f47) transparent;
    }

/* 3. Left (좌측 노출 → 꼬리는 우측으로)*/

.mod-tooltip-portal--left {
    transform: translateX(-4px);
  }

.mod-tooltip-portal--left.is-visible {
      transform: translateX(0);
    }

.mod-tooltip-portal--left::after {
      right: -6px;
      top: 50%;
      transform: translateY(-50%);
      border-width: 6px 0 6px 6px;
      border-color: transparent transparent transparent var(--color-navy, #001f47);
    }

/* 4. Right (우측 노출 → 꼬리는 좌측으로)*/

.mod-tooltip-portal--right {
    transform: translateX(4px);
  }

.mod-tooltip-portal--right.is-visible {
      transform: translateX(0);
    }

.mod-tooltip-portal--right::after {
      left: -6px;
      top: 50%;
      transform: translateY(-50%);
      border-width: 6px 6px 6px 0;
      border-color: transparent var(--color-navy, #001f47) transparent transparent;
    }

/**
 * _toast.scss
 * Modules 레이어 - 토스트 알림 모듈 (.mod-toast & .mod-toast-container)
 * 
 * 다중 토스트 스태킹(Overlap 0%), 위치별 컨테이너(top-right, bottom-right 등),
 * 시맨틱 타입(success, error, warning, info) 및 프로그레스 바 카운트다운을 지원합니다.
 */

/* 1. 토스트 스태킹 최상위 컨테이너 (.mod-toast-container)*/

.mod-toast-container {
  position: fixed;
  z-index: 10000;
  display: flex;
  flex-direction: column;
  gap: 0.75rem; /* 토스트 간 12px 간격 (겹침 절대 방지)*/
  width: 100%;
  max-width: 420px;
  pointer-events: none;
}

/* 배경 마우스 통과*/

/* ── 위치별 변형 ──────────────────────────────────────*/

.mod-toast-container--top-right {
    top: 1.5rem;
    right: 1.5rem;
  }

.mod-toast-container--bottom-right {
    bottom: 1.5rem;
    right: 1.5rem;
    flex-direction: column-reverse; /* 하단 노출 시 위로 차곡차곡 쌓임*/
  }

.mod-toast-container--top-center {
    top: 1.5rem;
    left: 50%;
    transform: translateX(-50%);
  }

.mod-toast-container{

  @media screen and (max-width: 767px) {
    max-width: calc(100% - 2rem);
    &--top-right,
    &--bottom-right {
      right: 1rem;
      left: auto;
    }
    &--top-center {
      left: 50%;
      transform: translateX(-50%);
    }
  }
}

/* 2. 개별 토스트 카드 모듈 (.mod-toast)*/

/* 타입 표현: 흰 카드 + 타입 색 원형 아이콘(흰 기호) + 타입 색 제목 + 하단 진행 막대*/

/*   (구: 왼쪽 4px 컬러 보더 → 배경 틴트는 떠 있는 느낌이 약해 원형 아이콘으로 대체)*/

/*   타입 색은 --toast-accent(아이콘·진행 막대) / --toast-title(제목, 흰 바탕 AA 4.5:1↑) 두 변수로만 전환*/

.mod-toast {
  --toast-accent: var(--blue-500);
  --toast-title: var(--blue-600);

  position: relative;
  pointer-events: auto; /* 버튼 조작 및 호버 가능*/
  display: flex;
  align-items: flex-start;
  gap: var(--spacing-12);
  padding: var(--spacing-16);
  background-color: var(--background-default);
  border-radius: var(--radius-fig-md);
  border: 1px solid var(--border-default);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
  overflow: hidden;
  opacity: 0;
  transform: translateY(-10px);
  transition: opacity 0.25s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.25s cubic-bezier(0.16, 1, 0.3, 1);
}

.mod-toast.is-visible {
    opacity: 1;
    transform: translateY(0);
  }

.mod-toast.is-hiding {
    opacity: 0;
    transform: translateY(-10px);
  }

/* ── 내부 구조 ────────────────────────────────────────*/

/* 원형 아이콘 28px (기호 16px 흰색) — 기호 모양도 타입마다 달라 색 구분이 어려워도 식별 가능*/

.mod-toast__icon {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background-color: var(--toast-accent);
    color: var(--text-inverse);
  }

.mod-toast__icon svg {
      width: 16px;
      height: 16px;
    }

/* 첫 줄(15px × 1.5 ≈ 22px)을 아이콘 28px 가운데에 맞춤*/

.mod-toast__content {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding-top: 3px;
  }

.mod-toast__title {
    margin: 0;
    font-size: var(--font-body-small-medium-size, 15px);
    font-weight: var(--font-weight-bold);
    line-height: 1.5;
    color: var(--toast-title);
    word-break: keep-all;
  }

.mod-toast__message {
    margin: 0;
    font-size: var(--font-size-xs, 15px);
    font-weight: var(--font-weight-medium, 500);
    color: var(--color-text-primary, #111111);
    line-height: var(--line-height-relaxed, 1.5);
    word-break: keep-all;
  }

/* 제목이 있으면 본문은 한 단계 약하게*/

.mod-toast__title + .mod-toast__message {
    font-size: var(--font-body-xsmall-regular-size, 14px);
    font-weight: var(--font-weight-regular);
    color: var(--text-default);
  }

.mod-toast__close {
    flex-shrink: 0;
    background: none;
    border: none;
    padding: 2px;
    margin-top: 3px;
    color: var(--color-text-muted, #888888);
    cursor: pointer;
    border-radius: var(--radius-sm, 2px);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: color 0.15s ease, background-color 0.15s ease;
  }

.mod-toast__close:hover {
      color: var(--color-text-primary, #111111);
      background-color: var(--color-gray-100, #f0f0f0);
    }

.mod-toast__close:focus-visible {
      outline: 2px solid var(--text-primary);
      outline-offset: 1px;
    }

/* ── 하단 프로그레스 바 ─────────────────────────────*/

.mod-toast__progress {
    position: absolute;
    bottom: 0;
    left: 0;
    height: 3px;
    width: 100%;
    background-color: var(--toast-accent);
    transform-origin: left;
    transition: transform linear;
  }

/* ── 시맨틱 타입별 색 (변수만 교체) ─────────────────────*/

.mod-toast--success {
    --toast-accent: var(--color-success);
    --toast-title: var(--color-success-strong);
  }

.mod-toast--error {
    --toast-accent: var(--red-500);
    --toast-title: var(--red-500);
  }

.mod-toast--warning {
    --toast-accent: var(--color-warning);
    --toast-title: var(--color-warning-strong);
  }

.mod-toast--info {
    --toast-accent: var(--blue-500);
    --toast-title: var(--blue-600);
  }

/**
 * _toggle.scss
 * Modules 레이어 - 분절형(Segmented) ON/OFF 토글 (.mod-toggle)
 * Figma: Switch 컴포넌트 (node 122:999) — State(On/Off) × Size(Large/Medium/Small)
 *
 * ※ 기존 둥근 슬라이딩 토글(.mod-switch)과는 별개의 신규 패턴입니다.
 *   - .mod-switch : 둥근 트랙 + 썸(circle) 방식 (유지)
 *   - .mod-toggle : ON/OFF 글자가 든 분절 버튼 방식 (Figma Switch)
 *
 * [구조]
 *   .mod-toggle
 *     .mod-toggle__option (.is-active)   ← 각 세그먼트(버튼)
 *
 * [사이즈]  기본 = Large / .mod-toggle--md / .mod-toggle--sm
 *
 * [마크업 예시]
 *   <div class="mod-toggle" role="group" aria-label="사용 여부">
 *     <button type="button" class="mod-toggle__option is-active">ON</button>
 *     <button type="button" class="mod-toggle__option">OFF</button>
 *   </div>
 */

.mod-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0;
  padding: 3px; /* Figma Large/Medium padding*/
  background-color: var(--background-muted, #f2f3f8);
  border-radius: var(--radius-fig-sm, 4px);
  overflow: hidden;
}

/* ── 세그먼트 ──────────────────────────────────────*/

.mod-toggle__option {
    flex: 1 0 0;
    min-width: 72px;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 36px; /* Large 내부 높이(42 - padding*2 ≈ 36)*/
    padding: 0 16px;
    border: none;
    background-color: transparent;
    border-radius: var(--radius-fig-sm, 4px);
    font-family: var(--font-family-pretendard);
    font-size: var(--font-body-xsmall-medium-size, 14px);   /* Large 14px*/
    font-weight: var(--font-body-xsmall-medium-weight, 500);
    line-height: 1.5;
    color: var(--text-muted, #8c8c8c);
    cursor: pointer;
    white-space: nowrap;
    transition: background-color 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
  }

/* 활성(선택) 세그먼트*/

.mod-toggle__option.is-active,
    .mod-toggle__option[aria-selected="true"] {
      background-color: var(--gray-0, #ffffff);
      color: var(--text-bold, #262f3c);
      font-weight: var(--font-body-xsmall-bold-weight, 700);
      box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.08);
    }

.mod-toggle__option:disabled {
      cursor: not-allowed;
      opacity: 0.5;
    }

/* ── 사이즈 변형 (Medium) ───────────────────────────*/

.mod-toggle--md .mod-toggle__option {
      height: 30px;
      padding: 0 12px;
      font-size: var(--font-body-xxsmall-medium-size, 13px); /* Medium 13px*/
    }

/* ── 사이즈 변형 (Small) ────────────────────────────*/

.mod-toggle--sm {
    padding: 2px;
  }

/* Figma Small padding*/

.mod-toggle--sm .mod-toggle__option {
      height: 26px;
      min-width: 56px;
      padding: 0 10px;
      font-size: 12px; /* Small 12px (토큰 스케일 외 → 리터럴)*/
    }

/**
 * _intro.scss
 * Modules 레이어 - 소개 블록 (.mod-intro)
 * Figma: 호라이즌 유럽 소개 2071:5858 — 대표 이미지 + [타이틀·영문 부제 | 세로 구분선 | 설명]
 *
 * 구조:
 *   .mod-intro
 *     .mod-intro__visual > .mod-intro__visual-img   ← 대표 이미지 (높이 505px, cover)
 *     .mod-intro__body                              ← PC: 가로 배치 / 태블릿 이하: 세로 배치
 *       .mod-intro__head
 *         .mod-intro__badge                         ← (선택) .mod-badge--official 공식 포털 뱃지
 *         .mod-intro__title                         ← 34px The Jamsil Bold
 *         .mod-intro__subtitle                      ← 18px Bold 프라이머리 (영문)
 *       .mod-intro__desc                            ← 20px 본문, 좌측 세로 구분선
 *         .mod-intro__desc-kor                      ← (선택) 국문 단락
 *         .mod-intro__desc-en                       ← (선택) 영문 단락 — 국문 아래 가로 구분선
 */

.mod-intro {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-80);
}

.mod-intro__visual {
    overflow: hidden;
    height: 505px; /* Figma 대표 이미지 높이*/
    background-color: var(--gray-1000); /* 이미지 로딩 전 어두운 바탕 (Figma 검정 레이어)*/
  }

.mod-intro__visual-img {
    display: block;
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
  }

.mod-intro__body {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--spacing-40);
  }

.mod-intro__head {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: 10px; /* Figma 타이틀 ↔ 부제*/
  }

/* 공식 포털 뱃지 — 열 방향 flex에서 내용 폭만, 타이틀과 16px (gap 10 + 6)*/

.mod-intro__badge {
    align-self: flex-start;
    margin-bottom: 6px;
  }

.mod-intro__title {
    margin: 0;
    font-family: var(--font-family-jamsil);
    font-size: 2.125rem; /* 34px (Figma 전용 크기, 디스플레이 토큰 스케일에 없음)*/
    font-weight: 700;
    line-height: 1.5;
    color: var(--color-text-secondary); /* #222*/
  }

.mod-intro__subtitle {
    margin: 0;
    font-family: var(--font-family-pretendard);
    font-size: var(--font-size-lg); /* 18px*/
    font-weight: var(--font-weight-bold);
    line-height: 1.42;
    color: var(--text-primary);
  }

/* 좌측 세로 구분선: Figma 84px 라인 → 설명 블록 왼쪽 테두리로 표현 (높이는 타이틀 블록과 맞춤)*/

.mod-intro__desc {
    flex: 0 1 auto;
    min-height: 84px;
    margin: 0;
    padding-left: var(--spacing-40);
    border-left: 1px solid var(--border-default);
    font-family: var(--font-family-pretendard);
    font-size: 1.25rem; /* 20px*/
    font-weight: var(--font-weight-regular);
    line-height: 1.6;
    color: var(--color-text-secondary);
    word-break: keep-all;
  }

.mod-intro__desc-kor {
    margin: 0;
  }

/* 영문 병기 — 국문보다 한 단계 약하게(작게·회색), 세로선과 같은 색 가로선으로 국문과 구분*/

.mod-intro__desc-en {
    margin: var(--spacing-24) 0 0;
    padding-top: var(--spacing-24);
    border-top: 1px solid var(--border-default);
    font-size: var(--font-size-sm); /* 16px*/
    color: var(--color-text-body, #555);
    word-break: normal;
  }

/* ── 반응형 ──*/

/* 설명 폭이 Figma(약 1050px)보다 좁아지면 강제 줄바꿈이 한두 단어만 남기므로 문장 흐름대로 줄바꿈*/

@media screen and (max-width: 1599px) {
  .mod-intro__desc br {
    display: none;
  }
}

@media screen and (max-width: 1279px) {
  .mod-intro {
    gap: var(--spacing-48);
  }

  .mod-intro__visual {
    height: auto;
    aspect-ratio: 1500 / 505; /* PC 비율 유지*/
  }

  .mod-intro__body {
    flex-direction: column;
    gap: var(--spacing-24);
  }

  .mod-intro__desc {
    min-height: 0;
    padding: var(--spacing-24) 0 0;
    border-left: 0;
    border-top: 1px solid var(--border-default);
    font-size: var(--font-size-lg); /* 18px*/
  }

  /* 설명 위쪽 선과 가로선이 연달아 반복되므로 안쪽 간격을 줄임*/
  .mod-intro__desc-en {
    margin-top: var(--spacing-20);
    padding-top: var(--spacing-20);
  }
  }

@media screen and (max-width: 767px) {
  .mod-intro {
    gap: var(--spacing-32);
  }

  .mod-intro__visual {
    aspect-ratio: 4 / 3; /* 가로가 좁으면 도심 이미지가 너무 납작해지므로 세로 비율 확보*/
  }

  .mod-intro__title {
    font-size: var(--font-title-small-size); /* 24px*/
  }

  .mod-intro__subtitle {
    font-size: var(--font-size-xs); /* 15px*/
  }

  .mod-intro__badge {
    margin-bottom: 2px;
  }

  .mod-intro__desc {
    font-size: var(--font-size-sm); /* 16px*/
  }

  .mod-intro__desc-en {
    font-size: var(--font-body-xsmall-regular-size, 0.875rem); /* 14px*/
  }
  }

/**
 * _num-list.scss
 * Modules 레이어 - 번호 항목 목록 (.mod-num-list)
 * Figma: 프로그램 안내 2070:4503 — 번호 원(22px) + 항목 제목(20px) / 들여쓴 사각 불릿 목록 또는 설명 문단
 *
 * 구조:
 *   ol.mod-num-list
 *     li.mod-num-list__item
 *       div.mod-num-list__head
 *         span.mod-num-list__num (aria-hidden — 순서는 <ol>이 전달)
 *         h4.mod-num-list__title
 *       div.mod-num-list__body
 *         ul.mod-num-list__bullets > li.mod-num-list__bullet   ← 불릿형
 *         p.mod-num-list__text                                ← 문단형 (여러 개 가능)
 */

.mod-num-list {
  display: flex;
  flex-direction: column;
  gap: 30px; /* Figma 항목 간격 (spacing 스케일에 30 없음)*/
  margin: 0;
  padding: 0;
  list-style: none;
}

.mod-num-list__item {
    display: flex;
    flex-direction: column;
    gap: 14px; /* Figma 제목 ↔ 내용*/
  }

.mod-num-list__head {
    display: flex;
    align-items: flex-start;
    gap: 10px;
  }

/* 번호 원: 제목 첫 줄 가운데에 맞춤 (20px × 1.5 = 30px 줄 높이 → 위 4px)*/

.mod-num-list__num {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    margin-top: var(--spacing-4);
    border-radius: 50%;
    background-color: var(--color-text-secondary); /* #222*/
    font-family: var(--font-family-pretendard);
    font-size: var(--font-size-sm); /* 16px*/
    font-weight: var(--font-weight-medium);
    line-height: 1;
    color: var(--text-inverse);
  }

.mod-num-list__title {
    margin: 0;
    font-family: var(--font-title-xsmall-family);
    font-size: var(--font-title-xsmall-size); /* 20px*/
    font-weight: var(--font-title-xsmall-weight);
    line-height: var(--font-title-xsmall-line-height);
    letter-spacing: var(--font-title-xsmall-letter-spacing);
    color: var(--text-bold);
    word-break: keep-all;
  }

/* 내용: 번호 원 폭만큼 들여쓰기 (Figma 28px)*/

.mod-num-list__body {
    display: flex;
    flex-direction: column;
    padding-left: 28px;
  }

.mod-num-list__bullets {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-8);
    margin: 0;
    padding: 0;
    list-style: none;
  }

.mod-num-list__bullet,
  .mod-num-list__text {
    font-family: var(--font-body-large-regular-family);
    font-size: var(--font-body-large-regular-size); /* 17px*/
    font-weight: var(--font-body-large-regular-weight);
    line-height: var(--font-body-large-regular-line-height);
    letter-spacing: var(--font-body-large-regular-letter-spacing);
    color: var(--text-default);
    word-break: keep-all;
  }

.mod-num-list__bullet strong, .mod-num-list__text strong {
      font-weight: var(--font-weight-bold);
    }

/* 사각 불릿 5px: 첫 줄 가운데 (17px × 1.5 ≈ 25.5px 줄 높이)*/

.mod-num-list__bullet {
    position: relative;
    padding-left: 15px;
  }

.mod-num-list__bullet::before {
      content: '';
      position: absolute;
      top: calc(0.75em - 2.5px);
      left: 0;
      width: 5px;
      height: 5px;
      background-color: var(--border-default);
    }

.mod-num-list__text {
    margin: 0;
  }

@media screen and (max-width: 767px) {
  .mod-num-list {
    gap: var(--spacing-24);
  }

  .mod-num-list__title {
    font-size: var(--font-size-lg); /* 18px*/
  }

  .mod-num-list__num {
    margin-top: 2px; /* 18px × 1.5 = 27px 줄 높이 기준*/
  }

  .mod-num-list__body {
    padding-left: 0;
  }

  .mod-num-list__bullet,
  .mod-num-list__text {
    font-size: var(--font-size-sm); /* 16px*/
  }
  }

/**
 * _interest.scss
 * Modules 레이어 - 관심 표시 CTA (.mod-interest)
 * 파트너 검색 상세 본문 아래. 뉴스 "후속 기사 원해요" · 커뮤니티 추천처럼 누르면 토글 + 카운트.
 * 당장 문의하지 않아도 관심만 남겨 두면, 등록자가 나중에 관심 표시자 정보를 보고 먼저 연락하는 흐름.
 * 관심 표시자 정보(이름·소속·국가·연구분야·이메일)가 등록자에게 공개되므로 __note 안내를 반드시 둔다.
 *
 * [구조]
 * section.mod-interest
 * ├ __title (+ __title-en)     : 질문 문구 / --owner 는 "관심 표시한 연구자 __total 명"
 * ├ button.__btn[aria-pressed] : 아이콘(star) + __label(+ __label-en) + __count   ← 방문자
 * │   또는 .el-btn (관심 연구자 보기, 모달 트리거)                                   ← --owner
 * └ __note                     : 정보 공개 안내 (방문자)
 * [변형]  --owner : 등록자 본인 화면 — 토글 대신 목록 보기 버튼
 * [상태]  __btn[aria-pressed="true"] : 관심 표시함 — 프라이머리 채움 + 별 채움
 */

.mod-interest {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--spacing-16, 16px);
  padding: var(--spacing-40, 40px) var(--spacing-24, 24px);
  border-bottom: 1px solid var(--border-default, #dce0ea);
  text-align: center;
}

.mod-interest__title {
    margin: 0;
    font-size: var(--font-body-large-medium-size, 1.0625rem);
    font-weight: var(--font-body-large-medium-weight, 500);
    line-height: 1.5;
    letter-spacing: -0.01em;
    color: var(--text-bolder, #090c10);
    word-break: keep-all;
  }

.mod-interest__title-en {
    display: block;
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    font-weight: var(--font-weight-regular, 400);
    color: var(--text-muted, #929aaa);
  }

.mod-interest__total {
    font-weight: var(--font-weight-bold, 700);
    color: var(--text-primary, #396cfa);
  }

/* ── 관심 토글 버튼 (pill) ──────────────────────────*/

.mod-interest__btn {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-8, 8px);
    min-height: 56px;
    padding: 0 var(--spacing-24, 24px);
    border: 1px solid var(--border-default-strong, #cbd1dc);
    border-radius: var(--radius-full, 9999px);
    background-color: var(--background-default, #ffffff);
    font-family: var(--font-family-pretendard);
    font-size: var(--font-body-medium-medium-size, 1rem);
    font-weight: var(--font-body-medium-medium-weight, 500);
    color: var(--text-bold, #262f3c);
    cursor: pointer;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
  }

.mod-interest__btn svg {
      flex-shrink: 0;
      width: 20px;
      height: 20px;
    }

.mod-interest__btn:hover {
      border-color: var(--element-primary, #396cfa);
      color: var(--text-primary, #396cfa);
    }

.mod-interest__btn:focus-visible {
      outline: 2px solid var(--element-primary, #396cfa);
      outline-offset: 2px;
    }

/* 관심 표시함: 채움 + 별 채움 (feather 아이콘 fill="none" 을 CSS 로 덮음)*/

.mod-interest__btn[aria-pressed="true"] {
      border-color: var(--background-primary, #396cfa);
      background-color: var(--background-primary, #396cfa);
      color: var(--text-inverse, #ffffff);
    }

.mod-interest__btn[aria-pressed="true"] svg {
        fill: currentColor;
      }

.mod-interest__btn[aria-pressed="true"]:hover {
        border-color: var(--button-primary-fill-hover, #2e56c8);
        background-color: var(--button-primary-fill-hover, #2e56c8);
        color: var(--text-inverse, #ffffff);
      }

.mod-interest__btn[aria-pressed="true"] .mod-interest__count {
        border-left-color: currentColor;
      }

.mod-interest__label-en {
    font-weight: var(--font-weight-regular, 400);
    opacity: 0.8;
  }

/* 숫자: 라벨과 1px 구분선으로 분리*/

.mod-interest__count {
    margin-left: var(--spacing-4, 4px);
    padding-left: var(--spacing-12, 12px);
    border-left: 1px solid var(--border-default-strong, #cbd1dc);
    font-weight: var(--font-weight-bold, 700);
    line-height: 1;
  }

.mod-interest__note {
    margin: 0;
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
    line-height: 1.5;
    color: var(--text-muted, #929aaa);
    word-break: keep-all;
  }

/* 작성자 화면: 목록 보기 버튼 규격 (하단 버튼과 같은 높이)*/

.mod-interest--owner .el-btn {
    gap: var(--spacing-8, 8px);
    min-width: 200px;
    height: 56px;
  }

.mod-interest--owner .el-btn svg {
      width: 20px;
      height: 20px;
    }

@media screen and (max-width: 767px) {
  .mod-interest {
    padding: var(--spacing-32, 32px) var(--spacing-16, 16px);
  }

  .mod-interest__btn {
    padding: 0 var(--spacing-20, 20px);
  }
  }

/**
 * _person-list.scss
 * Modules 레이어 - 사람 목록 (.mod-person-list)
 * 관심 표시한 연구자 등 "누가 · 어디 소속 · 연락처" 를 훑어보고 바로 메일을 보내는 목록.
 * 적용: 파트너 검색 상세(등록자) 관심 연구자 모달 · 마이페이지 내 파트너 검색 글 관심 연구자 모달 (src/js/person-list.js)
 *
 * [구조]
 * ul.mod-person-list
 * └ li.__item  (세로: 이름·소속 → 세부정보 → 이메일)
 *   ├ __info
 *   │ ├ __name (+ __org)            : 이름 · 소속
 *   │ └ ul.__meta > li              : 국가 · 연구분야 · 관심 표시일 (· 구분)
 *   └ a.__email[href^="mailto:"]   : 메일 아이콘 + 주소 (클릭 시 메일 작성)
 * 모달 폭(640)에서 정보·이메일을 나란히 두면 세부정보가 줄바꿈돼 행 높이가 들쭉날쭉하므로 PC 도 세로 배치
 */

.mod-person-list {
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--border-default, #dce0ea);
}

.mod-person-list__item {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--spacing-8, 8px);
    padding: var(--spacing-16, 16px) var(--spacing-4, 4px);
    border-bottom: 1px solid var(--border-default, #dce0ea);
  }

.mod-person-list__info {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-4, 4px);
    min-width: 0;
  }

.mod-person-list__name {
    margin: 0;
    font-size: var(--font-body-medium-bold-size, 1rem);
    font-weight: var(--font-body-medium-bold-weight, 700);
    line-height: 1.5;
    color: var(--text-bolder, #090c10);
    word-break: keep-all;
  }

.mod-person-list__org {
    margin-left: var(--spacing-8, 8px);
    font-weight: var(--font-weight-regular, 400);
    color: var(--text-default, #4a5667);
  }

.mod-person-list__meta {
    display: flex;
    flex-wrap: wrap;
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
    line-height: 1.5;
    color: var(--text-muted, #929aaa);
  }

.mod-person-list__meta li + li::before {
      content: '·';
      margin: 0 var(--spacing-8, 8px);
    }

.mod-person-list__email {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    max-width: 100%;
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    color: var(--text-default, #4a5667);
    text-decoration: underline;
    text-underline-offset: 3px;
    overflow-wrap: anywhere;
    transition: color 0.15s ease;
  }

.mod-person-list__email svg {
      flex-shrink: 0;
      width: 16px;
      height: 16px;
    }

.mod-person-list__email:hover,
    .mod-person-list__email:focus-visible {
      color: var(--text-primary, #396cfa);
    }

/* 모달 바디 첫 요소일 때: 헤더 구분선과 겹치지 않도록 상단선 제거*/

.mod-modal__body > .mod-person-list:first-child {
    border-top: 0;
  }

.mod-modal__body > .mod-person-list:first-child .mod-person-list__item:first-child {
      padding-top: 0;
    }

/**
 * _slider.scss
 * .mod-slider — Swiper(src/js/lib/swiper, 로컬 v14.3.0) 래퍼 모듈
 *
 * 구조: .mod-slider > .swiper.mod-slider__viewport > .swiper-wrapper > .swiper-slide
 *       + .mod-slider__controls ( ‹ 이전 · 1 / 4 · 다음 › 한 묶음 )
 *
 * - 화살표를 카드 위에 띄우지 않고 페이지 표시 양옆에 둔다
 *   (카드 hover 때 나오는 "게시물로 이동 →" 아이콘과 겹쳐 보이지 않게).
 * - 첫/마지막 페이지의 해당 방향 버튼은 흐리게 비활성(자리 유지 — 숫자가 좌우로 흔들리지 않게).
 *   loop 미사용(정렬 순서 유지). 1페이지뿐이면 컨트롤 묶음 전체 숨김.
 * - --float-controls: PC 에서만 묶음을 슬라이더 우측 하단 바깥에 absolute 로 띄워 높이에 영향 없게.
 */

.mod-slider {
	position: relative;
}

.mod-slider__viewport {
		width: 100%;
	}

/* 기본: 일반 흐름 · 우측 정렬*/

.mod-slider__controls {
		display: flex;
		align-items: center;
		justify-content: flex-end;
		gap: var(--spacing-12);
		margin-top: var(--spacing-16);
	}

.mod-slider__controls:has(.swiper-pagination-lock) {
			display: none;
		}

.mod-slider__nav {
		display: flex;
		align-items: center;
		justify-content: center;
		flex-shrink: 0;
		width: 32px;
		height: 32px;
		padding: 0;

		color: var(--text-bold);
		background-color: transparent;
		border: 1px solid var(--border-default-strong);
		border-radius: 50%;
		cursor: pointer;
		transition: color 0.2s ease, border-color 0.2s ease, opacity 0.2s ease;
	}

.mod-slider__nav svg {
			width: 18px;
			height: 18px;
		}

.mod-slider__nav:hover,
		.mod-slider__nav:focus-visible {
			color: var(--element-primary);
			border-color: var(--element-primary);
		}

.mod-slider__nav:focus-visible {
			outline: 2px solid var(--element-primary);
			outline-offset: 2px;
		}

/* 양끝 도달 — Swiper 가 붙이는 상태 클래스*/

.mod-slider__nav.swiper-button-disabled {
			opacity: 0.3;
			cursor: default;
			pointer-events: none;
		}

/* Swiper 기본 fraction 위치값(absolute·bottom·width 100%) 초기화*/

.mod-slider__counter {
		position: static;
		display: flex;
		align-items: baseline;
		gap: 6px;
		width: auto;
		min-width: 44px;
		justify-content: center;

		color: var(--text-muted);
		font-size: 15px;
		font-weight: 500;
		line-height: 1;
		letter-spacing: 0.02em;
		font-variant-numeric: tabular-nums;
	}

.mod-slider__counter .mod-slider__current {
			color: var(--text-bolder);
			font-weight: 700;
		}

/* 태블릿 이하: 목록 아래 가운데*/

@media screen and (max-width: 1279px) {
	.mod-slider--float-controls .mod-slider__controls {
		justify-content: center;
	}
  }

/* PC: 우측 하단 바깥에 띄움 (섹션 높이 불변)*/

@media screen and (min-width: 1280px) {
	.mod-slider--float-controls .mod-slider__controls {
		position: absolute;
		top: 100%;
		right: 0;
		margin-top: var(--spacing-16);
	}
  }

/**
 * _section-nav.scss
 * Modules 레이어 - 섹션 바로가기 카드 (.mod-section-nav)
 * 페이지 안 하위 섹션 요약 + 해당 섹션으로 스크롤 이동. 적용: 프로그램 안내 Pillar 1(2열) · Pillar 3(3열 예정)
 *
 * ※ 해시 라우터(#/…)라 href="#앵커" 를 쓰면 라우팅이 깨진다 → 버튼 + data-action="scroll-to" + data-target(id)
 *   스크롤 처리는 페이지 JS가 위임으로 담당 (horizon-europe-program.js)
 *
 * 구조:
 *   nav.mod-section-nav[.mod-section-nav--3]
 *     div.mod-section-nav__item
 *       p.mod-section-nav__eyebrow   ← 약칭 · 영문 (lang="en")
 *       p.mod-section-nav__title     ← 국문명
 *       p.mod-section-nav__desc      ← 요약
 *       div.mod-section-nav__action > button.el-btn.el-btn--md
 */

.mod-section-nav {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--spacing-20);
}

.mod-section-nav--3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

.mod-section-nav__item {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--spacing-8);
    padding: var(--spacing-32);
    background-color: var(--background-subtle);
    border-radius: var(--radius-fig-sm);
  }

.mod-section-nav__eyebrow {
    margin: 0;
    font-family: var(--font-body-xsmall-medium-family);
    font-size: var(--font-body-xsmall-medium-size); /* 14px*/
    font-weight: var(--font-body-xsmall-medium-weight);
    line-height: var(--font-body-xsmall-medium-line-height);
    color: var(--text-default);
  }

.mod-section-nav__title {
    margin: 0;
    font-family: var(--font-title-small-family);
    font-size: var(--font-title-small-size); /* 24px*/
    font-weight: var(--font-title-small-weight);
    line-height: var(--font-title-small-line-height);
    letter-spacing: var(--font-title-small-letter-spacing);
    color: var(--text-bolder);
    word-break: keep-all;
  }

.mod-section-nav__desc {
    margin: 0;
    font-family: var(--font-body-medium-regular-family);
    font-size: var(--font-body-medium-regular-size); /* 16px*/
    font-weight: var(--font-body-medium-regular-weight);
    line-height: var(--font-body-medium-regular-line-height);
    letter-spacing: var(--font-body-medium-regular-letter-spacing);
    color: var(--text-default);
    word-break: keep-all;
  }

/* 링크형: 요약 문구 없이 섹션명만 나열 (Pillar 2 — 섹션이 분류 성격이라 카드 설명이 없음)*/

.mod-section-nav--links {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-8) var(--spacing-32);
  }

.mod-section-nav__link {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-8);
    padding: var(--spacing-4) 0;
    background: none;
    border: 0;
    cursor: pointer;
    font-family: var(--font-body-large-medium-family);
    font-size: var(--font-body-large-medium-size); /* 17px*/
    font-weight: var(--font-weight-semibold);
    line-height: var(--font-body-large-medium-line-height);
    color: var(--text-bolder);
  }

.mod-section-nav__link svg {
      width: 16px;
      height: 16px;
      color: var(--text-default);
    }

.mod-section-nav__link:hover {
      text-decoration: underline;
      text-underline-offset: 4px;
    }

.mod-section-nav__link:focus-visible {
      outline: 2px solid var(--element-primary);
      outline-offset: 2px;
    }

.mod-section-nav__link-en {
    font-weight: var(--font-weight-regular);
    color: var(--text-muted);
  }

/* 설명 길이가 달라도 버튼은 카드 바닥에 맞춤*/

.mod-section-nav__action {
    margin-top: auto;
    padding-top: var(--spacing-16);
  }

.mod-section-nav__action svg {
      width: 18px;
      height: 18px;
    }

@media screen and (max-width: 1279px) {
  .mod-section-nav--3 {
    grid-template-columns: minmax(0, 1fr);
  }

  .mod-section-nav__item {
    padding: var(--spacing-24);
  }

  .mod-section-nav__title {
    font-size: var(--font-title-xsmall-size); /* 20px*/
  }
  }

@media screen and (max-width: 767px) {
  .mod-section-nav {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--spacing-12);
  }

  .mod-section-nav--links {
    gap: var(--spacing-8) var(--spacing-20);
  }

  .mod-section-nav__link {
    font-size: var(--font-size-sm); /* 16px*/
  }

  .mod-section-nav__title {
    font-size: var(--font-title-xxsmall-size); /* 18px*/
  }

  .mod-section-nav__desc {
    font-size: var(--font-body-small-regular-size); /* 15px*/
  }
  }

/**
 * _data-table.scss
 * Modules 레이어 - 정보 표 (.mod-data-table)
 * 프로그램 지원 유형처럼 행 단위로 비교하는 정적 정보 표. 적용: 프로그램 안내 Pillar 1 (ERC · MSCA)
 *
 * ※ .pat-board-table(게시판 목록, 가운데 정렬·행 링크)과 용도가 달라 분리.
 *   색·선 토큰은 게시판 표와 동일하게 맞춤 (헤더 --background-subtle · 상단 2px --border-strong-darker · 행 --border-default)
 *
 * 구조:
 *   div.mod-data-table
 *     table.mod-data-table__table
 *       caption.sr-only
 *       colgroup > col.mod-data-table__col--20 …   ← 열 너비 (20/25/30/35%), 나머지 열은 남은 폭
 *       thead > tr > th[scope=col]
 *       tbody > tr
 *         th[scope=row]                               ← 구분 (항목명)
 *           span.mod-data-table__meta                 ← 약칭 등 보조 표기 (선택)
 *           span.mod-badge.mod-badge--outline-primary.mod-data-table__badge (선택)
 *         td[data-label="목적"]                       ← 모바일 카드 라벨
 *           p.mod-data-table__desc                    ← 1행: 목적 (Regular)
 *           p.mod-data-table__cond                    ← 2행: 대상·조건 (SemiBold)
 *           ul.el-bullet-list.el-bullet-list--sm      ← 불릿형 셀
 *           span.mod-data-table__note                 ← 셀 안 보조 표기 (TRL·국문 부제)
 *         th > span.mod-data-table__code              ← 공모 번호 등 고정폭 코드
 *         th > span.mod-badge.mod-data-table__row-badge ← 강조 행 의미 배지 (항목명 아래 줄)
 *         td > p.mod-data-table__item > span.mod-data-table__label ← 셀 안 라벨-내용 묶음
 *         td > a.mod-data-table__link                 ← 셀 안 텍스트 이동 링크
 *         td > span.mod-data-table__link-source       ← 링크 아래 이동 경로 (공고정보 › 한국연구재단)
 *         td > p.mod-data-table__ref > span.mod-data-table__ref-title ← 셀 안 ※ 참고 각주
 *         td > span.mod-data-table__empty             ← 해당 없음 (—)
 *       tr.mod-data-table__row--highlight             ← 강조 행 (연한 프라이머리 틴트, 표당 한 가지 의미)
 *       tr.mod-data-table__row--outlined              ← 강조 행 테두리형 (2px 프라이머리)
 *       tr.mod-data-table__row--accent                ← 강조 행 좌측 바형 (4px 바 + 틴트 6%, 권장) — 강조 행 3종 중 하나만
 *
 * ※ rowspan 은 쓰지 않는다 — 모바일 카드에서 병합 셀이 빠지므로 같은 값을 행마다 반복
 *
 * 강조 규칙: 볼드는 다른 정보와 섞여 있을 때 골라내는 용도로만, 한 열에 한 종류 · 행마다 하나
 *   - 금액은 숫자 부분만 <strong>
 *   - 대상·자격이 별도 열이면 굵게 하지 않음(열 머리글이 구분), 요건 목록 안에 섞이면 신청 대상 한 줄만 <strong>(목록 첫 줄)</strong>
 *   - 강조 행(__row--highlight) 안의 설명 칸은 핵심 구절 하나까지만 진한 <strong> (파랑 금지 — 옆 링크와 혼동, 링크 문구와 같은 말은 제외)
 */

.mod-data-table {
  width: 100%;
}

.mod-data-table__table {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    border-top: 2px solid var(--border-strong-darker);
  }

/* 라벨-값 표 (정의·목적): 머리행 없이 왼쪽 라벨 칸만 회색*/

.mod-data-table--kv tbody th {
    background-color: var(--background-subtle);
  }

.mod-data-table__col--10 { width: 10%; }

.mod-data-table__col--20 { width: 20%; }

.mod-data-table__col--25 { width: 25%; }

.mod-data-table__col--30 { width: 30%; }

.mod-data-table__col--35 { width: 35%; }

.mod-data-table thead th {
    padding: var(--spacing-16) var(--spacing-20);
    background-color: var(--background-subtle);
    border-bottom: 1px solid var(--border-default);
    text-align: left;
    font-family: var(--font-body-medium-medium-family);
    font-size: var(--font-body-medium-medium-size); /* 16px*/
    font-weight: var(--font-weight-semibold);
    line-height: var(--font-body-medium-medium-line-height);
    color: var(--text-bolder);
    white-space: nowrap;
  }

.mod-data-table tbody th,
  .mod-data-table tbody td {
    padding: var(--spacing-24) var(--spacing-20);
    border-bottom: 1px solid var(--border-default);
    text-align: left;
    vertical-align: top;
    word-break: keep-all;
  }

.mod-data-table tbody th {
    font-family: var(--font-body-large-bold-family);
    font-size: var(--font-body-large-bold-size); /* 17px*/
    font-weight: var(--font-weight-semibold);
    line-height: var(--font-body-large-bold-line-height);
    letter-spacing: var(--font-body-large-bold-letter-spacing);
    color: var(--text-bolder);
  }

.mod-data-table tbody td {
    font-family: var(--font-body-medium-regular-family);
    font-size: var(--font-body-medium-regular-size); /* 16px*/
    font-weight: var(--font-body-medium-regular-weight);
    line-height: var(--font-body-medium-regular-line-height);
    letter-spacing: var(--font-body-medium-regular-letter-spacing);
    color: var(--text-default);
  }

.mod-data-table tbody td strong {
      font-weight: var(--font-weight-semibold);
      color: var(--text-bolder);
    }

.mod-data-table__meta {
    display: block;
    font-size: var(--font-body-small-regular-size); /* 15px*/
    font-weight: var(--font-weight-regular);
    color: var(--text-default);
  }

.mod-data-table__badge {
    margin-left: var(--spacing-8);
    padding: var(--spacing-2) var(--spacing-8);
    font-size: var(--font-body-xxsmall-medium-size); /* 13px*/
    vertical-align: 2px;
  }

/* 구분(th) 이름 위 단계 번호 (STEP 1) — 위 .mod-step-flow 카드의 __step과 같은 모양으로 카드 ↔ 표 행을 번호로 연결*/

.mod-data-table__step {
    display: block;
    margin-bottom: var(--spacing-4);
    font-size: var(--font-body-xxsmall-medium-size); /* 13px*/
    font-weight: var(--font-weight-medium);
    letter-spacing: 0.02em;
    color: var(--text-default);
  }

/* 셀 주 값 (예: 기술 단계 열의 TRL 1~4) — 아래 __note 보조 설명보다 먼저 읽히게. 구분 열(SemiBold)보다 한 단계 아래 Medium*/

.mod-data-table__value {
    font-weight: var(--font-weight-medium);
    color: var(--text-bolder);
  }

/* 셀 안 보조 표기 (TRL 1~4, 국문 부제 등) — 본문보다 한 단계 작게*/

.mod-data-table__note {
    display: block;
    margin-top: var(--spacing-4);
    font-size: var(--font-body-xsmall-regular-size); /* 14px*/
    font-weight: var(--font-weight-regular);
    color: var(--text-default);
  }

/* 공모 번호 등 식별 코드 — 폐쇄망이라 웹폰트 없이 시스템 고정폭 글꼴*/

.mod-data-table__code {
    font-family: ui-monospace, SFMono-Regular, Consolas, 'Liberation Mono', monospace;
    font-size: var(--font-body-small-regular-size); /* 15px*/
    font-weight: var(--font-weight-regular);
    letter-spacing: 0;
    word-break: break-all;
  }

.mod-data-table__desc,
  .mod-data-table__cond {
    margin: 0;
  }

/* 셀 머리 요약 문장 — 아래 불릿(회색)과 같은 무게면 요약인지 목록 첫 줄인지 흐려 한 단계 진하게 (크기·굵기는 유지)*/

.mod-data-table__desc {
    color: var(--text-bold);
  }

/* 셀 안 목적 문장(__desc) 다음 불릿 목록 · 목록 다음 라벨 묶음 사이 간격 (EIC 지원 내용 칸)*/

.mod-data-table td > .el-bullet-list:not(:first-child) {
    margin-top: var(--spacing-8);
  }

.mod-data-table td > .el-bullet-list + .mod-data-table__item {
    margin-top: var(--spacing-16);
  }

.mod-data-table__cond {
    margin-top: var(--spacing-2);
    font-weight: var(--font-weight-semibold);
    color: var(--text-bold);
  }

/* 강조 행 — 한 표 안에서 한 가지 의미(예: 국내 연구비 지원)에만 사용. 테두리·굵기 없이 배경 틴트만*/

/* 머리행 회색(--background-subtle)과 헷갈리지 않게 아주 연한 프라이머리*/

.mod-data-table__row--highlight > th,
  .mod-data-table__row--highlight > td {
    background-color: rgb(var(--color-primary-rgb) / 0.04);
  }

/* 강조 행 테두리형 — 2px 프라이머리. __row--highlight(틴트형)와 둘 중 하나만 사용(겹치면 강조가 과함)*/

/* 테두리형 → 틴트형 전환은 tr 클래스만 __row--outlined ↔ __row--highlight 교체*/

/* border-collapse 표에서 tr의 border·outline은 브라우저마다 다르게(Safari 미표시) 그려지므로 셀 안쪽 그림자로 박스를 그림*/

.mod-data-table__row--outlined > th,
  .mod-data-table__row--outlined > td {
    box-shadow:
      inset 0 2px 0 var(--element-primary, #396cfa),
      inset 0 -2px 0 var(--element-primary, #396cfa);
  }

.mod-data-table__row--outlined > :first-child {
    box-shadow:
      inset 2px 0 0 var(--element-primary, #396cfa),
      inset 0 2px 0 var(--element-primary, #396cfa),
      inset 0 -2px 0 var(--element-primary, #396cfa);
  }

.mod-data-table__row--outlined > :last-child {
    box-shadow:
      inset -2px 0 0 var(--element-primary, #396cfa),
      inset 0 2px 0 var(--element-primary, #396cfa),
      inset 0 -2px 0 var(--element-primary, #396cfa);
  }

/* 강조 행 좌측 바형 (기본 권장) — 4px 프라이머리 바 + 틴트 6%*/

/* 사람들은 구분 열을 위아래로 훑으므로 그 경로 위(왼쪽 끝)에 색 면을 두어 바로 걸리게 함, 표의 가로선 구조는 유지*/

/* 강조 행 3종(highlight · outlined · accent)은 하나만 사용 — 전환은 tr 클래스 교체만*/

.mod-data-table__row--accent > th,
  .mod-data-table__row--accent > td {
    background-color: rgb(var(--color-primary-rgb) / 0.06);
  }

.mod-data-table__row--accent > :first-child {
    box-shadow: inset 4px 0 0 var(--element-primary, #396cfa); /* 장식(글자 아님)이라 기본 프라이머리 그대로*/
  }

/* 셀 안 라벨-내용 묶음 (예: 한국 참여 — 연구자 / 기관)*/

.mod-data-table__item {
    margin: 0;
  }

.mod-data-table__item + .mod-data-table__item {
      margin-top: var(--spacing-12);
    }

.mod-data-table__label {
    display: block;
    margin-bottom: var(--spacing-2);
    font-size: var(--font-body-xsmall-medium-size); /* 14px*/
    font-weight: var(--font-weight-semibold);
    color: var(--text-bold);
  }

/* 강조 행의 의미 배지 — 구분(th) 항목명 아래 줄. 틴트만으로는 색 구분이 어려운 사용자에게 의미가 전달되지 않으므로 글자로 병기*/

/* 구분 열에 두는 이유: 사람들은 구분 열을 먼저 훑으므로 행의 성격을 가장 먼저 알 수 있음 (ERC Plus "2026 신설"과 같은 자리)*/

.mod-data-table__row-badge {
    display: flex;
    width: -moz-fit-content;
    width: fit-content;
    margin-top: var(--spacing-8);
    font-size: var(--font-body-xxsmall-medium-size); /* 13px*/
    font-weight: var(--font-weight-medium);
    /* 기본 프라이머리(#396CFA)는 흰 배경 4.47:1로 AA(4.5) 미달, 틴트 위 4.14 — 한 단계 진한 blue-600(틴트 위 5.93:1)*/
    border-color: var(--blue-600, #2e56c8);
    color: var(--blue-600, #2e56c8);
  }

/* 셀 안 이동 링크 — 표 안에서 버튼이 가장 큰 요소가 되지 않도록 텍스트 링크*/

.mod-data-table__link {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-4);
    margin-top: var(--spacing-12);
    color: var(--blue-600, #2e56c8); /* 기본 프라이머리는 흰 배경에서도 AA 미달(4.47:1) — 표 안 링크는 한 단계 진하게(6.40, 틴트 위 5.93)*/
    font-weight: var(--font-weight-medium);
    text-decoration: underline;
    text-underline-offset: 3px;
  }

.mod-data-table__link svg {
      width: 16px;
      height: 16px;
      flex-shrink: 0;
      transition: transform 0.2s ease;
    }

.mod-data-table__link:hover svg,
    .mod-data-table__link:focus-visible svg {
      transform: translateX(3px);
    }

/* 링크 아래 이동 경로 (우리 사이트 메뉴 경로) — 링크가 어디로 가는지 클릭 전에 알 수 있게*/

.mod-data-table__link-source {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--spacing-4);
    margin-top: var(--spacing-2);
    font-size: var(--font-body-xxsmall-medium-size); /* 13px*/
    font-weight: var(--font-weight-regular);
    color: var(--text-default);
  }

.mod-data-table__link-source-sep {
    color: var(--text-tertiary, #cbd1dc);
  }

/* 셀 안 참고(※) 각주 — 배경 설명처럼 몰라도 되는 내용. 본문보다 한 단계 작게*/

/* 제목 한 줄 + 내용은 ※ 뒤 글자에 맞춰 들여씀 (제목과 내용이 한 줄에 붙으면 어디까지가 제목인지 흐림)*/

.mod-data-table__ref {
    margin: var(--spacing-16) 0 0; /* 링크·경로 묶음(12px 간격)보다 넓게 — 여기서부터 참고라는 경계*/
    padding-left: 1.1em;
    font-size: var(--font-body-xsmall-regular-size); /* 14px*/
    color: var(--text-default);
  }

/* 각주 제목 (예: "※ 국내 연구비를 지원하는 이유") — ※는 제목 안에 두고 왼쪽으로 내어 내용 첫 글자와 제목 첫 글자를 맞춤*/

.mod-data-table__ref-title {
    display: block;
    margin-left: -1.1em;
    margin-bottom: var(--spacing-2);
    font-weight: var(--font-weight-medium);
    color: var(--text-default); /* 셀 라벨(__label, SemiBold 진한 색)보다 한 단계 아래로 — 굵기만으로 제목 구분*/
  }

/* 해당 없음 표기 (—). 빈칸으로 두면 모바일 카드에서 라벨만 남아 어색함*/

.mod-data-table__empty {
    color: var(--text-tertiary, #cbd1dc);
  }

@media screen and (max-width: 1279px) {
  .mod-data-table thead th,
  .mod-data-table tbody th,
  .mod-data-table tbody td {
    padding-left: var(--spacing-16);
    padding-right: var(--spacing-16);
  }
  }

/* 모바일: 행 = 카드. 머리행은 스크린리더용으로만 남기고, 셀 앞에 data-label 라벨 표기*/

@media screen and (max-width: 767px) {
  .mod-data-table__table,
  .mod-data-table__table tbody,
  .mod-data-table__table tr,
  .mod-data-table__table th,
  .mod-data-table__table td {
    display: block;
    width: 100%;
  }

  .mod-data-table__table colgroup {
    display: none;
  }

  .mod-data-table__table thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
  }

  .mod-data-table__table tbody tr {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-12);
    padding: var(--spacing-20) 0;
    border-bottom: 1px solid var(--border-default);
  }

  .mod-data-table tbody th,
  .mod-data-table tbody td {
    padding: 0;
    border-bottom: 0;
  }

  .mod-data-table tbody td {
    font-size: var(--font-body-small-regular-size); /* 15px*/
  }

  .mod-data-table tbody td[data-label]::before {
    content: attr(data-label);
    display: block;
    margin-bottom: var(--spacing-4);
    font-size: var(--font-body-xsmall-medium-size); /* 14px*/
    font-weight: var(--font-weight-semibold);
    color: var(--text-bold);
  }

  .mod-data-table__meta {
    display: inline;
    margin-left: var(--spacing-4);
  }

  /* 라벨-값 표는 카드 대신 라벨 띠 + 값*/
  .mod-data-table--kv tbody th {
    padding: var(--spacing-8) var(--spacing-12);
  }

  .mod-data-table--kv .mod-data-table__table tbody tr {
    gap: var(--spacing-8);
    padding-top: 0;
  }

  /* 강조 행 카드: 셀마다 칠하면 틴트가 겹치므로 행(카드)에만 칠하고 안쪽 여백으로 글자와 띄움*/
  .mod-data-table__table tbody tr.mod-data-table__row--highlight {
    padding-inline: var(--spacing-16);
    background-color: rgb(var(--color-primary-rgb) / 0.04);
  }

  .mod-data-table__row--highlight > th,
  .mod-data-table__row--highlight > td {
    background-color: transparent;
  }

  /* 카드형에서는 행(카드) 자체가 박스이므로 카드에 테두리, 셀 그림자는 해제*/
  /* 단독 사용(틴트 없이)도 되도록 안쪽 여백을 여기서도 지정*/
  .mod-data-table__table tbody tr.mod-data-table__row--outlined {
    padding-inline: var(--spacing-16);
    box-shadow: inset 0 0 0 2px var(--element-primary, #396cfa);
    border-bottom-color: transparent;
  }

  /* 좌측 바형 카드: 카드 왼쪽에 4px 바 + 카드 전체 틴트, 셀은 투명 (셀마다 칠하면 틴트가 겹침)*/
  .mod-data-table__table tbody tr.mod-data-table__row--accent {
    padding-left: var(--spacing-20); /* 바 4px + 16px*/
    padding-right: var(--spacing-16);
    background-color: rgb(var(--color-primary-rgb) / 0.06);
    box-shadow: inset 4px 0 0 var(--element-primary, #396cfa);
  }

  .mod-data-table__row--accent > th,
  .mod-data-table__row--accent > td,
  .mod-data-table__row--accent > :first-child {
    background-color: transparent;
    box-shadow: none;
  }

  /* 첫·마지막 칸 규칙(:first-child/:last-child)이 더 구체적이라 함께 해제해야 카드 안에 박스가 겹쳐 그려지지 않음*/
  .mod-data-table__row--outlined > th,
  .mod-data-table__row--outlined > td,
  .mod-data-table__row--outlined > :first-child,
  .mod-data-table__row--outlined > :last-child {
    box-shadow: none;
  }
  }

/**
 * _step-flow.scss
 * Modules 레이어 - 단계 흐름 (.mod-step-flow)
 * 프로그램이 단계별로 이어지는 과정(예: EIC Pathfinder → Transition → Accelerator)을 가로 카드 + 화살표로 보여줌.
 * ※ .mod-stepper(폼 진행 단계 인디케이터)와 용도가 달라 분리 — 이쪽은 정적 안내용, 현재 단계 상태 없음
 *
 * 구조:
 *   ol.mod-step-flow                     ← 순서 있는 목록 (스크린리더가 단계 순서를 읽도록)
 *     li.mod-step-flow__item[.mod-step-flow__item--accent]
 *       span.mod-step-flow__step         ← STEP 1
 *       strong.mod-step-flow__title      ← 단계 이름
 *       span.mod-badge.mod-badge--primary.mod-step-flow__tag ← TRL 등 범위 표기 (선택)
 *       p.mod-step-flow__desc            ← 한 줄 설명
 *
 * 화살표는 장식이라 마크업 없이 ::after로 그림 (순서는 ol이 전달)
 * 강조(--accent)는 .mod-data-table__row--accent와 같은 표현(좌측 4px 바 + 틴트 6%) — 표의 같은 항목과 짝을 이루게
 */

.mod-step-flow {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--spacing-32);
  margin: 0;
  padding: 0;
  list-style: none;
}

.mod-step-flow__item {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--spacing-8);
    padding: var(--spacing-24);
    border: 1px solid var(--border-default);
    background-color: var(--color-white, #fff);
  }

/* 다음 단계로 이어지는 화살표 (간격 32px 가운데)*/

.mod-step-flow__item:not(:last-child)::after {
      content: '';
      position: absolute;
      top: 50%;
      right: calc(var(--spacing-32) / -2);
      width: 8px;
      height: 8px;
      border-top: 1.5px solid var(--border-strong);
      border-right: 1.5px solid var(--border-strong);
      transform: translate(50%, -50%) rotate(45deg);
    }

.mod-step-flow__item--accent {
      background-color: rgb(var(--color-primary-rgb) / 0.06);
      box-shadow: inset 4px 0 0 var(--element-primary, #396cfa);
    }

.mod-step-flow__step {
    font-size: var(--font-body-xxsmall-medium-size); /* 13px*/
    font-weight: var(--font-weight-medium);
    letter-spacing: 0.02em;
    color: var(--text-default);
  }

.mod-step-flow__title {
    margin-bottom: var(--spacing-4); /* gap 8px만으로는 배지가 제목에 붙어 보여 STEP·이름·TRL·설명 간격을 고르게*/
    font-size: var(--font-title-xsmall-size); /* 20px*/
    font-weight: var(--font-weight-semibold);
    line-height: 1.4;
    color: var(--text-bolder);
  }

.mod-step-flow__tag {
    font-size: var(--font-body-xxsmall-medium-size); /* 13px*/
  }

/* 강조 카드의 틴트 위에서는 연한 파랑 배지 경계가 사라지므로 바탕만 흰색*/

.mod-step-flow__item--accent .mod-step-flow__tag {
    background-color: var(--color-white, #fff);
  }

.mod-step-flow__desc {
    margin: 0;
    font-size: var(--font-body-medium-regular-size); /* 16px*/
    line-height: 1.6;
    color: var(--text-default);
    word-break: keep-all;
  }

/* 태블릿 이하: 세로로 쌓고 화살표는 아래 방향*/

@media screen and (max-width: 1279px) {
  .mod-step-flow {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--spacing-24);
  }

  .mod-step-flow__item:not(:last-child)::after {
    top: auto;
    right: auto;
    bottom: calc(var(--spacing-24) / -2);
    left: 50%;
    transform: translate(-50%, 50%) rotate(135deg);
  }

  .mod-step-flow__item {
    padding: var(--spacing-20);
  }
  }

@media screen and (max-width: 767px) {
  .mod-step-flow__title {
    font-size: var(--font-body-large-bold-size); /* 17px*/
  }

  .mod-step-flow__desc {
    font-size: var(--font-body-small-regular-size); /* 15px*/
  }
  }

/**
 * _item-cards.scss
 * Modules 레이어 - 항목 카드 그리드 (.mod-item-cards)
 * 분류 항목(클러스터·미션)을 같은 크기 카드로 나열. 이동 기능 없는 정보 카드라 흰 바탕 + 1px 테두리로
 * 회색 바탕의 바로가기 카드(.mod-section-nav)와 구분한다. 적용: 프로그램 안내 Pillar 2
 *
 * 구조:
 *   ul.mod-item-cards.mod-item-cards--3|--5
 *     li.mod-item-cards__item
 *       div.mod-item-cards__head
 *         p.mod-item-cards__eyebrow       ← 번호 (선택, lang="en")
 *         span.mod-item-cards__icon > i[data-lucide]   (aria-hidden)
 *       h4.mod-item-cards__title
 *       p.mod-item-cards__en              ← 영문명 (선택)
 *       p.mod-item-cards__desc            ← 설명 (선택)
 *       ul.el-bullet-list.el-bullet-list--sm  ← 세부 항목 (선택)
 *
 * 아이콘 위치: eyebrow 가 있으면 오른쪽 위, 없으면 왼쪽 위(--icon-start)
 *            --side-icon: 제목·영문까지 __head 안에 두고 아이콘을 오른쪽에 나란히 (메인 클러스터 카드 구성)
 *              div.mod-item-cards__head > p.__eyebrow + h4.__title + p.__en + span.__icon > img
 */

.mod-item-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--spacing-20);
  margin: 0;
  padding: 0;
  list-style: none;
}

.mod-item-cards--5 {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }

.mod-item-cards__item {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-8);
    padding: var(--spacing-32);
    background-color: var(--background-default);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-fig-sm);
  }

/* 번호를 아이콘 아래선에 맞춤 — 위 정렬이면 아이콘 높이만큼 번호 아래가 비어 제목과 멀어 보임*/

.mod-item-cards__head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: var(--spacing-12);
    margin-bottom: var(--spacing-12);
  }

.mod-item-cards--icon-start .mod-item-cards__head {
    justify-content: flex-start;
  }

.mod-item-cards__eyebrow {
    margin: 0;
    font-family: var(--font-body-medium-medium-family);
    font-size: var(--font-body-medium-medium-size); /* 16px*/
    font-weight: var(--font-body-medium-medium-weight);
    line-height: var(--font-body-medium-medium-line-height);
    /* 번호는 식별 표기("Pillar 1."·"EIC"와 같은 역할)라 파랑 — 아래 회색 영문명과 위계를 구분*/
    color: var(--text-primary);
  }

/* 장식 아이콘: 식별색(파랑)은 쓰지 않고 본문 진한 색*/

.mod-item-cards__icon {
    display: inline-flex;
    flex-shrink: 0;
    color: var(--text-bold);
  }

.mod-item-cards__icon svg {
      width: 32px;
      height: 32px;
      stroke-width: 1.5;
    }

.mod-item-cards__title {
    margin: 0;
    font-family: var(--font-title-xsmall-family);
    font-size: var(--font-title-xsmall-size); /* 20px*/
    font-weight: var(--font-title-xsmall-weight);
    line-height: var(--font-title-xsmall-line-height);
    letter-spacing: var(--font-title-xsmall-letter-spacing);
    color: var(--text-bolder);
    word-break: keep-all;
  }

.mod-item-cards__en {
    margin: 0;
    font-family: var(--font-body-small-regular-family);
    font-size: var(--font-body-small-regular-size); /* 15px*/
    font-weight: var(--font-body-small-regular-weight);
    line-height: var(--font-body-small-regular-line-height);
    color: var(--text-default);
  }

.mod-item-cards__desc {
    margin: 0;
    font-family: var(--font-body-medium-regular-family);
    font-size: var(--font-body-medium-regular-size); /* 16px*/
    font-weight: var(--font-body-medium-regular-weight);
    line-height: var(--font-body-medium-regular-line-height);
    color: var(--text-default);
    word-break: keep-all;
  }

/* 아이콘 옆 배치 (메인 클러스터 카드와 같은 구성): 왼쪽 번호·제목·영문 / 오른쪽 아이콘이 세 줄에 걸쳐 세로 가운데*/

/* 아이콘은 메인과 같은 투톤 SVG 파일을 <img> 로 사용 (src/assets/images/icons/cluster-N.svg)*/

.mod-item-cards--side-icon .mod-item-cards__head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    -moz-column-gap: var(--spacing-16);
         column-gap: var(--spacing-16);
    row-gap: var(--spacing-4);
    margin-bottom: 0;
  }

.mod-item-cards--side-icon .mod-item-cards__head > :not(.mod-item-cards__icon) {
    grid-column: 1;
  }

.mod-item-cards--side-icon .mod-item-cards__eyebrow {
    margin-bottom: var(--spacing-4);
  }

.mod-item-cards--side-icon .mod-item-cards__icon {
    grid-column: 2;
    grid-row: 1 / span 3;
    align-self: center;
  }

.mod-item-cards--side-icon .mod-item-cards__icon img {
      display: block;
      width: 64px;
      height: 64px;
      -o-object-fit: contain;
         object-fit: contain;
    }

/* 세부 불릿은 제목 묶음과 간격을 더 둠*/

.mod-item-cards .el-bullet-list {
    margin-top: var(--spacing-12);
    padding-top: var(--spacing-16);
    border-top: 1px solid var(--border-default);
  }

@media screen and (max-width: 1279px) {
  .mod-item-cards,
  .mod-item-cards--5 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .mod-item-cards__item {
    padding: var(--spacing-24);
  }
  }

@media screen and (max-width: 767px) {
  .mod-item-cards,
  .mod-item-cards--5 {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--spacing-12);
  }

  .mod-item-cards__title {
    font-size: var(--font-title-xxsmall-size); /* 18px*/
  }

  .mod-item-cards__icon svg {
    width: 28px;
    height: 28px;
  }

  /* 메인 클러스터 카드 모바일과 같은 52px*/
  .mod-item-cards--side-icon .mod-item-cards__icon img {
    width: 52px;
    height: 52px;
  }
  }

/**
 * _group-map.scss
 * Modules 레이어 - 그룹별 항목 개요 (.mod-group-map)
 * 여러 그룹(클러스터 등)에 속한 짧은 항목을 열로 나열하고, 항목 유형은 범례 색 표식으로 구분.
 * 적용: 프로그램 안내 Pillar 2 "유럽 파트너십 후보 개요"
 *
 * ※ 시안은 항목 칸 전체를 4색으로 채웠으나, 색 면적이 커 시선이 분산되므로
 *   흰 칸 + 12px 사각 표식으로 줄였다(색은 샘플 그대로). 색만으로 유형을 전달하지 않도록 각 항목에 sr-only 유형명을 둔다.
 *
 * 구조:
 *   div.mod-group-map
 *     ul.mod-group-map__legend > li.mod-group-map__legend-item.mod-group-map--{type}
 *     section.mod-group-map__block
 *       p.mod-group-map__block-title           ← "Pillar II · 글로벌 도전과제 …"
 *       div.mod-group-map__groups
 *         div.mod-group-map__group
 *           p.mod-group-map__group-title  + span.mod-group-map__group-en
 *           ul.mod-group-map__list > li.mod-group-map__item.mod-group-map--{type}
 *               span.sr-only  (유형명)
 *
 * 유형(type) 색 (샘플 기준, _variables.scss --partnership-*): inst 제도화(주황) · coprog 공동 프로그램(네이비) · cofund 공동 출자(연하늘 + 테두리) · kic EIT KIC(연두)
 */

.mod-group-map {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-32);
}

/* 유형 표식 색 — 범례·항목 공통*/

.mod-group-map--inst   { --group-map-mark: var(--partnership-inst); }

.mod-group-map--coprog { --group-map-mark: var(--partnership-coprog); }

.mod-group-map--cofund {
    --group-map-mark: var(--partnership-cofund);
    --group-map-mark-border: var(--partnership-cofund-border);
  }

.mod-group-map--kic    { --group-map-mark: var(--partnership-kic); }

.mod-group-map__legend {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-8) var(--spacing-24);
    margin: 0;
    padding: 0;
    list-style: none;
  }

.mod-group-map__legend-item,
  .mod-group-map__item {
    position: relative;
    padding-left: var(--spacing-20);
  }

/* 12px 표식, 첫 줄 가운데 (줄 높이 1.5 기준). 테두리는 연한 색(공동 출자)만 보이고 나머지는 같은 색*/

.mod-group-map__legend-item::before, .mod-group-map__item::before {
      content: '';
      position: absolute;
      left: 0;
      top: calc(0.75em - 6px);
      width: 12px;
      height: 12px;
      box-sizing: border-box;
      background-color: var(--group-map-mark, var(--border-default));
      border: 1px solid var(--group-map-mark-border, var(--group-map-mark, var(--border-default)));
    }

.mod-group-map__legend-item {
    font-family: var(--font-body-small-regular-family);
    font-size: var(--font-body-small-regular-size); /* 15px*/
    line-height: var(--font-body-small-regular-line-height);
    color: var(--text-bold);
  }

.mod-group-map__block {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-16);
  }

.mod-group-map__block-title {
    margin: 0;
    font-family: var(--font-body-medium-medium-family);
    font-size: var(--font-body-medium-medium-size); /* 16px*/
    font-weight: var(--font-weight-semibold);
    line-height: var(--font-body-medium-medium-line-height);
    color: var(--text-bolder);
  }

.mod-group-map__groups {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: var(--spacing-16);
    align-items: start;
  }

.mod-group-map__group {
    display: flex;
    flex-direction: column;
    border-top: 2px solid var(--border-strong-darker);
  }

.mod-group-map__group-title {
    margin: 0;
    padding: var(--spacing-12) 0;
    border-bottom: 1px solid var(--border-default);
    font-family: var(--font-body-medium-bold-family);
    font-size: var(--font-body-medium-bold-size); /* 16px*/
    font-weight: var(--font-weight-semibold);
    line-height: var(--font-body-medium-bold-line-height);
    color: var(--text-bolder);
    word-break: keep-all;
  }

.mod-group-map__group-en {
    display: block;
    font-size: var(--font-body-xsmall-regular-size); /* 14px*/
    font-weight: var(--font-weight-regular);
    color: var(--text-default);
  }

.mod-group-map__list {
    margin: 0;
    padding: 0;
    list-style: none;
  }

.mod-group-map__item {
    padding-top: var(--spacing-8);
    padding-bottom: var(--spacing-8);
    padding-left: var(--spacing-20);
    border-bottom: 1px solid var(--border-default);
    font-family: var(--font-body-small-regular-family);
    font-size: var(--font-body-small-regular-size); /* 15px*/
    line-height: var(--font-body-small-regular-line-height);
    color: var(--text-bold);
    word-break: keep-all;
  }

.mod-group-map__item::before {
      top: calc(var(--spacing-8) + 0.75em - 6px);
    }

@media screen and (max-width: 1279px) {
  .mod-group-map__groups {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  }

@media screen and (max-width: 767px) {
  .mod-group-map__groups {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--spacing-24);
  }

  .mod-group-map__legend-item,
  .mod-group-map__item {
    font-size: var(--font-body-xsmall-regular-size); /* 14px*/
  }
  }

/**
 * _org-chart.scss
 * Modules 레이어 - 조직도 (.mod-org-chart)
 * 3단계 위계(상위 기관 → 전담 조직 → 협력 기관)를 가운데 정렬 나무 구조로 표시. 적용: 호라이즌 유럽 소개 추진체계
 * 기준: docs/ui-requests/20261103_horizon-europe_about-governance.md (B안 + 원형 중심 보완)
 *
 * 구조:
 *   ol.mod-org-chart                         ← 순서 = 위계 (선이 안 보여도 스크린리더가 순서를 읽음)
 *     li.mod-org-chart__level                ← 둘째 단계부터 위쪽에 1px 줄기
 *       div.mod-org-chart__node--top         ← 상위 기관: p.__eyebrow + h3.__name
 *       div.mod-org-chart__hub               ← 전담 조직 상자
 *         div.mod-org-chart__core            ← 원 (p.__core-org > img.__core-logo[alt=기관명] + h3.__core-name + p.__core-desc)
 *         ul.mod-org-chart__role-list[aria-label] > li.__role × 2   ← 원 왼쪽 · 오른쪽
 *       p.mod-org-chart__edge-label          ← 가지선 가운데 관계 이름
 *       ul.mod-org-chart__branch > li.mod-org-chart__node × 2       ← 직각 가지선으로 나뉘는 협력 기관
 *         div.mod-org-chart__action > a.el-btn
 *
 * 정리 원칙
 *   - 강조는 전담 조직 원(프라이머리 채움) 한 곳. 상위 기관은 작은 네이비 채움(보조 브랜드색 — 권한의 무게만, 원과 경쟁 X), 나머지는 기본 테두리
 *   - 조직 사이 연결선은 1px 회색 실선 한 종류. 원 양옆 호는 "팀이 역할을 품는다"는 장식이라 연한 파랑으로 구분
 *   - 원 양옆 배치는 데스크톱만 — 태블릿 이하는 원 위 · 역할 아래로 쌓고 호를 뺀다 (파일 하단)
 */

.mod-org-chart {
  --org-chart-line: var(--border-strong-dark);
  --org-chart-stem: 48px;    /* 단계 사이 줄기*/
  --org-chart-branch: 24px;  /* 가지선 ↔ 협력 기관 노드*/
  --org-chart-gap: var(--spacing-24);
  --org-chart-core: 320px;   /* 원 지름 — 양옆 역할 카드보다 확실히 커야 중심으로 읽힘 · 팀명/설명이 한 줄로 들어가는 크기*/
  --org-chart-ring: 22px;    /* 원 ↔ 양옆 호 간격 (원 크기에 비례)*/

  display: flex;
  flex-direction: column;
  align-items: center;
  margin: var(--spacing-48) 0 0;
  padding: 0;
  list-style: none;
}

.mod-org-chart__level {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
  }

/* 협력 기관 단계: 라벨이 얹히는 줄기·가지선을 길게 — 라벨 위아래 여백 확보*/

.mod-org-chart__level--branch {
    --org-chart-stem: 64px;
    --org-chart-branch: 36px;
  }

.mod-org-chart__level + .mod-org-chart__level {
    padding-top: var(--org-chart-stem);
  }

.mod-org-chart__level + .mod-org-chart__level::before {
      content: "";
      position: absolute;
      top: 0;
      left: 50%;
      height: var(--org-chart-stem);
      border-left: 1px solid var(--org-chart-line);
    }

/* 노드 기본 = 협력 기관 (흰 바탕 + 기본 테두리)*/

.mod-org-chart__node {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    padding: var(--spacing-32);
    background-color: var(--background-default);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-fig-sm);
    box-sizing: border-box;
  }

/* 상위 기관: 작은 네이비 채움 + 흰 글자 — 흰 상자는 붕 떠 보여서 보조 브랜드색으로 무게만 준다 (원보다 작게 두어 강조는 원 유지)*/

.mod-org-chart__node--top {
    width: auto;
    min-width: 300px;
    padding: var(--spacing-16) var(--spacing-40);
    background-color: var(--color-navy);
    border-color: var(--color-navy);
    text-align: center;
  }

.mod-org-chart__node--top .mod-org-chart__eyebrow {
    font-size: var(--font-body-small-medium-size); /* 15px*/
    color: var(--text-inverse);
  }

.mod-org-chart__node--top .mod-org-chart__name {
    font-size: var(--font-title-xsmall-size); /* 20px — 상자 크기에 맞추되 원(팀명 26px)보다 작게*/
    color: var(--text-inverse);
  }

.mod-org-chart__eyebrow {
    margin: 0 0 var(--spacing-4);
    font-family: var(--font-body-small-medium-family);
    font-size: var(--font-body-small-medium-size); /* 15px*/
    font-weight: var(--font-body-small-medium-weight);
    line-height: var(--font-body-small-medium-line-height);
    color: var(--text-default);
  }

/* 협력 기관 약칭 — "Pillar 1."·"Cluster 1"과 같은 식별 표기라 파랑*/

.mod-org-chart__eyebrow--primary {
      color: var(--text-primary);
    }

.mod-org-chart__name {
    margin: 0;
    font-family: var(--font-title-xsmall-family);
    font-size: var(--font-title-xsmall-size); /* 20px*/
    font-weight: var(--font-title-xsmall-weight);
    line-height: var(--font-title-xsmall-line-height);
    letter-spacing: var(--font-title-xsmall-letter-spacing);
    color: var(--text-bolder);
    word-break: keep-all;
  }

/* ── 전담 조직 상자: 원과 역할 목록을 같은 칸에 겹쳐 원을 가운데, 역할을 양옆 열에 둔다 ──*/

/* (역할 목록 <ul>을 쪼개지 않아 목록 의미가 유지됨)*/

.mod-org-chart__hub {
    display: grid;
    align-items: center;
    width: 100%;
    padding: var(--spacing-32);
    background-color: var(--background-default);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-fig-sm);
    box-sizing: border-box;
  }

.mod-org-chart__hub > * {
      grid-area: 1 / 1;
    }

.mod-org-chart__core {
    position: relative;
    z-index: 1;
    justify-self: center;
    /* 위·아래 칸을 같은 비율(1fr)로 나눠 팀명을 원의 상하 정중앙에 고정 — 로고 · 설명 높이가 달라도 팀명 위치는 그대로*/
    display: grid;
    grid-template-rows: minmax(0, 1fr) auto minmax(0, 1fr);
    justify-items: center;
    width: var(--org-chart-core);
    height: var(--org-chart-core);
    padding: 0 var(--spacing-24);
    background-color: var(--element-primary);
    border-radius: 50%;
    color: var(--text-inverse);
    text-align: center;
    box-sizing: border-box;
  }

/* 원과 중심이 같은 큰 고리의 좌우 1/4만 — 양옆 역할을 품는 표시 (테두리 끝이 가늘어져 호처럼 보임)*/

.mod-org-chart__core::before {
      content: "";
      position: absolute;
      inset: calc(-1 * var(--org-chart-ring));
      border: 2px solid transparent;
      border-left-color: var(--element-primary-light);
      border-right-color: var(--element-primary-light);
      border-radius: 50%;
      pointer-events: none;
    }

/* 데스크톱은 원이 커서 한 줄로 — 마크업의 <br>은 원이 작아지는 태블릿 이하에서만 살린다 (파일 하단)*/

.mod-org-chart__core br {
      display: none;
    }

/* 기관 심볼(흰색 단색) — 기관명 텍스트를 대신함. 팀명(26px)보다 먼저 읽히지 않게 작게*/

.mod-org-chart__core-logo {
    display: block;
    width: auto;
    height: 48px;
    margin: 0 auto;
  }

/* 위 칸 바닥(팀명 바로 위)에 붙임*/

.mod-org-chart__core-org {
    align-self: end;
  }

/* 아래 칸 꼭대기(팀명 바로 아래)에 붙임*/

.mod-org-chart__core-desc {
    align-self: start;
  }

.mod-org-chart__core-org,
  .mod-org-chart__core-desc {
    margin: 0;
    font-family: var(--font-body-large-medium-family);
    font-size: var(--font-body-large-medium-size); /* 17px*/
    font-weight: var(--font-body-large-medium-weight);
    line-height: 1.45;
    /* 파랑 채움 위 보조 글자: 흰색을 그대로 두고 크기로만 위계 (투명도는 대비가 떨어져 쓰지 않음)*/
    color: var(--text-inverse);
  }

.mod-org-chart__core-name {
    margin: var(--spacing-12) 0; /* 위아래 같게 — 정중앙 유지*/
    /* 팀명만 브랜드 서체(더 잠실체) — 원 안의 유일한 고유명이라 디스플레이 서체로 존재감을 준다*/
    font-family: var(--font-family-jamsil);
    /* 26px — 잠실체는 프리텐다드보다 넓어 320px 원 안에 한 줄로 들어가는 크기*/
    font-size: calc(var(--font-title-small-size) + 0.125rem); /* 24 + 2*/
    /* 500 Medium — 잠실체 Bold는 획이 두꺼워 받침 글자가 뭉쳐 보임. 굵기를 바꿔도 글자 폭은 같아 한 줄 유지*/
    font-weight: var(--font-body-large-medium-weight);
    line-height: 1.3;
    /* 잠실체 토큰 자간(0) — 프리텐다드용 음수 자간은 잠실체에서 글자가 붙어 보임*/
    letter-spacing: var(--font-display-small-letter-spacing);
    color: var(--text-inverse);
    word-break: keep-all;
  }

/* 역할 열: 가운데 열 폭 = 원 + 양옆 호 + 여백*/

.mod-org-chart__role-list {
    display: grid;
    grid-template-columns: minmax(0, 1fr) calc(var(--org-chart-core) + var(--org-chart-ring) * 2 + var(--spacing-48)) minmax(0, 1fr);
    align-items: stretch; /* 양옆 역할 카드 높이를 맞춤 (불릿 줄 수가 달라도 대칭)*/
    margin: 0;
    padding: 0;
    list-style: none;
  }

.mod-org-chart__role {
    grid-column: 1;
    padding: var(--spacing-24);
    background-color: var(--background-subtle);
    border-radius: var(--radius-fig-sm);
  }

.mod-org-chart__role + .mod-org-chart__role {
      grid-column: 3;
    }

.mod-org-chart__role-title {
    margin: 0 0 var(--spacing-12);
    font-family: var(--font-title-xxsmall-family);
    font-size: var(--font-title-xxsmall-size); /* 18px*/
    font-weight: var(--font-title-xxsmall-weight);
    line-height: var(--font-title-xxsmall-line-height);
    letter-spacing: var(--font-title-xxsmall-letter-spacing);
    color: var(--text-bolder);
    word-break: keep-all;
  }

/* 관계 이름: 가지선 가운데에 얹는 연한 파랑 라벨 — 네모 노드와 모양이 달라 조직으로 오인되지 않음*/

.mod-org-chart__edge-label {
    position: absolute;
    top: var(--org-chart-stem);
    left: 50%;
    z-index: 1;
    margin: 0;
    padding: var(--spacing-8) var(--spacing-20);
    background-color: var(--element-primary-lighter);
    border: 1px solid var(--element-primary-light);
    border-radius: var(--radius-full);
    font-family: var(--font-body-large-medium-family);
    font-size: var(--font-body-large-medium-size); /* 17px (이전 14px의 약 1.2배)*/
    font-weight: var(--font-body-large-medium-weight);
    line-height: 1.2; /* 라벨 높이도 이전의 약 1.3배 (28 → 약 36px)*/
    color: var(--text-primary);
    white-space: nowrap;
    transform: translate(-50%, -50%);
  }

/* 같은 단계 2열 + 직각 가지선 (가로선은 두 노드 가운데 사이)*/

.mod-org-chart__branch {
    position: relative;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--org-chart-gap);
    width: 100%;
    margin: 0;
    padding: var(--org-chart-branch) 0 0;
    list-style: none;
  }

.mod-org-chart__branch::before {
      content: "";
      position: absolute;
      top: 0;
      left: calc((100% - var(--org-chart-gap)) / 4);
      right: calc((100% - var(--org-chart-gap)) / 4);
      border-top: 1px solid var(--org-chart-line);
    }

.mod-org-chart__branch > .mod-org-chart__node::before {
    content: "";
    position: absolute;
    bottom: 100%;
    left: 50%;
    height: var(--org-chart-branch);
    margin-bottom: 1px; /* 노드 테두리 바깥에서 시작*/
    border-left: 1px solid var(--org-chart-line);
  }

.mod-org-chart__node > .el-bullet-list {
    margin-top: var(--spacing-16);
  }

/* 버튼은 노드 바닥에 — 2열 노드 높이가 달라도 같은 줄*/

.mod-org-chart__action {
    margin-top: auto;
    padding-top: var(--spacing-24);
  }

/* Lucide 기본 24px는 14px 버튼 글자에 비해 커서 글자 크기에 맞춤*/

.mod-org-chart__action .el-btn svg {
      width: 16px;
      height: 16px;
    }

/* 태블릿 이하: 원 양옆 폭이 좁아져 원 위 · 역할 아래로 쌓고, 좌우 호는 의미가 없어 뺀다*/

@media screen and (max-width: 1279px) {
  .mod-org-chart {
    --org-chart-core: 240px;
  }

  .mod-org-chart__node,
  .mod-org-chart__hub {
    padding: var(--spacing-24);
  }

  .mod-org-chart__node--top {
    padding: var(--spacing-12) var(--spacing-32);
  }

  .mod-org-chart__hub > * {
    grid-area: auto;
  }

  .mod-org-chart__hub {
    row-gap: var(--spacing-24);
  }

  .mod-org-chart__core::before {
    content: none;
  }

  .mod-org-chart__core br {
    display: inline;
  }

  .mod-org-chart__role-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: stretch;
    gap: var(--spacing-16);
  }

  .mod-org-chart__role,
  .mod-org-chart__role + .mod-org-chart__role {
    grid-column: auto;
  }
  }

/* 모바일: 협력 기관도 1열로 쌓고, 가로 가지선 대신 라벨 아래 첫 노드로만 줄기를 잇는다*/

@media screen and (max-width: 767px) {
  .mod-org-chart {
    --org-chart-stem: 40px;
    --org-chart-core: 210px;
    --org-chart-gap: var(--spacing-12);

    margin-top: var(--spacing-32);
  }

  .mod-org-chart__level--branch {
    --org-chart-stem: 48px;
  }

  .mod-org-chart__edge-label {
    font-size: var(--font-body-small-medium-size); /* 15px*/
  }

  .mod-org-chart__node--top {
    min-width: 0;
    width: 100%;
    padding: var(--spacing-16) var(--spacing-20);
  }

  .mod-org-chart__node,
  .mod-org-chart__hub {
    padding: var(--spacing-20);
  }

  .mod-org-chart__name {
    font-size: var(--font-title-xxsmall-size); /* 18px*/
  }

  .mod-org-chart__core {
    padding: 0 var(--spacing-24);
  }

  .mod-org-chart__core-name {
    font-size: var(--font-title-small-size); /* 24px*/
  }

  .mod-org-chart__core-logo {
    height: 36px;
  }

  .mod-org-chart__core-name {
    margin: var(--spacing-8) 0;
  }

  .mod-org-chart__core-org,
  .mod-org-chart__core-desc {
    font-size: var(--font-body-small-medium-size); /* 15px*/
  }

  .mod-org-chart__role-list {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--spacing-12);
  }

  .mod-org-chart__role {
    padding: var(--spacing-16);
  }

  .mod-org-chart__branch {
    grid-template-columns: minmax(0, 1fr);
  }

  .mod-org-chart__branch::before,
  .mod-org-chart__branch > .mod-org-chart__node + .mod-org-chart__node::before {
    content: none;
  }
  }

/**
 * _wheel.scss
 * Modules 레이어 - 5분할 원 (.mod-wheel)
 * 원 하나를 같은 크기 다섯 조각으로 나누고 가운데에 개념, 바깥에 항목 설명을 둔다.
 * 항목끼리 순서·위계가 없고 하나의 개념을 함께 이룰 때 사용. 적용: 프로그램 안내 Pillar 2 미션
 *
 * 구조:
 *   div.mod-wheel
 *     div.mod-wheel__figure
 *       svg.mod-wheel__ring  (aria-hidden) > circle.__seg × 5   ← 조각 5개 (원 테두리를 72° 씩 끊어 그림)
 *       div.mod-wheel__keys  (aria-hidden) > span.__key > i[data-lucide] × 5   ← 조각 안 아이콘 (제목 앞 배지와 같은 짝)
 *       div.mod-wheel__core > p.__core-sub + p.__core-title   ← 가운데 개념 (실제 텍스트)
 *     ul.mod-wheel__list > li.__item > h4.__title(span.__badge + span) + p.__desc  ← 설명 (목록 순서 = 화면 시계 방향)
 *
 * 조각 각도(위 0° 기준 시계 방향): 1 오른쪽 위 0~72 · 2 오른쪽 아래 72~144 · 3 아래 144~216 · 4 왼쪽 아래 216~288 · 5 왼쪽 위 288~360
 *   아래 조각이 정확히 가운데라 설명이 좌 2 · 우 2 · 아래 1 로 대칭
 * 데스크톱(1280 이상): 3열(왼쪽 설명 · 원 · 오른쪽 설명) + 아래 가운데 설명. 원 쪽을 향해 정렬(왼쪽 열 오른쪽 정렬)
 * 태블릿 이하: 원 위 · 목록 아래(2열 / 1열), 제목 앞 배지(조각 색 + 같은 아이콘)로 짝 유지
 *
 * 정리 원칙
 *   - 화살표 모양 없음 — 순서 없는 나란한 목표라 "순환 과정"으로 읽히지 않도록
 *   - 파랑 한 계열 명도 단계(진함 → 연함, 시계 방향). 그라데이션·다색 없음
 *   - 조각 사이는 흰 틈(배경색), 가운데는 흰 바탕 + 파랑 글자 (조각이 채워져 가운데까지 채우면 무거움)
 */

.mod-wheel {
  --wheel-size: 475px;    /* 원 지름*/
  --wheel-key-r: calc(var(--wheel-size) * 0.395); /* 키워드 반지름 = 조각 두께 가운데 (SVG 반지름 79 / 200)*/

  /* 위 설명 문단과 간격 — 섹션 기본 간격만으로는 큰 원이 문단에 붙어 보임*/
  margin-top: var(--spacing-24);
}

.mod-wheel__figure {
    position: relative;
    width: var(--wheel-size);
    height: var(--wheel-size);
    margin: 0 auto;
  }

/* SVG 원 5개: 둘레를 360 으로 두고(pathLength) 72° 중 틈을 뺀 길이만 그림 — 시작 각도는 HTML transform 속성*/

/* 원 반지름 79 · 두께 42 (viewBox 200 기준) → 바깥 100 · 안쪽 58 = 가운데 구멍 58%*/

.mod-wheel__ring {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
  }

.mod-wheel__seg {
    fill: none;
    stroke-width: 42;
    stroke-dasharray: 72.5 287.5;
  }

/* 72° + 이음 겹침 — 틈은 아래 __gap 선이 만듦*/

.mod-wheel__seg:nth-child(1) { stroke: var(--blue-800); }

.mod-wheel__seg:nth-child(2) { stroke: var(--blue-700); }

.mod-wheel__seg:nth-child(3) { stroke: var(--blue-600); }

.mod-wheel__seg:nth-child(4) { stroke: var(--blue-500); }

.mod-wheel__seg:nth-child(5) { stroke: var(--blue-400); }

/* 조각 사이 틈: 배경색 선을 경계에 덮음 — 안쪽부터 바깥까지 폭이 같음 (viewBox 200 기준 3 = 475px 원에서 약 7px)*/

.mod-wheel__gap {
    stroke: var(--background-default);
    stroke-width: 3;
  }

.mod-wheel__keys {
    position: absolute;
    inset: 0;
  }

/* 조각 가운데 각도에 아이콘 — 회전 → 반지름만큼 위로 → 되돌려 아이콘은 똑바로*/

.mod-wheel__key {
    position: absolute;
    top: 50%;
    left: 50%;
    display: flex;
    color: var(--text-inverse);
    transform: translate(-50%, -50%) rotate(var(--wheel-a)) translateY(calc(-1 * var(--wheel-key-r))) rotate(calc(-1 * var(--wheel-a)));
  }

/* 조각 두께의 약 1/3 — 크면 템플릿 인포그래픽처럼 보임*/

.mod-wheel__key svg {
      width: 32px;
      height: 32px;
      stroke-width: 1.75;
    }

.mod-wheel__key:nth-child(1) { --wheel-a: 36deg; }

.mod-wheel__key:nth-child(2) { --wheel-a: 108deg; }

.mod-wheel__key:nth-child(3) { --wheel-a: 180deg; }

.mod-wheel__key:nth-child(4) { --wheel-a: 252deg; }

.mod-wheel__key:nth-child(5) { --wheel-a: 324deg; }

.mod-wheel__core {
    position: absolute;
    top: 50%;
    left: 50%;
    width: calc(var(--wheel-size) * 0.5);
    text-align: center;
    transform: translate(-50%, -50%);
  }

.mod-wheel__core-sub {
    margin: 0;
    font-family: var(--font-body-large-medium-family);
    font-size: var(--font-body-large-medium-size); /* 17px*/
    font-weight: var(--font-body-large-medium-weight);
    line-height: 1.4;
    color: var(--text-default);
  }

.mod-wheel__core-title {
    margin: var(--spacing-4) 0 0;
    font-family: var(--font-title-medium-family);
    font-size: var(--font-title-medium-size); /* 28px*/
    font-weight: var(--font-title-medium-weight);
    line-height: 1.3;
    letter-spacing: var(--font-title-medium-letter-spacing);
    color: var(--text-primary);
    word-break: keep-all;
  }

.mod-wheel__list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--spacing-24) var(--spacing-32);
    margin: var(--spacing-32) 0 0;
    padding: 0;
    list-style: none;
  }

.mod-wheel__title {
    display: flex;
    align-items: center;
    gap: var(--spacing-12);
    margin: 0 0 var(--spacing-8);
    font-family: var(--font-title-xsmall-family);
    font-size: var(--font-title-xsmall-size); /* 20px*/
    font-weight: var(--font-title-xsmall-weight);
    line-height: var(--font-title-xsmall-line-height);
    letter-spacing: var(--font-title-xsmall-letter-spacing);
    color: var(--text-bolder);
    word-break: keep-all;
  }

/* 제목 앞 배지: 조각과 같은 색 원 + 같은 아이콘 — 모양과 색 둘 다로 조각과 짝*/

.mod-wheel__badge {
    display: inline-flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background-color: var(--wheel-dot);
    color: var(--text-inverse);
  }

.mod-wheel__badge svg {
      width: 18px;
      height: 18px;
      stroke-width: 2;
    }

.mod-wheel__item:nth-child(1) { --wheel-dot: var(--blue-800); }

.mod-wheel__item:nth-child(2) { --wheel-dot: var(--blue-700); }

.mod-wheel__item:nth-child(3) { --wheel-dot: var(--blue-600); }

.mod-wheel__item:nth-child(4) { --wheel-dot: var(--blue-500); }

.mod-wheel__item:nth-child(5) { --wheel-dot: var(--blue-400); }

.mod-wheel__desc {
    margin: 0;
    font-family: var(--font-body-large-regular-family);
    font-size: var(--font-body-large-regular-size); /* 17px*/
    font-weight: var(--font-body-large-regular-weight);
    line-height: var(--font-body-large-regular-line-height);
    color: var(--text-default);
    word-break: keep-all;
  }

/* 태블릿 이하: 원 크기만 줄임 (짝은 제목 앞 배지가 유지)*/

@media screen and (max-width: 1279px) {
  .mod-wheel {
    --wheel-size: 420px;
  }
  }

@media screen and (min-width: 1280px) {
  /* 원과 목록을 같은 칸에 겹침 — 목록의 가운데 열이 원 자리, 위·아래 행이 원 절반씩*/
  .mod-wheel {
    display: grid;
  }

  .mod-wheel > * {
    grid-area: 1 / 1;
  }

  .mod-wheel__list {
    grid-template-columns: minmax(0, 1fr) calc(var(--wheel-size) + var(--spacing-48) * 2) minmax(0, 1fr);
    grid-template-rows: calc(var(--wheel-size) / 2) calc(var(--wheel-size) / 2) auto;
    gap: 0;
    margin: 0;
  }

  .mod-wheel__item {
    max-width: 380px;
  }

  /* 오른쪽 열(1 · 2): 왼쪽 정렬, 원 쪽에 붙임*/
  .mod-wheel__item:nth-child(1),
  .mod-wheel__item:nth-child(2) {
    grid-column: 3;
    justify-self: start;
  }

  /* 왼쪽 열(4 · 5): 오른쪽 정렬, 원 쪽에 붙임*/
  .mod-wheel__item:nth-child(4),
  .mod-wheel__item:nth-child(5) {
    grid-column: 1;
    justify-self: end;
    text-align: right;
  }

  .mod-wheel__item:nth-child(4) .mod-wheel__title,
  .mod-wheel__item:nth-child(5) .mod-wheel__title {
    justify-content: flex-end;
  }

  /* 위 행은 조각 높이 쪽(아래)으로, 아래 행은 위쪽으로 붙여 조각과 가깝게*/
  .mod-wheel__item:nth-child(1),
  .mod-wheel__item:nth-child(5) {
    grid-row: 1;
    align-self: center;
  }

  .mod-wheel__item:nth-child(2),
  .mod-wheel__item:nth-child(4) {
    grid-row: 2;
    align-self: center;
  }

  /* 아래 조각 설명: 원 바로 아래 가운데*/
  .mod-wheel__item:nth-child(3) {
    grid-area: 3 / 1 / 4 / 4;
    justify-self: center;
    margin-top: var(--spacing-24);
    text-align: center;
  }

  .mod-wheel__item:nth-child(3) .mod-wheel__title {
    justify-content: center;
  }
  }

@media screen and (max-width: 767px) {
  .mod-wheel {
    --wheel-size: 300px;
  }

  .mod-wheel__title {
    font-size: var(--font-title-xxsmall-size); /* 18px*/
  }

  .mod-wheel__desc {
    font-size: var(--font-body-medium-regular-size); /* 16px*/
  }

  .mod-wheel__key svg {
    width: 24px;
    height: 24px;
  }

  .mod-wheel__core-title {
    font-size: var(--font-title-xsmall-size); /* 20px*/
  }

  .mod-wheel__core-sub {
    font-size: var(--font-body-xsmall-medium-size); /* 14px*/
  }

  .mod-wheel__list {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--spacing-20);
  }
  }

/**
 * _staff-list.scss
 * Modules 레이어 - 담당자 그룹 목록 (.mod-staff-list) + 접는 영역 (.mod-staff-area)
 * 분야(왼쪽 칸) + 담당자 행(이름·역할 · 소속)을 직렬로 쌓는 명단. 적용: 참여·협력 > NCP 담당자
 * 기준: docs/ui-requests/20261103_participation_ncp-contacts.md
 *
 * 구조:
 *   section.mod-staff-area                       ← 하위 영역(Pillar) — 회색 띠 제목이 접기 버튼
 *     h3.__title > button.__toggle[aria-expanded][aria-controls] > span.__label(+ __prefix · __en) + i[chevron-down]
 *     div.__body#id
 *       div.mod-staff-list
 *         div.__group
 *           div.__head > p.__code(약칭, 선택) + h4.__unit(분야명)
 *           ul.__people > li.__person
 *             div.__name > p.__name-line(span.__name-ko + span.__role 선택) + span.__name-en
 *             p.__org > span.__org-ko + span.__org-en (영문 미확인 시 생략)
 *           li.__person--empty                    ← 담당자 미정 안내
 *
 * 위계: 지역 제목(.el-content-title--rule, 2px 진한 선) > 영역 상자(1px 테두리 + 회색 머리 띠) > 분야 행(1px 선)
 * 역할: 별도 열 대신 이름 옆 파랑 텍스트 + 4px 회색 사각 구분점 — 역할 없는 행에 빈 열이 생기지 않도록
 * 모바일: 분야명 위 · 담당자 행 세로, 역할은 이름 아래 줄(구분점 없음)
 */

/* ── 하위 영역 (접기) ──────────────────────────────────────*/

.mod-staff-area {
  /* 띠(머리) + 본문을 1px 회색 테두리 상자 하나로 — 접히는 범위가 어디까지인지 분명하게*/
  border: 1px solid var(--border-default);
  border-radius: var(--radius-fig-sm);
  overflow: hidden;
}

.mod-staff-area__title {
    margin: 0;
  }

/* 회색 띠 = 지역 제목(굵은 선)보다 한 단계 아래 묶음 표시 + 접기 버튼*/

.mod-staff-area__toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-16);
    width: 100%;
    padding: var(--spacing-20) var(--spacing-24);
    background-color: var(--background-subtle);
    border: 0;
    border-radius: 0;
    font-family: var(--font-title-small-family);
    font-size: var(--font-title-small-size); /* 24px*/
    font-weight: var(--font-title-small-weight);
    line-height: var(--font-title-small-line-height);
    letter-spacing: var(--font-title-small-letter-spacing);
    color: var(--text-bolder);
    text-align: left;
    cursor: pointer;
    transition: background-color 0.15s ease;
  }

.mod-staff-area__toggle:hover {
      background-color: var(--background-muted);
    }

.mod-staff-area__toggle:focus-visible {
      outline: 2px solid var(--element-primary);
      outline-offset: -2px; /* 상자 overflow 에 잘리지 않도록 안쪽*/
    }

.mod-staff-area__toggle svg {
      flex-shrink: 0;
      width: 24px;
      height: 24px;
      color: var(--text-default);
      transition: transform 0.2s ease;
    }

.mod-staff-area__toggle[aria-expanded="false"] svg {
      transform: rotate(-90deg);
    }

.mod-staff-area__label {
    word-break: keep-all;
  }

.mod-staff-area__prefix {
    margin-right: 0.35em;
    color: var(--text-primary);
  }

.mod-staff-area__en {
    margin-left: 0.35em;
    font-size: 0.72em;
    color: var(--text-muted);
  }

.mod-staff-area__body {
    padding: 0 var(--spacing-24);
    border-top: 1px solid var(--border-default);
  }

/* 상자 안 마지막 분야는 상자 테두리가 아래 선 역할*/

.mod-staff-area__body .mod-staff-list__group:last-child {
    border-bottom: 0;
  }

.mod-staff-area__body[hidden] {
    display: none;
  }

/* ── 담당자 목록 ──────────────────────────────────────────*/

/* 위 굵은 선은 바로 위 제목(.el-content-title--rule)이 담당 — 목록에 또 두면 선이 두 줄*/

.mod-staff-list__group {
    display: grid;
    grid-template-columns: minmax(200px, 1fr) minmax(0, 3fr);
    border-bottom: 1px solid var(--border-default);
  }

.mod-staff-list__head {
    padding: var(--spacing-24) var(--spacing-24) var(--spacing-24) 0;
  }

/* 약칭(ERC · Cluster 1): "Pillar 1." 과 같은 식별 표기라 파랑*/

.mod-staff-list__code {
    margin: 0 0 var(--spacing-4);
    font-family: var(--font-body-medium-medium-family);
    font-size: var(--font-body-medium-medium-size); /* 16px*/
    font-weight: var(--font-body-medium-medium-weight);
    line-height: var(--font-body-medium-medium-line-height);
    color: var(--text-primary);
  }

.mod-staff-list__unit {
    margin: 0;
    font-family: var(--font-title-xsmall-family);
    font-size: var(--font-title-xsmall-size); /* 20px*/
    font-weight: var(--font-title-xsmall-weight);
    line-height: var(--font-title-xsmall-line-height);
    letter-spacing: var(--font-title-xsmall-letter-spacing);
    color: var(--text-bolder);
    word-break: keep-all;
  }

.mod-staff-list__people {
    margin: 0;
    padding: 0;
    list-style: none;
  }

/* 이름(역할 포함) · 소속 2칸*/

.mod-staff-list__person {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr);
    align-items: center;
    -moz-column-gap: var(--spacing-24);
         column-gap: var(--spacing-24);
    padding: var(--spacing-20) 0;
  }

.mod-staff-list__person + .mod-staff-list__person {
      border-top: 1px solid var(--border-default);
    }

.mod-staff-list__name,
  .mod-staff-list__org {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-2);
    margin: 0;
  }

.mod-staff-list__name-line {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    margin: 0;
  }

.mod-staff-list__name-ko {
    font-family: var(--font-title-xxsmall-family);
    font-size: var(--font-title-xxsmall-size); /* 18px*/
    font-weight: var(--font-weight-bold);
    line-height: 1.4;
    color: var(--text-bolder);
  }

/* 역할: 식별 표기라 파랑 — 15px 작은 글자라 기본 파랑보다 한 단계 진하게(대비 확보)*/

.mod-staff-list__role {
    display: inline-flex;
    align-items: center;
    font-family: var(--font-body-medium-medium-family);
    font-size: var(--font-body-medium-medium-size); /* 16px*/
    font-weight: var(--font-body-medium-medium-weight);
    line-height: 1.4;
    color: var(--blue-600);
  }

/* 이름과 역할 사이 4px 회색 사각 구분점 (사이트 불릿 목록과 같은 모양)*/

.mod-staff-list__role::before {
      content: "";
      flex-shrink: 0;
      width: 4px;
      height: 4px;
      margin: 0 6px; /* 양옆 6px — 간격 토큰에 6 단계가 없어 숫자로*/
      background-color: var(--border-default-strong);
    }

.mod-staff-list__name-en,
  .mod-staff-list__org-en {
    font-family: var(--font-body-small-regular-family);
    font-size: var(--font-body-small-regular-size); /* 15px*/
    line-height: 1.4;
    color: var(--text-muted);
  }

.mod-staff-list__org-ko {
    font-family: var(--font-body-large-regular-family);
    font-size: var(--font-body-large-regular-size); /* 17px*/
    line-height: 1.45;
    color: var(--text-default);
    word-break: keep-all;
  }

.mod-staff-list__person--empty {
    display: block;
    padding: var(--spacing-24) 0;
    font-family: var(--font-body-large-regular-family);
    font-size: var(--font-body-large-regular-size); /* 17px*/
    color: var(--text-muted);
  }

@media screen and (max-width: 1279px) {
  .mod-staff-list__group {
    grid-template-columns: minmax(160px, 1fr) minmax(0, 3fr);
  }

  .mod-staff-list__person {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr);
  }
  }

@media screen and (max-width: 767px) {
  .mod-staff-area__body {
    padding: 0 var(--spacing-16);
  }

  .mod-staff-area__toggle {
    padding: var(--spacing-16);
    font-size: var(--font-title-xsmall-size); /* 20px*/
  }

  .mod-staff-list__group {
    grid-template-columns: minmax(0, 1fr);
  }

  .mod-staff-list__head {
    padding: var(--spacing-20) 0 var(--spacing-4);
  }

  .mod-staff-list__unit {
    font-size: var(--font-title-xxsmall-size); /* 18px*/
  }

  .mod-staff-list__person {
    grid-template-columns: minmax(0, 1fr);
    row-gap: var(--spacing-8);
    padding: var(--spacing-16) 0;
  }

  /* 좁은 폭: 역할을 이름 아래 줄로, 구분점 없음*/
  .mod-staff-list__name-line {
    flex-direction: column;
    align-items: flex-start;
  }

  .mod-staff-list__role::before {
    content: none;
  }
  }

/* Patterns Layer Index*/

/* 모듈들이 조합되어 화면 레이아웃이나 복합적인 UI 양식을 이루는 패턴 스타일*/

/**
 * _topbar.scss
 * Patterns 레이어 - 상단 유틸리티 바 (.pat-topbar)
 * Figma: 헤더 'Frame 40' 기준 (네이비 40px 상단 바)
 *
 * 구조:
 *   .pat-topbar
 *     .pat-topbar__inner            ← GNB inner와 동일 규격(캡슐화) 공유
 *       .pat-topbar__link (× N)     ← 외부 사이트 링크 (external-link 아이콘 포함)
 *         .pat-topbar__link-icon
 */

.pat-topbar {
	position: relative;
	top: 0;
	left: 0;
	right: 0;
	z-index: 101; /* GNB(100)보다 위*/
	height: var(--size-topbar-height); /* 40px*/
	background-color: var(--color-navy);
	color: var(--color-white);

	@media screen and (max-width: 767px) {
		display: none;
  }
}

/* ── 캡슐화 inner (GNB __inner와 동일 규격) ─────────────────*/

.pat-topbar__inner {
		max-width: var(--size-chrome-inner); /* 폭 제한 없음, 좌우 거터만*/
		height: 100%;
		margin: 0 auto;
		padding: 0 var(--size-header-gutter); /* 좌우 80px*/
		display: flex;
		align-items: center;
		gap: 0;
	}

/* ── 외부 링크 아이템 ─────────────────────────────────*/

.pat-topbar__link {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		gap: 8px;
		min-width: 150px; /* Figma Frame 37/38/39 기준*/
		height: 100%;
		font-family: var(--font-family-base);
		font-size: var(--font-size-xs); /* 15px*/
		font-weight: var(--font-weight-regular);
		color: rgba(255, 255, 255, 0.85);
		text-decoration: none;
		white-space: nowrap;
		transition: color 0.15s ease;

		position: relative;
	}

.pat-topbar__link:before,
		.pat-topbar__link:after {
			position: absolute;
			top: 50%;
			transform: translate(0, -50%) skewY(-0.01deg);
			content: "";
			width: 1px;
			height: 100%;
			background-color: rgba(255, 255, 255, 0.2);
		}

.pat-topbar__link:before {
			left: 0;
		}

.pat-topbar__link:after {
			right: 0;
		}

.pat-topbar__link~.pat-topbar__link:before {
				content: none;
			}

.pat-topbar__link:hover {
			color: var(--color-white);
		}

.pat-topbar__link-icon {
		width: var(--size-icon-sm); /* 16px*/
		height: var(--size-icon-sm);
		flex-shrink: 0;
		stroke: currentColor;
	}

/**
 * _gnb.scss
 * Patterns 레이어 - 글로벌 네비게이션 바 (.pat-gnb)
 * Figma: GNB 컴포넌트 기준
 *
 * 구조:
 *   .pat-gnb
 *     .pat-gnb__inner
 *       .pat-gnb__logo
 *       .pat-gnb__nav
 *         .pat-gnb__nav-item (+ .is-active)
 *       .pat-gnb__actions
 *         .el-btn.el-btn--navy.el-btn--pill  ← 로그인 버튼 (user 아이콘 + 텍스트)
 *       .pat-gnb__sitemap-btn               ← 전체 메뉴(사이트맵) 열기, PC 전용
 *       .pat-gnb__toggle-btn                ← 모바일 드로어 열기, 태블릿 이하 전용
 */

/* ── 스마트 트랜지션 고정 헤더 래퍼 (.pat-header-wrapper) ─────────────────*/

.pat-header-wrapper {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.25s ease;
}

.pat-header-wrapper.is-hidden {
    transform: translateY(-100%);
  }

.pat-header-wrapper.is-scrolled {
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
  }

.pat-gnb {
  position: relative; /* pat-header-wrapper 내부에서 상대적 위치 처리*/
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  height: var(--size-header-height); /* 80px*/
  background-color: var(--color-surface);
  border-bottom: 1px solid var(--nav-divider);

  @media screen and (max-width: 767px) {
    top: 0;
  }
}

.pat-gnb__inner {
    max-width: var(--size-chrome-inner); /* 폭 제한 없음, 좌우 거터만*/
    height: 100%;
    margin: 0 auto;
    padding: 0 var(--size-header-gutter); /* 좌우 80px (Figma 기준)*/
    display: flex;
    align-items: center;
    gap: 0;

    @media screen and (max-width: 767px) {
      padding: 0 1.25rem; /* 20px (모바일 여백 축소)*/
  }
  }

/* ── 로고 / 서비스명 ─────────────────────────────────*/

/* 텍스트 로고와 이미지 로고(<img>)를 모두 지원합니다.*/

.pat-gnb__logo {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    font-family: var(--font-family-base);
    font-size: 1.625rem; /* 26px (텍스트 로고 폴백)*/
    font-weight: var(--font-weight-bold);
    color: var(--color-text-primary);
    text-decoration: none;
    white-space: nowrap;
    letter-spacing: -0.02em;
  }

.pat-gnb__logo-img {
    display: block;
    height: 49px; /* Figma 로고 높이*/
    width: auto;

    @media screen and (max-width: 767px) {
      height: 40px;
  }
  }

/* ── 메인 네비게이션 ─────────────────────────────────*/

.pat-gnb__nav {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(1.5rem, 3.125vw - 0.5rem, 6rem); /* 1280: 32 → 1920: 52 → 2560(QHD·4K 150%): 72 → 3328 이상: 96 (와이드 헤더 뭉침·좁은 PC 넘침 방지)*/
    height: 100%;
    padding: 0 var(--spacing-16); /* 폭이 빠듯해도 로고·검색창과 메뉴가 붙지 않도록 최소 여백 (검색창이 먼저 줄어듦)*/

    @media screen and (max-width: 1279px) {
      display: none;
  }
  }

.pat-gnb__nav-item {
    font-family: var(--font-family-base);
    font-size: var(--font-size-lg); /* 18px*/
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-secondary);
    text-decoration: none;
    white-space: nowrap;
    height: 100%;
    display: flex;
    align-items: center;
    position: relative;
    transition: color 0.2s ease;
  }

.pat-gnb__nav-item::after {
      content: '';
      position: absolute;
      bottom: -1px; /* 헤더 border-bottom(1px)을 덮어 선 아래 연한 줄이 보이지 않게*/
      left: 0;
      right: 0;
      height: 4px;
      background-color: transparent;
      transition: background-color 0.2s ease;
    }

.pat-gnb__nav-item:hover {
      color: var(--color-navy);
    }

.pat-gnb__nav-item.is-active {
      font-weight: var(--font-weight-bold);
      color: var(--color-text-primary);
    }

.pat-gnb__nav-item.is-active::after {
        background-color: var(--color-navy);
      }

/* ── 검색창 (GNB 내부 전용 하위요소) ───────────────────*/

/* Figma 'Frame 66' 기준: 295 × 40, 라운드 필, 우측 돋보기 아이콘*/

.pat-gnb__search {
    flex: 0 1 295px; /* 메뉴 폭이 부족하면 200px까지 먼저 줄어듦*/
    min-width: 200px;
    display: flex;
    align-items: center;
    height: 40px;
    padding: 0 16px;
    background-color: var(--color-bg-hover); /* #f7f7f7*/
    border: 1px solid var(--color-border-default);
    border-radius: var(--radius-full);
    transition: border-color 0.15s ease, background-color 0.15s ease;
  }

/* 기본 테두리(#e0e0e0)와 구분되도록 hover는 한 단계 진한 회색, 포커스는 primary 유지*/

.pat-gnb__search:hover {
      border-color: var(--border-strong); /* gray-500 #929AAA*/
    }

.pat-gnb__search:focus-within {
      border-color: var(--color-border-focus);
      background-color: var(--color-surface);
    }

.pat-gnb__search{

    @media screen and (max-width: 1279px) {
      display: none;
  }
}

.pat-gnb__search-input {
    flex: 1;
    min-width: 0;
    border: none;
    background: transparent;
    outline: none;
    font-family: var(--font-family-base);
    font-size: var(--font-size-sm); /* 16px*/
    color: var(--color-text-secondary);
  }

.pat-gnb__search-input::-moz-placeholder {
      color: var(--color-text-muted);
    }

.pat-gnb__search-input::placeholder {
      color: var(--color-text-muted);
    }

.pat-gnb__search-btn {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    margin-left: 8px;
    padding: 0;
    background: transparent;
    border: none;
    cursor: pointer;
    color: var(--color-text-secondary);
    transition: color 0.15s ease;
  }

.pat-gnb__search-btn:hover {
      color: var(--color-primary);
    }

.pat-gnb__search-btn svg {
      width: 18px;
      height: 18px;
    }

/* ── 우측 액션 영역 ───────────────────────────────────*/

.pat-gnb__actions {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-left: var(--spacing-20); /* Figma: 검색창 ↔ 로그인 20px*/

    @media screen and (max-width: 1279px) {
      display: none;
  }
  }

/* Figma: 로그인 버튼 아이콘 ↔ 텍스트 4px (el-btn 기본 8px)*/

.pat-gnb__actions .el-btn {
      gap: var(--spacing-4);
    }

/* ── 전체 메뉴(사이트맵) 열기 버튼 — PC 전용 ─────────────*/

/* .pat-gnb__actions 밖에 둔다: updateLoginState()가 actions 내부를 통째로 교체하기 때문*/

.pat-gnb__sitemap-btn {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    margin-left: var(--spacing-20);
    padding: 0;
    background: transparent;
    border: none;
    cursor: pointer;
    color: var(--color-navy);
    transition: color 0.15s ease;
  }

.pat-gnb__sitemap-btn:hover {
      color: var(--color-primary);
    }

.pat-gnb__sitemap-btn svg {
      width: 40px;
      height: 40px;
    }

.pat-gnb__sitemap-btn{

    @media screen and (max-width: 1279px) {
      display: none;
  }
}

/* 로그인 상태: [홍길동님(→ 마이페이지)] [로그아웃]*/

.pat-gnb__user {
    display: flex;
    align-items: center;
    gap: var(--spacing-12);
    white-space: nowrap;
  }

.pat-gnb__user-name {
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: color 0.15s ease;
  }

.pat-gnb__user-name strong {
      font-weight: var(--font-weight-semibold);
      color: var(--color-text-primary);
    }

.pat-gnb__user-name:hover,
    .pat-gnb__user-name:hover strong {
      color: var(--color-primary);
      text-decoration: underline;
    }

/* ── 메가 드롭다운 (전체폭 공유 패널, Figma node 197:2043 기준) ────────*/

/* 헤더(.pat-gnb) 하단에 절대배치되어 전체 폭을 덮으며,*/

/* 모든 상위 메뉴를 5개 컬럼으로 동시에 노출합니다.*/

.pat-gnb__mega {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background-color: var(--color-surface);
    border-top: 1px solid var(--nav-divider);
    box-shadow: 0px 12px 24px rgba(0, 0, 0, 0.06);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s;
    z-index: 99;

    @media screen and (max-width: 1279px) {
      display: none; /* 태블릿 이하는 모바일 드로어가 담당*/
  }
  }

.pat-gnb__mega.is-open {
      opacity: 1;
      visibility: visible;
      transform: translateY(0);
    }

/* 메가 패널 내부 캡슐화 (헤더 inner와 동일 폭·거터로 정렬)*/

.pat-gnb__mega-inner {
    max-width: var(--size-header-inner); /* 1760px*/
    margin: 0 auto;
    padding: 0 var(--size-header-gutter); /* 상하 40px / 좌우 80px*/
    display: grid;
    grid-template-columns: repeat(5, 1fr);
  }

/* 컬럼 (상위 메뉴 1개 = 컬럼 1개), 컬럼 사이 세로 구분선*/

.pat-gnb__mega-col {
    display: flex;
    flex-direction: column;
    gap: 18px;
    padding: 40px 24px;
    border-left: 1px solid var(--nav-divider);
  }

.pat-gnb__mega-col:first-child {
      padding-left: 0;
      border-left: none;
    }

/* 컬럼 타이틀 (상위 메뉴명)*/

.pat-gnb__mega-title {
    font-family: var(--font-family-base);
    font-size: var(--font-size-lg); /* 18px*/
    font-weight: var(--font-weight-bold);
    color: var(--color-text-primary);
    text-decoration: none;
    transition: color 0.15s ease;
  }

.pat-gnb__mega-title:hover {
      color: var(--color-navy);
    }

/* 하위 링크 목록*/

.pat-gnb__mega-links {
    display: flex;
    flex-direction: column;
    gap: 12px;
  }

.pat-gnb__mega-link {
    font-family: var(--font-family-base);
    font-size: var(--font-size-sm); /* 16px*/
    font-weight: var(--font-weight-regular);
    color: var(--color-text-secondary);
    text-decoration: none;
    transition: color 0.15s ease, font-weight 0.15s ease;
  }

.pat-gnb__mega-link:hover,
    .pat-gnb__mega-link.is-active {
      color: var(--color-primary);
      font-weight: var(--font-weight-semibold);
    }

/* 3뎁스 목록 (ui-schema 2뎁스 항목의 children) — 2뎁스 아래 들여쓴 작은 목록*/

.pat-gnb__mega-sublinks {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-8);
    margin-top: calc(var(--spacing-4) * -1); /* 2뎁스 링크와 붙여 묶음으로 보이게 (목록 간격 12px → 8px)*/
    padding-left: var(--spacing-12);
    border-left: 1px solid var(--nav-divider);
  }

.pat-gnb__mega-sublink {
    font-family: var(--font-family-base);
    font-size: var(--font-size-xs); /* 15px*/
    font-weight: var(--font-weight-regular);
    line-height: 1.4;
    color: var(--color-text-body);
    text-decoration: none;
    word-break: keep-all;
    transition: color 0.15s ease;
  }

.pat-gnb__mega-sublink:hover,
    .pat-gnb__mega-sublink.is-active {
      color: var(--color-primary);
      font-weight: var(--font-weight-semibold);
    }

/* ── 모바일/태블릿 메뉴 토글 버튼 (햄버거)───────────────────────────*/

.pat-gnb__toggle-btn {
    display: none;
    flex-direction: column;
    justify-content: space-between;
    width: 24px;
    height: 18px;
    background: transparent;
    border: none;
    cursor: pointer;
    padding: 0;
    margin-left: auto;

    @media screen and (max-width: 1279px) {
      display: flex;
  }
  }

.pat-gnb__toggle-btn span {
      display: block;
      width: 100%;
      height: 2px;
      background-color: var(--color-text-primary);
      border-radius: 9px;
      transition: all 0.2s ease;
    }

/* ── 모바일 사이드 오버레이 드로어 ──────────────────────────────────────────*/

.pat-gnb-drawer {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 200;
  visibility: hidden;
  pointer-events: none;
  transition: visibility 0.3s;
}

.pat-gnb-drawer.is-open {
    visibility: visible;
    pointer-events: auto;
  }

.pat-gnb-drawer__overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(0, 0, 0, 0.4);
    backdrop-filter: blur(4px);
    opacity: 0;
    transition: opacity 0.3s ease;
  }

.pat-gnb-drawer.is-open .pat-gnb-drawer__overlay {
    opacity: 1;
  }

.pat-gnb-drawer__panel {
    position: absolute;
    top: 0;
    right: 0;
    width: 300px;
    height: 100%;
    background-color: var(--color-surface);
    box-shadow: -4px 0px 20px rgba(0, 0, 0, 0.1);
    display: flex;
    flex-direction: column;
    transform: translateX(100%);
    transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  }

.pat-gnb-drawer.is-open .pat-gnb-drawer__panel {
    transform: translateX(0);
  }

.pat-gnb-drawer__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.5rem 1.25rem;
    border-bottom: 1px solid var(--color-border-default);
  }

.pat-gnb-drawer__logo {
    display: inline-flex;
    align-items: center;
  }

/* GNB 모바일 로고와 동일 규격 (40px)*/

.pat-gnb-drawer__logo-img {
    display: block;
    height: 40px;
    width: auto;
  }

.pat-gnb-drawer__close {
    background: transparent;
    border: none;
    cursor: pointer;
    color: var(--color-text-secondary);
    padding: 0.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: color 0.15s;
  }

.pat-gnb-drawer__close:hover {
      color: var(--color-text-primary);
    }

.pat-gnb-drawer__nav {
    flex: 1;
    overflow-y: auto;
    overscroll-behavior: contain; /* 터치 스크롤 끝에서 배경 페이지로 스크롤 전파 방지*/
    padding: 1.5rem 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
  }

.pat-gnb-drawer__item {
    display: flex;
    flex-direction: column;
  }

.pat-gnb-drawer__item-link {
    font-family: var(--font-family-base);
    font-size: 1.125rem;
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-secondary);
    text-decoration: none;
    padding: 0.5rem 0;
    transition: color 0.15s;
  }

.pat-gnb-drawer__item-link:hover,
    .pat-gnb-drawer__item-link.is-active {
      color: var(--color-primary);
    }

.pat-gnb-drawer__item-btn {
    font-family: var(--font-family-base);
    font-size: 1.125rem;
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-secondary);
    background: transparent;
    border: none;
    width: 100%;
    text-align: left;
    padding: 0.5rem 0;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    transition: color 0.15s;
  }

.pat-gnb-drawer__item-btn:hover,
    .pat-gnb-drawer__item-btn.is-active {
      color: var(--color-primary);
    }

.pat-gnb-drawer__arrow {
    width: 16px;
    height: 16px;
    transition: transform 0.2s ease;
  }

.pat-gnb-drawer__item-btn.is-active .pat-gnb-drawer__arrow {
    transform: rotate(180deg);
  }

.pat-gnb-drawer__sub {
    max-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding-left: 1rem;
    transition: max-height 0.3s cubic-bezier(0.16, 1, 0.3, 1), padding 0.3s;
  }

.pat-gnb-drawer__sub.is-open {
      max-height: 600px; /* 3뎁스 목록(프로그램 안내 > Pillar 1~3)까지 펼쳐도 잘리지 않도록*/
      padding-top: 0.5rem;
      padding-bottom: 0.5rem;
    }

/* 메뉴 라벨 영문 병기 (ui-schema labelEn) — 예: 파트너 검색 Partner Search*/

.pat-gnb-drawer__label-en {
    margin-left: var(--spacing-4);
    font-size: var(--font-size-xxs);
    font-weight: var(--font-weight-regular);
    color: var(--color-text-muted);
  }

.pat-gnb-drawer__sub-link {
    font-family: var(--font-family-base);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-regular);
    color: var(--color-text-body);
    text-decoration: none;
    transition: color 0.15s, font-weight 0.15s;
  }

.pat-gnb-drawer__sub-link:hover,
    .pat-gnb-drawer__sub-link.is-active {
      color: var(--color-primary);
      font-weight: var(--font-weight-semibold);
    }

/* 3뎁스: 아코디언 없이 2뎁스 아래 들여써서 항상 펼침*/

.pat-gnb-drawer__subsub {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-8);
    margin-top: calc(var(--spacing-4) * -1);
    padding-left: var(--spacing-12);
    border-left: 1px solid var(--color-border-default);
  }

.pat-gnb-drawer__sub-sublink {
    font-family: var(--font-family-base);
    font-size: var(--font-size-xs); /* 15px*/
    font-weight: var(--font-weight-regular);
    line-height: 1.4;
    color: var(--color-text-secondary);
    text-decoration: none;
    word-break: keep-all;
    transition: color 0.15s;
  }

.pat-gnb-drawer__sub-sublink:hover,
    .pat-gnb-drawer__sub-sublink.is-active {
      color: var(--color-primary);
      font-weight: var(--font-weight-semibold);
    }

/* 관련 사이트 (PC 상단 바 외부 링크 복제) — 메뉴보다 약하게*/

.pat-gnb-drawer__links {
    padding: var(--spacing-16) 1.25rem;
    border-top: 1px solid var(--color-border-default);
  }

.pat-gnb-drawer__links-title {
    margin-bottom: var(--spacing-8);
    font-size: var(--font-size-xxs);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-muted);
  }

.pat-gnb-drawer__links-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-8) var(--spacing-20);
  }

.pat-gnb-drawer__link {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-4);
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
    text-decoration: none;
  }

.pat-gnb-drawer__link svg {
      width: 14px;
      height: 14px;
      flex-shrink: 0;
    }

.pat-gnb-drawer__link:hover {
      color: var(--color-primary);
    }

.pat-gnb-drawer__footer {
    padding: 1.25rem;
    border-top: 1px solid var(--color-border-default);
  }

/* 좁은 드로어(300px)에 맞춘 버튼 높이 48px — el-btn 기본 60 / --md 44 사이, 입력 요소 48 규격과 맞춤*/

.pat-gnb-drawer__footer .el-btn {
      height: 48px;
    }

/* 로그인 상태: 이름 + [마이페이지][로그아웃]*/

.pat-gnb-drawer__user {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-12);
  }

.pat-gnb-drawer__user-name {
    font-size: var(--font-size-sm);
    color: var(--color-text-secondary);
  }

.pat-gnb-drawer__user-name strong {
      font-weight: var(--font-weight-semibold);
      color: var(--color-text-primary);
    }

.pat-gnb-drawer__user-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--spacing-8);
  }

body.overflow-hidden {
  overflow: hidden;
}

/* ── 좁은 PC(1280~1599): 검색창을 돋보기 버튼만 남겨 메뉴 한 줄 유지 ──*/

/* 버튼은 기존 submit 그대로 → 통합검색 페이지(#/search)로 이동*/

/* 사이트맵 버튼 추가 후 1599 이하에서는 검색창이 최소폭(200px) 아래로 눌려 넘치므로 구간을 1439 → 1599로 확장*/

@media screen and (min-width: 1280px) and (max-width: 1599px) {
  .pat-gnb__search {
    flex: 0 0 40px;
    min-width: 40px;
    padding: 0;
    justify-content: center;
  }

  .pat-gnb__search-input {
    display: none;
  }

  .pat-gnb__search-btn {
    margin-left: 0;
  }
}

/* ── PC 1280~1439: 사이트맵 버튼(40px + 간격) 추가로 우측이 넘치는 구간 → 로고·간격을 줄여 폭 확보 ──*/

@media screen and (min-width: 1280px) and (max-width: 1439px) {
  .pat-gnb__logo-img {
    height: 40px;
  }

  .pat-gnb__actions,
  .pat-gnb__sitemap-btn {
    margin-left: var(--spacing-12);
  }
}

/* ── PC(≥1280): 모바일 드로어는 열린 상태여도 표시하지 않음 (리사이즈 전환 대비 — JS가 is-open 도 해제)*/

@media screen and (min-width: 1280px) {
  .pat-gnb-drawer {
    display: none;
  }
  }

/**
 * _sitemap.scss
 * Patterns 레이어 - 전체 메뉴(사이트맵) 오버레이 (.pat-sitemap)
 * Figma: 호라이즌 컴퍼넌트 node 2068:3782 기준 (PC 전용, 1280 미만 미노출)
 *
 * 구조:
 *   .pat-sitemap (+ .is-open)                    ← body 직속, 헤더까지 덮는 dialog
 *     .pat-sitemap__dim                          ← 딤 (클릭 시 닫힘)
 *     .pat-sitemap__head                         ← GNB 로고 줄과 같은 위치
 *       .pat-sitemap__logo > .pat-sitemap__logo-img
 *       .pat-sitemap__close
 *     .pat-sitemap__body                         ← renderNavigation()이 ui-schema로 렌더
 *       .pat-sitemap__col
 *         .pat-sitemap__title
 *         .pat-sitemap__links > li > .pat-sitemap__link (+ .is-active)
 */

.pat-sitemap {
  position: fixed;
  inset: 0;
  z-index: 300; /* 헤더(100)·모바일 드로어(200) 위*/
  display: flex;
  flex-direction: column;
  visibility: hidden;
  pointer-events: none;
  transition: visibility 0s linear 0.25s;
}

/* 닫힐 때: 페이드아웃이 끝난 뒤 숨김*/

/* 열릴 때: 즉시 보이게 해야 X 버튼으로 포커스 이동이 가능*/

.pat-sitemap.is-open {
    visibility: visible;
    pointer-events: auto;
    transition-delay: 0s;
  }

.pat-sitemap__dim {
    position: absolute;
    inset: 0;
    background-color: var(--background-dim-navy);
    backdrop-filter: blur(7.5px);
    opacity: 0;
    transition: opacity 0.25s ease;
  }

.pat-sitemap.is-open .pat-sitemap__dim {
    opacity: 1;
  }

/* 상단 유틸바(40px) 아래 GNB 줄(80px)에 맞춰 로고·닫기 버튼 위치를 고정*/

.pat-sitemap__head {
    position: relative;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    max-width: var(--size-chrome-inner);
    height: var(--size-header-height);
    margin: var(--spacing-40) auto 0;
    padding: 0 var(--size-header-gutter);
  }

.pat-sitemap__logo {
    display: inline-flex;
    align-items: center;
  }

.pat-sitemap__logo-img {
    display: block;
    height: 49px; /* GNB 로고와 동일 규격*/
    width: auto;
  }

.pat-sitemap__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    padding: 0;
    background: transparent;
    border: none;
    cursor: pointer;
    color: var(--text-inverse);
    transition: opacity 0.15s ease;
  }

.pat-sitemap__close:hover {
      opacity: 0.7;
    }

.pat-sitemap__close svg {
      width: 40px;
      height: 40px;
    }

.pat-sitemap__body {
    position: relative;
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    display: flex;
    align-items: center;
    justify-content: center;
    padding-bottom: var(--size-header-total); /* 헤더 높이만큼 보정해 화면 정중앙에 배치*/
    opacity: 0;
    transform: translateY(-16px);
    transition: opacity 0.25s ease, transform 0.25s ease;
  }

.pat-sitemap.is-open .pat-sitemap__body {
    opacity: 1;
    transform: translateY(0);
  }

.pat-sitemap__cols {
    display: flex;
    align-items: stretch;
  }

.pat-sitemap__col {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-40);
    width: 280px;
    padding: 50px 30px;
  }

/* 두 줄 타이틀(연구행정 실무협의회)과 한 줄 타이틀의 하위 링크 시작선을 맞춤*/

.pat-sitemap__title {
    min-height: 84px; /* 28px × 1.5 × 2줄*/
    font-family: var(--font-title-medium-family);
    font-size: var(--font-title-medium-size); /* 28px*/
    font-weight: var(--font-title-medium-weight);
    line-height: var(--font-title-medium-line-height);
    letter-spacing: var(--font-title-medium-letter-spacing);
    color: var(--text-inverse);
    text-decoration: none;
    word-break: keep-all;
  }

.pat-sitemap__title:hover {
      text-decoration: underline;
      text-underline-offset: 6px;
    }

.pat-sitemap__links {
    display: flex;
    flex-direction: column;
    margin: 0;
    padding: 0;
    list-style: none;
  }

.pat-sitemap__link {
    display: inline-block;
    font-family: var(--font-family-pretendard);
    font-size: var(--font-size-md); /* 17px*/
    font-weight: var(--font-weight-regular);
    line-height: 2.76; /* Figma 행간 (항목 간 약 47px)*/
    letter-spacing: -0.03em;
    color: var(--text-inverse);
    text-decoration: none;
    white-space: nowrap;
  }

.pat-sitemap__link:hover,
    .pat-sitemap__link.is-active {
      font-weight: var(--font-weight-semibold);
      text-decoration: underline;
      text-underline-offset: 4px;
    }

/* 3뎁스 목록 — 2뎁스보다 작고 약하게, 긴 이름(Pillar 2)은 컬럼 폭에서 줄바꿈*/

.pat-sitemap__sublinks {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-8);
    margin: 0 0 var(--spacing-8);
    padding: 0 0 0 var(--spacing-12);
    list-style: none;
    border-left: 1px solid var(--alpha-white-40);
  }

.pat-sitemap__sublink {
    display: inline-block;
    font-family: var(--font-family-pretendard);
    font-size: var(--font-size-xs); /* 15px*/
    font-weight: var(--font-weight-regular);
    line-height: 1.5;
    color: var(--alpha-white-80);
    text-decoration: none;
    word-break: keep-all;
  }

.pat-sitemap__sublink:hover,
    .pat-sitemap__sublink.is-active {
      color: var(--text-inverse);
      font-weight: var(--font-weight-semibold);
      text-decoration: underline;
      text-underline-offset: 4px;
    }

/* ── 태블릿 이하: 모바일 드로어가 전체 메뉴를 담당하므로 사이트맵은 표시하지 않음 (JS가 is-open 도 해제)*/

@media screen and (max-width: 1279px) {
  .pat-sitemap {
    display: none;
  }
  }

/**
 * _footer.scss
 * Patterns 레이어 - 사이트 푸터 (.pat-footer)
 * Figma: Footer 컴포넌트 및 상단 문의 배너(Contact Banner) 통합
 *
 * 구조:
 *   .pat-footer
 *     .pat-footer__banner (상단 문의 배너 375px)
 *       .pat-footer__inner
 *         .pat-footer__banner-grid
 *           .pat-footer__banner-title
 *           .pat-footer__banner-desc
 *           .pat-footer__banner-action (.pat-footer__banner-btn)
 *     .pat-footer__body (하단 푸터)
 *       .pat-footer__inner
 *         .pat-footer__top (.pat-footer__logo, .pat-footer__contact)
 *         .pat-footer__divider
 *         .pat-footer__bottom (.pat-footer__links, .pat-footer__copy)
 */

.pat-footer {
	background-color: #0E1110;
}

.pat-footer__inner {
		max-width: var(--size-chrome-inner); /* 헤더와 동일: 폭 제한 없음*/
		margin: 0 auto;
		padding: 0 var(--size-header-gutter); /* 헤더 로고와 좌측 라인 정렬 (80 / 24 / 20)*/
		display: flex;
		flex-direction: column;
		gap: 1.375rem; /* 22px*/
	}

/* ── 1. 상단 문의 배너 영역 ──────────────────────────────*/

.pat-footer__banner {
		box-sizing: border-box;
		min-height: 375px;
		padding: 2.5rem 0;
		display: flex;
		align-items: center;
		background-color: #000000;
		background-image: url('../../img/site/footer-contact-background.png');
		background-repeat: no-repeat;
		background-position: center;
		background-size: cover;
	}

.pat-footer__banner .pat-footer__inner {
			width: 100%;
			height: 100%;
			justify-content: center;
		}

.pat-footer__banner-grid {
			display: grid;
			grid-template-columns: repeat(2, 1fr);
			gap: 2.1875rem; /* 35px*/
			align-items: center;
			width: 100%;

			@media screen and (max-width: 1279px) {
				grid-template-columns: 1fr;
				gap: 1.25rem;
  }
		}

.pat-footer__banner-title {
			color: #ffffff;
			font-family: var(--font-family-title, 'TmonMonsoriOTF');
			font-size: 3.75rem; /* 60px*/
			font-weight: 900;
			line-height: 1.2;

			@media screen and (max-width: 767px) {
				font-size: 2.5rem; /* 40px*/
  }
		}

.pat-footer__banner-dot {
			color: var(--color-primary, #2F68C2);
		}

.pat-footer__banner-desc {
			display: flex;
			align-items: center;
			justify-content: flex-end;
			color: rgba(255, 255, 255, 0.94);
			font-family: var(--font-family-base);
			font-size: 1.1875rem; /* 19px*/
			font-weight: var(--font-weight-medium);
			line-height: 1.6;
			letter-spacing: -0.03em;
		}

/* flex 컨테이너라 문구 전체를 span 하나로 묶어야 strong이 별도 칸으로 떨어지지 않음*/

.pat-footer__banner-desc strong {
				font-weight: var(--font-weight-semibold);
			}

.pat-footer__banner-desc{

			@media screen and (max-width: 1279px) {
				justify-content: flex-start;
				font-size: 1rem;
  }
}

.pat-footer__banner-action {
			grid-column: span 2;
			display: flex;
			justify-content: center;
			padding-top: 2.1875rem; /* 35px*/
			border-top: 1px solid rgba(255, 255, 255, 0.27);

			@media screen and (max-width: 1279px) {
				grid-column: span 1;
				padding-top: 1.5rem;
  }
		}

.pat-footer__banner-btn {
			min-width: 200px;
			height: 60px;
			padding: 8px 24px;
			gap: 8px;
			border: 1px solid #ffffff;
			color: #ffffff;
			font-family: var(--font-family-base);
			font-size: 17px;
			font-weight: var(--font-weight-medium);
			text-decoration: none;
			transition: color 0.35s ease;

			/* 흰 배경을 ::before 덮개로 두고 왼쪽 기준 scaleX로 채워 나가게 전환*/
			position: relative;
			isolation: isolate; /* 덮개(z-index -1)를 버튼 배경 위 · 텍스트 아래에 두기 위한 쌓임 맥락*/
			overflow: hidden;
			background: transparent;
		}

.pat-footer__banner-btn::before {
				content: '';
				position: absolute;
				inset: 0;
				z-index: -1;
				background-color: #ffffff;
				transform: scaleX(0);
				transform-origin: left center;
				transition: transform 0.35s ease;
			}

.pat-footer__banner-btn svg path {
				transition: stroke 0.35s ease;
			}

/* .el-btn:hover:not(...) 기본 배경(#f8f9fb)이 즉시 덮어 채움 효과가 안 보이므로 같은 명시도로 무력화*/

.pat-footer__banner-btn:hover:not(:disabled):not(.el-btn--disabled),
			.pat-footer__banner-btn:focus-visible {
				background-color: transparent;
				border-color: #ffffff;
				color: #000000;
			}

.pat-footer__banner-btn:hover:not(:disabled):not(.el-btn--disabled)::before, .pat-footer__banner-btn:focus-visible::before {
					transform: scaleX(1);
				}

.pat-footer__banner-btn:hover:not(:disabled):not(.el-btn--disabled) svg path, .pat-footer__banner-btn:focus-visible svg path {
					stroke: #000000;
				}

/* ── 2. 하단 푸터 콘텐츠 영역 ──────────────────────────────*/

.pat-footer__body {
		padding: 3.125rem 0; /* 50px*/
	}

/* ── 상단 (로고 + 연락처) ────────────────────────────*/

.pat-footer__top {
		display: flex;
		align-items: center;
		justify-content: space-between;

		@media screen and (max-width: 1279px) {
			flex-direction: column;
			align-items: flex-start;
			gap: 1.5rem;
  }
	}

.pat-footer__logo {
		font-family: var(--font-family-base);
		font-size: 1.625rem; /* 26px*/
		font-weight: var(--font-weight-bold);
		color: var(--nav-footer-text);
		white-space: nowrap;
		filter: grayscale(100%);
	}

.pat-footer__contact {
		display: flex;
		align-items: center;
		gap: 0.9375rem; /* 15px*/

		@media screen and (max-width: 1279px) {
			flex-wrap: wrap;
  }

		@media screen and (max-width: 767px) {
			flex-direction: column;
			align-items: flex-start;
			gap: 0.5rem;
  }

	}

.pat-footer__contact-link {
		display: flex;
		align-items: center;
		gap: 20px;

		overflow: hidden;
		color: rgba(255, 255, 255, 0.97);
		text-align: center;
		text-overflow: ellipsis;
		font-family: var(--font-family-base);
		font-size: 17px;
		font-style: normal;
		font-weight: 500;
		line-height: 16px;
		text-decoration: none;
	}

.pat-footer__contact-link .icon {
			width: 40px;
			height: 40px;
		}

/* ── 구분선 ──────────────────────────────────────────*/

.pat-footer__divider {
		height: 1px;
		background-color: rgba(255, 255, 255, 0.12);
	}

/* ── 하단 (링크 + 저작권) ────────────────────────────*/

.pat-footer__bottom {
		display: flex;
		flex-direction: column;
		gap: 1.25rem; /* 20px*/
	}

.pat-footer__links {
		display: flex;
		align-items: center;
		gap: 1.125rem; /* 18px*/

		@media screen and (max-width: 1279px) {
			flex-wrap: wrap;
  }

		@media screen and (max-width: 767px) {
			flex-direction: column;
			align-items: flex-start;
			gap: 0.75rem;
  }
	}

.pat-footer__link {
		font-family: var(--font-family-base);
		font-size: var(--font-size-md); /* 17px*/
		text-decoration: none;
		white-space: nowrap;
		transition: color 0.2s ease;
	}

/* 첫 번째 링크(개인정보처리방침)는 강조*/

.pat-footer__link:first-child {
			font-weight: var(--font-weight-semibold);
			color: var(--nav-footer-text);
		}

/* 나머지 링크*/

.pat-footer__link:not(:first-child) {
			font-weight: var(--font-weight-regular);
			color: rgba(255, 255, 255, 0.6);
		}

.pat-footer__link:not(:first-child):hover {
				color: var(--nav-footer-text);
			}

.pat-footer__link-divider {
		width: 1px;
		height: 12px;
		background-color: rgba(255, 255, 255, 0.25);

		@media screen and (max-width: 767px) {
			display: none;
  }
	}

.pat-footer__copy {
		font-family: var(--font-family-base);
		font-size: var(--font-size-xs); /* 15px*/
		font-weight: var(--font-weight-regular);
		color: var(--nav-footer-text-muted);
		line-height: var(--line-height-relaxed);

		@media screen and (max-width: 767px) {
			font-size: var(--font-size-xxs); /* 13px*/
  }
	}

/**
 * _sidebar-nav.scss
 * Patterns 레이어 - 사이드 네비게이션 (.pat-sidebar-nav)
 * Figma: Side menu 컴포넌트 기준 (1Depth 제목 + 2Depth 목록)
 *
 * 구조:
 *   .pat-sidebar-nav
 *     .pat-sidebar-nav__title       ← 1Depth 제목
 *     .pat-sidebar-nav__menu        ← 메뉴 목록 래퍼 (border navy)
 *       .pat-sidebar-nav__item      ← 2Depth 항목
 *         (+ .is-active)            ← 활성 항목 (파랑 fill)
 */

.pat-sidebar-nav {
  display: flex;
  flex-direction: column;
  gap: 0.9375rem;                       /* 15px*/
  width: 260px;
}

@media (max-width: 1024px) {

.pat-sidebar-nav {
    width: 100%;
    gap: 0.5rem
}
  }

/* ── 1Depth 제목 ─────────────────────────────────────*/

.pat-sidebar-nav__title {
    font-family: var(--font-family-base);
    font-size: var(--font-size-h4);     /* 25px*/
    font-weight: var(--font-weight-bold);
    color: var(--color-text-secondary);
    letter-spacing: var(--letter-spacing-tight);
    white-space: nowrap;
  }

/* 모바일/태블릿 헤더 공간 낭비 방지를 위한 비노출*/

@media (max-width: 1024px) {

.pat-sidebar-nav__title {
      display: none
  }
    }

/* ── 메뉴 목록 래퍼 ─────────────────────────────────*/

.pat-sidebar-nav__menu {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--color-navy);
    border-radius: var(--radius-md);    /* 4px*/
    padding: 1rem;                      /* 16px*/
    overflow: hidden;
  }

/* 모바일 가로 탭 바 전환 및 터치 스크롤 탑재*/

@media (max-width: 1024px) {

.pat-sidebar-nav__menu {
      flex-direction: row;
      border: none;
      border-bottom: 1px solid var(--color-border-default);
      border-radius: 0;
      padding: 0;
      overflow-x: auto;
      white-space: nowrap;
      -webkit-overflow-scrolling: touch

      /* 크롬/사파리 스크롤바 감추기 (트렌디 디자인)*/
  }
      .pat-sidebar-nav__menu::-webkit-scrollbar {
        display: none;
      }
    }

/* ── 2Depth 항목 ─────────────────────────────────────*/

.pat-sidebar-nav__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 60px;
    padding: 0.625rem 0.875rem;         /* 10px 14px*/
    border-radius: var(--radius-lg);    /* 5px*/
    font-family: var(--font-family-base);
    font-size: var(--font-size-md);     /* 17px*/
    font-weight: var(--font-weight-medium);
    color: var(--color-gray-800);
    text-decoration: none;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
    white-space: nowrap;
  }

.pat-sidebar-nav__item:hover:not(.is-active) {
      background-color: rgba(0, 31, 71, 0.05);
      color: var(--color-navy);
    }

/* 모바일용 탭 아이템 간격 제어 및 밑줄(Border) 전환*/

@media (max-width: 1024px) {

.pat-sidebar-nav__item {
      height: 48px;
      padding: 0 1.25rem;
      border-radius: 0;
      border-bottom: 2px solid transparent
  }

      .pat-sidebar-nav__item:hover:not(.is-active) {
        background-color: transparent;
      }
    }

/* 활성 항목 (파랑 fill)*/

.pat-sidebar-nav__item.is-active {
      background-color: var(--color-primary);
      color: #ffffff;
      font-weight: var(--font-weight-bold);
    }

.pat-sidebar-nav__item.is-active .pat-sidebar-nav__arrow {
        color: #ffffff;
      }

/* 모바일 활성 상태는 밑줄 인디케이터 라인으로 전환*/

@media (max-width: 1024px) {

.pat-sidebar-nav__item.is-active {
        background-color: transparent !important;
        color: var(--color-navy) !important;
        border-bottom: 2px solid var(--color-navy)
    }
      }

/* 화살표 아이콘*/

.pat-sidebar-nav__item-inner {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      flex: 1;
      min-width: 0;
    }

.pat-sidebar-nav__arrow {
    flex-shrink: 0;
    width: var(--size-icon-md);         /* 20px*/
    height: var(--size-icon-md);
    color: var(--color-text-muted);
    transition: color 0.15s ease;
  }

/* 모바일 가로 탭 바 형태에서는 화살표 비노출*/

@media (max-width: 1024px) {

.pat-sidebar-nav__arrow {
      display: none
  }
    }

/**
 * _sub-visual.scss
 * Patterns 레이어 - 서브 비주얼 영역 (.pat-sub-visual)
 * 상단 GNB 하단에 위치하며, 페이지 헤더(브레드크럼, 타이틀, 서브 설명 등)의 배경 및 레이아웃을 감쌉니다.
 *
 * [구조]
 *   .pat-sub-visual
 *     .pat-sub-visual__inner (--size-page-inner 1760px, 본문 .pat-page__inner와 동일 규격)
 *       .pat-page__header
 *
 * [페이지별 배경 확장 예시]
 *   <div class="pat-sub-visual pat-sub-visual--mypage">
 *   또는 라우터 pageHeader: { bgClass: 'pat-sub-visual--mypage' }
 */

.pat-sub-visual {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 405px;
  background-color: var(--color-gray-50, #f4f4f4);
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  background-image: url('../../img/site/sub-visual.png');
  transition: background 0.3s ease;
}

.pat-sub-visual__inner {
    max-width: var(--size-page-inner); /* 1760px — 본문 inner와 좌측 라인 정렬*/
    width: 100%;
    box-sizing: border-box;
    margin: 0 auto;
    padding: 0 var(--size-header-gutter); /* 80 / 24 / 20 (토큰이 반응형 처리)*/
    display: flex;
  }

/* ── 반응형 높이 유연화 ──*/

@media (max-width: 1024px) {

.pat-sub-visual {
    min-height: 320px
}
  }

@media (max-width: 768px) {

.pat-sub-visual {
    min-height: 240px
}
  }

/* ── 페이지별 배경 이미지/컬러 테마 커스텀 클래스 예시 ──*/

/* 사용 예: pageHeader: { bgClass: 'pat-sub-visual--mypage' } 또는 HTML 서브 클래스*/

.pat-sub-visual--mypage {
    background-color: #eef4ff;
    /* background-image: url('../../img/site/sub-visual-mypage.jpg');*/
  }

.pat-sub-visual--intro {
    background-color: #f0f7ff;
    /* background-image: url('../../img/site/sub-visual-intro.jpg');*/
  }

.pat-sub-visual--board {
    background-color: #f8f9fa;
    /* background-image: url('../../img/site/sub-visual-board.jpg');*/
  }

/**
 * _page-layout.scss
 * Patterns 레이어 - 공통 페이지 레이아웃 구조 (.pat-page)
 * Figma: 서브페이지 공통 레이아웃 기준
 *
 * [inner 사이즈]
 *   pat-page__inner           : 1760px (--size-page-inner, 서브 비주얼 inner와 동일 폭·거터)
 *   pat-page__inner--md       : 1160px (작성/로그인/회원가입 등 콘텐츠 적은 페이지)
 *   pat-page__inner--sm       : 800px  (소형 폼 등)
 *
 * [구조]
 *   .pat-page
 *     .pat-page__header       ← 페이지 타이틀 + 브레드크럼 영역
 *     .pat-page__inner        ← 콘텐츠 inner 래퍼
 *       .pat-page__side       ← 사이드메뉴 (선택적)
 *       .pat-page__content    ← 메인 콘텐츠
 *
 * [중첩]
 *   레이아웃(default/sidebar)의 inner 안에 페이지 HTML이 inner를 한 번 더 감싸는 구조라
 *   안쪽 inner는 여백을 없애고 폭(--md/--sm)만 제어한다 → 비주얼 타이틀과 콘텐츠 좌측 라인 일치
 */

.pat-page {
  padding-top: var(--size-header-height);
}

/* GNB 높이만큼 상단 여백*/

/* ── 페이지 헤더 (브레드크럼 + 타이틀) ────────────────*/

.pat-page__header {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 4.6875rem 0 3.75rem;
  }

/* 상단 패딩 75px(4.6875rem) 확보 및 하단 60px 배치 (GNB 이격 완비)*/

/* 모바일/태블릿 헤더 패딩 완화 (지능형 반응형)*/

@media (max-width: 1024px) {

.pat-page__header {
      padding: 3.125rem 0 2.5rem /* 태블릿 이하는 상단 50px, 하단 40px로 부드럽게 감쇄*/
  }
    }

@media (max-width: 768px) {

.pat-page__header {
      padding: 2.5rem 0 1.5rem /* 모바일 이하는 상단 40px, 하단 24px로 컴팩트하게 수축*/
  }
    }

/* ── Inner 래퍼 ────────────────────────────────────────*/

.pat-page__inner {
    max-width: var(--size-page-inner); /* 1760px — 서브 비주얼 inner와 동일*/
    margin: 0 auto;
    padding: 4.6875rem var(--size-header-gutter); /* 상하 75px / 좌우 80·24·20 (토큰이 반응형 처리)*/
    display: flex;
    gap: 2.5rem;
  }

/* 40px (사이드 + 콘텐츠 간격)*/

/* 태블릿/모바일 이하에서 1열 수직 배치 흐름으로 유연화 및 상하 여백 축소 (좌우는 거터 토큰)*/

@media (max-width: 1024px) {

.pat-page__inner {
      flex-direction: column;
      gap: 1.5rem;
      padding-top: 3.125rem;    /* 50px*/
      padding-bottom: 3.125rem
  }
    }

/* 레이아웃 inner 안에 중첩된 페이지 inner: 여백 이중 적용 방지*/

.pat-page__inner .pat-page__inner {
      padding: 0;
    }

/* 기본값과 동일 (하위 호환용 별칭)*/

.pat-page__inner--xl {
      max-width: var(--size-page-inner);
    }

/* 1160px inner (폼, 작성 페이지)*/

.pat-page__inner--md {
      max-width: var(--size-inner-md);
    }

/* 800px inner (소형 폼)*/

.pat-page__inner--sm {
      max-width: var(--size-inner-sm);
    }

/* 사이드메뉴 없는 단일 콘텐츠*/

.pat-page__inner--full {
      flex-direction: column;
    }

/* 콘텐츠가 좁아도 이너를 부모 폭까지 채움(목록/작성 등 폭 통일용)*/

/* 기본 pat-page__inner는 flex+margin auto라 콘텐츠 폭으로 수축하는데 이를 방지*/

.pat-page__inner--fill {
      width: 100%;
    }

/* ── 전체 폭 콘텐츠 슬롯 (full-layout) ─────────────────*/

/* inner 없이 .pat-section 을 순서대로 쌓는다 — 폭 제한은 각 섹션의 __inner 가 담당*/

.pat-page__full {
    display: flex;
    flex-direction: column;
  }

/* ── 사이드 네비게이션 영역 ────────────────────────────*/

.pat-page__side {
    flex-shrink: 0;
    width: 260px;
    padding-top: 0;
  }

/* 사이드 영역 모바일 전체 너비화*/

@media (max-width: 1024px) {

.pat-page__side {
      width: 100%
  }
    }

/* ── 메인 콘텐츠 영역 ─────────────────────────────────*/

.pat-page__content {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 1.5rem; /* 24px*/
  }

/* ── 콘텐츠 섹션 ──────────────────────────────────────*/

.pat-page__section {
    display: flex;
    flex-direction: column;
    gap: 1rem;
  }

/* 콘텐츠 블록 간 넓은 간격 (Figma 프로그램 안내: 탭 ↔ 본문 80 / 구조도 ↔ 필라 60 / 필라 제목 ↔ 내용 40)*/

/* --md: 섹션 소제목 ↔ 표처럼 한 덩어리 안의 간격*/

.pat-page__section--md {
      gap: var(--spacing-24);
    }

.pat-page__section--lg {
      gap: var(--spacing-40);
    }

.pat-page__section--xl {
      gap: 60px; /* spacing 스케일에 60 없음*/
    }

.pat-page__section--2xl {
      gap: var(--spacing-80);
    }

/* display: flex 가 [hidden] 을 이기므로 탭 패널 숨김용으로 명시*/

.pat-page__section[hidden] {
      display: none;
    }

.pat-page__section-title {
    font-family: var(--font-family-base);
    font-size: var(--font-size-h3); /* 30px*/
    font-weight: var(--font-weight-bold);
    color: var(--color-text-primary);
    letter-spacing: var(--letter-spacing-tight);
  }

/* ── 액션 바 (버튼 그룹) ──────────────────────────────*/

.pat-page__actions {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem; /* 8px*/
    padding: 2rem 0;
  }

.pat-page__actions--right {
    justify-content: flex-end;
  }

.pat-page__actions--left {
    justify-content: flex-start;
  }

/* ── 검색 바 영역 ──────────────────────────────────────*/

.pat-search-bar {
  display: flex;
  align-items: center;
  gap: 0.5rem; /* 8px*/
  padding: 0.5rem 0;
}

/* 데스크톱 기본 규격 제어 (인라인 스타일 제거 대안)*/

.pat-search-bar .mod-select {
    width: 160px;
    height: 55px;
  }

.pat-search-bar .mod-search {
    width: 400px;
    height: 55px;
    min-width: 0;
  }

.pat-search-bar{

  @media screen and (max-width: 767px) {
    display: grid; /* Grid-system 활용으로 flex: 1 높이 상실 및 찌그러짐 현상 원천 봉쇄*/
    grid-template-columns: 1fr; /* 1열 세로 적층*/
    gap: 0.5rem;
    width: 100%;

    .mod-select,
    .mod-search {
      width: 100% !important;
      max-width: none !important;
      min-width: 0 !important;
      height: 48px !important; /* 격자 내에서 오차 없이 정확한 48px 고정 세로폭 점유*/
    }
  }
}

/* ── 리스트 컨트롤 바 (필터 + 검색 + 총 건수) ─────────*/

.pat-list-control {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.75rem 0;

  @media screen and (max-width: 767px) {
    flex-direction: column;
    align-items: stretch;
    gap: 0.75rem;
  }
}

.pat-list-control__left {
    display: flex;
    align-items: center;
    gap: 0.5rem;
  }

.pat-list-control__right {
    display: flex;
    align-items: center;
    gap: 0.5rem;
  }

.pat-list-control__total {
    font-family: var(--font-family-pretendard);
    font-size: var(--font-body-small-medium-size, 15px);
    font-weight: var(--font-body-small-regular-weight, 400);
    color: var(--text-muted, #929aaa);
  }

.pat-list-control__total strong {
      font-weight: var(--font-body-small-medium-weight, 500);
      color: var(--text-primary, #396cfa);
    }

/* ── 페이지네이션 영역 ──────────────────────────────────*/

.pat-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.8125rem; /* 29px*/
  padding: 1.5rem 0;
}

.pat-pagination__nav {
    display: flex;
    align-items: center;
    gap: 0.4375rem; /* 7px*/
  }

.pat-pagination__pages {
    display: flex;
    align-items: center;
    gap: 2rem; /* 32px*/
  }

.pat-pagination__btn {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: opacity 0.2s ease;
  }

.pat-pagination__btn:hover:not(:disabled) {
      opacity: 0.7;
    }

.pat-pagination__btn:disabled {
      opacity: 0.3;
      cursor: not-allowed;
    }

.pat-pagination__btn img,
    .pat-pagination__btn svg {
      width: 40px;
      height: 40px;
    }

.pat-pagination__number {
    font-family: var(--font-family-base);
    font-size: var(--font-size-sm); /* 16px*/
    font-weight: var(--font-weight-medium);
    color: var(--color-text-body);
    cursor: pointer;
    letter-spacing: var(--letter-spacing-body);
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    transition: background-color 0.15s ease, color 0.15s ease;
  }

.pat-pagination__number.is-active {
      background-color: var(--color-navy);
      color: #ffffff;
      font-weight: var(--font-weight-bold);
    }

.pat-pagination__number:hover:not(.is-active) {
      background-color: var(--color-gray-100);
    }

/* ── 넓은 섹션 간격 반응형 축소 ──*/

@media screen and (max-width: 1279px) {
  .pat-page__section--xl {
    gap: var(--spacing-48);
  }

  .pat-page__section--2xl {
    gap: var(--spacing-48);
  }
  }

@media screen and (max-width: 767px) {
  .pat-page__section--md {
    gap: var(--spacing-16);
  }

  .pat-page__section--lg {
    gap: var(--spacing-24);
  }

  .pat-page__section--xl,
  .pat-page__section--2xl {
    gap: var(--spacing-32);
  }
  }

/**
 * _section.scss
 * Patterns 레이어 - 전체 폭 콘텐츠 섹션 (.pat-section)
 * Figma: 호라이즌 유럽 소개 2071:5858 기준 — 소개형 페이지(full-layout)에서 섹션을 순서대로 쌓는다
 *
 * 구조:
 *   .pat-section                      ← 화면 전체 폭, 배경이 넘치는 부분은 섹션 경계에서 잘림
 *     .pat-section__bg (aria-hidden)  ← 장식 배경 (가로 중앙 · 하단 정렬, 화면보다 넓어도 됨)
 *       .pat-section__bg-img
 *     .pat-section__inner             ← 폭 제한 (--size-page-inner 1760 + 헤더 거터 → 서브 비주얼 타이틀과 좌측 라인 일치)
 *
 * 100vw 로 inner 밖에 배경을 빼내지 않는 이유:
 *   Windows 에서 100vw 는 세로 스크롤바 폭까지 포함해 가로 스크롤이 생기고, 막으려면 전역 overflow-x 를 건드려야 한다.
 *   섹션 자체가 전체 폭이면 배경을 섹션 안에서만 잘라낼 수 있다.
 */

.pat-section {
  position: relative;
  overflow: clip; /* hidden 과 달리 스크롤 컨테이너를 만들지 않음 (내부 sticky 등 영향 없음)*/
  padding: 120px 0; /* Figma 섹션 상하 여백*/
  background-color: var(--background-default);
}

/* 장식 배경: 이미지 하단의 물결이 섹션 아래에 붙도록 가로 중앙 + 하단 기준*/

.pat-section__bg {
    position: absolute;
    left: 50%;
    bottom: 0;
    z-index: 0;
    width: max(1962px, 100%); /* Figma 1962px (1920 화면보다 넓게), 더 넓은 화면은 폭을 채움*/
    transform: translateX(-50%);
    pointer-events: none;
  }

/* 아래쪽을 서서히 투명하게 — 섹션 경계에서 물결이 일직선으로 잘려 보이지 않도록 (다음 섹션이 이어지는 경우)*/

/* 블러는 이미지 전체가 번지고 경계가 남아 마스크 그라데이션을 씀*/

.pat-section__bg--fade {
    -webkit-mask-image: linear-gradient(to bottom, #000 55%, transparent 100%);
            mask-image: linear-gradient(to bottom, #000 55%, transparent 100%);
  }

.pat-section__bg-img {
    display: block;
    width: 100%;
    height: auto;
    opacity: 0.4; /* Figma 레이어 투명도 40%*/
  }

/* 앞 섹션에 바로 이어지는 섹션 (호라이즌 유럽 소개 추진체계) — 상하 여백이 겹쳐 두 배로 벌어지지 않도록 위 여백 제거*/

.pat-section--flush-top {
    padding-top: 0;
  }

.pat-section__inner {
    position: relative;
    z-index: 1;
    max-width: var(--size-page-inner);
    margin: 0 auto;
    padding: 0 var(--size-header-gutter); /* 80 / 24 / 20 (토큰이 반응형 처리)*/
  }

/* ── 반응형: 상하 여백 축소 ──*/

@media screen and (max-width: 1279px) {
  .pat-section {
    padding: var(--spacing-80) 0;
  }

  .pat-section--flush-top {
    padding-top: 0;
  }

  .pat-section__bg {
    width: max(1200px, 100%); /* 좁은 화면에서 물결이 너무 작아지지 않도록 최소 폭 유지*/
  }
  }

@media screen and (max-width: 767px) {
  .pat-section {
    padding: var(--spacing-48) 0;
  }

  .pat-section--flush-top {
    padding-top: 0;
  }

  .pat-section__bg {
    width: max(800px, 100%);
  }
  }

/**
 * _layout.scss
 * Patterns 레이어 - 전체 웹 애플리케이션 프레임워크/앱 레이아웃 (.pat-layout)
 * GNB, Contents, Footer를 감싸는 바깥쪽 최상위 구조 레이아웃
 */

.pat-layout {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  background-color: var(--color-bg);
  color: var(--color-text-primary);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ── SPA 중앙 컨텐츠 주입 컨테이너 ───────────────────────*/

.pat-layout__main {
    flex-grow: 1;
    transition: all 0.3s ease;
    padding-top: var(--size-header-total); /* 유틸바(40) + GNB(80) = 120px*/

    @media screen and (max-width: 767px) {
      padding-top: var(--size-header-height); /* 모바일: 유틸바 미노출 → 80px*/
  }
  }

/**
 * _search-filter.scss
 * Patterns 레이어 - 통합 검색 및 필터링 패턴 (.pat-search-filter)
 * 
 * 단일 키워드 검색(Row 1)부터 상세 다중 옵션 필터링(Row 2~3), 
 * 필터 칩 태그 및 하단 액션 버튼(Row 4)까지 지원하는 확장형 검색 바 컴포넌트입니다.
 */

.pat-search-filter {
  background-color: var(--color-surface);
  padding: 1.25rem; /* 20px (지역 수치 캡슐화)*/
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border-default);
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

/* 1. 기본 검색 행 (Row 1)*/

.pat-search-filter__primary-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
  }

.pat-search-filter__input {
    flex: 1;
    min-width: 220px;
  }

.pat-search-filter__btn-group {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
  }

.pat-search-filter__arrow-icon {
    width: var(--size-icon-sm);
    height: var(--size-icon-sm);
    transition: transform 0.2s ease;
  }

.js-toggle-detail[aria-expanded="true"] .pat-search-filter__arrow-icon {
      transform: rotate(180deg);
    }

/* 2. 상세 옵션 패널 (Row 2~3)*/

.pat-search-filter__detail-panel {
    padding-top: 1rem;
    border-top: 1px solid var(--color-border-default);
    display: flex;
    flex-direction: column;
    gap: 1rem;
    transition: all 0.25s ease-in-out;
  }

/* 접힘(Hidden) 상태 캡슐화*/

.pat-search-filter__detail-panel.is-collapsed {
      display: none;
    }

.pat-search-filter__grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 1rem;
    align-items: end;

    @media screen and (max-width: 1279px) {
      grid-template-columns: 1fr;
  }
  }

.pat-search-filter__col {
    grid-column: span 3; /* 기본 3컬럼 (4개 분할)*/
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
  }

.pat-search-filter__col--period {
      grid-column: span 6; /* 기간 선택은 6컬럼 차지*/

      @media screen and (max-width: 1279px) {
        grid-column: span 1;
  }
    }

.pat-search-filter__col{

    @media screen and (max-width: 1279px) {
      grid-column: span 12;
  }
}

.pat-search-filter__label {
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
  }

.pat-search-filter__period-wrapper {
    display: flex;
    align-items: center;
    gap: 0.5rem;

    @media screen and (max-width: 767px) {
      flex-direction: column;
      align-items: stretch;
  }
  }

/* 퀵 기간 선택 칩 버튼 그룹 (높이 44px 표준 인풋과 100% 동일)*/

.pat-search-filter__quick-period {
    display: flex;
    align-items: center;
    height: var(--size-input-height);
    border: 1px solid var(--color-border-default);
    border-radius: var(--radius-md);
    overflow: hidden;
    flex-shrink: 0;
  }

.pat-search-filter__quick-period button {
      flex: 1;         /* 반응형 수직/가로 확장 시 남는 잔여 공간을 균등 분할 채움*/
      height: 100%;
      min-width: 58px; /* 최소 너비 보장*/
      display: inline-flex;
      align-items: center;
      justify-content: center;
      padding: 0 0.75rem;
      font-size: var(--font-size-xs);
      font-weight: var(--font-weight-medium);
      color: var(--color-text-secondary);
      background-color: var(--color-surface);
      border: none;
      border-left: 1px solid var(--color-border-default);
      cursor: pointer;
      transition: background-color 0.15s ease, color 0.15s ease;
    }

.pat-search-filter__quick-period button:first-child {
        border-left: none;
      }

.pat-search-filter__quick-period button:hover {
        background-color: var(--color-gray-50);
      }

.pat-search-filter__quick-period button.is-active {
        background-color: var(--color-primary);
        color: var(--color-white);
      }

/* 3. 필터 칩 태그 & 실행 버튼 행 (Row 4)*/

.pat-search-filter__action-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--color-border-default);
  }

.pat-search-filter__tags {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
  }

.pat-search-filter__footer-btns {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-left: auto;
  }

/* 필터 태그 칩 독립 모듈 (.mod-filter-chip)*/

.mod-filter-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.25rem 0.75rem;
  background-color: var(--background-subtle, #f8f9fb);
  border: 1px solid var(--chip-secondary-border, #cbd1dc);
  border-radius: var(--radius-full);
  font-family: var(--font-family-pretendard);
  font-size: var(--font-body-medium-medium-size, 16px);
  color: var(--text-default, #4a5667);
}

.mod-filter-chip__remove {
    background: none;
    border: none;
    cursor: pointer;
    color: var(--text-muted, #929aaa);
    font-size: var(--font-body-xxsmall-regular-size, 13px);
  }

.mod-filter-chip__remove:hover {
      color: var(--color-error);
    }

/**
 * _board.scss
 * 게시판 종합 패턴 (테이블 목록형, 행 카드 리스트형, 갤러리 앨범형)
 */

/* 1. 텍스트 말줄임 (Line Clamp) 공통 유틸리티*/

.el-text-clamp-1 {
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
  word-break: break-all;
}

.el-text-clamp-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
  word-break: break-all;
  line-height: 1.5;
  max-height: 3em;
}

/* 2. 테이블 목록형 게시판 패턴 (.pat-board-table)*/

.pat-board-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
}

.pat-board-table table {
    width: 100%;
    table-layout: fixed;
    /* Figma border/strong-darker (#141A24) — 상단 헤더 라인*/
    border-top: 2px solid var(--border-strong-darker, #141a24);
  }

/* 표 안 뱃지(카테고리·온/오프라인·답변상태)는 본문보다 한 단계 작게 — 기본 .mod-badge 15px*/

.pat-board-table .mod-badge {
    font-size: var(--font-body-xsmall-regular-size, 0.875rem); /* 14px*/
  }

.pat-board-table th {
    /* Figma background/subtle (#F8F9FB) — 헤더 배경*/
    background-color: var(--color-bg-subtle, #f8f9fb);
    /* Figma text/bolder (#090C10) — 헤더 텍스트*/
    color: var(--text-bolder, #090c10);
    font-weight: var(--font-weight-semibold);
    /* 테이블 기본 폰트 17px (Figma body/large)*/
    font-size: var(--font-size-md, 17px);
    /* Figma Header Cell 높이 ≈ 67px (상하 패딩 20px)*/
    padding: 20px 16px;
    text-align: center;
    /* Figma border/default (#DCE0EA) — 행 구분선*/
    border-bottom: 1px solid var(--border-default, #dce0ea);
    white-space: nowrap;
  }

.pat-board-table td {
    /* Figma Table Cell 높이 ≈ 67px (상하 패딩 20px)*/
    padding: 20px 16px;
    /* 테이블 기본 폰트 17px (Figma body/large)*/
    font-size: var(--font-size-md, 17px);
    /* Figma text/default (#4A5667) — 본문 텍스트*/
    color: var(--text-default, #4a5667);
    border-bottom: 1px solid var(--border-default, #dce0ea);
    vertical-align: middle;
    transition: background-color 0.15s ease;
  }

/* 가운데 정렬 데이터 셀(순번·카테고리·작성자·등록일·조회수·첨부)은 줄바꿈 방지*/

/* → 17px 기준에서도 1줄 유지하여 행 높이 67px 정렬 보존 (제목 셀은 제외)*/

/* ※ 날짜(2026-09-16)는 keep-all이어도 하이픈에서 끊기므로 전역 nowrap 유지.*/

/*   기관명처럼 길이가 가변인 칸만 셀 클래스로 줄바꿈 허용 (예: __org, __place)*/

.pat-board-table td.text-center {
    white-space: nowrap;
  }

.pat-board-table tr:hover td {
    background-color: rgba(var(--color-primary-rgb), 0.03);
  }

/* 상단 고정 게시글 행 (.is-pinned)*/

/* 좌측 보더 대신 행 전체 틴트 배경색으로 강조 표현*/

.pat-board-table tr.is-pinned td {
      background-color: rgba(var(--color-primary-rgb), 0.05);
      font-weight: var(--font-weight-medium);
    }

.pat-board-table tr.is-pinned:hover td {
      background-color: rgba(var(--color-primary-rgb), 0.09);
    }

/* 1줄 말줄임 및 문장 끝 댓글 수 100% 밀착 제목 래퍼 (.pat-board-table__title-box)*/

.pat-board-table__title-box {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    vertical-align: middle;
  }

/* 게시판 제목 링크 (1줄 말줄임 처리)*/

.pat-board-table__title {
    color: var(--color-text-primary);
    font-weight: var(--font-weight-semibold);
    text-decoration: none;
    transition: color 0.15s ease;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: inline-block;
    max-width: 100%;
    vertical-align: bottom;
  }

.pat-board-table__title:hover {
      color: var(--color-primary);
      text-decoration: underline;
    }

/* 텍스트 끝에 찰떡처럼 부착되는 댓글 수 및 인디케이터*/

.pat-board-table__comment {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    margin-left: 4px;
    color: var(--color-primary);
    font-size: var(--font-size-xxs);
    font-weight: var(--font-weight-bold);
    flex-shrink: 0;
    white-space: nowrap;
  }

/* ── 제목 옆 NEW 마커 ────────────────────────────────────*/

.pat-board-table__new {
    margin-left: 6px;
    font-size: var(--font-size-xxs, 12px);
    font-weight: var(--font-weight-bold, 700);
    color: var(--color-error, #eb2a29);
    vertical-align: middle;
  }

/* ── 첨부파일 셀 (아이콘 + 개수 → 드롭다운 트리거) ────────*/

.pat-board-table__attach {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }

.pat-board-table__attach-trigger {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: none;
    border: none;
    cursor: pointer;
    color: var(--color-text-muted, #888888);
    font-size: var(--font-size-xxs, 13px);
    transition: color 0.15s ease;
  }

.pat-board-table__attach-trigger svg, .pat-board-table__attach-trigger i {
      width: 18px;
      height: 18px;
    }

.pat-board-table__attach-trigger:hover {
      color: var(--element-primary, #396cfa);
    }

/* 첨부 드롭다운은 .mod-dropdown 모듈 재사용 (셀 기준 우측 정렬 위치만 보정)*/

.pat-board-table__attach .mod-dropdown {
    top: calc(50% + 18px);
    right: 0;
    left: auto;
    transform-origin: top right;
    min-width: 200px;
  }

/* ── 모바일 반응형 자동 카드 변환 (Responsive Card Layout: ~768px) ──*/

@media (max-width: 768px) {

.pat-board-table {

    /* [상단 1줄]: 순번(td1) + 카테고리(td2) -> 등록일(td5, 우측 배치)*/

    /* [중앙 2줄]: 제목(td3) 전체 100% 독립 행*/

    /* [하단 3줄]: 상태(td4, 좌측) <---> 기능버튼(td6, 우측)*/
}
    .pat-board-table table, .pat-board-table thead, .pat-board-table tbody, .pat-board-table th, .pat-board-table td, .pat-board-table tr {
      display: block;
      width: 100% !important;
    }

    .pat-board-table table {
      border-top: none;
    }

    .pat-board-table thead {
      display: none; /* 표 헤더 숨김*/
    }

    .pat-board-table tr {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      background-color: var(--color-white);
      border: 1px solid var(--color-border-default);
      border-radius: var(--radius-xl);
      margin-bottom: 12px;
      padding: 16px;
      position: relative;
      box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
    }

      /* 공지 고정 행: 좌측 보더 없이 틴트 배경으로만 강조 (데스크탑과 동일 정책)*/
      .pat-board-table tr.is-pinned {
        background-color: rgba(var(--color-primary-rgb), 0.05);
      }

    .pat-board-table td {
      padding: 0;
      border-bottom: none;
      text-align: left !important;
    }
    .pat-board-table td:nth-child(1),
    .pat-board-table td:nth-child(2) {
      display: inline-flex;
      width: auto !important;
      margin-right: 6px;
    }

    .pat-board-table td:nth-child(5) {
      display: inline-flex;
      width: auto !important;
      margin-left: auto; /* 맨 우측 밀착*/
      font-size: var(--font-size-xxs);
      color: var(--color-text-muted);
    }
    .pat-board-table td:nth-child(3) {
      width: 100% !important;
      margin: 10px 0 12px 0;
    }
    .pat-board-table td:nth-child(4) {
      display: inline-flex;
      width: auto !important;
      align-items: center;
    }

    .pat-board-table td:nth-child(6) {
      display: inline-flex;
      width: auto !important;
      margin-left: auto; /* 맨 우측 밀착*/
    }
  }

/* ── (변형) 메타 좌측 그룹형 (.pat-board-table--meta) ──────*/

/* 소식지 등 7컬럼(순번/카테고리/제목/작성자/등록일/조회수/첨부) 게시판:*/

/* 모바일에서 작성자·등록일·조회수를 좌측에 붙여서 한 줄로 그룹 노출*/

@media (max-width: 768px) {

.pat-board-table--meta {
      /* 작성자(4)·등록일(5)·조회수(6): 좌측 정렬 + 붙여서*/

      /* 첨부(7): 있을 때만 우측 밀착, 비어있으면 자리 차지 안 함*/
  }
      .pat-board-table--meta td:nth-child(4),
      .pat-board-table--meta td:nth-child(5),
      .pat-board-table--meta td:nth-child(6) {
        display: inline-flex;
        align-items: center;
        width: auto !important;
        margin: 0 10px 0 0 !important;
        font-size: var(--font-size-xxs);
        color: var(--color-text-muted);
      }
      .pat-board-table--meta td:nth-child(7) {
        display: inline-flex;
        width: auto !important;
        margin-left: auto !important;
      }

        .pat-board-table--meta td:nth-child(7):empty {
          display: none;
        }
    }

/* ── (변형) 메타 좌측 그룹형 7컬럼 폭 (.pat-board-table--meta) — 적용 #/resources/newsletter*/

/* 순번 / 카테고리 / 제목 / 작성자 / 등록일 / 조회수 / 첨부 (HTML <col style> 인라인에서 이관 — C5)*/

.pat-board-table--meta col:nth-child(1) { width: 80px; }

.pat-board-table--meta col:nth-child(2) { width: 140px; }

.pat-board-table--meta col:nth-child(3) { width: auto; }

.pat-board-table--meta col:nth-child(4) { width: 110px; }

.pat-board-table--meta col:nth-child(5) { width: 130px; }

/* 등록일: 17px 날짜(96px) + 좌우 패딩 32*/

.pat-board-table--meta col:nth-child(6) { width: 90px; }

.pat-board-table--meta col:nth-child(7) { width: 110px; }

/* ── (변형) 행사정보 컬럼형 (.pat-board-table--event) ──────────*/

/* 8컬럼: 순번(1)/구분(2)/제목(3)/행사정보(4)/작성자(5)/등록일(6)/조회수(7)/첨부(8)*/

/* 행사정보 셀(__event)에는 .mod-event-info 사용. 반응형 규칙은 기본 카드 변환(nth-child) 위에 덮어씀*/

/* 8컬럼 폭 (HTML <col style> 인라인에서 이관 — C5)*/

.pat-board-table--event col:nth-child(1) { width: 80px; }

.pat-board-table--event col:nth-child(2) { width: 120px; }

.pat-board-table--event col:nth-child(3) { width: auto; }

.pat-board-table--event col:nth-child(4) { width: 240px; }

/* 행사정보: "일시 2026-09-18 (금) …" 한 줄(≈201px) + 좌 20 / 우 16*/

.pat-board-table--event col:nth-child(5) { width: 100px; }

.pat-board-table--event col:nth-child(6) { width: 130px; }

/* 등록일: 17px 날짜(96px) + 좌우 패딩 32*/

.pat-board-table--event col:nth-child(7) { width: 80px; }

.pat-board-table--event col:nth-child(8) { width: 100px; }

/* 행사정보 셀: 좌측 정렬 — 행마다 아이콘 시작점이 세로로 일치 (.text-center 무시)*/

.pat-board-table--event .pat-board-table__event {
    text-align: left;
    padding-left: var(--spacing-20, 20px);
    padding-top: var(--spacing-12, 12px);
    padding-bottom: var(--spacing-12, 12px);
  }

/* 태블릿(프로젝트 tablet 믹스인 구간 ~1279px, 사이드바 포함 콘텐츠 폭 협소): 작성자(5)·조회수(7) 컬럼 숨김*/

@media (min-width: 769px) and (max-width: 1279px) {
  .pat-board-table--event col.is-hide-tablet,
  .pat-board-table--event th:nth-child(5),
  .pat-board-table--event td:nth-child(5),
  .pat-board-table--event th:nth-child(7),
  .pat-board-table--event td:nth-child(7) {
    display: none;
  }
}

/* 모바일 카드: [순번·구분 ··· 등록일] / [제목] / [행사정보 한 줄] / [작성자·조회수 ··· 첨부]*/

@media (max-width: 768px) {
    .pat-board-table.pat-board-table--event td {
      width: auto !important;
      margin: 0 !important;
    }

    .pat-board-table.pat-board-table--event td:nth-child(1) { order: 1; margin-right: 6px !important; }
    .pat-board-table.pat-board-table--event td:nth-child(2) { order: 2; }

    /* 등록일 우측 상단*/
    .pat-board-table.pat-board-table--event td:nth-child(6) {
      order: 3;
      display: inline-flex;
      margin-left: auto !important;
      font-size: var(--font-size-xxs);
      color: var(--text-muted, #929aaa);
    }

    .pat-board-table.pat-board-table--event td:nth-child(3) {
      order: 4;
      width: 100% !important;
      margin: 10px 0 8px !important;
    }

    /* 행사정보: 한 줄(.mod-event-info--inline 동일 배치), 없으면 숨김*/
    .pat-board-table.pat-board-table--event td:nth-child(4) {
      order: 5;
      display: block;
      width: 100% !important;
      margin-bottom: 10px !important;
      padding: 0;
    }

      .pat-board-table.pat-board-table--event td:nth-child(4).is-empty {
        display: none;
      }

      .pat-board-table.pat-board-table--event td:nth-child(4) .mod-event-info {
        display: flex;
        flex-direction: row;
        align-items: center;
        gap: var(--spacing-12, 12px);
        font-size: var(--font-body-xsmall-regular-size, 0.875rem);
      }

      .pat-board-table.pat-board-table--event td:nth-child(4) .mod-event-info__item {
        flex-shrink: 0;
      }

      .pat-board-table.pat-board-table--event td:nth-child(4) .mod-event-info__item--place {
        flex-shrink: 1;
        position: relative;
        padding-left: var(--spacing-12, 12px);
      }

        .pat-board-table.pat-board-table--event td:nth-child(4) .mod-event-info__item--place::before {
          content: '';
          position: absolute;
          left: 0;
          top: 50%;
          width: 1px;
          height: 10px;
          transform: translateY(-50%);
          background-color: var(--border-default-strong, #cbd1dc);
        }

    /* 작성자·조회수: 좌측 그룹*/
    .pat-board-table.pat-board-table--event td:nth-child(5),
    .pat-board-table.pat-board-table--event td:nth-child(7) {
      display: inline-flex;
      align-items: center;
      font-size: var(--font-size-xxs);
      color: var(--text-muted, #929aaa);
    }

    .pat-board-table.pat-board-table--event td:nth-child(5) { order: 6; margin-right: 10px !important; }

    .pat-board-table.pat-board-table--event td:nth-child(7) {
      order: 7;
    }

      .pat-board-table.pat-board-table--event td:nth-child(7)::before {
        content: '조회 ';
        white-space: pre;
      }

    /* 첨부: 우측 하단, 비어있으면 자리 차지 안 함*/
    .pat-board-table.pat-board-table--event td:nth-child(8) {
      order: 8;
      display: inline-flex;
      margin-left: auto !important;
    }

      .pat-board-table.pat-board-table--event td:nth-child(8):empty {
        display: none;
      }
}

/* ── (변형) 행사일정 컬럼형 (.pat-board-table--schedule) ───────*/

/* 6컬럼: 순번(1)/제목(2)/주관기관(3)/행사구분(4)/행사일정(5)/장소·진행방식(6) — 적용 #/notices-events/events*/

/* 행사일정 셀(__schedule): .mod-event-info--dual — 온라인 = 국내/해외, 오프라인 = 국내(+ 해외 선택)*/

/* 6컬럼 폭 (HTML <col style> 인라인에서 이관 — C5)*/

.pat-board-table--schedule col:nth-child(1) { width: 80px; }

.pat-board-table--schedule col:nth-child(2) { width: auto; }

.pat-board-table--schedule col:nth-child(3) { width: 170px; }

.pat-board-table--schedule col:nth-child(4) { width: 120px; }

.pat-board-table--schedule col:nth-child(5) { width: 270px; }

.pat-board-table--schedule col:nth-child(6) { width: 180px; }

.pat-board-table--schedule .pat-board-table__schedule {
    text-align: left;
    padding-left: var(--spacing-20, 20px);
    padding-top: var(--spacing-12, 12px);
    padding-bottom: var(--spacing-12, 12px);
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    color: var(--text-default, #4a5667);
    white-space: nowrap;
  }

.pat-board-table--schedule .pat-board-table__place {
    word-break: keep-all;
    overflow-wrap: anywhere;
  }

/* 주관기관: 기관명 길이 가변 → 단어 단위 줄바꿈 (전역 td.text-center nowrap 해제)*/

.pat-board-table--schedule td.pat-board-table__org { /* td 지정: 전역 td.text-center와 같은 명시도 + 뒤 선언으로 우선*/
    white-space: normal;
    word-break: keep-all;
    overflow-wrap: break-word;
  }

/* 태블릿: 주관기관(3) 컬럼 숨김*/

@media (min-width: 769px) and (max-width: 1279px) {
  .pat-board-table--schedule col.is-hide-tablet,
  .pat-board-table--schedule th:nth-child(3),
  .pat-board-table--schedule td:nth-child(3) {
    display: none;
  }
}

/* 모바일 카드: [순번 · 행사구분] / [제목] / [행사일정] / [주관기관 · 장소]*/

@media (max-width: 768px) {
    .pat-board-table.pat-board-table--schedule td {
      width: auto !important;
      margin: 0 !important;
    }

    .pat-board-table.pat-board-table--schedule td:nth-child(1) { order: 1; margin-right: 8px !important; }
    .pat-board-table.pat-board-table--schedule td:nth-child(4) { order: 2; display: inline-flex; }

    .pat-board-table.pat-board-table--schedule td:nth-child(2) {
      order: 3;
      width: 100% !important;
      margin: 10px 0 8px !important;
    }

    .pat-board-table.pat-board-table--schedule td:nth-child(5) {
      order: 4;
      display: block;
      width: 100% !important;
      margin-bottom: 10px !important;
      padding: 0;
      font-size: var(--font-body-xsmall-regular-size, 0.875rem);
    }

    /* 주관기관 · 장소: 하단 보조 정보 한 줄*/
    .pat-board-table.pat-board-table--schedule td:nth-child(3),
    .pat-board-table.pat-board-table--schedule td:nth-child(6) {
      display: inline-flex;
      align-items: center;
      font-size: var(--font-size-xxs);
      color: var(--text-muted, #929aaa);
    }

    .pat-board-table.pat-board-table--schedule td:nth-child(3) { order: 5; }

    .pat-board-table.pat-board-table--schedule td:nth-child(6) {
      order: 6;
      position: relative;
      margin-left: 10px !important;
      padding-left: 10px;
    }

      .pat-board-table.pat-board-table--schedule td:nth-child(6)::before {
        content: '';
        position: absolute;
        left: 0;
        top: 50%;
        width: 1px;
        height: 10px;
        transform: translateY(-50%);
        background-color: var(--border-default-strong, #cbd1dc);
      }
}

/* 3. 행 카드 리스트형 게시판 패턴 (.pat-board-list)*/

.pat-board-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.pat-board-list__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 20px 24px;
    background-color: var(--color-white);
    border: 1px solid var(--color-border-default);
    border-radius: var(--radius-xl);
    transition: all 0.2s ease;
  }

.pat-board-list__item:hover {
      border-color: var(--color-primary);
      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
      transform: translateY(-1px);
    }

.pat-board-list__item.is-pinned {
      background-color: rgba(var(--color-primary-rgb), 0.04);
      border-left: 4px solid var(--color-primary);
    }

.pat-board-list__main {
    flex: 1;
    min-width: 0; /* flex 자식 overflow ellipsis 필수*/
    display: flex;
    flex-direction: column;
    gap: 8px;
  }

.pat-board-list__header {
    display: flex;
    align-items: center;
    gap: 8px;
  }

.pat-board-list__date {
    font-size: var(--font-size-xxs);
    color: var(--color-text-muted);
  }

.pat-board-list__title {
    font-weight: var(--font-weight-bold);
    font-size: var(--font-size-lg);
    color: var(--color-text-primary);
    text-decoration: none;
    transition: color 0.15s ease;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    word-break: break-all;
  }

.pat-board-list__title:hover {
      color: var(--color-primary);
    }

.pat-board-list__desc {
    font-size: var(--font-size-sm);
    color: var(--color-text-body);
    line-height: var(--line-height-relaxed);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    word-break: break-all;
  }

.pat-board-list__meta {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: var(--font-size-xxs);
    color: var(--color-text-muted);
  }

.pat-board-list__actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
  }

/* 4. 갤러리/앨범 카드형 게시판 패턴 (.pat-board-gallery)*/

.pat-board-gallery {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}

@media (max-width: 1024px) {

.pat-board-gallery {
    grid-template-columns: repeat(2, minmax(0, 1fr))
}
  }

@media (max-width: 640px) {

.pat-board-gallery {
    grid-template-columns: repeat(1, minmax(0, 1fr))
}
  }

.pat-board-gallery__item {
    display: flex;
    flex-direction: column;
    background-color: var(--color-white);
    border: 1px solid var(--color-border-default);
    border-radius: var(--radius-2xl);
    overflow: hidden;
    transition: all 0.2s ease;
  }

.pat-board-gallery__item:hover {
      border-color: var(--color-primary);
      box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
      transform: translateY(-2px);
    }

.pat-board-gallery__item.is-pinned {
      border-top: 4px solid var(--color-primary);
    }

.pat-board-gallery__thumb {
    position: relative;
    width: 100%;
    height: 180px;
    background-color: var(--color-gray-50);
    overflow: hidden;
  }

.pat-board-gallery__thumb img {
      width: 100%;
      height: 100%;
      -o-object-fit: cover;
         object-fit: cover;
      transition: transform 0.3s ease;
    }

.pat-board-gallery__thumb:hover img {
      transform: scale(1.05);
    }

.pat-board-gallery__thumb .thumb-badge {
      position: absolute;
      top: 12px;
      left: 12px;
      z-index: 2;
    }

.pat-board-gallery__body {
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    flex: 1;
  }

.pat-board-gallery__foot {
    padding: 16px 20px;
    border-top: 1px solid var(--color-border-default);
    background-color: var(--color-gray-50);
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

.pat-board-gallery__placeholder {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: var(--font-weight-bold);
    font-size: var(--font-size-xl);
    color: var(--color-primary);
    background-color: rgba(var(--color-primary-rgb), 0.08);
  }

.pat-board-gallery__placeholder--success {
      color: var(--color-success);
      background-color: rgba(var(--color-success-rgb), 0.08);
    }

/* 5. 게시판 컨트롤 헤더 패턴 (.pat-board-header)*/

.pat-board-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--color-border-default, #e0e0e0);
}

@media (max-width: 768px) {

.pat-board-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 1rem
}
  }

.pat-board-header__tabs {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.25rem;
    background-color: var(--neutral-bg, #f1f3f5);
    border-radius: var(--radius-xl, 8px);
  }

.pat-board-header__actions {
    display: flex;
    align-items: center;
    gap: 0.75rem;
  }

@media (max-width: 768px) {

.pat-board-header__actions {
      width: 100%;
      justify-content: space-between
  }
    }

/* ── (변형) 국영문 병기 (.pat-board-table--bilingual) ────────────*/

/* th / 제목 셀을 국문(상단) + 영문(하단, 작고 muted) 2줄로 표기. 파트너 검색 전용으로 도입*/

.pat-board-table--bilingual th {
    line-height: 1.3;
  }

.pat-board-table--bilingual .pat-board-table__th-kr {
    display: block;
  }

.pat-board-table--bilingual .pat-board-table__th-en {
    display: block;
    margin-top: 2px;
    font-size: var(--font-body-xxsmall-regular-size, 0.8125rem);
    font-weight: var(--font-weight-regular, 400);
    color: var(--text-muted, #929aaa);
  }

.pat-board-table--bilingual .pat-board-table__title-box--bilingual {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    min-width: 0;
  }

.pat-board-table--bilingual .pat-board-table__title-en {
    max-width: 100%;
    font-size: var(--font-body-xxsmall-regular-size, 0.8125rem);
    color: var(--text-muted, #929aaa);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

/* ── (공통 변형) 가로 스크롤 다컬럼 표 (.pat-board-table--scroll) ─────*/

/* 마크업: .pat-board-table--scroll.js-scroll-table > .pat-board-table__scroll[tabindex=0][role=region] > table*/

/* - 표 최소 폭(--table-min-width) 미만이면 표 영역만 가로 스크롤 + 우측 안내 그림자(.is-scrollable / .is-scroll-end)*/

/* - 그림자 상태 동기화: common-ui-engine.js initScrollTables() (페이지 afterRender에서 호출)*/

/* - __cell-label: 모바일 카드 전용 라벨 (데스크톱 숨김 — th가 역할 대신)*/

/* - ≤768 카드 전환 시 스크롤·그림자 해제. 카드 배치(order)는 각 컬럼 변형(--partner / --call)에서 정의*/

.pat-board-table--scroll {
  --table-min-width: 1140px;
  position: relative;
}

.pat-board-table--scroll .pat-board-table__scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

.pat-board-table--scroll .pat-board-table__scroll:focus-visible {
      outline: 2px solid var(--element-primary, #396cfa);
      outline-offset: 2px;
    }

.pat-board-table--scroll table {
    min-width: var(--table-min-width);
  }

.pat-board-table--scroll .pat-board-table__cell-label {
    display: none;
  }

/* 가로 스크롤 안내 그림자 (스크롤 가능 + 끝이 아닐 때)*/

.pat-board-table--scroll::after {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 28px;
    background: linear-gradient(to left, rgba(9, 12, 16, 0.08), transparent);
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.2s ease;
  }

.pat-board-table--scroll.is-scrollable:not(.is-scroll-end)::after {
    opacity: 1;
  }

@media (max-width: 768px) {
    .pat-board-table.pat-board-table--scroll::after {
      display: none;
    }

    .pat-board-table.pat-board-table--scroll .pat-board-table__scroll {
      overflow: visible;
    }

    .pat-board-table.pat-board-table--scroll table {
      min-width: 0;
    }

    /* 라벨 | 값 한 줄 (모바일 카드)*/
    .pat-board-table.pat-board-table--scroll .pat-board-table__cell-label {
      display: block;
      flex-shrink: 0;
      width: 64px;
      font-size: var(--font-body-xsmall-medium-size, 0.875rem);
      font-weight: var(--font-weight-medium, 500);
      color: var(--text-bold, #262f3c);
    }
}

/* ── (변형) 파트너 검색 9컬럼 (.pat-board-table--partner) — .pat-board-table--scroll 과 함께 사용 ──*/

/* 1 순번 / 2 공고분야 / 3 공고번호 / 4 제목 / 5 연구분야 / 6 기관명 / 7 국가 / 8 등록일 / 9 문의*/

/* ≥1440 기본 폭 · 769~1439 촘촘한 표 · 콘텐츠 폭 < 1140px 이면 표 영역만 가로 스크롤 · ≤768 카드*/

.pat-board-table--partner {
  --table-min-width: 1140px;

}

/* 9컬럼 가독 최소 폭*/

.pat-board-table--partner col:nth-child(1) { width: 70px; }

.pat-board-table--partner col:nth-child(2) { width: 110px; }

.pat-board-table--partner col:nth-child(3) { width: 220px; }

.pat-board-table--partner col:nth-child(5) { width: 160px; }

.pat-board-table--partner col:nth-child(6) { width: 170px; }

.pat-board-table--partner col:nth-child(7) { width: 110px; }

.pat-board-table--partner col:nth-child(8) { width: 130px; }

/* 등록일: 17px 날짜(96px) + 좌우 패딩 32*/

.pat-board-table--partner col:nth-child(9) { width: 130px; }

/* 문의하기 버튼(90px) + 좌우 패딩 32*/

/* 공고번호: 한 줄 유지 (가장 긴 HORIZON-MISS-2026-01 기준 열 폭 확보)*/

.pat-board-table--partner td:nth-child(3) {
    font-size: var(--font-body-small-regular-size, 0.9375rem);
  }

/* 연구분야·기관명·국가: 좌측 정렬, 줄바꿈 허용*/

.pat-board-table--partner .pat-board-table__cell-text {
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    line-height: 1.4;
    word-break: keep-all;
    overflow-wrap: anywhere;
  }

/* 문의하기 버튼 (국영문 2줄) — 모달 연결은 추후 (.js-partner-contact)*/

.pat-board-table__contact {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 40px;
  height: auto;
  padding: 4px 10px;
  text-align: left;
}

.pat-board-table__contact svg {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
  }

.pat-board-table__contact .pat-board-table__contact-text {
    display: flex;
    flex-direction: column;
    line-height: 1.2;
  }

.pat-board-table__contact .pat-board-table__contact-kr {
    font-size: var(--font-body-xxsmall-medium-size, 0.8125rem);
    font-weight: var(--font-weight-medium, 500);
  }

.pat-board-table__contact .pat-board-table__contact-en {
    font-size: 0.6875rem; /* 11px*/
    color: var(--text-muted, #929aaa);
  }

/* 제목 셀 좌우 여백 확대 — 좌측 공고번호 값과 간격 확보 (표 모드 전용)*/

@media (min-width: 769px) {
  .pat-board-table--partner td:nth-child(4) {
    padding-left: var(--spacing-24, 24px);
    padding-right: var(--spacing-24, 24px);
  }
}

/* 촘촘한 표 (769~1439px)*/

@media (min-width: 769px) and (max-width: 1439px) {
    .pat-board-table--partner th,
    .pat-board-table--partner td {
      padding: 14px 10px;
      font-size: var(--font-body-small-regular-size, 0.9375rem);
    }

    .pat-board-table--partner col:nth-child(1) { width: 50px; }
    .pat-board-table--partner col:nth-child(2) { width: 100px; } /* 공고 분야: "Cluster 6"(≈77px) + 좌우 패딩 20*/
    .pat-board-table--partner col:nth-child(3) { width: 180px; }
    .pat-board-table--partner col:nth-child(5) { width: 130px; }
    .pat-board-table--partner col:nth-child(6) { width: 140px; }
    .pat-board-table--partner col:nth-child(7) { width: 90px; }
    .pat-board-table--partner col:nth-child(8) { width: 110px; } /* 등록일: 15px 날짜(85px) + 좌우 패딩 20*/
    .pat-board-table--partner col:nth-child(9) { width: 110px; } /* 문의하기 버튼(90px) + 좌우 패딩 20*/

    .pat-board-table--partner .pat-board-table__cell-text,
    .pat-board-table--partner td:nth-child(3) {
      font-size: var(--font-body-xsmall-regular-size, 0.875rem);
    }
}

/* 모바일 카드: [공고분야 ··· 등록일] / [공고번호] / [제목 국·영] / [연구분야] [기관명] [국가] (텍스트 라벨) / [문의하기 전체폭]*/

@media (max-width: 768px) {
    .pat-board-table.pat-board-table--partner td {
      width: auto !important;
      margin: 0 !important;
    }

    .pat-board-table.pat-board-table--partner td:nth-child(1) { display: none; }
    .pat-board-table.pat-board-table--partner td:nth-child(2) { order: 1; margin-right: 8px !important; }

    /* 공고번호: 배지·등록일 아래 독립 행 (말줄임 없이 전체 노출)*/
    .pat-board-table.pat-board-table--partner td:nth-child(3) {
      order: 3;
      display: block;
      width: 100% !important;
      margin-top: 6px !important;
      font-size: var(--font-size-xxs);
      color: var(--text-muted, #929aaa);
    }

    .pat-board-table.pat-board-table--partner td:nth-child(8) {
      order: 2;
      display: inline-flex;
      margin-left: auto !important;
      font-size: var(--font-size-xxs);
      color: var(--text-muted, #929aaa);
    }

    .pat-board-table.pat-board-table--partner td:nth-child(4) {
      order: 4;
      width: 100% !important;
      margin: 10px 0 !important;
    }

    /* 연구분야·기관명·국가: 라벨 | 값 한 줄씩*/
    .pat-board-table.pat-board-table--partner td:nth-child(5),
    .pat-board-table.pat-board-table--partner td:nth-child(6),
    .pat-board-table.pat-board-table--partner td:nth-child(7) {
      display: flex;
      align-items: baseline;
      gap: var(--spacing-12, 12px);
      width: 100% !important;
      padding: 3px 0;
    }

    .pat-board-table.pat-board-table--partner td:nth-child(5) { order: 5; }
    .pat-board-table.pat-board-table--partner td:nth-child(6) { order: 6; }
    .pat-board-table.pat-board-table--partner td:nth-child(7) { order: 7; }

    .pat-board-table.pat-board-table--partner td:nth-child(9) {
      order: 8;
      width: 100% !important;
      margin-top: 12px !important;
    }

    .pat-board-table.pat-board-table--partner .pat-board-table__contact {
      width: 100%;
      justify-content: center;
      min-height: 44px;
    }

      .pat-board-table.pat-board-table--partner .pat-board-table__contact .pat-board-table__contact-text {
        flex-direction: row;
        align-items: baseline;
        gap: 6px;
      }

      .pat-board-table.pat-board-table--partner .pat-board-table__contact .pat-board-table__contact-kr {
        font-size: var(--font-body-small-medium-size, 0.9375rem);
      }

      .pat-board-table.pat-board-table--partner .pat-board-table__contact .pat-board-table__contact-en {
        font-size: var(--font-body-xxsmall-regular-size, 0.8125rem);
      }
}

/* ── (변형) 공고정보 10컬럼 (.pat-board-table--call) — .pat-board-table--scroll · --bilingual 과 함께 사용 ──*/

/* 1 순번 / 2 공고분야 / 3 목표(국·영) / 4 공고번호 / 5 공고 내용 / 6 접수일자 / 7 마감일 / 8 연구유형 / 9 공고 구분 / 10 진행상태*/

/* ≥1440 기본 · 1280~1439 촘촘한 표 · 769~1279 공고 내용 숨김 · 최소 폭 미만이면 표 영역 가로 스크롤 · ≤768 카드*/

.pat-board-table--call {
  --table-min-width: 1330px;
}

.pat-board-table--call col:nth-child(1) { width: 60px; }

.pat-board-table--call col:nth-child(2) { width: 110px; }

.pat-board-table--call col:nth-child(3) { width: auto; }

.pat-board-table--call col:nth-child(4) { width: 210px; }

.pat-board-table--call col:nth-child(5) { width: auto; }

.pat-board-table--call col:nth-child(6) { width: 120px; }

/* 접수일자: 15px 날짜(82px) + 좌우 패딩 32*/

.pat-board-table--call col:nth-child(7) { width: 120px; }

.pat-board-table--call col:nth-child(8) { width: 90px; }

.pat-board-table--call col:nth-child(9) { width: 90px; }

.pat-board-table--call col:nth-child(10) { width: 100px; }

/* 목표: 국문(링크) + 영문 괄호 — 줄바꿈 허용 (긴 목표명 전체 노출)*/

.pat-board-table--call .pat-board-table__title,
  .pat-board-table--call .pat-board-table__title-en {
    white-space: normal;
    word-break: keep-all;
    overflow-wrap: anywhere;
  }

/* 날짜: 15px*/

.pat-board-table--call td:nth-child(6),
  .pat-board-table--call td:nth-child(7) {
    font-size: var(--font-body-small-regular-size, 0.9375rem);
  }

/* 공고번호: 14px 한 줄 기준, 열 폭 부족 시 하이픈(-) 위치에서 줄바꿈 (셀 넘침 방지)*/

.pat-board-table--call td:nth-child(4) {
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
    white-space: normal;
    overflow-wrap: anywhere;
  }

/* 마감일 2개: 두 줄 (time 블록)*/

.pat-board-table--call .pat-board-table__dates time {
    display: block;
    line-height: 1.4;
  }

/* 공고 내용: 좌측 정렬 2줄 말줄임 (.el-text-clamp-2)*/

.pat-board-table--call .pat-board-table__summary {
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    color: var(--text-default, #4a5667);
    word-break: keep-all;
  }

/* 연구유형 (IA / RIA / CSA)*/

.pat-board-table--call .pat-board-table__type {
    font-weight: var(--font-weight-bold, 700);
    color: var(--text-bold, #262f3c);
  }

/* 표 모드: 목표 셀 좌우 여백*/

@media (min-width: 769px) {
  .pat-board-table--call td:nth-child(3) {
    padding-left: var(--spacing-20, 20px);
    padding-right: var(--spacing-20, 20px);
  }
}

/* 촘촘한 표 (769~1439px)*/

@media (min-width: 769px) and (max-width: 1439px) {
  .pat-board-table--call {
    --table-min-width: 1210px;
  }

    .pat-board-table--call th,
    .pat-board-table--call td {
      padding: 14px 10px;
      font-size: var(--font-body-small-regular-size, 0.9375rem);
    }

    .pat-board-table--call col:nth-child(1) { width: 50px; }
    .pat-board-table--call col:nth-child(2) { width: 90px; }
    .pat-board-table--call col:nth-child(4) { width: 180px; }
    .pat-board-table--call col:nth-child(6) { width: 100px; }
    .pat-board-table--call col:nth-child(7) { width: 110px; }
    .pat-board-table--call col:nth-child(8) { width: 70px; }
    .pat-board-table--call col:nth-child(9) { width: 70px; }
    .pat-board-table--call col:nth-child(10) { width: 90px; }

    .pat-board-table--call td:nth-child(6),
    .pat-board-table--call td:nth-child(7),
    .pat-board-table--call .pat-board-table__summary {
      font-size: var(--font-body-xsmall-regular-size, 0.875rem);
    }

    .pat-board-table--call td:nth-child(4) {
      font-size: var(--font-body-xxsmall-regular-size, 0.8125rem);
    }
}

/* 태블릿 (769~1279px): 공고 내용(5) 숨김 — 상세에서 확인*/

@media (min-width: 769px) and (max-width: 1279px) {
  .pat-board-table--call {
    --table-min-width: 940px;
  }

    .pat-board-table--call col.is-hide-tablet,
    .pat-board-table--call th:nth-child(5),
    .pat-board-table--call td:nth-child(5) {
      display: none;
    }
}

/* 모바일 카드: [진행상태·공고분야 ··· 공고구분] / [목표 국·영] / [공고번호] / [공고 내용 2줄] / [접수일자] [마감일] [연구유형] (텍스트 라벨)*/

@media (max-width: 768px) {
    .pat-board-table.pat-board-table--call td {
      width: auto !important;
      margin: 0 !important;
    }

    .pat-board-table.pat-board-table--call td:nth-child(1) { display: none; }
    .pat-board-table.pat-board-table--call td:nth-child(10) { order: 1; display: inline-flex; margin-right: 6px !important; }
    .pat-board-table.pat-board-table--call td:nth-child(2) { order: 2; display: inline-flex; align-items: center; font-size: var(--font-body-xsmall-medium-size, 0.875rem); font-weight: var(--font-weight-medium, 500); color: var(--text-bold, #262f3c); }

    .pat-board-table.pat-board-table--call td:nth-child(9) {
      order: 3;
      display: inline-flex;
      margin-left: auto !important;
      font-size: var(--font-size-xxs);
      color: var(--text-muted, #929aaa);
    }

    .pat-board-table.pat-board-table--call td:nth-child(3) {
      order: 4;
      width: 100% !important;
      margin: 10px 0 4px !important;
    }

    .pat-board-table.pat-board-table--call td:nth-child(4) {
      order: 5;
      display: block;
      width: 100% !important;
      font-size: var(--font-size-xxs);
      color: var(--text-muted, #929aaa);
    }

    .pat-board-table.pat-board-table--call td:nth-child(5) {
      order: 6;
      display: block;
      width: 100% !important;
      margin: 8px 0 10px !important;
    }

    /* 접수일자·마감일·연구유형: 라벨 | 값 한 줄씩*/
    .pat-board-table.pat-board-table--call td:nth-child(6),
    .pat-board-table.pat-board-table--call td:nth-child(7),
    .pat-board-table.pat-board-table--call td:nth-child(8) {
      display: flex;
      align-items: baseline;
      gap: var(--spacing-12, 12px);
      width: 100% !important;
      padding: 3px 0;
      font-size: var(--font-body-xsmall-regular-size, 0.875rem);
    }

    .pat-board-table.pat-board-table--call td:nth-child(6) { order: 7; }
    .pat-board-table.pat-board-table--call td:nth-child(7) { order: 8; }
    .pat-board-table.pat-board-table--call td:nth-child(8) { order: 9; }

    /* 마감일 2개: 모바일에서는 한 줄 (" / " 구분)*/
    .pat-board-table.pat-board-table--call .pat-board-table__dates {
      display: inline-flex;
      flex-wrap: wrap;
      -moz-column-gap: 6px;
           column-gap: 6px;
    }

      .pat-board-table.pat-board-table--call .pat-board-table__dates time + time::before {
        content: '/ ';
      }
}

/* ── (변형) 질의응답 7컬럼 (.pat-board-table--qna) ────────────────*/

/* 1 순번 / 2 문의 구분 / 3 제목(+NEW, 비공개 자물쇠) / 4 작성자 / 5 등록일 / 6 답변상태(배지) / 7 공개여부 — 적용 #/council/qna*/

.pat-board-table--qna col:nth-child(1) { width: 70px; }

.pat-board-table--qna col:nth-child(2) { width: 120px; }

.pat-board-table--qna col:nth-child(4) { width: 110px; }

.pat-board-table--qna col:nth-child(5) { width: 130px; }

/* 등록일: 17px 날짜(96px) + 좌우 패딩 32*/

.pat-board-table--qna col:nth-child(6) { width: 110px; }

.pat-board-table--qna col:nth-child(7) { width: 90px; }

/* 비공개 글 자물쇠 (제목 뒤, NEW 앞)*/

.pat-board-table--qna .pat-board-table__lock {
    flex-shrink: 0;
    width: 15px;
    height: 15px;
    margin-left: 8px;
    color: var(--text-bold, #262f3c);
  }

.pat-board-table--qna .pat-board-table__private {
    color: var(--text-muted, #929aaa);
  }

/* 태블릿: 작성자(4) 숨김*/

@media (min-width: 769px) and (max-width: 1279px) {
  .pat-board-table--qna col.is-hide-tablet,
  .pat-board-table--qna th:nth-child(4),
  .pat-board-table--qna td:nth-child(4) {
    display: none;
  }
}

/* 모바일 카드: [문의 구분 · 답변상태 ··· 등록일] / [제목] / [작성자 · 공개여부]*/

@media (max-width: 768px) {
    .pat-board-table.pat-board-table--qna td {
      width: auto !important;
      margin: 0 !important;
    }

    .pat-board-table.pat-board-table--qna td:nth-child(1) { display: none; }
    .pat-board-table.pat-board-table--qna td:nth-child(2) { order: 1; display: inline-flex; margin-right: 8px !important; font-size: var(--font-body-xsmall-medium-size, 0.875rem); font-weight: var(--font-weight-medium, 500); color: var(--text-bold, #262f3c); }
    .pat-board-table.pat-board-table--qna td:nth-child(6) { order: 2; display: inline-flex; }

    .pat-board-table.pat-board-table--qna td:nth-child(5) {
      order: 3;
      display: inline-flex;
      margin-left: auto !important;
      font-size: var(--font-size-xxs);
      color: var(--text-muted, #929aaa);
    }

    .pat-board-table.pat-board-table--qna td:nth-child(3) {
      order: 4;
      width: 100% !important;
      margin: 10px 0 8px !important;
    }

    .pat-board-table.pat-board-table--qna td:nth-child(4),
    .pat-board-table.pat-board-table--qna td:nth-child(7) {
      display: inline-flex;
      align-items: center;
      font-size: var(--font-size-xxs);
      color: var(--text-muted, #929aaa);
    }

    .pat-board-table.pat-board-table--qna td:nth-child(4) { order: 5; }

    .pat-board-table.pat-board-table--qna td:nth-child(7) {
      order: 6;
      position: relative;
      margin-left: 10px !important;
      padding-left: 10px;
    }

      .pat-board-table.pat-board-table--qna td:nth-child(7)::before {
        content: '';
        position: absolute;
        left: 0;
        top: 50%;
        width: 1px;
        height: 10px;
        transform: translateY(-50%);
        background-color: var(--border-default-strong, #cbd1dc);
      }
}

/* ── (변형) 마이페이지 내 파트너 검색 글 6컬럼 (.pat-board-table--my-posts) — .pat-board-table--bilingual 과 함께 ──*/

/* 1 순번 / 2 공고번호 / 3 제목 / 4 관심(★ 수) / 5 등록일 / 6 관심 연구자 [보기] — 적용 #/mypage/posts*/

/* 모바일은 기본 카드 배치 그대로: [순번·공고번호 ··· 등록일] / [제목] / [관심 ··· 보기]*/

.pat-board-table--my-posts col:nth-child(1) { width: 70px; }

.pat-board-table--my-posts col:nth-child(2) { width: 210px; }

.pat-board-table--my-posts col:nth-child(4) { width: 130px; }

.pat-board-table--my-posts col:nth-child(5) { width: 130px; }

.pat-board-table--my-posts col:nth-child(6) { width: 130px; }

/* ── (변형) 마이페이지 관심 표시한 글 6컬럼 (.pat-board-table--my-interests) — .pat-board-table--bilingual 과 함께 ──*/

/* 1 순번 / 2 공고 분야 / 3 제목(국·영) / 4 기관명·국가 / 5 관심 표시일 / 6 [관심 취소] — 적용 #/mypage/interests*/

/* 모바일은 기본 카드 배치 그대로: [순번·공고 분야 ··· 관심 표시일] / [제목] / [기관·국가 ··· 관심 취소]*/

.pat-board-table--my-interests col:nth-child(1) { width: 70px; }

.pat-board-table--my-interests col:nth-child(2) { width: 120px; }

.pat-board-table--my-interests col:nth-child(4) { width: 220px; }

.pat-board-table--my-interests col:nth-child(5) { width: 130px; }

.pat-board-table--my-interests col:nth-child(6) { width: 150px; }

.pat-board-table--my-interests td.pat-board-table__org {
    white-space: normal;
    word-break: keep-all;
    overflow-wrap: break-word;
  }

/* 마이페이지 표 안 버튼 ([보기] · [관심 취소]) 아이콘 — 파트너 검색 [문의하기](.pat-board-table__contact)와 같은 18px · 간격 6*/

.pat-board-table--my-posts .el-btn,
.pat-board-table--my-interests .el-btn {
  gap: 6px;
}

.pat-board-table--my-posts .el-btn svg, .pat-board-table--my-interests .el-btn svg {
    flex-shrink: 0;
    width: 18px;
    height: 18px;
  }

/* 관심 수 (★ + 숫자) — --my-posts*/

.pat-board-table__interest {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-weight: var(--font-weight-bold, 700);
  color: var(--text-bolder, #090c10);
}

.pat-board-table__interest svg {
    width: 16px;
    height: 16px;
    fill: currentColor;
    color: var(--element-primary, #396cfa);
  }

.pat-board-table__interest.is-zero {
    font-weight: var(--font-weight-regular, 400);
    color: var(--text-muted, #929aaa);
  }

.pat-board-table__interest.is-zero svg {
      fill: none;
      color: var(--text-muted, #929aaa);
    }

/* 태블릿: 공고번호(my-posts 2) · 기관명/국가(my-interests 4) 숨김 — 제목 폭 확보*/

@media (min-width: 769px) and (max-width: 1279px) {
  .pat-board-table--my-posts col:nth-child(2),
  .pat-board-table--my-posts th:nth-child(2),
  .pat-board-table--my-posts td:nth-child(2),
  .pat-board-table--my-interests col:nth-child(4),
  .pat-board-table--my-interests th:nth-child(4),
  .pat-board-table--my-interests td:nth-child(4) {
    display: none;
  }
}

/* 모바일: 기관·국가 보조 글씨*/

@media (max-width: 768px) {
  .pat-board-table--my-interests td:nth-child(4) {
    font-size: var(--font-size-xxs);
    color: var(--text-muted, #929aaa);
  }
}

/**
 * _board-toolbar.scss
 * Patterns 레이어 - 게시판 상단 툴바 (.pat-board-toolbar)
 * 좌측: 게시물 카운팅 / 우측: 뷰 토글 + 정렬 드롭다운
 * Figma 노드 155:8715 참조
 */

.pat-board-toolbar {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}

/* 아래 여백은 두지 않음 — .pat-page__content의 gap(24px)이 표·목록까지 간격을 담당 (margin을 두면 중복돼 40px)*/

/* ── 좌측: 카운팅 텍스트 ─────────────────────────────────*/

.pat-board-toolbar__count {
    font-family: var(--font-family-base);
    font-size: var(--font-size-sm, 15px);
    color: var(--text-default, #4a5667);
  }

.pat-board-toolbar__count strong {
      color: var(--element-primary, #396cfa);
      font-weight: var(--font-weight-bold, 700);
    }

.pat-board-toolbar__count .pat-board-toolbar__divider {
      margin: 0 0.5rem;
      color: var(--border-default, #dce0ea);
    }

/* ── 우측 컨트롤 묶음 ────────────────────────────────────*/

.pat-board-toolbar__controls {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
  }

/* ── 뷰 토글 (목록보기 / 캘린더보기) ─────────────────────*/

.pat-board-toolbar__view {
    display: inline-flex;
    align-items: center;
    gap: 6px;
  }

.pat-board-toolbar__view-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 40px;
    padding: 0 0.875rem;
    font-size: var(--font-size-xs, 14px);
    font-weight: var(--font-weight-medium, 500);
    color: var(--text-default, #4a5667);
    background-color: var(--color-surface, #ffffff);
    border: 1px solid var(--border-default, #dce0ea);
    border-radius: var(--radius-md, 6px);
    cursor: pointer;
    transition: all 0.15s ease;
  }

.pat-board-toolbar__view-btn i,
    .pat-board-toolbar__view-btn svg {
      width: 16px;
      height: 16px;
    }

.pat-board-toolbar__view-btn:hover {
      background-color: var(--color-bg-subtle, #f8f9fb);
      border-color: var(--border-default-strong, #cbd1dc);
    }

/* 활성 상태 (현재 보기)*/

.pat-board-toolbar__view-btn.is-active {
      color: var(--element-primary, #396cfa);
      border-color: var(--element-primary, #396cfa);
      background-color: rgba(57, 108, 250, 0.06);
    }

/* ── 정렬 드롭다운 래퍼 (.mod-select 재사용) ──────────────*/

.pat-board-toolbar__sort {
    min-width: 140px;
  }

/**
 * (변형) 칩 필터 포함 툴바 (.pat-board-toolbar--filter) — 적용 #/notices-events/events
 * [구조]  __count · __filter(.pat-chip-filter__chips 칩 그룹, 전역 칩 제어기) · __controls
 *         → grid 영역만 재배치 (DOM 순서 = 읽기 순서 유지)
 * [배치]  ≥1280  : [count][filter] ········ [controls]
 *         768~1279: [filter] ········ [controls] / [count] (2줄)
 *         ≤767   : [filter] / [controls(보기 버튼 균등)] / [count]
 * [상태]  .is-calendar : 캘린더 보기 — 건수·정렬 숨김(칩이 좌측을 채움)
 */

.pat-board-toolbar--filter {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr) auto;
  grid-template-areas: 'count filter . controls';
  align-items: center;
  -moz-column-gap: var(--spacing-20, 20px);
       column-gap: var(--spacing-20, 20px);
  row-gap: var(--spacing-12, 12px);
}

.pat-board-toolbar--filter .pat-board-toolbar__count {
    grid-area: count;
    white-space: nowrap;
  }

.pat-board-toolbar--filter .pat-board-toolbar__filter {
    grid-area: filter;
    flex: none;
    gap: var(--spacing-8, 8px);
  }

.pat-board-toolbar--filter .pat-board-toolbar__controls {
    grid-area: controls;
    justify-self: end;
  }

/* 캘린더 보기: 건수 열 제거(빈 열 gap 방지) → 칩이 좌측 끝부터*/

.pat-board-toolbar--filter.is-calendar {
    grid-template-columns: auto minmax(0, 1fr) auto;
    grid-template-areas: 'filter . controls';
  }

.pat-board-toolbar--filter.is-calendar .pat-board-toolbar__count,
    .pat-board-toolbar--filter.is-calendar .pat-board-toolbar__sort {
      display: none;
    }

/* ── 반응형 ── @media 내부 &__ 미전개 이슈로 최상위 전체 선택자로 작성*/

@media screen and (max-width: 1279px) {
  .pat-board-toolbar--filter {
    grid-template-columns: auto minmax(0, 1fr) auto;
    grid-template-areas:
      'filter . controls'
      'count count count';
  }

  .pat-board-toolbar--filter.is-calendar {
    grid-template-areas: 'filter . controls';
  }
  }

@media screen and (max-width: 767px) {
  .pat-board-toolbar--filter {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      'filter'
      'controls'
      'count';
  }

  .pat-board-toolbar--filter.is-calendar {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      'filter'
      'controls';
  }

  .pat-board-toolbar--filter .pat-board-toolbar__controls {
    justify-self: stretch;
    flex-wrap: nowrap;
    gap: var(--spacing-8, 8px);
  }

  /* 보기 버튼 균등 분할 (캘린더 보기에서 정렬 숨김 시 전체 폭)*/
  .pat-board-toolbar--filter .pat-board-toolbar__view {
    flex: 1 1 auto;
    min-width: 0;
  }

  /* 정렬(48px)과 높이 맞춤, 문구 줄바꿈 방지 — 폭 확보를 위해 아이콘 생략*/
  .pat-board-toolbar--filter .pat-board-toolbar__view-btn {
    flex: 1 1 0;
    justify-content: center;
    min-width: 0;
    height: var(--size-height-48, 48px);
    padding: 0 var(--spacing-8, 8px);
    white-space: nowrap;
  }

    .pat-board-toolbar--filter .pat-board-toolbar__view-btn svg,
    .pat-board-toolbar--filter .pat-board-toolbar__view-btn i {
      display: none;
    }

  .pat-board-toolbar--filter .pat-board-toolbar__sort {
    flex: 0 0 auto;
    min-width: 120px;
  }
  }

/**
 * 게시판 하단 영역 (.pat-board-foot)
 * 페이지네이션(추후) + 등록 버튼 배치
 */

.pat-board-foot {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 1rem;
  margin-top: 1.25rem;
}

.pat-board-foot__actions {
    display: inline-flex;
    align-items: center;
    gap: 0.75rem;
  }

/* 하단 서브밋/등록 버튼 규격 — Figma 노드 155:10728 (160×56, 16px Medium)*/

.pat-board-foot__actions .el-btn {
      min-width: 160px;
      height: 56px;
      font-size: 16px;
      font-weight: var(--font-weight-medium, 500);
    }

/**
 * _board-search.scss
 * Patterns 레이어 - 목록 상단 검색 영역 (.pat-board-search)
 * Figma: 검색그룹 2084:13244 — Type2 한 줄형(기본) / Type1 상세형(--detail)
 * 동작: src/js/board-search.js 전역 위임 (제출 안내 토스트 · 초기화 · 기간 datepicker)
 *
 * 구조 (Type2 한 줄형 — 행사정보 · 공지 · 자료실 · FAQ · 소식지 · 질의응답 · 통합검색):
 *   form.pat-board-search[role=search]
 *     .pat-board-search__inner
 *       .pat-board-search__row
 *         .mod-select.mod-select--md.pat-board-search__select   (0~2개)
 *         .mod-input.mod-input--md.pat-board-search__keyword
 *         button.el-btn.el-btn--primary.pat-board-search__btn
 *
 * 구조 (Type1 상세형 — 공고정보 · 파트너 검색):
 *   form.pat-board-search.pat-board-search--detail
 *     .pat-board-search__inner
 *       .pat-board-search__fields
 *         .pat-board-search__grid > .pat-board-search__field(--lg | --auto)  ← 라벨 + 입력
 *         .pat-board-search__field--full                                     ← 키워드
 *       .pat-board-search__actions > [초기화 .el-btn] [검색 .el-btn--primary]
 *
 * 국영문 병기(파트너 검색 전용): __label-en(라벨 뒤 영문) · __btn-en(버튼 영문) — 넣지 않으면 국문만
 */

.pat-board-search {
  margin: 0 0 var(--spacing-40); /* .pat-page__content 간격 24 + 40 = 툴바까지 64px*/
  background-color: var(--background-subtle);
  border: 1px solid var(--border-default-strong);
}

.pat-board-search__inner {
    max-width: 1100px; /* Figma 박스 1500 − 좌우 여백 200×2*/
    margin: 0 auto;
    padding: 30px var(--spacing-24); /* 상하 30 (spacing 스케일에 없음)*/
  }

/* ── Type2 한 줄형 ──────────────────────────────────*/

.pat-board-search__row {
    display: flex;
    align-items: stretch;
    gap: var(--spacing-12);
  }

.pat-board-search__select {
    flex: 0 0 171px; /* Figma 셀렉트 폭*/
    min-width: 0; /* .mod-select 기본 min-width 200 해제*/
  }

.pat-board-search__keyword {
    flex: 1 1 auto;
    min-width: 0;
    font-size: var(--font-body-small-regular-size); /* 15px*/
  }

.pat-board-search__btn {
    flex-shrink: 0;
    gap: 6px;
    min-width: 128px;
    height: 48px;
    padding: 0 var(--spacing-16);
    font-size: var(--font-body-small-medium-size);
  }

/* 15px*/

.pat-board-search__btn svg {
      width: 20px;
      height: 20px;
    }

/* 버튼 영문 병기 (파트너 검색)*/

.pat-board-search__btn-en {
    font-weight: var(--font-weight-regular);
    opacity: 0.85;
  }

/* ── Type1 상세형 ───────────────────────────────────*/

.pat-board-search--detail .pat-board-search__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 30px;
  }

.pat-board-search__fields {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-20);
    width: 100%;
  }

.pat-board-search__grid {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: var(--spacing-20);
  }

.pat-board-search__field {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-8);
    width: 200px; /* Figma 기본 필드 폭*/
    min-width: 0;
  }

.pat-board-search__field--lg {
      width: 240px; /* 파트너 검색 셀렉트*/
    }

.pat-board-search__field--auto {
      width: auto; /* 칩 그룹 · 기간처럼 내용 폭*/
    }

.pat-board-search__field--full {
      width: 100%;
    }

.pat-board-search__field .mod-select {
      min-width: 0;
    }

.pat-board-search__label {
    margin: 0;
    font-family: var(--font-family-pretendard);
    font-size: var(--font-body-small-medium-size); /* 15px*/
    font-weight: var(--font-weight-medium);
    line-height: 1.5;
    letter-spacing: -0.01em;
    color: var(--text-bold);
  }

.pat-board-search__label-en {
    margin-left: var(--spacing-4);
    font-size: var(--font-body-xsmall-regular-size, 0.875rem); /* 14px*/
    font-weight: var(--font-weight-regular);
    color: var(--text-muted);
  }

/* 묶음(칩 · 기간) 안 간격은 8 — .pat-chip-filter__chips(12)가 뒤에 로드되므로 명시도를 올림*/

.pat-board-search__chips,
  .pat-board-search__field .pat-board-search__chips {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-8);
  }

/* 기간: 기준 셀렉트(130px) + 시작일 ~ 종료일(각 140px) — 상세형 1줄 수용*/

.pat-board-search__period {
    display: flex;
    align-items: center;
    gap: var(--spacing-8);
  }

.pat-board-search__period > .mod-select {
      flex: 0 0 130px;
    }

.pat-board-search__period .mod-date-range--sm .mod-date-range__input {
      flex: 0 0 140px;
    }

/* 상세형 입력은 40px · 14px*/

.pat-board-search--detail .mod-input {
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
  }

.pat-board-search__actions {
    display: flex;
    justify-content: center;
    gap: 10px;
  }

/* ── 태블릿: 셀렉트 폭 축소 · 상세형 필드 2열 ──*/

@media screen and (max-width: 1279px) {
  .pat-board-search__inner {
    padding: var(--spacing-24);
  }

  .pat-board-search__select {
    flex-basis: 150px;
  }

  .pat-board-search__field,
  .pat-board-search__field--lg {
    width: calc(50% - var(--spacing-20) / 2); /* __grid gap 20의 절반*/
  }

  .pat-board-search__field--auto {
    width: auto;
  }

  .pat-board-search__field--full {
    width: 100%;
  }
  }

/* ── 모바일: 한 줄형은 셀렉트 2열 → 검색어 → 버튼, 상세형은 한 줄에 하나 ──*/

@media screen and (max-width: 767px) {
  .pat-board-search {
    margin-bottom: var(--spacing-8); /* 모바일은 .pat-page__content 간격 24 + 8 = 32px*/
  }

  .pat-board-search__inner {
    padding: var(--spacing-20) var(--spacing-16);
  }

  .pat-board-search__row {
    flex-wrap: wrap;
    gap: var(--spacing-8);
  }

  .pat-board-search__select {
    flex: 1 1 calc(50% - var(--spacing-4)); /* 셀렉트가 하나면 한 줄 전체*/
  }

  .pat-board-search__keyword,
  .pat-board-search__btn {
    flex: 1 1 100%;
  }

  .pat-board-search--detail .pat-board-search__inner {
    gap: var(--spacing-20);
  }

  .pat-board-search__field,
  .pat-board-search__field--lg,
  .pat-board-search__field--auto {
    width: 100%;
  }

  .pat-board-search__period {
    flex-direction: column;
    align-items: stretch;
  }

    .pat-board-search__period > .mod-select {
      flex-basis: auto;
    }

  .pat-board-search__actions {
    width: 100%;
  }

    .pat-board-search__actions .pat-board-search__btn {
      flex: 1 1 0;
      min-width: 0;
    }
  }

/**
 * _pagination.scss
 * Patterns 레이어 - 페이지네이션 (.pat-pagination)
 * Figma 노드 155:8897 참조 — 40×40 버튼, 간격 7px, 처음/이전/번호/다음/마지막
 */

.pat-pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px; /* Figma 버튼 간격 (x=0 w40 → next x=47)*/
  margin-top: 1.5rem;
  flex-wrap: wrap;
}

/* 공통 버튼 (번호 / 화살표) — Figma 40×40*/

.pat-pagination__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    padding: 0;
    font-family: var(--font-family-base);
    font-size: var(--font-size-xs, 15px);
    font-weight: var(--font-weight-medium, 500);
    color: var(--text-default, #4a5667);
    background-color: var(--color-surface, #ffffff);
    border: 1px solid var(--border-default, #dce0ea);
    border-radius: var(--radius-md, 6px);
    cursor: pointer;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
  }

.pat-pagination__btn svg, .pat-pagination__btn i {
      width: 16px;
      height: 16px;
    }

.pat-pagination__btn:hover:not(:disabled):not(.is-active) {
      background-color: var(--color-bg-subtle, #f8f9fb);
      border-color: var(--border-default-strong, #cbd1dc);
      color: var(--text-bold, #262f3c);
    }

/* 현재 페이지 (활성)*/

.pat-pagination__btn.is-active {
      background-color: var(--element-primary, #396cfa);
      border-color: var(--element-primary, #396cfa);
      color: var(--text-inverse, #ffffff);
      cursor: default;
    }

/* 비활성(처음/마지막 페이지에서 이전/다음 불가)*/

.pat-pagination__btn:disabled {
      opacity: 0.4;
      cursor: not-allowed;
      pointer-events: none;
    }

/* 모바일 축약용 변형자*/

/*  --edge : 처음(«)/마지막(») 버튼 → 모바일에서 숨김*/

/*  --far  : 현재 페이지에서 먼 번호 → 모바일에서 숨김*/

.pat-pagination__btn--edge,
    .pat-pagination__btn--far {
      /* 데스크탑에서는 정상 노출 (아래 미디어쿼리에서만 숨김)*/
    }

/* ── 모바일 축약형 (≤768px) ──────────────────────────────*/

/* 처음/마지막 및 먼 번호를 숨겨 현재 페이지 주변 + 이전/다음만 한 줄로 노출*/

@media (max-width: 768px) {

.pat-pagination {
    gap: 6px
}

    .pat-pagination .pat-pagination__btn--edge,
    .pat-pagination .pat-pagination__btn--far {
      display: none;
    }
  }

/**
 * _board-view.scss
 * Patterns 레이어 - 게시판 공통 상세 뷰페이지 (.pat-board-view)
 * Figma 166:12136 (제목 / 메타 / 본문) 기준. 첨부·버튼·이전/다음글은 기존 모듈/패턴 조합
 *
 * [구조]
 * __header(상단 1px bolder 보더) > __title-wrap(__badge-wrap + __subject) + __meta
 * → [__info(.mod-desc-list--grid 정보 칸)] → __attachment-wrap(.mod-attachment--row) → __body → __actions → .pat-post-nav
 * __header-actions--status : 제목 우측 상태 배지(진행상태) — 모바일에서 제목 위로
 */

.pat-board-view {
  width: 100%;
  display: flex;
  flex-direction: column;
}

/* ── 헤더: 제목 + 메타 ─────────────────────────────*/

.pat-board-view__header {
    border-top: 1px solid var(--text-bolder, #090c10);
  }

.pat-board-view__title-wrap {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--spacing-12, 12px);
    padding: 30px var(--spacing-16, 16px);
  }

.pat-board-view__badge-wrap {
    display: inline-flex;
    flex-shrink: 0;
    gap: var(--spacing-4, 4px);
  }

.pat-board-view__subject {
    min-width: 0;
    font-size: 1.625rem; /* 26px (Figma)*/
    line-height: 1.5;
    font-weight: var(--font-weight-bold, 700);
    color: var(--text-bolder, #090c10);
    letter-spacing: -0.02em;
    word-break: keep-all;
    overflow-wrap: anywhere;
  }

/* 국문 제목 + 영문 부제 묶음 (영문 병기 페이지)*/

.pat-board-view__title-group {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-4, 4px);
    flex: 1;
    min-width: 0;
  }

.pat-board-view__subject-en {
    font-size: var(--font-body-large-regular-size, 1.0625rem);
    line-height: 1.4;
    color: var(--text-muted, #929aaa);
    overflow-wrap: anywhere;
  }

/* 제목 우측 액션 (문의하기 등)*/

.pat-board-view__header-actions {
    display: flex;
    align-items: center;
    gap: var(--spacing-8, 8px);
    flex-shrink: 0;
    margin-left: auto;
  }

.pat-board-view__header-actions .el-btn {
      min-width: 160px;
      height: 48px;
      gap: var(--spacing-8, 8px);
      font-size: var(--font-body-medium-medium-size, 1rem);
      font-weight: var(--font-weight-medium, 500);
    }

.pat-board-view__header-actions .el-btn svg {
        width: 18px;
        height: 18px;
      }

/* 제목 우측 상태 배지 (진행상태 등) — 모바일에서는 제목 위로*/

.pat-board-view__header-actions--status .mod-badge {
    padding: 6px var(--spacing-12, 12px);
    font-size: var(--font-body-medium-medium-size, 1rem);
  }

/* 제목 아래 정보 영역 (.mod-desc-list--grid 등)*/

.pat-board-view__info {
    padding: var(--spacing-20, 20px) 0;
    border-top: 1px solid var(--text-tertiary, #cbd1dc);
  }

/* 버튼 내 영문 병기 (예: 수정 Modify)*/

.pat-board-view__btn-en {
    margin-left: 4px;
    font-weight: var(--font-weight-regular, 400);
    opacity: 0.8;
  }

.pat-board-view__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--spacing-12, 12px) 13px;
    padding: var(--spacing-20, 20px) var(--spacing-16, 16px);
    border-top: 1px solid var(--text-tertiary, #cbd1dc);
    border-bottom: 1px solid var(--text-tertiary, #cbd1dc);
    font-size: var(--font-body-medium-regular-size, 1rem);
    line-height: 1.5;
    letter-spacing: -0.01em;
  }

.pat-board-view__meta-item {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    white-space: nowrap;
  }

.pat-board-view__meta-item dt {
      font-weight: var(--font-weight-medium, 500);
      color: var(--text-bolder, #090c10);
    }

.pat-board-view__meta-item dd {
      font-weight: var(--font-weight-regular, 400);
      color: var(--text-default, #4a5667);
    }

/* 메타 바로 아래 정보 표: 메타 하단선과 표 상단선이 겹쳐 2px로 보이는 것 방지 (메타 하단선이 표 상단선 역할)*/

.pat-board-view__header:has(.pat-board-view__meta) + .mod-form-table,
  .pat-board-view__header:has(.pat-board-view__meta) + .pat-board-view__info {
    border-top: 0;
  }

/* 국영문 병기 페이지 메타 라벨의 영문 (예: 등록자 Registrant)*/

.pat-board-view__meta-en {
    margin-left: 2px;
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
    font-weight: var(--font-weight-regular, 400);
    color: var(--text-muted);
  }

.pat-board-view__meta-divider {
    width: 1px;
    height: 14px;
    background-color: var(--border-default, #dce0ea);
    flex-shrink: 0;
  }

/* ── 행사정보 행 (.mod-event-info--inline 수납) ─────*/

.pat-board-view__event {
    display: flex;
    align-items: center;
    gap: var(--spacing-16, 16px);
    padding: var(--spacing-16, 16px);
    border-bottom: 1px solid var(--border-default, #dce0ea);
    background-color: var(--background-subtle, #f8f9fb);
  }

.pat-board-view__event .mod-event-info {
      min-width: 0;
      font-size: var(--font-body-medium-regular-size, 1rem);
    }

.pat-board-view__event-label {
    flex-shrink: 0;
    width: 120px;
    font-weight: var(--font-weight-medium, 500);
    color: var(--text-bolder, #090c10);
  }

/* ── 첨부 링크/파일 ────────────────────────────────*/

.pat-board-view__attachment-wrap {
    display: flex;
    flex-direction: column;
    border-bottom: 1px solid var(--border-default, #dce0ea);
  }

/* ── 본문 ──────────────────────────────────────────*/

/* 텍스트 그대로 넣는 본문(질의응답 등 에디터 없이 작성) — 입력한 줄바꿈 유지*/

.pat-board-view__body--pre {
    white-space: pre-line;
  }

.pat-board-view__body {
    min-height: 455px; /* Figma 본문 영역 높이*/
    padding: var(--spacing-40, 40px);
    border-bottom: 1px solid var(--border-default, #dce0ea);
    font-size: var(--font-body-medium-regular-size, 1rem);
    line-height: 1.6;
    letter-spacing: -0.01em;
    color: var(--text-default, #4a5667);
    word-break: keep-all;
    overflow-wrap: anywhere;
  }

.pat-board-view__body p + p {
      margin-top: 1em;
    }

/* 소제목 · 대시 목록 (정의서 "[주요 협력 분야]" / "- 항목")*/

.pat-board-view__body h4 {
      margin: 1.25em 0 0.25em;
      font-size: inherit;
      font-weight: var(--font-weight-bold, 700);
      color: var(--text-bold, #262f3c);
    }

.pat-board-view__body ul {
      margin: 0.25em 0 0;
    }

.pat-board-view__body ul li {
        position: relative;
        padding-left: 0.9em;
      }

.pat-board-view__body ul li::before {
          content: '-';
          position: absolute;
          left: 0;
        }

.pat-board-view__body ul + p,
    .pat-board-view__body h4 + p {
      margin-top: 0.25em;
    }

.pat-board-view__body img {
      max-width: 100%;
      height: auto;
    }

/* 표 셀 등 다른 컨테이너 안 본문 (여백·보더·최소 높이 제거)*/

.pat-board-view__body--plain {
    min-height: 0;
    padding: 0;
    border-bottom: 0;
  }

/* ── 하단 버튼: 목록(좌) / 수정·삭제(우) ───────────*/

.pat-board-view__actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-12, 12px);
    margin: var(--spacing-32, 32px) 0 var(--spacing-48, 48px);
  }

/* 하단 버튼 규격 — .pat-board-foot__actions와 동일 (160×56, 16px Medium)*/

.pat-board-view__actions .el-btn {
      min-width: 160px;
      height: 56px;
      font-size: 16px;
      font-weight: var(--font-weight-medium, 500);
    }

.pat-board-view__actions-group {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-12, 12px);
  }

/* ── 반응형 (모바일) ── postcss-nested가 @media 내부 &__ 를 전개하지 못하므로 최상위 전체 선택자로 작성*/

@media screen and (max-width: 767px) {
  .pat-board-view__title-wrap {
    padding: var(--spacing-20, 20px) var(--spacing-8, 8px);
    gap: var(--spacing-8, 8px);
  }

  .pat-board-view__subject {
    font-size: var(--font-title-xsmall-size, 1.25rem);
  }

  .pat-board-view__subject-en {
    font-size: var(--font-body-small-regular-size, 0.9375rem);
  }

  .pat-board-view__title-group {
    flex-basis: 100%;
  }

  .pat-board-view__header-actions {
    width: 100%;
    margin-left: 0;
  }

  .pat-board-view__header-actions .el-btn {
    width: 100%;
  }

  .pat-board-view__header-actions--status {
    order: -1;
    width: auto;
  }

  .pat-board-view__info {
    padding: var(--spacing-16, 16px) 0;
  }

  /* 아래 .pat-board-view__body 모바일 규칙보다 우선*/
  .pat-board-view__body.pat-board-view__body--plain {
    min-height: 0;
    padding: 0;
  }

  .pat-board-view__meta {
    padding: var(--spacing-16, 16px) var(--spacing-8, 8px);
    gap: var(--spacing-8, 8px) var(--spacing-16, 16px);
    font-size: var(--font-body-small-regular-size, 0.9375rem);
  }

  .pat-board-view__meta-divider {
    display: none;
  }

  .pat-board-view__event {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--spacing-8, 8px);
    padding: var(--spacing-12, 12px) var(--spacing-8, 8px);
  }

  .pat-board-view__event .mod-event-info {
    max-width: 100%;
    font-size: var(--font-body-small-regular-size, 0.9375rem);
  }

  .pat-board-view__event-label {
    width: auto;
  }

  .pat-board-view__body {
    min-height: 240px;
    padding: var(--spacing-24, 24px) var(--spacing-8, 8px);
  }

  .pat-board-view__actions {
    flex-direction: column-reverse;
    align-items: stretch;
    margin: var(--spacing-24, 24px) 0 var(--spacing-32, 32px);
  }

  .pat-board-view__actions .el-btn {
    min-width: 0;
    width: 100%;
    height: 48px;
  }

  .pat-board-view__actions-group {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--spacing-8, 8px);
  }
  }

/**
 * _post-nav.scss
 * Patterns 레이어 - 게시글 이전/다음글 네비게이션 (.pat-post-nav)
 * 모든 게시판 상세 뷰 하단에서 공통 사용 (소식지·공지사항·자료실 등)
 *
 * [구조]  __row(a) > __label(아이콘 + 라벨) + __title(말줄임) + __date
 * [변형]  __row--empty : 이전/다음 글이 없을 때 (링크 비활성, muted 텍스트)
 * [요소]  __label-en   : 라벨 영문 병기 (선택) — 루트에 --bilingual 을 함께 지정(라벨 170px)
 */

.pat-post-nav {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--text-bolder, #090c10);
}

.pat-post-nav__row {
    display: flex;
    align-items: center;
    gap: var(--spacing-24, 24px);
    min-height: 64px;
    padding: var(--spacing-16, 16px);
    border-bottom: 1px solid var(--border-default, #dce0ea);
    font-size: var(--font-body-medium-regular-size, 1rem);
    line-height: 1.5;
    letter-spacing: -0.01em;
    color: var(--text-default, #4a5667);
    text-decoration: none;
    transition: background-color 0.2s ease;
  }

.pat-post-nav__row:hover,
    .pat-post-nav__row:focus-visible {
      background-color: var(--background-subtle, #f8f9fb);
    }

.pat-post-nav__row:hover .pat-post-nav__title, .pat-post-nav__row:focus-visible .pat-post-nav__title {
        color: var(--text-bolder, #090c10);
        text-decoration: underline;
        text-underline-offset: 3px;
      }

.pat-post-nav__row--empty {
      pointer-events: none;
    }

.pat-post-nav__row--empty .pat-post-nav__title {
        color: var(--text-muted, #929aaa);
      }

.pat-post-nav__label {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-8, 8px);
    flex-shrink: 0;
    width: 120px;
    font-weight: var(--font-weight-medium, 500);
    color: var(--text-bolder, #090c10);
  }

.pat-post-nav__label svg {
      width: 18px;
      height: 18px;
      color: var(--text-muted, #929aaa);
    }

/* 라벨 영문 병기 (예: 다음글 Next) — 영문 병기 페이지용*/

.pat-post-nav__label-en {
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
    font-weight: var(--font-weight-regular, 400);
    color: var(--text-muted, #929aaa);
  }

.pat-post-nav__title {
    flex: 1;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: color 0.2s ease;
  }

/* 영문 병기 라벨 폭 확장 (다음글 Next / 이전글 Previous) — 행마다 제목 시작점 일치*/

.pat-post-nav--bilingual .pat-post-nav__label {
    width: 170px;
  }

.pat-post-nav__date {
    flex-shrink: 0;
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    color: var(--text-muted, #929aaa);
  }

/* ── 반응형 (모바일) ── postcss-nested가 @media 내부 &__ 를 전개하지 못하므로 최상위 전체 선택자로 작성*/

@media screen and (max-width: 767px) {
  .pat-post-nav__row {
    gap: var(--spacing-12, 12px);
    min-height: 56px;
    padding: var(--spacing-12, 12px) var(--spacing-8, 8px);
    font-size: var(--font-body-small-regular-size, 0.9375rem);
  }

  .pat-post-nav__label,
  .pat-post-nav--bilingual .pat-post-nav__label {
    width: auto;
  }

  .pat-post-nav__date {
    display: none;
  }
  }

/**
 * _comment.scss
 * Patterns 레이어 - 게시글 답글/댓글 (.pat-comment)
 * 게시판 상세 뷰(.pat-board-view__body 아래) — 실제 적용은 --thread(질의응답 상세). 이 기본 블록은 --thread 의 바탕
 *
 * [구조]
 * __head(총 N개) → __list > __item[__meta · __text · __edit] → __empty → __form(__label · __field)
 * [상태]
 * __item.is-editing : 인라인 수정 (본문 숨김, __edit 노출)
 * .is-empty          : 답글 없음 (__list 숨김, __empty 노출)
 * 입력은 .mod-textarea-counter[data-count="byte"] 재사용
 *
 * [변형] --thread : 스레드형 (질의응답 상세 #/council/qna/view) — 회원 댓글 + 재단 답변 + 대댓글(2뎁스) · 답글 접기 · ⋮ 메뉴
 *   __list > li.__thread > [ div.__item(--answer) · button.__reply-toggle · ul.__replies > li.__item--reply · form.__reply-form ]
 *   __item: __meta(__badge · __author · __org · __date) + __menu-btn(⋮, .mod-dropdown 공유 메뉴) / __text(__mention) / __foot(__reply-btn) / __edit
 *   대댓글에 다시 답해도 2뎁스에 시간순으로 붙고 본문 앞 __mention(@이름)으로 대상만 표시
 *   [상태] __item.is-deleted : 삭제된 댓글 자리(대댓글 유지) · __replies[hidden] : 접힘
 */

.pat-comment {
  display: flex;
  flex-direction: column;
  margin-top: var(--spacing-40, 40px);
}

/* ── 머리말 ────────────────────────────────────────*/

.pat-comment__head {
    padding: 0 var(--spacing-8, 8px) var(--spacing-16, 16px);
    border-bottom: 1px solid var(--border-default, #dce0ea);
    font-size: var(--font-body-medium-regular-size, 1rem);
    line-height: 1.5;
    color: var(--text-default, #4a5667);
  }

.pat-comment__head strong {
      font-weight: var(--font-weight-bold, 700);
      color: var(--text-primary, #396cfa);
    }

/* ── 목록 ──────────────────────────────────────────*/

.pat-comment__list {
    display: flex;
    flex-direction: column;
  }

.pat-comment__item {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      'meta'
      'text'
      'edit';
    -moz-column-gap: var(--spacing-24, 24px);
         column-gap: var(--spacing-24, 24px);
    row-gap: var(--spacing-8, 8px);
    padding: var(--spacing-20, 20px) var(--spacing-8, 8px);
    border-bottom: 1px dashed var(--border-default, #dce0ea);
  }

.pat-comment__meta {
    grid-area: meta;
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: var(--spacing-8, 8px);
  }

.pat-comment__author {
    font-size: var(--font-body-medium-bold-size, 1rem);
    font-weight: var(--font-weight-bold, 700);
    color: var(--text-bolder, #090c10);
  }

.pat-comment__date {
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    color: var(--text-muted, #929aaa);
  }

.pat-comment__text {
    grid-area: text;
    min-width: 0;
    font-size: var(--font-body-medium-regular-size, 1rem);
    line-height: 1.6;
    color: var(--text-default, #4a5667);
    white-space: pre-line;
    word-break: keep-all;
    overflow-wrap: anywhere;
  }

/* 인라인 수정 · 답글 입력의 취소 · 저장 · 등록 소형 버튼 (80×36)*/

.pat-comment__edit-actions .el-btn {
    min-width: 80px;
    height: 36px;
    padding: 0 var(--spacing-12, 12px);
    font-size: var(--font-body-xsmall-medium-size, 0.875rem);
    font-weight: var(--font-weight-medium, 500);
  }

/* 인라인 수정 영역*/

.pat-comment__edit {
    grid-area: edit;
    display: none;
    flex-direction: column;
    gap: var(--spacing-8, 8px);
  }

.pat-comment__edit-actions {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-8, 8px);
  }

.pat-comment__item.is-editing .pat-comment__text {
      display: none;
    }

.pat-comment__item.is-editing .pat-comment__edit {
      display: flex;
    }

/* ── 빈 상태 (.mod-empty-state 조합, 노출 제어만 담당) ─*/

.pat-comment__empty {
    margin-top: var(--spacing-16, 16px);
  }

.pat-comment__empty.mod-empty-state {
      display: none;
    }

.pat-comment.is-empty .pat-comment__list {
      display: none;
    }

.pat-comment.is-empty .pat-comment__empty {
      display: flex;
    }

/* ── 입력 폼 ───────────────────────────────────────*/

.pat-comment__form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-8, 8px);
    margin-top: var(--spacing-24, 24px);
  }

.pat-comment__label {
    padding: 0 var(--spacing-8, 8px);
    font-size: var(--font-body-medium-medium-size, 1rem);
    font-weight: var(--font-weight-medium, 500);
    color: var(--text-bolder, #090c10);
  }

.pat-comment__field {
    display: flex;
    align-items: stretch;
    gap: var(--spacing-8, 8px);
  }

.pat-comment__field .mod-textarea-counter {
      flex: 1;
      min-width: 0;
    }

.pat-comment__field > .el-btn {
      flex-shrink: 0;
      min-width: 120px;
      height: auto;
      font-size: var(--font-body-medium-medium-size, 1rem);
      font-weight: var(--font-weight-medium, 500);
    }

/* 답글 입력 textarea (폼·인라인 수정 공통)*/

.pat-comment__textarea {
    display: block;
    width: 100%;
    min-height: 100px;
    padding: var(--spacing-12, 12px) var(--spacing-16, 16px) 2rem;
    border: 1px solid var(--border-default-strong, #cbd1dc);
    border-radius: var(--radius-md, 4px);
    background-color: var(--background-default, #ffffff);
    font-family: inherit;
    font-size: var(--font-body-medium-regular-size, 1rem);
    line-height: 1.5;
    color: var(--text-bold, #262f3c);
    resize: vertical;
    transition: border-color 0.2s ease;
  }

.pat-comment__textarea::-moz-placeholder {
      color: var(--text-muted, #929aaa);
    }

.pat-comment__textarea::placeholder {
      color: var(--text-muted, #929aaa);
    }

.pat-comment__textarea:focus {
      outline: none;
      border-color: var(--element-primary, #396cfa);
    }

/* 빈 내용 등록 시도*/

.pat-comment__textarea.is-error {
      border-color: var(--input-border-error, #d0121b);
    }

/* ── (변형) 스레드형 (.pat-comment--thread) ──────────────*/

.pat-comment--thread .pat-comment__head-sub {
    margin-left: var(--spacing-4, 4px);
    color: var(--text-muted, #929aaa);
  }

.pat-comment--thread .pat-comment__thread {
    padding: var(--spacing-8, 8px) 0;
    border-bottom: 1px solid var(--border-default, #dce0ea);
  }

.pat-comment--thread .pat-comment__item {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      'meta menu'
      'text text'
      'foot foot'
      'edit edit';
    row-gap: var(--spacing-8, 8px);
    padding: var(--spacing-16, 16px) var(--spacing-8, 8px);
    border-bottom: 0;
  }

/* 1뎁스 재단 답변: 배경 강조 (대댓글 답변은 배지만 — 대화 흐름이 산만해지지 않게)*/

.pat-comment--thread .pat-comment__thread > .pat-comment__item--answer {
    padding: var(--spacing-16, 16px);
    border-radius: var(--radius-fig-md, 8px);
    background-color: var(--background-primary-subtler, #f0f4ff);
  }

.pat-comment--thread .pat-comment__meta {
    align-items: center;
  }

.pat-comment--thread .pat-comment__badge {
    gap: 3px; /* 국문 · 영문 사이 (inline-flex 라 공백이 사라짐)*/
    padding: 0 6px;
    font-size: var(--font-body-xxsmall-regular-size, 0.8125rem);
    line-height: 22px;
  }

.pat-comment--thread .pat-comment__org {
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
    color: var(--text-default, #4a5667);
  }

/* ⋮ 메뉴 버튼 (본인 글만) — 공유 .mod-dropdown 을 연다*/

.pat-comment--thread .pat-comment__menu-btn {
    grid-area: menu;
    align-self: start;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    margin: -6px -6px 0 0; /* 아이콘을 작성자 줄 높이에 맞춤*/
    padding: 0;
    border: 0;
    border-radius: var(--radius-fig-md, 8px);
    background: none;
    color: var(--text-muted, #929aaa);
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
  }

.pat-comment--thread .pat-comment__menu-btn svg {
      width: 20px;
      height: 20px;
    }

.pat-comment--thread .pat-comment__menu-btn:hover,
    .pat-comment--thread .pat-comment__menu-btn[aria-expanded="true"] {
      background-color: var(--background-subtle, #f8f9fb);
      color: var(--text-bold, #262f3c);
    }

.pat-comment--thread .pat-comment__menu-btn:focus-visible {
      outline: 2px solid var(--element-primary, #396cfa);
      outline-offset: 1px;
    }

.pat-comment--thread .pat-comment__mention {
    margin-right: var(--spacing-4, 4px);
    font-weight: var(--font-weight-medium, 500);
    color: var(--text-primary, #396cfa);
  }

.pat-comment--thread .pat-comment__foot {
    grid-area: foot;
    display: flex;
    align-items: center;
    gap: var(--spacing-16, 16px);
  }

/* 답글 · 답글 접기 텍스트 버튼*/

.pat-comment--thread .pat-comment__reply-btn,
  .pat-comment--thread .pat-comment__reply-toggle {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-4, 4px);
    padding: var(--spacing-4, 4px) 0;
    border: 0;
    background: none;
    font-family: inherit;
    font-size: var(--font-body-xsmall-medium-size, 0.875rem);
    font-weight: var(--font-weight-medium, 500);
    cursor: pointer;
  }

.pat-comment--thread .pat-comment__reply-btn svg, .pat-comment--thread .pat-comment__reply-toggle svg {
      width: 16px;
      height: 16px;
      transition: transform 0.2s ease;
    }

.pat-comment--thread .pat-comment__reply-btn:focus-visible, .pat-comment--thread .pat-comment__reply-toggle:focus-visible {
      outline: 2px solid var(--element-primary, #396cfa);
      outline-offset: 2px;
      border-radius: var(--radius-fig-xs, 2px);
    }

.pat-comment--thread .pat-comment__reply-btn {
    color: var(--text-muted, #929aaa);
  }

.pat-comment--thread .pat-comment__reply-btn:hover {
      color: var(--text-primary, #396cfa);
    }

.pat-comment--thread .pat-comment__reply-toggle {
    margin: var(--spacing-4, 4px) 0 var(--spacing-4, 4px) 40px;
    color: var(--text-primary, #396cfa);
  }

.pat-comment--thread .pat-comment__reply-toggle[aria-expanded="false"] svg {
      transform: rotate(-90deg);
    }

/* 2뎁스 대댓글 — 한 단계만 들여쓰기 + 세로선*/

.pat-comment--thread .pat-comment__replies {
    margin: 0 0 var(--spacing-8, 8px) 40px;
    padding: 0 0 0 var(--spacing-16, 16px);
    border-left: 2px solid var(--border-default, #dce0ea);
    list-style: none;
  }

.pat-comment--thread .pat-comment__replies[hidden] {
      display: none;
    }

.pat-comment--thread .pat-comment__replies .pat-comment__item + .pat-comment__item {
      border-top: 1px dashed var(--border-default, #dce0ea);
    }

/* 삭제된 댓글 자리 (대댓글이 있어 남겨 둠)*/

.pat-comment--thread .pat-comment__item.is-deleted .pat-comment__text {
    color: var(--text-muted, #929aaa);
  }

/* 인라인 답글 입력창*/

.pat-comment--thread .pat-comment__reply-form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-8, 8px);
    margin: var(--spacing-4, 4px) 0 var(--spacing-16, 16px) 40px;
    padding-left: calc(var(--spacing-16, 16px) + 2px);
  }

/* 대댓글 세로선과 정렬*/

.pat-comment--thread .pat-comment__reply-form .pat-comment__textarea {
      min-height: 80px;
    }

.pat-comment--thread .pat-comment__reply-to {
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
    color: var(--text-muted, #929aaa);
  }

.pat-comment--thread .pat-comment__reply-to strong {
      font-weight: var(--font-weight-medium, 500);
      color: var(--text-primary, #396cfa);
    }

.pat-comment--thread .pat-comment__item.is-editing .pat-comment__menu-btn,
    .pat-comment--thread .pat-comment__item.is-editing .pat-comment__foot {
      display: none;
    }

/* ── 반응형 (모바일) ── @media 내부 &__ 미전개 이슈로 최상위 전체 선택자로 작성*/

@media screen and (max-width: 767px) {
  .pat-comment {
    margin-top: var(--spacing-24, 24px);
  }

  .pat-comment__item {
    padding: var(--spacing-16, 16px) var(--spacing-4, 4px);
  }

  .pat-comment__field {
    flex-direction: column;
  }

  .pat-comment__field > .el-btn {
    width: 100%;
    height: 48px;
  }
  .pat-comment--thread .pat-comment__item {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      'meta menu'
      'text text'
      'foot foot'
      'edit edit';
  }

  .pat-comment--thread .pat-comment__replies,
  .pat-comment--thread .pat-comment__reply-form,
  .pat-comment--thread .pat-comment__reply-toggle {
    margin-left: var(--spacing-16, 16px);
  }

  .pat-comment--thread .pat-comment__replies {
    padding-left: var(--spacing-12, 12px);
  }

  .pat-comment--thread .pat-comment__reply-form {
    padding-left: calc(var(--spacing-12, 12px) + 2px);
  }
  }

/**
 * _chip-filter.scss
 * Patterns 레이어 - 칩 선택 필터 영역 (.pat-chip-filter)
 * Figma 155:8130 Filter Area 기준. 통합검색 게시판 필터 및 타 화면 그룹형 필터 공통
 *
 * [구조]
 * __head   : __title(좌) + __reset(우, 선택 초기화)  — 하단 구분선
 * __group  : [__group-label(선택)] + __chips(.el-chip 목록, role="group")  — 여러 개 반복 가능
 * [변형]
 * __chips--scroll : 모바일에서 줄바꿈 대신 가로 스크롤
 * [동작]  common-ui-engine.js 전역 위임 — __chips[data-select="single|multi"], .el-chip[data-chip-all]
 */

.pat-chip-filter {
  display: flex;
  flex-direction: column;
  gap: 15px;
  width: 100%;
  padding: var(--spacing-24, 24px) 35px;
  border-radius: var(--radius-fig-md, 8px);
  background-color: var(--background-subtle, #f8f9fb);
}

/* ── 머리말: 제목 / 선택 초기화 ────────────────────*/

.pat-chip-filter__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    padding-bottom: 15px;
    border-bottom: 1px solid var(--border-default, #dce0ea);
  }

.pat-chip-filter__title {
    font-size: var(--font-title-xsmall-size, 1.25rem); /* 20px*/
    font-weight: var(--font-weight-medium, 500);
    line-height: 1.43;
    color: var(--text-bolder, #090c10);
  }

/* 참여협력 > NCP 분야 선택: 제목 한 단계 굵게 (통합검색 필터 제목은 medium 유지)*/

.pat-chip-filter.pat-ncp__filter .pat-chip-filter__title {
    font-weight: var(--font-weight-semibold, 600);
  }

.pat-chip-filter__reset {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    flex-shrink: 0;
    padding: 0;
    border: 0;
    background: none;
    font-family: inherit;
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    color: var(--text-muted, #929aaa);
    cursor: pointer;
    transition: color 0.2s ease;
  }

.pat-chip-filter__reset svg {
      width: 18px;
      height: 18px;
      transition: transform 0.3s ease;
    }

.pat-chip-filter__reset:hover,
    .pat-chip-filter__reset:focus-visible {
      color: var(--text-bold, #262f3c);
    }

.pat-chip-filter__reset:hover svg, .pat-chip-filter__reset:focus-visible svg {
        transform: rotate(90deg);
      }

/* ── 칩 그룹 ───────────────────────────────────────*/

.pat-chip-filter__group {
    display: flex;
    align-items: flex-start;
    gap: var(--spacing-16, 16px);
  }

/* 그룹 라벨 (그룹형 화면에서만 사용). 칩 높이(40px) 기준 수직 중앙*/

.pat-chip-filter__group-label {
    flex-shrink: 0;
    width: 140px;
    min-height: 40px;
    display: flex;
    align-items: center;
    font-size: var(--font-body-medium-medium-size, 1rem);
    font-weight: var(--font-weight-medium, 500);
    color: var(--text-bold, #262f3c);
  }

.pat-chip-filter__chips {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-12, 12px);
    flex: 1;
    min-width: 0;
  }

/* 그룹 간 구분 (2개 이상일 때) — 구분선 사용 안 함 (NCP 대분야·소분야 사이 선 제거 요청)*/

/* &__group + &__group {*/

/*   padding-top: 15px;*/

/*   border-top: 1px dashed var(--border-default, #dce0ea);*/

/* }*/

/* NCP: 그룹 라벨(대분야·소분야) 고정 폭 140 → 글자 폭만, 칩과 간격 24*/

.pat-chip-filter.pat-ncp__filter .pat-chip-filter__group {
    gap: var(--spacing-24, 24px);
  }

.pat-chip-filter.pat-ncp__filter .pat-chip-filter__group-label {
    width: auto;
  }

/* ── 반응형 (모바일) ── @media 내부 &__ 미전개 이슈로 최상위 전체 선택자로 작성*/

@media screen and (max-width: 767px) {
  .pat-chip-filter {
    gap: var(--spacing-12, 12px);
    padding: var(--spacing-16, 16px);
  }

  .pat-chip-filter__head {
    padding-bottom: var(--spacing-12, 12px);
  }

  .pat-chip-filter__title {
    font-size: var(--font-body-large-medium-size, 1.0625rem);
  }

  .pat-chip-filter__group,
  .pat-chip-filter.pat-ncp__filter .pat-chip-filter__group {
    flex-direction: column;
    gap: var(--spacing-8, 8px);
  }

  .pat-chip-filter__group-label {
    width: auto;
    min-height: 0;
  }

  .pat-chip-filter__chips {
    gap: var(--spacing-8, 8px);
    width: 100%;
  }

  .pat-chip-filter__chips .el-chip {
    min-height: 36px;
    padding: var(--spacing-8, 8px) var(--spacing-12, 12px);
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
  }

  /* 가로 스크롤 변형*/
  .pat-chip-filter__chips--scroll {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: var(--spacing-4, 4px);
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
  }
  }

/**
 * _result-list.scss
 * Patterns 레이어 - 텍스트형 결과 목록 (.pat-result-list)
 * Figma 155:8130 List 기준. 통합검색 결과 및 제목·요약·메타 형태의 목록 공통
 *
 * [구조]  <ul> > __item > __title-row(__title 링크 + __copy) · __excerpt · __meta(__meta-item)
 * 검색어 강조는 .el-highlight(<mark>) 사용
 */

.pat-result-list {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--border-default, #dce0ea);
}

.pat-result-list__item {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-12, 12px);
    padding: var(--spacing-40, 40px) var(--spacing-24, 24px);
    border-bottom: 1px solid var(--border-default, #dce0ea);
  }

.pat-result-list__title-row {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
  }

.pat-result-list__title {
    min-width: 0;
    font-size: var(--font-title-small-size, 1.5rem); /* 24px*/
    font-weight: var(--font-weight-semibold, 600);
    line-height: 1.5;
    color: var(--text-bolder, #090c10);
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: color 0.2s ease;
  }

.pat-result-list__title:hover,
    .pat-result-list__title:focus-visible {
      color: var(--text-primary, #396cfa);
      text-decoration: underline;
      text-underline-offset: 4px;
    }

/* 링크 복사 아이콘 버튼*/

.pat-result-list__copy {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    padding: 0;
    border: 0;
    border-radius: var(--radius-fig-sm, 4px);
    background: none;
    color: var(--text-muted, #929aaa);
    cursor: pointer;
    transition: background-color 0.2s ease, color 0.2s ease;
  }

.pat-result-list__copy svg {
      width: 20px;
      height: 20px;
    }

.pat-result-list__copy:hover,
    .pat-result-list__copy:focus-visible {
      background-color: var(--background-muted, #f2f3f8);
      color: var(--text-bold, #262f3c);
    }

.pat-result-list__excerpt {
    font-size: var(--font-body-medium-regular-size, 1rem);
    line-height: 1.4;
    color: var(--text-default, #4a5667);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

.pat-result-list__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--spacing-16, 16px);
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    line-height: 1.5;
    color: var(--text-muted, #929aaa);
  }

.pat-result-list__meta-item {
    position: relative;
  }

/* 1×10 세로 구분선 (Figma) — 16px gap 정중앙*/

.pat-result-list__meta-item + .pat-result-list__meta-item::before {
        content: '';
        position: absolute;
        left: calc(var(--spacing-8, 8px) * -1);
        top: 50%;
        width: 1px;
        height: 10px;
        transform: translateY(-50%);
        background-color: var(--border-default-strong, #cbd1dc);
      }

/* ── 반응형 (모바일) ── @media 내부 &__ 미전개 이슈로 최상위 전체 선택자로 작성*/

@media screen and (max-width: 767px) {
  .pat-result-list__item {
    gap: var(--spacing-8, 8px);
    padding: var(--spacing-20, 20px) var(--spacing-8, 8px);
  }

  .pat-result-list__title {
    font-size: var(--font-body-large-bold-size, 1.0625rem);
    white-space: normal;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
  }

  .pat-result-list__excerpt {
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    white-space: normal;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
  }

  .pat-result-list__meta {
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
  }
  }

/**
 * _profile-list.scss
 * Patterns 레이어 - 프로필 카드 목록 (.pat-profile-list)
 * Figma 166:5857 (NCP 목록 카드 그리드) 기준. 적용 #/participation/ncp — 전문가·담당자 목록 등 재사용 가능
 *
 * [구조]
 * .pat-profile-list (ul, 2열 그리드 / 1279px 이하 1열)
 * └ __item (li, 카드)
 *    ├ __info    : __name-row(__name + __region) · __category · __meta(dl)
 *    │             __meta-row(div) > dt(아이콘 + 국문 + __meta-en) / dd(값, 2줄 말줄임)
 *    └ __actions : .el-btn(정보보기) · .el-btn--primary(문의하기) 세로 스택 / 모바일 가로 2분할
 */

.pat-profile-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--spacing-16, 16px);
  margin: 0;
  padding: 0;
  list-style: none;
}

/* ── 카드 ─────────────────────────────────────────*/

.pat-profile-list__item {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--spacing-24, 24px);
    min-width: 0;
    padding: var(--spacing-40, 40px) 30px; /* Figma 40/30*/
    background-color: var(--background-default, #ffffff);
    border: 1px solid var(--border-default, #dce0ea);
    border-radius: 10px; /* Figma 실측값 (radius 토큰 미정의)*/
  }

.pat-profile-list__info {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-20, 20px);
    flex: 1 1 auto;
    min-width: 0;
  }

/* 이름 | 지역*/

.pat-profile-list__name-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    -moz-column-gap: var(--spacing-12, 12px);
         column-gap: var(--spacing-12, 12px);
    row-gap: var(--spacing-4, 4px);
  }

.pat-profile-list__name {
    margin: 0;
    font-size: var(--font-title-small-size, 1.5rem); /* 24px*/
    font-weight: var(--font-title-small-weight, 700);
    line-height: 32px;
    letter-spacing: var(--font-title-small-letter-spacing, -0.01em);
    color: var(--text-bolder, #090c10);
    word-break: keep-all;
  }

/* 구분선(14px)은 지역 앞 가상요소*/

.pat-profile-list__region {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-12, 12px);
    font-size: var(--font-body-large-regular-size, 1.0625rem); /* 17px*/
    line-height: 32px;
    color: var(--text-default, #4a5667);
  }

.pat-profile-list__region::before {
      content: '';
      width: 1px;
      height: 14px;
      background-color: var(--border-default-strong, #cbd1dc);
    }

/* 분야 (파랑 Bold)*/

.pat-profile-list__category {
    margin: 0;
    font-size: var(--font-title-xxsmall-size, 1.125rem); /* 18px*/
    font-weight: var(--font-title-xxsmall-weight, 700);
    line-height: 24px;
    color: var(--text-primary, #396cfa);
    margin-bottom: -4px; /* 분야↔정보 간격 16px (info gap 20 보정)*/
  }

/* 정보 목록: 항목명 열은 가장 긴 라벨 폭에 맞춰 정렬*/

.pat-profile-list__meta {
    display: grid;
    grid-template-columns: max-content minmax(0, 1fr);
    -moz-column-gap: var(--spacing-16, 16px);
         column-gap: var(--spacing-16, 16px); /* 구분선 ↔ 값*/
    row-gap: 10px; /* Figma 실측값*/
    margin: 0;
  }

.pat-profile-list__meta-row {
    display: contents;
  }

.pat-profile-list__meta-row dt {
      position: relative;
      display: inline-flex;
      align-items: center;
      align-self: start; /* 값이 2줄일 때 첫 줄에 맞춤*/
      gap: 6px;
      padding-right: 17px; /* 가장 긴 항목명 ↔ 구분선 16 + 선 1*/
      font-size: var(--font-body-medium-medium-size, 1rem);
      font-weight: var(--font-body-medium-medium-weight, 500);
      line-height: 25px;
      color: var(--text-bold, #262f3c);
      white-space: nowrap;
    }

.pat-profile-list__meta-row dt svg {
        width: 16px;
        height: 16px;
        flex-shrink: 0;
        color: var(--text-muted, #929aaa);
      }

/* 항목명 ↔ 값 구분선: 열 오른쪽 끝에 고정해 행마다 세로로 정렬, 첫 줄 가운데*/

.pat-profile-list__meta-row dt::after {
        content: '';
        position: absolute;
        top: calc((25px - 14px) / 2);
        right: 0;
        width: 1px;
        height: 14px;
        background-color: var(--border-default, #dce0ea);
      }

.pat-profile-list__meta-row dd {
      margin: 0;
      min-width: 0;
      font-size: var(--font-body-medium-regular-size, 1rem);
      line-height: 25px;
      color: var(--text-default, #4a5667);
      /* 긴 기관명은 2줄까지 줄바꿈 후 말줄임*/
      overflow: hidden;
      display: -webkit-box;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
      word-break: keep-all;
      overflow-wrap: anywhere;
    }

/* 항목명 영문 병기*/

.pat-profile-list__meta-en {
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    font-weight: var(--font-weight-regular, 400);
    color: var(--text-muted, #929aaa);
  }

/* ── 버튼 (세로 스택, 172 × 50) ─────────────────────*/

.pat-profile-list__actions {
    display: flex;
    flex-direction: column;
    gap: 10px;
    flex-shrink: 0;
    width: 172px;
  }

.pat-profile-list__actions .el-btn {
      width: 100%;
      height: var(--size-height-50, 50px);
      padding: 0 var(--spacing-12, 12px);
      font-size: var(--font-body-small-medium-size, 0.9375rem);
    }

.pat-profile-list__actions .el-btn svg {
        width: 18px;
        height: 18px;
      }

/* 버튼 문구 국/영 병기 (문의하기 Contact)*/

.pat-profile-list__btn-en {
    font-weight: var(--font-weight-regular, 400);
    opacity: 0.85;
  }

/* ── 반응형 ── @media 내부 &__ 미전개 이슈로 최상위 전체 선택자로 작성*/

@media screen and (max-width: 1279px) {
  .pat-profile-list {
    grid-template-columns: minmax(0, 1fr);
  }
  }

@media screen and (max-width: 767px) {
  .pat-profile-list__item {
    flex-direction: column;
    gap: var(--spacing-20, 20px);
    padding: var(--spacing-24, 24px) var(--spacing-20, 20px);
  }

  .pat-profile-list__info {
    width: 100%;
    gap: var(--spacing-16, 16px);
  }

  .pat-profile-list__name {
    font-size: var(--font-title-xsmall-size, 1.25rem);
    line-height: 28px;
  }

  .pat-profile-list__region {
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    line-height: 28px;
  }

  .pat-profile-list__category {
    font-size: var(--font-body-large-bold-size, 1.0625rem);
    margin-bottom: 0;
  }

  .pat-profile-list__meta-row dt,
  .pat-profile-list__meta-row dd {
    font-size: var(--font-body-small-regular-size, 0.9375rem);
  }

  /* 모바일에서는 항목명 영문 생략 (폭 확보)*/
  .pat-profile-list__meta-en {
    display: none;
  }

  .pat-profile-list__actions {
    flex-direction: row;
    width: 100%;
  }

    .pat-profile-list__actions .el-btn {
      flex: 1 1 0;
      min-width: 0;
      height: var(--size-height-48, 48px);
    }

  .pat-profile-list__btn-en {
    display: none;
  }
  }

/**
 * _search.scss
 * Patterns 레이어 - 통합검색 페이지 조합 (.pat-search)
 * 개별 UI는 .pat-chip-filter / .pat-result-list / .mod-empty-state 재사용 — 이 파일은 배치·간격만 담당
 * 순서: 검색 영역 → 칩 필터 → 결과 카운팅(목록 바로 위 좌측) → 결과 목록 → 페이지네이션
 */

/* 결과 카운팅: 목록 바로 위 좌측 — 목록까지 간격은 .pat-page__content gap(24)이 담당*/

.pat-search__toolbar {
    justify-content: flex-start;
  }

.pat-search__filter {
    margin-bottom: var(--spacing-16, 16px); /* + gap 24 = 칩 필터 ↔ 카운팅 40px*/
  }

.pat-search__results,
  .pat-search__empty {
    margin-bottom: var(--spacing-40, 40px);
  }

@media screen and (max-width: 767px) {
  .pat-search__filter {
    margin-bottom: 0;
  }

  .pat-search__results,
  .pat-search__empty {
    margin-bottom: var(--spacing-24, 24px);
  }
  }

/**
 * _faq.scss
 * Patterns 레이어 - FAQ 목록 아코디언 (.pat-faq-list / .pat-faq-row)
 * Figma 155:7833 (펼친 상태) 기준. 접힌 상태·토글 아이콘은 Figma 부재로 보완 설계
 *
 * [구조]
 * .pat-faq-row > __question(button) [__q-mark · .mod-badge--online · __title · __toggle]
 *              > __answer > __answer-box [__text · __attach(__attach-row) · __actions]
 * [상태]  .is-open : 펼침 (보더 strong-dark, 토글 180° 회전, 답변 노출)
 */

.pat-faq-list {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-20, 20px);
  width: 100%;
}

.pat-faq-row {
  border: 1px solid var(--border-default, #dce0ea);
  border-radius: 20px;
  background-color: var(--background-default, #ffffff);
  transition: border-color 0.2s ease;
}

.pat-faq-row:hover,
  .pat-faq-row.is-open {
    border-color: var(--border-strong-dark, #4a5667);
  }

/* ── 질문 (클릭 영역) ──────────────────────────────*/

.pat-faq-row__question {
    display: flex;
    align-items: center;
    gap: var(--spacing-24, 24px);
    width: 100%;
    padding: 28px var(--spacing-40, 40px);
    text-align: left;
    background: none;
    border: 0;
    border-radius: 20px;
    cursor: pointer;
  }

.pat-faq-row__question:focus-visible {
      outline: 2px solid var(--element-primary, #396cfa);
      outline-offset: -2px;
    }

.pat-faq-row__q-mark {
    flex-shrink: 0;
    font-size: var(--font-title-xlarge-size, 2.5rem); /* 40px*/
    font-weight: var(--font-weight-bold, 700);
    line-height: 1.5;
    letter-spacing: -0.01em;
    color: var(--element-primary-dark, #182c65);
  }

.pat-faq-row__head {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--spacing-8, 8px);
    flex: 1;
    min-width: 0;
  }

.pat-faq-row__head .mod-badge {
      flex-shrink: 0;
      font-size: var(--font-body-xsmall-regular-size, 0.875rem);
      font-weight: var(--font-weight-regular, 400);
      border-radius: 0;
    }

.pat-faq-row__title {
    min-width: 0;
    font-size: var(--font-title-xsmall-size, 1.25rem); /* 20px*/
    font-weight: var(--font-weight-bold, 700);
    line-height: 1.5;
    letter-spacing: -0.01em;
    color: var(--text-bold, #262f3c);
    word-break: keep-all;
    overflow-wrap: anywhere;
  }

.pat-faq-row__toggle {
    flex-shrink: 0;
    width: 28px;
    height: 28px;
    color: var(--text-muted, #929aaa);
    transition: transform 0.25s ease, color 0.2s ease;
  }

.pat-faq-row.is-open .pat-faq-row__toggle {
    transform: rotate(180deg);
    color: var(--text-bold, #262f3c);
  }

/* ── 답변 (grid-rows 0fr↔1fr 높이 트랜지션) ─────────*/

.pat-faq-row__answer {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.3s ease;
  }

.pat-faq-row__answer > * {
      overflow: hidden;
    }

.pat-faq-row.is-open .pat-faq-row__answer {
    grid-template-rows: 1fr;
  }

.pat-faq-row__answer-inner {
    min-height: 0;
    padding: 0 var(--spacing-40, 40px);
    transition: padding-bottom 0.3s ease;
  }

.pat-faq-row.is-open .pat-faq-row__answer-inner {
    padding-bottom: 28px;
  }

.pat-faq-row__answer-box {
    display: flex;
    flex-direction: column;
    gap: 27px;
    padding: var(--spacing-24, 24px) 36px;
    border-radius: var(--radius-fig-xl, 16px);
    background-color: var(--background-subtle, #f8f9fb);
  }

.pat-faq-row__text {
    font-size: var(--font-body-large-regular-size, 1.0625rem); /* 17px*/
    line-height: 1.5;
    letter-spacing: -0.01em;
    color: var(--text-default, #4a5667);
    word-break: keep-all;
    overflow-wrap: anywhere;
  }

.pat-faq-row__text p + p {
      margin-top: 0.5em;
    }

/* ── 첨부링크 / 첨부파일 ───────────────────────────*/

.pat-faq-row__attach {
    display: flex;
    flex-direction: column;
  }

.pat-faq-row__attach-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-16, 16px);
    min-width: 0;
    font-size: var(--font-body-medium-regular-size, 1rem);
    line-height: 1.5;
    letter-spacing: -0.01em;
  }

.pat-faq-row__attach-row dt {
      position: relative;
      flex-shrink: 0;
      padding-right: var(--spacing-16, 16px);
      font-weight: var(--font-weight-medium, 500);
      color: var(--text-bold, #262f3c);
    }

/* 1×10 세로 구분선 (Figma)*/

.pat-faq-row__attach-row dt::after {
        content: '';
        position: absolute;
        right: 0;
        top: 50%;
        width: 1px;
        height: 10px;
        transform: translateY(-50%);
        background-color: var(--border-default-strong, #cbd1dc);
      }

.pat-faq-row__attach-row dd {
      display: flex;
      flex-direction: column;
      min-width: 0;
      color: var(--text-default, #4a5667);
    }

.pat-faq-row__attach-row a {
      color: inherit;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      text-decoration: none;
      transition: color 0.2s ease;
    }

.pat-faq-row__attach-row a:hover,
      .pat-faq-row__attach-row a:focus-visible {
        color: var(--text-primary, #396cfa);
        text-decoration: underline;
        text-underline-offset: 3px;
      }

/* ── 수정 / 삭제 (관리자 전용) ─────────────────────*/

.pat-faq-row__actions {
    display: flex;
    justify-content: flex-end;
    gap: var(--spacing-8, 8px);
  }

/* Figma 100×40, 14px Medium*/

.pat-faq-row__actions .el-btn {
      min-width: 100px;
      height: 40px;
      padding: 0 var(--spacing-12, 12px);
      font-size: var(--font-body-xsmall-medium-size, 0.875rem);
      font-weight: var(--font-weight-medium, 500);
    }

/* ── 반응형 (모바일) ── @media 내부 &__ 미전개 이슈로 최상위 전체 선택자로 작성*/

@media screen and (max-width: 767px) {
  .pat-faq-list {
    gap: var(--spacing-12, 12px);
  }

  .pat-faq-row,
  .pat-faq-row__question {
    border-radius: var(--radius-fig-lg, 12px);
  }

  .pat-faq-row__question {
    align-items: flex-start;
    gap: var(--spacing-12, 12px);
    padding: var(--spacing-16, 16px);
  }

  .pat-faq-row__q-mark {
    font-size: 1.75rem; /* 28px*/
    line-height: 1.1;
  }

  .pat-faq-row__title {
    font-size: var(--font-body-large-bold-size, 1.0625rem); /* 17px*/
  }

  .pat-faq-row__toggle {
    width: 22px;
    height: 22px;
  }

  .pat-faq-row__answer-inner {
    padding: 0 var(--spacing-16, 16px);
  }

  .pat-faq-row.is-open .pat-faq-row__answer-inner {
    padding-bottom: var(--spacing-16, 16px);
  }

  .pat-faq-row__answer-box {
    gap: var(--spacing-20, 20px);
    padding: var(--spacing-16, 16px);
  }

  .pat-faq-row__text {
    font-size: var(--font-body-medium-regular-size, 1rem);
  }

  .pat-faq-row__attach-row {
    font-size: var(--font-body-small-regular-size, 0.9375rem);
  }

  .pat-faq-row__actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }

  .pat-faq-row__actions .el-btn {
    min-width: 0;
    width: 100%;
  }
  }

/**
 * _board-write.scss
 * Patterns 레이어 - 게시판 등록/수정 페이지 (.pat-board-write)
 *
 * [형태]  --basic (기본형) : 구역 없이 폼 테이블 하나 · 국/영 2줄 라벨(.el-flabel) — 소식지·공지사항·FAQ 등 일반 게시판
 *         (기본) 구역형    : 번호 구역 제목 + 폼 테이블 여러 개 · 한글 라벨 — 공고정보·행사정보 (항목 많음·연동/조건부 입력)
 *         필수 검사·에러 표시는 공통 헬퍼 src/js/form-utils.js
 *
 * [구조]
 * .pat-board-write
 * ├ __required-note          : "* 은 필수 입력 항목입니다."
 * ├ __form                   : <form> 구역 사이 간격 40px
 * ├ __section (반복)          : __section-title + .mod-form-table
 * │   └ 행 안 조합 요소
 * │     __inline   : 셀렉트 + 보조 버튼 한 줄 (≤767 버튼 아래 전체 폭)
 * │     __target   : 선택 항목 요약 박스 (__target-head(__target-title + __target-edit 수정) + .mod-desc-list--grid)
 * │     __hint     : 입력 안내 문구 / __target-empty 선택 전 안내
 * │     __narrow / __date / __range : 짧은 값 · 날짜 · 일시 범위 폭 제한
 * │     .mod-form-table__row[hidden] : 조건부 행 숨김 (행사 구분 전환 등)
 * └ .pat-board-foot          : 취소 / 등록
 */

.pat-board-write {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-32, 32px);
}

.pat-board-write__required-note {
    margin-bottom: calc(var(--spacing-16, 16px) * -1);
    text-align: right;
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    color: var(--text-default, #4a5667);
  }

/* 폼: 구역 사이 간격*/

.pat-board-write__form {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-40, 40px);
  }

/* ── 구역 ─────────────────────────────────────────────*/

.pat-board-write__section {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-12, 12px);
  }

.pat-board-write__section-title {
    display: flex;
    align-items: center;
    gap: var(--spacing-8, 8px);
    margin: 0;
    font-size: var(--font-title-xsmall-size, 1.25rem);
    font-weight: var(--font-title-xsmall-weight, 700);
    line-height: 1.4;
    color: var(--text-bolder, #090c10);
  }

/* 구역 번호 원형 (1, 2)*/

.pat-board-write__section-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background-color: var(--background-blue-darker, #0e1e45);
    font-size: var(--font-body-xsmall-medium-size, 0.875rem);
    font-weight: var(--font-weight-bold, 700);
    color: var(--text-inverse, #ffffff);
  }

/* ── 셀렉트 + 보조 버튼 한 줄 ─────────────────────────*/

.pat-board-write__inline {
    display: flex;
    align-items: stretch;
    gap: var(--spacing-8, 8px);
    width: 100%;
  }

.pat-board-write__inline .mod-select {
      flex: 1 1 auto;
      min-width: 0;
      min-height: 48px;
    }

.pat-board-write__inline > .el-btn {
      flex-shrink: 0;
      height: 48px;
      gap: 6px;
      font-size: var(--font-body-small-medium-size, 0.9375rem);
    }

.pat-board-write__inline > .el-btn svg {
        width: 16px;
        height: 16px;
      }

/* 셀렉트 폭 제한 (공고 분야 · 구분 등 짧은 값)*/

.pat-board-write__select-sm {
    max-width: 320px;
    min-height: 48px;
  }

/* 짧은 값 입력 폭 제한*/

.pat-board-write__narrow {
    max-width: 200px;
  }

/* 날짜 입력 폭 제한 (.mod-date-input 조합)*/

.pat-board-write__date {
    max-width: 260px;
  }

/* 일시 범위 폭 제한 (.mod-date-range + .mod-date-input × 2)*/

.pat-board-write__range {
    max-width: 560px;
  }

/* 라디오·체크박스 선택지 가로 나열 ([role=radiogroup] 등) — .is-error 시 선택 원/박스 테두리 붉게*/

.pat-board-write__choices {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--spacing-12, 12px) var(--spacing-24, 24px);
  }

.pat-board-write__choices.is-error .mod-radio__circle,
    .pat-board-write__choices.is-error .mod-checkbox__box {
      border-color: var(--input-border-error, #d0121b);
    }

/* 조건부 행 숨김 (행사 구분 전환 등) — .mod-form-table__row 의 display:flex 보다 우선*/

.pat-board-write .mod-form-table__row[hidden] {
    display: none;
  }

.pat-board-write__hint {
    margin: 0;
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
    color: var(--text-muted, #929aaa);
  }

/* 입력 요소 바로 아래 안내 (모달 등 gap 없는 영역)*/

.pat-board-write__hint--after {
      margin-top: var(--spacing-8, 8px);
    }

/* ── 선택 항목 요약 박스 (목표) ───────────────────────*/

.pat-board-write__target {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-12, 12px);
    padding: var(--spacing-16, 16px);
    border: 1px solid var(--border-default, #dce0ea);
    border-radius: var(--radius-fig-sm, 4px);
    background-color: var(--background-default, #ffffff);
  }

.pat-board-write__target[hidden] {
      display: none;
    }

/* 요약 정보 2열 (시작일 · 마감일)*/

.pat-board-write__target .mod-desc-list--grid {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

.pat-board-write__target-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--spacing-12, 12px);
  }

.pat-board-write__target-title {
    margin: 0;
    min-width: 0;
    font-size: var(--font-body-medium-bold-size, 1rem);
    font-weight: var(--font-body-medium-bold-weight, 700);
    line-height: 1.5;
    color: var(--text-bolder, #090c10);
    word-break: keep-all;
    overflow-wrap: anywhere;
  }

/* 요약 박스 [수정] 버튼 (el-btn--outline-navy el-btn--sm) — 아이콘 14px*/

.pat-board-write__target-edit {
    flex-shrink: 0;
    gap: var(--spacing-4, 4px);
  }

.pat-board-write__target-edit svg {
      width: 14px;
      height: 14px;
    }

.pat-board-write__target-empty[hidden] {
    display: none;
  }

/* 한 줄 두 쌍 행: 첫 라벨은 기본 폭(228px, 위아래 행과 정렬) · 두 번째 라벨만 축소*/

.pat-board-write .mod-form-table__row--split > .mod-form-table__label:nth-child(3) {
    width: 180px;
  }

/* 공고내용 에디터 높이*/

.pat-board-write .mod-editor__area {
    min-height: 280px;
  }

/* ── (변형) 기본형 (.pat-board-write--basic) — 구 .pat-newsletter-write ──────*/

/* 마크업: .pat-board-write--basic > .el-content-title + __required-note + form.mod-form-table--responsive + .pat-board-foot*/

.pat-board-write--basic {
  display: block;
}

.pat-board-write--basic .pat-board-write__required-note {
    margin-bottom: 0.75rem;
    text-align: right;
    font-size: var(--font-body-xsmall-regular-size, 0.875rem);
    color: var(--text-muted, #929aaa);
  }

.pat-board-write--basic .pat-board-write__required-note .el-required {
      margin-right: 2px;
    }

.pat-board-write--basic .pat-board-write__hint {
    margin-top: 6px;
    font-size: 12px; /* 기존 소식지 등록과 동일 (12px 폰트 토큰 미정의)*/
  }

.pat-board-write--basic .mod-editor__area {
    min-height: 320px;
  }

/* ── 반응형 ── @media 내부 &__ 미전개 이슈로 최상위 전체 선택자로 작성*/

@media screen and (max-width: 1279px) {
  .pat-board-write .mod-form-table__row--split > .mod-form-table__label:nth-child(3) {
    width: 100%;
  }
  }

@media screen and (max-width: 767px) {
  .pat-board-write {
    gap: var(--spacing-24, 24px);
  }

  .pat-board-write:not(.pat-board-write--basic) .pat-board-write__required-note {
    margin-bottom: 0;
    text-align: left;
  }

  .pat-board-write__inline {
    flex-wrap: wrap;
  }

  .pat-board-write__inline > .el-btn {
    width: 100%;
  }

  .pat-board-write__select-sm,
  .pat-board-write__narrow,
  .pat-board-write__date,
  .pat-board-write__range {
    max-width: none;
  }

  .pat-board-write__target .mod-desc-list--grid {
    grid-template-columns: minmax(0, 1fr);
  }
  }

/**
 * _home.scss
 * Patterns 레이어 - 메인 페이지 전용 스타일 (.pat-home)
 */

.pat-home .main-inner {
		max-width: var(--size-header-inner); /* 1760px*/
		width: 100%;
		height: 100%;
		margin: 0 auto;
		padding: 0 var(--size-header-gutter); /* 80px*/
		display: flex;
		align-items: center;

		@media screen and (max-width: 1279px) {
			padding: 0 1.5rem; /* 24px (태블릿/모바일 여백 축소)*/
  }
	}

/* -------------------------------------------------------------------------- */

/* 메인 비주얼 섹션 */

/* -------------------------------------------------------------------------- */

.pat-home .visual-section {
		position: relative;
		min-height: 825px;
		display: flex;
		align-items: stretch; /* 안쪽 영역이 비주얼 높이 전체를 채워야 헬프데스크를 바닥에 고정 가능*/

		background-image: url("../../img/site/main-visual.png");
		background-size: cover;
		background-position: center;

		@media screen and (max-width: 1279px) {
			min-height: auto;
			padding: var(--spacing-80) 0 0; /* 하단 여백은 __wrap padding-bottom이 담당*/
  }
	}

.pat-home .visual-section > .main-inner {
			height: auto; /* height:100%는 min-height 부모에서 풀리지 않아 stretch를 막음*/
			align-items: stretch;
		}

/* 헬프데스크는 바닥 고정, 타이틀은 남은 공간 가운데 (위·아래 최소 여백 보장)*/

.pat-home .visual-section__wrap {
			display: flex;
			flex-direction: column;
			gap: var(--spacing-80); /* 타이틀 ↔ 헬프데스크 최소 여백*/
			width: 100%;
			padding-top: var(--spacing-80); /* 비주얼 상단 ↔ 타이틀 최소 여백 (gap과 같게 두어 가운데 정렬 유지)*/
			padding-bottom: 56px; /* 헬프데스크 하단 여백 — Figma 시안값 (spacing 변수 미등록, 이 곳 단독 사용이라 고정값)*/

			@media screen and (max-width: 1279px) {
				gap: var(--spacing-48);
				padding-top: 0; /* 태블릿 이하는 섹션 상단 패딩이 담당*/
				padding-bottom: var(--spacing-24);
  }
		}

.pat-home .visual-section__ttl {
			display: flex;
			flex-direction: column;
			gap: 20px;
			margin-block: auto;
		}

/* 남는 높이를 위·아래로 균등 분배*/

/* 공식 포털 뱃지 — 열 방향 flex에서 내용 폭만 차지, 타이틀과는 gap(20px)보다 가깝게 붙여 한 묶음으로*/

.pat-home .visual-section__ttl .ttl-badge {
				align-self: flex-start;
				margin-bottom: -4px;
			}

.pat-home .visual-section__ttl .ttl-main {
				color: #fff;
				text-shadow: 3px 3px 19px rgba(0, 0, 0, 0.04);
				font-family: var(--font-family-title, "The Jamsil", sans-serif);
				font-size: 76px;
				font-weight: 800;
				line-height: 1.15;

				@media screen and (min-width: 768px) and (max-width: 1279px) {
					font-size: 52px;
  }

				@media screen and (max-width: 767px) {
					font-size: 36px;
  }
			}

.pat-home .visual-section__ttl .ttl-sub {
				color: rgba(255, 255, 255, 0.9);
				font-size: var(--font-size-xl, 22px);
				font-weight: 500;
				line-height: 1.5;

				@media screen and (max-width: 767px) {
					font-size: var(--font-size-sm, 16px);
  }
			}

/* 구분선 길이를 부제 문장 폭에 맞추기 위해 부제+운영기관을 내용 폭 블록으로 묶음*/

.pat-home .visual-section__ttl .ttl-desc {
				align-self: flex-start;
				max-width: 100%;
			}

/* 운영기관 표기 — 공식 포털 신뢰도를 위해 기관명만 강조*/

.pat-home .visual-section__ttl .ttl-operator {
				/* 영문이 부제보다 길어도 묶음 폭(=구분선 길이)은 부제 기준 — 폭 계산에서 빠지고 부모 폭만큼 늘어남*/
				width: 0;
				min-width: 100%;
				margin-top: var(--spacing-24);
				padding-top: var(--spacing-20);
				border-top: 1px solid rgba(255, 255, 255, 0.3);
			}

.pat-home .visual-section__ttl .ttl-operator__kor {
					color: rgba(255, 255, 255, 0.7);
					font-size: var(--font-size-lg, 18px);
					font-weight: var(--font-weight-regular, 400);
					line-height: 1.5;

					@media screen and (max-width: 767px) {
						font-size: var(--font-size-sm, 16px);
  }
				}

.pat-home .visual-section__ttl .ttl-operator__name {
					color: var(--text-inverse);
					font-weight: var(--font-weight-bold, 700);
				}

.pat-home .visual-section__ttl .ttl-operator__eng {
					/* 구분선(부제 폭)보다 길어도 한 줄 유지 — 화면 좌우 여백(태블릿 이하 24px×2)을 넘을 때만 줄바꿈*/
					width: -moz-max-content;
					width: max-content;
					max-width: calc(100vw - 48px);
					margin-top: var(--spacing-4);
					color: rgba(255, 255, 255, 0.65); /* 비주얼 이미지 밝은 부분에서도 읽히도록 0.55보다 진하게*/
					font-size: var(--font-size-xs, 15px);
					font-weight: var(--font-weight-regular, 400);
					line-height: 1.5;
				}

/* 약칭 (NRF)가 한 줄로 떨어져 나가지 않게*/

.pat-home .visual-section__ttl .ttl-operator__eng .nowrap {
						white-space: nowrap;
					}

.pat-home .visual-section__ttl .ttl-operator__eng{

					@media screen and (max-width: 767px) {
						font-size: 12px; /* 13px은 375px 화면에서 (NRF)가 줄바꿈됨*/
  }
}

.pat-home .visual-section__ttl .ttl-operator{

				@media screen and (max-width: 767px) {
					margin-top: var(--spacing-20);
					padding-top: 16px;
  }
}

/* -------------------------------------------------------------------------- */

/* 헬프데스크 배너 */

/* -------------------------------------------------------------------------- */

.pat-home .visual-section .helpdesk {
			display: grid;
			grid-template-columns: 245px 1fr auto;
			gap: 24px;
			align-items: center;
			align-self: flex-end;
			min-height: 125px;
			width: 960px;
			max-width: 100%;
			padding: 0 32px;
			box-sizing: border-box;
			background-color: #fff;
			box-shadow: var(--shadow-lg); /* 비주얼 이미지 위에서 박스가 떠 보이도록*/

			@media screen and (max-width: 1279px) {
				grid-template-columns: 1fr;
				gap: 16px;
				padding: 20px;
  }
		}

.pat-home .visual-section .helpdesk__ttl {
				display: flex;
				flex-direction: column;
				justify-content: center;
				gap: 4px;
				height: 100%;

				background-image: url('../../img/site/headset.svg');
				background-repeat: no-repeat;
				background-position: right 0 top 15px;
			}

.pat-home .visual-section .helpdesk__ttl .ttl-kor {
					color: var(--color-primary, #4071FA);
					font-size: var(--font-size-xs, 15px);
					font-weight: 500;
					line-height: 1.47;
					display: block;
				}

.pat-home .visual-section .helpdesk__ttl .ttl-eng {
					color: var(--color-text-primary, #222);
					font-family: var(--font-family-title, "The Jamsil", sans-serif);
					font-size: 23px;
					font-weight: 800;
					line-height: 1.47;
				}

.pat-home .visual-section .helpdesk__guide {
				color: var(--color-text-body, #555);
				font-size: var(--font-size-sm, 16px);
				font-weight: 400;
				line-height: 1.55;

				@media screen and (max-width: 767px) {
					font-size: 14px;

					br {
						display: none; /* 모바일 화면에서 무리한 줄바꿈 방지*/
					}
  }
			}

.pat-home .visual-section .helpdesk__action .connect-link {
					display: inline-flex;
					width: 223px;
					height: 59px;
					padding: 9px 10px;
					justify-content: center;
					align-items: center;
					gap: 14px;
					/* Figma 버튼 토큰 그라데이션: 기본 blue-500 → 600 / 호버·포커스 한 단계 진하게 600 → 700*/
					/* 그라데이션은 transition이 안 되므로 진한 그라데이션을 ::before 덮개로 두고 왼쪽 기준 scaleX로 채워 나가게 전환*/
					position: relative;
					isolation: isolate; /* 덮개(z-index -1)를 버튼 배경 위 · 텍스트 아래에 두기 위한 쌓임 맥락*/
					overflow: hidden;
					background: linear-gradient(93deg, var(--button-primary-fill) 2.18%, var(--button-primary-fill-hover) 104.85%);
					transition: transform 0.2s ease;
				}

.pat-home .visual-section .helpdesk__action .connect-link::before {
						content: '';
						position: absolute;
						inset: 0;
						z-index: -1;
						background: linear-gradient(93deg, var(--button-primary-fill-hover) 2.18%, var(--button-primary-fill-pressed) 104.85%);
						transform: scaleX(0);
						transform-origin: left center;
						transition: transform 0.35s ease;
					}

.pat-home .visual-section .helpdesk__action .connect-link:hover,
					.pat-home .visual-section .helpdesk__action .connect-link:focus-visible {
						transform: translateY(-2px);
					}

.pat-home .visual-section .helpdesk__action .connect-link:hover::before, .pat-home .visual-section .helpdesk__action .connect-link:focus-visible::before {
							transform: scaleX(1);
						}

/* 흰 배너 위 파란 버튼 → 바깥 테두리는 대비가 약해 안쪽 흰 테두리로 포커스 표시*/

.pat-home .visual-section .helpdesk__action .connect-link:focus-visible {
						outline: 2px solid var(--text-inverse);
						outline-offset: -4px;
					}

.pat-home .visual-section .helpdesk__action .connect-link{

					@media screen and (max-width: 767px) {
						width: 100%;
						height: 50px;
  }
}

.pat-home .visual-section .helpdesk__action .connect-link .text {
						color: #fff;
						font-size: var(--font-size-sm, 16px);
						font-weight: 700;
						line-height: 1.5;
					}

.pat-home .visual-section .helpdesk__action .connect-link .icon {
						display: flex;
						align-items: center;
						justify-content: center;
						width: 21px;
						height: 21px;
						flex-shrink: 0;
					}

/* -------------------------------------------------------------------------- */

/* 네비게이션(바로가기) 섹션 */

/* -------------------------------------------------------------------------- */

.pat-home .navi-section {
		padding: 80px 0; /* 데스크탑 상하 여백*/

		@media screen and (min-width: 768px) and (max-width: 1279px) {
			padding: 60px 0;
  }

		@media screen and (max-width: 767px) {
			padding: 40px 0;
  }
	}

.pat-home .navi-section .navi-list {
			width: 100%;
			display: grid;
			grid-template-columns: repeat(7, 1fr); /* 데스크탑 7열 고정*/
			-moz-column-gap: 20px;
			     column-gap: 20px;
			row-gap: 40px;
			justify-items: center;

			@media screen and (min-width: 768px) and (max-width: 1279px) {
				grid-template-columns: repeat(4, 1fr); /* 태블릿 4열*/
				row-gap: 36px;
  }

			@media screen and (max-width: 767px) {
				grid-template-columns: repeat(3, 1fr); /* 모바일 3열*/
				-moz-column-gap: 12px;
				     column-gap: 12px;
				row-gap: 28px;
  }
		}

.pat-home .navi-section .navi-item {
			display: flex;
			flex-direction: column;
			align-items: center;
			gap: 20px;

			@media screen and (min-width: 768px) and (max-width: 1279px) {
				gap: 16px;
  }

			@media screen and (max-width: 767px) {
				gap: 12px;
  }
		}

.pat-home .navi-section .navi-item:has(.navi-link:hover) .link-ttl, .pat-home .navi-section .navi-item:focus-within .link-ttl {
					font-weight: var(--font-weight-bold); /* 700*/
				}

.pat-home .navi-section .navi-link {
			display: flex;
			align-items: center;
			justify-content: center;

			width: 120px;
			height: 120px;

			background-color: var(--color-bg-hover); /* #f7f7f7*/
			border-radius: 50%;
			transition: background-color 0.3s ease;

			@media screen and (min-width: 768px) and (max-width: 1279px) {
				width: 96px;
				height: 96px;
  }

			@media screen and (max-width: 767px) {
				width: 72px;
				height: 72px;
  }
		}

.pat-home .navi-section .navi-link:hover {
				background-color: var(--color-primary);
			}

.pat-home .navi-section .navi-link:hover .link-icon svg path {
					fill: var(--color-white);
				}

.pat-home .navi-section .navi-link .link-icon {
				display: inline-flex;
				vertical-align: middle;
				width: inherit;
				height: inherit;
			}

.pat-home .navi-section .navi-link .link-icon svg {
					width: inherit;
					height: inherit;
				}

.pat-home .navi-section .link-ttl {
			color: var(--color-text-secondary); /* #222*/
			text-align: center;
			font-family: var(--font-family-base);
			font-size: var(--font-size-lg); /* 18px*/
			font-weight: var(--font-weight-medium); /* 500*/
			line-height: 1.5; /* 27px*/

			@media screen and (min-width: 768px) and (max-width: 1279px) {
				font-size: var(--font-size-sm); /* 16px*/
  }

			@media screen and (max-width: 767px) {
				font-size: var(--font-size-xxs); /* 13px*/
  }
		}

.pat-home .navi-section .link-ttl__sub {
				display: block; /* 파트너 검색 영문 보조 라인*/
			}

/* -------------------------------------------------------------------------- */

/* 호라이즌 유럽 행사 섹션 */

/* -------------------------------------------------------------------------- */

.pat-home .event-section {
		padding: 130px 0;
		background-color: #F5F7FA;
		background-image: url("../../img/site/event-background.png");
		background-size: cover;
		background-position: center;

		@media screen and (min-width: 768px) and (max-width: 1279px) {
			padding: 80px 0;
  }

		@media screen and (max-width: 767px) {
			padding: 50px 0;
  }
	}

.pat-home .event-section .event-wrap {
			display: grid;
			grid-template-columns: 1fr 435px;
			gap: 40px;
			width: 100%;

			@media screen and (max-width: 1279px) {
				grid-template-columns: 1fr;
				gap: 40px;
  }
		}

.pat-home .event-section .event-wrap .event-banner {
				display: flex;
				flex-direction: column;
				width: 435px;
				height: 100%;
				min-height: 535px;
				box-sizing: border-box;
				padding: 50px 40px;

				background-image: url("../../img/site/event-banner.png");
				background-size: cover;
				background-position: center;

				color: #fff;

				@media screen and (max-width: 1279px) {
					width: 100%;
					height: auto;
					min-height: auto;
  }

				@media screen and (min-width: 768px) and (max-width: 1279px) {
					padding: 40px 30px;
  }

				@media screen and (max-width: 767px) {
					padding: 30px 20px;
  }
			}

.pat-home .event-section .event-wrap .event-banner .banner-ttl {
					color: #FFF;
					font-family: var(--font-family-title, "The Jamsil", sans-serif);
					font-size: 30px;
					font-style: normal;
					font-weight: 700;
					line-height: 1.47;

					margin-bottom: 35px;

					@media screen and (max-width: 767px) {
						font-size: 24px;
						margin-bottom: 20px;
  }
				}

.pat-home .event-section .event-wrap .event-banner .banner-paragraph {
					display: grid;
					gap: 18px;
					color: #FFF;
					font-size: 16px;
					font-weight: 500;
					line-height: 1.5;

					@media screen and (max-width: 767px) {
						font-size: 14px;
						gap: 12px;
  }
				}

.pat-home .event-section .event-wrap .event-banner .banner-link-group {
					margin-top: auto;
					display: grid;
					gap: 10px;

					@media screen and (min-width: 768px) and (max-width: 1279px) {
						grid-template-columns: repeat(2, 1fr);
						gap: 12px;
						margin-top: 30px;
  }

					@media screen and (max-width: 767px) {
						grid-template-columns: 1fr;
						margin-top: 24px;
  }
				}

.pat-home .event-section .event-wrap .event-banner .banner-link {
					display: flex;
					align-items: center;
					gap: 14px;
					height: 62px;
					box-sizing: border-box;
					padding: 12px 20px;

					border: 1.5px solid #FFF;
					background: rgba(255, 255, 255, 0.06);
					backdrop-filter: blur(1.5px);

					color: #FFF;
					font-size: 15px;
					font-weight: 700;

					transition: all 0.3s ease;

					@media screen and (max-width: 767px) {
						height: 52px;
						padding: 10px 16px;
						font-size: 14px;
  }
				}

.pat-home .event-section .event-wrap .event-banner .banner-link .link-icon {
						display: inline-flex;
						vertical-align: middle;
						width: 24px;
					}

.pat-home .event-section .event-wrap .event-banner .banner-link .link-arrow {
						margin-left: auto;
						width: 24px;
						height: 24px;
					}

.pat-home .event-section .event-wrap .event-banner .banner-link:hover,
					.pat-home .event-section .event-wrap .event-banner .banner-link:focus {
						background-color: #fff;
						color: #333333;
					}

.pat-home .event-section .event-wrap .event-board {
				display: flex;
				flex-direction: column;
				gap: 24px;
				min-width: 0;
			}

/* 그리드 1fr 열이 Swiper 트랙 너비만큼 늘어나지 않게*/

.pat-home .event-section .event-wrap .event-board .board-head {
					display: flex;
					flex-wrap: wrap;
					align-items: center;
					gap: 16px 24px;
				}

/* 정렬 셀렉트 + 공고 전체보기 (모바일은 제목 아래 줄로 내려 양끝 정렬)*/

.pat-home .event-section .event-wrap .event-board .board-tools {
					margin-left: auto;
					display: flex;
					align-items: center;
					gap: 32px;

					@media screen and (max-width: 767px) {
						width: 100%;
						justify-content: space-between;
						gap: 16px;
  }
				}

/* 섹션 배경 이미지가 비치도록 트리거만 투명 (펼친 옵션 목록은 흰 배경 유지)*/

.pat-home .event-section .event-wrap .event-board .board-tools .board-sort {
						background-color: transparent;
					}

.pat-home .event-section .event-wrap .event-board .board-more {
					display: flex;
					align-items: center;
					gap: 8px;

					color: #333;
					font-size: 16px;
					font-weight: 500;
					line-height: 100%;
					transition: color 0.3s ease;
				}

.pat-home .event-section .event-wrap .event-board .board-more:hover,
					.pat-home .event-section .event-wrap .event-board .board-more:focus,
					.pat-home .event-section .event-wrap .event-board .board-more:focus-visible {
						color: var(--color-primary);
						text-decoration: underline;
						text-underline-offset: 4px;
					}

.pat-home .event-section .event-wrap .event-board .board-more:hover .more-icon, .pat-home .event-section .event-wrap .event-board .board-more:focus .more-icon, .pat-home .event-section .event-wrap .event-board .board-more:focus-visible .more-icon {
							transform: translateX(4px);
						}

.pat-home .event-section .event-wrap .event-board .board-more:hover .more-icon svg path, .pat-home .event-section .event-wrap .event-board .board-more:focus .more-icon svg path, .pat-home .event-section .event-wrap .event-board .board-more:focus-visible .more-icon svg path {
								stroke: var(--color-primary);
							}

.pat-home .event-section .event-wrap .event-board .board-more .more-icon {
						display: flex;
						align-items: center;
						justify-content: center;
						width: 20px;
						height: 20px;
						transition: transform 0.3s ease;
					}

.pat-home .event-section .event-wrap .event-board .board-more .more-icon svg,
						.pat-home .event-section .event-wrap .event-board .board-more .more-icon img {
							width: inherit;
							height: inherit;
						}

.pat-home .event-section .event-wrap .event-board .board-more .more-icon svg path, .pat-home .event-section .event-wrap .event-board .board-more .more-icon img path {
								transition: stroke 0.3s ease;
							}

.pat-home .event-section .event-wrap .event-board .board-body {
					border-top: 2px solid #222;
				}

.pat-home .event-section .event-wrap .event-board .board-empty {
					margin-top: 28px;
				}

.pat-home .event-section .event-wrap .event-board .board-list {
					display: grid;
					grid-template-columns: repeat(2, 1fr);
					gap: 0 40px;

					@media screen and (max-width: 767px) {
						grid-template-columns: 1fr;
  }
				}

.pat-home .event-section .event-wrap .event-board .board-item {
					position: relative;
					display: flex;
					flex-direction: column;
					gap: 14px;
					padding: 28px 26px;
					border-bottom: 1px solid #CACACC;
					transition: all 0.3s ease;

					@media screen and (max-width: 767px) {
						padding: 20px 16px;
  }
				}

/* 진한 선을 기본 하단 선 위에 겹쳐 두고 왼쪽 기준 scaleX로 채워 나가게 전환*/

.pat-home .event-section .event-wrap .event-board .board-item::after {
						content: '';
						position: absolute;
						left: 0;
						right: 0;
						bottom: -1px;
						height: 1px;
						background-color: #222;
						transform: scaleX(0);
						transform-origin: left center;
						transition: transform 0.35s ease;
						pointer-events: none;
					}

.pat-home .event-section .event-wrap .event-board .board-item:hover::after, .pat-home .event-section .event-wrap .event-board .board-item:focus-within::after {
							transform: scaleX(1);
						}

.pat-home .event-section .event-wrap .event-board .board-item:hover .item-ttl, .pat-home .event-section .event-wrap .event-board .board-item:focus-within .item-ttl {
							text-decoration: underline;
							text-underline-offset: 4px;
						}

.pat-home .event-section .event-wrap .event-board .board-item .item-badge {
						display: inline-flex;
						vertical-align: middle;
						align-items: center;
						justify-content: center;
						align-self: flex-start;
						min-width: 84px;
						height: 28px;
						box-sizing: border-box;
						padding: 0 16px;
						gap: 8px;

						color: #FFF;
						font-size: 15px;
						font-weight: 500;
						background: #01A1C5;
					}

.pat-home .event-section .event-wrap .event-board .board-item .item-badge .badge-icon {
							display: inline-flex;
							vertical-align: middle;
						}

.pat-home .event-section .event-wrap .event-board .board-item .item-badge:has(.badge-icon) {
							background: var(--color-primary);
						}

.pat-home .event-section .event-wrap .event-board .board-item .item-ttl {
						display: block;
						overflow: hidden;
						text-overflow: ellipsis;
						word-break: break-all;
						white-space: nowrap;
						color: #222;
						font-size: 21px;
						font-weight: 700;
						margin-bottom: 4px;

						@media screen and (max-width: 767px) {
							font-size: 18px;
  }
					}

.pat-home .event-section .event-wrap .event-board .board-item .item-info {
						display: flex;
						flex-direction: column;
						gap: 4px;

						color: #222;
						font-size: 16px;
						font-weight: 500;

						@media screen and (max-width: 767px) {
							font-size: 14px;
  }
					}

.pat-home .event-section .event-wrap .event-board .board-item .item-info li {
							display: grid;
							grid-template-columns: auto 1fr;
							gap: 5px;
						}

.pat-home .event-section .event-wrap .event-board .board-item .item-info .info-label {
							display: flex;
							align-items: center;
							gap: 6px;
							color: #222;
						}

.pat-home .event-section .event-wrap .event-board .board-item .item-info .info-label .label-icon {
								display: inline-flex;
								justify-content: center;
								vertical-align: middle;
								width: 20px;
							}

.pat-home .event-section .event-wrap .event-board .board-item .item-info .info-date {
							display: flex;
							align-items: center;
							gap: 12px;
						}

.pat-home .event-section .event-wrap .event-board .board-item .item-info .info-date span b {
									font-weight: 600;
									color: #333;
								}

.pat-home .event-section .event-wrap .event-board .board-item .item-info .info-date span~span {
									position: relative;
									display: block;
								}

.pat-home .event-section .event-wrap .event-board .board-item .item-info .info-date span~span:before {
										position: absolute;
										top: 50%;
										left: -6px;
										transform: translate(-50%, -50%) skewY(-0.01deg);
										content: "";

										width: 4px;
										height: 4px;
										background-color: #AAA;
									}

.pat-home .event-section .event-wrap .event-board .board-item .item-info .info-contents {
							color: #555;
						}

.pat-home .event-section .event-wrap .event-board .board-item .item-link {
						position: absolute;
						top: 0;
						left: 0;
						width: 100%;
						height: 100%;

						display: flex;
						align-items: center;
						justify-content: space-between;
					}

.pat-home .event-section .event-wrap .event-board .board-item .item-link .link-text {
							color: transparent;
						}

.pat-home .event-section .event-wrap .event-board .board-item .item-link .link-icon {
							display: flex;
							align-items: center;
							justify-content: center;

							width: 42px;
							height: 42px;
							border-radius: 50%;
							background-color: #DBE1E6;

							transform: translateX(-10%);
							opacity: 0;
							transition: all 0.3s ease;
						}

.pat-home .event-section .event-wrap .event-board .board-item .item-link:hover .link-icon, .pat-home .event-section .event-wrap .event-board .board-item .item-link:focus .link-icon {
								transform: translateX(0);
								opacity: 1;
							}

.pat-home .event-section .event-section-ttl {
			color: #222;
			font-family: var(--font-family-title, "The Jamsil", sans-serif);
			font-size: 48px;
			font-weight: 700;

			@media screen and (min-width: 768px) and (max-width: 1279px) {
				font-size: 36px;
  }

			@media screen and (max-width: 767px) {
				font-size: 26px;
  }
		}

/* -------------------------------------------------------------------------- */

/* NCP & 파트너 검색 섹션 */

/* -------------------------------------------------------------------------- */

/* -------------------------------------------------------------------------- */

/* NCP & 파트너 검색 섹션 */

/* -------------------------------------------------------------------------- */

.pat-home .partner-section {
		padding: 120px 0;

		@media screen and (min-width: 768px) and (max-width: 1279px) {
			padding: 80px 0;
  }

		@media screen and (max-width: 767px) {
			padding: 50px 0;
  }
	}

.pat-home .partner-section .partner-wrap {
			display: flex;
			flex-direction: column;
			gap: 45px;
			width: 100%;

			@media screen and (max-width: 767px) {
				gap: 28px;
  }
		}

.pat-home .partner-section .partner-head {
			display: flex;
			align-items: center;

			@media screen and (max-width: 1279px) {
				flex-direction: column;
				align-items: flex-start;
				gap: 16px;
  }
		}

.pat-home .partner-section .partner-section-ttl {
			display: flex;
			align-items: center;
			gap: 8px;

			color: #222;
			font-family: var(--font-family-title, "The Jamsil", sans-serif);
			font-size: 48px;
			font-weight: 700;

			@media screen and (min-width: 768px) and (max-width: 1279px) {
				font-size: 36px;
  }

			@media screen and (max-width: 767px) {
				font-size: 26px;
				flex-wrap: wrap;
  }
		}

.pat-home .partner-section .partner-section-ttl .ttl-eng {
				color: rgba(110, 110, 110, 0.61);
				font-size: 28px;
				font-weight: 700;

				@media screen and (min-width: 768px) and (max-width: 1279px) {
					font-size: 20px;
  }

				@media screen and (max-width: 767px) {
					font-size: 16px;
  }
			}

.pat-home .partner-section .partner-more-group {
			margin-left: auto;
			display: flex;
			align-items: center;
			gap: 20px;

			@media screen and (max-width: 1279px) {
				margin-left: 0;
				gap: 16px;
				flex-wrap: wrap;
  }
		}

.pat-home .partner-section .partner-more-group .partner-more {
				margin-left: auto;

				display: flex;
				align-items: center;
				gap: 8px;

				color: #333;
				font-size: 16px;
				font-weight: 500;
				line-height: 100%;
				transition: color 0.3s ease;

				@media screen and (max-width: 767px) {
					font-size: 14px;
  }
			}

.pat-home .partner-section .partner-more-group .partner-more:hover,
				.pat-home .partner-section .partner-more-group .partner-more:focus,
				.pat-home .partner-section .partner-more-group .partner-more:focus-visible {
					color: var(--color-primary);
					text-decoration: underline;
					text-underline-offset: 4px;
				}

.pat-home .partner-section .partner-more-group .partner-more:hover .more-icon, .pat-home .partner-section .partner-more-group .partner-more:focus .more-icon, .pat-home .partner-section .partner-more-group .partner-more:focus-visible .more-icon {
						transform: translateX(4px);
					}

.pat-home .partner-section .partner-more-group .partner-more:hover .more-icon svg path, .pat-home .partner-section .partner-more-group .partner-more:focus .more-icon svg path, .pat-home .partner-section .partner-more-group .partner-more:focus-visible .more-icon svg path {
							stroke: var(--color-primary);
						}

.pat-home .partner-section .partner-more-group .partner-more .more-icon {
					display: flex;
					align-items: center;
					justify-content: center;
					width: 20px;
					height: 20px;
					transition: transform 0.3s ease;
				}

.pat-home .partner-section .partner-more-group .partner-more .more-icon svg,
					.pat-home .partner-section .partner-more-group .partner-more .more-icon img {
						width: inherit;
						height: inherit;
					}

.pat-home .partner-section .partner-more-group .partner-more .more-icon svg path, .pat-home .partner-section .partner-more-group .partner-more .more-icon img path {
							transition: stroke 0.3s ease;
						}

/* 필라 제목 2개 + 카드 8개(ERC·MSCA·클러스터 6)를 그리드 하나에 둔다.*/

/* 같은 행 카드가 높이를 공유해야 버튼 줄이 맞기 때문 — 필라별로 그리드를 나누면 행 높이가 어긋남*/

/* 1920 미만: 필라 제목이 전체 폭을 차지하고 필라별로 쌓임 (4열이면 카드 폭이 좁아 버튼 문구가 꺾임)*/

/* 1920 이상: 4열 — Pillar 1은 1열, Pillar 2는 2~4열*/

.pat-home .partner-section .partner-list {
			display: grid;
			grid-template-columns: repeat(3, minmax(0, 1fr));
			gap: 24px;

			@media screen and (min-width: 1920px) {
				grid-template-columns: repeat(4, minmax(0, 1fr));
  }

			@media screen and (min-width: 768px) and (max-width: 1279px) {
				grid-template-columns: repeat(2, minmax(0, 1fr));
				gap: 20px;
  }

			@media screen and (max-width: 767px) {
				grid-template-columns: minmax(0, 1fr);
				gap: 16px;
  }
		}

/* 필라 제목: 프로그램 안내 페이지 필라 헤더와 같은 표기(파랑 "Pillar N." + 국문 + 영문 + 굵은 하단선)*/

/* flex + 아래 정렬: 4열에서 Pillar 1 제목이 두 줄로 꺾여도 텍스트·하단선이 Pillar 2와 같은 높이에 맞음*/

.pat-home .partner-section .partner-pillar {
			grid-column: 1 / -1;
			display: flex;
			flex-wrap: wrap;
			align-items: baseline;
			align-content: flex-end;
			-moz-column-gap: 0.35em;
			     column-gap: 0.35em;
		}

.pat-home .partner-section .partner-pillar .el-content-title__prefix,
			.pat-home .partner-section .partner-pillar .el-title-en {
				margin: 0;
			}

/* 쌓인 배치에서 앞 필라 카드와 거리를 두어 묶음을 구분*/

.pat-home .partner-section .partner-pillar--2 {
				margin-top: var(--spacing-32);

				@media screen and (max-width: 767px) {
					margin-top: var(--spacing-24);
  }
			}

.pat-home .partner-section .partner-item {
			display: flex;
			flex-direction: column;
			position: relative;
			/* 고정 높이 대신 최소 높이: 긴 제목(Cluster 6)이 넘치지 않고, 같은 행 카드는 grid로 함께 늘어남*/
			min-height: 275px;
			box-sizing: border-box;
			padding: 30px 26px;
			background: #FFF;

			@media screen and (max-width: 1279px) {
				height: auto;
				min-height: 260px;
  }

			@media screen and (max-width: 767px) {
				padding: 24px 20px;
				min-height: auto;
  }
		}

.pat-home .partner-section .partner-item:before {
				content: "";
				position: absolute;
				top: 0;
				left: 0;
				width: 100%;
				height: 100%;
				box-sizing: border-box;

				border: 1px solid #DDD;

				pointer-events: none;

				transition: border-color 0.3s ease, background-color 0.3s ease, box-shadow 0.3s ease;
			}

.pat-home .partner-section .partner-item:hover:before, .pat-home .partner-section .partner-item:focus-within:before {
					border: 2px solid var(--color-primary);
					background: rgb(var(--color-primary-rgb) / 0.03);
					box-shadow: 7px 7px 0 -12px rgba(0, 0, 0, 0.07);
				}

.pat-home .partner-section .partner-item .item-contents {
				display: grid;
				grid-template-columns: 1fr auto;
				align-items: flex-start;
				gap: 14px;

				line-height: 1;
			}

.pat-home .partner-section .partner-item .item-ttl {
				grid-row-start: 2;
				color: #222;
				font-size: 24px;
				font-weight: 700;
				line-height: 1.5;
				word-break: keep-all;

				@media screen and (max-width: 767px) {
					font-size: 20px;
  }
			}

.pat-home .partner-section .partner-item .item-order {
				color: var(--color-primary);
				font-size: 16px;
				font-weight: 600;
				text-transform: uppercase;

				@media screen and (max-width: 767px) {
					font-size: 14px;
  }
			}

.pat-home .partner-section .partner-item .item-icon {
				transform: translate(-10px, 10px);
				grid-row: span 2;

				@media screen and (max-width: 767px) {
					transform: translate(0, 0);

					svg {
						width: 52px;
						height: 52px;
					}
  }
			}

.pat-home .partner-section .partner-item .item-icon svg,
				.pat-home .partner-section .partner-item .item-icon img {
					width: inherit;
					height: inherit;
				}

.pat-home .partner-section .partner-item .item-link-group {
				margin-top: auto;
				display: flex;
				gap: 10px;

				@media screen and (max-width: 767px) {
					flex-direction: column;
					gap: 8px;
					margin-top: 20px;
  }
			}

.pat-home .partner-section .partner-item .item-link-group .item-link {
					display: flex;
					align-items: center;
					justify-content: center;
					gap: 4px;
					flex: 1 1 50%;
					height: 62px;
					box-sizing: border-box;
					border: 1px solid #DDD;

					color: #333;
					font-size: 15px;
					font-weight: 500;
					line-height: 1.2;
					text-align: center;

					transition: all 0.3s ease;

					@media screen and (max-width: 767px) {
						flex: none;
						height: 48px;
						font-size: 14px;

						br {
							display: none;
						}
  }
				}

.pat-home .partner-section .partner-item .item-link-group .item-link .link-icon {
						display: inline-flex;
						align-items: center;
						justify-content: center;
						width: 20px;
						height: 20px;

						opacity: 0;
						max-width: 0;
						transform: translateX(-6px);
						overflow: hidden;

						transition: opacity 0.3s ease, max-width 0.3s ease, transform 0.3s ease;
					}

.pat-home .partner-section .partner-item .item-link-group .item-link .link-icon svg {
							width: 20px;
							height: 20px;
							flex-shrink: 0;
						}

/* 마크업의 stroke="#333333"은 파란 채움 위에서 안 보이므로 글자색을 따르게 함*/

.pat-home .partner-section .partner-item .item-link-group .item-link .link-icon svg path {
								stroke: currentColor;
							}

/* 카드 hover 때는 테두리·배경만 바꾸고, 버튼 채움은 해당 버튼에 올렸을 때만*/

.pat-home .partner-section .partner-item .item-link-group .item-link:hover,
					.pat-home .partner-section .partner-item .item-link-group .item-link:focus,
					.pat-home .partner-section .partner-item .item-link-group .item-link:focus-visible {
						gap: 8px;
						background-color: var(--color-primary);
						border-color: var(--color-primary);
						color: #fff;
					}

.pat-home .partner-section .partner-item .item-link-group .item-link:hover .link-icon, .pat-home .partner-section .partner-item .item-link-group .item-link:focus .link-icon, .pat-home .partner-section .partner-item .item-link-group .item-link:focus-visible .link-icon {
							opacity: 1;
							max-width: 20px;
							transform: translateX(0);
						}

/* NCP & 파트너 검색 4열 배치 — @media 안에서 &-- 가 전개되지 않아 최상위 선택자로 작성*/

/* Pillar 1(제목·ERC·MSCA)은 1열에 고정, 클러스터는 남은 칸(2~4열)에 자동 배치*/

@media screen and (min-width: 1920px) {
	.pat-home .partner-section .partner-pillar--1 {
		grid-column: 1;
		grid-row: 1;
	}

	.pat-home .partner-section .partner-pillar--2 {
		grid-column: 2 / -1;
		grid-row: 1;
		margin-top: 0;
	}

	.pat-home .partner-section .partner-item--erc {
		grid-area: 2 / 1;
	}

	.pat-home .partner-section .partner-item--msca {
		grid-area: 3 / 1;
	}
  }

/**
 * _login.scss
 * Patterns 레이어 - 로그인 페이지 전용 패턴 (.pat-login)
 */

.pat-login {
  width: 440px;
  max-width: 100%;
  margin: 0 auto;
  padding: 1.5rem 0 3rem;
}

.pat-login__title {
    font-family: var(--font-family-title, "The Jamsil", sans-serif);
    font-size: 2.5rem; /* 40px*/
    font-weight: var(--font-weight-bold, 700);
    color: var(--color-text-primary, #111111);
    text-align: center;
    letter-spacing: var(--letter-spacing-tight, -0.02em);
    margin-bottom: 3.25rem; /* 52px*/
  }

.pat-login__form {
    display: flex;
    flex-direction: column;
  }

.pat-login__field {
    display: flex;
    flex-direction: column;
    margin-bottom: 1.375rem; /* 22px*/
  }

.pat-login__label {
    font-family: var(--font-family-base);
    /* 인풋 높이 56px(large) 대응 레이블 — Figma 52:714 (17px)*/
    font-size: var(--font-body-large-medium-size, 17px);
    font-weight: var(--font-weight-medium, 500);
    color: var(--color-text-secondary, #222222);
    margin-bottom: 0.5rem; /* 8px*/
  }

.pat-login__input-wrap {
    position: relative;
    width: 100%;
  }

.pat-login__input-wrap--password .pat-login__input {
        padding-right: 3rem; /* 토글 버튼 공간 확보*/
      }

.pat-login__input {
    width: 100%;
    height: 56px;
    padding: 0 1rem;
    background-color: var(--color-surface, #ffffff);
    border: 1px solid var(--color-border-form, #dadcde);
    border-radius: var(--radius-md, 4px);
    font-family: var(--font-family-base);
    font-size: var(--font-size-sm, 16px);
    color: var(--color-text-primary, #111111);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
  }

.pat-login__input::-moz-placeholder {
      color: var(--color-gray-400, #a0aec0);
    }

.pat-login__input::placeholder {
      color: var(--color-gray-400, #a0aec0);
    }

.pat-login__input:focus {
      outline: none;
      border-color: var(--color-primary, #396CFA);
      box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.12);
    }

.pat-login__btn-toggle-pw {
    position: absolute;
    right: 0.875rem; /* 14px*/
    top: 50%;
    transform: translateY(-50%);
    background: transparent;
    border: none;
    padding: 0.25rem;
    color: var(--color-gray-500, #718096);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius-sm, 2px);
    transition: color 0.15s ease;
  }

.pat-login__btn-toggle-pw:hover {
      color: var(--color-text-primary, #111111);
    }

.pat-login__btn-toggle-pw svg {
      flex-shrink: 0;
    }

.pat-login__btn-toggle-pw svg.hidden {
        display: none;
      }

.pat-login__options {
    margin-top: 0.375rem;
    margin-bottom: 2rem; /* 32px*/
    display: flex;
    align-items: center;
  }

.pat-login__options .mod-checkbox__label {
      font-size: var(--font-size-xs, 15px);
      color: var(--color-text-secondary, #222222);
    }

.pat-login__submit-wrap {
    width: 100%;
  }

.pat-login__submit-btn {
    width: 100%;
    height: 56px;
    background-color: var(--color-primary, #396CFA);
    border-color: var(--color-primary, #396CFA);
    color: #ffffff;
    font-size: var(--font-size-sm, 16px);
    font-weight: var(--font-weight-medium, 500);
    border-radius: var(--radius-md, 4px);
    transition: background-color 0.15s ease, box-shadow 0.15s ease;
  }

.pat-login__submit-btn:hover:not(:disabled) {
      background-color: var(--color-primary-hover, #2E56C8);
      border-color: var(--color-primary-hover, #2E56C8);
    }

.pat-login__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 1.75rem; /* 28px*/
    padding: 0 0.125rem;
  }

.pat-login__find-links {
    display: flex;
    align-items: center;
    gap: 1.25rem; /* 20px*/
  }

.pat-login__link {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem; /* 4px*/
    font-family: var(--font-family-base);
    font-size: var(--font-size-xs, 15px);
    color: var(--color-text-body, #555555);
    text-decoration: none;
    transition: color 0.15s ease;
  }

.pat-login__link .icon-chevron {
      color: var(--color-gray-400, #a0aec0);
      transition: transform 0.15s ease, color 0.15s ease;
    }

.pat-login__link:hover {
      color: var(--color-text-primary, #111111);
    }

.pat-login__link:hover .icon-chevron {
        color: var(--color-text-primary, #111111);
        transform: translateX(2px);
      }

.pat-login__link--primary {
      color: var(--color-primary, #396CFA);
      font-weight: var(--font-weight-medium, 500);
    }

.pat-login__link--primary .icon-chevron {
        color: var(--color-primary, #396CFA);
      }

.pat-login__link--primary:hover {
        color: var(--color-primary-hover, #2E56C8);
      }

.pat-login__link--primary:hover .icon-chevron {
          color: var(--color-primary-hover, #2E56C8);
        }

@media (max-width: 480px) {

.pat-login {
    padding: 1rem 1rem 2rem
}

    .pat-login__title {
      font-size: 2rem;
      margin-bottom: 2.25rem;
    }

    .pat-login__footer {
      flex-direction: column;
      gap: 1rem;
      align-items: flex-start;
    }
  }

/**/

/**
 * _signup.scss
 * Patterns 레이어 - 회원가입 약관동의 카드형 패턴 (.pat-signup)
 */

.pat-signup {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 2.5rem 1rem 4rem;
}

/* ── 카드형 메인 컨테이너 ─────────────────────────────────*/

.pat-signup-card {
    width: 600px;
    max-width: 100%;
    background-color: var(--color-surface, #ffffff);
    border-radius: var(--radius-fig-xl, 16px);
    border: 1px solid var(--color-border-default, #eaeaea);
    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.05), 0 1px 2px 0 rgba(0, 0, 0, 0.05);
    padding: 3.5rem 3rem;
    display: flex;
    flex-direction: column;
  }

@media (max-width: 640px) {

.pat-signup-card {
      padding: 2rem 1.5rem;
      border-radius: var(--radius-fig-xl, 16px)
  }
    }

/* ── 상단 언어 선택 세그먼트 래퍼 ────────────────────────*/

.pat-signup__lang-wrapper {
    display: flex;
    justify-content: center;
    margin-bottom: 2rem;
  }

.pat-signup__lang-wrapper .mod-toggle {
      background-color: var(--color-gray-100, #f0f2f5);
      border-radius: var(--radius-md, 6px);
      padding: 4px;
    }

.pat-signup__lang-wrapper .mod-toggle__option {
        min-width: 76px;
        height: 34px;
        font-size: 14px;
        border-radius: var(--radius-md, 4px);
        color: var(--color-text-muted, #718096);
      }

.pat-signup__lang-wrapper .mod-toggle__option.is-active {
          background-color: var(--color-surface, #ffffff);
          color: var(--color-text-primary, #111111);
          box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
        }

/* ── 페이지 제목 ─────────────────────────────────────────*/

.pat-signup__title {
    font-family: var(--font-family-base);
    font-size: 2.125rem; /* 34px*/
    font-weight: var(--font-weight-bold, 700);
    color: var(--color-text-primary, #111111);
    text-align: center;
    letter-spacing: var(--letter-spacing-tight, -0.02em);
    margin-bottom: 2.5rem; /* 40px*/
  }

.pat-signup__form {
    display: flex;
    flex-direction: column;
    gap: 2rem; /* 32px*/
  }

/* ── 약관 섹션 ──────────────────────────────────────────*/

.pat-signup__section {
    display: flex;
    flex-direction: column;
  }

.pat-signup__section-title {
    font-family: var(--font-family-base);
    font-size: var(--font-size-sm, 16px);
    font-weight: var(--font-weight-bold, 700);
    color: var(--color-text-primary, #222222);
    margin-bottom: 0.75rem; /* 12px*/
  }

/* ── 약관 텍스트 스크롤 박스 ──────────────────────────────*/

.pat-signup__terms-box {
    height: 140px;
    overflow-y: auto;
    background-color: var(--color-surface, #ffffff);
    border: 1px solid var(--color-border-form, #e2e8f0);
    border-radius: var(--radius-md, 4px);
    padding: 1.25rem 1.25rem; /* 20px*/
    font-family: var(--font-family-base);
    font-size: var(--font-size-xs, 14px);
    line-height: 1.65;
    color: var(--color-text-body, #4a5568);
    margin-bottom: 0.875rem; /* 14px;*/
    transition: border-color 0.2s ease;
  }

.pat-signup__terms-box:focus {
      outline: none;
      border-color: var(--color-primary, #396CFA);
    }

.pat-signup__terms-box p {
      margin-bottom: 0.75rem;
    }

.pat-signup__terms-box p:last-child {
        margin-bottom: 0;
      }

.pat-signup__terms-box strong {
      color: var(--color-text-primary, #1a202c);
    }

/* 커스텀 스크롤바*/

.pat-signup__terms-box::-webkit-scrollbar {
      width: 5px;
    }

.pat-signup__terms-box::-webkit-scrollbar-thumb {
      background-color: var(--color-gray-300, #cbd5e0);
      border-radius: 3px;
    }

/* ── 체크박스 래퍼 ──────────────────────────────────────*/

.pat-signup__check-wrap {
    display: flex;
    align-items: center;
  }

.pat-signup__check-wrap .mod-checkbox__box {
        width: 20px;
        height: 20px;
        border-radius: 4px;
      }

.pat-signup__check-wrap .mod-checkbox__label {
        font-size: var(--font-size-xs, 15px);
        font-weight: var(--font-weight-medium, 500);
        color: var(--color-text-secondary, #2d3748);
      }

/* ── 스텝 제어 ───────────────────────────────────────────*/

.pat-signup__step.is-hidden {
      display: none !important;
    }

/* ── 2단계 폼 필드 공통 ───────────────────────────────────*/

.pat-signup__form-info {
    display: flex;
    flex-direction: column;
    gap: 1.5rem; /* 24px*/
  }

.pat-signup__field {
    display: flex;
    flex-direction: column;
  }

.pat-signup__field--cluster {
      margin-top: 0.5rem;
    }

.pat-signup__field--newsletter {
      background-color: var(--color-gray-50, #f8fafc);
      border: 1px solid var(--color-border-default, #edf2f7);
      border-radius: var(--radius-md, 6px);
      padding: 1.25rem 1rem;
    }

.pat-signup__label-wrap {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 0.375rem;
  }

.pat-signup__label {
    font-family: var(--font-family-base);
    /* 인풋 높이 52px(large급) 대응 레이블 — Figma 52:714 (17px Medium)*/
    font-size: var(--font-body-large-medium-size, 17px);
    font-weight: var(--font-weight-medium, 500);
    color: var(--color-text-primary, #1a202c);
    margin-bottom: 0.5rem; /* 8px*/
  }

.pat-signup__required {
    color: var(--color-error, #eb2a29);
    margin-left: 2px;
  }

.pat-signup__optional {
    font-weight: var(--font-weight-regular, 400);
    color: var(--color-text-muted, #718096);
    font-size: 13px;
  }

.pat-signup__info-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-muted, #718096);
    background: none;
    border: none;
    cursor: pointer;
    padding: 2px;
    border-radius: 50%;
    transition: color 0.15s ease;
  }

.pat-signup__info-btn:hover {
      color: var(--color-primary, #396CFA);
    }

/* ── 인풋 박스 및 셀렉트 ──────────────────────────────────*/

.pat-signup__input {
    width: 100%;
    height: 52px;
    padding: 0 1rem;
    font-family: var(--font-family-base);
    font-size: var(--font-size-xs, 14px);
    color: var(--color-text-primary, #1a202c);
    background-color: var(--color-surface, #ffffff);
    border: 1px solid var(--color-border-form, #cbd5e0);
    border-radius: var(--radius-md, 4px);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
  }

.pat-signup__input::-moz-placeholder {
      color: var(--color-gray-400, #a0aec0);
      font-size: 13px;
    }

.pat-signup__input::placeholder {
      color: var(--color-gray-400, #a0aec0);
      font-size: 13px;
    }

.pat-signup__input:focus {
      outline: none;
      border-color: var(--color-primary, #396CFA);
      box-shadow: 0 0 0 3px rgba(57, 108, 250, 0.12);
    }

.pat-signup__input[readonly] {
      background-color: var(--color-gray-100, #f7fafc);
      color: var(--color-text-muted, #718096);
      cursor: not-allowed;
    }

.pat-signup__input-group {
    display: flex;
    align-items: stretch;
    gap: 8px;
  }

.pat-signup__input-group .pat-signup__input {
      flex: 1;
    }

.pat-signup__inline-btn {
    min-width: 130px;
    height: 52px;
    padding: 0 0.875rem;
    font-size: 13px;
    font-weight: var(--font-weight-medium, 500);
    line-height: 1.25;
    text-align: center;
    white-space: nowrap;
    border-radius: var(--radius-md, 4px);
    border: 1px solid var(--color-border-form, #cbd5e0);
    background-color: var(--color-surface, #ffffff);
    color: var(--color-text-secondary, #2d3748);
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
  }

/* 국문 ↔ 영문 줄 간격 (.el-btn 기본 8px은 세로 배치에서 너무 벌어짐)*/

.pat-signup__inline-btn:hover {
      background-color: var(--color-gray-50, #f7fafc);
      border-color: var(--color-gray-400, #a0aec0);
      color: var(--color-text-primary, #1a202c);
    }

.pat-signup__btn-sub {
    font-size: 11px;
    color: var(--color-text-muted, #718096);
    font-weight: 400;
  }

/* ── 국가 검색 셀렉트 (.mod-select + 검색, country-select.js) ──────*/

/* 다른 입력칸(52px · 14px · 회색 테두리)과 높이·테두리를 맞춤. 에러는 .mod-select.is-error*/

.pat-signup__country {
    width: 100%;
    min-width: 0;
    min-height: 52px;
    font-size: var(--font-size-xs, 14px);
    border-color: var(--color-border-form, #cbd5e0);
  }

/* 선택 전 안내 문구는 입력칸 placeholder 와 같은 회색*/

.pat-signup__country[data-value=""] .mod-select__value-text {
      color: var(--color-gray-400, #a0aec0);
      font-size: 13px;
    }

/* ── 비밀번호 포지셔닝 ─────────────────────────────────────*/

.pat-signup__input-wrap {
    position: relative;
    width: 100%;
  }

.pat-signup__input-wrap--password .pat-signup__input {
        padding-right: 3rem;
      }

.pat-signup__password-toggle {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    color: var(--color-gray-500, #718096);
    cursor: pointer;
    padding: 6px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: color 0.15s ease;
  }

.pat-signup__password-toggle:hover {
      color: var(--color-primary, #396CFA);
    }

/* ── 힌트 및 안내 텍스트 ───────────────────────────────────*/

.pat-signup__field-notice {
    font-size: 12px;
    line-height: 1.5;
    color: var(--color-text-muted, #64748b);
    margin-top: 6px;
  }

.pat-signup__field-notice.is-success {
      color: var(--color-success, #2b8a3e);
      font-weight: 500;
    }

.pat-signup__field-hint {
    font-size: 12px;
    color: var(--color-text-muted, #718096);
    margin-top: 6px;
  }

.pat-signup__sub-notice {
    font-size: 12px;
    color: var(--color-text-muted, #64748b);
    margin-bottom: 0.875rem;
    line-height: 1.4;
  }

/* ── 관심 분야 (클러스터) 그리드 ─────────────────────────*/

.pat-signup__cluster-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
  }

@media (max-width: 580px) {

.pat-signup__cluster-grid {
      grid-template-columns: 1fr
  }
    }

.pat-signup__cluster-item {
    display: flex;
    align-items: flex-start;
    padding: 10px 12px;
    border: 1px solid var(--color-border-default, #e2e8f0);
    border-radius: var(--radius-md, 6px);
    background-color: var(--color-surface, #ffffff);
    transition: all 0.15s ease;
    cursor: pointer;
  }

.pat-signup__cluster-item:hover {
      border-color: var(--color-primary-hover, #93c5fd);
      background-color: var(--color-blue-50, #f5f8ff);
    }

.pat-signup__cluster-item .mod-checkbox__box {
      margin-top: 2px;
      flex-shrink: 0;
    }

.pat-signup__cluster-item .mod-checkbox__label {
      font-size: 12.5px;
      line-height: 1.35;
      color: var(--color-text-secondary, #334155);
    }

.pat-signup__cluster-item .mod-checkbox__label strong {
        color: var(--color-text-primary, #0f172a);
        font-weight: 600;
      }

.pat-signup__cluster-item .mod-checkbox__label .en-sub {
        font-size: 11px;
        color: var(--color-text-muted, #64748b);
        font-weight: 400;
      }

/* ── STEP 3: 회원가입 완료 화면 ───────────────────────────*/

.pat-signup__complete {
    display: flex;
    flex-direction: column;
  }

/* 영문 상단/국문 하단은 .el-title-stack 사용*/

.pat-signup__complete-title {
    margin-bottom: 2.5rem; /* 40px*/
  }

/* 환영 메시지*/

.pat-signup__complete-msg {
    font-family: var(--font-family-base);
    font-size: var(--font-size-sm, 16px);
    line-height: 1.6;
    color: var(--color-text-secondary, #2d3748);
    padding-bottom: 1.75rem; /* 28px*/
    margin-bottom: 1.75rem;
    border-bottom: 1px dashed var(--color-border-form, #e2e8f0);
  }

.pat-signup__complete-msg strong {
      font-weight: var(--font-weight-bold, 700);
      color: var(--color-text-primary, #1a202c);
    }

.pat-signup__complete-msg .en-sub {
      display: inline-block;
      margin-top: 0.375rem;
      font-size: var(--font-size-xs, 14px);
      color: var(--color-text-muted, #64748b);
    }

/* 보안 / 회원 탈퇴 안내 블록*/

.pat-signup__complete-block {
    padding-bottom: 1.75rem; /* 28px*/
    margin-bottom: 1.75rem;
    border-bottom: 1px dashed var(--color-border-form, #e2e8f0);
  }

.pat-signup__complete-block:last-of-type {
      border-bottom: none;
      margin-bottom: 0.5rem;
    }

.pat-signup__complete-block-title {
    font-family: var(--font-family-base);
    font-size: var(--font-size-sm, 16px);
    font-weight: var(--font-weight-bold, 700);
    color: var(--color-text-primary, #1a202c);
    margin-bottom: 0.625rem; /* 10px*/
  }

.pat-signup__complete-block-text {
    font-family: var(--font-family-base);
    font-size: var(--font-size-xs, 14px);
    line-height: 1.6;
    color: var(--color-text-secondary, #2d3748);
  }

.pat-signup__complete-block-text .en-sub {
      display: inline-block;
      margin-top: 0.25rem;
      color: var(--color-text-muted, #64748b);
    }

/* 홈으로 이동 버튼 영역*/

.pat-signup__complete-actions {
    display: flex;
    justify-content: center;
    margin-top: 2.5rem; /* 40px*/
  }

.pat-signup__home-btn {
    flex: 0 1 auto;
    min-width: 260px;
    gap: 0.5rem;
  }

/* ── 하단 버튼 세트 ──────────────────────────────────────*/

.pat-signup__actions {
    display: flex;
    align-items: center;
    gap: 0.875rem; /* 14px*/
    margin-top: 1.25rem; /* 20px*/
  }

.pat-signup__btn {
    flex: 1;
    height: 54px;
    font-size: var(--font-size-sm, 16px);
    font-weight: var(--font-weight-medium, 500);
    border-radius: var(--radius-md, 4px);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: all 0.15s ease;
  }

/* 취소/이전 버튼 (Ghost / Outline)*/

.pat-signup__btn.el-btn--ghost {
      background-color: var(--color-surface, #ffffff);
      border: 1px solid var(--color-border-form, #cbd5e0);
      color: var(--color-text-body, #4a5568);
    }

.pat-signup__btn.el-btn--ghost:hover {
        background-color: var(--color-gray-50, #f7fafc);
        color: var(--color-text-primary, #1a202c);
        border-color: var(--color-gray-400, #a0aec0);
      }

/* 동의/다음 버튼 (Primary Fill)*/

.pat-signup__btn.el-btn--primary {
      background-color: var(--color-primary, #396CFA);
      border-color: var(--color-primary, #396CFA);
      color: #ffffff;
    }

.pat-signup__btn.el-btn--primary:hover {
        background-color: var(--color-primary-hover, #2E56C8);
        border-color: var(--color-primary-hover, #2E56C8);
      }

/**
 * _account-recovery.scss
 * Patterns 레이어 - 계정 복구(아이디 찾기 / 비밀번호 재설정) 전용 요소 (.pat-account)
 *
 * 카드 셸·입력·버튼 등 공통 골격은 .pat-signup(_signup.scss)을 재사용하며,
 * 이 파일은 복구 화면 고유 요소(안내문·결과 박스·지원 링크)만 캡슐화한다.
 */

/* 계정/인증 페이지(회원가입·아이디 찾기·비밀번호 재설정) 전용 카드 밖 배경.*/

/* core-router.js가 해당 라우트에서 body에 .is-account-bg를 부착/해제한다.*/

body.is-account-bg {
  background-color: var(--color-bg-subtle, #f8f9fb);
}

/* 카드 밖 배경을 실제로 칠하는 레이아웃 래퍼(.pat-layout)를 덮어쓴다.*/

body.is-account-bg .pat-layout {
    background-color: var(--color-bg-subtle, #f8f9fb);
  }

/* ── 제목(KR/EN 병기) — 영문 상단/국문 하단은 .el-title-stack 사용 ─────*/

.pat-account__title {
    margin-bottom: 1.5rem; /* 24px*/
  }

/* ── 안내 문구(리드 텍스트) ────────────────────────────────*/

.pat-account__lead {
    font-family: var(--font-family-base);
    font-size: var(--font-size-sm, 16px);
    line-height: 1.6;
    color: var(--color-text-secondary, #2d3748);
    margin-bottom: 2rem;
  }

/* 32px*/

.pat-account__lead .en-sub {
      display: inline-block;
      margin-top: 0.375rem;
      font-size: var(--font-size-xs, 14px);
      color: var(--color-text-muted, #64748b);
    }

.pat-account__lead--center {
      text-align: center;
    }

/* ── 아이디 결과 박스 ─────────────────────────────────────*/

.pat-account__result-box {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.875rem; /* 14px*/
    background-color: var(--color-gray-50, #f8fafc);
    border: 1px solid var(--color-border-default, #edf2f7);
    border-radius: var(--radius-md, 8px);
    padding: 2rem 1.5rem; /* 32px 24px*/
    margin-bottom: 2rem;
  }

.pat-account__result-label {
    font-family: var(--font-family-base);
    font-size: var(--font-size-xs, 14px);
    font-weight: var(--font-weight-medium, 500);
    color: var(--color-text-secondary, #4a5568);
  }

.pat-account__result-id {
    font-family: var(--font-family-base);
    font-size: 1.75rem; /* 28px*/
    font-weight: var(--font-weight-bold, 700);
    color: var(--color-primary, #396CFA);
    letter-spacing: var(--letter-spacing-tight, -0.01em);
    word-break: break-all;
  }

/* ── 단일 버튼 영역(로그인 바로가기 등) ────────────────────*/

.pat-account__actions {
    display: flex;
    justify-content: center;
  }

.pat-account__wide-btn {
    flex: 0 1 auto;
    min-width: 280px;
    height: auto;
    padding: 0.875rem 1.5rem;
    line-height: 1.35;
  }

.pat-account__btn-sub {
    font-size: var(--font-size-xs, 13px);
    font-weight: var(--font-weight-regular, 400);
    color: var(--color-text-muted, #718096);
  }

/* ── 공통 하단 지원 링크 ───────────────────────────────────*/

.pat-account__support {
    margin-top: 2rem; /* 32px*/
    padding-top: 1.5rem;
    border-top: 1px solid var(--color-border-default, #edf2f7);
    text-align: center;
  }

.pat-account__support-link {
    font-family: var(--font-family-base);
    font-size: var(--font-size-xs, 14px);
    color: var(--color-text-muted, #64748b);
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color 0.15s ease;
  }

.pat-account__support-link:hover {
      color: var(--color-primary, #396CFA);
    }

/**
 * _my-account.scss
 * Patterns 레이어 - 회원정보 수정(마이페이지) 패턴 (.pat-myaccount)
 *
 * 카드 셸 + 폼 테이블(라벨|내용 병렬, 모바일 직렬) 하이브리드.
 * 입력·체크박스·버튼·관심분야 그리드는 기존 모듈/패턴(mod-input, mod-checkbox,
 * el-btn, mod-form-table--responsive, pat-signup__cluster-grid)을 재사용한다.
 */

.pat-myaccount {
  width: 100%;
}

/* ── 상단 환영 메시지 ─────────────────────────────────────*/

.pat-myaccount__welcome {
    margin-bottom: 2rem; /* 32px*/
  }

.pat-myaccount__welcome-title {
    font-family: var(--font-family-base);
    font-size: 1.5rem; /* 24px*/
    font-weight: var(--font-weight-bold, 700);
    color: var(--color-text-primary, #1a202c);
    letter-spacing: var(--letter-spacing-tight, -0.02em);
    margin-bottom: 0.625rem; /* 10px*/
  }

.pat-myaccount__welcome-desc {
    font-family: var(--font-family-base);
    font-size: var(--font-size-sm, 15px);
    line-height: 1.6;
    color: var(--color-text-muted, #718096);
  }

.pat-myaccount__welcome-desc .en-sub {
      display: inline-block;
      margin-top: 0.25rem;
      font-size: var(--font-size-xs, 14px);
      color: var(--color-text-muted, #94a3b8);
    }

/* ── 회원정보 수정 카드 ───────────────────────────────────*/

.pat-myaccount__card {
    background-color: var(--color-surface, #ffffff);
    border: 1px solid var(--color-border-default, #eaeaea);
    border-radius: var(--radius-fig-xl, 16px);
    box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.05), 0 1px 2px 0 rgba(0, 0, 0, 0.05);
    padding: 2.5rem 2.25rem;
  }

/* 40px 36px*/

@media (max-width: 640px) {

.pat-myaccount__card {
      padding: 1.5rem 1.25rem
  }
    }

.pat-myaccount__card-title {
    font-family: var(--font-family-base);
    font-size: 1.375rem; /* 22px*/
    font-weight: var(--font-weight-bold, 700);
    color: var(--color-text-primary, #1a202c);
    letter-spacing: var(--letter-spacing-tight, -0.02em);
    margin-bottom: 1.5rem; /* 24px*/
  }

/* ── 마이페이지 탭 (.mod-tab--page --bilingual 재사용) ──────*/

/* 프로그램 안내와 같은 3뎁스 탭(가운데 정렬 · 동일 폭). 이 파일은 카드까지 간격만 담당*/

.pat-myaccount__tabs {
    margin-bottom: var(--spacing-32, 32px);
  }

.pat-myaccount__tab-count {
    margin-left: 6px;
    font-weight: var(--font-weight-regular, 400);
    opacity: 0.8;
  }

/* 카드 제목 아래 안내 (목록 탭)*/

.pat-myaccount__card-desc {
    margin: -0.75rem 0 1.5rem; /* 제목 아래 24 → 12 로 붙이고, 표까지 24*/
    font-size: var(--font-body-small-regular-size, 0.9375rem);
    line-height: 1.6;
    color: var(--text-default, #4a5667);
    word-break: keep-all;
  }

.pat-myaccount__card-desc .en-sub {
      display: inline-block;
      margin-top: 0.25rem;
      font-size: var(--font-body-xsmall-regular-size, 0.875rem);
      color: var(--text-muted, #929aaa);
    }

/* 관심 연구자 모달: 어떤 글의 목록인지*/

.pat-myaccount__modal-post {
    margin: 0 0 var(--spacing-16, 16px);
    font-weight: var(--font-weight-semibold, 600);
    color: var(--text-bolder, #090c10);
    word-break: keep-all;
  }

/* ── 폼 테이블 라벨 (한글 상단 굵게 + 영문 하단 회색) ──────*/

/* .mod-form-table__label 기본 스타일(1줄, 세로중앙)을 2줄 구조로 재정의*/

.pat-myaccount__flabel {
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 3px;
    line-height: 1.35;
    padding-top: 0.875rem;
    padding-bottom: 0.875rem;
  }

.pat-myaccount__flabel-kr {
    display: inline-flex;
    align-items: baseline;
    gap: 4px;
    font-size: 17px;
    font-weight: var(--font-weight-bold, 700);
    color: var(--color-text-primary, #1a202c);
    letter-spacing: var(--letter-spacing-tight, -0.02em);
  }

.pat-myaccount__flabel-en {
    font-size: 15px;
    font-weight: var(--font-weight-regular, 400);
    color: var(--color-text-muted, #94a3b8);
    letter-spacing: 0;
  }

/* ── 힌트 및 안내 텍스트 ──────────────────────────────────*/

.pat-myaccount__hint {
    font-size: 12px;
    line-height: 1.5;
    color: var(--color-text-muted, #718096);
  }

.pat-myaccount__sub-notice {
    font-size: 13px;
    line-height: 1.5;
    color: var(--color-text-muted, #64748b);
    margin-bottom: 0.25rem;
  }

/* ── 비밀번호 입력 (표시 토글) ────────────────────────────*/

.pat-myaccount__pw-wrap {
    position: relative;
    width: 100%;
  }

.pat-myaccount__pw-wrap .mod-input {
      padding-right: 3rem;
    }

.pat-myaccount__pw-toggle {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    color: var(--color-gray-500, #718096);
    cursor: pointer;
    padding: 6px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: color 0.15s ease;
  }

.pat-myaccount__pw-toggle:hover {
      color: var(--color-primary, #396CFA);
    }

/* ── 국가 셀렉트 (mod-input 높이에 맞춘 네이티브 셀렉트) ────*/

/* 국가 검색 셀렉트 (.mod-select + 검색, country-select.js) — 행 안 입력칸과 같은 폭·높이(44px)*/

.pat-myaccount__country {
    width: 100%;
    min-width: 0;
  }

/* ── 하단 액션 버튼 세트 ──────────────────────────────────*/

.pat-myaccount__actions {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.875rem; /* 14px*/
    margin-top: 2rem; /* 32px*/
  }

.pat-myaccount__btn {
    min-width: 160px;
    height: 50px;
    font-size: var(--font-size-sm, 16px);
    font-weight: var(--font-weight-medium, 500);
    border-radius: var(--radius-md, 6px);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: all 0.15s ease;
  }

.pat-myaccount__btn.el-btn--ghost {
      background-color: var(--color-surface, #ffffff);
      border: 1px solid var(--color-border-form, #cbd5e0);
      color: var(--color-text-body, #4a5568);
    }

.pat-myaccount__btn.el-btn--ghost:hover {
        background-color: var(--color-gray-50, #f7fafc);
        color: var(--color-text-primary, #1a202c);
        border-color: var(--color-gray-400, #a0aec0);
      }

.pat-myaccount__btn.el-btn--primary {
      background-color: var(--color-primary, #396CFA);
      border-color: var(--color-primary, #396CFA);
      color: #ffffff;
    }

.pat-myaccount__btn.el-btn--primary:hover {
        background-color: var(--color-primary-hover, #2E56C8);
        border-color: var(--color-primary-hover, #2E56C8);
      }

@media (max-width: 480px) {

.pat-myaccount__btn {
      flex: 1;
      min-width: 0
  }
    }

/**
 * _helpdesk-cta.scss
 * Patterns 레이어 - 온라인 헬프데스크 진입점 패턴 (디자인 개선 리파인 버전)
 * 1안: 원형 FAB + 상단 radius 25px 알약형 레이블
 * 2안: 최상단 유틸리티 바(Top Bar) - 기존 외부링크와 100% 일체형
 * 3안: GNB 메인 헤더 - 헤드셋 아이콘 + 우측 상단 프라이머리 컬러 '?' 말풍선 배지
 */

/* ── [1안] 우측 하단 원형 플로팅 버튼 (FAB) + 상단 25px 알약 레이블 ──*/

.pat-helpdesk-fab {
  position: fixed;
  bottom: 36px;
  right: 36px;
  z-index: 50;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  text-decoration: none;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  cursor: pointer;

  /* 모바일 대응*/
}

/* 상단 알약(Pill)형 레이블*/

.pat-helpdesk-fab__pill {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 8px 18px;
    border-radius: 25px;
    background-color: #ffffff;
    color: var(--color-navy, #1B2B43);
    font-family: var(--font-family-base, inherit);
    font-size: 14px;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -0.02em;
    white-space: nowrap;
    border: 1px solid rgba(27, 43, 67, 0.12);
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.05);
    animation: fabPillBounce 2.4s ease-in-out infinite;
  }

/* 말풍선 아래 꼬리표*/

.pat-helpdesk-fab__pill::after {
      content: '';
      position: absolute;
      bottom: -6px;
      left: 50%;
      transform: translateX(-50%);
      width: 0;
      height: 0;
      border-left: 6px solid transparent;
      border-right: 6px solid transparent;
      border-top: 6px solid #ffffff;
    }

/* 하단 원형(Circle) FAB 버튼 (1.2배 확대: 70px)*/

.pat-helpdesk-fab__circle {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 70px;
    height: 70px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--color-primary, #4071FA) 0%, #2352DB 100%);
    color: #ffffff;
    box-shadow: 0 10px 28px -2px rgba(35, 82, 219, 0.5), 0 4px 12px rgba(0, 0, 0, 0.12);
    transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.25s ease;
  }

.pat-helpdesk-fab__circle svg,
    .pat-helpdesk-fab__circle svg * {
      width: 34px;
      height: 34px;
      color: currentColor;
      pointer-events: none;
    }

.pat-helpdesk-fab:hover .pat-helpdesk-fab__circle {
      transform: scale(1.08) translateY(-2px);
      box-shadow: 0 14px 34px -2px rgba(35, 82, 219, 0.6), 0 8px 18px rgba(0, 0, 0, 0.16);
    }

.pat-helpdesk-fab:hover .pat-helpdesk-fab__pill {
      color: var(--color-primary, #4071FA);
      border-color: rgba(64, 113, 250, 0.35);
    }

.pat-helpdesk-fab:active .pat-helpdesk-fab__circle {
      transform: scale(0.96);
      box-shadow: 0 6px 18px rgba(35, 82, 219, 0.45);
    }

.pat-helpdesk-fab{
  @media screen and (max-width: 767px) {
    right: 18px;
    bottom: 20px;

    &__circle {
      width: 58px;
      height: 58px;
    }

      &__circle svg,
      &__circle svg * {
        width: 28px;
        height: 28px;
      }

    &__pill {
      font-size: 12px;
      padding: 5px 12px;
    }
  }
}

/* 상단 알약 레이블 둥실둥실 애니메이션*/

@keyframes fabPillBounce {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-4px);
  }
}

/* ── [2안] 최상단 유틸리티 바(Top Bar) - 기존 외부링크와 100% 동일 규격 ──*/

.pat-topbar__helpdesk {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  height: 100%;
}

/* 기존 .pat-topbar__link의 규격(폰트, 컬러, 구분선, hover)을 그대로 동일하게 구현*/

.pat-topbar__helpdesk-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-width: 150px;
    height: 100%;
    font-family: var(--font-family-base, inherit);
    font-size: var(--font-size-xs, 15px);
    font-weight: var(--font-weight-regular, 400);
    color: rgba(255, 255, 255, 0.85);
    text-decoration: none;
    white-space: nowrap;
    position: relative;
    transition: color 0.15s ease;
  }

/* 좌우 세로 구분선 (기존 pat-topbar__link와 완벽 동일)*/

.pat-topbar__helpdesk-link:before,
    .pat-topbar__helpdesk-link:after {
      position: absolute;
      top: 50%;
      transform: translate(0, -50%) skewY(-0.01deg);
      content: "";
      width: 1px;
      height: 100%;
      background-color: rgba(255, 255, 255, 0.2);
    }

.pat-topbar__helpdesk-link:before {
      left: 0;
    }

.pat-topbar__helpdesk-link:after {
      right: 0;
    }

.pat-topbar__helpdesk-link:hover {
      color: var(--color-white, #ffffff);
    }

.pat-topbar__helpdesk-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    color: currentColor;
  }

.pat-topbar__helpdesk-icon svg,
    .pat-topbar__helpdesk-icon svg * {
      width: 100%;
      height: 100%;
      pointer-events: none;
    }

/* ── [3안] GNB 헤더 액션 - 헤드셋 아이콘 + 우측 상단 '?' 말풍선 배지 ──*/

.pat-gnb__helpdesk-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  padding: 0;
  border-radius: 50%;
  background-color: var(--color-bg-hover, #f7f7f7);
  border: 1px solid var(--color-border-default, #e5e7eb);
  color: var(--color-text-secondary, #4b5563);
  text-decoration: none;
  cursor: pointer;
  margin-left: 12px;
  transition: all 0.2s ease;
  position: relative;
  flex-shrink: 0;
}

/* 헤드셋 아이콘*/

.pat-gnb__helpdesk-btn .pat-gnb__helpdesk-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
  }

.pat-gnb__helpdesk-btn .pat-gnb__helpdesk-icon svg,
    .pat-gnb__helpdesk-btn .pat-gnb__helpdesk-icon svg * {
      width: 100%;
      height: 100%;
      color: currentColor;
      pointer-events: none;
      transition: transform 0.2s ease;
    }

/* 우측 상단 앙증맞은 '?' 프라이머리 컬러 말풍선 배지 (아이콘 침범 방지 위치 조정)*/

.pat-gnb__helpdesk-btn .pat-gnb__helpdesk-badge {
    position: absolute;
    top: -6px;
    right: -8px;
    min-width: 21px;
    height: 21px;
    padding: 0 3px;
    border-radius: 11px 11px 11px 3px;
    background-color: var(--color-primary, #4071FA);
    color: #ffffff;
    font-family: -apple-system, BlinkMacSystemFont, "Pretendard Variable", sans-serif;
    font-size: 12px;
    font-weight: 800;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid #ffffff;
    box-shadow: 0 3px 7px rgba(64, 113, 250, 0.5);
    pointer-events: none;
    transition: transform 0.2s ease;
  }

.pat-gnb__helpdesk-btn:hover {
    background-color: #f0f4ff;
    border-color: var(--color-primary, #4071FA);
    color: var(--color-primary, #4071FA);
  }

.pat-gnb__helpdesk-btn:hover .pat-gnb__helpdesk-icon svg {
      transform: scale(1.08);
    }

.pat-gnb__helpdesk-btn:hover .pat-gnb__helpdesk-badge {
      transform: scale(1.15) rotate(-5deg);
    }

.pat-gnb__helpdesk-btn:active {
    transform: translateY(0);
  }

.pat-gnb__helpdesk-btn{

  @media screen and (max-width: 1279px) {
    display: none;
  }
}

/* 3. Tailwind Utilities Layer (최하단 배치)*/

.sr-only{
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

.pointer-events-none{
  pointer-events: none;
}

.pointer-events-auto{
  pointer-events: auto;
}

.visible{
  visibility: visible;
}

.collapse{
  visibility: collapse;
}

.static{
  position: static;
}

.fixed{
  position: fixed;
}

.absolute{
  position: absolute;
}

.relative{
  position: relative;
}

.sticky{
  position: sticky;
}

.bottom-6{
  bottom: 1.5rem;
}

.end-1{
  inset-inline-end: 0.25rem;
}

.left-3{
  left: 0.75rem;
}

.left-6{
  left: 1.5rem;
}

.right-3{
  right: 0.75rem;
}

.right-6{
  right: 1.5rem;
}

.top-1{
  top: 0.25rem;
}

.top-3{
  top: 0.75rem;
}

.isolate{
  isolation: isolate;
}

.z-40{
  z-index: 40;
}

.z-50{
  z-index: 50;
}

.col-span-2{
  grid-column: span 2 / span 2;
}

.m-0{
  margin: 0px;
}

.mx-auto{
  margin-left: auto;
  margin-right: auto;
}

.my-12{
  margin-top: 3rem;
  margin-bottom: 3rem;
}

.mb-1{
  margin-bottom: 0.25rem;
}

.mb-14{
  margin-bottom: 3.5rem;
}

.mb-2{
  margin-bottom: 0.5rem;
}

.mb-2\.5{
  margin-bottom: 0.625rem;
}

.mb-3{
  margin-bottom: 0.75rem;
}

.mb-4{
  margin-bottom: 1rem;
}

.mb-5{
  margin-bottom: 1.25rem;
}

.mb-6{
  margin-bottom: 1.5rem;
}

.mb-8{
  margin-bottom: 2rem;
}

.ml-1{
  margin-left: 0.25rem;
}

.mr-1{
  margin-right: 0.25rem;
}

.mr-1\.5{
  margin-right: 0.375rem;
}

.mr-2{
  margin-right: 0.5rem;
}

.mt-0{
  margin-top: 0px;
}

.mt-1{
  margin-top: 0.25rem;
}

.mt-10{
  margin-top: 2.5rem;
}

.mt-2{
  margin-top: 0.5rem;
}

.mt-4{
  margin-top: 1rem;
}

.mt-6{
  margin-top: 1.5rem;
}

.line-clamp-2{
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.block{
  display: block;
}

.inline{
  display: inline;
}

.flex{
  display: flex;
}

.inline-flex{
  display: inline-flex;
}

.\!table{
  display: table !important;
}

.table{
  display: table;
}

.table-row{
  display: table-row;
}

.grid{
  display: grid;
}

.contents{
  display: contents;
}

.list-item{
  display: list-item;
}

.hidden{
  display: none;
}

.h-1{
  height: 0.25rem;
}

.h-10{
  height: 2.5rem;
}

.h-12{
  height: 3rem;
}

.h-16{
  height: 4rem;
}

.h-20{
  height: 5rem;
}

.h-3{
  height: 0.75rem;
}

.h-3\.5{
  height: 0.875rem;
}

.h-32{
  height: 8rem;
}

.h-4{
  height: 1rem;
}

.h-5{
  height: 1.25rem;
}

.h-6{
  height: 1.5rem;
}

.h-7{
  height: 1.75rem;
}

.h-8{
  height: 2rem;
}

.h-9{
  height: 2.25rem;
}

.h-\[55px\]{
  height: 55px;
}

.h-\[62px\]{
  height: 62px;
}

.h-auto{
  height: auto;
}

.h-btn-lg{
  height: var(--size-btn-height-lg);
}

.h-full{
  height: 100%;
}

.h-input{
  height: var(--size-input-height);
}

.h-px{
  height: 1px;
}

.max-h-28{
  max-height: 7rem;
}

.max-h-32{
  max-height: 8rem;
}

.min-h-\[100px\]{
  min-height: 100px;
}

.min-h-\[240px\]{
  min-height: 240px;
}

.min-h-\[260px\]{
  min-height: 260px;
}

.min-h-\[280px\]{
  min-height: 280px;
}

.min-h-\[400px\]{
  min-height: 400px;
}

.min-h-\[90px\]{
  min-height: 90px;
}

.w-1{
  width: 0.25rem;
}

.w-10{
  width: 2.5rem;
}

.w-12{
  width: 3rem;
}

.w-16{
  width: 4rem;
}

.w-20{
  width: 5rem;
}

.w-24{
  width: 6rem;
}

.w-28{
  width: 7rem;
}

.w-3{
  width: 0.75rem;
}

.w-3\.5{
  width: 0.875rem;
}

.w-36{
  width: 9rem;
}

.w-4{
  width: 1rem;
}

.w-40{
  width: 10rem;
}

.w-44{
  width: 11rem;
}

.w-5{
  width: 1.25rem;
}

.w-52{
  width: 13rem;
}

.w-6{
  width: 1.5rem;
}

.w-7{
  width: 1.75rem;
}

.w-72{
  width: 18rem;
}

.w-8{
  width: 2rem;
}

.w-9{
  width: 2.25rem;
}

.w-\[460px\]{
  width: 460px;
}

.w-full{
  width: 100%;
}

.min-w-0{
  min-width: 0px;
}

.max-w-2xl{
  max-width: 42rem;
}

.max-w-3xl{
  max-width: 48rem;
}

.max-w-4xl{
  max-width: 56rem;
}

.max-w-6xl{
  max-width: 72rem;
}

.max-w-full{
  max-width: 100%;
}

.max-w-inner-lg{
  max-width: var(--size-inner-lg);
}

.max-w-md{
  max-width: 28rem;
}

.max-w-sm{
  max-width: 24rem;
}

.max-w-xl{
  max-width: 36rem;
}

.flex-1{
  flex: 1 1 0%;
}

.flex-shrink{
  flex-shrink: 1;
}

.flex-shrink-0{
  flex-shrink: 0;
}

.shrink{
  flex-shrink: 1;
}

.shrink-0{
  flex-shrink: 0;
}

.flex-grow{
  flex-grow: 1;
}

.border-collapse{
  border-collapse: collapse;
}

.-translate-y-0{
  --tw-translate-y: -0px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.-translate-y-1{
  --tw-translate-y: -0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.translate-x-1{
  --tw-translate-x: 0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.translate-y-2{
  --tw-translate-y: 0.5rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.translate-y-4{
  --tw-translate-y: 1rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.scale-110{
  --tw-scale-x: 1.1;
  --tw-scale-y: 1.1;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.transform{
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

@keyframes pulse{

  50%{
    opacity: .5;
  }
}

.animate-pulse{
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes spin{

  to{
    transform: rotate(360deg);
  }
}

.animate-spin{
  animation: spin 1s linear infinite;
}

.cursor-not-allowed{
  cursor: not-allowed;
}

.cursor-pointer{
  cursor: pointer;
}

.select-none{
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

.select-all{
  -webkit-user-select: all;
     -moz-user-select: all;
          user-select: all;
}

.resize-none{
  resize: none;
}

.resize{
  resize: both;
}

.list-inside{
  list-style-position: inside;
}

.list-disc{
  list-style-type: disc;
}

.grid-cols-1{
  grid-template-columns: repeat(1, minmax(0, 1fr));
}

.grid-cols-2{
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.grid-cols-3{
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.grid-cols-4{
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.grid-cols-5{
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.flex-row{
  flex-direction: row;
}

.flex-col{
  flex-direction: column;
}

.flex-wrap{
  flex-wrap: wrap;
}

.items-start{
  align-items: flex-start;
}

.items-end{
  align-items: flex-end;
}

.items-center{
  align-items: center;
}

.items-stretch{
  align-items: stretch;
}

.justify-end{
  justify-content: flex-end;
}

.justify-center{
  justify-content: center;
}

.justify-between{
  justify-content: space-between;
}

.gap-0{
  gap: 0px;
}

.gap-1{
  gap: 0.25rem;
}

.gap-1\.5{
  gap: 0.375rem;
}

.gap-10{
  gap: 2.5rem;
}

.gap-12{
  gap: 3rem;
}

.gap-2{
  gap: 0.5rem;
}

.gap-2\.5{
  gap: 0.625rem;
}

.gap-3{
  gap: 0.75rem;
}

.gap-4{
  gap: 1rem;
}

.gap-5{
  gap: 1.25rem;
}

.gap-6{
  gap: 1.5rem;
}

.gap-8{
  gap: 2rem;
}

.gap-x-6{
  -moz-column-gap: 1.5rem;
       column-gap: 1.5rem;
}

.gap-y-3{
  row-gap: 0.75rem;
}

.space-y-1 > :not([hidden]) ~ :not([hidden]){
  --tw-space-y-reverse: 0;
  margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
}

.space-y-1\.5 > :not([hidden]) ~ :not([hidden]){
  --tw-space-y-reverse: 0;
  margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.375rem * var(--tw-space-y-reverse));
}

.space-y-2 > :not([hidden]) ~ :not([hidden]){
  --tw-space-y-reverse: 0;
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
}

.space-y-3 > :not([hidden]) ~ :not([hidden]){
  --tw-space-y-reverse: 0;
  margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
}

.space-y-4 > :not([hidden]) ~ :not([hidden]){
  --tw-space-y-reverse: 0;
  margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1rem * var(--tw-space-y-reverse));
}

.space-y-6 > :not([hidden]) ~ :not([hidden]){
  --tw-space-y-reverse: 0;
  margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1.5rem * var(--tw-space-y-reverse));
}

.space-y-8 > :not([hidden]) ~ :not([hidden]){
  --tw-space-y-reverse: 0;
  margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(2rem * var(--tw-space-y-reverse));
}

.divide-y > :not([hidden]) ~ :not([hidden]){
  --tw-divide-y-reverse: 0;
  border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
  border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
}

.divide-neutral-text-muted > :not([hidden]) ~ :not([hidden]){
  --tw-divide-opacity: 1;
  border-color: rgb(var(--color-text-muted-rgb) / var(--tw-divide-opacity, 1));
}

.self-end{
  align-self: flex-end;
}

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

.self-stretch{
  align-self: stretch;
}

.overflow-hidden{
  overflow: hidden;
}

.overflow-x-auto{
  overflow-x: auto;
}

.overflow-y-auto{
  overflow-y: auto;
}

.truncate{
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.text-ellipsis{
  text-overflow: ellipsis;
}

.whitespace-nowrap{
  white-space: nowrap;
}

.whitespace-pre-line{
  white-space: pre-line;
}

.break-all{
  word-break: break-all;
}

.\!rounded-xl{
  border-radius: var(--radius-xl) !important;
}

.rounded{
  border-radius: 0.25rem;
}

.rounded-2xl{
  border-radius: var(--radius-2xl);
}

.rounded-full{
  border-radius: var(--radius-full);
}

.rounded-global{
  border-radius: var(--radius-md);
}

.rounded-lg{
  border-radius: var(--radius-lg);
}

.rounded-xl{
  border-radius: var(--radius-xl);
}

.border{
  border-width: 1px;
}

.border-0{
  border-width: 0px;
}

.border-2{
  border-width: 2px;
}

.border-b{
  border-bottom-width: 1px;
}

.border-b-2{
  border-bottom-width: 2px;
}

.border-r{
  border-right-width: 1px;
}

.border-t{
  border-top-width: 1px;
}

.border-t-2{
  border-top-width: 2px;
}

.border-solid{
  border-style: solid;
}

.border-dashed{
  border-style: dashed;
}

.border-none{
  border-style: none;
}

.border-\[\#dadcde\]{
  --tw-border-opacity: 1;
  border-color: rgb(218 220 222 / var(--tw-border-opacity, 1));
}

.border-amber-200{
  --tw-border-opacity: 1;
  border-color: rgb(253 230 138 / var(--tw-border-opacity, 1));
}

.border-blue-200{
  --tw-border-opacity: 1;
  border-color: rgb(191 219 254 / var(--tw-border-opacity, 1));
}

.border-brand-navy{
  --tw-border-opacity: 1;
  border-color: rgb(var(--color-navy-rgb) / var(--tw-border-opacity, 1));
}

.border-brand-primary{
  --tw-border-opacity: 1;
  border-color: rgb(var(--color-primary-rgb) / var(--tw-border-opacity, 1));
}

.border-brand-primary\/20{
  border-color: rgb(var(--color-primary-rgb) / 0.2);
}

.border-brand-primary\/30{
  border-color: rgb(var(--color-primary-rgb) / 0.3);
}

.border-brand-primary\/40{
  border-color: rgb(var(--color-primary-rgb) / 0.4);
}

.border-gray-100{
  --tw-border-opacity: 1;
  border-color: rgb(240 240 240 / var(--tw-border-opacity, 1));
}

.border-gray-200{
  --tw-border-opacity: 1;
  border-color: rgb(224 224 224 / var(--tw-border-opacity, 1));
}

.border-gray-300{
  --tw-border-opacity: 1;
  border-color: rgb(213 213 213 / var(--tw-border-opacity, 1));
}

.border-green-200{
  --tw-border-opacity: 1;
  border-color: rgb(187 247 208 / var(--tw-border-opacity, 1));
}

.border-neutral-bg{
  --tw-border-opacity: 1;
  border-color: rgb(var(--color-bg-rgb) / var(--tw-border-opacity, 1));
}

.border-neutral-text-muted{
  --tw-border-opacity: 1;
  border-color: rgb(var(--color-text-muted-rgb) / var(--tw-border-opacity, 1));
}

.border-purple-200{
  --tw-border-opacity: 1;
  border-color: rgb(233 213 255 / var(--tw-border-opacity, 1));
}

.border-purple-300{
  --tw-border-opacity: 1;
  border-color: rgb(216 180 254 / var(--tw-border-opacity, 1));
}

.border-status-error{
  --tw-border-opacity: 1;
  border-color: rgb(var(--color-error-rgb) / var(--tw-border-opacity, 1));
}

.border-status-error\/20{
  border-color: rgb(var(--color-error-rgb) / 0.2);
}

.border-status-success{
  --tw-border-opacity: 1;
  border-color: rgb(var(--color-success-rgb) / var(--tw-border-opacity, 1));
}

.border-status-success\/40{
  border-color: rgb(var(--color-success-rgb) / 0.4);
}

.border-status-warning{
  --tw-border-opacity: 1;
  border-color: rgb(var(--color-warning-rgb) / var(--tw-border-opacity, 1));
}

.border-status-warning\/40{
  border-color: rgb(var(--color-warning-rgb) / 0.4);
}

.border-white{
  --tw-border-opacity: 1;
  border-color: rgb(255 255 255 / var(--tw-border-opacity, 1));
}

.border-white\/10{
  border-color: rgb(255 255 255 / 0.1);
}

.border-white\/20{
  border-color: rgb(255 255 255 / 0.2);
}

.\!bg-red-50{
  --tw-bg-opacity: 1 !important;
  background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1)) !important;
}

.bg-\[\#1B2B43\]{
  --tw-bg-opacity: 1;
  background-color: rgb(27 43 67 / var(--tw-bg-opacity, 1));
}

.bg-amber-50{
  --tw-bg-opacity: 1;
  background-color: rgb(255 251 235 / var(--tw-bg-opacity, 1));
}

.bg-amber-50\/20{
  background-color: rgb(255 251 235 / 0.2);
}

.bg-blue-50{
  --tw-bg-opacity: 1;
  background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
}

.bg-blue-50\/10{
  background-color: rgb(239 246 255 / 0.1);
}

.bg-blue-50\/20{
  background-color: rgb(239 246 255 / 0.2);
}

.bg-brand-navy{
  --tw-bg-opacity: 1;
  background-color: rgb(var(--color-navy-rgb) / var(--tw-bg-opacity, 1));
}

.bg-brand-primary{
  --tw-bg-opacity: 1;
  background-color: rgb(var(--color-primary-rgb) / var(--tw-bg-opacity, 1));
}

.bg-brand-primary\/10{
  background-color: rgb(var(--color-primary-rgb) / 0.1);
}

.bg-brand-primary\/5{
  background-color: rgb(var(--color-primary-rgb) / 0.05);
}

.bg-emerald-500{
  --tw-bg-opacity: 1;
  background-color: rgb(16 185 129 / var(--tw-bg-opacity, 1));
}

.bg-gray-100{
  --tw-bg-opacity: 1;
  background-color: rgb(240 240 240 / var(--tw-bg-opacity, 1));
}

.bg-gray-50{
  --tw-bg-opacity: 1;
  background-color: rgb(248 249 250 / var(--tw-bg-opacity, 1));
}

.bg-green-50{
  --tw-bg-opacity: 1;
  background-color: rgb(240 253 244 / var(--tw-bg-opacity, 1));
}

.bg-green-50\/20{
  background-color: rgb(240 253 244 / 0.2);
}

.bg-neutral-bg{
  --tw-bg-opacity: 1;
  background-color: rgb(var(--color-bg-rgb) / var(--tw-bg-opacity, 1));
}

.bg-neutral-surface{
  --tw-bg-opacity: 1;
  background-color: rgb(var(--color-surface-rgb) / var(--tw-bg-opacity, 1));
}

.bg-neutral-text-muted{
  --tw-bg-opacity: 1;
  background-color: rgb(var(--color-text-muted-rgb) / var(--tw-bg-opacity, 1));
}

.bg-purple-50{
  --tw-bg-opacity: 1;
  background-color: rgb(250 245 255 / var(--tw-bg-opacity, 1));
}

.bg-purple-50\/20{
  background-color: rgb(250 245 255 / 0.2);
}

.bg-status-error{
  --tw-bg-opacity: 1;
  background-color: rgb(var(--color-error-rgb) / var(--tw-bg-opacity, 1));
}

.bg-status-error\/10{
  background-color: rgb(var(--color-error-rgb) / 0.1);
}

.bg-status-error\/95{
  background-color: rgb(var(--color-error-rgb) / 0.95);
}

.bg-status-success{
  --tw-bg-opacity: 1;
  background-color: rgb(var(--color-success-rgb) / var(--tw-bg-opacity, 1));
}

.bg-status-success\/5{
  background-color: rgb(var(--color-success-rgb) / 0.05);
}

.bg-status-warning{
  --tw-bg-opacity: 1;
  background-color: rgb(var(--color-warning-rgb) / var(--tw-bg-opacity, 1));
}

.bg-status-warning\/5{
  background-color: rgb(var(--color-warning-rgb) / 0.05);
}

.bg-transparent{
  background-color: transparent;
}

.bg-white{
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
}

.bg-white\/20{
  background-color: rgb(255 255 255 / 0.2);
}

.bg-gradient-to-r{
  background-image: linear-gradient(to right, var(--tw-gradient-stops));
}

.from-brand-primary{
  --tw-gradient-from: rgb(var(--color-primary-rgb) / 1) var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(var(--color-primary-rgb) / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}

.bg-clip-text{
  -webkit-background-clip: text;
          background-clip: text;
}

.stroke-current{
  stroke: currentColor;
}

.\!p-6{
  padding: 1.5rem !important;
}

.p-1{
  padding: 0.25rem;
}

.p-10{
  padding: 2.5rem;
}

.p-12{
  padding: 3rem;
}

.p-2{
  padding: 0.5rem;
}

.p-3{
  padding: 0.75rem;
}

.p-4{
  padding: 1rem;
}

.p-5{
  padding: 1.25rem;
}

.p-6{
  padding: 1.5rem;
}

.p-8{
  padding: 2rem;
}

.px-1{
  padding-left: 0.25rem;
  padding-right: 0.25rem;
}

.px-10{
  padding-left: 2.5rem;
  padding-right: 2.5rem;
}

.px-2{
  padding-left: 0.5rem;
  padding-right: 0.5rem;
}

.px-3{
  padding-left: 0.75rem;
  padding-right: 0.75rem;
}

.px-4{
  padding-left: 1rem;
  padding-right: 1rem;
}

.px-5{
  padding-left: 1.25rem;
  padding-right: 1.25rem;
}

.px-6{
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}

.px-8{
  padding-left: 2rem;
  padding-right: 2rem;
}

.py-0{
  padding-top: 0px;
  padding-bottom: 0px;
}

.py-0\.5{
  padding-top: 0.125rem;
  padding-bottom: 0.125rem;
}

.py-1{
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}

.py-10{
  padding-top: 2.5rem;
  padding-bottom: 2.5rem;
}

.py-12{
  padding-top: 3rem;
  padding-bottom: 3rem;
}

.py-2{
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

.py-20{
  padding-top: 5rem;
  padding-bottom: 5rem;
}

.py-24{
  padding-top: 6rem;
  padding-bottom: 6rem;
}

.py-3{
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}

.py-4{
  padding-top: 1rem;
  padding-bottom: 1rem;
}

.py-6{
  padding-top: 1.5rem;
  padding-bottom: 1.5rem;
}

.py-8{
  padding-top: 2rem;
  padding-bottom: 2rem;
}

.pb-1{
  padding-bottom: 0.25rem;
}

.pb-1\.5{
  padding-bottom: 0.375rem;
}

.pb-2{
  padding-bottom: 0.5rem;
}

.pb-2\.5{
  padding-bottom: 0.625rem;
}

.pb-3{
  padding-bottom: 0.75rem;
}

.pb-4{
  padding-bottom: 1rem;
}

.pb-6{
  padding-bottom: 1.5rem;
}

.pl-10{
  padding-left: 2.5rem;
}

.pl-3{
  padding-left: 0.75rem;
}

.pl-4{
  padding-left: 1rem;
}

.pl-5{
  padding-left: 1.25rem;
}

.pr-10{
  padding-right: 2.5rem;
}

.pr-3{
  padding-right: 0.75rem;
}

.pr-4{
  padding-right: 1rem;
}

.pt-1{
  padding-top: 0.25rem;
}

.pt-2{
  padding-top: 0.5rem;
}

.pt-3{
  padding-top: 0.75rem;
}

.pt-4{
  padding-top: 1rem;
}

.pt-6{
  padding-top: 1.5rem;
}

.pt-8{
  padding-top: 2rem;
}

.text-left{
  text-align: left;
}

.text-center{
  text-align: center;
}

.text-right{
  text-align: right;
}

.align-top{
  vertical-align: top;
}

.font-mono{
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}

.text-2xl{
  font-size: 1.5rem;
  line-height: 2rem;
}

.text-3xl{
  font-size: 1.875rem;
  line-height: 2.25rem;
}

.text-4xl{
  font-size: 2.25rem;
  line-height: 2.5rem;
}

.text-5xl{
  font-size: 3rem;
  line-height: 1;
}

.text-\[0\.8125rem\]{
  font-size: 0.8125rem;
}

.text-\[0\.9375rem\]{
  font-size: 0.9375rem;
}

.text-\[1\.0625rem\]{
  font-size: 1.0625rem;
}

.text-\[1\.125rem\]{
  font-size: 1.125rem;
}

.text-\[1\.375rem\]{
  font-size: 1.375rem;
}

.text-\[1\.5625rem\]{
  font-size: 1.5625rem;
}

.text-\[1\.875rem\]{
  font-size: 1.875rem;
}

.text-\[10px\]{
  font-size: 10px;
}

.text-\[11px\]{
  font-size: 11px;
}

.text-\[16px\]{
  font-size: 16px;
}

.text-\[18px\]{
  font-size: 18px;
}

.text-\[1rem\]{
  font-size: 1rem;
}

.text-\[2\.875rem\]{
  font-size: 2.875rem;
}

.text-\[4rem\]{
  font-size: 4rem;
}

.text-base{
  font-size: 1rem;
  line-height: 1.5rem;
}

.text-h1{
  font-size: var(--font-size-h1);
  line-height: 1.2;
  letter-spacing: -0.02em;
  font-weight: 700;
}

.text-h2{
  font-size: var(--font-size-h2);
  line-height: 1.2;
  letter-spacing: -0.02em;
  font-weight: 700;
}

.text-h3{
  font-size: var(--font-size-h3);
  line-height: 1.4;
  letter-spacing: -0.01em;
  font-weight: 700;
}

.text-lg{
  font-size: var(--font-size-lg);
  line-height: 1.5;
  font-weight: 500;
}

.text-md{
  font-size: var(--font-size-md);
  line-height: 1.5;
  font-weight: 400;
}

.text-sm{
  font-size: var(--font-size-sm);
  line-height: 1.5;
  font-weight: 400;
}

.text-xl{
  font-size: var(--font-size-xl);
  line-height: 1.4;
  font-weight: 600;
}

.text-xs{
  font-size: var(--font-size-xs);
  line-height: 1.4;
  font-weight: 400;
}

.font-bold{
  font-weight: 700;
}

.font-extrabold{
  font-weight: 800;
}

.font-medium{
  font-weight: 500;
}

.font-normal{
  font-weight: 400;
}

.font-semibold{
  font-weight: 600;
}

.uppercase{
  text-transform: uppercase;
}

.lowercase{
  text-transform: lowercase;
}

.italic{
  font-style: italic;
}

.ordinal{
  --tw-ordinal: ordinal;
  font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
}

.leading-none{
  line-height: 1;
}

.leading-relaxed{
  line-height: 1.625;
}

.leading-snug{
  line-height: 1.375;
}

.leading-tight{
  line-height: 1.25;
}

.tracking-normal{
  letter-spacing: 0em;
}

.tracking-tight{
  letter-spacing: -0.025em;
}

.tracking-wider{
  letter-spacing: 0.05em;
}

.text-\[\#eb2a29\]{
  --tw-text-opacity: 1;
  color: rgb(235 42 41 / var(--tw-text-opacity, 1));
}

.text-\[\#ee2e5b\]{
  --tw-text-opacity: 1;
  color: rgb(238 46 91 / var(--tw-text-opacity, 1));
}

.text-blue-300{
  --tw-text-opacity: 1;
  color: rgb(147 197 253 / var(--tw-text-opacity, 1));
}

.text-brand-navy{
  --tw-text-opacity: 1;
  color: rgb(var(--color-navy-rgb) / var(--tw-text-opacity, 1));
}

.text-brand-primary{
  --tw-text-opacity: 1;
  color: rgb(var(--color-primary-rgb) / var(--tw-text-opacity, 1));
}

.text-emerald-600{
  --tw-text-opacity: 1;
  color: rgb(5 150 105 / var(--tw-text-opacity, 1));
}

.text-gray-400{
  --tw-text-opacity: 1;
  color: rgb(203 203 203 / var(--tw-text-opacity, 1));
}

.text-gray-600{
  --tw-text-opacity: 1;
  color: rgb(136 136 136 / var(--tw-text-opacity, 1));
}

.text-gray-900{
  --tw-text-opacity: 1;
  color: rgb(17 17 17 / var(--tw-text-opacity, 1));
}

.text-neutral-surface{
  --tw-text-opacity: 1;
  color: rgb(var(--color-surface-rgb) / var(--tw-text-opacity, 1));
}

.text-neutral-text-body{
  --tw-text-opacity: 1;
  color: rgb(var(--color-text-body-rgb) / var(--tw-text-opacity, 1));
}

.text-neutral-text-hint{
  --tw-text-opacity: 1;
  color: rgb(var(--color-text-hint-rgb) / var(--tw-text-opacity, 1));
}

.text-neutral-text-muted{
  --tw-text-opacity: 1;
  color: rgb(var(--color-text-muted-rgb) / var(--tw-text-opacity, 1));
}

.text-neutral-text-primary{
  --tw-text-opacity: 1;
  color: rgb(var(--color-text-primary-rgb) / var(--tw-text-opacity, 1));
}

.text-neutral-text-secondary{
  --tw-text-opacity: 1;
  color: rgb(var(--color-text-secondary-rgb) / var(--tw-text-opacity, 1));
}

.text-purple-600{
  --tw-text-opacity: 1;
  color: rgb(147 51 234 / var(--tw-text-opacity, 1));
}

.text-purple-700{
  --tw-text-opacity: 1;
  color: rgb(126 34 206 / var(--tw-text-opacity, 1));
}

.text-status-error{
  --tw-text-opacity: 1;
  color: rgb(var(--color-error-rgb) / var(--tw-text-opacity, 1));
}

.text-status-success{
  --tw-text-opacity: 1;
  color: rgb(var(--color-success-rgb) / var(--tw-text-opacity, 1));
}

.text-status-warning{
  --tw-text-opacity: 1;
  color: rgb(var(--color-warning-rgb) / var(--tw-text-opacity, 1));
}

.text-transparent{
  color: transparent;
}

.text-white{
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}

.text-white\/70{
  color: rgb(255 255 255 / 0.7);
}

.text-white\/80{
  color: rgb(255 255 255 / 0.8);
}

.text-white\/85{
  color: rgb(255 255 255 / 0.85);
}

.text-white\/90{
  color: rgb(255 255 255 / 0.9);
}

.text-white\/95{
  color: rgb(255 255 255 / 0.95);
}

.underline{
  text-decoration-line: underline;
}

.overline{
  text-decoration-line: overline;
}

.antialiased{
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.accent-blue-500{
  accent-color: #3b82f6;
}

.opacity-0{
  opacity: 0;
}

.shadow{
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

.shadow-glass{
  --tw-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.08), inset 0 0 0 1px rgba(255, 255, 255, 0.05);
  --tw-shadow-colored: 0 8px 32px 0 var(--tw-shadow-color), inset 0 0 0 1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

.shadow-inner{
  --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
  --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

.shadow-lg{
  --tw-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
  --tw-shadow-colored: 0 10px 30px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

.shadow-md{
  --tw-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  --tw-shadow-colored: 0 4px 12px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

.shadow-sm{
  --tw-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
  --tw-shadow-colored: 0 2px 4px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

.shadow-xl{
  --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

.shadow-blue-500{
  --tw-shadow-color: #3b82f6;
  --tw-shadow: var(--tw-shadow-colored);
}

.outline-none{
  outline: 2px solid transparent;
  outline-offset: 2px;
}

.outline{
  outline-style: solid;
}

.outline-2{
  outline-width: 2px;
}

.outline-red-400{
  outline-color: #f87171;
}

.ring{
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}

.ring-4{
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}

.ring-brand-primary{
  --tw-ring-opacity: 1;
  --tw-ring-color: rgb(var(--color-primary-rgb) / var(--tw-ring-opacity, 1));
}

.ring-brand-primary\/30{
  --tw-ring-color: rgb(var(--color-primary-rgb) / 0.3);
}

.blur{
  --tw-blur: blur(8px);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

.grayscale{
  --tw-grayscale: grayscale(100%);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

.invert{
  --tw-invert: invert(100%);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

.filter{
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

.backdrop-blur-md{
  --tw-backdrop-blur: blur(12px);
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}

.backdrop-filter{
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}

.transition{
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-all{
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-colors{
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-opacity{
  transition-property: opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-shadow{
  transition-property: box-shadow;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-transform{
  transition-property: transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.duration-200{
  transition-duration: 200ms;
}

.duration-300{
  transition-duration: 300ms;
}

.ease-in-out{
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.ease-out{
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
}

.hover\:text-blue-300:hover{
  --tw-text-opacity: 1;
  color: rgb(147 197 253 / var(--tw-text-opacity, 1));
}

.hover\:text-brand-primary:hover{
  --tw-text-opacity: 1;
  color: rgb(var(--color-primary-rgb) / var(--tw-text-opacity, 1));
}

.hover\:text-white:hover{
  --tw-text-opacity: 1;
  color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}

.hover\:opacity-80:hover{
  opacity: 0.8;
}

.focus\:border-brand-primary:focus{
  --tw-border-opacity: 1;
  border-color: rgb(var(--color-primary-rgb) / var(--tw-border-opacity, 1));
}

.focus\:outline-none:focus{
  outline: 2px solid transparent;
  outline-offset: 2px;
}

.group:hover .group-hover\:translate-x-1{
  --tw-translate-x: 0.25rem;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.group:hover .group-hover\:scale-110{
  --tw-scale-x: 1.1;
  --tw-scale-y: 1.1;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

@media (min-width: 768px){

  .md\:col-span-2{
    grid-column: span 2 / span 2;
  }

  .md\:grid-cols-2{
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .md\:grid-cols-3{
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .md\:grid-cols-4{
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .md\:p-6{
    padding: 1.5rem;
  }

  .md\:text-4xl{
    font-size: 2.25rem;
    line-height: 2.5rem;
  }
}

@media (min-width: 1024px){

  .lg\:grid-cols-2{
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 1279px){

  .tablet-down\:h-auto{
    height: auto;
  }

  .tablet-down\:grid-cols-1{
    grid-template-columns: repeat(1, minmax(0, 1fr));
  }

  .tablet-down\:flex-col{
    flex-direction: column;
  }

  .tablet-down\:items-start{
    align-items: flex-start;
  }

  .tablet-down\:gap-2{
    gap: 0.5rem;
  }
}