미디어위키:Layout.css: 두 판 사이의 차이

편집 요약 없음
태그: 되돌려진 기여
편집 요약 없음
 
(같은 사용자의 중간 판 30개는 보이지 않습니다)
84번째 줄: 84번째 줄:
--layout-side-w:230px;
--layout-side-w:230px;
--layout-gap:8px;
--layout-gap:8px;
--layout-nav-outer-h:40px;
--layout-gap-double:16px;
--clbi-center-h:calc(100dvh - var(--layout-gap) - var(--layout-gap) - var(--layout-gap) - var(--layout-gap) - var(--layout-nav-outer-h) - var(--layout-nav-outer-h));
--clbi-top-nav-outer-h:47px;
--clbi-bottom-nav-outer-h:47px;
}
}


131번째 줄: 132번째 줄:
align-items:stretch !important;
align-items:stretch !important;
justify-content:stretch !important;
justify-content:stretch !important;
height:var(--clbi-center-h) !important;
height:calc(100vh - var(--clbi-top-nav-outer-h, 47px) - var(--clbi-bottom-nav-outer-h, 47px) - var(--layout-gap-double, 16px)) !important;
min-height:0 !important;
min-height:0 !important;
max-height:var(--clbi-center-h) !important;
max-height:calc(100vh - var(--clbi-top-nav-outer-h, 47px) - var(--clbi-bottom-nav-outer-h, 47px) - var(--layout-gap-double, 16px)) !important;
overflow:visible !important;
overflow:visible !important;
}
}
149번째 줄: 150번째 줄:
flex:none !important;
flex:none !important;
width:auto !important;
width:auto !important;
height:100% !important;
/*
Liberty/Bootstrap의 중앙 content 래퍼는 grid 행 안에서 height:100%를 잡아도
실제 wrapper 높이보다 14px 짧게 계산된다. 이 14px은 화면에 보이는
본문 컨테이너 하단 ↔ 하단 네비 사이의 추가 빈공간으로 나타난다.
좌우 사이드바나 외부 셸을 건드리지 않고 중앙 래퍼만 보정한다.
*/
height:calc(100% + 14px) !important;
max-height:calc(100% + 14px) !important;
max-width:none !important;
max-width:none !important;
min-width:0 !important;
min-width:0 !important;
159번째 줄: 167번째 줄:
display:flex !important;
display:flex !important;
flex-direction:column !important;
flex-direction:column !important;
align-self:stretch !important;
}
}


169번째 줄: 176번째 줄:
/* 줌/축소 화면에서도 좌우 사이드바를 문서 폭에 포함시키기 위해
/* 줌/축소 화면에서도 좌우 사이드바를 문서 폭에 포함시키기 위해
   사이드바 숨김 반응형 규칙은 제거한다. */
   사이드바 숨김 반응형 규칙은 제거한다. */


/* -----------------------------------------
/* -----------------------------------------
3. 본문 컨테이너
2-A. CLBI shell visibility safety
----------------------------------------- */
----------------------------------------- */


/*
/*
본문 컨테이너는 바깥 장비 프레임과 내부 우물로 분리한다.
If a browser/user stylesheet or Liberty wrapper gives .content-wrapper a negative
- .liberty-content는 투명 래퍼로 유지한다.
stacking order, the generated shell can exist in the DOM while only the
- .liberty-content-main은 외곽 프레임이다.
background is visible. The CLBI shell parts must sit above the halftone canvas.
- .mw-parser-output은 실제 본문이 놓이는 내부 우물이다.
- 외곽과 본문 사이의 기본 간격은 8px이다.
*/
*/


.liberty-content-main,
#clbi-top-nav-wrap,
.Liberty .content-wrapper .liberty-content .liberty-content-main,
.content-wrapper,
.liberty-content-main {
#clbi-bottom-nav-wrap {
position:relative !important;
position:relative !important;
box-sizing:border-box !important;
z-index:1 !important;
height:100% !important;
}
min-height:0 !important;
 
background:#1d1d1d !important;
body.clbi-shell-ready #clbi-top-nav-wrap,
border:1px solid #050505 !important;
body.clbi-shell-ready .content-wrapper,
border-radius:0 !important;
body.clbi-shell-ready #clbi-bottom-nav-wrap {
padding:8px !important;
visibility:visible !important;
box-shadow:
opacity:1 !important;
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010,
0 6px 18px rgba(0,0,0,0.34) !important;
overflow:hidden !important;
display:flex !important;
flex-direction:column !important;
}
}


.liberty-content-main .mw-parser-output {
 
position:relative !important;
/* -----------------------------------------
box-sizing:border-box !important;
2-B. 세로 가변 셸 / 좌측 최근 변경 적응형
flex:1 1 auto !important;
----------------------------------------- */
height:auto !important;
 
min-height:0 !important;
/*
margin:0 !important;
상하단 네비는 고정된 조작 패널로 유지한다.
padding:8px !important;
브라우저 세로 높이가 작아지면 가운데 content-wrapper만 줄어든다.
background:#080808 !important;
 
border:0 !important;
좌측 뉴스 박스는 기본 상태에서 원래 내용 높이만 차지한다.
box-shadow:
세로 공간이 부족할 때만 JS가 최근 변경 항목 수를 줄인다.
inset 0 1px 0 #101010,
*/
inset -1px 0 0 #101010,
 
inset 1px 0 0 #555555,
@supports (height: 100dvh) {
inset 0 -1px 0 #555555 !important;
body {
overflow-y:auto !important;
height:100dvh !important;
overflow-x:hidden !important;
}
}


.content-wrapper {
height:calc(100dvh - var(--clbi-top-nav-outer-h, 47px) - var(--clbi-bottom-nav-outer-h, 47px) - var(--layout-gap-double, 16px)) !important;
max-height:calc(100dvh - var(--clbi-top-nav-outer-h, 47px) - var(--clbi-bottom-nav-outer-h, 47px) - var(--layout-gap-double, 16px)) !important;
}
}


.liberty-content-main .mw-parser-output,
#clbi-left-sidebar,
#clbi-left-sidebar,
#clbi-right-sidebar {
#clbi-right-sidebar {
scrollbar-width:thin;
max-height:100% !important;
scrollbar-color:#333333 #080808;
min-height:0 !important;
}
}


/* 제목이 유지되는 관리/시스템 문서는 제목 영역과 본문 우물 사이에 8px 간격을 둔다. */
#clbi-left-sidebar {
body.page-title-visible .liberty-content-header + .mw-parser-output,
align-self:flex-start !important;
body.backend-system-page .liberty-content-header + .mw-parser-output {
overflow:hidden !important;
margin-top:8px !important;
}
}


/* title을 숨긴 일반 문서는 내부 우물이 바로 본문 시작점이 된다. */
#clbi-right-sidebar {
body.page-title-hidden .liberty-content-header + .mw-parser-output,
align-self:flex-start !important;
body.anecdote-namespace-page .liberty-content-header + .mw-parser-output {
overflow-y:auto !important;
margin-top:0 !important;
overflow-x:hidden !important;
}
 
#clbi-left-sidebar .clbi-left-lang-box,
#clbi-left-sidebar .clbi-left-news-box {
flex:0 0 auto !important;
}
}


.liberty-content {
#clbi-left-sidebar .clbi-left-news-box {
border:none !important;
min-height:0 !important;
box-shadow:none !important;
overflow:hidden !important;
border-radius:0 !important;
background:transparent !important;
}
}


/* -----------------------------------------
#clbi-left-sidebar .clbi-news-box {
4. 본문 헤더
min-height:0 !important;
----------------------------------------- */
overflow:hidden !important;
}


.liberty-content-header {
#clbi-left-sidebar .news-left-recent-feed {
background:transparent !important;
box-shadow:none !important;
border:none !important;
display:flex !important;
align-items:flex-end !important;
justify-content:space-between !important;
padding:0 !important;
height:auto !important;
min-height:0 !important;
min-height:0 !important;
border-radius:0 !important;
overflow:hidden !important;
}
}


.liberty-content-header .content-tools {
.news-recent-item.is-adaptive-hidden {
display:none !important;
display:none !important;
order:2 !important;
flex-shrink:0 !important;
padding-top:0 !important;
padding-right:0 !important;
}
}


.liberty-content-header .title {
 
order:1 !important;
/* -----------------------------------------
flex:1 !important;
2-C. CLBI shell host flow correction
----------------------------------------- */
 
/*
When Liberty wraps the generated CLBI shell inside a <section>, that wrapper can
produce overlap between the top nav and content-wrapper.  The DOM order is
already correct, so the host itself must be forced into a plain vertical flow.
*/
 
.clbi-shell-host {
display:flex !important;
display:flex !important;
align-items:flex-end !important;
flex-direction:column !important;
align-items:stretch !important;
justify-content:flex-start !important;
gap:0 !important;
min-height:0 !important;
margin:0 !important;
margin:0 !important;
padding:0 !important;
padding:0 !important;
position:relative !important;
z-index:1 !important;
}
}


.liberty-content-header h1 {
.clbi-shell-host > #clbi-top-nav-wrap,
margin:0 !important;
.clbi-shell-host > .content-wrapper,
padding:0 !important;
.clbi-shell-host > #clbi-bottom-nav-wrap {
flex:0 0 auto !important;
}
 
.clbi-shell-host > .content-wrapper {
margin-top:var(--layout-gap) !important;
}
}


.liberty-content-header .contentSub {
.clbi-shell-host > #clbi-bottom-nav-wrap {
display:none !important;
margin-top:var(--layout-gap) !important;
}
}




/* 일반 문서에서는 기본 제목 영역을 숨긴다.
/*
  CSS/JS/JSON, MediaWiki, 특수문서, 틀, 파일, 분류 같은 시스템 문서는
Liberty skin can leave relative offsets on .content-wrapper.
  Common.js가 body.backend-system-page를 부여하므로 제목을 유지한다. */
Once CLBI wraps the shell in .clbi-shell-host, those offsets must be neutralized
body.page-title-hidden .liberty-content-header,
or the content row overlaps the top nav by 16px.
body.page-title-hidden .liberty-content-header .title,
*/
body.page-title-hidden .liberty-content-header .title h1 {
.clbi-shell-host > .content-wrapper,
display:none !important;
.content-wrapper {
visibility:hidden !important;
top:0 !important;
height:0 !important;
bottom:auto !important;
min-height:0 !important;
transform:none !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}
}


body.page-title-hidden .mw-page-title-main,
 
body.page-title-hidden .mw-page-title-main::after,
#clbi-top-nav-wrap,
body.page-title-hidden .mw-page-title-namespace,
#clbi-bottom-nav-wrap {
body.page-title-hidden .mw-page-title-namespace::after,
top:0 !important;
body.page-title-hidden .mw-page-title-separator,
bottom:auto !important;
body.page-title-hidden .mw-page-title-separator::after,
transform:none !important;
body.page-title-hidden .liberty-content-header .title,
body.page-title-hidden .liberty-content-header h1,
body.page-title-hidden #firstHeading,
body.page-title-hidden .firstHeading,
body.page-title-hidden .mw-first-heading,
body.page-title-hidden .page-heading,
body.page-title-hidden .page-header {
display:none !important;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}
}


/* -----------------------------------------
3. 본문 컨테이너
----------------------------------------- */


/* Anecdote 네임스페이스도 작품/회차 일반 문서 계열로 본다.
/*
  감상 모드 여부와 관계없이 MediaWiki 기본 제목은 숨기고,
본문 컨테이너는 바깥 장비 프레임과 내부 우물로 분리한다.
  뷰어 내부 제목과 작품 허브 내부 제목만 사용한다. */
- .liberty-content는 투명 래퍼로 유지한다.
body.anecdote-namespace-page .liberty-content-header,
- .liberty-content-main은 외곽 프레임이다.
body.anecdote-namespace-page .liberty-content-header .title,
- .mw-parser-output은 실제 본문이 놓이는 내부 우물이다.
body.anecdote-namespace-page .liberty-content-header .title h1,
- 외곽과 본문 사이의 기본 간격은 8px이다.
body.anecdote-namespace-page .mw-page-title-main,
*/
body.anecdote-namespace-page .mw-page-title-main::after,
 
body.anecdote-namespace-page .mw-page-title-namespace,
.liberty-content-main,
body.anecdote-namespace-page .mw-page-title-namespace::after,
.Liberty .content-wrapper .liberty-content .liberty-content-main,
body.anecdote-namespace-page .mw-page-title-separator,
.liberty-content-main {
body.anecdote-namespace-page .mw-page-title-separator::after,
position:relative !important;
body.anecdote-namespace-page #firstHeading,
box-sizing:border-box !important;
body.anecdote-namespace-page .firstHeading,
height:100% !important;
body.anecdote-namespace-page .mw-first-heading,
body.anecdote-namespace-page .page-heading,
body.anecdote-namespace-page .page-header {
display:none !important;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
min-height:0 !important;
margin:0 !important;
background:#1d1d1d !important;
padding:0 !important;
border:1px solid #050505 !important;
border-radius:0 !important;
padding:8px !important;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010,
0 6px 18px rgba(0,0,0,0.34) !important;
overflow:hidden !important;
overflow:hidden !important;
display:flex !important;
flex-direction:column !important;
}
}


 
.liberty-content-main .mw-parser-output {
/* action-view fallback: 일반 열람 문서는 JS 재적용 타이밍과 무관하게 기본 제목을 숨긴다.
position:relative !important;
  backend/system 문서는 Common.js가 body.backend-system-page를 붙여 제목을 유지한다. */
box-sizing:border-box !important;
body.action-view:not(.backend-system-page) .liberty-content-header,
flex:1 1 auto !important;
body.action-view:not(.backend-system-page) .liberty-content-header .title,
height:auto !important;
body.action-view:not(.backend-system-page) .liberty-content-header .title h1,
body.action-view:not(.backend-system-page) .liberty-content-header h1,
body.action-view:not(.backend-system-page) .mw-page-title-main,
body.action-view:not(.backend-system-page) .mw-page-title-main::after,
body.action-view:not(.backend-system-page) .mw-page-title-namespace,
body.action-view:not(.backend-system-page) .mw-page-title-namespace::after,
body.action-view:not(.backend-system-page) .mw-page-title-separator,
body.action-view:not(.backend-system-page) .mw-page-title-separator::after,
body.action-view:not(.backend-system-page) #firstHeading,
body.action-view:not(.backend-system-page) .firstHeading,
body.action-view:not(.backend-system-page) .mw-first-heading,
body.action-view:not(.backend-system-page) .page-heading,
body.action-view:not(.backend-system-page) .page-header {
display:none !important;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
min-height:0 !important;
margin:0 !important;
margin:0 !important;
padding:0 !important;
padding:8px !important;
overflow:hidden !important;
background:#080808 !important;
border:0 !important;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555 !important;
overflow-y:auto !important;
overflow-x:hidden !important;
}
}


body.action-view:not(.backend-system-page) .liberty-content-header + .mw-parser-output {
margin-top:0 !important;
}


.liberty-content-main .mw-parser-output,
#clbi-left-sidebar,
#clbi-right-sidebar {
scrollbar-width:thin;
scrollbar-color:#333333 #080808;
}


/* 대문 title hard fallback
/* 제목이 유지되는 관리/시스템 문서는 제목 영역과 본문 우물 사이에 8px 간격을 둔다. */
  Theme.css가 뒤에서 .mw-page-title-main을 다시 보이게 하더라도
body.page-title-visible .liberty-content-header + .mw-parser-output,
  대문 열람 화면에서는 MediaWiki 기본 제목을 강제로 숨긴다. */
body.backend-system-page .liberty-content-header + .mw-parser-output {
body.action-view.page-대문 .liberty-content-header,
margin-top:8px !important;
body.action-view.page-대문 .liberty-content-header .title,
}
body.action-view.page-대문 .liberty-content-header .title h1,
 
body.action-view.page-대문 .liberty-content-header h1,
/* title을 숨긴 일반 문서는 내부 우물이 바로 본문 시작점이 된다. */
body.action-view.page-대문 .mw-page-title-main,
body.page-title-hidden .liberty-content-header + .mw-parser-output,
body.action-view.page-대문 .mw-page-title-main::after,
body.anecdote-namespace-page .liberty-content-header + .mw-parser-output {
body.action-view.page-대문 .mw-page-title-namespace,
margin-top:0 !important;
body.action-view.page-대문 .mw-page-title-namespace::after,
}
body.action-view.page-대문 .mw-page-title-separator,
 
body.action-view.page-대문 .mw-page-title-separator::after,
.liberty-content {
body.action-view.page-대문 #firstHeading,
border:none !important;
body.action-view.page-대문 .firstHeading,
box-shadow:none !important;
body.action-view.page-대문 .mw-first-heading,
border-radius:0 !important;
body.action-view.page-대문 .page-heading,
background:transparent !important;
body.action-view.page-대문 .page-header,
body.action-view.rootpage-대문 .liberty-content-header,
body.action-view.rootpage-대문 .liberty-content-header .title,
body.action-view.rootpage-대문 .liberty-content-header .title h1,
body.action-view.rootpage-대문 .liberty-content-header h1,
body.action-view.rootpage-대문 .mw-page-title-main,
body.action-view.rootpage-대문 .mw-page-title-main::after,
body.action-view.rootpage-대문 .mw-page-title-namespace,
body.action-view.rootpage-대문 .mw-page-title-namespace::after,
body.action-view.rootpage-대문 .mw-page-title-separator,
body.action-view.rootpage-대문 .mw-page-title-separator::after,
body.action-view.rootpage-대문 #firstHeading,
body.action-view.rootpage-대문 .firstHeading,
body.action-view.rootpage-대문 .mw-first-heading,
body.action-view.rootpage-대문 .page-heading,
body.action-view.rootpage-대문 .page-header {
display:none !important;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}
 
body.action-view.page-대문 .liberty-content-header + .mw-parser-output,
body.action-view.rootpage-대문 .liberty-content-header + .mw-parser-output {
margin-top:0 !important;
}
 
/* 문서 조작 버튼은 DevTools의 DOCUMENT TOOLS로 이동한다. */
.liberty-content-header .content-tools,
.content-tools {
display:none !important;
}
}


/* -----------------------------------------
/* -----------------------------------------
5. 페이지 전환 피드백
4. 본문 헤더
----------------------------------------- */
----------------------------------------- */


body::after {
.liberty-content-header {
content:'';
background:transparent !important;
position:fixed;
box-shadow:none !important;
inset:0;
border:none !important;
background:rgba(0,0,0,0);
display:flex !important;
transition:background 0.2s ease, opacity 0.2s ease;
align-items:flex-end !important;
opacity:0;
justify-content:space-between !important;
pointer-events:none;
padding:0 !important;
z-index:99999;
height:auto !important;
min-height:0 !important;
border-radius:0 !important;
}
}


body.page-loading::after {
.liberty-content-header .content-tools {
background:rgba(0,0,0,0.5);
display:none !important;
opacity:1;
order:2 !important;
flex-shrink:0 !important;
padding-top:0 !important;
padding-right:0 !important;
}
}


/* -----------------------------------------
.liberty-content-header .title {
6. 좌우 사이드바 공통
order:1 !important;
----------------------------------------- */
flex:1 !important;
 
display:flex !important;
#clbi-left-sidebar,
align-items:flex-end !important;
#clbi-right-sidebar {
margin:0 !important;
position:relative;
padding:0 !important;
width:230px;
z-index:1000;
display:flex;
flex-direction:column;
gap:8px;
padding:0;
flex-shrink:0;
align-self:flex-start;
max-height:100%;
overflow-y:auto;
overflow-x:hidden;
}
}


.clbi-left-box,
.liberty-content-header h1 {
.clbi-right-box {
margin:0 !important;
position:relative;
padding:0 !important;
box-sizing:border-box;
background:#1d1d1d;
border:1px solid #050505;
border-radius:0;
overflow:hidden;
padding:0 8px 8px;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010,
0 6px 18px rgba(0,0,0,0.34);
}
}


.clbi-left-title,
.liberty-content-header .contentSub {
.clbi-right-title {
display:none !important;
min-height:34px;
}
padding:0 2px;
 
font-weight:700;
 
font-size:12px;
/* 일반 문서에서는 기본 제목 영역을 숨긴다.
color:#e2e2e2;
  CSS/JS/JSON, MediaWiki, 특수문서, 틀, 파일, 분류 같은 시스템 문서는
border:0;
  Common.js가 body.backend-system-page를 부여하므로 제목을 유지한다. */
background:transparent;
body.page-title-hidden .liberty-content-header,
display:flex;
body.page-title-hidden .liberty-content-header .title,
align-items:center;
body.page-title-hidden .liberty-content-header .title h1 {
gap:6px;
display:none !important;
line-height:1;
visibility:hidden !important;
text-shadow:1px 1px 0 #000;
height:0 !important;
box-shadow:none;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}
}


.clbi-left-content,
body.page-title-hidden .mw-page-title-main,
.clbi-right-content {
body.page-title-hidden .mw-page-title-main::after,
margin:0;
body.page-title-hidden .mw-page-title-namespace,
padding:8px;
body.page-title-hidden .mw-page-title-namespace::after,
box-sizing:border-box;
body.page-title-hidden .mw-page-title-separator,
color:#c8c8c8;
body.page-title-hidden .mw-page-title-separator::after,
font-size:12px;
body.page-title-hidden .liberty-content-header .title,
line-height:1.65;
body.page-title-hidden .liberty-content-header h1,
background:#080808;
body.page-title-hidden #firstHeading,
border:0;
body.page-title-hidden .firstHeading,
box-shadow:
body.page-title-hidden .mw-first-heading,
inset 0 1px 0 #101010,
body.page-title-hidden .page-heading,
inset -1px 0 0 #101010,
body.page-title-hidden .page-header {
inset 1px 0 0 #555555,
display:none !important;
inset 0 -1px 0 #555555;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}
}


.clbi-right-content a,
.clbi-left-content a {
color:#c8c8c8 !important;
text-decoration:none;
display:block;
}


.clbi-right-content a:not(.clbi-user-btn):hover,
/* Anecdote 네임스페이스도 작품/회차 일반 문서 계열로 본다.
.clbi-left-content a:not(.clbi-user-btn):hover {
  감상 모드 여부와 관계없이 MediaWiki 기본 제목은 숨기고,
color:#ffffff !important;
  뷰어 내부 제목과 작품 허브 내부 제목만 사용한다. */
body.anecdote-namespace-page .liberty-content-header,
body.anecdote-namespace-page .liberty-content-header .title,
body.anecdote-namespace-page .liberty-content-header .title h1,
body.anecdote-namespace-page .mw-page-title-main,
body.anecdote-namespace-page .mw-page-title-main::after,
body.anecdote-namespace-page .mw-page-title-namespace,
body.anecdote-namespace-page .mw-page-title-namespace::after,
body.anecdote-namespace-page .mw-page-title-separator,
body.anecdote-namespace-page .mw-page-title-separator::after,
body.anecdote-namespace-page #firstHeading,
body.anecdote-namespace-page .firstHeading,
body.anecdote-namespace-page .mw-first-heading,
body.anecdote-namespace-page .page-heading,
body.anecdote-namespace-page .page-header {
display:none !important;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}
}


/* -----------------------------------------
7. 유저 박스
----------------------------------------- */


.profile-card-box {
/* action-view fallback: 일반 열람 문서는 JS 재적용 타이밍과 무관하게 기본 제목을 숨긴다.
position:relative;
  backend/system 문서는 Common.js가 body.backend-system-page를 붙여 제목을 유지한다. */
overflow:hidden;
body.action-view:not(.backend-system-page) .liberty-content-header,
background:#101010;
body.action-view:not(.backend-system-page) .liberty-content-header .title,
}
body.action-view:not(.backend-system-page) .liberty-content-header .title h1,
 
body.action-view:not(.backend-system-page) .liberty-content-header h1,
#clbi-user-avatar-wrap,
body.action-view:not(.backend-system-page) .mw-page-title-main,
#clbi-user-avatar-wrap.profile-identity-panel {
body.action-view:not(.backend-system-page) .mw-page-title-main::after,
position:relative;
body.action-view:not(.backend-system-page) .mw-page-title-namespace,
display:block;
body.action-view:not(.backend-system-page) .mw-page-title-namespace::after,
min-height:180px;
body.action-view:not(.backend-system-page) .mw-page-title-separator,
margin:0;
body.action-view:not(.backend-system-page) .mw-page-title-separator::after,
padding:0 8px;
body.action-view:not(.backend-system-page) #firstHeading,
background:#1d1d1d;
body.action-view:not(.backend-system-page) .firstHeading,
border:none;
body.action-view:not(.backend-system-page) .mw-first-heading,
border-bottom:1px solid #202020;
body.action-view:not(.backend-system-page) .page-heading,
box-shadow:
body.action-view:not(.backend-system-page) .page-header {
inset 0 1px 0 rgba(255,255,255,0.050),
display:none !important;
inset 0 -1px 0 rgba(0,0,0,0.70);
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}
 
body.action-view:not(.backend-system-page) .liberty-content-header + .mw-parser-output {
margin-top:0 !important;
}
}


.profile-avatar-stage {
 
position:absolute;
/* 대문 title hard fallback
left:50%;
  Theme.css가 뒤에서 .mw-page-title-main을 다시 보이게 하더라도
top:50%;
  대문 열람 화면에서는 MediaWiki 기본 제목을 강제로 숨긴다. */
transform:translate(-50%, -50%);
body.action-view.page-대문 .liberty-content-header,
width:104px;
body.action-view.page-대문 .liberty-content-header .title,
height:104px;
body.action-view.page-대문 .liberty-content-header .title h1,
display:flex;
body.action-view.page-대문 .liberty-content-header h1,
align-items:center;
body.action-view.page-대문 .mw-page-title-main,
justify-content:center;
body.action-view.page-대문 .mw-page-title-main::after,
box-sizing:border-box;
body.action-view.page-대문 .mw-page-title-namespace,
background:#141414;
body.action-view.page-대문 .mw-page-title-namespace::after,
border:1px solid;
body.action-view.page-대문 .mw-page-title-separator,
border-color:
body.action-view.page-대문 .mw-page-title-separator::after,
#2b2b2b
body.action-view.page-대문 #firstHeading,
#202020
body.action-view.page-대문 .firstHeading,
#101010
body.action-view.page-대문 .mw-first-heading,
#202020;
body.action-view.page-대문 .page-heading,
box-shadow:
body.action-view.page-대문 .page-header,
inset 0 1px 0 rgba(255,255,255,0.018),
body.action-view.rootpage-대문 .liberty-content-header,
inset 0 -1px 0 rgba(0,0,0,0.42);
body.action-view.rootpage-대문 .liberty-content-header .title,
}
body.action-view.rootpage-대문 .liberty-content-header .title h1,
 
body.action-view.rootpage-대문 .liberty-content-header h1,
.profile-avatar-stage::before {
body.action-view.rootpage-대문 .mw-page-title-main,
content:"";
body.action-view.rootpage-대문 .mw-page-title-main::after,
position:absolute;
body.action-view.rootpage-대문 .mw-page-title-namespace,
left:7px;
body.action-view.rootpage-대문 .mw-page-title-namespace::after,
right:7px;
body.action-view.rootpage-대문 .mw-page-title-separator,
top:7px;
body.action-view.rootpage-대문 .mw-page-title-separator::after,
height:1px;
body.action-view.rootpage-대문 #firstHeading,
background:rgba(255,255,255,0.026);
body.action-view.rootpage-대문 .firstHeading,
pointer-events:none;
body.action-view.rootpage-대문 .mw-first-heading,
body.action-view.rootpage-대문 .page-heading,
body.action-view.rootpage-대문 .page-header {
display:none !important;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}
 
body.action-view.page-대문 .liberty-content-header + .mw-parser-output,
body.action-view.rootpage-대문 .liberty-content-header + .mw-parser-output {
margin-top:0 !important;
}
}


.profile-avatar-stage::after {
/* 문서 조작 버튼은 DevTools의 DOCUMENT TOOLS로 이동한다. */
content:"";
.liberty-content-header .content-tools,
position:absolute;
.content-tools {
inset:0;
display:none !important;
pointer-events:none;
box-shadow:
inset 1px 0 0 rgba(255,255,255,0.006),
inset -1px 0 0 rgba(0,0,0,0.16);
}
}


#clbi-user-avatar {
 
position:relative;
/* -----------------------------------------
z-index:1;
4-A. MediaWiki CSS/JS 문서 표시
display:block;
----------------------------------------- */
width:90px;
 
height:90px;
/*
object-fit:cover;
CSS/JS 시스템 문서는 기본 제목을 숨기고 우상단 문서 표식과 raw source viewer를 사용한다.
background:#070707;
 
border:1px solid #101010;
중요 구조:
box-shadow:
- .liberty-content-main : 외곽 #1d1d1d 프레임
0 0 0 1px rgba(255,255,255,0.012);
- #mw-content-text/.mw-body-content : MediaWiki가 끼워 넣는 중간 래퍼
- .mw-parser-output : 내부 #080808 우물
- #clbi-system-source-viewer : 우물 안에서 남은 높이를 차지하는 스크롤 패널
 
이 중간 래퍼를 채우지 않으면 .mw-parser-output이 내용 높이로 접히고,
코드 영역이 얇은 줄처럼 보인다.
*/
 
body.clbi-system-doc-page .liberty-content-main {
position:relative !important;
height:100% !important;
min-height:0 !important;
overflow:hidden !important;
display:flex !important;
flex-direction:column !important;
}
}


