미디어위키:Theme.css

Nxdsxn (토론 | 기여)님의 2026년 7월 12일 (일) 05:29 판 (Install package: clbiwiki-mainpage-yisunshin-galmuri-method-20260712 / css/Theme.css)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다.

  • 파이어폭스 / 사파리: Shift 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5 또는 Ctrl-R을 입력 (Mac에서는 ⌘-R)
  • 구글 크롬: Ctrl-Shift-R키를 입력 (Mac에서는 ⌘-Shift-R)
  • 인터넷 익스플로러 / 엣지: Ctrl 키를 누르면서 새로 고침을 클릭하거나, Ctrl-F5를 입력.
  • 오페라: Ctrl-F5를 입력.
/* =========================================
   COASTLINE: BLACK ICE - Theme
   ========================================= */
/* screen-header 쓰는 문서만 푸커 숨기기 */
body:has(.screen-header) .liberty-footer {
    display: none !important;
}
body:has(.screen-header) footer {
    display: none !important;
}

/* 색상 텍스트 틀 및 색상 범위 공통 처리 */
.color-text {
    color: var(--text-color, #fff) !important;
}

.color-text a,
.color-text a:visited,
.color-text a.external {
    color: var(--text-color, #fff) !important;
}

.color-text a:hover {
    color: var(--text-color, #fff) !important;
}

/* 선택 영역 */
::selection {
    background: rgba(133, 67, 105, 0.50);
    color: #ffffff;
}

::-moz-selection {
    background: rgba(133, 67, 105, 0.50);
    color: #ffffff;
}

/* SVG + 테두리일 때 사각 테두리 제거, 형태 외곽선만 적용
   기존 [[파일:...|테두리]]의 alpha drop-shadow 구조를 2색/2px 국기 획 기준으로 통일한다. */
:root {
    --clbi-flag-stroke-inner: #050505;
    --clbi-flag-stroke-outer: #3a3a3a;
    --clbi-flag-stroke-filter:
        drop-shadow(1px 0 0 var(--clbi-flag-stroke-inner))
        drop-shadow(-1px 0 0 var(--clbi-flag-stroke-inner))
        drop-shadow(0 1px 0 var(--clbi-flag-stroke-inner))
        drop-shadow(0 -1px 0 var(--clbi-flag-stroke-inner))
        drop-shadow(1px 0 0 var(--clbi-flag-stroke-outer))
        drop-shadow(-1px 0 0 var(--clbi-flag-stroke-outer))
        drop-shadow(0 1px 0 var(--clbi-flag-stroke-outer))
        drop-shadow(0 -1px 0 var(--clbi-flag-stroke-outer));
}

.mw-image-border:has(img[src$=".svg.png"]),
.mw-image-border:has(img[src*=".svg.png?"]) {
    border: none !important;
    box-shadow: none !important;
    background: transparent !important;
    padding: 0 !important;
    overflow: visible !important;
}

.mw-image-border img[src$=".svg.png"],
.mw-image-border img[src*=".svg.png?"] {
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
    background: transparent !important;
    filter: var(--clbi-flag-stroke-filter) !important;
}

/* 폰트 */
@font-face {
    font-family: 'Galmuri11';
    src: url('/fonts/Galmuri11.woff2') format('woff2');
    font-weight: 400;
    font-display: block;
}

@font-face {
    font-family: 'Galmuri11';
    src: url('/fonts/Galmuri11-Bold.woff2') format('woff2');
    font-weight: 700;
    font-display: block;
}


@font-face {
    font-family: 'YiSunShin';
    src: url('/fonts/YiSunShinBold.woff2') format('woff2');
    font-weight: 400;
    font-display: block;
}

@font-face {
    font-family: 'BoldRound';
    src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/2507-2@1.0/BoldDungGeunMo.woff2') format('woff2');
    font-weight: normal;
    font-display: swap;
}

html body, html .liberty-content-main {
    font-family: 'Galmuri11', sans-serif !important;
    font-weight: 400 !important;
    font-size: 12px;
}

* { font-family: inherit !important; }

.fa, .far, .fas, .fab, [class*="fa-"] {
    font-family: 'Font Awesome 5 Free', 'Font Awesome 5 Brands', 'FontAwesome' !important;
}

.mw-page-title-main, .mw-page-title-namespace,
.liberty-content-main h1, .liberty-content-main h2,
.liberty-content-main h3, .liberty-content-main h4,
.liberty-content-main h5, .liberty-content-main h6 {
    font-family: 'BoldRound', sans-serif !important;
}

/* 배경 */
html {
    min-height: 100%;
    overflow-y: scroll;
    background: #000000 !important;
}

body {
    min-height: 100%;
    margin: 0 !important;
    background: #000000 !important;
}

/* 이전 JS 배경 레이어는 사용하지 않음 */
.WW-bg {
    display: none !important;
}

/* Canvas 기반 고정 하프톤 배경 */
#site-halftone-bg {
    position: fixed;
    inset: 0;
    width: 100vw;
    height: 100vh;
    z-index: 0;
    pointer-events: none;
    background: #000000;
}

/* 배경 캔버스보다 실제 위키 UI가 위에 놓이도록 함 */
body > :not(#site-halftone-bg) {
    position: relative;
    z-index: 1;
}

/* 관리자 툴은 기존 우선순위를 유지 */
#dev-tools-panel {
    position: fixed !important;
    z-index: 99998 !important;
}

/* OOUI/MediaWiki 팝업 계열 안전 보정 */
.oo-ui-windowManager,
.oo-ui-defaultOverlay,
.mw-notification-area,
.mw-notification-area-overlay {
    position: relative;
    z-index: 100000 !important;
}

/* 스크롤 */
html { overflow-y: scroll; }
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: #0a0909; }
::-webkit-scrollbar-thumb { background: #854369; border-radius: 3px; }

/* 제목 */
.mw-page-title-main {
    border-radius: 5px 5px 0 0 !important;
    padding: 7px !important;
    border: 2px solid #854369 !important;
    border-bottom: none !important;
    background: #171717 !important;
    color: #e2e2e2 !important;
    display: inline-block !important;
    position: relative !important;
}

.mw-page-title-main::after {
    content: '';
    position: absolute;
    bottom: -2px;
    left: 0;
    right: 0;
    height: 2px;
    background: #171717;
}

.mw-page-title-namespace {
    padding: 7px 0 7px 7px !important;
    border: 2px solid #854369 !important;
    border-right: none !important;
    border-bottom: none !important;
    border-radius: 5px 0 0 0 !important;
    background: #171717 !important;
    color: #e2e2e2 !important;
    display: inline-block !important;
    vertical-align: bottom !important;
    position: relative !important;
}

.mw-page-title-namespace::after {
    content: '';
    position: absolute;
    bottom: -2px;
    left: 0;
    right: 0;
    height: 2px;
    background: #171717;
}

.mw-page-title-separator {
    padding: 7px 0 !important;
    border-top: 2px solid #854369 !important;
    border-bottom: none !important;
    background: #171717 !important;
    color: #e2e2e2 !important;
    display: inline-block !important;
    vertical-align: bottom !important;
    position: relative !important;
}

.mw-page-title-separator::after {
    content: '';
    position: absolute;
    bottom: -2px;
    left: 0;
    right: 0;
    height: 2px;
    background: #171717;
}

.mw-page-title-namespace ~ .mw-page-title-main {
    border-radius: 0 5px 0 0 !important;
    padding: 7px 7px 7px 0 !important;
    border-left: none !important;
    vertical-align: bottom !important;
}

/* 특수 페이지 h1 */
.liberty-content-header .title h1:not(:has(.mw-page-title-main)) {
    background: #171717 !important;
    color: #e2e2e2 !important;
    border: 2px solid #854369 !important;
    border-bottom: none !important;
    border-radius: 5px 5px 0 0 !important;
    padding: 7px !important;
    display: inline-block !important;
    position: relative !important;
    font-family: 'BoldRound', sans-serif !important;
}

.liberty-content-header .title h1:not(:has(.mw-page-title-main))::after {
    content: '';
    position: absolute;
    bottom: -2px;
    left: 0;
    right: 0;
    height: 2px;
    background: #171717;
}

/* 대문 제목 숨기기 */
.mw-page-title-main.clbi-hide,
.mw-page-title-main.clbi-hide::after {
    display: none !important;
}

/* 본문 */
.Liberty .content-wrapper .liberty-content .liberty-content-main,
.mw-datatable th, .mw-datatable tr:hover td, textarea,
div.mw-warning-with-logexcerpt, div.mw-lag-warn-high,
div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon {
    background: #171717;
    color: #ffffff;
}

.mw-references-columns {
    border-top: 1px solid #414141 !important;
}

/* 문단 보더 */
.Liberty .content-wrapper .liberty-content .liberty-content-main h1,
.Liberty .content-wrapper .liberty-content .liberty-content-main h2,
.Liberty .content-wrapper .liberty-content .liberty-content-main h3,
.Liberty .content-wrapper .liberty-content .liberty-content-main h4,
.Liberty .content-wrapper .liberty-content .liberty-content-main h5,
.Liberty .content-wrapper .liberty-content .liberty-content-main h6 {
    margin-top: 1rem;
    border-bottom: 1px solid #414141 !important;
    margin-bottom: 0.6rem;
    padding-bottom: 0.6rem;
    overflow-wrap: break-word;
    overflow: hidden;
}

/* 링크 색상 */
a { color: #d45aa2 !important; }
a:hover { color: #fdecf9 !important; }
a:active { color: #b3337d !important; }
a.new { color: #ba0000 !important; }
a.new:hover { color: #fe5757 !important; }
a.new:active { color: #ba0000 !important; }
a.external { color: #33b733 !important; text-decoration: underline !important; }
a.external:hover { color: #95ed95 !important; }
a.external:active { color: #33b733 !important; }
a.external:before { display: none !important; }

/* CLBI 템플릿 링크 */
.CLBI-template a { color: #d45aa2 !important; }
.CLBI-template a:hover { color: #fdecf9 !important; }
.CLBI-template a:active { color: #b3337d !important; }
.CLBI-template a.new { color: #ba0000 !important; }
.CLBI-template a.new:hover { color: #fe5757 !important; }
.CLBI-template a.new:active { color: #ba0000 !important; }
.CLBI-template a.external { color: #33b733 !important; }
.CLBI-template a.external:hover { color: #95ed95 !important; }
.CLBI-template a.external:active { color: #33b733 !important; }

/* 편집 버튼 */
.btn-secondary {
    color: #e2e2e2 !important;
    background-color: #171717 !important;
    border: 2px solid #854369 !important;
    border-bottom: none !important;
    border-radius: 0 !important;
    box-shadow: 0 2px 0 0 #854369 !important;
}

.btn-secondary:hover {
    color: #d46262 !important;
    background-color: #171717 !important;
    border: 2px solid #854369 !important;
    border-bottom: none !important;
    border-radius: 0 !important;
    box-shadow: 0 2px 0 0 #854369 !important;
}

.btn-group .btn:first-child { border-radius: 5px 0 0 0 !important; }
.btn-group .dropdown-toggle { border-radius: 0 5px 0 0 !important; }

/* 기본 목차: 본문에서는 숨김 */
.liberty-content-main #toc,
.liberty-content-main .toc {
    display: none !important;
}

/* 왼쪽 목차: 전체 내용 영역 */
#side-toc-box .toc-sidebar-content {
    padding: 10px 12px !important;
}

/* 왼쪽 목차: 새로 생성한 목차 목록 */
#side-toc-box .generated-toc {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
}

/* 왼쪽 목차: 목록 항목 */
#side-toc-box .generated-toc li {
    margin: 0 0 4px 0 !important;
    padding: 0 !important;
    background: transparent !important;
    line-height: 1.5 !important;
}

#side-toc-box .generated-toc li:last-child {
    margin-bottom: 0 !important;
}

/* 왼쪽 목차: 링크 박스 */
#side-toc-box .generated-toc a {
    display: block !important;
    color: #E2E2E2 !important;
    text-decoration: none !important;
    padding: 4px 6px !important;
    border-radius: 4px !important;
    overflow: hidden !important;
}

#side-toc-box .generated-toc a:hover {
    background: rgba(133, 67, 105, 0.18) !important;
    color: #ffffff !important;
}

/* 왼쪽 목차: 긴 제목 감싸는 영역 */
#side-toc-box .toc-scroll-wrap {
    display: block !important;
    width: 100% !important;
    overflow: hidden !important;
    position: relative !important;
}

/* 왼쪽 목차: 실제로 스크롤되는 긴 제목에만 오른쪽 페이드 적용 */
#side-toc-box .toc-scroll-wrap.is-scrolling {
    mask-image: linear-gradient(to right, black 88%, transparent 100%) !important;
    -webkit-mask-image: linear-gradient(to right, black 88%, transparent 100%) !important;
}

/* 왼쪽 목차: 실제 스크롤되는 텍스트 */
#side-toc-box .toc-scroll-text {
    display: inline-block !important;
    white-space: nowrap !important;
    max-width: none !important;
}

/* 왼쪽 목차: h2 항목 */
#side-toc-box .toc-level-2 .toc-scroll-text {
    font-size: 12px !important;
    font-weight: 700 !important;
    color: #E2E2E2 !important;
}

/* 왼쪽 목차: h3 항목 */
#side-toc-box .toc-level-3 {
    padding-left: 12px !important;
}

#side-toc-box .toc-level-3 .toc-scroll-text {
    font-size: 11px !important;
    font-weight: 400 !important;
    color: #b8b8b8 !important;
}

#side-toc-box .toc-level-3 a:hover .toc-scroll-text {
    color: #ffffff !important;
}

/* 왼쪽 목차: 문서 스크롤 중에도 목차가 화면 안에 남도록 처리 */
#clbi-left-sidebar {
    align-self: stretch !important;
}

/* 왼쪽 목차: 목차 박스만 화면 상단에 고정되듯 따라오게 함 */
#side-toc-box {
    position: sticky !important;
    top: 10px !important;
    z-index: 1001;
    max-height: calc(100vh - 40px);
    overflow: hidden;
}

/* 왼쪽 목차: 항목이 많을 때 목차 내부만 스크롤되게 함 */
#side-toc-box .toc-sidebar-content {
    max-height: calc(100vh - 88px);
    overflow-y: auto;
    overflow-x: hidden;
}

/* 분류 칸 — 전역 단일 기준
   기본 상태는 숨김이다. JS가 현재 문서의 실제 분류 내용을 확인하고
   .clbi-catlinks-ready를 붙인 뒤에만 사용자에게 패널을 보여준다. */
#catlinks,
.catlinks {
    display: none !important;
}

#catlinks.clbi-catlinks-ready,
.catlinks.clbi-catlinks-ready {
    position: relative !important;
    z-index: 49 !important;
    display: block !important;
    visibility: visible !important;
    width: 100% !important;
    max-width: none !important;
    left: auto !important;
    right: auto !important;
    height: auto !important;
    min-height: 24px !important;
    max-height: none !important;
    margin: 4px 0 0 0 !important;
    padding: 4px 7px !important;
    box-sizing: border-box !important;
    background: #1d1d1d !important;
    border: 1px solid #050505 !important;
    border-radius: 0 !important;
    box-shadow:
        inset 0 1px 0 #555555,
        inset -1px 0 0 #555555,
        inset 1px 0 0 #101010,
        inset 0 -1px 0 #101010 !important;
    color: #e2e2e2 !important;
    font-size: 12px !important;
    line-height: 1.5 !important;
    text-align: left !important;
    text-shadow: 1px 1px 0 #000 !important;
    white-space: normal !important;
    overflow: visible !important;
}

#catlinks *,
.catlinks * {
    box-sizing: border-box !important;
}

#catlinks .mw-normal-catlinks,
.catlinks .mw-normal-catlinks,
#catlinks #mw-normal-catlinks,
.catlinks #mw-normal-catlinks,
#catlinks .mw-hidden-catlinks,
.catlinks .mw-hidden-catlinks,
#catlinks #mw-hidden-catlinks,
.catlinks #mw-hidden-catlinks,
#mw-hidden-catlinks.mw-hidden-catlinks,
#mw-hidden-catlinks.mw-hidden-cats-hidden,
#mw-hidden-catlinks.mw-hidden-cats-user-shown {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    width: auto !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    color: #e2e2e2 !important;
    font-size: 12px !important;
    line-height: 1.5 !important;
    white-space: normal !important;
    overflow: visible !important;
}

#catlinks .mw-hidden-catlinks,
.catlinks .mw-hidden-catlinks,
#catlinks #mw-hidden-catlinks,
.catlinks #mw-hidden-catlinks,
#mw-hidden-catlinks.mw-hidden-catlinks,
#mw-hidden-catlinks.mw-hidden-cats-hidden,
#mw-hidden-catlinks.mw-hidden-cats-user-shown {
    margin-top: 4px !important;
}

#catlinks.catlinks-allhidden .mw-hidden-catlinks,
.catlinks.catlinks-allhidden .mw-hidden-catlinks,
#catlinks.catlinks-allhidden #mw-hidden-catlinks,
.catlinks.catlinks-allhidden #mw-hidden-catlinks {
    margin-top: 0 !important;
}

#catlinks .mw-hidden-cats-hidden,
.catlinks .mw-hidden-cats-hidden,
#catlinks .mw-hidden-cats-user-shown,
.catlinks .mw-hidden-cats-user-shown {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
}

#catlinks ul,
.catlinks ul {
    display: inline !important;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
    list-style-image: none !important;
    background: transparent !important;
    border: 0 !important;
}

#catlinks li,
.catlinks li {
    display: inline !important;
    margin: 0 0 0 4px !important;
    padding: 0 !important;
    list-style: none !important;
    list-style-image: none !important;
    background: transparent !important;
    border: 0 !important;
    color: #e2e2e2 !important;
    font-size: 12px !important;
    line-height: 1.5 !important;
}

#catlinks li::before,
#catlinks li::after,
.catlinks li::before,
.catlinks li::after {
    content: none !important;
}

#catlinks a,
.catlinks a {
    display: inline !important;
    color: #e2e2e2 !important;
    text-decoration: none !important;
    font-size: 12px !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
}

#catlinks a:hover,
.catlinks a:hover {
    color: #ffffff !important;
    text-decoration: none !important;
}

/* JS가 DOM/config/API를 모두 확인한 뒤 실제 분류가 없다고 확정한 경우만 숨긴다.
   catlinks-allhidden 자체는 숨김 사유가 아니다. 숨은 분류 링크가 있으면 JS가
   .clbi-catlinks-empty를 제거하고 패널을 표시한다. */
#catlinks.clbi-catlinks-empty,
.catlinks.clbi-catlinks-empty,
#catlinks.clbi-catlinks-pending,
.catlinks.clbi-catlinks-pending {
    display: none !important;
}

body.clbi-main-page #catlinks,
body.clbi-main-page .catlinks {
    display: none !important;
}

#catlinks.clbi-catlinks-api-populated .mw-normal-catlinks,
.catlinks.clbi-catlinks-api-populated .mw-normal-catlinks {
    display: block !important;
}


/* 분류 문서 */
.mw-category-generated { color: #e2e2e2 !important; }
.mw-category-generated a { color: #854369 !important; }
.CategoryTreeToggle { color: #854369 !important; }
.number-link { color: #854369 !important; }

/* 편집 섹션 */
.mw-editsection {
    color: #b45c8f !important;
    float: right;
    font-weight: bold;
}

/* 넘겨주기 */
.mw-redirectedfrom { color: #854369 !important; }
.mw-redirectedfrom a { color: #854369 !important; }

/* 서브페이지 */
.subpages { color: #fdecec !important; }
.subpages a { color: #854369 !important; }
.subpages a:active { color: #854369 !important; }

/* 공지사항 */
.alert-info {
    background-color: #171717 !important;
    border: 2px solid #854369 !important;
    box-shadow: 0px 0px 3px #000000;
}

/* 푸터 */
.footer-info-lastmod { color: #e2e2e2 !important; }
.footer-info-copyright { color: #e2e2e2 !important; }
.footer-places-privacy a { color: #c95197 !important; }
.footer-places-privacy a:active { color: #e2e2e2 !important; }
.footer-places-about a { color: #c95197 !important; }
.footer-places-about a:active { color: #e2e2e2 !important; }
.footer-places-disclaimers a { color: #c95197 !important; }
.footer-places-disclaimers a:active { color: #e2e2e2 !important; }

/* 리스트 */
.liberty-content-main ul:not(#toc) {
    list-style-type: disc;
    list-style-image: none;
}

.liberty-content-main ul ul:not(#toc) {
    list-style-type: circle;
    list-style-image: none;
}

.liberty-content-main ul ul ul:not(#toc) {
    list-style-type: square;
    list-style-image: none;
}

/* 반전 */
.invert {
    filter: invert(1);
}

/* 편집 권한에 따라 우측 모서리 처리 */
.liberty-content.content-tools-hidden .liberty-content-main {
    border-top-right-radius: 5px !important;
}


/* 이미지 위에 이미지 얹기 */
.portrait-overlay-img,
.portrait-overlay-img a {
    max-width: none !important;
    max-height: none !important;
    overflow: visible !important;
}

.portrait-overlay-img img {
    height: var(--overlay-height, 180px) !important;
    width: auto !important;
    max-width: none !important;
    max-height: none !important;
}

/* 관련 틀 본문 하단 여백 보정 */
.related-template-body > *:last-child {
    margin-bottom: 1px !important;
}

.related-template-body table:last-child,
.related-template-body .wikitable:last-child,
.related-template-body [id^="collapsible"]:last-child {
    margin-bottom: 1px !important;
}

.related-template-body > br:last-child {
    display: none !important;
}

/* 컨트리볼 */
#clbi-left-nations-image {
    display: block;
    width: 100%;
    height: auto;
    margin: 0;
    padding: 0;
    border: 0;
}
/* =========================================
   Foundation UI — final standard class layer
   =========================================
   이 위키에서 새로 만드는 기반 UI가 곧 표준이다.
   새 범용 클래스에는 clbi/ui/v3 같은 접두사를 붙이지 않는다.
   기존 clbi-* 계열은 호환을 위해 유지하되, 새 공통 문법은 아래 표준명으로 통합한다.
*/

:root {
    --panel-surface: #1d1d1d;
    --well-surface: #080808;
    --edge-cut: #050505;
    --edge-light: #555555;
    --edge-dark: #101010;
    --text-title: #ffffff;
    --text-body: #e2e2e2;
    --text-muted: #626262;
    --text-dev: #8a8a8a;
    --frame-face: 8px;
    --item-gap: 2px;
    --line-ui-h: 24px;
    --line-face-h: 20px;
    --well-line-ui-h: 22px;
    --frame-title-h: 34px;
    --body-line-h: 18px;
}

.panel,
.frame,
.button,
.bookmark,
.bookmark-title,
.item,
.plate {
    background: var(--panel-surface);
    border: 1px solid var(--edge-cut);
    border-radius: 0;
    box-shadow:
        inset 0 1px 0 var(--edge-light),
        inset -1px 0 0 var(--edge-light),
        inset 1px 0 0 var(--edge-dark),
        inset 0 -1px 0 var(--edge-dark);
}

.well,
.content-well,
.input {
    background: var(--well-surface);
    border: 0;
    border-radius: 0;
    box-shadow:
        inset 0 1px 0 var(--edge-dark),
        inset -1px 0 0 var(--edge-dark),
        inset 1px 0 0 var(--edge-light),
        inset 0 -1px 0 var(--edge-light);
}

.button,
.bookmark,
.bookmark-title,
.line-control {
    height: var(--line-ui-h);
    min-height: var(--line-ui-h);
    max-height: var(--line-ui-h);
    line-height: var(--line-face-h);
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.input {
    height: var(--well-line-ui-h);
    min-height: var(--well-line-ui-h);
    max-height: var(--well-line-ui-h);
    line-height: var(--line-face-h);
    box-sizing: border-box;
}

.button,
.bookmark,
.bookmark-title,
.frame-title {
    font-size: 12px;
    font-weight: 700;
}

.input {
    font-size: 12px;
    font-weight: 400;
    color: var(--text-body);
    outline: 0;
}

.input::placeholder {
    color: var(--text-muted);
    opacity: 1;
}

.input:focus {
    box-shadow:
        inset 0 1px 0 var(--text-muted),
        inset -1px 0 0 var(--text-muted),
        inset 1px 0 0 var(--text-muted),
        inset 0 -1px 0 var(--text-muted);
}

.input:disabled,
.input[readonly] {
    color: var(--text-muted);
}

.frame-title {
    height: var(--frame-title-h);
    min-height: var(--frame-title-h);
    line-height: var(--frame-title-h);
    background: transparent;
    border: 0;
    box-shadow: none;
    color: var(--text-title);
}

.frame-title-inner {
    height: var(--frame-title-h);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
}

.frame-title-icon,
.icon-16 {
    width: 16px;
    height: 16px;
    flex: 0 0 16px;
    color: currentColor;
}

.bookmark {
    color: var(--text-muted);
}

.bookmark:hover,
.bookmark:focus,
.bookmark:active,
.bookmark.is-active {
    background: var(--panel-surface);
    color: var(--text-title);
    box-shadow:
        inset 0 1px 0 var(--edge-light),
        inset -1px 0 0 var(--edge-light),
        inset 1px 0 0 var(--edge-dark),
        inset 0 -1px 0 var(--edge-dark);
}

.content-well {
    min-height: var(--well-line-ui-h);
    padding: 1px 8px;
    color: var(--text-body);
    font-size: 12px;
    font-weight: 400;
    line-height: var(--line-face-h);
}

.body-text {
    color: var(--text-body);
    font-size: 12px;
    font-weight: 400;
    line-height: var(--body-line-h);
}

.body-text a,
.body-text a:visited,
.mw-parser-output a,
.mw-parser-output a:visited {
    color: var(--text-body);
    text-decoration: none;
}

.body-text a:hover,
.body-text a:focus,
.body-text a:visited:hover,
.body-text a:visited:focus,
.mw-parser-output a:hover,
.mw-parser-output a:focus,
.mw-parser-output a:visited:hover,
.mw-parser-output a:visited:focus {
    color: var(--text-title);
    text-decoration: underline;
}

.body-text a:active,
.body-text a:visited:active,
.mw-parser-output a:active,
.mw-parser-output a:visited:active {
    color: var(--text-body);
    text-decoration: underline;
}

/* Foundation correction — document link normalization
   일반 문서 링크는 방문 여부로 색을 바꾸지 않는다.
   hover/focus에서만 #ffffff와 밑줄로 클릭 가능 상태를 표시한다.
   글자 굵기는 기존 문맥을 유지한다. */
.liberty-content-main .mw-parser-output a:not(.new):not(.external),
.liberty-content-main .mw-parser-output a:not(.new):not(.external):visited,
#catlinks a,
.catlinks a {
    color: #e2e2e2 !important;
    text-decoration: none !important;
}

.liberty-content-main .mw-parser-output a:not(.new):not(.external):hover,
.liberty-content-main .mw-parser-output a:not(.new):not(.external):focus,
.liberty-content-main .mw-parser-output a:not(.new):not(.external):visited:hover,
.liberty-content-main .mw-parser-output a:not(.new):not(.external):visited:focus,
#catlinks a:hover,
#catlinks a:focus,
.catlinks a:hover,
.catlinks a:focus {
    color: #ffffff !important;
    text-decoration: underline !important;
}

.liberty-content-main .mw-parser-output a:not(.new):not(.external):active,
.liberty-content-main .mw-parser-output a:not(.new):not(.external):visited:active,
#catlinks a:active,
.catlinks a:active {
    color: #e2e2e2 !important;
    text-decoration: underline !important;
}

/* =========================================================
   Foundation wells — explicit 20px usable #080808 face (20260709-fix33)
   ---------------------------------------------------------
   A well has no #050505 outer edge. Its one-line border-box is 22px:
   1px top shadow + 20px usable #080808 face + 1px bottom reflection.
   Background layers are used instead of relying on inset shadows so the
   visible #080808 face is actually 20px in the final pixels.
   ========================================================= */
.well,
.content-well,
.input {
  background:
    linear-gradient(var(--edge-dark),var(--edge-dark)) 0 0 / 100% 1px no-repeat,
    linear-gradient(var(--edge-dark),var(--edge-dark)) 100% 0 / 1px 100% no-repeat,
    linear-gradient(var(--edge-light),var(--edge-light)) 0 0 / 1px 100% no-repeat,
    linear-gradient(var(--edge-light),var(--edge-light)) 0 100% / 100% 1px no-repeat,
    var(--well-surface);
  border:0;
  box-shadow:none;
}

.input,
.content-well {
  min-height:var(--well-line-ui-h);
  line-height:var(--line-face-h);
  box-sizing:border-box;
}

.input:focus {
  background:
    linear-gradient(var(--text-muted),var(--text-muted)) 0 0 / 100% 1px no-repeat,
    linear-gradient(var(--text-muted),var(--text-muted)) 100% 0 / 1px 100% no-repeat,
    linear-gradient(var(--text-muted),var(--text-muted)) 0 0 / 1px 100% no-repeat,
    linear-gradient(var(--text-muted),var(--text-muted)) 0 100% / 100% 1px no-repeat,
    var(--well-surface);
  box-shadow:none;
}

/* =========================================================
   Foundation wells — 22px one-line well / 20px usable #080808 face (20260709-fix35)
   ---------------------------------------------------------
   A one-line raised control remains 24px because it has both the #050505
   outer edge and the 1px inset. A well has no #050505 outer edge, so the
   well itself must be reduced to 22px: 1px shadow + 20px usable face +
   1px reflection. The #101010 / #555555 edges must not become 2px.
   ========================================================= */
:root {
  --well-line-ui-h:22px;
  --well-edge-h:1px;
}

.well,
.content-well,
.input {
  min-height:var(--well-line-ui-h);
  line-height:var(--line-face-h);
  box-sizing:border-box;
  background:
    linear-gradient(var(--edge-dark),var(--edge-dark)) 0 0 / 100% var(--well-edge-h) no-repeat,
    linear-gradient(var(--edge-dark),var(--edge-dark)) 100% 0 / var(--well-edge-h) 100% no-repeat,
    linear-gradient(var(--edge-light),var(--edge-light)) 0 0 / var(--well-edge-h) 100% no-repeat,
    linear-gradient(var(--edge-light),var(--edge-light)) 0 100% / 100% var(--well-edge-h) no-repeat,
    var(--well-surface);
  border:0;
  box-shadow:none;
}

.input {
  height:var(--well-line-ui-h);
  max-height:var(--well-line-ui-h);
  padding:1px 8px;
}

.content-well {
  padding:1px 8px;
}

.input:focus {
  background:
    linear-gradient(var(--text-muted),var(--text-muted)) 0 0 / 100% var(--well-edge-h) no-repeat,
    linear-gradient(var(--text-muted),var(--text-muted)) 100% 0 / var(--well-edge-h) 100% no-repeat,
    linear-gradient(var(--text-muted),var(--text-muted)) 0 0 / var(--well-edge-h) 100% no-repeat,
    linear-gradient(var(--text-muted),var(--text-muted)) 0 100% / 100% var(--well-edge-h) no-repeat,
    var(--well-surface);
  box-shadow:none;
}