@import url(https://fonts.googleapis.com/css2?family=Gothic+A1:wght@400;500;700);
@import url(https://fonts.googleapis.com/css2?family=Alan+Sans:wght@400;600);
@import url(https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.8/dist/web/static/pretendard.css);
.navbar {
  display: flex;
  align-items: center;
  width: 100%;
  height: var(--navbar-height);
  padding: var(--space-3) var(--layout-padding-inline);
  box-sizing: border-box;

  position: fixed;
  top: 0;
  z-index: var(--material-zindex-chrome-top);
}

/* 재질(배경+blur)은 자손이 아닌 ::before 형제 레이어가 소유한다.
   조상에 backdrop-filter가 있으면 내부 popover 등 자손의 backdrop-filter가 무력화되기 때문. */
.navbar::before {
  content: '';
  height: var(--navbar-height);
  border-bottom: var(--border-transparent);
  box-sizing: border-box;
  background: var(--material-chrome-background-color);
  backdrop-filter: var(--material-chrome-backdrop-filter);
  position: absolute;
  inset: 0;
  z-index: -1;
}

.navbar-logo {
  width: var(--size-32);
  height: var(--size-32);
  background: url(../images/soojubm.3d237e0c.png) no-repeat center;
  background-size: cover;
  background-color: var(--background-strong-color);
  border-radius: var(--radius-full);
}

.navbar-backdrop {
  height: var(--navbar-height);
}

.navbar-user {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin: 0 0 0 auto;
  position: relative;
  isolation: isolate;

  background: var(--material-base-background-color);
  backdrop-filter: var(--material-base-backdrop-filter);
  border: var(--material-base-border);
  border-radius: var(--control-border-radius);
  box-shadow: var(--material-base-shadow);
}

.site-bottom-bar {
  display: none;
}

@media (max-width: 480px) {
  .site-bottom-bar {
    display: block;
  }
}

/* stylelint-disable color-no-hex -- 토큰 정의 파일이므로 hex 값 허용 */
:root {
  color-scheme: light dark;

  --font-family: 'Alan Sans', 'Gothic A1', system-ui, sans-serif;
  --font-family-code: ui-monospace, SFMono-Regular, Menlo, monospace;

  /* 글자 토큰은 rem이라 html font-size(큰글씨 모드)를 따라 함께 커진다. */
  --font-size-12: 0.75rem;
  --font-size-14: 0.875rem;
  --font-size-18: 1.125rem;
  --font-size-24: 1.5rem;
  --font-size-32: 2rem;
  --font-line-height-16: 1rem;
  --font-line-height-24: 1.5rem;
  --font-line-height-28: 1.75rem;
  --font-line-height-32: 2rem;
  --font-line-height-40: 2.5rem;
  --font-weight-normal: 500;
  --font-weight-bold: 700;

  --navbar-height: calc(var(--size-32) + 1.5rem);

  --layout-width-large: 960px;
  --layout-width-small: 640px;
  --layout-width-narrow: 400px;
  --layout-width-sidebar: 244px;
  --layout-padding-inline: 5vw;

  --layout-main-space-top: var(--space-6);
  --layout-sidebar-space-top: var(--space-2);

  --gray0: #fff;
  --gray100: #f5f6f5;
  --gray200: #d2d7d5;
  --gray400: #8a908d;
  --gray800: #303b35;

  --green100: rgba(10, 160, 80, 0.075);
  --green800: #1b995c;
  --red800: #f02849;
  --yellow800: gold;
  --orange800: #fb7800;

  /*
   * 카테고리컬 컬러. 순서나 크기 없이 서로 다른 항목(분류 태그, 차트 계열 등)을 구분하는 색이다.
   * 번호는 항목에 배정하는 순서이며 의미를 담지 않는다. 한 번호의 배경·테두리·텍스트는 한 벌로 함께 쓴다.
   */
  --category-1-background-color: #dbeafe;
  --category-1-border-color: #93c5fd;
  --category-1-text-color: #1d4ed8;
  --category-2-background-color: #dcfce7;
  --category-2-border-color: #86efac;
  --category-2-text-color: #166534;
  --category-3-background-color: #fce7f3;
  --category-3-border-color: #f9a8d4;
  --category-3-text-color: #be185d;
  --category-4-background-color: #ffedd5;
  --category-4-border-color: #fdba74;
  --category-4-text-color: #c2410c;
  --category-5-background-color: #cffafe;
  --category-5-border-color: #67e8f9;
  --category-5-text-color: #0e7490;
  --category-6-background-color: #fef3c7;
  --category-6-border-color: #fcd34d;
  --category-6-text-color: #92400e;
  --category-7-background-color: #fee2e2;
  --category-7-border-color: #fca5a5;
  --category-7-text-color: #991b1b;
  --category-8-background-color: #f3e8ff;
  --category-8-border-color: #d8b4fe;
  --category-8-text-color: #7e22ce;

  --newneek-color: #fb7800;
  --newneek-gray-color: #ebebeb;
  --primary-color: var(--green800);
  --primary-subtle-color: var(--green100);
  --accent-color: var(--yellow800);
  --foreground-success-color: #1e40af;
  --warning-color: var(--orange800);
  --foreground-warning-color: #9a4600;
  --danger-color: var(--red800);
  --foreground-danger-color: #c51635;

  /*
   * 시멘틱 컬러.
   * data-theme는 body에 붙어 :root(html)의 자손이므로, 여기서 테마가 재정의하는 토큰을 참조하면
   * 그 참조는 html 시점 값으로 굳는다. 기본값은 테마가 건드리지 않는 원시값으로 두고,
   * 테마별 값이 필요한 토큰은 각 테마 블록이 같은 이름으로 다시 선언한다.
   */
  --interaction-active-background-color: var(--accent-color);
  --interaction-focus-outline: 2px solid var(--gray800);
  --interaction-active-shadow: 0 0 0 2px #c8f3fa, inset 0 0 0 2px var(--gray0);
  --interaction-selected-background-color: var(--primary-subtle-color);
  --interaction-selected-foreground-color: var(--primary-color);
  --interaction-selected-border-color: var(--primary-color);
  --interaction-hover-background-color: var(--gray100);
  /* 채울 배경이 없는 클릭 가능한 떠 있는 표면은 hover에서 배경 대신 이 값만큼 떠오른다. */
  --interaction-hover-lift: translateY(-2px);

  --background-color: var(--gray0);
  --background-subtle-color: var(--gray100);
  --background-strong-color: var(--gray800);

  --border-color: var(--gray200);

  --foreground-color: var(--gray800);
  --foreground-subtle-color: var(--gray400);
  --foreground-on-strong-color: var(--gray0);
  --foreground-on-primary-color: var(--gray0);

  --size-16: 16px;
  --size-24: 24px;
  --size-32: 32px;
  --size-40: 40px;
  --size-48: 48px;
  --size-80: 80px;

  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-6: 24px;
  --space-8: 32px;
  --space-12: 48px;
  --space-16: 64px;
  --space-section: var(--space-16);

  --space-1-minus: calc(var(--space-1) * -1);

  --border-width: 1px;
  --border: var(--border-width) solid var(--border-color);
  --border-transparent: var(--border-width) solid transparent;
  --border-danger: var(--border-width) solid var(--danger-color);

  --radius: 6px;
  --radius-large: 1rem;
  --radius-full: 50%;

  /* navbar-user 같은 control pill의 모양 토큰(테마 무관 고정값이라 :root 선언이 안전하다) */
  --control-border-radius: var(--radius-large);

  /* 재질 원시값. 값의 종류와 크기로 이름 짓고 테마가 건드리지 않는다.
     소비처는 원시값을 직접 쓰지 않고, 아래 material 티어가 색 토큰과 조합해 내보낸다.
     그림자는 깊이를 갖는 티어(elevated·chrome·overlay)마다 한 단계씩만 둔다. */
  --shadow-12: 0 4px 12px rgb(0 0 0 / 15%);
  --shadow-32: 0 16px 32px rgb(0 0 0 / 20%);
  --shadow-48: 0 24px 48px rgb(0 0 0 / 28%);
  --blur-20: 20px;
  --blur-28: 28px;
  --opacity-50: 50%;
  --opacity-60: 60%;
  --opacity-80: 80%;

  /* material 티어는 base, elevated, chrome, overlay로 나뉜다. chrome·overlay는
     화면 위로 뜨는 시스템 레벨 표면(고정 내비게이션, popover·sheet 레이어의 표면 등)에
     쓰고, elevated는 z-index를 옮기지 않고 그림자만 더해 형제보다 살짝 띄우는
     표면(카드 등)에 쓴다. 그 외 뎁스가 필요 없는 표면은 material-base를 쓴다.
     배경·테두리는 색 토큰을 참조하고, 그림자·blur·반투명만 원시값으로 얹는다. */

  /* ===== material-base ===== */
  --material-base-background-color: var(--gray0);
  --material-base-border: none;
  --material-base-backdrop-filter: none;
  --material-base-shadow: none;

  /* ===== material-elevated ===== */
  /* base와 배경·테두리를 공유하고 그림자만 더한다. */
  --material-elevated-shadow: var(--shadow-12);

  /* ===== material-chrome ===== */
  --material-chrome-background-color: var(--gray0);
  --material-chrome-border: var(--border);
  --material-chrome-backdrop-filter: none;
  --material-chrome-shadow: var(--shadow-32);

  /* ===== material-overlay ===== */
  --material-overlay-background-color: var(--gray0);
  --material-overlay-border: var(--border);
  --material-overlay-backdrop-filter: none;
  --material-overlay-shadow: var(--shadow-48);

  /* z-index: 화면 위 높낮이를 표현하는 값. 같은 그룹 안에서만 값을 비교한다 */
  --material-zindex-base: 0; /* 기본 콘텐츠: 문서, 리스트, 배경 */
  --material-zindex-elevated: 10; /* 카드, 패널처럼 살짝 뜬 요소 */
  --material-zindex-chrome: 100; /* 내비게이션, 툴바 (Apple의 "기능 레이어"에 해당) */
  --material-zindex-chrome-top: 101; /* 그중 화면 전체를 덮는 전역 내비게이션: navbar, 사이드바 */
  --material-zindex-backdrop: 150; /* modal 표면 뒤를 덮는 dim·blur 레이어: backdrop */
  --material-zindex-sheet: 200; /* viewport 기준 표면: sheet, dialog */
  --material-zindex-popover: 300; /* 트리거 기준 표면: popover, select. sheet 안에서 열려도 그 위에 보인다 */
  --material-zindex-tooltip: 900; /* 포인터·포커스를 따라 잠깐 뜨는 설명: 모든 표면 위 */
  --material-zindex-toast: 1000; /* 알림, 스낵바: 항상 최상단 */

  /* 모션은 이 duration 하나를 쓰고, easing만 기본과 오버슈트(등장 강조)로 나뉜다. */
  --transition-duration: 180ms;
  --transition-easing: cubic-bezier(0.4, 0, 0.2, 1);
  --transition-easing-emphasis: cubic-bezier(0.18, 1.25, 0.4, 1);

  --animation-delay-first: 0.2s;
  --animation-delay-second: 0.4s;
}

.shape-square {
  --radius: 0px;
  --radius-large: 0px;
  --radius-full: 0%;
}

.color-black {
  --primary-color: #1a1a1a;
  --green100: rgba(0, 0, 0, 0.08);
}

:root [data-theme='dark'] {
  --gray200: #252d29;

  --category-1-background-color: #172554;
  --category-1-border-color: #1e40af;
  --category-1-text-color: #93c5fd;
  --category-2-background-color: #052e16;
  --category-2-border-color: #166534;
  --category-2-text-color: #86efac;
  --category-3-background-color: #500724;
  --category-3-border-color: #9d174d;
  --category-3-text-color: #f9a8d4;
  --category-4-background-color: #431407;
  --category-4-border-color: #9a3412;
  --category-4-text-color: #fdba74;
  --category-5-background-color: #083344;
  --category-5-border-color: #155e75;
  --category-5-text-color: #67e8f9;
  --category-6-background-color: #422006;
  --category-6-border-color: #854d0e;
  --category-6-text-color: #fcd34d;
  --category-7-background-color: #450a0a;
  --category-7-border-color: #991b1b;
  --category-7-text-color: #fca5a5;
  --category-8-background-color: #3b0764;
  --category-8-border-color: #6b21a8;
  --category-8-text-color: #d8b4fe;

  --foreground-success-color: #93c5fd;
  --foreground-warning-color: #fdba74;
  --foreground-danger-color: #fca5a5;

  --foreground-color: #d3d4d5;
  --foreground-subtle-color: var(--gray400);
  --foreground-on-strong-color: var(--gray800);
  --foreground-on-primary-color: var(--gray0);

  --background-color: rgb(31, 35, 33);
  --background-subtle-color: #292f2c;
  --background-strong-color: var(--gray0);

  --material-base-background-color: var(--background-color);
  --material-chrome-background-color: var(--background-color);
  --material-chrome-border: var(--border);
  --material-overlay-background-color: var(--background-color);
  --material-overlay-border: var(--border);

  --interaction-hover-background-color: var(--background-subtle-color);
  --interaction-active-shadow: 0 0 0 2px #c8f3fa, inset 0 0 0 2px var(--background-color);

  --border-color: var(--gray800);

  --border: var(--border-width) solid var(--border-color);
}

:root [data-theme='brutal'] {
  --brutal-border-color: #000;
  --brutal-border: var(--border-width) solid var(--brutal-border-color);

  --border-color: #000;
  --border: var(--brutal-border);
  --border-transparent: var(--brutal-border);
  --material-chrome-border: var(--border);
  --material-overlay-border: var(--border);

  /* 테두리는 한 겹 검정으로 통일하므로 카테고리컬 컬러도 배경·텍스트만 남기고 테두리는 같은 값을 쓴다 */
  --category-1-border-color: var(--border-color);
  --category-2-border-color: var(--border-color);
  --category-3-border-color: var(--border-color);
  --category-4-border-color: var(--border-color);
  --category-5-border-color: var(--border-color);
  --category-6-border-color: var(--border-color);
  --category-7-border-color: var(--border-color);
  --category-8-border-color: var(--border-color);

  --material-chrome-shadow: none;
  --material-overlay-shadow: none;
}

:root [data-theme='glass'] {
  /*
   * glass는 전역 배경 토큰은 건드리지 않고 떠 있는 표면의 재질 티어만 재정의한다.
   * chrome(고정 내비게이션)과 overlay(팝업·셀렉트·다이얼로그·레이어)는 서로 다른 뎁스로 표현한다.
   * base 티어는 뎁스가 없는 flush chrome 바용이라
   * 이 테마에서도 재정의하지 않고 :root의 무효과 기본값(불투명 배경·blur 없음·테두리 없음·그림자 없음) 그대로 둔다.
   */
  /* --radius: var(--radius-large); */
  /* --background-subtle-color: rgb(255 255 255 / 30%); */

  /* ===== material-chrome ===== */
  --material-chrome-background-color: color-mix(
    in srgb,
    var(--gray0) var(--opacity-80),
    transparent
  );
  --material-chrome-border: var(--border-width) solid
    color-mix(in srgb, var(--gray0) var(--opacity-50), transparent);
  --material-chrome-backdrop-filter: saturate(180%) blur(var(--blur-20));
  --material-chrome-shadow: none;

  /* ===== material-overlay ===== */
  --material-overlay-background-color: color-mix(
    in srgb,
    var(--gray0) var(--opacity-50),
    transparent
  );
  --material-overlay-border: var(--border-width) solid
    color-mix(in srgb, var(--gray0) var(--opacity-60), transparent);
  --material-overlay-backdrop-filter: saturate(180%) blur(var(--blur-28));
}



/* stylelint-disable color-no-hex -- 브라우저 리셋 파일이므로 hex 값 허용 */
/* 문서와 컴포넌트 shadow root가 함께 쓰는 엘리먼트 리셋.
   html·body 규칙은 shadow 안에서 매치되지 않을 뿐 리셋의 일부이므로 여기서 갖는다. */
html {
  min-width: 320px;
  height: 100%;
  font-family: var(--font-family);
  font-size: 16px;
  line-height: var(--font-line-height-24);
  -webkit-text-size-adjust: 100%;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overscroll-behavior: contain;
}

html.large-text {
  font-size: 18px;
}

body {
  margin: 0;
  background: var(--background-color);
  color: var(--foreground-color);
  font-weight: var(--font-weight-normal);
  font-size: 0.875rem;
}

dl,
dd,
figure,
blockquote,
h1,
h2,
h3,
h4,
h5,
h6,
p,
input[type='radio'],
input[type='checkbox'] {
  margin: 0;
}
ul,
ol,
menu,
fieldset,
legend {
  margin: 0;
  padding: 0;
}
fieldset,
iframe,
img {
  border: none;
}
hr {
  margin-block: 0;
  border: none;
}
main,
picture {
  display: block;
}
iframe,
img,
video {
  width: 100%;
  display: block;
}
/* 네이티브 태그는 의미만 갖고 굵기는 문맥에서 물려받는다. 굵게 보여야 하면 mm-text weight로 준다. */
strong,
b,
th,
legend {
  font-weight: inherit;
}
cite,
i,
address,
em,
dfn {
  font-style: normal;
}
em {
  color: var(--primary-color);
}
abbr,
ins {
  text-decoration: none;
}
a {
  text-decoration: none;
}
pre {
  margin-block: 0;
}

select {
  -webkit-appearance: none;
  background: none;
  border: none;
  font: inherit;
  color: var(--foreground-color);
}
select:focus {
  border: 1px solid;
}
select:focus-visible {
  outline: none;
}
select::-ms-expand {
  display: none;
}

button {
  padding: 0;
  border: none;
  background: none;
  text-align: left;
  font: inherit;
  color: inherit;
  cursor: pointer;
}

button:focus-visible {
  outline: none;
}

blockquote {
  padding: var(--space-4);
  border: var(--border);
  border-left: 4px solid var(--border-color);
  border-radius: var(--radius) 0 0 0;
  box-sizing: border-box;
}
q {
  position: relative;
}
q:before {
  content: '“';
  display: block;
  margin-bottom: -1.5rem;
  font-size: var(--font-size-32);
  font-weight: var(--font-weight-bold);
  line-height: 1;
}

ul,
ol {
  padding-left: var(--space-4);
}
ul li:not(:first-child) {
  margin: var(--space-1) 0 0;
}
ul li::marker {
  font-size: var(--font-size-12);
}
li::marker {
  width: 24px;
}

::placeholder {
  color: var(--foreground-subtle-color);
}

a:focus-visible,
button:focus-visible {
  outline: var(--interaction-focus-outline);
  outline-offset: 2px;
}

/* index.html 문서 셸에 적용되는 규칙.
   shadow root에서는 매치될 수 없으므로 resetStyles에 포함하지 않는다. */
@media print {
  a::after {
    content: '(' attr(href) ')';
  }
}

.offline {
  margin: 0 auto;
  padding: 0.5rem 1rem;
  border-radius: var(--radius);
  background: var(--danger-color);
  color: var(--foreground-on-strong-color);
  text-align: center;

  position: fixed;
  left: 10%;
  right: 10%;
  top: 45%;
  z-index: var(--material-zindex-toast);
}

.skip {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  z-index: var(--material-zindex-toast);
}
.skip-link {
  display: block;
  background: var(--background-strong-color);
  color: var(--background-color);
  text-align: center;
  height: 0;
  font-size: 0;
}
.skip-link:focus {
  display: block;
  height: 50px;
  line-height: 50px;
  font-size: 14px;
}

/* 사이드바가 열렸을 때 mm-main과 mm-footer가 밀려나는 폭은
   body에 노출하는 이 전역 변수로만 전달한다. */
body {
  --sidebar-content-shift: var(--layout-padding-inline);
}

body:has(mm-sidebar[open]) {
  --sidebar-content-shift: calc(
    var(--layout-width-sidebar) + var(--layout-padding-inline) + var(--layout-padding-inline) +
      var(--space-4)
  );
}

@media (max-width: 1200px) {
  body:has(mm-sidebar[open]) {
    --sidebar-content-shift: var(--layout-padding-inline);
  }
}

progress[value] {
  width: 100%;
  height: var(--space-2);
  border: 0;
  border-radius: var(--radius);
  background-color: var(--background-subtle-color);
  overflow: hidden;
  -webkit-appearance: none;
  appearance: none;
}

progress[value]::-webkit-progress-bar {
  background-color: var(--background-subtle-color);
}

progress[value]::-webkit-progress-value {
  background: var(--primary-color);
}

progress[value]::-moz-progress-bar {
  background: var(--primary-color);
}

meter {
  width: 100%;
  height: var(--space-2);
  border: 0;
  border-radius: var(--radius);
  background: var(--background-subtle-color);
  overflow: hidden;
  -webkit-appearance: none;
  appearance: none;
}

meter::-webkit-meter-bar {
  border: 0;
  border-radius: var(--radius);
  background: var(--background-subtle-color);
}

meter::-webkit-meter-optimum-value {
  background: var(--primary-color);
}

meter::-webkit-meter-suboptimum-value {
  background: var(--warning-color);
}

meter::-webkit-meter-even-less-good-value {
  background: var(--danger-color);
}

meter:-moz-meter-optimum::-moz-meter-bar {
  background: var(--primary-color);
}

meter:-moz-meter-sub-optimum::-moz-meter-bar {
  background: var(--warning-color);
}

meter:-moz-meter-sub-sub-optimum::-moz-meter-bar {
  background: var(--danger-color);
}

.scroll-spy-sampler-body {
  flex: 1 1 18rem;
  min-width: 0;
  max-height: 24rem;
  scroll-padding-top: var(--space-4);
}

.scroll-spy-sampler-section {
  justify-content: center;
  min-height: 18rem;
}


/*# sourceMappingURL=index.0193be70.css.map*/