#clbi-user-name {
body.clbi-system-doc-page #mw-content-text,
max-width:100%;
body.clbi-system-doc-page .mw-body-content {
margin-top:0;
position:relative !important;
color:#e2e2e2;
box-sizing:border-box !important;
font-size:14px;
flex:1 1 auto !important;
font-weight:700;
height:auto !important;
line-height:1.2;
min-height:0 !important;
text-align:center;
max-height:none !important;
white-space:nowrap;
margin:0 !important;
overflow:hidden;
padding:0 !important;
text-overflow:ellipsis;
overflow:hidden !important;
text-shadow:1px 1px 0 #000;
display:flex !important;
flex-direction:column !important;
}
}


#clbi-user-name-row,
body.clbi-system-doc-page .liberty-content-main .mw-parser-output {
#clbi-user-name-row.profile-name-row {
position:relative !important;
position:absolute;
box-sizing:border-box !important;
left:8px;
flex:1 1 auto !important;
right:8px;
height:auto !important;
top:calc(50% + 52px);
min-height:0 !important;
bottom:0;
max-height:none !important;
width:auto;
margin:0 !important;
margin:0;
padding:8px !important;
min-height:0;
background:#080808 !important;
line-height:1.2;
border:0 !important;
text-align:center;
box-shadow:
display:flex;
inset 0 1px 0 #101010,
align-items:center;
inset -1px 0 0 #101010,
justify-content:center;
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555 !important;
overflow:hidden !important;
display:flex !important;
flex-direction:column !important;
}
}


#clbi-user-name-row.profile-name-row-guest {
body.clbi-system-doc-page .liberty-content-main .mw-parser-output > :not(#clbi-system-source-viewer):not(#clbi-system-doc-indicator-row) {
display:flex;
flex:0 0 auto !important;
align-items:center;
justify-content:center;
}
}


#clbi-user-name-row #clbi-user-name {
body.clbi-system-doc-page .clbi-system-original-source-hidden {
display:inline-block;
display:none !important;
max-width:100%;
margin-top:0;
vertical-align:middle;
color:#e2e2e2 !important;
text-decoration:none !important;
}
}


#clbi-user-name-row.profile-name-row-guest #clbi-user-name {
body.clbi-system-doc-page #clbi-system-source-viewer {
max-width:100%;
display:block !important;
box-sizing:border-box !important;
flex:1 1 0 !important;
width:100% !important;
max-width:none !important;
min-width:0 !important;
height:auto !important;
min-height:0 !important;
max-height:none !important;
margin:8px 0 0 !important;
padding:8px 10px !important;
overflow:auto !important;
background:#f3f6f7 !important;
color:#111111 !important;
border:0 !important;
outline:none !important;
font-family:Consolas, Monaco, 'Courier New', monospace !important;
font-size:12px !important;
line-height:1.45 !important;
white-space:pre !important;
tab-size:4;
scrollbar-gutter:stable;
}
}


.profile-svg {
body.clbi-system-doc-page .clbi-system-doc-codepane,
display:block;
body.clbi-system-doc-page .clbi-system-doc-codebox {
width:100%;
display:none !important;
height:100%;
}
stroke:currentColor;
 
fill:none;
.clbi-system-doc-indicator-row {
vertical-align:middle;
position:absolute !important;
top:8px !important;
right:8px !important;
z-index:40 !important;
width:auto !important;
max-width:calc(100% - 16px) !important;
height:auto !important;
margin:0 !important;
padding:0 !important;
display:block !important;
pointer-events:none !important;
}
 
.clbi-system-doc-indicator {
display:block !important;
width:max-content !important;
max-width:520px !important;
box-sizing:border-box !important;
padding:5px 8px 6px !important;
background:#171717 !important;
border:1px solid #050505 !important;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010 !important;
overflow:hidden !important;
}
}


.clbi-svg-nav-icon {
.clbi-system-doc-meta {
display:flex !important;
display:flex !important;
align-items:center;
justify-content:flex-end !important;
justify-content:center;
align-items:center !important;
color:#e2e2e2;
gap:7px !important;
line-height:1;
margin:0 0 3px 0 !important;
font-size:10px !important;
line-height:1 !important;
letter-spacing:0.08em !important;
text-transform:uppercase !important;
color:#8a8a8a !important;
white-space:nowrap !important;
}
}


.clbi-svg-nav-icon .profile-svg {
.clbi-system-doc-label {
width:22px;
color:#8a8a8a !important;
height:22px;
font-weight:700 !important;
}
}


.sidebar-title-svg {
.clbi-system-doc-type {
display:inline-flex;
display:inline-flex !important;
align-items:center;
align-items:center !important;
justify-content:center;
height:14px !important;
width:16px;
padding:0 5px !important;
height:16px;
background:#0d0d0d !important;
flex:0 0 16px;
border:1px solid #202020 !important;
color:#e2e2e2 !important;
color:#c8c8c8 !important;
line-height:1;
font-weight:700 !important;
}
}


.sidebar-title-svg .profile-svg {
.clbi-system-doc-title {
width:16px;
display:block !important;
height:16px;
max-width:500px !important;
text-align:right !important;
font-size:24px !important;
line-height:1 !important;
font-weight:900 !important;
letter-spacing:0.01em !important;
color:#e2e2e2 !important;
text-shadow:0 1px 0 rgba(0,0,0,0.78) !important;
white-space:nowrap !important;
word-break:normal !important;
overflow:hidden !important;
text-overflow:ellipsis !important;
}
}


.profile-action-icon {
body.clbi-system-doc-page .liberty-content-header,
position:relative;
body.clbi-system-doc-page .liberty-content-header .title,
top:0;
body.clbi-system-doc-page .liberty-content-header .title h1,
display:inline-flex;
body.clbi-system-doc-page .liberty-content-header h1,
align-items:center;
body.clbi-system-doc-page .mw-page-title-main,
justify-content:center;
body.clbi-system-doc-page .mw-page-title-main::after,
width:15px;
body.clbi-system-doc-page .mw-page-title-namespace,
height:15px;
body.clbi-system-doc-page .mw-page-title-namespace::after,
color:#8a8a8a;
body.clbi-system-doc-page .mw-page-title-separator,
pointer-events:none;
body.clbi-system-doc-page .mw-page-title-separator::after,
line-height:1;
body.clbi-system-doc-page #firstHeading,
body.clbi-system-doc-page .firstHeading,
body.clbi-system-doc-page .mw-first-heading,
body.clbi-system-doc-page .page-heading,
body.clbi-system-doc-page .page-header {
display:none !important;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}
}


.profile-action-icon .profile-svg {
body.clbi-system-doc-page .liberty-content-header + .mw-parser-output {
width:15px;
margin-top:0 !important;
height:15px;
}
}


.profile-action-box .clbi-user-btn:hover .profile-action-icon,
/* -----------------------------------------
.profile-action-box .clbi-user-btn.clbi-user-btn-active .profile-action-icon {
5. 페이지 전환 피드백
color:#ffffff;
----------------------------------------- */
}


.profile-action-box .clbi-user-btn-logout .profile-action-icon {
body::after {
color:#8b5f59;
content:'';
position:fixed;
inset:0;
background:rgba(0,0,0,0);
transition:background 0.2s ease, opacity 0.2s ease;
opacity:0;
pointer-events:none;
z-index:99999;
}
}


.profile-action-box .clbi-user-btn-logout:hover .profile-action-icon {
body.page-loading::after {
color:#e0a199;
background:rgba(0,0,0,0.5);
opacity:1;
}
}


/* -----------------------------------------
6. 좌우 사이드바 공통
----------------------------------------- */


 
#clbi-left-sidebar,
.news-title-icon.sidebar-title-svg {
#clbi-right-sidebar {
display:inline-flex;
position:relative;
align-items:center;
width:230px;
justify-content:center;
z-index:1000;
width:16px;
display:flex;
height:16px;
flex-direction:column;
line-height:1;
gap:8px;
color:#e2e2e2 !important;
padding:0;
flex:0 0 16px;
flex-shrink:0;
vertical-align:middle;
align-self:flex-start;
max-height:100%;
overflow-y:auto;
overflow-x:hidden;
}
}


.news-title-icon.sidebar-title-svg .profile-svg {
.clbi-left-box,
width:16px;
.clbi-right-box {
height:16px;
position:relative;
display:block;
box-sizing:border-box;
background:#1d1d1d;
border:1px solid #050505;
border-radius:0;
overflow:hidden;
padding:0 8px 8px;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010,
0 6px 18px rgba(0,0,0,0.34);
}
}


.profile-quick-actions {
.clbi-left-title,
position:relative;
.clbi-right-title {
display:grid;
min-height:34px;
grid-template-columns:repeat(3, minmax(0, 1fr));
padding:0 2px;
gap:4px;
font-weight:700;
margin:0 0 8px;
font-size:12px;
overflow:visible;
color:#e2e2e2;
z-index:2;
border:0;
}
background:transparent;
 
.profile-quick-btn {
position:relative;
display:flex;
display:flex;
align-items:center;
align-items:center;
justify-content:center;
gap:6px;
width:100%;
line-height:1;
aspect-ratio:1 / 1;
min-width:0;
min-height:0;
padding:0;
box-sizing:border-box;
background:
linear-gradient(to bottom, #141414 0%, #101010 54%, #0c0c0c 100%);
border:1px solid;
border-color:
#333333
#202020
#181818
#202020;
color:#c8c8c8;
cursor:pointer;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040);
text-shadow:1px 1px 0 #000;
text-shadow:1px 1px 0 #000;
box-shadow:none;
}
}


.profile-quick-btn:hover {
.clbi-left-content,
background:
.clbi-right-content {
linear-gradient(to bottom, #1d1d1d 0%, #171717 54%, #101010 100%);
margin:0;
border-color:
padding:8px;
#444444
box-sizing:border-box;
#333333
color:#c8c8c8;
#202020
font-size:12px;
#333333;
line-height:1.65;
color:#ffffff;
background:#080808;
border:0;
box-shadow:
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.060),
inset 0 1px 0 #101010,
0 0 0 1px rgba(255,255,255,0.018);
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}
 
.clbi-right-content a,
.clbi-left-content a {
color:#c8c8c8 !important;
text-decoration:none;
display:block;
}
}


.profile-quick-btn:active {
.clbi-right-content a:not(.clbi-user-btn):hover,
background:
.clbi-left-content a:not(.clbi-user-btn):hover {
linear-gradient(to bottom, #0b0b0b 0%, #101010 55%, #171717 100%);
color:#ffffff !important;
border-color:
#050505
#202020
#333333
#202020;
box-shadow:
inset 1px 1px 3px rgba(0,0,0,0.82),
inset -1px -1px 0 rgba(255,255,255,0.035);
}
}


.profile-quick-icon {
/* -----------------------------------------
display:flex;
7. 유저 박스
align-items:center;
----------------------------------------- */
justify-content:center;
 
width:22px;
.profile-card-box {
height:22px;
position:relative;
line-height:1;
overflow:hidden;
color:currentColor;
background:#101010;
pointer-events:none;
}
}


.profile-quick-icon .profile-svg {
#clbi-user-avatar-wrap,
#clbi-user-avatar-wrap.profile-identity-panel {
position:relative;
display:block;
display:block;
width:22px;
min-height:180px;
height:22px;
margin:0;
padding:0 8px;
background:#1d1d1d;
border:none;
border-bottom:1px solid #202020;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.050),
inset 0 -1px 0 rgba(0,0,0,0.70);
}
}


.profile-quick-tip {
.profile-avatar-stage {
position:absolute;
position:absolute;
left:50%;
left:50%;
top:calc(100% + 4px);
top:50%;
z-index:40;
transform:translate(-50%, -50%);
min-width:42px;
width:104px;
padding:3px 6px 4px;
height:104px;
display:flex;
align-items:center;
justify-content:center;
box-sizing:border-box;
box-sizing:border-box;
background:#101010;
background:#141414;
border:1px solid;
border:1px solid;
border-color:
border-color:
#555555
#2b2b2b
#2b2b2b
#050505
#202020
#2b2b2b;
#101010
color:#e2e2e2;
#202020;
font-size:9px;
font-weight:700;
line-height:1;
white-space:nowrap;
text-align:center;
text-shadow:1px 1px 0 #000;
box-shadow:
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.035),
inset 0 1px 0 rgba(255,255,255,0.018),
inset 0 -1px 0 rgba(0,0,0,0.70),
inset 0 -1px 0 rgba(0,0,0,0.42);
0 4px 10px rgba(0,0,0,0.44);
visibility:hidden;
opacity:0;
transform:translate(-50%, -1px);
pointer-events:none;
}
}


.profile-quick-btn:hover .profile-quick-tip,
.profile-avatar-stage::before {
.profile-quick-btn:focus-visible .profile-quick-tip {
content:"";
visibility:visible;
position:absolute;
opacity:1;
left:7px;
transform:translate(-50%, 0);
right:7px;
top:7px;
height:1px;
background:rgba(255,255,255,0.026);
pointer-events:none;
}
}


/* -----------------------------------------
.profile-avatar-stage::after {
9. 유저 버튼
content:"";
----------------------------------------- */
position:absolute;
 
inset:0;
.clbi-user-btn-grid {
pointer-events:none;
display:grid;
grid-template-columns:1fr;
gap:4px;
}
 
.profile-divider {
height:1px;
margin:9px 7px;
background:#202020;
box-shadow:
box-shadow:
0 1px 0 rgba(255,255,255,0.018);
inset 1px 0 0 rgba(255,255,255,0.006),
inset -1px 0 0 rgba(0,0,0,0.16);
}
}


.profile-action-box {
#clbi-user-avatar {
position:relative;
position:relative;
margin:0 7px 7px;
z-index:1;
padding:3px !important;
display:block;
overflow:visible;
width:90px;
background:#080808;
height:90px;
border:1px solid;
object-fit:cover;
border-color:
background:#070707;
#333333
border:1px solid #101010;
#202020
#050505
#202020;
box-sizing:border-box;
box-shadow:
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.020),
0 0 0 1px rgba(255,255,255,0.012);
inset 0 -1px 0 rgba(0,0,0,0.58);
}
}


.profile-action-box .clbi-user-btn {
#clbi-user-name {
position:relative;
max-width:100%;
display:grid !important;
margin-top:0;
grid-template-columns:15px minmax(0,1fr) 12px !important;
color:#e2e2e2;
column-gap:7px !important;
font-size:14px;
align-items:center !important;
font-weight:700;
justify-content:stretch !important;
line-height:1.2;
width:100% !important;
text-align:center;
min-height:26px !important;
white-space:nowrap;
height:26px !important;
margin:0 0 4px !important;
padding:0 7px !important;
box-sizing:border-box !important;
background:
linear-gradient(to bottom, #141414 0%, #101010 54%, #0c0c0c 100%) !important;
border:1px solid !important;
border-color:
#333333
#202020
#181818
#202020 !important;
color:#c8c8c8 !important;
font-size:11px !important;
font-weight:700 !important;
line-height:1 !important;
text-align:left !important;
text-decoration:none !important;
text-shadow:1px 1px 0 #000 !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040) !important;
overflow:hidden !important;
}
 
.profile-action-box .clbi-user-btn:last-child {
margin-bottom:0 !important;
}
 
.profile-action-label {
display:flex;
align-items:center;
min-width:0;
height:100%;
overflow:hidden;
overflow:hidden;
text-overflow:ellipsis;
text-overflow:ellipsis;
white-space:nowrap;
text-shadow:1px 1px 0 #000;
line-height:1;
}
}


.profile-action-arrow {
#clbi-user-name-row,
position:relative;
#clbi-user-name-row.profile-name-row {
top:0;
position:absolute;
display:inline-flex;
left:8px;
right:8px;
top:calc(50% + 52px);
bottom:0;
width:auto;
margin:0;
min-height:0;
line-height:1.2;
text-align:center;
display:flex;
align-items:center;
align-items:center;
justify-content:center;
justify-content:center;
justify-self:end;
width:12px;
height:12px;
color:#8a8a8a;
font-size:11px;
line-height:1;
pointer-events:none;
}
}


.profile-action-box .clbi-user-btn:hover {
#clbi-user-name-row.profile-name-row-guest {
background:
display:flex;
linear-gradient(to bottom, #1d1d1d 0%, #171717 54%, #101010 100%) !important;
align-items:center;
border-color:
justify-content:center;
#444444
#333333
#202020
#333333 !important;
color:#ffffff !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.060),
0 0 0 1px rgba(255,255,255,0.018) !important;
}
}


.profile-action-box .clbi-user-btn:hover .profile-action-arrow {
#clbi-user-name-row #clbi-user-name {
color:#ffffff;
display:inline-block;
max-width:100%;
margin-top:0;
vertical-align:middle;
color:#e2e2e2 !important;
text-decoration:none !important;
}
}


.profile-action-box .clbi-user-btn:active {
#clbi-user-name-row.profile-name-row-guest #clbi-user-name {
background:
max-width:100%;
linear-gradient(to bottom, #0b0b0b 0%, #101010 55%, #171717 100%) !important;
border-color:
#050505
#202020
#333333
#202020 !important;
box-shadow:
inset 1px 1px 3px rgba(0,0,0,0.82),
inset -1px -1px 0 rgba(255,255,255,0.035) !important;
}
}


.profile-action-box .clbi-user-btn-logout {
.profile-svg {
color:#c88a80 !important;
display:block;
border-color:
width:100%;
#3f3f3f
height:100%;
#2a2020
stroke:currentColor;
#181010
fill:none;
#2a2020 !important;
vertical-align:middle;
}
}


.profile-action-box .clbi-user-btn-logout .profile-action-arrow {
.clbi-svg-nav-icon {
color:#8b5f59;
display:flex !important;
align-items:center;
justify-content:center;
color:#e2e2e2;
line-height:1;
}
 
.clbi-svg-nav-icon .profile-svg {
width:22px;
height:22px;
}
}


.profile-action-box .clbi-user-btn-logout:hover {
.sidebar-title-svg {
background:
display:inline-flex;
linear-gradient(to bottom, #241615 0%, #1b1110 56%, #100908 100%) !important;
align-items:center;
border-color:
justify-content:center;
#6a3933
width:16px;
#3f2623
height:16px;
#181010
flex:0 0 16px;
#3f2623 !important;
color:#e2e2e2 !important;
color:#e0a199 !important;
line-height:1;
}
}


.profile-action-box .clbi-user-btn-logout:hover .profile-action-arrow {
.sidebar-title-svg .profile-svg {
color:#e0a199;
width:16px;
height:16px;
}
}


.profile-action-box .clbi-user-btn.clbi-user-btn-active {
.profile-action-icon {
background:
position:relative;
linear-gradient(to bottom, #242424 0%, #1d1d1d 55%, #141414 100%) !important;
top:0;
border-color:
display:inline-flex;
#555555
align-items:center;
#333333
justify-content:center;
#202020
width:15px;
#333333 !important;
height:15px;
color:#ffffff !important;
color:#8a8a8a;
box-shadow:
pointer-events:none;
inset 0 1px 0 rgba(255,255,255,0.070),
line-height:1;
inset 0 -1px 0 rgba(0,0,0,0.62),
}
0 0 0 1px rgba(255,255,255,0.022) !important;
 
.profile-action-icon .profile-svg {
width:15px;
height:15px;
}
}


.profile-action-box .clbi-user-btn.clbi-user-btn-active .profile-action-arrow {
.profile-action-box .clbi-user-btn:hover .profile-action-icon,
.profile-action-box .clbi-user-btn.clbi-user-btn-active .profile-action-icon {
color:#ffffff;
color:#ffffff;
}
}


/* 기본 유저 버튼: 프로필 액션 박스 밖에서는 기존 사이드 버튼 문법 유지 */
.profile-action-box .clbi-user-btn-logout .profile-action-icon {
.clbi-user-btn {
color:#8b5f59;
display:flex !important;
}
align-items:center !important;
 
justify-content:center !important;
.profile-action-box .clbi-user-btn-logout:hover .profile-action-icon {
height:24px !important;
color:#e0a199;
padding:0 6px !important;
margin:0 !important;
border-radius:0 !important;
font-size:11px !important;
font-weight:700 !important;
line-height:1 !important;
color:#c8c8c8 !important;
text-decoration:none !important;
text-align:center !important;
background:#141414 !important;
border:1px solid #202020 !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.035),
inset 0 -1px 0 rgba(0,0,0,0.65) !important;
text-shadow:1px 1px 0 #000 !important;
box-sizing:border-box !important;
}
}


.clbi-user-btn:hover {
background:#202020 !important;
border-color:#333333 !important;
color:#ffffff !important;
}


.clbi-user-btn-logout {
 
border-color:#3f2623 !important;
.news-title-icon.sidebar-title-svg {
color:#c88a80 !important;
display:inline-flex;
align-items:center;
justify-content:center;
width:16px;
height:16px;
line-height:1;
color:#e2e2e2 !important;
flex:0 0 16px;
vertical-align:middle;
}
}


.clbi-user-btn-logout:hover {
.news-title-icon.sidebar-title-svg .profile-svg {
background:#1b1110 !important;
width:16px;
border-color:#6a3933 !important;
height:16px;
color:#e0a199 !important;
display:block;
}
}


.clbi-user-btn.clbi-user-btn-active {
.profile-quick-actions {
background:#242424 !important;
border-color:#555555 !important;
color:#ffffff !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.055),
inset 0 -1px 0 rgba(0,0,0,0.75) !important;
}
 
/* -----------------------------------------
9.4 우측 광고판 Ad(not really)
----------------------------------------- */
 
.right-billboard-box {
position:relative;
position:relative;
background:#1d1d1d;
display:grid;
grid-template-columns:repeat(3, minmax(0, 1fr));
gap:4px;
margin:0 0 8px;
overflow:visible;
overflow:visible;
z-index:2;
}
}


.right-billboard-title {
.profile-quick-btn {
justify-content:flex-start;
position:relative;
background:transparent;
display:flex;
border:0;
align-items:center;
box-shadow:none;
justify-content:center;
gap:4px;
width:100%;
}
aspect-ratio:1 / 1;
 
.right-billboard-title-text {
display:inline-flex;
align-items:center;
gap:4px;
min-width:0;
min-width:0;
overflow:hidden;
min-height:0;
text-overflow:ellipsis;
padding:0;
white-space:nowrap;
box-sizing:border-box;
background:
linear-gradient(to bottom, #141414 0%, #101010 54%, #0c0c0c 100%);
border:1px solid;
border-color:
#333333
#202020
#181818
#202020;
color:#c8c8c8;
cursor:pointer;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040);
text-shadow:1px 1px 0 #000;
}
}


.right-billboard-title-main,
.profile-quick-btn:hover {
.right-billboard-title-note {
background:
display:inline-block;
linear-gradient(to bottom, #1d1d1d 0%, #171717 54%, #101010 100%);
min-width:0;
border-color:
overflow:hidden;
#444444
text-overflow:ellipsis;
#333333
white-space:nowrap;
#202020
#333333;
color:#ffffff;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.060),
0 0 0 1px rgba(255,255,255,0.018);
}
}


.right-billboard-title-note {
.profile-quick-btn:active {
opacity:.20;
background:
}
linear-gradient(to bottom, #0b0b0b 0%, #101010 55%, #171717 100%);
 
border-color:
.right-billboard-body {
#050505
position:relative;
#202020
margin:0;
#333333
padding:7px;
#202020;
box-sizing:border-box;
background:#080808;
border:0;
box-shadow:
box-shadow:
inset 0 1px 0 #101010,
inset 1px 1px 3px rgba(0,0,0,0.82),
inset -1px 0 0 #101010,
inset -1px -1px 0 rgba(255,255,255,0.035);
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
overflow:visible;
}
}


.right-billboard-recess {
.profile-quick-icon {
position:relative;
display:flex;
height:auto;
align-items:center;
min-height:0;
justify-content:center;
box-sizing:border-box;
width:22px;
padding:8px;
height:22px;
background:
line-height:1;
linear-gradient(145deg, #050505 0%, #090909 45%, #030303 100%);
color:currentColor;
border:1px solid;
pointer-events:none;
border-color:#202020 #101010 #050505 #101010;
box-shadow:
inset 0 9px 18px rgba(0,0,0,0.96),
inset 0 -2px 3px rgba(255,255,255,0.024),
inset 7px 0 16px rgba(0,0,0,0.88),
inset -7px 0 16px rgba(0,0,0,0.88),
0 0 0 1px rgba(255,255,255,0.018);
overflow:hidden;
}
}


.right-billboard-recess::before {
.profile-quick-icon .profile-svg {
content:"";
display:block;
position:absolute;
width:22px;
inset:0;
height:22px;
z-index:0;
pointer-events:none;
opacity:.10;
background:
linear-gradient(to bottom, rgba(255,255,255,0.08) 0%, transparent 20%, transparent 100%),
linear-gradient(to right, rgba(255,255,255,0.04) 0%, transparent 22%, transparent 100%);
mix-blend-mode:screen;
}
}


.right-billboard-screen {
.profile-quick-tip {
position:relative;
position:absolute;
z-index:1;
left:50%;
width:100%;
top:calc(100% + 4px);
height:352px;
z-index:40;
min-height:352px;
min-width:42px;
display:block;
padding:3px 6px 4px;
line-height:0;
box-sizing:border-box;
overflow:hidden;
background:#101010;
background:#050505;
border:1px solid;
border:1px solid #060606;
border-color:
border-radius:7px / 13px;
#555555
#2b2b2b
#050505
#2b2b2b;
color:#e2e2e2;
font-size:9px;
font-weight:700;
line-height:1;
white-space:nowrap;
text-align:center;
text-shadow:1px 1px 0 #000;
box-shadow:
box-shadow:
inset 0 0 16px rgba(0,0,0,0.90),
inset 0 1px 0 rgba(255,255,255,0.035),
inset 0 0 38px rgba(0,0,0,0.74),
inset 0 -1px 0 rgba(0,0,0,0.70),
0 0 0 1px rgba(255,255,255,0.026);
0 4px 10px rgba(0,0,0,0.44);
visibility:hidden;
opacity:0;
transform:translate(-50%, -1px);
pointer-events:none;
}
}


.right-billboard-image {
.profile-quick-btn:hover .profile-quick-tip,
border:0;
.profile-quick-btn:focus-visible .profile-quick-tip {
background:#050505;
visibility:visible;
opacity:1;
transform:translate(-50%, 0);
}
}


.right-billboard-image-base {
/* -----------------------------------------
position:relative;
9. 유저 버튼
z-index:3;
----------------------------------------- */
display:block;
 
width:100%;
.clbi-user-btn-grid {
height:100%;
display:grid;
max-width:100%;
grid-template-columns:1fr;
max-height:none;
gap:4px;
object-fit:cover;
object-position:center center;
filter:
brightness(0.84)
contrast(1.08)
saturate(0.90);
transform:none;
transform-origin:center center;
}
}


.right-billboard-image-bloom,
.profile-divider {
.right-billboard-slice {
height:1px;
position:absolute;
margin:9px 7px;
inset:0;
background:#202020;
display:block;
box-shadow:
width:100%;
0 1px 0 rgba(255,255,255,0.018);
height:100%;
max-width:none;
max-height:none;
object-fit:cover;
object-position:center center;
border:0;
background:transparent;
}
}


.right-billboard-image-bloom {
.profile-action-box {
z-index:4;
position:relative;
pointer-events:none;
margin:0 7px 7px;
opacity:.36;
padding:3px !important;
mix-blend-mode:normal;
overflow:visible;
filter:
background:#080808;
blur(7px)
border:1px solid;
brightness(0.92)
border-color:
contrast(1.02)
#333333
saturate(1.04);
#202020
transform:scale(1.015);
#050505
transform-origin:center center;
#202020;
box-sizing:border-box;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.020),
inset 0 -1px 0 rgba(0,0,0,0.58);
}
}


.right-billboard-slice {
.profile-action-box .clbi-user-btn {
z-index:5;
position:relative;
opacity:0;
display:grid !important;
pointer-events:none;
grid-template-columns:15px minmax(0,1fr) 12px !important;
mix-blend-mode:screen;
column-gap:7px !important;
filter:
align-items:center !important;
brightness(0.96)
justify-content:stretch !important;
contrast(1.18)
width:100% !important;
saturate(0.82);
min-height:26px !important;
transform:scale(1.035);
height:26px !important;
transform-origin:center center;
margin:0 0 4px !important;
will-change:transform, opacity, clip-path, filter;
padding:0 7px !important;
}
box-sizing:border-box !important;
 
background:
.right-billboard-slice-a {
linear-gradient(to bottom, #141414 0%, #101010 54%, #0c0c0c 100%) !important;
animation:right-billboard-slice-tear-a 4.7s steps(1,end) infinite;
border:1px solid !important;
border-color:
#333333
#202020
#181818
#202020 !important;
color:#c8c8c8 !important;
font-size:11px !important;
font-weight:700 !important;
line-height:1 !important;
text-align:left !important;
text-decoration:none !important;
text-shadow:1px 1px 0 #000 !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040) !important;
overflow:hidden !important;
}
}


.right-billboard-slice-b {
.profile-action-box .clbi-user-btn:last-child {
animation:right-billboard-slice-tear-b 6.1s steps(1,end) infinite;
margin-bottom:0 !important;
}
}


.right-billboard-slice-c {
.profile-action-label {
animation:right-billboard-slice-tear-c 7.4s steps(1,end) infinite;
display:flex;
align-items:center;
min-width:0;
height:100%;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
line-height:1;
}
}


.right-billboard-screen::before {
.profile-action-arrow {
content:"";
position:relative;
position:absolute;
top:0;
inset:0;
display:inline-flex;
z-index:20;
align-items:center;
justify-content:center;
justify-self:end;
width:12px;
height:12px;
color:#8a8a8a;
font-size:11px;
line-height:1;
pointer-events:none;
pointer-events:none;
border-radius:7px / 13px;
}
 
.profile-action-box .clbi-user-btn:hover {
background:
background:
radial-gradient(
linear-gradient(to bottom, #1d1d1d 0%, #171717 54%, #101010 100%) !important;
ellipse at 50% 50%,
border-color:
transparent 0%,
#444444
transparent 60%,
#333333
rgba(0,0,0,0.18) 78%,
#202020
rgba(0,0,0,0.46) 100%
#333333 !important;
),
color:#ffffff !important;
linear-gradient(
box-shadow:
to bottom,
inset 0 1px 0 rgba(255,255,255,0.060),
rgba(0,0,0,0.18) 0%,
0 0 0 1px rgba(255,255,255,0.018) !important;
transparent 15%,
}
transparent 82%,
 
rgba(0,0,0,0.26) 100%
.profile-action-box .clbi-user-btn:hover .profile-action-arrow {
),
color:#ffffff;
linear-gradient(
to right,
rgba(0,0,0,0.20) 0%,
transparent 9%,
transparent 91%,
rgba(0,0,0,0.20) 100%
),
linear-gradient(
105deg,
transparent 0%,
rgba(255,255,255,0.030) 18%,
transparent 38%,
transparent 100%
);
box-shadow:
inset 0 0 20px rgba(255,255,255,0.018),
inset 0 0 48px rgba(0,0,0,0.56);
}
}


.right-billboard-screen::after {
.profile-action-box .clbi-user-btn:active {
content:"";
position:absolute;
inset:-70px 0;
z-index:21;
pointer-events:none;
opacity:.20;
background:
background:
repeating-linear-gradient(
linear-gradient(to bottom, #0b0b0b 0%, #101010 55%, #171717 100%) !important;
to bottom,
border-color:
rgba(255,255,255,0.080) 0px,
#050505
rgba(255,255,255,0.080) 1px,
#202020
transparent 2px,
#333333
transparent 5px
#202020 !important;
);
box-shadow:
mix-blend-mode:screen;
inset 1px 1px 3px rgba(0,0,0,0.82),
animation:right-billboard-scanlines-up 7s linear infinite;
inset -1px -1px 0 rgba(255,255,255,0.035) !important;
}
}


.right-billboard-glitch {
.profile-action-box .clbi-user-btn-logout {
position:absolute;
color:#c88a80 !important;
inset:0;
border-color:
z-index:22;
#3f3f3f
pointer-events:none;
#2a2020
opacity:0;
#181010
background:
#2a2020 !important;
linear-gradient(
to bottom,
transparent 0%,
rgba(255,255,255,0.12) 48%,
rgba(212,90,162,0.14) 50%,
rgba(90,120,255,0.08) 52%,
transparent 56%
);
mix-blend-mode:screen;
animation:right-billboard-soft-glitch-band 8.2s steps(1,end) infinite;
}
}


.right-billboard-tear {
.profile-action-box .clbi-user-btn-logout .profile-action-arrow {
position:absolute;
color:#8b5f59;
inset:0;
}
z-index:23;
 
pointer-events:none;
.profile-action-box .clbi-user-btn-logout:hover {
opacity:0;
background:
background:
linear-gradient(
linear-gradient(to bottom, #241615 0%, #1b1110 56%, #100908 100%) !important;
to right,
border-color:
transparent 0%,
#6a3933
rgba(120,180,255,0.07) 10%,
#3f2623
rgba(255,255,255,0.11) 48%,
#181010
rgba(212,90,162,0.08) 78%,
#3f2623 !important;
transparent 100%
color:#e0a199 !important;
);
}
mix-blend-mode:screen;
 
animation:right-billboard-soft-horizontal-tear 5.6s steps(1,end) infinite;
.profile-action-box .clbi-user-btn-logout:hover .profile-action-arrow {
color:#e0a199;
}
}


.right-billboard-empty {
.profile-action-box .clbi-user-btn.clbi-user-btn-active {
position:absolute;
background:
inset:0;
linear-gradient(to bottom, #242424 0%, #1d1d1d 55%, #141414 100%) !important;
z-index:8;
border-color:
display:none;
#555555
flex-direction:column;
#333333
align-items:center;
#202020
justify-content:center;
#333333 !important;
gap:5px;
color:#ffffff !important;
box-sizing:border-box;
box-shadow:
min-height:0;
inset 0 1px 0 rgba(255,255,255,0.070),
background:#050505;
inset 0 -1px 0 rgba(0,0,0,0.62),
color:#626262;
0 0 0 1px rgba(255,255,255,0.022) !important;
text-align:center;
text-shadow:1px 1px 0 #000;
}
}


.right-billboard-box.is-empty .right-billboard-screen {
.profile-action-box .clbi-user-btn.clbi-user-btn-active .profile-action-arrow {
min-height:352px;
color:#ffffff;
}
}


.right-billboard-box.is-empty .right-billboard-empty {
/* 기본 유저 버튼: 프로필 액션 박스 밖에서는 기존 사이드 버튼 문법 유지 */
display:flex;
.clbi-user-btn {
}
display:flex !important;
 
align-items:center !important;
.right-billboard-box.is-empty .right-billboard-image,
justify-content:center !important;
.right-billboard-box.is-empty .right-billboard-slice {
height:24px !important;
display:none !important;
padding:0 6px !important;
margin:0 !important;
border-radius:0 !important;
font-size:11px !important;
font-weight:700 !important;
line-height:1 !important;
color:#c8c8c8 !important;
text-decoration:none !important;
text-align:center !important;
background:#141414 !important;
border:1px solid #202020 !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.035),
inset 0 -1px 0 rgba(0,0,0,0.65) !important;
text-shadow:1px 1px 0 #000 !important;
box-sizing:border-box !important;
}
}


.right-billboard-empty-main {
.clbi-user-btn:hover {
display:block;
background:#202020 !important;
color:#8a8a8a;
border-color:#333333 !important;
font-size:10px;
color:#ffffff !important;
font-weight:700;
line-height:1;
letter-spacing:.7px;
}
}


.right-billboard-empty-sub {
.clbi-user-btn-logout {
display:block;
border-color:#3f2623 !important;
max-width:100%;
color:#c88a80 !important;
color:#626262;
font-size:9px;
font-weight:700;
line-height:1.2;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}
}


.clbi-user-btn-logout:hover {
background:#1b1110 !important;
border-color:#6a3933 !important;
color:#e0a199 !important;
}


.clbi-user-btn.clbi-user-btn-active {
background:#242424 !important;
border-color:#555555 !important;
color:#ffffff !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.055),
inset 0 -1px 0 rgba(0,0,0,0.75) !important;
}
/* -----------------------------------------
9.4 우측 광고판 Ad(not really)
----------------------------------------- */
.right-billboard-box {
position:relative;
background:#1d1d1d;
overflow:visible;
}


.right-billboard-caption {
.right-billboard-title {
position:absolute;
justify-content:flex-start;
left:50%;
background:transparent;
top:calc(100% + 4px);
border:0;
z-index:40;
box-shadow:none;
display:flex;
gap:4px;
flex-direction:column;
}
align-items:center;
 
justify-content:center;
.right-billboard-title-text {
gap:0;
display:inline-flex;
width:max-content;
align-items:center;
min-width:42px;
gap:4px;
max-width:calc(100% - 8px);
min-width:0;
margin:0;
overflow:hidden;
padding:3px 6px 4px;
text-overflow:ellipsis;
box-sizing:border-box;
background:#101010;
border:1px solid;
border-color:
#555555
#2b2b2b
#050505
#2b2b2b;
color:#e2e2e2;
font-size:9px;
font-weight:700;
line-height:1;
white-space:nowrap;
white-space:nowrap;
text-align:center;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.035),
inset 0 -1px 0 rgba(0,0,0,0.70),
0 4px 10px rgba(0,0,0,0.44);
visibility:hidden;
opacity:0;
transform:translate(-50%, -1px);
pointer-events:none;
overflow:visible;
}
}


.right-billboard-box:hover .right-billboard-caption,
.right-billboard-title-main,
.right-billboard-box:focus-within .right-billboard-caption {
.right-billboard-title-note {
visibility:visible;
display:inline-block;
opacity:1;
transform:translate(-50%, 0);
}
 
.right-billboard-caption-line {
display:block;
max-width:100%;
min-width:0;
min-width:0;
height:10px;
line-height:10px;
overflow:hidden;
overflow:hidden;
text-overflow:ellipsis;
text-overflow:ellipsis;
1,507번째 줄: 1,511번째 줄:
}
}


.right-billboard-caption-line.is-gap {
.right-billboard-title-note {
height:10px;
opacity:.20;
line-height:10px;
font-size:0;
}
}


.right-billboard-box.is-empty .right-billboard-caption {
.right-billboard-body {
display:none;
position:relative;
margin:0;
padding:7px;
box-sizing:border-box;
background:#080808;
border:0;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
overflow:visible;
}
}


@keyframes right-billboard-scanlines-up {
.right-billboard-recess {
from { transform:translateY(0); }
position:relative;
to { transform:translateY(-70px); }
height:auto;
min-height:0;
box-sizing:border-box;
padding:8px;
background:
linear-gradient(145deg, #050505 0%, #090909 45%, #030303 100%);
border:1px solid;
border-color:#202020 #101010 #050505 #101010;
box-shadow:
inset 0 9px 18px rgba(0,0,0,0.96),
inset 0 -2px 3px rgba(255,255,255,0.024),
inset 7px 0 16px rgba(0,0,0,0.88),
inset -7px 0 16px rgba(0,0,0,0.88),
0 0 0 1px rgba(255,255,255,0.018);
overflow:hidden;
}
}


@keyframes right-billboard-slice-tear-a {
.right-billboard-recess::before {
0%, 11%, 100% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
content:"";
12% { opacity:.34; transform:translateX(-10px) scale(1.035); clip-path:inset(17% 0 78% 0); }
position:absolute;
13% { opacity:.20; transform:translateX(7px) scale(1.035); clip-path:inset(18% 0 77% 0); filter:hue-rotate(-8deg); }
inset:0;
14% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
z-index:0;
63% { opacity:.26; transform:translateX(6px) scale(1.035); clip-path:inset(24% 0 70% 0); }
pointer-events:none;
64% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
opacity:.10;
background:
linear-gradient(to bottom, rgba(255,255,255,0.08) 0%, transparent 20%, transparent 100%),
linear-gradient(to right, rgba(255,255,255,0.04) 0%, transparent 22%, transparent 100%);
mix-blend-mode:screen;
}
}


@keyframes right-billboard-slice-tear-b {
.right-billboard-screen {
0%, 37%, 100% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
position:relative;
38% { opacity:.36; transform:translateX(12px) scale(1.035); clip-path:inset(43% 0 50% 0); }
z-index:1;
39% { opacity:.22; transform:translateX(-8px) scale(1.035); clip-path:inset(45% 0 48% 0); filter:hue-rotate(10deg) brightness(1.08); }
width:100%;
40% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
height:352px;
78% { opacity:.30; transform:translateX(-11px) scale(1.035); clip-path:inset(51% 0 43% 0); }
min-height:352px;
79% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
display:block;
line-height:0;
overflow:hidden;
background:#050505;
border:1px solid #060606;
border-radius:7px / 13px;
box-shadow:
inset 0 0 16px rgba(0,0,0,0.90),
inset 0 0 38px rgba(0,0,0,0.74),
0 0 0 1px rgba(255,255,255,0.026);
}
}


@keyframes right-billboard-slice-tear-c {
.right-billboard-image {
0%, 21%, 100% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
border:0;
22% { opacity:.24; transform:translateX(-14px) scale(1.035); clip-path:inset(67% 0 25% 0); }
background:#050505;
23% { opacity:.16; transform:translateX(10px) scale(1.035); clip-path:inset(68% 0 23% 0); filter:contrast(1.25) brightness(1.06); }
24% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
91% { opacity:.30; transform:translateX(10px) scale(1.035); clip-path:inset(73% 0 18% 0); }
92% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
}
}


@keyframes right-billboard-soft-glitch-band {
.right-billboard-image-base {
0%, 52%, 100% { opacity:0; transform:translateY(80%); }
position:relative;
53% { opacity:.38; transform:translateY(36%); }
z-index:3;
54% { opacity:.14; transform:translateY(20%) skewX(-1deg); }
display:block;
55% { opacity:0; transform:translateY(-20%); }
width:100%;
height:100%;
max-width:100%;
max-height:none;
object-fit:cover;
object-position:center center;
filter:
brightness(0.84)
contrast(1.08)
saturate(0.90);
transform:none;
transform-origin:center center;
}
}


@keyframes right-billboard-soft-horizontal-tear {
.right-billboard-image-bloom,
0%, 68%, 100% { opacity:0; transform:translateX(0); clip-path:inset(0 0 0 0); }
.right-billboard-slice {
69% { opacity:.28; transform:translateX(-10px); clip-path:inset(34% 0 58% 0); }
position:absolute;
70% { opacity:.16; transform:translateX(8px); clip-path:inset(37% 0 55% 0); }
inset:0;
71% { opacity:0; transform:translateX(0); clip-path:inset(0 0 0 0); }
display:block;
width:100%;
height:100%;
max-width:none;
max-height:none;
object-fit:cover;
object-position:center center;
border:0;
background:transparent;
}
}


@media (prefers-reduced-motion: reduce) {
.right-billboard-image-bloom {
.right-billboard-slice-a,
z-index:4;
.right-billboard-slice-b,
pointer-events:none;
.right-billboard-slice-c,
opacity:.36;
.right-billboard-screen::after,
mix-blend-mode:normal;
.right-billboard-glitch,
filter:
.right-billboard-tear {
blur(7px)
animation:none !important;
brightness(0.92)
contrast(1.02)
saturate(1.04);
transform:scale(1.015);
transform-origin:center center;
}
}


.right-billboard-slice,
.right-billboard-slice {
.right-billboard-glitch,
z-index:5;
.right-billboard-tear {
opacity:0;
opacity:0 !important;
pointer-events:none;
mix-blend-mode:screen;
filter:
brightness(0.96)
contrast(1.18)
saturate(0.82);
transform:scale(1.035);
transform-origin:center center;
will-change:transform, opacity, clip-path, filter;
}
}
.right-billboard-slice-a {
animation:right-billboard-slice-tear-a 4.7s steps(1,end) infinite;
}
}


.right-billboard-slice-b {
animation:right-billboard-slice-tear-b 6.1s steps(1,end) infinite;
}


/* -----------------------------------------
.right-billboard-slice-c {
9.45 우측 사이트 정보
animation:right-billboard-slice-tear-c 7.4s steps(1,end) infinite;
----------------------------------------- */
 
.site-info-sidebar {
position:relative;
background:#1d1d1d;
}
}


.site-info-title {
.right-billboard-screen::before {
justify-content:space-between;
content:"";
background:transparent;
position:absolute;
border:0;
inset:0;
box-shadow:none;
z-index:20;
}
pointer-events:none;
 
border-radius:7px / 13px;
.site-info-title > span:first-child {
background:
min-width:0;
radial-gradient(
overflow:hidden;
ellipse at 50% 50%,
text-overflow:ellipsis;
transparent 0%,
white-space:nowrap;
transparent 60%,
}
rgba(0,0,0,0.18) 78%,
 
rgba(0,0,0,0.46) 100%
.site-info-title-meta {
),
flex:0 0 auto;
linear-gradient(
color:#8a8a8a;
to bottom,
font-size:9px;
rgba(0,0,0,0.18) 0%,
font-weight:700;
transparent 15%,
letter-spacing:.55px;
transparent 82%,
line-height:1;
rgba(0,0,0,0.26) 100%
white-space:nowrap;
),
linear-gradient(
to right,
rgba(0,0,0,0.20) 0%,
transparent 9%,
transparent 91%,
rgba(0,0,0,0.20) 100%
),
linear-gradient(
105deg,
transparent 0%,
rgba(255,255,255,0.030) 18%,
transparent 38%,
transparent 100%
);
box-shadow:
inset 0 0 20px rgba(255,255,255,0.018),
inset 0 0 48px rgba(0,0,0,0.56);
}
}


.site-info-content {
.right-billboard-screen::after {
line-height:1.4;
content:"";
}
position:absolute;
 
inset:-70px 0;
.site-info-sidebar .policy-list {
z-index:21;
border-top:1px solid #202020;
pointer-events:none;
border-bottom:1px solid #202020;
opacity:.20;
background:
repeating-linear-gradient(
to bottom,
rgba(255,255,255,0.080) 0px,
rgba(255,255,255,0.080) 1px,
transparent 2px,
transparent 5px
);
mix-blend-mode:screen;
animation:right-billboard-scanlines-up 7s linear infinite;
}
}


.site-info-sidebar .policy-row {
.right-billboard-glitch {
display:grid;
position:absolute;
grid-template-columns:minmax(0,1fr) 18px;
inset:0;
align-items:center;
z-index:22;
gap:6px;
pointer-events:none;
height:24px;
opacity:0;
padding:0 2px;
background:
border-bottom:1px solid #202020;
linear-gradient(
font-size:10px;
to bottom,
line-height:1.2;
transparent 0%,
}
rgba(255,255,255,0.12) 48%,
 
rgba(212,90,162,0.14) 50%,
.site-info-sidebar .policy-row:last-child {
rgba(90,120,255,0.08) 52%,
border-bottom:none;
transparent 56%
);
mix-blend-mode:screen;
animation:right-billboard-soft-glitch-band 8.2s steps(1,end) infinite;
}
}


.site-info-sidebar .policy-row:hover {
.right-billboard-tear {
background:#151515;
position:absolute;
inset:0;
z-index:23;
pointer-events:none;
opacity:0;
background:
linear-gradient(
to right,
transparent 0%,
rgba(120,180,255,0.07) 10%,
rgba(255,255,255,0.11) 48%,
rgba(212,90,162,0.08) 78%,
transparent 100%
);
mix-blend-mode:screen;
animation:right-billboard-soft-horizontal-tear 5.6s steps(1,end) infinite;
}
}


.site-info-sidebar .policy-row a {
.right-billboard-empty {
display:block;
position:absolute;
min-width:0;
inset:0;
overflow:hidden;
z-index:8;
text-overflow:ellipsis;
display:none;
white-space:nowrap;
flex-direction:column;
color:#c8c8c8 !important;
align-items:center;
text-decoration:none !important;
justify-content:center;
gap:5px;
box-sizing:border-box;
min-height:0;
background:#050505;
color:#626262;
text-align:center;
text-shadow:1px 1px 0 #000;
}
}


.site-info-sidebar .policy-row:hover a {
.right-billboard-box.is-empty .right-billboard-screen {
color:#ffffff !important;
min-height:352px;
text-decoration:none !important;
}
}


.site-info-sidebar .policy-mark {
.right-billboard-box.is-empty .right-billboard-empty {
color:#8a8a8a;
display:flex;
font-size:14px;
line-height:1;
white-space:nowrap;
text-align:right;
}
}


.site-info-sidebar .policy-row:hover .policy-mark {
.right-billboard-box.is-empty .right-billboard-image,
color:#ffffff;
.right-billboard-box.is-empty .right-billboard-slice {
display:none !important;
}
}


.site-info-sidebar .social-strip {
.right-billboard-empty-main {
display:grid;
display:block;
grid-template-columns:repeat(4,1fr);
color:#8a8a8a;
gap:4px;
font-size:10px;
margin-top:6px;
font-weight:700;
line-height:1;
letter-spacing:.7px;
}
}


.site-info-sidebar .social-icon {
.right-billboard-empty-sub {
display:block;
display:block;
aspect-ratio:1 / 1;
max-width:100%;
min-width:0;
color:#626262;
font-size:9px;
font-weight:700;
line-height:1.2;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}
}


.site-info-sidebar .social-icon a {
display:flex !important;
align-items:center !important;
justify-content:center !important;
width:100% !important;
height:100% !important;
border:1px solid #202020 !important;
background:#111111 !important;
color:#c8c8c8 !important;
font-size:10px !important;
font-weight:700 !important;
line-height:1 !important;
text-decoration:none !important;
text-shadow:1px 1px 0 #000 !important;
box-sizing:border-box !important;
}


.site-info-sidebar .social-icon a:hover {
 
background:#1c1c1c !important;
.right-billboard-caption {
color:#ffffff !important;
position:absolute;
border-color:#3a3a3a !important;
left:50%;
text-decoration:none !important;
top:calc(100% + 4px);
}
z-index:40;
 
/* -----------------------------------------
9.5 왼쪽 언어 박스
----------------------------------------- */
 
.clbi-left-lang-box {
position:relative;
min-height:0;
z-index:1002;
overflow:hidden;
}
 
/* 언어 박스 내부 라벨 패널 표준
  - 외곽 검은 선은 만들지 않는다.
  - 광원과 그림자는 사이드 프레임과 같은 한 세트(#555555 / #101010)를 사용한다.
  - 텍스트가 내부선에 붙지 않도록 상하 3px 패딩을 기본값으로 둔다. */
.clbi-left-lang-box > .clbi-left-title {
min-height:0;
height:auto;
margin:4px 0 3px;
padding:3px 7px;
box-sizing:border-box;
background:#080808;
border:0;
display:flex;
display:flex;
flex-direction:column;
align-items:center;
align-items:center;
gap:6px;
justify-content:center;
box-shadow:
gap:0;
inset 0 1px 0 #101010,
width:max-content;
inset -1px 0 0 #101010,
min-width:42px;
inset 1px 0 0 #555555,
max-width:calc(100% - 8px);
inset 0 -1px 0 #555555;
margin:0;
}
padding:3px 6px 4px;
 
box-sizing:border-box;
#clbi-title-left-language {
background:#101010;
display:inline-flex;
border:1px solid;
align-items:center;
border-color:
height:100%;
#555555
#2b2b2b
#050505
#2b2b2b;
color:#e2e2e2;
color:#e2e2e2;
font-size:12px;
font-size:9px;
font-weight:700;
font-weight:700;
line-height:1;
line-height:1;
letter-spacing:0;
white-space:nowrap;
text-align:center;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.035),
inset 0 -1px 0 rgba(0,0,0,0.70),
0 4px 10px rgba(0,0,0,0.44);
visibility:hidden;
opacity:0;
transform:translate(-50%, -1px);
pointer-events:none;
overflow:visible;
}
}


.clbi-left-language-icon {
.right-billboard-box:hover .right-billboard-caption,
display:inline-flex;
.right-billboard-box:focus-within .right-billboard-caption {
align-items:center;
visibility:visible;
justify-content:center;
opacity:1;
width:16px;
transform:translate(-50%, 0);
height:16px;
font-size:13px;
line-height:1;
color:#e2e2e2 !important;
flex:0 0 16px;
}
}


.clbi-left-language-icon .profile-svg {
.right-billboard-caption-line {
display:block;
display:block;
width:16px;
max-width:100%;
height:16px;
min-width:0;
stroke:currentColor;
height:10px;
line-height:10px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}
}


.clbi-left-lang-box .clbi-left-content {
.right-billboard-caption-line.is-gap {
padding:2px;
height:10px;
box-sizing:border-box;
line-height:10px;
font-size:0;
}
}


.sidebar-lang-box {
.right-billboard-box.is-empty .right-billboard-caption {
position:relative;
display:none;
padding:3px !important;
}
box-sizing:border-box;
overflow:hidden;
}


.sidebar-lang-selector,
@keyframes right-billboard-scanlines-up {
.sidebar-lang-dial {
from { transform:translateY(0); }
position:relative;
to { transform:translateY(-70px); }
width:100%;
padding:0;
box-sizing:border-box;
user-select:none;
touch-action:pan-y;
outline:none;
}
}


.sidebar-lang-dial-stage {
@keyframes right-billboard-slice-tear-a {
--lang-fan-half:99px;
0%, 11%, 100% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
position:relative;
12% { opacity:.34; transform:translateX(-10px) scale(1.035); clip-path:inset(17% 0 78% 0); }
width:100%;
13% { opacity:.20; transform:translateX(7px) scale(1.035); clip-path:inset(18% 0 77% 0); filter:hue-rotate(-8deg); }
height:146px;
14% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
margin:0;
63% { opacity:.26; transform:translateX(6px) scale(1.035); clip-path:inset(24% 0 70% 0); }
box-sizing:border-box;
64% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
overflow:hidden;
background:#1d1d1d;
border:1px solid #050505;
border-radius:0;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}
}


.sidebar-lang-fan {
@keyframes right-billboard-slice-tear-b {
position:absolute;
0%, 37%, 100% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
left:50%;
38% { opacity:.36; transform:translateX(12px) scale(1.035); clip-path:inset(43% 0 50% 0); }
top:2px;
39% { opacity:.22; transform:translateX(-8px) scale(1.035); clip-path:inset(45% 0 48% 0); filter:hue-rotate(10deg) brightness(1.08); }
z-index:2;
40% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
width:198px;
78% { opacity:.30; transform:translateX(-11px) scale(1.035); clip-path:inset(51% 0 43% 0); }
height:147px;
79% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
transform:translateX(-50%);
overflow:visible;
touch-action:pan-y;
cursor:grab;
pointer-events:auto;
}
}


.sidebar-lang-fan:active,
@keyframes right-billboard-slice-tear-c {
.sidebar-lang-selector.is-dragging .sidebar-lang-fan,
0%, 21%, 100% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
.sidebar-lang-selector.is-spinning .sidebar-lang-fan {
22% { opacity:.24; transform:translateX(-14px) scale(1.035); clip-path:inset(67% 0 25% 0); }
cursor:grabbing;
23% { opacity:.16; transform:translateX(10px) scale(1.035); clip-path:inset(68% 0 23% 0); filter:contrast(1.25) brightness(1.06); }
24% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
91% { opacity:.30; transform:translateX(10px) scale(1.035); clip-path:inset(73% 0 18% 0); }
92% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
}
}


.sidebar-lang-fan-svg {
@keyframes right-billboard-soft-glitch-band {
display:block;
0%, 52%, 100% { opacity:0; transform:translateY(80%); }
width:198px;
53% { opacity:.38; transform:translateY(36%); }
height:147px;
54% { opacity:.14; transform:translateY(20%) skewX(-1deg); }
overflow:visible;
55% { opacity:0; transform:translateY(-20%); }
shape-rendering:geometricPrecision;
}
}


.sidebar-lang-wheel-rotor {
@keyframes right-billboard-soft-horizontal-tear {
transform-origin:101px 119px;
0%, 68%, 100% { opacity:0; transform:translateX(0); clip-path:inset(0 0 0 0); }
transform-box:view-box;
69% { opacity:.28; transform:translateX(-10px); clip-path:inset(34% 0 58% 0); }
will-change:transform;
70% { opacity:.16; transform:translateX(8px); clip-path:inset(37% 0 55% 0); }
transition:none;
71% { opacity:0; transform:translateX(0); clip-path:inset(0 0 0 0); }
}
}


.sidebar-lang-selector.is-snapping .sidebar-lang-wheel-rotor {
@media (prefers-reduced-motion: reduce) {
transition:transform 210ms cubic-bezier(.17,.84,.22,1);
.right-billboard-slice-a,
.right-billboard-slice-b,
.right-billboard-slice-c,
.right-billboard-screen::after,
.right-billboard-glitch,
.right-billboard-tear {
animation:none !important;
}
}


.sidebar-lang-shell {
.right-billboard-slice,
fill:#080808;
.right-billboard-glitch,
stroke:#202020;
.right-billboard-tear {
stroke-width:1;
opacity:0 !important;
}
}
.sidebar-lang-inner-shadow-soft,
.sidebar-lang-inner-shadow-hard {
fill:none;
stroke:#000000;
pointer-events:none;
clip-path:url(#clbi-sidebar-language-fan-clip);
}
}


.sidebar-lang-inner-shadow-soft {
stroke-width:16;
opacity:.34;
filter:url(#clbi-sidebar-language-shadow-blur);
}


.sidebar-lang-inner-shadow-hard {
/* -----------------------------------------
stroke-width:6;
9.45 우측 사이트 정보
opacity:.22;
----------------------------------------- */
 
.site-info-sidebar {
position:relative;
background:#1d1d1d;
}
}


.sidebar-lang-sector-group {
.site-info-title {
pointer-events:auto;
justify-content:space-between;
cursor:pointer;
background:transparent;
border:0;
box-shadow:none;
}
}


.sidebar-lang-sector {
.site-info-title > span:first-child {
fill:#101010;
min-width:0;
stroke:#181818;
overflow:hidden;
stroke-width:1;
text-overflow:ellipsis;
vector-effect:non-scaling-stroke;
white-space:nowrap;
cursor:pointer;
transition:none;
}
}


.sidebar-lang-sector-group:hover .sidebar-lang-sector,
.site-info-title-meta {
.sidebar-lang-sector:hover,
flex:0 0 auto;
.sidebar-lang-sector.is-center,
color:#8a8a8a;
.sidebar-lang-sector.is-far {
font-size:9px;
fill:#101010;
font-weight:700;
stroke:#181818;
letter-spacing:.55px;
line-height:1;
white-space:nowrap;
}
}


.sidebar-lang-sector-label {
.site-info-content {
pointer-events:none;
line-height:1.4;
text-anchor:middle;
dominant-baseline:middle;
paint-order:stroke;
stroke:#050505;
stroke-width:2px;
stroke-linejoin:round;
font-size:9px !important;
font-weight:700 !important;
letter-spacing:.15px;
fill:#c8c8c8;
transition:none !important;
}
}


.sidebar-lang-sector-name {
.site-info-sidebar .policy-list {
display:none;
border-top:1px solid #202020;
border-bottom:1px solid #202020;
}
}


.sidebar-lang-sector-group.is-center .sidebar-lang-sector-label,
.site-info-sidebar .policy-row {
.sidebar-lang-sector-group.is-center .sidebar-lang-sector-name,
display:grid;
.sidebar-lang-sector-group.is-neighbor .sidebar-lang-sector-label,
grid-template-columns:minmax(0,1fr) 18px;
.sidebar-lang-sector-group.is-neighbor .sidebar-lang-sector-name {
align-items:center;
fill:inherit;
gap:6px;
height:24px;
padding:0 2px;
border-bottom:1px solid #202020;
font-size:10px;
line-height:1.2;
}
}


.sidebar-lang-fixed-depth,
.site-info-sidebar .policy-row:last-child {
.sidebar-lang-fixed-focus,
border-bottom:none;
.sidebar-lang-rim {
pointer-events:none;
clip-path:url(#clbi-sidebar-language-fan-clip);
}
}


.sidebar-lang-fixed-depth {
.site-info-sidebar .policy-row:hover {
fill:url(#clbi-sidebar-language-fixed-depth);
background:#151515;
opacity:1;
}
}


.sidebar-lang-fixed-focus {
.site-info-sidebar .policy-row a {
fill:rgba(255,255,255,0.020);
display:block;
stroke:rgba(255,255,255,0.020);
min-width:0;
stroke-width:1;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
color:#c8c8c8 !important;
text-decoration:none !important;
}
}


.sidebar-lang-rim {
.site-info-sidebar .policy-row:hover a {
fill:none;
color:#ffffff !important;
stroke:#202020;
text-decoration:none !important;
stroke-width:1;
}
}


.sidebar-lang-fixed-pointer {
.site-info-sidebar .policy-mark {
pointer-events:none;
color:#8a8a8a;
clip-path:url(#clbi-sidebar-language-fan-clip);
font-size:14px;
line-height:1;
white-space:nowrap;
text-align:right;
}
}


.sidebar-lang-pointer-line {
.site-info-sidebar .policy-row:hover .policy-mark {
stroke:#b94a3c;
color:#ffffff;
stroke-width:2;
stroke-linecap:square;
opacity:.94;
vector-effect:non-scaling-stroke;
}
}


.sidebar-lang-pointer-triangle {
.site-info-sidebar .social-strip {
fill:#b94a3c;
display:grid;
stroke:#050505;
grid-template-columns:repeat(4,1fr);
stroke-width:1;
gap:4px;
stroke-linejoin:miter;
margin-top:6px;
vector-effect:non-scaling-stroke;
}
}


.sidebar-lang-apply {
.site-info-sidebar .social-icon {
position:absolute;
display:block;
left:50%;
aspect-ratio:1 / 1;
top:93px;
min-width:0;
z-index:5;
}
width:52px;
height:53px;
margin:0;
padding:0;
transform:translateX(-50%);
display:flex;
align-items:center;
justify-content:center;
box-sizing:border-box;
border-radius:26px 26px 0 0;
border:1px solid #050505;
background:#1d1d1d;
color:#e2e2e2;
cursor:pointer;
text-align:center;
line-height:1;
text-shadow:1px 1px 0 #000;
box-shadow:
0 0 0 2px #080808,
0 0 0 4px #1d1d1d,
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
overflow:visible;
transition:none !important;
}


.sidebar-lang-apply::before,
.site-info-sidebar .social-icon a {
.sidebar-lang-apply::after {
display:flex !important;
content:none;
align-items:center !important;
}
justify-content:center !important;
 
width:100% !important;
.sidebar-lang-apply:hover {
height:100% !important;
border-color:#050505;
border:1px solid #202020 !important;
background:#1d1d1d;
background:#111111 !important;
color:#ffffff;
color:#c8c8c8 !important;
box-shadow:
font-size:10px !important;
0 0 0 2px #080808,
font-weight:700 !important;
0 0 0 4px #1d1d1d,
line-height:1 !important;
inset 0 1px 0 #555555,
text-decoration:none !important;
inset -1px 0 0 #555555,
text-shadow:1px 1px 0 #000 !important;
inset 1px 0 0 #101010,
box-sizing:border-box !important;
inset 0 -1px 0 #101010;
}
}


.sidebar-lang-apply:active {
.site-info-sidebar .social-icon a:hover {
transform:translateX(-50%) translateY(1px);
background:#1c1c1c !important;
background:#101010;
color:#ffffff !important;
box-shadow:
border-color:#3a3a3a !important;
0 0 0 2px #080808,
text-decoration:none !important;
0 0 0 4px #1d1d1d,
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}
}


.sidebar-lang-apply.is-disabled,
/* -----------------------------------------
.sidebar-lang-apply.is-disabled:hover,
9.5 왼쪽 언어 박스
.sidebar-lang-apply.is-disabled:active {
----------------------------------------- */
transform:translateX(-50%);
border-color:#050505;
background:#1d1d1d;
color:#626262;
cursor:default;
opacity:1;
box-shadow:
0 0 0 2px #080808,
0 0 0 4px #1d1d1d,
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}


.sidebar-lang-apply-mark {
.clbi-left-lang-box {
position:relative;
position:relative;
z-index:1;
min-height:0;
display:block;
z-index:1002;
font-size:20px;
overflow:hidden;
font-weight:700;
line-height:1;
transform:translateY(3px);
}
}


.sidebar-lang-status-panel {
/* 언어 박스 내부 라벨 패널 표준
position:absolute;
  - 외곽 검은 선은 만들지 않는다.
bottom:5px;
  - 광원과 그림자는 사이드 프레임과 같은 한 세트(#555555 / #101010)를 사용한다.
width:69px;
  - 텍스트가 내부선에 붙지 않도록 상하 3px 패딩을 기본값으로 둔다. */
height:25px;
.clbi-left-lang-box > .clbi-left-title {
z-index:4;
min-height:0;
display:flex;
height:auto;
align-items:center;
margin:4px 0 3px;
justify-content:center;
padding:3px 7px;
padding:3px 5px;
box-sizing:border-box;
box-sizing:border-box;
overflow:hidden;
background:#080808;
background:#080808;
border:0;
border:0;
color:#c8c8c8;
display:flex;
text-align:center;
align-items:center;
line-height:1;
gap:6px;
text-shadow:1px 1px 0 #000;
box-shadow:
box-shadow:
inset 0 1px 0 #101010,
inset 0 1px 0 #101010,
2,082번째 줄: 2,099번째 줄:
inset 1px 0 0 #555555,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
inset 0 -1px 0 #555555;
pointer-events:none;
}
}


.sidebar-lang-status-left {
#clbi-title-left-language {
left:calc(50% - var(--lang-fan-half));
display:inline-flex;
align-items:center;
height:100%;
color:#e2e2e2;
font-size:12px;
font-weight:700;
line-height:1;
letter-spacing:0;
}
}


.sidebar-lang-status-right {
.clbi-left-language-icon {
right:calc(50% - var(--lang-fan-half));
display:inline-flex;
}
align-items:center;
 
justify-content:center;
.sidebar-lang-status-value {
width:16px;
display:block;
height:16px;
width:100%;
font-size:13px;
min-width:0;
color:#f0f0f0;
font-family:inherit !important;
font-size:9px;
font-weight:700;
line-height:1;
line-height:1;
overflow:hidden;
color:#e2e2e2 !important;
white-space:nowrap;
flex:0 0 16px;
text-overflow:ellipsis;
}
}


.sidebar-lang-status-right .sidebar-lang-status-value {
.clbi-left-language-icon .profile-svg {
font-size:8px;
display:block;
letter-spacing:.12px;
width:16px;
height:16px;
stroke:currentColor;
}
}


.sidebar-lang-status-right.is-ready .sidebar-lang-status-value {
.clbi-left-lang-box .clbi-left-content {
color:#f0f0f0;
padding:2px;
box-sizing:border-box;
}
}


.sidebar-lang-status-right.is-current .sidebar-lang-status-value {
.sidebar-lang-box {
color:#c8c8c8;
position:relative;
padding:3px !important;
box-sizing:border-box;
overflow:hidden;
}
}


.sidebar-lang-status-right.is-locked .sidebar-lang-status-value {
.sidebar-lang-selector,
color:#8a8a8a;
.sidebar-lang-dial {
position:relative;
width:100%;
padding:0;
box-sizing:border-box;
user-select:none;
touch-action:pan-y;
outline:none;
}
}


 
.sidebar-lang-dial-stage {
/* -----------------------------------------
--lang-fan-half:99px;
10. 왼쪽 뉴스 박스
----------------------------------------- */
 
.clbi-left-news-box {
position:relative;
position:relative;
min-height:0;
width:100%;
height:146px;
margin:0;
box-sizing:border-box;
overflow:hidden;
overflow:hidden;
background:#1d1d1d;
border:1px solid #050505;
border-radius:0;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}
}


/* 뉴스 박스 타이틀은 언어 박스에서 확정한 내부 라벨 패널 표준을 따른다.
.sidebar-lang-fan {
  - 컨테이너 상단 기준: 위 4px, 아래 3px
position:absolute;
  - 외곽 검은 선 없음
left:50%;
  - 광원/그림자는 #555555 / #101010 한 세트만 사용 */
top:2px;
.clbi-left-news-box > .clbi-left-title {
z-index:2;
min-height:0;
width:198px;
height:auto;
height:147px;
margin:4px 0 3px;
transform:translateX(-50%);
padding:3px 7px;
overflow:visible;
box-sizing:border-box;
touch-action:pan-y;
background:#080808;
cursor:grab;
border:0;
pointer-events:auto;
display:flex;
align-items:center;
gap:6px;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}
}


#clbi-title-left-news {
.sidebar-lang-fan:active,
display:inline-flex;
.sidebar-lang-selector.is-dragging .sidebar-lang-fan,
align-items:center;
.sidebar-lang-selector.is-spinning .sidebar-lang-fan {
height:100%;
cursor:grabbing;
color:#e2e2e2;
font-size:12px;
font-weight:700;
line-height:1;
letter-spacing:0;
}
}


.news-title-icon,
.sidebar-lang-fan-svg {
.news-title-icon.sidebar-title-svg {
display:block;
display:inline-flex;
width:198px;
align-items:center;
height:147px;
justify-content:center;
overflow:visible;
width:16px;
shape-rendering:geometricPrecision;
height:16px;
font-size:13px;
line-height:1;
color:#e2e2e2 !important;
flex:0 0 16px;
vertical-align:middle;
}
}


.news-title-icon .profile-svg,
.sidebar-lang-wheel-rotor {
.news-title-icon.sidebar-title-svg .profile-svg {
transform-origin:101px 119px;
width:16px;
transform-box:view-box;
height:16px;
will-change:transform;
display:block;
transition:none;
stroke:currentColor;
}
}


/* 뉴스 컨텐츠 슬롯은 언어 박스와 같은 3px 내부 기준을 따른다. */
.sidebar-lang-selector.is-snapping .sidebar-lang-wheel-rotor {
.clbi-news-box {
transition:transform 210ms cubic-bezier(.17,.84,.22,1);
position:relative;
padding:3px !important;
box-sizing:border-box;
overflow:hidden;
background:#080808;
}
}


/* 섹션 타이틀: 컨텐츠 슬롯 내부의 라벨 패널 */
.sidebar-lang-shell {
.news-feed-title {
fill:#080808;
position:relative;
stroke:#202020;
display:flex;
stroke-width:1;
align-items:center;
height:auto;
min-height:22px;
margin:0 0 2px 0;
padding:3px 7px 3px 16px;
box-sizing:border-box;
background:#1d1d1d;
border:1px solid #050505;
color:#c8c8c8;
font-size:9px;
font-weight:700;
line-height:1;
letter-spacing:0.55px;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}
}


.news-feed-title::before {
.sidebar-lang-inner-shadow-soft,
content:"";
.sidebar-lang-inner-shadow-hard {
position:absolute;
fill:none;
left:7px;
stroke:#000000;
top:50%;
pointer-events:none;
width:4px;
clip-path:url(#clbi-sidebar-language-fan-clip);
height:8px;
transform:translateY(-50%);
background:#c8c8c8;
box-shadow:1px 1px 0 #050505;
opacity:0.85;
}
}


#clbi-left-news-changelog-title {
.sidebar-lang-inner-shadow-soft {
margin-top:0;
stroke-width:16;
opacity:.34;
filter:url(#clbi-sidebar-language-shadow-blur);
}
}


#clbi-left-news-recent-title {
.sidebar-lang-inner-shadow-hard {
margin-top:2px;
stroke-width:6;
opacity:.22;
}
}


/* 섹션 본체는 별도 프레임을 만들지 않는 배치 래퍼다. */
.sidebar-lang-sector-group {
.news-left-changelog-feed,
pointer-events:auto;
.news-left-recent-feed {
cursor:pointer;
background:transparent;
border:0;
box-shadow:none;
box-sizing:border-box;
}
}


.news-left-changelog-feed {
.sidebar-lang-sector {
padding:0;
fill:#101010;
stroke:#181818;
stroke-width:1;
vector-effect:non-scaling-stroke;
cursor:pointer;
transition:none;
}
}


.news-left-recent-feed {
.sidebar-lang-sector-group:hover .sidebar-lang-sector,
padding:0;
.sidebar-lang-sector:hover,
color:#9a9a9a;
.sidebar-lang-sector.is-center,
font-size:11px;
.sidebar-lang-sector.is-far {
line-height:1.55;
fill:#101010;
stroke:#181818;
}
 
.sidebar-lang-sector-label {
pointer-events:none;
text-anchor:middle;
dominant-baseline:middle;
paint-order:stroke;
stroke:#050505;
stroke-width:2px;
stroke-linejoin:round;
font-size:9px !important;
font-weight:700 !important;
letter-spacing:.15px;
fill:#c8c8c8;
transition:none !important;
}
}


.news-divider {
.sidebar-lang-sector-name {
display:none;
display:none;
}
}


/* 버튼형 항목: 단색 표면 + 최외곽 검은 선 + 동일 광원 세트 */
.sidebar-lang-sector-group.is-center .sidebar-lang-sector-label,
.news-post-item,
.sidebar-lang-sector-group.is-center .sidebar-lang-sector-name,
.news-recent-item {
.sidebar-lang-sector-group.is-neighbor .sidebar-lang-sector-label,
position:relative;
.sidebar-lang-sector-group.is-neighbor .sidebar-lang-sector-name {
display:grid !important;
fill:inherit;
align-items:center;
}
gap:6px;
 
margin:0 0 2px;
.sidebar-lang-fixed-depth,
box-sizing:border-box;
.sidebar-lang-fixed-focus,
background:#1d1d1d;
.sidebar-lang-rim {
border:1px solid #050505;
pointer-events:none;
color:#c8c8c8 !important;
clip-path:url(#clbi-sidebar-language-fan-clip);
overflow:hidden;
text-decoration:none !important;
cursor:pointer;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}
}


.news-post-item {
.sidebar-lang-fixed-depth {
grid-template-columns:minmax(0,1fr) auto;
fill:url(#clbi-sidebar-language-fixed-depth);
min-height:26px;
opacity:1;
padding:0 6px;
}
}


.news-recent-item {
.sidebar-lang-fixed-focus {
grid-template-columns:28px minmax(0,1fr) auto;
fill:rgba(255,255,255,0.020);
min-height:36px;
stroke:rgba(255,255,255,0.020);
margin:0 0 2px;
stroke-width:1;
padding:4px 6px 4px 5px;
}
}


.news-post-item:last-child,
.sidebar-lang-rim {
.news-recent-item:last-child {
fill:none;
margin-bottom:0;
stroke:#202020;
stroke-width:1;
}
}


.news-post-item:hover,
.sidebar-lang-fixed-pointer {
.news-recent-item:hover {
pointer-events:none;
background:#1d1d1d;
clip-path:url(#clbi-sidebar-language-fan-clip);
color:#ffffff !important;
}
}


.news-post-item:active,
.sidebar-lang-pointer-line {
.news-recent-item:active {
stroke:#b94a3c;
background:#101010;
stroke-width:2;
box-shadow:
stroke-linecap:square;
inset 0 1px 0 #101010,
opacity:.94;
inset -1px 0 0 #101010,
vector-effect:non-scaling-stroke;
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}
}


.news-recent-avatar {
.sidebar-lang-pointer-triangle {
display:block;
fill:#b94a3c;
width:24px;
stroke:#050505;
height:24px;
stroke-width:1;
object-fit:cover;
stroke-linejoin:miter;
object-position:center;
vector-effect:non-scaling-stroke;
background:#070707;
}
 
.sidebar-lang-apply {
position:absolute;
left:50%;
top:93px;
z-index:5;
width:52px;
height:53px;
margin:0;
padding:0;
transform:translateX(-50%);
display:flex;
align-items:center;
justify-content:center;
box-sizing:border-box;
border-radius:26px 26px 0 0;
border:1px solid #050505;
border:1px solid #050505;
background:#1d1d1d;
color:#e2e2e2;
cursor:pointer;
text-align:center;
line-height:1;
text-shadow:1px 1px 0 #000;
box-shadow:
box-shadow:
0 0 0 2px #080808,
0 0 0 4px #1d1d1d,
inset 0 1px 0 #555555,
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
inset 0 -1px 0 #101010;
box-sizing:border-box;
overflow:visible;
transition:none !important;
}
}


.news-recent-item:hover .news-recent-avatar {
.sidebar-lang-apply::before,
border-color:#050505;
.sidebar-lang-apply::after {
content:none;
}
}


.news-recent-main {
.sidebar-lang-apply:hover {
min-width:0;
border-color:#050505;
display:flex;
background:#1d1d1d;
flex-direction:column;
color:#ffffff;
justify-content:center;
box-shadow:
gap:1px;
0 0 0 2px #080808,
0 0 0 4px #1d1d1d,
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}
}


.news-post-title-wrap,
.sidebar-lang-apply:active {
.news-recent-title-wrap {
transform:translateX(-50%) translateY(1px);
min-width:0;
background:#101010;
overflow:hidden;
box-shadow:
white-space:nowrap;
0 0 0 2px #080808,
mask-image:linear-gradient(to right, black 88%, transparent 100%);
0 0 0 4px #1d1d1d,
-webkit-mask-image:linear-gradient(to right, black 88%, transparent 100%);
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}
}


.news-post-title-wrap {
.sidebar-lang-apply.is-disabled,
display:flex;
.sidebar-lang-apply.is-disabled:hover,
align-items:center;
.sidebar-lang-apply.is-disabled:active {
}
transform:translateX(-50%);
border-color:#050505;
background:#1d1d1d;
color:#626262;
cursor:default;
opacity:1;
box-shadow:
0 0 0 2px #080808,
0 0 0 4px #1d1d1d,
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}


.news-post-title,
.sidebar-lang-apply-mark {
.news-recent-title {
position:relative;
display:inline-block;
z-index:1;
max-width:none;
display:block;
overflow:visible;
font-size:20px;
color:#e2e2e2 !important;
font-size:12px;
font-weight:700;
font-weight:700;
line-height:1.18;
line-height:1;
white-space:nowrap;
transform:translateY(3px);
text-decoration:none !important;
text-shadow:1px 1px 0 #000;
}
}


.news-post-item:hover .news-post-title,
.sidebar-lang-status-panel {
.news-recent-item:hover .news-recent-title {
position:absolute;
color:#ffffff !important;
bottom:5px;
}
width:69px;
 
height:25px;
.news-post-arrow {
z-index:4;
display:inline-flex;
display:flex;
align-items:center;
align-items:center;
justify-content:center;
justify-content:center;
width:12px;
padding:3px 5px;
height:12px;
box-sizing:border-box;
margin-left:5px;
overflow:hidden;
color:#8a8a8a;
background:#080808;
font-size:11px;
border:0;
color:#c8c8c8;
text-align:center;
line-height:1;
line-height:1;
vertical-align:-1px;
text-shadow:1px 1px 0 #000;
flex:0 0 auto;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
pointer-events:none;
}
 
.sidebar-lang-status-left {
left:calc(50% - var(--lang-fan-half));
}
}


.news-post-item:hover .news-post-arrow {
.sidebar-lang-status-right {
color:#ffffff;
right:calc(50% - var(--lang-fan-half));
}
}


.news-recent-meta {
.sidebar-lang-status-value {
display:flex;
display:block;
align-items:center;
width:100%;
min-width:0;
min-width:0;
height:10px;
color:#f0f0f0;
font-family:inherit !important;
font-size:9px;
font-weight:700;
line-height:1;
line-height:1;
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
}
}


.news-recent-user {
.sidebar-lang-status-right .sidebar-lang-status-value {
display:block !important;
font-size:8px;
min-width:0;
letter-spacing:.12px;
max-width:100%;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
color:#7a7a7a !important;
font-size:8.5px;
font-weight:700;
line-height:1;
text-decoration:none !important;
text-shadow:1px 1px 0 #000;
}
}


.news-recent-item:hover .news-recent-user {
.sidebar-lang-status-right.is-ready .sidebar-lang-status-value {
color:#b0b0b0 !important;
color:#f0f0f0;
}
}


/* 항목 내부의 작은 상태 버튼: 외곽선 없이 우물 방향 내부선만 사용 */
.sidebar-lang-status-right.is-current .sidebar-lang-status-value {
.news-post-tag,
color:#c8c8c8;
.news-recent-time {
display:inline-flex;
align-items:center;
justify-content:center;
height:16px;
min-width:34px;
padding:0 4px;
box-sizing:border-box;
background:#080808;
border:0;
color:#c8c8c8 !important;
font-size:9px;
font-weight:700;
line-height:1;
white-space:nowrap;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}
}


.news-post-item:hover .news-post-tag,
.sidebar-lang-status-right.is-locked .sidebar-lang-status-value {
.news-recent-item:hover .news-recent-time {
color:#8a8a8a;
background:#101010;
color:#e2e2e2 !important;
}
}


.news-recent-item:active .news-recent-time {
background:#080808;
color:#c8c8c8 !important;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}
.news-post-item *,
.news-recent-item * {
pointer-events:none;
}


/* -----------------------------------------
/* -----------------------------------------
12. 왼쪽 목차
10. 왼쪽 뉴스 박스
----------------------------------------- */
----------------------------------------- */


#side-toc-box .toc-sidebar-content {
.clbi-left-news-box {
padding:6px 8px 8px;
position:relative;
min-height:0;
overflow:hidden;
}
}


.generated-toc {
/* 뉴스 박스 타이틀은 언어 박스에서 확정한 내부 라벨 패널 표준을 따른다.
margin:0 !important;
  - 컨테이너 상단 기준: 위 4px, 아래 3px
padding:0 !important;
  - 외곽 검은 선 없음
list-style:none !important;
  - 광원/그림자는 #555555 / #101010 한 세트만 사용 */
.clbi-left-news-box > .clbi-left-title {
min-height:0;
height:auto;
margin:4px 0 3px;
padding:3px 7px;
box-sizing:border-box;
background:#080808;
border:0;
display:flex;
align-items:center;
gap:6px;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}
}


.generated-toc li {
#clbi-title-left-news {
margin:0 !important;
display:inline-flex;
padding:0 !important;
align-items:center;
}
height:100%;
 
color:#e2e2e2;
.generated-toc a {
font-size:12px;
display:block !important;
height:23px;
line-height:23px;
padding:0 2px;
border-bottom:1px solid #202020;
color:#c8c8c8 !important;
font-size:11px;
font-weight:700;
font-weight:700;
text-decoration:none !important;
line-height:1;
text-shadow:1px 1px 0 #000;
letter-spacing:0;
box-sizing:border-box;
overflow:hidden;
}
}


.generated-toc li:first-child a {
.news-title-icon,
border-top:1px solid #202020;
.news-title-icon.sidebar-title-svg {
display:inline-flex;
align-items:center;
justify-content:center;
width:16px;
height:16px;
font-size:13px;
line-height:1;
color:#e2e2e2 !important;
flex:0 0 16px;
vertical-align:middle;
}
}


.generated-toc a:hover {
.news-title-icon .profile-svg,
background:#101010;
.news-title-icon.sidebar-title-svg .profile-svg {
color:#ffffff !important;
width:16px;
height:16px;
display:block;
stroke:currentColor;
}
}


.generated-toc .toc-level-3 a {
/* 뉴스 컨텐츠 슬롯은 언어 박스와 같은 3px 내부 기준을 따른다. */
padding-left:12px;
.clbi-news-box {
font-weight:600;
color:#9f9f9f !important;
}
 
.toc-scroll-wrap {
display:block;
position:relative;
position:relative;
padding:3px !important;
box-sizing:border-box;
overflow:hidden;
overflow:hidden;
white-space:nowrap;
background:#080808;
}
}


.toc-scroll-text {
/* 섹션 타이틀: 컨텐츠 슬롯 내부의 라벨 패널 */
display:inline-block;
.news-feed-title {
white-space:nowrap;
position:relative;
}
display:flex;
 
align-items:center;
.toc-scroll-wrap.is-scrolling::after {
height:auto;
content:"";
min-height:22px;
position:absolute;
margin:0 0 2px 0;
top:0;
padding:3px 7px 3px 16px;
right:0;
box-sizing:border-box;
bottom:0;
background:#1d1d1d;
width:18px;
border:1px solid #050505;
pointer-events:none;
color:#c8c8c8;
background:linear-gradient(to right, transparent, #080808);
font-size:9px;
font-weight:700;
line-height:1;
letter-spacing:0.55px;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}
}


/* -----------------------------------------
.news-feed-title::before {
14. 하단 푸터
content:"";
----------------------------------------- */
position:absolute;
left:7px;
top:50%;
width:4px;
height:8px;
transform:translateY(-50%);
background:#c8c8c8;
box-shadow:1px 1px 0 #050505;
opacity:0.85;
}


footer,
#clbi-left-news-changelog-title {
.liberty-footer {
margin-top:0;
display:none !important;
}
}


/* =========================================
#clbi-left-news-recent-title {
15. 상단 네비게이션 바
margin-top:2px;
========================================= */
}


/*
/* 섹션 본체는 별도 프레임을 만들지 않는 배치 래퍼다. */
상단 네비바 공식
.news-left-changelog-feed,
-----------------------------------------
.news-left-recent-feed {
- 전체는 하나의 각진 조작 패널이다.
background:transparent;
- 탭 하나하나는 독립 버튼 외장보다 패널 내부 구획에 가깝다.
border:0;
- radius는 사용하지 않는다.
box-shadow:none;
- 보라색 테마를 쓰지 않는다.
box-sizing:border-box;
- 검색창도 같은 금속 인풋으로 정리한다.
}
*/


#clbi-top-nav-wrap {
.news-left-changelog-feed {
width:var(--layout-shell-w) !important;
padding:0;
max-width:var(--layout-shell-w) !important;
min-width:var(--layout-shell-w) !important;
margin:0 auto !important;
padding:var(--layout-gap) 0 0 !important;
box-sizing:border-box !important;
}
}


#clbi-top-nav,
.news-left-recent-feed {
#clbi-bottom-nav {
padding:0;
position:relative;
color:#9a9a9a;
width:100%;
font-size:11px;
height:var(--layout-nav-outer-h);
line-height:1.55;
min-height:var(--layout-nav-outer-h);
box-sizing:border-box;
background:#171717;
border:1px solid;
border-color:
#555555
#2b2b2b
#050505
#2b2b2b;
border-radius:0;
overflow:hidden;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040),
inset 0 -1px 0 rgba(0,0,0,0.70),
0 6px 18px rgba(0,0,0,0.34);
margin-bottom:0;
}
}


#clbi-top-nav-main,
.news-divider {
#clbi-bottom-nav-main {
display:none;
position:relative;
display:flex;
align-items:stretch;
width:100%;
height:calc(var(--layout-nav-outer-h) - 2px);
min-height:calc(var(--layout-nav-outer-h) - 2px);
box-sizing:border-box;
}
}


#clbi-top-nav-logo,
/* 버튼형 항목: 단색 표면 + 최외곽 검은 선 + 동일 광원 세트 */
#clbi-bottom-nav-logo {
.news-post-item,
display:flex;
.news-recent-item {
position:relative;
display:grid !important;
align-items:center;
align-items:center;
padding:0 8px;
gap:6px;
flex-shrink:0;
margin:0 0 2px;
box-sizing:border-box;
background:#1d1d1d;
border:1px solid #050505;
color:#c8c8c8 !important;
overflow:hidden;
text-decoration:none !important;
cursor:pointer;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}
}


#clbi-top-nav-logo img,
.news-post-item {
#clbi-bottom-nav-logo img {
grid-template-columns:minmax(0,1fr) auto;
height:36px;
min-height:26px;
width:auto;
padding:0 6px;
display:block;
}
}


/* -----------------------------------------
.news-recent-item {
16. 상단 네비 탭
grid-template-columns:28px minmax(0,1fr) auto;
----------------------------------------- */
min-height:36px;
 
margin:0 0 2px;
#clbi-top-nav-tabs,
padding:4px 6px 4px 5px;
#clbi-bottom-nav-tabs {
display:flex;
align-items:stretch;
flex:1;
flex-shrink:0;
}
}


.clbi-top-nav-item {
.news-post-item:last-child,
position:relative;
.news-recent-item:last-child {
display:flex;
margin-bottom:0;
align-items:center;
justify-content:center;
gap:8px;
width:120px;
min-height:38px;
flex-shrink:0;
padding:0;
background:transparent;
border-left:1px solid transparent;
border-right:1px solid #202020;
cursor:pointer;
transition:
background 0.12s,
border-color 0.12s,
color 0.12s,
box-shadow 0.12s;
user-select:none;
white-space:nowrap;
text-decoration:none !important;
color:#e2e2e2 !important;
overflow:hidden;
box-sizing:border-box;
text-shadow:1px 1px 0 #000;
}
}


.clbi-top-nav-item:hover {
.news-post-item:hover,
min-height:38px;
.news-recent-item:hover {
background:#1d1d1d;
background:#1d1d1d;
border-left-color:#333333;
border-right-color:#333333;
color:#ffffff !important;
color:#ffffff !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.045),
inset 0 -1px 0 rgba(0,0,0,0.65);
}
}


.clbi-top-nav-item.clbi-tnav-active {
.news-post-item:active,
background:#242424;
.news-recent-item:active {
border-left-color:#444444;
background:#101010;
border-right-color:#444444;
color:#ffffff !important;
box-shadow:
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.050),
inset 0 1px 0 #101010,
inset 0 -1px 0 rgba(0,0,0,0.70);
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}
}


.clbi-tnav-icon {
.news-recent-avatar {
display:block;
display:block;
width:22px;
width:24px;
height:22px;
height:24px;
object-fit:contain;
object-fit:cover;
flex:0 0 22px;
object-position:center;
image-rendering:pixelated;
background:#070707;
opacity:0.88;
border:1px solid #050505;
align-self:center;
box-shadow:
filter:grayscale(0.18) contrast(1.05);
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
box-sizing:border-box;
}
}


.clbi-top-nav-item:hover .clbi-tnav-icon,
.news-recent-item:hover .news-recent-avatar {
.clbi-top-nav-item.clbi-tnav-active .clbi-tnav-icon {
border-color:#050505;
opacity:1;
filter:grayscale(0) contrast(1.08);
}
}


/* -----------------------------------------
.news-recent-main {
17. 언어 버튼
min-width:0;
----------------------------------------- */
display:flex;
 
.clbi-tnav-lang {
flex-direction:column;
flex-direction:column;
justify-content:center;
justify-content:center;
align-items:center;
width:54px;
min-height:38px;
gap:1px;
gap:1px;
padding:4px 0;
border-left:1px solid transparent;
}
}


.clbi-tnav-lang-code {
.news-post-title-wrap,
font-size:11px;
.news-recent-title-wrap {
font-weight:700;
min-width:0;
color:#e2e2e2;
overflow:hidden;
letter-spacing:0;
white-space:nowrap;
mask-image:linear-gradient(to right, black 88%, transparent 100%);
-webkit-mask-image:linear-gradient(to right, black 88%, transparent 100%);
}
}


.clbi-tnav-lang .clbi-tnav-arrow {
.news-post-title-wrap {
font-size:9px;
display:flex;
color:#8a8a8a;
align-items:center;
width:8px;
text-align:center;
flex-shrink:0;
}
}


.clbi-tnav-lang:hover {
.news-post-title,
border-left-color:transparent !important;
.news-recent-title {
display:inline-block;
max-width:none;
overflow:visible;
color:#e2e2e2 !important;
font-size:12px;
font-weight:700;
line-height:1.18;
white-space:nowrap;
text-decoration:none !important;
text-shadow:1px 1px 0 #000;
}
}


.clbi-tnav-lang.clbi-tnav-active {
.news-post-item:hover .news-post-title,
border-left-color:transparent !important;
.news-recent-item:hover .news-recent-title {
color:#ffffff !important;
}
}


.clbi-tnav-lang-bottom {
.news-post-arrow {
display:flex;
display:inline-flex;
align-items:center;
align-items:center;
justify-content:center;
justify-content:center;
gap:3px;
width:12px;
height:12px;
margin-left:5px;
color:#8a8a8a;
font-size:11px;
line-height:1;
line-height:1;
width:100%;
vertical-align:-1px;
flex:0 0 auto;
}
 
.news-post-item:hover .news-post-arrow {
color:#ffffff;
}
}


.clbi-tnav-label {
.news-recent-meta {
position:relative;
display:flex;
z-index:1;
display:inline-flex;
align-items:center;
align-items:center;
height:22px;
min-width:0;
line-height:22px;
height:10px;
font-size:13px;
line-height:1;
font-weight:700;
}
}


.clbi-tnav-arrow {
.news-recent-user {
position:relative;
display:block !important;
z-index:1;
min-width:0;
font-size:12px;
max-width:100%;
color:#8a8a8a;
overflow:hidden;
transition:color 0.12s;
text-overflow:ellipsis;
white-space:nowrap;
color:#7a7a7a !important;
font-size:8.5px;
font-weight:700;
line-height:1;
text-decoration:none !important;
text-shadow:1px 1px 0 #000;
}
}


.clbi-top-nav-item:hover .clbi-tnav-arrow,
.news-recent-item:hover .news-recent-user {
.clbi-top-nav-item.clbi-tnav-active .clbi-tnav-arrow {
color:#b0b0b0 !important;
color:#ffffff;
}
}


/* -----------------------------------------
/* 항목 내부의 작은 상태 버튼: 외곽선 없이 우물 방향 내부선만 사용 */
18. 상단 검색
.news-post-tag,
----------------------------------------- */
.news-recent-time {
 
display:inline-flex;
#clbi-top-nav-search,
#clbi-bottom-nav-search {
position:absolute;
left:50%;
top:0;
bottom:0;
transform:translateX(-50%);
display:flex;
align-items:center;
align-items:center;
justify-content:center;
justify-content:center;
pointer-events:none;
height:16px;
min-width:34px;
padding:0 4px;
box-sizing:border-box;
background:#080808;
border:0;
color:#c8c8c8 !important;
font-size:9px;
font-weight:700;
line-height:1;
white-space:nowrap;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}
}


#clbi-top-search-input,
.news-post-item:hover .news-post-tag,
#clbi-bottom-search-input {
.news-recent-item:hover .news-recent-time {
width:240px;
background:#101010;
height:26px;
color:#e2e2e2 !important;
background:#070707;
border:1px solid #202020;
color:#e2e2e2;
padding:0 10px;
border-radius:0;
font-size:11px;
box-sizing:border-box;
outline:none;
pointer-events:all;
transition:border-color 0.12s, width 0.2s, background 0.12s;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.025),
inset 0 -1px 0 rgba(0,0,0,0.55);
}
}


#clbi-top-search-input:focus,
.news-recent-item:active .news-recent-time {
#clbi-bottom-search-input:focus {
background:#080808;
border-color:#555555;
color:#c8c8c8 !important;
background:#0c0c0c;
box-shadow:
width:320px;
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}
}


#clbi-top-nav-right,
.news-post-item *,
#clbi-bottom-nav-right {
.news-recent-item * {
margin-left:auto;
pointer-events:none;
display:flex;
align-items:stretch;
border-left:1px solid #202020;
}
}


/* -----------------------------------------
/* -----------------------------------------
18-1. 대문 전용 상·하단 네비 최소화
12. 왼쪽 목차
----------------------------------------- */
----------------------------------------- */


/*
#side-toc-box .toc-sidebar-content {
대문에서는 본문 내부에 카테고리 네비와 대문 전용 조작 구조가 이미 있으므로,
padding:6px 8px 8px;
상단·하단 네비바는 검색 슬롯만 남긴다.
다른 문서에서는 기존 버튼 구성을 그대로 유지한다.
*/
 
body.clbi-main-page #clbi-top-nav-tabs,
body.page-대문 #clbi-top-nav-tabs,
body.clbi-main-page #clbi-bottom-nav-tabs,
body.page-대문 #clbi-bottom-nav-tabs,
body.clbi-main-page #clbi-top-nav-right,
body.page-대문 #clbi-top-nav-right,
body.clbi-main-page #clbi-bottom-nav-right,
body.page-대문 #clbi-bottom-nav-right,
body.clbi-main-page #clbi-sub-worldbuilding,
body.page-대문 #clbi-sub-worldbuilding,
body.clbi-main-page #clbi-bottom-sub-worldbuilding,
body.page-대문 #clbi-bottom-sub-worldbuilding {
display:none !important;
}
}


body.clbi-main-page #clbi-top-search-input,
.generated-toc {
body.page-대문 #clbi-top-search-input,
margin:0 !important;
body.clbi-main-page #clbi-bottom-search-input,
padding:0 !important;
body.page-대문 #clbi-bottom-search-input {
list-style:none !important;
width:288px;
}
}


body.clbi-main-page #clbi-top-search-input:focus,
.generated-toc li {
body.page-대문 #clbi-top-search-input:focus,
margin:0 !important;
body.clbi-main-page #clbi-bottom-search-input:focus,
padding:0 !important;
body.page-대문 #clbi-bottom-search-input:focus {
width:384px;
}
}


/* -----------------------------------------
.generated-toc a {
19. 세계관 펼침 영역
display:block !important;
----------------------------------------- */
height:23px;
 
line-height:23px;
#clbi-sub-worldbuilding,
padding:0 2px;
#clbi-bottom-sub-worldbuilding {
border-bottom:1px solid #202020;
color:#c8c8c8 !important;
font-size:11px;
font-weight:700;
text-decoration:none !important;
text-shadow:1px 1px 0 #000;
box-sizing:border-box;
box-sizing:border-box;
width:100%;
height:0;
overflow:hidden;
overflow:hidden;
border-top:0 solid #050505;
background:#080808;
transition:
height 180ms ease,
border-top-width 0ms linear 180ms;
}
}


#clbi-sub-worldbuilding.worldbuilding-open,
.generated-toc li:first-child a {
#clbi-bottom-sub-worldbuilding.worldbuilding-open {
border-top:1px solid #202020;
height:38px;
border-top-width:1px;
transition:
height 180ms ease,
border-top-width 0ms linear 0ms;
}
}


#clbi-sub-worldbuilding-inner,
.generated-toc a:hover {
#clbi-bottom-sub-worldbuilding-inner {
background:#101010;
height:38px;
color:#ffffff !important;
overflow:hidden;
}
}


.clbi-tnav-sub-list {
.generated-toc .toc-level-3 a {
display:flex;
padding-left:12px;
align-items:stretch;
font-weight:600;
flex-wrap:nowrap;
color:#9f9f9f !important;
height:38px;
padding:0;
margin:0;
}
}


.clbi-tnav-sub-item {
.toc-scroll-wrap {
display:block;
position:relative;
position:relative;
display:flex;
overflow:hidden;
align-items:center;
justify-content:center;
height:38px;
padding:0 15px 1px 15px;
background:transparent;
color:#c8c8c8 !important;
font-size:11px;
font-weight:700;
line-height:1;
white-space:nowrap;
white-space:nowrap;
text-decoration:none !important;
box-sizing:border-box;
transition:
background 0.12s,
color 0.12s,
box-shadow 0.12s;
text-shadow:1px 1px 0 #000;
}
}


.clbi-tnav-sub-item::after {
.toc-scroll-text {
content:"";
display:inline-block;
white-space:nowrap;
}
 
.toc-scroll-wrap.is-scrolling::after {
content:"";
position:absolute;
position:absolute;
top:6px;
top:0;
right:0;
right:0;
bottom:6px;
bottom:0;
width:1px;
width:18px;
background:#202020;
pointer-events:none;
pointer-events:none;
background:linear-gradient(to right, transparent, #080808);
}
}


.clbi-tnav-sub-item:last-child::after {
/* -----------------------------------------
display:none;
14. 하단 푸터
}
----------------------------------------- */


.clbi-tnav-sub-item:hover {
footer,
background:#151515;
.liberty-footer {
color:#ffffff !important;
display:none !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.030),
inset 0 -1px 0 rgba(0,0,0,0.60);
}
}


/* 상단 네비: hover/active 인접 경계선 중복 방지 */
/* =========================================
.clbi-top-nav-item:hover + .clbi-top-nav-item.clbi-tnav-active {
15. 상단 네비게이션 바
border-left-color:transparent;
========================================= */
}


.clbi-top-nav-item.clbi-tnav-active + .clbi-top-nav-item:hover {
/*
border-left-color:transparent;
상단 네비바 공식
-----------------------------------------
- 전체는 하나의 각진 조작 패널이다.
- 탭 하나하나는 독립 버튼 외장보다 패널 내부 구획에 가깝다.
- radius는 사용하지 않는다.
- 보라색 테마를 쓰지 않는다.
- 검색창도 같은 금속 인풋으로 정리한다.
*/
 
#clbi-top-nav-wrap {
width:var(--layout-shell-w) !important;
max-width:var(--layout-shell-w) !important;
min-width:var(--layout-shell-w) !important;
margin:0 auto !important;
padding:var(--layout-gap) 0 0 !important;
box-sizing:border-box !important;
}
}


/* =========================================
#clbi-top-nav,
Progress System UI
#clbi-bottom-nav {
MediaWiki:Layout.css controlled frontend
========================================= */
/* =========================================
Progress System
========================================= */
 
.profile-progress-block {
--xp-base-a:#5f9f68;
--xp-base-b:#9acb7a;
--xp-gain-a:#238c84;
--xp-gain-b:#54c7bb;
--xp-glow:rgba(35,140,132,0.20);
position:relative;
position:relative;
margin:7px 7px 0;
width:100%;
padding:6px;
background:#171717;
box-sizing:border-box;
background:#080808;
border:1px solid;
border:1px solid;
border-color:
border-color:
#333333
#555555
#202020
#2b2b2b
#050505
#050505
#202020;
#2b2b2b;
border-radius:0;
overflow:hidden;
box-shadow:
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.020),
inset 0 1px 0 rgba(255,255,255,0.040),
inset 0 -1px 0 rgba(0,0,0,0.58);
inset 0 -1px 0 rgba(0,0,0,0.70),
0 6px 18px rgba(0,0,0,0.34);
margin-bottom:0;
}
}


.profile-progress-block.is-max-level {
#clbi-top-nav-main,
--xp-base-a:#b58a3a;
#clbi-bottom-nav-main {
--xp-base-b:#f0ce75;
position:relative;
--xp-gain-a:#d9aa42;
display:flex;
--xp-gain-b:#fff0a8;
align-items:stretch;
--xp-glow:rgba(224,190,104,0.30);
width:100%;
min-height:38px;
}
}


.profile-progress-block.is-max-level .progress-level-label {
#clbi-top-nav-logo,
color:#f0ce75;
#clbi-bottom-nav-logo {
text-shadow:
display:flex;
1px 1px 0 #000,
align-items:center;
0 0 7px rgba(224,190,104,0.28);
padding:0 8px;
flex-shrink:0;
}
}


.profile-progress-block.is-max-level .progress-total-xp {
#clbi-top-nav-logo img,
color:#e0be68;
#clbi-bottom-nav-logo img {
height:36px;
width:auto;
display:block;
}
}


.profile-progress-block.is-max-level .progress-xp-bar {
/* -----------------------------------------
border-color:#4a3b18;
16. 상단 네비 탭
box-shadow:
----------------------------------------- */
inset 0 1px 0 rgba(255,255,255,0.040),
inset 0 -1px 0 rgba(0,0,0,0.62),
0 0 6px rgba(224,190,104,0.18);
}


.profile-progress-block.is-max-level .progress-xp-next {
#clbi-top-nav-tabs,
color:#e0be68;
#clbi-bottom-nav-tabs {
display:flex;
align-items:stretch;
flex:1;
flex-shrink:0;
}
}


.progress-panel-fallback-body {
.clbi-top-nav-item {
padding:0 !important;
position:relative;
}
 
.progress-title-row {
min-height:16px;
margin:0 0 6px;
padding:0 6px;
display:flex;
display:flex;
align-items:center;
align-items:center;
justify-content:center;
justify-content:center;
box-sizing:border-box;
gap:8px;
background:#141414;
width:120px;
border:1px solid;
min-height:38px;
border-color:
flex-shrink:0;
#333333
padding:0;
#202020
background:transparent;
#181818
border-left:1px solid transparent;
#202020;
border-right:1px solid #202020;
color:#c8c8c8;
cursor:pointer;
font-size:9px;
transition:
font-weight:700;
background 0.12s,
line-height:1;
border-color 0.12s,
color 0.12s,
box-shadow 0.12s;
user-select:none;
white-space:nowrap;
text-decoration:none !important;
color:#e2e2e2 !important;
overflow:hidden;
box-sizing:border-box;
text-shadow:1px 1px 0 #000;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040);
}
}


.progress-title-row[hidden] {
.clbi-top-nav-item:hover {
display:none !important;
min-height:38px;
}
background:#1d1d1d;
border-left-color:#333333;
border-right-color:#333333;
color:#ffffff !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.045),
inset 0 -1px 0 rgba(0,0,0,0.65);
}


.progress-level-row,
.clbi-top-nav-item.clbi-tnav-active {
.progress-sub-row {
background:#242424;
display:flex;
border-left-color:#444444;
align-items:center;
border-right-color:#444444;
justify-content:space-between;
color:#ffffff !important;
gap:6px;
box-shadow:
min-width:0;
inset 0 1px 0 rgba(255,255,255,0.050),
inset 0 -1px 0 rgba(0,0,0,0.70);
}
}


.progress-level-row {
.clbi-tnav-icon {
margin-bottom:5px;
display:block;
width:22px;
height:22px;
object-fit:contain;
flex:0 0 22px;
image-rendering:pixelated;
opacity:0.88;
align-self:center;
filter:grayscale(0.18) contrast(1.05);
}
}


.progress-level-label {
.clbi-top-nav-item:hover .clbi-tnav-icon,
color:#e2e2e2;
.clbi-top-nav-item.clbi-tnav-active .clbi-tnav-icon {
font-size:14px;
opacity:1;
font-weight:700;
filter:grayscale(0) contrast(1.08);
line-height:1;
}
letter-spacing:0.2px;
 
text-shadow:
/* -----------------------------------------
1px 1px 0 #000,
17. 언어 버튼
0 0 5px rgba(154,203,122,0.14);
----------------------------------------- */
 
.clbi-tnav-lang {
flex-direction:column;
justify-content:center;
align-items:center;
width:54px;
min-height:38px;
gap:1px;
padding:4px 0;
border-left:1px solid transparent;
}
}


.progress-total-xp {
.clbi-tnav-lang-code {
color:#b8c9b4;
font-size:11px;
font-size:10px;
font-weight:700;
font-weight:700;
line-height:1;
color:#e2e2e2;
white-space:nowrap;
letter-spacing:0;
text-shadow:1px 1px 0 #000;
}
}


.progress-xp-bar {
.clbi-tnav-lang .clbi-tnav-arrow {
position:relative;
font-size:9px;
width:100%;
color:#8a8a8a;
height:10px;
width:8px;
margin:0 0 5px;
text-align:center;
box-sizing:border-box;
flex-shrink:0;
background:#070707;
border:1px solid #202020;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.025),
inset 0 -1px 0 rgba(0,0,0,0.60);
overflow:hidden;
isolation:isolate;
}
}


.progress-xp-bar::before {
.clbi-tnav-lang:hover {
content:"";
border-left-color:transparent !important;
position:absolute;
inset:0;
z-index:4;
pointer-events:none;
background:
linear-gradient(to bottom, rgba(255,255,255,0.08), transparent 45%, rgba(0,0,0,0.18));
}
}


.progress-xp-fill,
.clbi-tnav-lang.clbi-tnav-active {
.progress-xp-gain {
border-left-color:transparent !important;
position:absolute;
left:0;
top:0;
bottom:0;
width:0;
}
}


.progress-xp-gain {
.clbi-tnav-lang-bottom {
z-index:1;
display:flex;
opacity:0;
align-items:center;
background:linear-gradient(to bottom, var(--xp-gain-b) 0%, var(--xp-gain-a) 58%, #155c58 100%);
justify-content:center;
box-shadow:
gap:3px;
inset 0 1px 0 rgba(255,255,255,0.18),
line-height:1;
inset 0 -1px 0 rgba(0,0,0,0.46),
width:100%;
0 0 5px var(--xp-glow);
}
}


.progress-xp-fill {
.clbi-tnav-label {
z-index:2;
position:relative;
background:linear-gradient(to bottom, var(--xp-base-b) 0%, var(--xp-base-a) 58%, #3f7346 100%);
z-index:1;
box-shadow:
display:inline-flex;
inset 0 1px 0 rgba(255,255,255,0.24),
align-items:center;
inset 0 -1px 0 rgba(0,0,0,0.42);
height:22px;
transition:width 260ms ease;
line-height:22px;
font-size:13px;
font-weight:700;
}
}


.progress-sub-row {
.clbi-tnav-arrow {
margin-bottom:6px;
position:relative;
z-index:1;
font-size:12px;
color:#8a8a8a;
transition:color 0.12s;
}
}


.progress-xp-next,
.clbi-top-nav-item:hover .clbi-tnav-arrow,
.progress-daily-xp,
.clbi-top-nav-item.clbi-tnav-active .clbi-tnav-arrow {
.progress-discovery-row {
color:#ffffff;
color:#8a8a8a;
font-size:9px;
font-weight:700;
line-height:1;
text-shadow:1px 1px 0 #000;
}
}


.progress-daily-xp {
/* -----------------------------------------
white-space:nowrap;
18. 상단 검색
}
----------------------------------------- */


.progress-discovery-row {
#clbi-top-nav-search,
height:18px;
#clbi-bottom-nav-search {
position:absolute;
left:50%;
top:0;
bottom:0;
transform:translateX(-50%);
display:flex;
display:flex;
align-items:center;
align-items:center;
justify-content:center;
justify-content:center;
background:#141414;
pointer-events:none;
border:1px solid;
border-color:
#333333
#202020
#181818
#202020;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040);
}
}


#progress-toast-root {
#clbi-top-search-input,
position:fixed;
#clbi-bottom-search-input {
right:18px;
width:240px;
bottom:18px;
height:26px;
z-index:100000;
background:#070707;
display:flex;
border:1px solid #202020;
flex-direction:column;
gap:6px;
pointer-events:none;
}
 
.progress-toast {
min-width:220px;
max-width:320px;
padding:8px 10px;
box-sizing:border-box;
background:#171717;
border:1px solid;
border-color:#555555 #2b2b2b #050505 #2b2b2b;
color:#e2e2e2;
color:#e2e2e2;
padding:0 10px;
border-radius:0;
font-size:11px;
font-size:11px;
font-weight:700;
box-sizing:border-box;
line-height:1.35;
outline:none;
text-shadow:1px 1px 0 #000;
pointer-events:all;
transition:border-color 0.12s, width 0.2s, background 0.12s;
box-shadow:
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040),
inset 0 1px 0 rgba(255,255,255,0.025),
inset 0 -1px 0 rgba(0,0,0,0.72),
inset 0 -1px 0 rgba(0,0,0,0.55);
0 6px 18px rgba(0,0,0,0.42);
opacity:0;
transform:translateY(8px);
transition:opacity 160ms ease, transform 160ms ease;
}
}


.progress-toast.is-visible {
#clbi-top-search-input:focus,
opacity:1;
#clbi-bottom-search-input:focus {
transform:translateY(0);
border-color:#555555;
background:#0c0c0c;
width:320px;
}
 
#clbi-top-nav-right,
#clbi-bottom-nav-right {
margin-left:auto;
display:flex;
align-items:stretch;
border-left:1px solid #202020;
}
}


/* -----------------------------------------
/* -----------------------------------------
Analog hover normalization
18-1. 대문 전용 상·하단 네비 최소화
----------------------------------------- */
----------------------------------------- */
#clbi-top-nav .clbi-top-nav-item,
 
#clbi-top-nav .clbi-top-nav-item *,
/*
#clbi-bottom-nav .clbi-top-nav-item,
대문에서는 본문 내부에 카테고리 네비와 대문 전용 조작 구조가 이미 있으므로,
#clbi-bottom-nav .clbi-top-nav-item *,
상단·하단 네비바는 검색 슬롯만 남긴다.
#clbi-sub-worldbuilding .clbi-tnav-sub-item,
다른 문서에서는 기존 버튼 구성을 그대로 유지한다.
#clbi-bottom-sub-worldbuilding .clbi-tnav-sub-item,
*/
#clbi-search-btn,
 
.clbi-user-btn,
body.clbi-main-page #clbi-top-nav-tabs,
.profile-action-box .clbi-user-btn,
body.page-대문 #clbi-top-nav-tabs,
.profile-action-box .clbi-user-btn *,
body.clbi-main-page #clbi-bottom-nav-tabs,
.profile-quick-btn,
body.page-대문 #clbi-bottom-nav-tabs,
.profile-quick-btn *,
body.clbi-main-page #clbi-top-nav-right,
.news-post-item,
body.page-대문 #clbi-top-nav-right,
.news-post-item *,
body.clbi-main-page #clbi-bottom-nav-right,
.news-recent-item,
body.page-대문 #clbi-bottom-nav-right,
.news-recent-item *,
body.clbi-main-page #clbi-sub-worldbuilding,
.clbi-left-news-main,
body.page-대문 #clbi-sub-worldbuilding,
.clbi-left-news-main *,
body.clbi-main-page #clbi-bottom-sub-worldbuilding,
.clbi-link-btn,
body.page-대문 #clbi-bottom-sub-worldbuilding {
.clbi-link-box ul li a,
display:none !important;
#clbi-playlist-toggle,
#clbi-notification-toggle {
transition:none !important;
}
}


/* =========================================
body.clbi-main-page #clbi-top-search-input,
  CLBI viewport shell final override
body.page-대문 #clbi-top-search-input,
  -----------------------------------------
body.clbi-main-page #clbi-bottom-search-input,
  상단 네비 / 중앙 행 / 하단 네비를 하나의 명시적 셸로 묶는다.
body.page-대문 #clbi-bottom-search-input {
  중앙 행의 높이는 브라우저 남은 공간을 grid 1fr로 받는다.
width:288px;
  개별 content-wrapper 높이를 JS나 calc로 다시 덮지 않는다.
}
========================================= */


#clbi-page-shell {
body.clbi-main-page #clbi-top-search-input:focus,
width:var(--layout-shell-w) !important;
body.page-대문 #clbi-top-search-input:focus,
max-width:var(--layout-shell-w) !important;
body.clbi-main-page #clbi-bottom-search-input:focus,
min-width:var(--layout-shell-w) !important;
body.page-대문 #clbi-bottom-search-input:focus {
height:100dvh !important;
width:384px;
min-height:0 !important;
margin:0 auto !important;
padding:var(--layout-gap) 0 !important;
box-sizing:border-box !important;
display:grid !important;
grid-template-rows:auto minmax(0, 1fr) auto !important;
gap:var(--layout-gap) !important;
align-items:stretch !important;
justify-content:stretch !important;
overflow:hidden !important;
}
}


#clbi-page-shell #clbi-top-nav-wrap,
/* -----------------------------------------
#clbi-page-shell #clbi-bottom-nav-wrap,
19. 세계관 펼침 영역
#clbi-page-shell .content-wrapper {
----------------------------------------- */
width:100% !important;
 
max-width:100% !important;
#clbi-sub-worldbuilding,
min-width:0 !important;
#clbi-bottom-sub-worldbuilding {
box-sizing:border-box !important;
box-sizing:border-box;
width:100%;
height:0;
overflow:hidden;
border-top:0 solid #050505;
background:#080808;
transition:
height 180ms ease,
border-top-width 0ms linear 180ms;
}
}


#clbi-page-shell #clbi-top-nav-wrap,
#clbi-sub-worldbuilding.worldbuilding-open,
#clbi-page-shell #clbi-bottom-nav-wrap {
#clbi-bottom-sub-worldbuilding.worldbuilding-open {
margin:0 !important;
height:38px;
padding:0 !important;
border-top-width:1px;
align-self:stretch !important;
transition:
height 180ms ease,
border-top-width 0ms linear 0ms;
}
}


#clbi-page-shell .content-wrapper {
#clbi-sub-worldbuilding-inner,
margin:0 !important;
#clbi-bottom-sub-worldbuilding-inner {
padding:0 !important;
height:38px;
height:100% !important;
overflow:hidden;
min-height:0 !important;
max-height:100% !important;
box-sizing:border-box !important;
align-self:stretch !important;
overflow:visible !important;
}
}


#clbi-page-shell .container-fluid.liberty-content {
.clbi-tnav-sub-list {
height:100% !important;
display:flex;
min-height:0 !important;
align-items:stretch;
max-height:100% !important;
flex-wrap:nowrap;
align-self:stretch !important;
height:38px;
padding:0;
margin:0;
}
}


#clbi-page-shell .liberty-content-main {
.clbi-tnav-sub-item {
height:100% !important;
position:relative;
min-height:0 !important;
display:flex;
max-height:100% !important;
align-items:center;
justify-content:center;
height:38px;
padding:0 15px 1px 15px;
background:transparent;
color:#c8c8c8 !important;
font-size:11px;
font-weight:700;
line-height:1;
white-space:nowrap;
text-decoration:none !important;
box-sizing:border-box;
transition:
background 0.12s,
color 0.12s,
box-shadow 0.12s;
text-shadow:1px 1px 0 #000;
}
 
.clbi-tnav-sub-item::after {
content:"";
position:absolute;
top:6px;
right:0;
bottom:6px;
width:1px;
background:#202020;
pointer-events:none;
}
 
.clbi-tnav-sub-item:last-child::after {
display:none;
}
 
.clbi-tnav-sub-item:hover {
background:#151515;
color:#ffffff !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.030),
inset 0 -1px 0 rgba(0,0,0,0.60);
}
}


#clbi-page-shell .liberty-content-main .mw-parser-output {
/* 상단 네비: hover/active 인접 경계선 중복 방지 */
min-height:0 !important;
.clbi-top-nav-item:hover + .clbi-top-nav-item.clbi-tnav-active {
border-left-color:transparent;
}
 
.clbi-top-nav-item.clbi-tnav-active + .clbi-top-nav-item:hover {
border-left-color:transparent;
}
 
/* =========================================
Progress System UI
MediaWiki:Layout.css controlled frontend
========================================= */
/* =========================================
Progress System
========================================= */
 
.profile-progress-block {
--xp-base-a:#5f9f68;
--xp-base-b:#9acb7a;
--xp-gain-a:#238c84;
--xp-gain-b:#54c7bb;
--xp-glow:rgba(35,140,132,0.20);
position:relative;
margin:7px 7px 0;
padding:6px;
box-sizing:border-box;
background:#080808;
border:1px solid;
border-color:
#333333
#202020
#050505
#202020;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.020),
inset 0 -1px 0 rgba(0,0,0,0.58);
}
 
.profile-progress-block.is-max-level {
--xp-base-a:#b58a3a;
--xp-base-b:#f0ce75;
--xp-gain-a:#d9aa42;
--xp-gain-b:#fff0a8;
--xp-glow:rgba(224,190,104,0.30);
}
 
.profile-progress-block.is-max-level .progress-level-label {
color:#f0ce75;
text-shadow:
1px 1px 0 #000,
0 0 7px rgba(224,190,104,0.28);
}
 
.profile-progress-block.is-max-level .progress-total-xp {
color:#e0be68;
}
 
.profile-progress-block.is-max-level .progress-xp-bar {
border-color:#4a3b18;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040),
inset 0 -1px 0 rgba(0,0,0,0.62),
0 0 6px rgba(224,190,104,0.18);
}
 
.profile-progress-block.is-max-level .progress-xp-next {
color:#e0be68;
}
 
.progress-panel-fallback-body {
padding:0 !important;
}
 
.progress-title-row {
min-height:16px;
margin:0 0 6px;
padding:0 6px;
display:flex;
align-items:center;
justify-content:center;
box-sizing:border-box;
background:#141414;
border:1px solid;
border-color:
#333333
#202020
#181818
#202020;
color:#c8c8c8;
font-size:9px;
font-weight:700;
line-height:1;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040);
}
 
.progress-title-row[hidden] {
display:none !important;
}
 
.progress-level-row,
.progress-sub-row {
display:flex;
align-items:center;
justify-content:space-between;
gap:6px;
min-width:0;
}
 
.progress-level-row {
margin-bottom:5px;
}
 
.progress-level-label {
color:#e2e2e2;
font-size:14px;
font-weight:700;
line-height:1;
letter-spacing:0.2px;
text-shadow:
1px 1px 0 #000,
0 0 5px rgba(154,203,122,0.14);
}
 
.progress-total-xp {
color:#b8c9b4;
font-size:10px;
font-weight:700;
line-height:1;
white-space:nowrap;
text-shadow:1px 1px 0 #000;
}
 
.progress-xp-bar {
position:relative;
width:100%;
height:10px;
margin:0 0 5px;
box-sizing:border-box;
background:#070707;
border:1px solid #202020;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.025),
inset 0 -1px 0 rgba(0,0,0,0.60);
overflow:hidden;
isolation:isolate;
}
 
.progress-xp-bar::before {
content:"";
position:absolute;
inset:0;
z-index:4;
pointer-events:none;
background:
linear-gradient(to bottom, rgba(255,255,255,0.08), transparent 45%, rgba(0,0,0,0.18));
}
 
.progress-xp-fill,
.progress-xp-gain {
position:absolute;
left:0;
top:0;
bottom:0;
width:0;
}
 
.progress-xp-gain {
z-index:1;
opacity:0;
background:linear-gradient(to bottom, var(--xp-gain-b) 0%, var(--xp-gain-a) 58%, #155c58 100%);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.18),
inset 0 -1px 0 rgba(0,0,0,0.46),
0 0 5px var(--xp-glow);
}
 
.progress-xp-fill {
z-index:2;
background:linear-gradient(to bottom, var(--xp-base-b) 0%, var(--xp-base-a) 58%, #3f7346 100%);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.24),
inset 0 -1px 0 rgba(0,0,0,0.42);
transition:width 260ms ease;
}
 
.progress-sub-row {
margin-bottom:6px;
}
 
.progress-xp-next,
.progress-daily-xp,
.progress-discovery-row {
color:#8a8a8a;
font-size:9px;
font-weight:700;
line-height:1;
text-shadow:1px 1px 0 #000;
}
 
.progress-daily-xp {
white-space:nowrap;
}
 
.progress-discovery-row {
height:18px;
display:flex;
align-items:center;
justify-content:center;
background:#141414;
border:1px solid;
border-color:
#333333
#202020
#181818
#202020;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040);
}
 
#progress-toast-root {
position:fixed;
right:18px;
bottom:18px;
z-index:100000;
display:flex;
flex-direction:column;
gap:6px;
pointer-events:none;
}
 
.progress-toast {
min-width:220px;
max-width:320px;
padding:8px 10px;
box-sizing:border-box;
background:#171717;
border:1px solid;
border-color:#555555 #2b2b2b #050505 #2b2b2b;
color:#e2e2e2;
font-size:11px;
font-weight:700;
line-height:1.35;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040),
inset 0 -1px 0 rgba(0,0,0,0.72),
0 6px 18px rgba(0,0,0,0.42);
opacity:0;
transform:translateY(8px);
transition:opacity 160ms ease, transform 160ms ease;
}
 
.progress-toast.is-visible {
opacity:1;
transform:translateY(0);
}
 
/* -----------------------------------------
Analog hover normalization
----------------------------------------- */
#clbi-top-nav .clbi-top-nav-item,
#clbi-top-nav .clbi-top-nav-item *,
#clbi-bottom-nav .clbi-top-nav-item,
#clbi-bottom-nav .clbi-top-nav-item *,
#clbi-sub-worldbuilding .clbi-tnav-sub-item,
#clbi-bottom-sub-worldbuilding .clbi-tnav-sub-item,
#clbi-search-btn,
.clbi-user-btn,
.profile-action-box .clbi-user-btn,
.profile-action-box .clbi-user-btn *,
.profile-quick-btn,
.profile-quick-btn *,
.news-post-item,
.news-post-item *,
.news-recent-item,
.news-recent-item *,
.clbi-left-news-main,
.clbi-left-news-main *,
.clbi-link-btn,
.clbi-link-box ul li a,
#clbi-playlist-toggle,
#clbi-notification-toggle {
transition:none !important;
}
}

2026년 6월 3일 (수) 17:57 기준 최신판

/* =========================================
COASTLINE: BLACK ICE - Layout
Core page shell / top nav / sidebars
========================================= */

/*
설계 목적
-----------------------------------------
이 파일은 MediaWiki/Liberty 스킨 위에 올라가는 기본 레이아웃 뼈대를 담당한다.

담당 범위:
- 기본 Liberty 네비 숨김
- 본문 컨테이너 폭과 배치
- 본문 컨테이너 외곽 테마
- 상단 네비바
- 좌우 사이드바
- 유저 박스와 사이드 링크 버튼
- 하단 푸터

현재 디자인 공식
-----------------------------------------
1. 전체 컨테이너는 각진 금속 패널로 처리한다.
2. radius는 사용하지 않는다.
3. 본문 컨테이너 표면은 #171717을 기준으로 한다.
4. 상단 네비바와 좌우 사이드바도 같은 장치 계열로 맞춘다.
5. 상단은 밝게, 좌우는 중간, 하단은 어둡게 잡는 north-light rule을 사용한다.
6. 보라색 강조색(#854369, #d45aa2) 중심의 이전 테마는 제거한다.
7. 공사선 모티프는 이 파일에서 쓰지 않는다.
   공사선은 프로젝트 트래커, 제작 로그, 정비 알림처럼
   "우리가 만들고 있음"이 전면에 오는 곳에서만 사용한다.

주의:
- 대문 내부 전용 구성은 MediaWiki:MainPage.css가 담당한다.
- 카테고리 SVG 네비는 MediaWiki:CategoryNav.js + MainPage.css가 담당한다.
- 언어 다이얼은 이 파일의 좌측 사이드바 언어 선택기 블록이 담당한다.
*/

/* -----------------------------------------
0. 공통 색상 메모
----------------------------------------- */

/*
주요 표면:
#080808 : 깊은 내부 우물 / 화면 내부
#101010 : 기본 프레임
#141414 : 약간 밝은 패널 표면
#171717 : 본문 컨테이너 / 상단 네비 / 사이드 장치 표면
#1d1d1d : 타이틀바 / 활성 표면
#252525 : 호버 표면

주요 테두리:
#555555 : 상단광
#2b2b2b : 좌우 중간 테두리
#050505 : 하단암 / 깊은 구분선
#202020 : 내부 약한 구분선
*/

/* -----------------------------------------
1. Liberty 기본 요소 정리
----------------------------------------- */

#liberty-bottombtn {
display:none !important;
}

a[accesskey="t"] {
display:none !important;
}

.Liberty .nav-wrapper {
display:none !important;
}

.liberty-sidebar {
display:none !important;
}

/* -----------------------------------------
2. 전체 배치
----------------------------------------- */

:root {
--layout-shell-w:1880px;
--layout-side-w:230px;
--layout-gap:8px;
--layout-gap-double:16px;
--clbi-top-nav-outer-h:47px;
--clbi-bottom-nav-outer-h:47px;
}

/* 상단 네비와 본문 행의 세로 간격도 좌우 사이드바 간격과 같은 값을 사용한다. */

html {
height:100%;
overflow-x:auto;
overflow-y:hidden;
}

body {
margin:0 !important;
min-width:calc(var(--layout-shell-w) + 32px) !important;
height:100vh !important;
overflow-x:visible !important;
overflow-y:hidden !important;
}

#clbi-top-nav-wrap,
#clbi-bottom-nav-wrap,
.content-wrapper {
width:var(--layout-shell-w) !important;
max-width:var(--layout-shell-w) !important;
min-width:var(--layout-shell-w) !important;
box-sizing:border-box !important;
}

#clbi-top-nav-wrap {
margin:0 auto !important;
padding:var(--layout-gap) 0 0 !important;
}

#clbi-bottom-nav-wrap {
margin:var(--layout-gap) auto 0 !important;
padding:0 0 var(--layout-gap) !important;
}

.content-wrapper {
margin:var(--layout-gap) auto 0 !important;
padding:0 !important;
display:grid !important;
grid-template-columns:var(--layout-side-w) minmax(0, 1fr) var(--layout-side-w) !important;
gap:var(--layout-gap) !important;
align-items:stretch !important;
justify-content:stretch !important;
height:calc(100vh - var(--clbi-top-nav-outer-h, 47px) - var(--clbi-bottom-nav-outer-h, 47px) - var(--layout-gap-double, 16px)) !important;
min-height:0 !important;
max-height:calc(100vh - var(--clbi-top-nav-outer-h, 47px) - var(--clbi-bottom-nav-outer-h, 47px) - var(--layout-gap-double, 16px)) !important;
overflow:visible !important;
}

#clbi-left-sidebar {
grid-column:1;
grid-row:1;
}

.container-fluid.liberty-content {
grid-column:2;
grid-row:1;
padding-bottom:0 !important;
margin:0 !important;
flex:none !important;
width:auto !important;
/*
Liberty/Bootstrap의 중앙 content 래퍼는 grid 행 안에서 height:100%를 잡아도
실제 wrapper 높이보다 14px 짧게 계산된다. 이 14px은 화면에 보이는
본문 컨테이너 하단 ↔ 하단 네비 사이의 추가 빈공간으로 나타난다.
좌우 사이드바나 외부 셸을 건드리지 않고 중앙 래퍼만 보정한다.
*/
height:calc(100% + 14px) !important;
max-height:calc(100% + 14px) !important;
max-width:none !important;
min-width:0 !important;
min-height:0 !important;
border:none !important;
box-shadow:none !important;
border-radius:0 !important;
background:transparent !important;
display:flex !important;
flex-direction:column !important;
}

#clbi-right-sidebar {
grid-column:3;
grid-row:1;
}

/* 줌/축소 화면에서도 좌우 사이드바를 문서 폭에 포함시키기 위해
   사이드바 숨김 반응형 규칙은 제거한다. */


/* -----------------------------------------
2-A. CLBI shell visibility safety
----------------------------------------- */

/*
If a browser/user stylesheet or Liberty wrapper gives .content-wrapper a negative
stacking order, the generated shell can exist in the DOM while only the
background is visible.  The CLBI shell parts must sit above the halftone canvas.
*/

#clbi-top-nav-wrap,
.content-wrapper,
#clbi-bottom-nav-wrap {
position:relative !important;
z-index:1 !important;
}

body.clbi-shell-ready #clbi-top-nav-wrap,
body.clbi-shell-ready .content-wrapper,
body.clbi-shell-ready #clbi-bottom-nav-wrap {
visibility:visible !important;
opacity:1 !important;
}


/* -----------------------------------------
2-B. 세로 가변 셸 / 좌측 최근 변경 적응형
----------------------------------------- */

/*
상하단 네비는 고정된 조작 패널로 유지한다.
브라우저 세로 높이가 작아지면 가운데 content-wrapper만 줄어든다.

좌측 뉴스 박스는 기본 상태에서 원래 내용 높이만 차지한다.
세로 공간이 부족할 때만 JS가 최근 변경 항목 수를 줄인다.
*/

@supports (height: 100dvh) {
body {
height:100dvh !important;
}

.content-wrapper {
height:calc(100dvh - var(--clbi-top-nav-outer-h, 47px) - var(--clbi-bottom-nav-outer-h, 47px) - var(--layout-gap-double, 16px)) !important;
max-height:calc(100dvh - var(--clbi-top-nav-outer-h, 47px) - var(--clbi-bottom-nav-outer-h, 47px) - var(--layout-gap-double, 16px)) !important;
}
}

#clbi-left-sidebar,
#clbi-right-sidebar {
max-height:100% !important;
min-height:0 !important;
}

#clbi-left-sidebar {
align-self:flex-start !important;
overflow:hidden !important;
}

#clbi-right-sidebar {
align-self:flex-start !important;
overflow-y:auto !important;
overflow-x:hidden !important;
}

#clbi-left-sidebar .clbi-left-lang-box,
#clbi-left-sidebar .clbi-left-news-box {
flex:0 0 auto !important;
}

#clbi-left-sidebar .clbi-left-news-box {
min-height:0 !important;
overflow:hidden !important;
}

#clbi-left-sidebar .clbi-news-box {
min-height:0 !important;
overflow:hidden !important;
}

#clbi-left-sidebar .news-left-recent-feed {
min-height:0 !important;
overflow:hidden !important;
}

.news-recent-item.is-adaptive-hidden {
display:none !important;
}


/* -----------------------------------------
2-C. CLBI shell host flow correction
----------------------------------------- */

/*
When Liberty wraps the generated CLBI shell inside a <section>, that wrapper can
produce overlap between the top nav and content-wrapper.  The DOM order is
already correct, so the host itself must be forced into a plain vertical flow.
*/

.clbi-shell-host {
display:flex !important;
flex-direction:column !important;
align-items:stretch !important;
justify-content:flex-start !important;
gap:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
position:relative !important;
z-index:1 !important;
}

.clbi-shell-host > #clbi-top-nav-wrap,
.clbi-shell-host > .content-wrapper,
.clbi-shell-host > #clbi-bottom-nav-wrap {
flex:0 0 auto !important;
}

.clbi-shell-host > .content-wrapper {
margin-top:var(--layout-gap) !important;
}

.clbi-shell-host > #clbi-bottom-nav-wrap {
margin-top:var(--layout-gap) !important;
}


/*
Liberty skin can leave relative offsets on .content-wrapper.
Once CLBI wraps the shell in .clbi-shell-host, those offsets must be neutralized
or the content row overlaps the top nav by 16px.
*/
.clbi-shell-host > .content-wrapper,
.content-wrapper {
top:0 !important;
bottom:auto !important;
transform:none !important;
}


#clbi-top-nav-wrap,
#clbi-bottom-nav-wrap {
top:0 !important;
bottom:auto !important;
transform:none !important;
}

/* -----------------------------------------
3. 본문 컨테이너
----------------------------------------- */

/*
본문 컨테이너는 바깥 장비 프레임과 내부 우물로 분리한다.
- .liberty-content는 투명 래퍼로 유지한다.
- .liberty-content-main은 외곽 프레임이다.
- .mw-parser-output은 실제 본문이 놓이는 내부 우물이다.
- 외곽과 본문 사이의 기본 간격은 8px이다.
*/

.liberty-content-main,
.Liberty .content-wrapper .liberty-content .liberty-content-main,
.liberty-content-main {
position:relative !important;
box-sizing:border-box !important;
height:100% !important;
min-height:0 !important;
background:#1d1d1d !important;
border:1px solid #050505 !important;
border-radius:0 !important;
padding:8px !important;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010,
0 6px 18px rgba(0,0,0,0.34) !important;
overflow:hidden !important;
display:flex !important;
flex-direction:column !important;
}

.liberty-content-main .mw-parser-output {
position:relative !important;
box-sizing:border-box !important;
flex:1 1 auto !important;
height:auto !important;
min-height:0 !important;
margin:0 !important;
padding:8px !important;
background:#080808 !important;
border:0 !important;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555 !important;
overflow-y:auto !important;
overflow-x:hidden !important;
}


.liberty-content-main .mw-parser-output,
#clbi-left-sidebar,
#clbi-right-sidebar {
scrollbar-width:thin;
scrollbar-color:#333333 #080808;
}

/* 제목이 유지되는 관리/시스템 문서는 제목 영역과 본문 우물 사이에 8px 간격을 둔다. */
body.page-title-visible .liberty-content-header + .mw-parser-output,
body.backend-system-page .liberty-content-header + .mw-parser-output {
margin-top:8px !important;
}

/* title을 숨긴 일반 문서는 내부 우물이 바로 본문 시작점이 된다. */
body.page-title-hidden .liberty-content-header + .mw-parser-output,
body.anecdote-namespace-page .liberty-content-header + .mw-parser-output {
margin-top:0 !important;
}

.liberty-content {
border:none !important;
box-shadow:none !important;
border-radius:0 !important;
background:transparent !important;
}

/* -----------------------------------------
4. 본문 헤더
----------------------------------------- */

.liberty-content-header {
background:transparent !important;
box-shadow:none !important;
border:none !important;
display:flex !important;
align-items:flex-end !important;
justify-content:space-between !important;
padding:0 !important;
height:auto !important;
min-height:0 !important;
border-radius:0 !important;
}

.liberty-content-header .content-tools {
display:none !important;
order:2 !important;
flex-shrink:0 !important;
padding-top:0 !important;
padding-right:0 !important;
}

.liberty-content-header .title {
order:1 !important;
flex:1 !important;
display:flex !important;
align-items:flex-end !important;
margin:0 !important;
padding:0 !important;
}

.liberty-content-header h1 {
margin:0 !important;
padding:0 !important;
}

.liberty-content-header .contentSub {
display:none !important;
}


/* 일반 문서에서는 기본 제목 영역을 숨긴다.
   CSS/JS/JSON, MediaWiki, 특수문서, 틀, 파일, 분류 같은 시스템 문서는
   Common.js가 body.backend-system-page를 부여하므로 제목을 유지한다. */
body.page-title-hidden .liberty-content-header,
body.page-title-hidden .liberty-content-header .title,
body.page-title-hidden .liberty-content-header .title h1 {
display:none !important;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}

body.page-title-hidden .mw-page-title-main,
body.page-title-hidden .mw-page-title-main::after,
body.page-title-hidden .mw-page-title-namespace,
body.page-title-hidden .mw-page-title-namespace::after,
body.page-title-hidden .mw-page-title-separator,
body.page-title-hidden .mw-page-title-separator::after,
body.page-title-hidden .liberty-content-header .title,
body.page-title-hidden .liberty-content-header h1,
body.page-title-hidden #firstHeading,
body.page-title-hidden .firstHeading,
body.page-title-hidden .mw-first-heading,
body.page-title-hidden .page-heading,
body.page-title-hidden .page-header {
display:none !important;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}


/* Anecdote 네임스페이스도 작품/회차 일반 문서 계열로 본다.
   감상 모드 여부와 관계없이 MediaWiki 기본 제목은 숨기고,
   뷰어 내부 제목과 작품 허브 내부 제목만 사용한다. */
body.anecdote-namespace-page .liberty-content-header,
body.anecdote-namespace-page .liberty-content-header .title,
body.anecdote-namespace-page .liberty-content-header .title h1,
body.anecdote-namespace-page .mw-page-title-main,
body.anecdote-namespace-page .mw-page-title-main::after,
body.anecdote-namespace-page .mw-page-title-namespace,
body.anecdote-namespace-page .mw-page-title-namespace::after,
body.anecdote-namespace-page .mw-page-title-separator,
body.anecdote-namespace-page .mw-page-title-separator::after,
body.anecdote-namespace-page #firstHeading,
body.anecdote-namespace-page .firstHeading,
body.anecdote-namespace-page .mw-first-heading,
body.anecdote-namespace-page .page-heading,
body.anecdote-namespace-page .page-header {
display:none !important;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}


/* action-view fallback: 일반 열람 문서는 JS 재적용 타이밍과 무관하게 기본 제목을 숨긴다.
   backend/system 문서는 Common.js가 body.backend-system-page를 붙여 제목을 유지한다. */
body.action-view:not(.backend-system-page) .liberty-content-header,
body.action-view:not(.backend-system-page) .liberty-content-header .title,
body.action-view:not(.backend-system-page) .liberty-content-header .title h1,
body.action-view:not(.backend-system-page) .liberty-content-header h1,
body.action-view:not(.backend-system-page) .mw-page-title-main,
body.action-view:not(.backend-system-page) .mw-page-title-main::after,
body.action-view:not(.backend-system-page) .mw-page-title-namespace,
body.action-view:not(.backend-system-page) .mw-page-title-namespace::after,
body.action-view:not(.backend-system-page) .mw-page-title-separator,
body.action-view:not(.backend-system-page) .mw-page-title-separator::after,
body.action-view:not(.backend-system-page) #firstHeading,
body.action-view:not(.backend-system-page) .firstHeading,
body.action-view:not(.backend-system-page) .mw-first-heading,
body.action-view:not(.backend-system-page) .page-heading,
body.action-view:not(.backend-system-page) .page-header {
display:none !important;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}

body.action-view:not(.backend-system-page) .liberty-content-header + .mw-parser-output {
margin-top:0 !important;
}


/* 대문 title hard fallback
   Theme.css가 뒤에서 .mw-page-title-main을 다시 보이게 하더라도
   대문 열람 화면에서는 MediaWiki 기본 제목을 강제로 숨긴다. */
body.action-view.page-대문 .liberty-content-header,
body.action-view.page-대문 .liberty-content-header .title,
body.action-view.page-대문 .liberty-content-header .title h1,
body.action-view.page-대문 .liberty-content-header h1,
body.action-view.page-대문 .mw-page-title-main,
body.action-view.page-대문 .mw-page-title-main::after,
body.action-view.page-대문 .mw-page-title-namespace,
body.action-view.page-대문 .mw-page-title-namespace::after,
body.action-view.page-대문 .mw-page-title-separator,
body.action-view.page-대문 .mw-page-title-separator::after,
body.action-view.page-대문 #firstHeading,
body.action-view.page-대문 .firstHeading,
body.action-view.page-대문 .mw-first-heading,
body.action-view.page-대문 .page-heading,
body.action-view.page-대문 .page-header,
body.action-view.rootpage-대문 .liberty-content-header,
body.action-view.rootpage-대문 .liberty-content-header .title,
body.action-view.rootpage-대문 .liberty-content-header .title h1,
body.action-view.rootpage-대문 .liberty-content-header h1,
body.action-view.rootpage-대문 .mw-page-title-main,
body.action-view.rootpage-대문 .mw-page-title-main::after,
body.action-view.rootpage-대문 .mw-page-title-namespace,
body.action-view.rootpage-대문 .mw-page-title-namespace::after,
body.action-view.rootpage-대문 .mw-page-title-separator,
body.action-view.rootpage-대문 .mw-page-title-separator::after,
body.action-view.rootpage-대문 #firstHeading,
body.action-view.rootpage-대문 .firstHeading,
body.action-view.rootpage-대문 .mw-first-heading,
body.action-view.rootpage-대문 .page-heading,
body.action-view.rootpage-대문 .page-header {
display:none !important;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}

body.action-view.page-대문 .liberty-content-header + .mw-parser-output,
body.action-view.rootpage-대문 .liberty-content-header + .mw-parser-output {
margin-top:0 !important;
}

/* 문서 조작 버튼은 DevTools의 DOCUMENT TOOLS로 이동한다. */
.liberty-content-header .content-tools,
.content-tools {
display:none !important;
}


/* -----------------------------------------
4-A. MediaWiki CSS/JS 문서 표시
----------------------------------------- */

/*
CSS/JS 시스템 문서는 기본 제목을 숨기고 우상단 문서 표식과 raw source viewer를 사용한다.

중요 구조:
- .liberty-content-main : 외곽 #1d1d1d 프레임
- #mw-content-text/.mw-body-content : MediaWiki가 끼워 넣는 중간 래퍼
- .mw-parser-output : 내부 #080808 우물
- #clbi-system-source-viewer : 우물 안에서 남은 높이를 차지하는 스크롤 패널

이 중간 래퍼를 채우지 않으면 .mw-parser-output이 내용 높이로 접히고,
코드 영역이 얇은 줄처럼 보인다.
*/

body.clbi-system-doc-page .liberty-content-main {
position:relative !important;
height:100% !important;
min-height:0 !important;
overflow:hidden !important;
display:flex !important;
flex-direction:column !important;
}

body.clbi-system-doc-page #mw-content-text,
body.clbi-system-doc-page .mw-body-content {
position:relative !important;
box-sizing:border-box !important;
flex:1 1 auto !important;
height:auto !important;
min-height:0 !important;
max-height:none !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
display:flex !important;
flex-direction:column !important;
}

body.clbi-system-doc-page .liberty-content-main .mw-parser-output {
position:relative !important;
box-sizing:border-box !important;
flex:1 1 auto !important;
height:auto !important;
min-height:0 !important;
max-height:none !important;
margin:0 !important;
padding:8px !important;
background:#080808 !important;
border:0 !important;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555 !important;
overflow:hidden !important;
display:flex !important;
flex-direction:column !important;
}

body.clbi-system-doc-page .liberty-content-main .mw-parser-output > :not(#clbi-system-source-viewer):not(#clbi-system-doc-indicator-row) {
flex:0 0 auto !important;
}

body.clbi-system-doc-page .clbi-system-original-source-hidden {
display:none !important;
}

body.clbi-system-doc-page #clbi-system-source-viewer {
display:block !important;
box-sizing:border-box !important;
flex:1 1 0 !important;
width:100% !important;
max-width:none !important;
min-width:0 !important;
height:auto !important;
min-height:0 !important;
max-height:none !important;
margin:8px 0 0 !important;
padding:8px 10px !important;
overflow:auto !important;
background:#f3f6f7 !important;
color:#111111 !important;
border:0 !important;
outline:none !important;
font-family:Consolas, Monaco, 'Courier New', monospace !important;
font-size:12px !important;
line-height:1.45 !important;
white-space:pre !important;
tab-size:4;
scrollbar-gutter:stable;
}

body.clbi-system-doc-page .clbi-system-doc-codepane,
body.clbi-system-doc-page .clbi-system-doc-codebox {
display:none !important;
}

.clbi-system-doc-indicator-row {
position:absolute !important;
top:8px !important;
right:8px !important;
z-index:40 !important;
width:auto !important;
max-width:calc(100% - 16px) !important;
height:auto !important;
margin:0 !important;
padding:0 !important;
display:block !important;
pointer-events:none !important;
}

.clbi-system-doc-indicator {
display:block !important;
width:max-content !important;
max-width:520px !important;
box-sizing:border-box !important;
padding:5px 8px 6px !important;
background:#171717 !important;
border:1px solid #050505 !important;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010 !important;
overflow:hidden !important;
}

.clbi-system-doc-meta {
display:flex !important;
justify-content:flex-end !important;
align-items:center !important;
gap:7px !important;
margin:0 0 3px 0 !important;
font-size:10px !important;
line-height:1 !important;
letter-spacing:0.08em !important;
text-transform:uppercase !important;
color:#8a8a8a !important;
white-space:nowrap !important;
}

.clbi-system-doc-label {
color:#8a8a8a !important;
font-weight:700 !important;
}

.clbi-system-doc-type {
display:inline-flex !important;
align-items:center !important;
height:14px !important;
padding:0 5px !important;
background:#0d0d0d !important;
border:1px solid #202020 !important;
color:#c8c8c8 !important;
font-weight:700 !important;
}

.clbi-system-doc-title {
display:block !important;
max-width:500px !important;
text-align:right !important;
font-size:24px !important;
line-height:1 !important;
font-weight:900 !important;
letter-spacing:0.01em !important;
color:#e2e2e2 !important;
text-shadow:0 1px 0 rgba(0,0,0,0.78) !important;
white-space:nowrap !important;
word-break:normal !important;
overflow:hidden !important;
text-overflow:ellipsis !important;
}

body.clbi-system-doc-page .liberty-content-header,
body.clbi-system-doc-page .liberty-content-header .title,
body.clbi-system-doc-page .liberty-content-header .title h1,
body.clbi-system-doc-page .liberty-content-header h1,
body.clbi-system-doc-page .mw-page-title-main,
body.clbi-system-doc-page .mw-page-title-main::after,
body.clbi-system-doc-page .mw-page-title-namespace,
body.clbi-system-doc-page .mw-page-title-namespace::after,
body.clbi-system-doc-page .mw-page-title-separator,
body.clbi-system-doc-page .mw-page-title-separator::after,
body.clbi-system-doc-page #firstHeading,
body.clbi-system-doc-page .firstHeading,
body.clbi-system-doc-page .mw-first-heading,
body.clbi-system-doc-page .page-heading,
body.clbi-system-doc-page .page-header {
display:none !important;
visibility:hidden !important;
height:0 !important;
min-height:0 !important;
margin:0 !important;
padding:0 !important;
overflow:hidden !important;
}

body.clbi-system-doc-page .liberty-content-header + .mw-parser-output {
margin-top:0 !important;
}

/* -----------------------------------------
5. 페이지 전환 피드백
----------------------------------------- */

body::after {
content:'';
position:fixed;
inset:0;
background:rgba(0,0,0,0);
transition:background 0.2s ease, opacity 0.2s ease;
opacity:0;
pointer-events:none;
z-index:99999;
}

body.page-loading::after {
background:rgba(0,0,0,0.5);
opacity:1;
}

/* -----------------------------------------
6. 좌우 사이드바 공통
----------------------------------------- */

#clbi-left-sidebar,
#clbi-right-sidebar {
position:relative;
width:230px;
z-index:1000;
display:flex;
flex-direction:column;
gap:8px;
padding:0;
flex-shrink:0;
align-self:flex-start;
max-height:100%;
overflow-y:auto;
overflow-x:hidden;
}

.clbi-left-box,
.clbi-right-box {
position:relative;
box-sizing:border-box;
background:#1d1d1d;
border:1px solid #050505;
border-radius:0;
overflow:hidden;
padding:0 8px 8px;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010,
0 6px 18px rgba(0,0,0,0.34);
}

.clbi-left-title,
.clbi-right-title {
min-height:34px;
padding:0 2px;
font-weight:700;
font-size:12px;
color:#e2e2e2;
border:0;
background:transparent;
display:flex;
align-items:center;
gap:6px;
line-height:1;
text-shadow:1px 1px 0 #000;
box-shadow:none;
}

.clbi-left-content,
.clbi-right-content {
margin:0;
padding:8px;
box-sizing:border-box;
color:#c8c8c8;
font-size:12px;
line-height:1.65;
background:#080808;
border:0;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}

.clbi-right-content a,
.clbi-left-content a {
color:#c8c8c8 !important;
text-decoration:none;
display:block;
}

.clbi-right-content a:not(.clbi-user-btn):hover,
.clbi-left-content a:not(.clbi-user-btn):hover {
color:#ffffff !important;
}

/* -----------------------------------------
7. 유저 박스
----------------------------------------- */

.profile-card-box {
position:relative;
overflow:hidden;
background:#101010;
}

#clbi-user-avatar-wrap,
#clbi-user-avatar-wrap.profile-identity-panel {
position:relative;
display:block;
min-height:180px;
margin:0;
padding:0 8px;
background:#1d1d1d;
border:none;
border-bottom:1px solid #202020;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.050),
inset 0 -1px 0 rgba(0,0,0,0.70);
}

.profile-avatar-stage {
position:absolute;
left:50%;
top:50%;
transform:translate(-50%, -50%);
width:104px;
height:104px;
display:flex;
align-items:center;
justify-content:center;
box-sizing:border-box;
background:#141414;
border:1px solid;
border-color:
#2b2b2b
#202020
#101010
#202020;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.018),
inset 0 -1px 0 rgba(0,0,0,0.42);
}

.profile-avatar-stage::before {
content:"";
position:absolute;
left:7px;
right:7px;
top:7px;
height:1px;
background:rgba(255,255,255,0.026);
pointer-events:none;
}

.profile-avatar-stage::after {
content:"";
position:absolute;
inset:0;
pointer-events:none;
box-shadow:
inset 1px 0 0 rgba(255,255,255,0.006),
inset -1px 0 0 rgba(0,0,0,0.16);
}

#clbi-user-avatar {
position:relative;
z-index:1;
display:block;
width:90px;
height:90px;
object-fit:cover;
background:#070707;
border:1px solid #101010;
box-shadow:
0 0 0 1px rgba(255,255,255,0.012);
}

#clbi-user-name {
max-width:100%;
margin-top:0;
color:#e2e2e2;
font-size:14px;
font-weight:700;
line-height:1.2;
text-align:center;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
text-shadow:1px 1px 0 #000;
}

#clbi-user-name-row,
#clbi-user-name-row.profile-name-row {
position:absolute;
left:8px;
right:8px;
top:calc(50% + 52px);
bottom:0;
width:auto;
margin:0;
min-height:0;
line-height:1.2;
text-align:center;
display:flex;
align-items:center;
justify-content:center;
}

#clbi-user-name-row.profile-name-row-guest {
display:flex;
align-items:center;
justify-content:center;
}

#clbi-user-name-row #clbi-user-name {
display:inline-block;
max-width:100%;
margin-top:0;
vertical-align:middle;
color:#e2e2e2 !important;
text-decoration:none !important;
}

#clbi-user-name-row.profile-name-row-guest #clbi-user-name {
max-width:100%;
}

.profile-svg {
display:block;
width:100%;
height:100%;
stroke:currentColor;
fill:none;
vertical-align:middle;
}

.clbi-svg-nav-icon {
display:flex !important;
align-items:center;
justify-content:center;
color:#e2e2e2;
line-height:1;
}

.clbi-svg-nav-icon .profile-svg {
width:22px;
height:22px;
}

.sidebar-title-svg {
display:inline-flex;
align-items:center;
justify-content:center;
width:16px;
height:16px;
flex:0 0 16px;
color:#e2e2e2 !important;
line-height:1;
}

.sidebar-title-svg .profile-svg {
width:16px;
height:16px;
}

.profile-action-icon {
position:relative;
top:0;
display:inline-flex;
align-items:center;
justify-content:center;
width:15px;
height:15px;
color:#8a8a8a;
pointer-events:none;
line-height:1;
}

.profile-action-icon .profile-svg {
width:15px;
height:15px;
}

.profile-action-box .clbi-user-btn:hover .profile-action-icon,
.profile-action-box .clbi-user-btn.clbi-user-btn-active .profile-action-icon {
color:#ffffff;
}

.profile-action-box .clbi-user-btn-logout .profile-action-icon {
color:#8b5f59;
}

.profile-action-box .clbi-user-btn-logout:hover .profile-action-icon {
color:#e0a199;
}



.news-title-icon.sidebar-title-svg {
display:inline-flex;
align-items:center;
justify-content:center;
width:16px;
height:16px;
line-height:1;
color:#e2e2e2 !important;
flex:0 0 16px;
vertical-align:middle;
}

.news-title-icon.sidebar-title-svg .profile-svg {
width:16px;
height:16px;
display:block;
}

.profile-quick-actions {
position:relative;
display:grid;
grid-template-columns:repeat(3, minmax(0, 1fr));
gap:4px;
margin:0 0 8px;
overflow:visible;
z-index:2;
}

.profile-quick-btn {
position:relative;
display:flex;
align-items:center;
justify-content:center;
width:100%;
aspect-ratio:1 / 1;
min-width:0;
min-height:0;
padding:0;
box-sizing:border-box;
background:
linear-gradient(to bottom, #141414 0%, #101010 54%, #0c0c0c 100%);
border:1px solid;
border-color:
#333333
#202020
#181818
#202020;
color:#c8c8c8;
cursor:pointer;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040);
text-shadow:1px 1px 0 #000;
}

.profile-quick-btn:hover {
background:
linear-gradient(to bottom, #1d1d1d 0%, #171717 54%, #101010 100%);
border-color:
#444444
#333333
#202020
#333333;
color:#ffffff;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.060),
0 0 0 1px rgba(255,255,255,0.018);
}

.profile-quick-btn:active {
background:
linear-gradient(to bottom, #0b0b0b 0%, #101010 55%, #171717 100%);
border-color:
#050505
#202020
#333333
#202020;
box-shadow:
inset 1px 1px 3px rgba(0,0,0,0.82),
inset -1px -1px 0 rgba(255,255,255,0.035);
}

.profile-quick-icon {
display:flex;
align-items:center;
justify-content:center;
width:22px;
height:22px;
line-height:1;
color:currentColor;
pointer-events:none;
}

.profile-quick-icon .profile-svg {
display:block;
width:22px;
height:22px;
}

.profile-quick-tip {
position:absolute;
left:50%;
top:calc(100% + 4px);
z-index:40;
min-width:42px;
padding:3px 6px 4px;
box-sizing:border-box;
background:#101010;
border:1px solid;
border-color:
#555555
#2b2b2b
#050505
#2b2b2b;
color:#e2e2e2;
font-size:9px;
font-weight:700;
line-height:1;
white-space:nowrap;
text-align:center;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.035),
inset 0 -1px 0 rgba(0,0,0,0.70),
0 4px 10px rgba(0,0,0,0.44);
visibility:hidden;
opacity:0;
transform:translate(-50%, -1px);
pointer-events:none;
}

.profile-quick-btn:hover .profile-quick-tip,
.profile-quick-btn:focus-visible .profile-quick-tip {
visibility:visible;
opacity:1;
transform:translate(-50%, 0);
}

/* -----------------------------------------
9. 유저 버튼
----------------------------------------- */

.clbi-user-btn-grid {
display:grid;
grid-template-columns:1fr;
gap:4px;
}

.profile-divider {
height:1px;
margin:9px 7px;
background:#202020;
box-shadow:
0 1px 0 rgba(255,255,255,0.018);
}

.profile-action-box {
position:relative;
margin:0 7px 7px;
padding:3px !important;
overflow:visible;
background:#080808;
border:1px solid;
border-color:
#333333
#202020
#050505
#202020;
box-sizing:border-box;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.020),
inset 0 -1px 0 rgba(0,0,0,0.58);
}

.profile-action-box .clbi-user-btn {
position:relative;
display:grid !important;
grid-template-columns:15px minmax(0,1fr) 12px !important;
column-gap:7px !important;
align-items:center !important;
justify-content:stretch !important;
width:100% !important;
min-height:26px !important;
height:26px !important;
margin:0 0 4px !important;
padding:0 7px !important;
box-sizing:border-box !important;
background:
linear-gradient(to bottom, #141414 0%, #101010 54%, #0c0c0c 100%) !important;
border:1px solid !important;
border-color:
#333333
#202020
#181818
#202020 !important;
color:#c8c8c8 !important;
font-size:11px !important;
font-weight:700 !important;
line-height:1 !important;
text-align:left !important;
text-decoration:none !important;
text-shadow:1px 1px 0 #000 !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040) !important;
overflow:hidden !important;
}

.profile-action-box .clbi-user-btn:last-child {
margin-bottom:0 !important;
}

.profile-action-label {
display:flex;
align-items:center;
min-width:0;
height:100%;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
line-height:1;
}

.profile-action-arrow {
position:relative;
top:0;
display:inline-flex;
align-items:center;
justify-content:center;
justify-self:end;
width:12px;
height:12px;
color:#8a8a8a;
font-size:11px;
line-height:1;
pointer-events:none;
}

.profile-action-box .clbi-user-btn:hover {
background:
linear-gradient(to bottom, #1d1d1d 0%, #171717 54%, #101010 100%) !important;
border-color:
#444444
#333333
#202020
#333333 !important;
color:#ffffff !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.060),
0 0 0 1px rgba(255,255,255,0.018) !important;
}

.profile-action-box .clbi-user-btn:hover .profile-action-arrow {
color:#ffffff;
}

.profile-action-box .clbi-user-btn:active {
background:
linear-gradient(to bottom, #0b0b0b 0%, #101010 55%, #171717 100%) !important;
border-color:
#050505
#202020
#333333
#202020 !important;
box-shadow:
inset 1px 1px 3px rgba(0,0,0,0.82),
inset -1px -1px 0 rgba(255,255,255,0.035) !important;
}

.profile-action-box .clbi-user-btn-logout {
color:#c88a80 !important;
border-color:
#3f3f3f
#2a2020
#181010
#2a2020 !important;
}

.profile-action-box .clbi-user-btn-logout .profile-action-arrow {
color:#8b5f59;
}

.profile-action-box .clbi-user-btn-logout:hover {
background:
linear-gradient(to bottom, #241615 0%, #1b1110 56%, #100908 100%) !important;
border-color:
#6a3933
#3f2623
#181010
#3f2623 !important;
color:#e0a199 !important;
}

.profile-action-box .clbi-user-btn-logout:hover .profile-action-arrow {
color:#e0a199;
}

.profile-action-box .clbi-user-btn.clbi-user-btn-active {
background:
linear-gradient(to bottom, #242424 0%, #1d1d1d 55%, #141414 100%) !important;
border-color:
#555555
#333333
#202020
#333333 !important;
color:#ffffff !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.070),
inset 0 -1px 0 rgba(0,0,0,0.62),
0 0 0 1px rgba(255,255,255,0.022) !important;
}

.profile-action-box .clbi-user-btn.clbi-user-btn-active .profile-action-arrow {
color:#ffffff;
}

/* 기본 유저 버튼: 프로필 액션 박스 밖에서는 기존 사이드 버튼 문법 유지 */
.clbi-user-btn {
display:flex !important;
align-items:center !important;
justify-content:center !important;
height:24px !important;
padding:0 6px !important;
margin:0 !important;
border-radius:0 !important;
font-size:11px !important;
font-weight:700 !important;
line-height:1 !important;
color:#c8c8c8 !important;
text-decoration:none !important;
text-align:center !important;
background:#141414 !important;
border:1px solid #202020 !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.035),
inset 0 -1px 0 rgba(0,0,0,0.65) !important;
text-shadow:1px 1px 0 #000 !important;
box-sizing:border-box !important;
}

.clbi-user-btn:hover {
background:#202020 !important;
border-color:#333333 !important;
color:#ffffff !important;
}

.clbi-user-btn-logout {
border-color:#3f2623 !important;
color:#c88a80 !important;
}

.clbi-user-btn-logout:hover {
background:#1b1110 !important;
border-color:#6a3933 !important;
color:#e0a199 !important;
}

.clbi-user-btn.clbi-user-btn-active {
background:#242424 !important;
border-color:#555555 !important;
color:#ffffff !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.055),
inset 0 -1px 0 rgba(0,0,0,0.75) !important;
}

/* -----------------------------------------
9.4 우측 광고판 Ad(not really)
----------------------------------------- */

.right-billboard-box {
position:relative;
background:#1d1d1d;
overflow:visible;
}

.right-billboard-title {
justify-content:flex-start;
background:transparent;
border:0;
box-shadow:none;
gap:4px;
}

.right-billboard-title-text {
display:inline-flex;
align-items:center;
gap:4px;
min-width:0;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}

.right-billboard-title-main,
.right-billboard-title-note {
display:inline-block;
min-width:0;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}

.right-billboard-title-note {
opacity:.20;
}

.right-billboard-body {
position:relative;
margin:0;
padding:7px;
box-sizing:border-box;
background:#080808;
border:0;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
overflow:visible;
}

.right-billboard-recess {
position:relative;
height:auto;
min-height:0;
box-sizing:border-box;
padding:8px;
background:
linear-gradient(145deg, #050505 0%, #090909 45%, #030303 100%);
border:1px solid;
border-color:#202020 #101010 #050505 #101010;
box-shadow:
inset 0 9px 18px rgba(0,0,0,0.96),
inset 0 -2px 3px rgba(255,255,255,0.024),
inset 7px 0 16px rgba(0,0,0,0.88),
inset -7px 0 16px rgba(0,0,0,0.88),
0 0 0 1px rgba(255,255,255,0.018);
overflow:hidden;
}

.right-billboard-recess::before {
content:"";
position:absolute;
inset:0;
z-index:0;
pointer-events:none;
opacity:.10;
background:
linear-gradient(to bottom, rgba(255,255,255,0.08) 0%, transparent 20%, transparent 100%),
linear-gradient(to right, rgba(255,255,255,0.04) 0%, transparent 22%, transparent 100%);
mix-blend-mode:screen;
}

.right-billboard-screen {
position:relative;
z-index:1;
width:100%;
height:352px;
min-height:352px;
display:block;
line-height:0;
overflow:hidden;
background:#050505;
border:1px solid #060606;
border-radius:7px / 13px;
box-shadow:
inset 0 0 16px rgba(0,0,0,0.90),
inset 0 0 38px rgba(0,0,0,0.74),
0 0 0 1px rgba(255,255,255,0.026);
}

.right-billboard-image {
border:0;
background:#050505;
}

.right-billboard-image-base {
position:relative;
z-index:3;
display:block;
width:100%;
height:100%;
max-width:100%;
max-height:none;
object-fit:cover;
object-position:center center;
filter:
brightness(0.84)
contrast(1.08)
saturate(0.90);
transform:none;
transform-origin:center center;
}

.right-billboard-image-bloom,
.right-billboard-slice {
position:absolute;
inset:0;
display:block;
width:100%;
height:100%;
max-width:none;
max-height:none;
object-fit:cover;
object-position:center center;
border:0;
background:transparent;
}

.right-billboard-image-bloom {
z-index:4;
pointer-events:none;
opacity:.36;
mix-blend-mode:normal;
filter:
blur(7px)
brightness(0.92)
contrast(1.02)
saturate(1.04);
transform:scale(1.015);
transform-origin:center center;
}

.right-billboard-slice {
z-index:5;
opacity:0;
pointer-events:none;
mix-blend-mode:screen;
filter:
brightness(0.96)
contrast(1.18)
saturate(0.82);
transform:scale(1.035);
transform-origin:center center;
will-change:transform, opacity, clip-path, filter;
}

.right-billboard-slice-a {
animation:right-billboard-slice-tear-a 4.7s steps(1,end) infinite;
}

.right-billboard-slice-b {
animation:right-billboard-slice-tear-b 6.1s steps(1,end) infinite;
}

.right-billboard-slice-c {
animation:right-billboard-slice-tear-c 7.4s steps(1,end) infinite;
}

.right-billboard-screen::before {
content:"";
position:absolute;
inset:0;
z-index:20;
pointer-events:none;
border-radius:7px / 13px;
background:
radial-gradient(
ellipse at 50% 50%,
transparent 0%,
transparent 60%,
rgba(0,0,0,0.18) 78%,
rgba(0,0,0,0.46) 100%
),
linear-gradient(
to bottom,
rgba(0,0,0,0.18) 0%,
transparent 15%,
transparent 82%,
rgba(0,0,0,0.26) 100%
),
linear-gradient(
to right,
rgba(0,0,0,0.20) 0%,
transparent 9%,
transparent 91%,
rgba(0,0,0,0.20) 100%
),
linear-gradient(
105deg,
transparent 0%,
rgba(255,255,255,0.030) 18%,
transparent 38%,
transparent 100%
);
box-shadow:
inset 0 0 20px rgba(255,255,255,0.018),
inset 0 0 48px rgba(0,0,0,0.56);
}

.right-billboard-screen::after {
content:"";
position:absolute;
inset:-70px 0;
z-index:21;
pointer-events:none;
opacity:.20;
background:
repeating-linear-gradient(
to bottom,
rgba(255,255,255,0.080) 0px,
rgba(255,255,255,0.080) 1px,
transparent 2px,
transparent 5px
);
mix-blend-mode:screen;
animation:right-billboard-scanlines-up 7s linear infinite;
}

.right-billboard-glitch {
position:absolute;
inset:0;
z-index:22;
pointer-events:none;
opacity:0;
background:
linear-gradient(
to bottom,
transparent 0%,
rgba(255,255,255,0.12) 48%,
rgba(212,90,162,0.14) 50%,
rgba(90,120,255,0.08) 52%,
transparent 56%
);
mix-blend-mode:screen;
animation:right-billboard-soft-glitch-band 8.2s steps(1,end) infinite;
}

.right-billboard-tear {
position:absolute;
inset:0;
z-index:23;
pointer-events:none;
opacity:0;
background:
linear-gradient(
to right,
transparent 0%,
rgba(120,180,255,0.07) 10%,
rgba(255,255,255,0.11) 48%,
rgba(212,90,162,0.08) 78%,
transparent 100%
);
mix-blend-mode:screen;
animation:right-billboard-soft-horizontal-tear 5.6s steps(1,end) infinite;
}

.right-billboard-empty {
position:absolute;
inset:0;
z-index:8;
display:none;
flex-direction:column;
align-items:center;
justify-content:center;
gap:5px;
box-sizing:border-box;
min-height:0;
background:#050505;
color:#626262;
text-align:center;
text-shadow:1px 1px 0 #000;
}

.right-billboard-box.is-empty .right-billboard-screen {
min-height:352px;
}

.right-billboard-box.is-empty .right-billboard-empty {
display:flex;
}

.right-billboard-box.is-empty .right-billboard-image,
.right-billboard-box.is-empty .right-billboard-slice {
display:none !important;
}

.right-billboard-empty-main {
display:block;
color:#8a8a8a;
font-size:10px;
font-weight:700;
line-height:1;
letter-spacing:.7px;
}

.right-billboard-empty-sub {
display:block;
max-width:100%;
color:#626262;
font-size:9px;
font-weight:700;
line-height:1.2;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}



.right-billboard-caption {
position:absolute;
left:50%;
top:calc(100% + 4px);
z-index:40;
display:flex;
flex-direction:column;
align-items:center;
justify-content:center;
gap:0;
width:max-content;
min-width:42px;
max-width:calc(100% - 8px);
margin:0;
padding:3px 6px 4px;
box-sizing:border-box;
background:#101010;
border:1px solid;
border-color:
#555555
#2b2b2b
#050505
#2b2b2b;
color:#e2e2e2;
font-size:9px;
font-weight:700;
line-height:1;
white-space:nowrap;
text-align:center;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.035),
inset 0 -1px 0 rgba(0,0,0,0.70),
0 4px 10px rgba(0,0,0,0.44);
visibility:hidden;
opacity:0;
transform:translate(-50%, -1px);
pointer-events:none;
overflow:visible;
}

.right-billboard-box:hover .right-billboard-caption,
.right-billboard-box:focus-within .right-billboard-caption {
visibility:visible;
opacity:1;
transform:translate(-50%, 0);
}

.right-billboard-caption-line {
display:block;
max-width:100%;
min-width:0;
height:10px;
line-height:10px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}

.right-billboard-caption-line.is-gap {
height:10px;
line-height:10px;
font-size:0;
}

.right-billboard-box.is-empty .right-billboard-caption {
display:none;
}

@keyframes right-billboard-scanlines-up {
from { transform:translateY(0); }
to { transform:translateY(-70px); }
}

@keyframes right-billboard-slice-tear-a {
0%, 11%, 100% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
12% { opacity:.34; transform:translateX(-10px) scale(1.035); clip-path:inset(17% 0 78% 0); }
13% { opacity:.20; transform:translateX(7px) scale(1.035); clip-path:inset(18% 0 77% 0); filter:hue-rotate(-8deg); }
14% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
63% { opacity:.26; transform:translateX(6px) scale(1.035); clip-path:inset(24% 0 70% 0); }
64% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
}

@keyframes right-billboard-slice-tear-b {
0%, 37%, 100% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
38% { opacity:.36; transform:translateX(12px) scale(1.035); clip-path:inset(43% 0 50% 0); }
39% { opacity:.22; transform:translateX(-8px) scale(1.035); clip-path:inset(45% 0 48% 0); filter:hue-rotate(10deg) brightness(1.08); }
40% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
78% { opacity:.30; transform:translateX(-11px) scale(1.035); clip-path:inset(51% 0 43% 0); }
79% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
}

@keyframes right-billboard-slice-tear-c {
0%, 21%, 100% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
22% { opacity:.24; transform:translateX(-14px) scale(1.035); clip-path:inset(67% 0 25% 0); }
23% { opacity:.16; transform:translateX(10px) scale(1.035); clip-path:inset(68% 0 23% 0); filter:contrast(1.25) brightness(1.06); }
24% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
91% { opacity:.30; transform:translateX(10px) scale(1.035); clip-path:inset(73% 0 18% 0); }
92% { opacity:0; transform:translateX(0) scale(1.035); clip-path:inset(0 0 100% 0); }
}

@keyframes right-billboard-soft-glitch-band {
0%, 52%, 100% { opacity:0; transform:translateY(80%); }
53% { opacity:.38; transform:translateY(36%); }
54% { opacity:.14; transform:translateY(20%) skewX(-1deg); }
55% { opacity:0; transform:translateY(-20%); }
}

@keyframes right-billboard-soft-horizontal-tear {
0%, 68%, 100% { opacity:0; transform:translateX(0); clip-path:inset(0 0 0 0); }
69% { opacity:.28; transform:translateX(-10px); clip-path:inset(34% 0 58% 0); }
70% { opacity:.16; transform:translateX(8px); clip-path:inset(37% 0 55% 0); }
71% { opacity:0; transform:translateX(0); clip-path:inset(0 0 0 0); }
}

@media (prefers-reduced-motion: reduce) {
.right-billboard-slice-a,
.right-billboard-slice-b,
.right-billboard-slice-c,
.right-billboard-screen::after,
.right-billboard-glitch,
.right-billboard-tear {
animation:none !important;
}

.right-billboard-slice,
.right-billboard-glitch,
.right-billboard-tear {
opacity:0 !important;
}
}


/* -----------------------------------------
9.45 우측 사이트 정보
----------------------------------------- */

.site-info-sidebar {
position:relative;
background:#1d1d1d;
}

.site-info-title {
justify-content:space-between;
background:transparent;
border:0;
box-shadow:none;
}

.site-info-title > span:first-child {
min-width:0;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}

.site-info-title-meta {
flex:0 0 auto;
color:#8a8a8a;
font-size:9px;
font-weight:700;
letter-spacing:.55px;
line-height:1;
white-space:nowrap;
}

.site-info-content {
line-height:1.4;
}

.site-info-sidebar .policy-list {
border-top:1px solid #202020;
border-bottom:1px solid #202020;
}

.site-info-sidebar .policy-row {
display:grid;
grid-template-columns:minmax(0,1fr) 18px;
align-items:center;
gap:6px;
height:24px;
padding:0 2px;
border-bottom:1px solid #202020;
font-size:10px;
line-height:1.2;
}

.site-info-sidebar .policy-row:last-child {
border-bottom:none;
}

.site-info-sidebar .policy-row:hover {
background:#151515;
}

.site-info-sidebar .policy-row a {
display:block;
min-width:0;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
color:#c8c8c8 !important;
text-decoration:none !important;
}

.site-info-sidebar .policy-row:hover a {
color:#ffffff !important;
text-decoration:none !important;
}

.site-info-sidebar .policy-mark {
color:#8a8a8a;
font-size:14px;
line-height:1;
white-space:nowrap;
text-align:right;
}

.site-info-sidebar .policy-row:hover .policy-mark {
color:#ffffff;
}

.site-info-sidebar .social-strip {
display:grid;
grid-template-columns:repeat(4,1fr);
gap:4px;
margin-top:6px;
}

.site-info-sidebar .social-icon {
display:block;
aspect-ratio:1 / 1;
min-width:0;
}

.site-info-sidebar .social-icon a {
display:flex !important;
align-items:center !important;
justify-content:center !important;
width:100% !important;
height:100% !important;
border:1px solid #202020 !important;
background:#111111 !important;
color:#c8c8c8 !important;
font-size:10px !important;
font-weight:700 !important;
line-height:1 !important;
text-decoration:none !important;
text-shadow:1px 1px 0 #000 !important;
box-sizing:border-box !important;
}

.site-info-sidebar .social-icon a:hover {
background:#1c1c1c !important;
color:#ffffff !important;
border-color:#3a3a3a !important;
text-decoration:none !important;
}

/* -----------------------------------------
9.5 왼쪽 언어 박스
----------------------------------------- */

.clbi-left-lang-box {
position:relative;
min-height:0;
z-index:1002;
overflow:hidden;
}

/* 언어 박스 내부 라벨 패널 표준
   - 외곽 검은 선은 만들지 않는다.
   - 광원과 그림자는 사이드 프레임과 같은 한 세트(#555555 / #101010)를 사용한다.
   - 텍스트가 내부선에 붙지 않도록 상하 3px 패딩을 기본값으로 둔다. */
.clbi-left-lang-box > .clbi-left-title {
min-height:0;
height:auto;
margin:4px 0 3px;
padding:3px 7px;
box-sizing:border-box;
background:#080808;
border:0;
display:flex;
align-items:center;
gap:6px;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}

#clbi-title-left-language {
display:inline-flex;
align-items:center;
height:100%;
color:#e2e2e2;
font-size:12px;
font-weight:700;
line-height:1;
letter-spacing:0;
}

.clbi-left-language-icon {
display:inline-flex;
align-items:center;
justify-content:center;
width:16px;
height:16px;
font-size:13px;
line-height:1;
color:#e2e2e2 !important;
flex:0 0 16px;
}

.clbi-left-language-icon .profile-svg {
display:block;
width:16px;
height:16px;
stroke:currentColor;
}

.clbi-left-lang-box .clbi-left-content {
padding:2px;
box-sizing:border-box;
}

.sidebar-lang-box {
position:relative;
padding:3px !important;
box-sizing:border-box;
overflow:hidden;
}

.sidebar-lang-selector,
.sidebar-lang-dial {
position:relative;
width:100%;
padding:0;
box-sizing:border-box;
user-select:none;
touch-action:pan-y;
outline:none;
}

.sidebar-lang-dial-stage {
--lang-fan-half:99px;
position:relative;
width:100%;
height:146px;
margin:0;
box-sizing:border-box;
overflow:hidden;
background:#1d1d1d;
border:1px solid #050505;
border-radius:0;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}

.sidebar-lang-fan {
position:absolute;
left:50%;
top:2px;
z-index:2;
width:198px;
height:147px;
transform:translateX(-50%);
overflow:visible;
touch-action:pan-y;
cursor:grab;
pointer-events:auto;
}

.sidebar-lang-fan:active,
.sidebar-lang-selector.is-dragging .sidebar-lang-fan,
.sidebar-lang-selector.is-spinning .sidebar-lang-fan {
cursor:grabbing;
}

.sidebar-lang-fan-svg {
display:block;
width:198px;
height:147px;
overflow:visible;
shape-rendering:geometricPrecision;
}

.sidebar-lang-wheel-rotor {
transform-origin:101px 119px;
transform-box:view-box;
will-change:transform;
transition:none;
}

.sidebar-lang-selector.is-snapping .sidebar-lang-wheel-rotor {
transition:transform 210ms cubic-bezier(.17,.84,.22,1);
}

.sidebar-lang-shell {
fill:#080808;
stroke:#202020;
stroke-width:1;
}

.sidebar-lang-inner-shadow-soft,
.sidebar-lang-inner-shadow-hard {
fill:none;
stroke:#000000;
pointer-events:none;
clip-path:url(#clbi-sidebar-language-fan-clip);
}

.sidebar-lang-inner-shadow-soft {
stroke-width:16;
opacity:.34;
filter:url(#clbi-sidebar-language-shadow-blur);
}

.sidebar-lang-inner-shadow-hard {
stroke-width:6;
opacity:.22;
}

.sidebar-lang-sector-group {
pointer-events:auto;
cursor:pointer;
}

.sidebar-lang-sector {
fill:#101010;
stroke:#181818;
stroke-width:1;
vector-effect:non-scaling-stroke;
cursor:pointer;
transition:none;
}

.sidebar-lang-sector-group:hover .sidebar-lang-sector,
.sidebar-lang-sector:hover,
.sidebar-lang-sector.is-center,
.sidebar-lang-sector.is-far {
fill:#101010;
stroke:#181818;
}

.sidebar-lang-sector-label {
pointer-events:none;
text-anchor:middle;
dominant-baseline:middle;
paint-order:stroke;
stroke:#050505;
stroke-width:2px;
stroke-linejoin:round;
font-size:9px !important;
font-weight:700 !important;
letter-spacing:.15px;
fill:#c8c8c8;
transition:none !important;
}

.sidebar-lang-sector-name {
display:none;
}

.sidebar-lang-sector-group.is-center .sidebar-lang-sector-label,
.sidebar-lang-sector-group.is-center .sidebar-lang-sector-name,
.sidebar-lang-sector-group.is-neighbor .sidebar-lang-sector-label,
.sidebar-lang-sector-group.is-neighbor .sidebar-lang-sector-name {
fill:inherit;
}

.sidebar-lang-fixed-depth,
.sidebar-lang-fixed-focus,
.sidebar-lang-rim {
pointer-events:none;
clip-path:url(#clbi-sidebar-language-fan-clip);
}

.sidebar-lang-fixed-depth {
fill:url(#clbi-sidebar-language-fixed-depth);
opacity:1;
}

.sidebar-lang-fixed-focus {
fill:rgba(255,255,255,0.020);
stroke:rgba(255,255,255,0.020);
stroke-width:1;
}

.sidebar-lang-rim {
fill:none;
stroke:#202020;
stroke-width:1;
}

.sidebar-lang-fixed-pointer {
pointer-events:none;
clip-path:url(#clbi-sidebar-language-fan-clip);
}

.sidebar-lang-pointer-line {
stroke:#b94a3c;
stroke-width:2;
stroke-linecap:square;
opacity:.94;
vector-effect:non-scaling-stroke;
}

.sidebar-lang-pointer-triangle {
fill:#b94a3c;
stroke:#050505;
stroke-width:1;
stroke-linejoin:miter;
vector-effect:non-scaling-stroke;
}

.sidebar-lang-apply {
position:absolute;
left:50%;
top:93px;
z-index:5;
width:52px;
height:53px;
margin:0;
padding:0;
transform:translateX(-50%);
display:flex;
align-items:center;
justify-content:center;
box-sizing:border-box;
border-radius:26px 26px 0 0;
border:1px solid #050505;
background:#1d1d1d;
color:#e2e2e2;
cursor:pointer;
text-align:center;
line-height:1;
text-shadow:1px 1px 0 #000;
box-shadow:
0 0 0 2px #080808,
0 0 0 4px #1d1d1d,
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
overflow:visible;
transition:none !important;
}

.sidebar-lang-apply::before,
.sidebar-lang-apply::after {
content:none;
}

.sidebar-lang-apply:hover {
border-color:#050505;
background:#1d1d1d;
color:#ffffff;
box-shadow:
0 0 0 2px #080808,
0 0 0 4px #1d1d1d,
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}

.sidebar-lang-apply:active {
transform:translateX(-50%) translateY(1px);
background:#101010;
box-shadow:
0 0 0 2px #080808,
0 0 0 4px #1d1d1d,
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}

.sidebar-lang-apply.is-disabled,
.sidebar-lang-apply.is-disabled:hover,
.sidebar-lang-apply.is-disabled:active {
transform:translateX(-50%);
border-color:#050505;
background:#1d1d1d;
color:#626262;
cursor:default;
opacity:1;
box-shadow:
0 0 0 2px #080808,
0 0 0 4px #1d1d1d,
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}

.sidebar-lang-apply-mark {
position:relative;
z-index:1;
display:block;
font-size:20px;
font-weight:700;
line-height:1;
transform:translateY(3px);
}

.sidebar-lang-status-panel {
position:absolute;
bottom:5px;
width:69px;
height:25px;
z-index:4;
display:flex;
align-items:center;
justify-content:center;
padding:3px 5px;
box-sizing:border-box;
overflow:hidden;
background:#080808;
border:0;
color:#c8c8c8;
text-align:center;
line-height:1;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
pointer-events:none;
}

.sidebar-lang-status-left {
left:calc(50% - var(--lang-fan-half));
}

.sidebar-lang-status-right {
right:calc(50% - var(--lang-fan-half));
}

.sidebar-lang-status-value {
display:block;
width:100%;
min-width:0;
color:#f0f0f0;
font-family:inherit !important;
font-size:9px;
font-weight:700;
line-height:1;
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
}

.sidebar-lang-status-right .sidebar-lang-status-value {
font-size:8px;
letter-spacing:.12px;
}

.sidebar-lang-status-right.is-ready .sidebar-lang-status-value {
color:#f0f0f0;
}

.sidebar-lang-status-right.is-current .sidebar-lang-status-value {
color:#c8c8c8;
}

.sidebar-lang-status-right.is-locked .sidebar-lang-status-value {
color:#8a8a8a;
}


/* -----------------------------------------
10. 왼쪽 뉴스 박스
----------------------------------------- */

.clbi-left-news-box {
position:relative;
min-height:0;
overflow:hidden;
}

/* 뉴스 박스 타이틀은 언어 박스에서 확정한 내부 라벨 패널 표준을 따른다.
   - 컨테이너 상단 기준: 위 4px, 아래 3px
   - 외곽 검은 선 없음
   - 광원/그림자는 #555555 / #101010 한 세트만 사용 */
.clbi-left-news-box > .clbi-left-title {
min-height:0;
height:auto;
margin:4px 0 3px;
padding:3px 7px;
box-sizing:border-box;
background:#080808;
border:0;
display:flex;
align-items:center;
gap:6px;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}

#clbi-title-left-news {
display:inline-flex;
align-items:center;
height:100%;
color:#e2e2e2;
font-size:12px;
font-weight:700;
line-height:1;
letter-spacing:0;
}

.news-title-icon,
.news-title-icon.sidebar-title-svg {
display:inline-flex;
align-items:center;
justify-content:center;
width:16px;
height:16px;
font-size:13px;
line-height:1;
color:#e2e2e2 !important;
flex:0 0 16px;
vertical-align:middle;
}

.news-title-icon .profile-svg,
.news-title-icon.sidebar-title-svg .profile-svg {
width:16px;
height:16px;
display:block;
stroke:currentColor;
}

/* 뉴스 컨텐츠 슬롯은 언어 박스와 같은 3px 내부 기준을 따른다. */
.clbi-news-box {
position:relative;
padding:3px !important;
box-sizing:border-box;
overflow:hidden;
background:#080808;
}

/* 섹션 타이틀: 컨텐츠 슬롯 내부의 라벨 패널 */
.news-feed-title {
position:relative;
display:flex;
align-items:center;
height:auto;
min-height:22px;
margin:0 0 2px 0;
padding:3px 7px 3px 16px;
box-sizing:border-box;
background:#1d1d1d;
border:1px solid #050505;
color:#c8c8c8;
font-size:9px;
font-weight:700;
line-height:1;
letter-spacing:0.55px;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}

.news-feed-title::before {
content:"";
position:absolute;
left:7px;
top:50%;
width:4px;
height:8px;
transform:translateY(-50%);
background:#c8c8c8;
box-shadow:1px 1px 0 #050505;
opacity:0.85;
}

#clbi-left-news-changelog-title {
margin-top:0;
}

#clbi-left-news-recent-title {
margin-top:2px;
}

/* 섹션 본체는 별도 프레임을 만들지 않는 배치 래퍼다. */
.news-left-changelog-feed,
.news-left-recent-feed {
background:transparent;
border:0;
box-shadow:none;
box-sizing:border-box;
}

.news-left-changelog-feed {
padding:0;
}

.news-left-recent-feed {
padding:0;
color:#9a9a9a;
font-size:11px;
line-height:1.55;
}

.news-divider {
display:none;
}

/* 버튼형 항목: 단색 표면 + 최외곽 검은 선 + 동일 광원 세트 */
.news-post-item,
.news-recent-item {
position:relative;
display:grid !important;
align-items:center;
gap:6px;
margin:0 0 2px;
box-sizing:border-box;
background:#1d1d1d;
border:1px solid #050505;
color:#c8c8c8 !important;
overflow:hidden;
text-decoration:none !important;
cursor:pointer;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
}

.news-post-item {
grid-template-columns:minmax(0,1fr) auto;
min-height:26px;
padding:0 6px;
}

.news-recent-item {
grid-template-columns:28px minmax(0,1fr) auto;
min-height:36px;
margin:0 0 2px;
padding:4px 6px 4px 5px;
}

.news-post-item:last-child,
.news-recent-item:last-child {
margin-bottom:0;
}

.news-post-item:hover,
.news-recent-item:hover {
background:#1d1d1d;
color:#ffffff !important;
}

.news-post-item:active,
.news-recent-item:active {
background:#101010;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}

.news-recent-avatar {
display:block;
width:24px;
height:24px;
object-fit:cover;
object-position:center;
background:#070707;
border:1px solid #050505;
box-shadow:
inset 0 1px 0 #555555,
inset -1px 0 0 #555555,
inset 1px 0 0 #101010,
inset 0 -1px 0 #101010;
box-sizing:border-box;
}

.news-recent-item:hover .news-recent-avatar {
border-color:#050505;
}

.news-recent-main {
min-width:0;
display:flex;
flex-direction:column;
justify-content:center;
gap:1px;
}

.news-post-title-wrap,
.news-recent-title-wrap {
min-width:0;
overflow:hidden;
white-space:nowrap;
mask-image:linear-gradient(to right, black 88%, transparent 100%);
-webkit-mask-image:linear-gradient(to right, black 88%, transparent 100%);
}

.news-post-title-wrap {
display:flex;
align-items:center;
}

.news-post-title,
.news-recent-title {
display:inline-block;
max-width:none;
overflow:visible;
color:#e2e2e2 !important;
font-size:12px;
font-weight:700;
line-height:1.18;
white-space:nowrap;
text-decoration:none !important;
text-shadow:1px 1px 0 #000;
}

.news-post-item:hover .news-post-title,
.news-recent-item:hover .news-recent-title {
color:#ffffff !important;
}

.news-post-arrow {
display:inline-flex;
align-items:center;
justify-content:center;
width:12px;
height:12px;
margin-left:5px;
color:#8a8a8a;
font-size:11px;
line-height:1;
vertical-align:-1px;
flex:0 0 auto;
}

.news-post-item:hover .news-post-arrow {
color:#ffffff;
}

.news-recent-meta {
display:flex;
align-items:center;
min-width:0;
height:10px;
line-height:1;
}

.news-recent-user {
display:block !important;
min-width:0;
max-width:100%;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
color:#7a7a7a !important;
font-size:8.5px;
font-weight:700;
line-height:1;
text-decoration:none !important;
text-shadow:1px 1px 0 #000;
}

.news-recent-item:hover .news-recent-user {
color:#b0b0b0 !important;
}

/* 항목 내부의 작은 상태 버튼: 외곽선 없이 우물 방향 내부선만 사용 */
.news-post-tag,
.news-recent-time {
display:inline-flex;
align-items:center;
justify-content:center;
height:16px;
min-width:34px;
padding:0 4px;
box-sizing:border-box;
background:#080808;
border:0;
color:#c8c8c8 !important;
font-size:9px;
font-weight:700;
line-height:1;
white-space:nowrap;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}

.news-post-item:hover .news-post-tag,
.news-recent-item:hover .news-recent-time {
background:#101010;
color:#e2e2e2 !important;
}

.news-recent-item:active .news-recent-time {
background:#080808;
color:#c8c8c8 !important;
box-shadow:
inset 0 1px 0 #101010,
inset -1px 0 0 #101010,
inset 1px 0 0 #555555,
inset 0 -1px 0 #555555;
}

.news-post-item *,
.news-recent-item * {
pointer-events:none;
}

/* -----------------------------------------
12. 왼쪽 목차
----------------------------------------- */

#side-toc-box .toc-sidebar-content {
padding:6px 8px 8px;
}

.generated-toc {
margin:0 !important;
padding:0 !important;
list-style:none !important;
}

.generated-toc li {
margin:0 !important;
padding:0 !important;
}

.generated-toc a {
display:block !important;
height:23px;
line-height:23px;
padding:0 2px;
border-bottom:1px solid #202020;
color:#c8c8c8 !important;
font-size:11px;
font-weight:700;
text-decoration:none !important;
text-shadow:1px 1px 0 #000;
box-sizing:border-box;
overflow:hidden;
}

.generated-toc li:first-child a {
border-top:1px solid #202020;
}

.generated-toc a:hover {
background:#101010;
color:#ffffff !important;
}

.generated-toc .toc-level-3 a {
padding-left:12px;
font-weight:600;
color:#9f9f9f !important;
}

.toc-scroll-wrap {
display:block;
position:relative;
overflow:hidden;
white-space:nowrap;
}

.toc-scroll-text {
display:inline-block;
white-space:nowrap;
}

.toc-scroll-wrap.is-scrolling::after {
content:"";
position:absolute;
top:0;
right:0;
bottom:0;
width:18px;
pointer-events:none;
background:linear-gradient(to right, transparent, #080808);
}

/* -----------------------------------------
14. 하단 푸터
----------------------------------------- */

footer,
.liberty-footer {
display:none !important;
}

/* =========================================
15. 상단 네비게이션 바
========================================= */

/*
상단 네비바 공식
-----------------------------------------
- 전체는 하나의 각진 조작 패널이다.
- 탭 하나하나는 독립 버튼 외장보다 패널 내부 구획에 가깝다.
- radius는 사용하지 않는다.
- 보라색 테마를 쓰지 않는다.
- 검색창도 같은 금속 인풋으로 정리한다.
*/

#clbi-top-nav-wrap {
width:var(--layout-shell-w) !important;
max-width:var(--layout-shell-w) !important;
min-width:var(--layout-shell-w) !important;
margin:0 auto !important;
padding:var(--layout-gap) 0 0 !important;
box-sizing:border-box !important;
}

#clbi-top-nav,
#clbi-bottom-nav {
position:relative;
width:100%;
background:#171717;
border:1px solid;
border-color:
#555555
#2b2b2b
#050505
#2b2b2b;
border-radius:0;
overflow:hidden;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040),
inset 0 -1px 0 rgba(0,0,0,0.70),
0 6px 18px rgba(0,0,0,0.34);
margin-bottom:0;
}

#clbi-top-nav-main,
#clbi-bottom-nav-main {
position:relative;
display:flex;
align-items:stretch;
width:100%;
min-height:38px;
}

#clbi-top-nav-logo,
#clbi-bottom-nav-logo {
display:flex;
align-items:center;
padding:0 8px;
flex-shrink:0;
}

#clbi-top-nav-logo img,
#clbi-bottom-nav-logo img {
height:36px;
width:auto;
display:block;
}

/* -----------------------------------------
16. 상단 네비 탭
----------------------------------------- */

#clbi-top-nav-tabs,
#clbi-bottom-nav-tabs {
display:flex;
align-items:stretch;
flex:1;
flex-shrink:0;
}

.clbi-top-nav-item {
position:relative;
display:flex;
align-items:center;
justify-content:center;
gap:8px;
width:120px;
min-height:38px;
flex-shrink:0;
padding:0;
background:transparent;
border-left:1px solid transparent;
border-right:1px solid #202020;
cursor:pointer;
transition:
background 0.12s,
border-color 0.12s,
color 0.12s,
box-shadow 0.12s;
user-select:none;
white-space:nowrap;
text-decoration:none !important;
color:#e2e2e2 !important;
overflow:hidden;
box-sizing:border-box;
text-shadow:1px 1px 0 #000;
}

.clbi-top-nav-item:hover {
min-height:38px;
background:#1d1d1d;
border-left-color:#333333;
border-right-color:#333333;
color:#ffffff !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.045),
inset 0 -1px 0 rgba(0,0,0,0.65);
}

.clbi-top-nav-item.clbi-tnav-active {
background:#242424;
border-left-color:#444444;
border-right-color:#444444;
color:#ffffff !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.050),
inset 0 -1px 0 rgba(0,0,0,0.70);
}

.clbi-tnav-icon {
display:block;
width:22px;
height:22px;
object-fit:contain;
flex:0 0 22px;
image-rendering:pixelated;
opacity:0.88;
align-self:center;
filter:grayscale(0.18) contrast(1.05);
}

.clbi-top-nav-item:hover .clbi-tnav-icon,
.clbi-top-nav-item.clbi-tnav-active .clbi-tnav-icon {
opacity:1;
filter:grayscale(0) contrast(1.08);
}

/* -----------------------------------------
17. 언어 버튼
----------------------------------------- */

.clbi-tnav-lang {
flex-direction:column;
justify-content:center;
align-items:center;
width:54px;
min-height:38px;
gap:1px;
padding:4px 0;
border-left:1px solid transparent;
}

.clbi-tnav-lang-code {
font-size:11px;
font-weight:700;
color:#e2e2e2;
letter-spacing:0;
}

.clbi-tnav-lang .clbi-tnav-arrow {
font-size:9px;
color:#8a8a8a;
width:8px;
text-align:center;
flex-shrink:0;
}

.clbi-tnav-lang:hover {
border-left-color:transparent !important;
}

.clbi-tnav-lang.clbi-tnav-active {
border-left-color:transparent !important;
}

.clbi-tnav-lang-bottom {
display:flex;
align-items:center;
justify-content:center;
gap:3px;
line-height:1;
width:100%;
}

.clbi-tnav-label {
position:relative;
z-index:1;
display:inline-flex;
align-items:center;
height:22px;
line-height:22px;
font-size:13px;
font-weight:700;
}

.clbi-tnav-arrow {
position:relative;
z-index:1;
font-size:12px;
color:#8a8a8a;
transition:color 0.12s;
}

.clbi-top-nav-item:hover .clbi-tnav-arrow,
.clbi-top-nav-item.clbi-tnav-active .clbi-tnav-arrow {
color:#ffffff;
}

/* -----------------------------------------
18. 상단 검색
----------------------------------------- */

#clbi-top-nav-search,
#clbi-bottom-nav-search {
position:absolute;
left:50%;
top:0;
bottom:0;
transform:translateX(-50%);
display:flex;
align-items:center;
justify-content:center;
pointer-events:none;
}

#clbi-top-search-input,
#clbi-bottom-search-input {
width:240px;
height:26px;
background:#070707;
border:1px solid #202020;
color:#e2e2e2;
padding:0 10px;
border-radius:0;
font-size:11px;
box-sizing:border-box;
outline:none;
pointer-events:all;
transition:border-color 0.12s, width 0.2s, background 0.12s;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.025),
inset 0 -1px 0 rgba(0,0,0,0.55);
}

#clbi-top-search-input:focus,
#clbi-bottom-search-input:focus {
border-color:#555555;
background:#0c0c0c;
width:320px;
}

#clbi-top-nav-right,
#clbi-bottom-nav-right {
margin-left:auto;
display:flex;
align-items:stretch;
border-left:1px solid #202020;
}



/* -----------------------------------------
18-1. 대문 전용 상·하단 네비 최소화
----------------------------------------- */

/*
대문에서는 본문 내부에 카테고리 네비와 대문 전용 조작 구조가 이미 있으므로,
상단·하단 네비바는 검색 슬롯만 남긴다.
다른 문서에서는 기존 버튼 구성을 그대로 유지한다.
*/

body.clbi-main-page #clbi-top-nav-tabs,
body.page-대문 #clbi-top-nav-tabs,
body.clbi-main-page #clbi-bottom-nav-tabs,
body.page-대문 #clbi-bottom-nav-tabs,
body.clbi-main-page #clbi-top-nav-right,
body.page-대문 #clbi-top-nav-right,
body.clbi-main-page #clbi-bottom-nav-right,
body.page-대문 #clbi-bottom-nav-right,
body.clbi-main-page #clbi-sub-worldbuilding,
body.page-대문 #clbi-sub-worldbuilding,
body.clbi-main-page #clbi-bottom-sub-worldbuilding,
body.page-대문 #clbi-bottom-sub-worldbuilding {
display:none !important;
}

body.clbi-main-page #clbi-top-search-input,
body.page-대문 #clbi-top-search-input,
body.clbi-main-page #clbi-bottom-search-input,
body.page-대문 #clbi-bottom-search-input {
width:288px;
}

body.clbi-main-page #clbi-top-search-input:focus,
body.page-대문 #clbi-top-search-input:focus,
body.clbi-main-page #clbi-bottom-search-input:focus,
body.page-대문 #clbi-bottom-search-input:focus {
width:384px;
}

/* -----------------------------------------
19. 세계관 펼침 영역
----------------------------------------- */

#clbi-sub-worldbuilding,
#clbi-bottom-sub-worldbuilding {
box-sizing:border-box;
width:100%;
height:0;
overflow:hidden;
border-top:0 solid #050505;
background:#080808;
transition:
height 180ms ease,
border-top-width 0ms linear 180ms;
}

#clbi-sub-worldbuilding.worldbuilding-open,
#clbi-bottom-sub-worldbuilding.worldbuilding-open {
height:38px;
border-top-width:1px;
transition:
height 180ms ease,
border-top-width 0ms linear 0ms;
}

#clbi-sub-worldbuilding-inner,
#clbi-bottom-sub-worldbuilding-inner {
height:38px;
overflow:hidden;
}

.clbi-tnav-sub-list {
display:flex;
align-items:stretch;
flex-wrap:nowrap;
height:38px;
padding:0;
margin:0;
}

.clbi-tnav-sub-item {
position:relative;
display:flex;
align-items:center;
justify-content:center;
height:38px;
padding:0 15px 1px 15px;
background:transparent;
color:#c8c8c8 !important;
font-size:11px;
font-weight:700;
line-height:1;
white-space:nowrap;
text-decoration:none !important;
box-sizing:border-box;
transition:
background 0.12s,
color 0.12s,
box-shadow 0.12s;
text-shadow:1px 1px 0 #000;
}

.clbi-tnav-sub-item::after {
content:"";
position:absolute;
top:6px;
right:0;
bottom:6px;
width:1px;
background:#202020;
pointer-events:none;
}

.clbi-tnav-sub-item:last-child::after {
display:none;
}

.clbi-tnav-sub-item:hover {
background:#151515;
color:#ffffff !important;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.030),
inset 0 -1px 0 rgba(0,0,0,0.60);
}

/* 상단 네비: hover/active 인접 경계선 중복 방지 */
.clbi-top-nav-item:hover + .clbi-top-nav-item.clbi-tnav-active {
border-left-color:transparent;
}

.clbi-top-nav-item.clbi-tnav-active + .clbi-top-nav-item:hover {
border-left-color:transparent;
}

/* =========================================
Progress System UI
MediaWiki:Layout.css controlled frontend
========================================= */
/* =========================================
Progress System
========================================= */

.profile-progress-block {
--xp-base-a:#5f9f68;
--xp-base-b:#9acb7a;
--xp-gain-a:#238c84;
--xp-gain-b:#54c7bb;
--xp-glow:rgba(35,140,132,0.20);
position:relative;
margin:7px 7px 0;
padding:6px;
box-sizing:border-box;
background:#080808;
border:1px solid;
border-color:
#333333
#202020
#050505
#202020;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.020),
inset 0 -1px 0 rgba(0,0,0,0.58);
}

.profile-progress-block.is-max-level {
--xp-base-a:#b58a3a;
--xp-base-b:#f0ce75;
--xp-gain-a:#d9aa42;
--xp-gain-b:#fff0a8;
--xp-glow:rgba(224,190,104,0.30);
}

.profile-progress-block.is-max-level .progress-level-label {
color:#f0ce75;
text-shadow:
1px 1px 0 #000,
0 0 7px rgba(224,190,104,0.28);
}

.profile-progress-block.is-max-level .progress-total-xp {
color:#e0be68;
}

.profile-progress-block.is-max-level .progress-xp-bar {
border-color:#4a3b18;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040),
inset 0 -1px 0 rgba(0,0,0,0.62),
0 0 6px rgba(224,190,104,0.18);
}

.profile-progress-block.is-max-level .progress-xp-next {
color:#e0be68;
}

.progress-panel-fallback-body {
padding:0 !important;
}

.progress-title-row {
min-height:16px;
margin:0 0 6px;
padding:0 6px;
display:flex;
align-items:center;
justify-content:center;
box-sizing:border-box;
background:#141414;
border:1px solid;
border-color:
#333333
#202020
#181818
#202020;
color:#c8c8c8;
font-size:9px;
font-weight:700;
line-height:1;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040);
}

.progress-title-row[hidden] {
display:none !important;
}

.progress-level-row,
.progress-sub-row {
display:flex;
align-items:center;
justify-content:space-between;
gap:6px;
min-width:0;
}

.progress-level-row {
margin-bottom:5px;
}

.progress-level-label {
color:#e2e2e2;
font-size:14px;
font-weight:700;
line-height:1;
letter-spacing:0.2px;
text-shadow:
1px 1px 0 #000,
0 0 5px rgba(154,203,122,0.14);
}

.progress-total-xp {
color:#b8c9b4;
font-size:10px;
font-weight:700;
line-height:1;
white-space:nowrap;
text-shadow:1px 1px 0 #000;
}

.progress-xp-bar {
position:relative;
width:100%;
height:10px;
margin:0 0 5px;
box-sizing:border-box;
background:#070707;
border:1px solid #202020;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.025),
inset 0 -1px 0 rgba(0,0,0,0.60);
overflow:hidden;
isolation:isolate;
}

.progress-xp-bar::before {
content:"";
position:absolute;
inset:0;
z-index:4;
pointer-events:none;
background:
linear-gradient(to bottom, rgba(255,255,255,0.08), transparent 45%, rgba(0,0,0,0.18));
}

.progress-xp-fill,
.progress-xp-gain {
position:absolute;
left:0;
top:0;
bottom:0;
width:0;
}

.progress-xp-gain {
z-index:1;
opacity:0;
background:linear-gradient(to bottom, var(--xp-gain-b) 0%, var(--xp-gain-a) 58%, #155c58 100%);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.18),
inset 0 -1px 0 rgba(0,0,0,0.46),
0 0 5px var(--xp-glow);
}

.progress-xp-fill {
z-index:2;
background:linear-gradient(to bottom, var(--xp-base-b) 0%, var(--xp-base-a) 58%, #3f7346 100%);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.24),
inset 0 -1px 0 rgba(0,0,0,0.42);
transition:width 260ms ease;
}

.progress-sub-row {
margin-bottom:6px;
}

.progress-xp-next,
.progress-daily-xp,
.progress-discovery-row {
color:#8a8a8a;
font-size:9px;
font-weight:700;
line-height:1;
text-shadow:1px 1px 0 #000;
}

.progress-daily-xp {
white-space:nowrap;
}

.progress-discovery-row {
height:18px;
display:flex;
align-items:center;
justify-content:center;
background:#141414;
border:1px solid;
border-color:
#333333
#202020
#181818
#202020;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040);
}

#progress-toast-root {
position:fixed;
right:18px;
bottom:18px;
z-index:100000;
display:flex;
flex-direction:column;
gap:6px;
pointer-events:none;
}

.progress-toast {
min-width:220px;
max-width:320px;
padding:8px 10px;
box-sizing:border-box;
background:#171717;
border:1px solid;
border-color:#555555 #2b2b2b #050505 #2b2b2b;
color:#e2e2e2;
font-size:11px;
font-weight:700;
line-height:1.35;
text-shadow:1px 1px 0 #000;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.040),
inset 0 -1px 0 rgba(0,0,0,0.72),
0 6px 18px rgba(0,0,0,0.42);
opacity:0;
transform:translateY(8px);
transition:opacity 160ms ease, transform 160ms ease;
}

.progress-toast.is-visible {
opacity:1;
transform:translateY(0);
}

/* -----------------------------------------
Analog hover normalization
----------------------------------------- */
#clbi-top-nav .clbi-top-nav-item,
#clbi-top-nav .clbi-top-nav-item *,
#clbi-bottom-nav .clbi-top-nav-item,
#clbi-bottom-nav .clbi-top-nav-item *,
#clbi-sub-worldbuilding .clbi-tnav-sub-item,
#clbi-bottom-sub-worldbuilding .clbi-tnav-sub-item,
#clbi-search-btn,
.clbi-user-btn,
.profile-action-box .clbi-user-btn,
.profile-action-box .clbi-user-btn *,
.profile-quick-btn,
.profile-quick-btn *,
.news-post-item,
.news-post-item *,
.news-recent-item,
.news-recent-item *,
.clbi-left-news-main,
.clbi-left-news-main *,
.clbi-link-btn,
.clbi-link-box ul li a,
#clbi-playlist-toggle,
#clbi-notification-toggle {
transition:none !important;
}