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

(Install package: clbiwiki-mainpage-yisunshin-bitmap-transparent-20260712 / css/MainPage.css)
(Install package: whole-wiki-source-scan / css/MainPage.css)
태그: 수동 되돌리기
 
(같은 사용자의 중간 판 99개는 보이지 않습니다)
24번째 줄: 24번째 줄:
     --block-gap:2px;
     --block-gap:2px;
     --frame:8px;
     --frame:8px;
    --manifesto-divider-gap:8px;
     width:100%;
     width:100%;
     min-height:100%;
     min-height:100%;
147번째 줄: 148번째 줄:
     position:relative;
     position:relative;
     width:100%;
     width:100%;
     height:24px;
     height:36px;
     margin:0;
     margin:0;
     padding:0;
     padding:0;
185번째 줄: 186번째 줄:
     fill:none;
     fill:none;
     stroke-width:1;
     stroke-width:1;
     shape-rendering:geometricPrecision;
    vector-effect:non-scaling-stroke;
     shape-rendering:crispEdges;
}
}


262번째 줄: 264번째 줄:


/* -----------------------------------------
/* -----------------------------------------
대문 선언문 / 18px 1비트 비트맵 렌더링
대문 선언문 / 실제 픽셀 웹폰트 단일 구현
----------------------------------------- */
----------------------------------------- */
@font-face {
    font-family:'NanumMyeongjoBold Pixel 18';
    src:url('/fonts/NanumMyeongjoBoldPixel18.woff2?v=20260713-perfect-bottom-direct-002') format('woff2');
    font-weight:400;
    font-style:normal;
    font-display:block;
}


.main-portal .main-manifesto {
.main-portal .main-manifesto {
269번째 줄: 279번째 줄:
     min-height:0;
     min-height:0;
     width:100%;
     width:100%;
     padding:clamp(34px, 5vh, 64px) clamp(24px, 7vw, 112px);
    margin:0;
     padding:10px 0 24px;
     display:flex;
     display:flex;
     align-items:center;
     align-items:flex-start;
     justify-content:center;
     justify-content:center;
    overflow:visible;
}
}


.main-portal .main-manifesto-inner {
.main-portal .main-manifesto-inner {
     width:min(660px, 100%);
    position:relative !important;
     position:relative;
    top:0 !important;
     top:calc(-100px + var(--manifesto-snap-y, 0px));
    left:0 !important;
     left:var(--manifesto-snap-x, 0px);
     width:660px !important;
     transform:none;
    min-width:660px !important;
     margin:0 auto;
    max-width:660px !important;
     --manifesto-optical-shift-x:0px;
    height:auto !important;
     --manifesto-snap-x:0px;
    min-height:0 !important;
     --manifesto-snap-y:0px;
    max-height:none !important;
     color:#d8d8d8;
    margin:0 auto !important;
     font-family:'YiSunShin', serif !important;
    padding:0 !important;
     font-size:17px;
    overflow:visible !important;
    color:#e2e2e2 !important;
    background:transparent !important;
    transform:none !important;
}
 
.main-portal .main-manifesto-inner::before,
.main-portal .main-manifesto-inner::after {
    content:none !important;
    display:none !important;
    background:none !important;
}
 
.main-portal .main-manifesto-title {
     position:static !important;
     top:auto !important;
    left:auto !important;
    width:660px !important;
    height:calc(48px + var(--manifesto-divider-gap) + 1px) !important;
     min-height:calc(48px + var(--manifesto-divider-gap) + 1px) !important;
     max-height:calc(48px + var(--manifesto-divider-gap) + 1px) !important;
     margin:0 0 var(--manifesto-divider-gap) !important;
     padding:0 0 var(--manifesto-divider-gap) !important;
    overflow:visible !important;
    clip:auto !important;
    clip-path:none !important;
    color:#e2e2e2 !important;
     -webkit-text-fill-color:#e2e2e2 !important;
    background:transparent !important;
     border:0 !important;
     /* 구분선은 ManifestoIntro가 만드는 좌우 실선 두 개만 사용한다. */
    border-bottom:0 !important;
     font-family:'NanumMyeongjoBold Pixel 18' !important;
     font-size:36px !important;
     font-weight:400 !important;
     font-weight:400 !important;
     font-style:normal !important;
     font-style:normal !important;
     font-synthesis:none;
     font-synthesis:none !important;
     line-height:32px;
    font-kerning:none !important;
     letter-spacing:0;
    font-variant-ligatures:none !important;
     word-break:keep-all;
    font-feature-settings:'kern' 0, 'liga' 0 !important;
     overflow-wrap:break-word;
     line-height:48px !important;
     letter-spacing:0 !important;
     text-align:center !important;
    text-shadow:none !important;
     transform:none !important;
    user-select:text !important;
}
}


/* Theme.css의 전역 `* { font-family: inherit !important; }`보다 우선한다. */
.main-portal .main-manifesto-copy {
.main-portal .main-manifesto-inner,
    position:static !important;
.main-portal .main-manifesto-inner * {
    top:auto !important;
     font-family:'YiSunShin', serif !important;
    left:auto !important;
    width:620px !important;
    min-width:620px !important;
    max-width:620px !important;
    height:auto !important;
    margin:0 auto !important;
    padding:0 !important;
    overflow:visible !important;
    color:#e2e2e2 !important;
    -webkit-text-fill-color:#e2e2e2 !important;
    background:transparent !important;
     font-family:'NanumMyeongjoBold Pixel 18' !important;
    font-size:18px !important;
     font-weight:400 !important;
     font-weight:400 !important;
     font-style:normal !important;
     font-style:normal !important;
     font-synthesis:none !important;
     font-synthesis:none !important;
    font-kerning:none !important;
    font-variant-ligatures:none !important;
    font-feature-settings:'kern' 0, 'liga' 0 !important;
    line-height:26px !important;
    letter-spacing:0 !important;
    word-break:keep-all !important;
    overflow-wrap:break-word !important;
    text-align:left !important;
    text-shadow:none !important;
    transform:none !important;
    user-select:text !important;
}
}


.main-portal .main-manifesto-title {
.main-portal .main-manifesto-copy,
    margin:0 0 34px;
.main-portal .main-manifesto-copy * {
    color:#ffffff;
     font-family:'NanumMyeongjoBold Pixel 18' !important;
     font-family:'YiSunShin', serif !important;
     font-size:18px !important;
     font-size:36px;
     font-weight:400 !important;
     font-weight:400 !important;
     font-synthesis:none;
    font-style:normal !important;
     line-height:36px;
     font-synthesis:none !important;
     letter-spacing:4px;
    font-kerning:none !important;
     text-align:center;
    font-variant-ligatures:none !important;
    font-feature-settings:'kern' 0, 'liga' 0 !important;
     line-height:26px !important;
     letter-spacing:0 !important;
    color:#e2e2e2 !important;
    -webkit-text-fill-color:#e2e2e2 !important;
}
 
.main-portal .main-manifesto-copy p {
    position:static !important;
    top:auto !important;
    left:auto !important;
    width:620px !important;
    height:auto !important;
    margin:0 0 10px !important;
    padding:0 !important;
    overflow:visible !important;
    clip:auto !important;
    clip-path:none !important;
    white-space:normal !important;
    transform:none !important;
     user-select:text !important;
}
 
.main-portal .main-manifesto-copy p:last-child {
    margin-bottom:0 !important;
}
 
.main-portal .main-manifesto-bitmap,
.main-portal canvas.main-manifesto-bitmap {
    display:none !important;
}
}


.main-portal .main-manifesto p {
/*
길라잡이는 시대의 대륙 패널처럼 본문 DOM을 유지한 채 화면만 전환한다.
현재 단계에서는 왼쪽 더미 메뉴로 진입 애니메이션과 버튼 디자인만 확인한다.
*/
.main-portal .main-body-well > .main-guide-screen {
    flex:1 1 0;
    display:block;
     position:relative;
     position:relative;
     left:var(--manifesto-optical-shift-x, 0px);
    width:100%;
     margin:0 0 20px;
    height:auto;
     transform:none;
    min-height:0;
    margin:0;
    padding:0;
    overflow:hidden;
    background:transparent;
    border:0;
    box-shadow:none;
    z-index:1;
}
 
.main-portal .main-body-well > .main-guide-screen[hidden],
.main-portal .main-body-well > .main-manifesto[hidden] {
    display:none !important;
}
 
.main-portal .main-guide-menu {
    position:absolute;
    top:10px;
     left:10px;
    width:230px;
    margin:0;
    padding:0;
    display:flex;
    flex-direction:column;
    gap:2px;
    z-index:2;
}
 
.main-portal .main-guide-menu-item {
    width:230px;
    height:30px;
     margin:0;
    padding:0;
    opacity:0;
     transform:translateX(-240px);
    will-change:transform, opacity;
}
}


.main-portal .main-manifesto p:last-child {
.main-portal .main-guide-screen.is-guide-menu-entering .main-guide-menu-item {
     margin-bottom:0;
    animation:main-guide-menu-enter 260ms cubic-bezier(.16,.84,.24,1) both;
     animation-delay:calc(var(--guide-menu-order) * 44ms);
}
}


@media screen and (max-width:820px) {
@keyframes main-guide-menu-enter {
     .main-portal .main-manifesto {
    0% {
         padding:32px 24px;
        opacity:0;
        transform:translateX(-240px);
    }
    72% {
        opacity:1;
        transform:translateX(4px);
    }
     100% {
         opacity:1;
        transform:translateX(0);
     }
     }
}
.main-portal .main-guide-menu-button {
    appearance:none;
    -webkit-appearance:none;
    display:grid;
    grid-template-columns:30px minmax(0,1fr) 14px;
    align-items:center;
    width:230px;
    height:30px;
    margin:0;
    padding:0;
    overflow:hidden;
    box-sizing:border-box;
    color:#e2e2e2;
    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;
    font-family:inherit;
    font-size:12px;
    font-weight:700;
    line-height:28px;
    text-align:left;
    text-shadow:1px 1px 0 #050505;
    cursor:pointer;
}
.main-portal .main-guide-menu-number {
    display:block;
    width:30px;
    height:28px;
    color:#8f8f8f;
    background:#101010;
    border-right:1px solid #050505;
    box-shadow:inset 0 1px 0 #242424;
    line-height:28px;
    text-align:center;
}
.main-portal .main-guide-menu-label {
    display:block;
    min-width:0;
    height:28px;
    padding:0 8px;
    overflow:hidden;
    line-height:28px;
    white-space:nowrap;
    text-overflow:ellipsis;
}


     .main-portal .main-manifesto-inner {
.main-portal .main-guide-menu-arrow {
         font-size:16px;
    display:block;
         line-height:30px;
    width:14px;
    height:28px;
    color:#8f8f8f;
    line-height:27px;
    text-align:center;
}
 
.main-portal .main-guide-menu-button:hover,
.main-portal .main-guide-menu-button:focus-visible {
    color:#ffffff;
    background:#242424;
    outline:0;
}
 
.main-portal .main-guide-menu-button:hover .main-guide-menu-number,
.main-portal .main-guide-menu-button:focus-visible .main-guide-menu-number,
.main-portal .main-guide-menu-button:hover .main-guide-menu-arrow,
.main-portal .main-guide-menu-button:focus-visible .main-guide-menu-arrow {
     color:#ffffff;
}
 
.main-portal .main-guide-menu-button:active {
    color:#e2e2e2;
    background:#101010;
    box-shadow:
        inset 0 1px 0 #101010,
        inset -1px 0 0 #101010,
        inset 1px 0 0 #555555,
         inset 0 -1px 0 #555555;
}
 
@media (prefers-reduced-motion:reduce) {
    .main-portal .main-guide-screen.is-guide-menu-entering .main-guide-menu-item {
        animation:none;
         opacity:1;
        transform:none;
     }
     }
}
/* -----------------------------------------
상단 카테고리 중앙 「프로젝트」 기둥 / 20260716
-----------------------------------------
버튼 2개 - #1d1d1d 기둥 - 버튼 2개.
CategoryPillar.js가 기존 project 버튼의 좌우 사선과 2px 간격을 그대로 사용한다.
기둥은 같은 경사를 유지한 채 SVG의 위·아래로 3px 우물을 관통하며 외곽 프레임과 같은
#1d1d1d 면에 직접 닿는다. 상하 외곽선은 두지 않아 하나의 패널로
이어진다. 버튼과 접하는 좌우의 #050505 외곽선은 생략하되,
기존 안쪽 방향성 광원선을 그 외곽선 좌표로 한 칸 이동한다.
안쪽선이 있던 자리는 별도 선 없이 #1d1d1d 본체 면으로 돌아간다.
*/
.main-portal .portal-category-svg.has-category-pillar
.portal-cat-anchor[data-category-key="project"],
.main-portal .portal-category-svg.has-category-pillar
.portal-category-pillar-source {
    display:none !important;
    pointer-events:none !important;
}
.main-portal .portal-category-pillar {
    pointer-events:none;
    shape-rendering:crispEdges;
}
.main-portal .portal-category-pillar-surface {
    fill:#1d1d1d;
    stroke:none;
}
.main-portal .portal-category-pillar-line {
    fill:none;
    stroke-width:1;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}
.main-portal .portal-category-pillar-shadow {
    stroke:#101010;
}
.main-portal .portal-category-pillar-highlight {
    stroke:#555555;
}


     .main-portal .main-manifesto-title {
.main-portal .portal-category-pillar-label {
        margin-bottom:28px;
    fill:#e2e2e2;
        font-size:32px;
    cursor:default;
        line-height:32px;
     pointer-events:none;
        letter-spacing:4px;
}
     }
 
/* -----------------------------------------
상단 카테고리 하단 회전·접합형 작품 버튼 / 20260716
-----------------------------------------
설정 왼쪽부터 기업 및 공동체 오른쪽까지의 실제 SVG 경계를 읽어
중앙 프레임의 최외곽 폭으로 사용한다. 좌우 투명 영역은 새 프레임으로
채우지 않는다. 형상은 위가 넓고 아래가 좁아지도록 뒤집고, 기존 상단
프레임 하단 9px 안으로 겹쳐 하나로 접합한다.
좌우 경사는 기존 설정·기업 버튼 사선의 화면상 기울기를 그대로 연장한다.
외곽·프레임 면·우물·버튼의 x 좌표도 같은 직선식으로 투영해 전 층의
사선이 서로 평행하고 끊김 없이 이어지게 한다.
두 프레임이 실제로 포개지는 상단 8px에서는 #050505를 #1d1d1d 면으로
덮는다. 좌우 방향선은 외곽선에서 재계산하지 않고 기존 설정 버튼의 좌측
인셋선과 기업 버튼의 우측 인셋선을 직접 읽어 같은 직선으로 연장한다.
 
초기 길라잡이 규격:
- 버튼 외곽 22px
- 프레임 실색 #1d1d1d 7px
- 우물 간격 2px
- 전체 부착 행 43px
*/
.main-portal > [data-component="portal-section-nav"] {
    flex:0 0 43px !important;
    display:block !important;
    width:100% !important;
    height:43px !important;
    min-height:43px !important;
    max-height:43px !important;
    margin:-9px 0 0 !important;
    padding:0 !important;
    position:relative !important;
    overflow:hidden !important;
    z-index:4 !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
}
 
.main-portal .portal-section-nav,
.main-portal .portal-section-svg {
    display:block !important;
    width:100% !important;
    height:43px !important;
    margin:0 !important;
    padding:0 !important;
    overflow:visible !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
}
 
.main-portal .portal-section-frame-edge {
    fill:#050505;
    stroke:none;
}
 
.main-portal .portal-section-frame-outline {
    fill:none;
    stroke:#050505;
    stroke-width:1;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}
 
.main-portal .portal-section-frame-surface {
    fill:#1d1d1d;
    stroke:none;
}
 
.main-portal .portal-section-frame-well {
    fill:#080808;
    stroke:none;
}
 
.main-portal .portal-section-frame-edge,
.main-portal .portal-section-frame-surface,
.main-portal .portal-section-frame-well,
.main-portal .portal-section-join-side-cover,
.main-portal .portal-section-button-geometry .portal-cat-edge,
.main-portal .portal-section-button-geometry .portal-cat-surface {
    shape-rendering:crispEdges;
}
 
.main-portal .portal-section-join-side-cover {
    fill:#1d1d1d;
    stroke:none;
}
 
.main-portal > [data-component="portal-section-nav"]::after {
    content:"";
    display:block;
    position:absolute;
    top:0;
    left:10%;
    right:auto;
    width:80%;
    height:7px;
    box-sizing:border-box;
    margin:0;
    padding:0;
    z-index:2147483647;
    pointer-events:none;
    background:#1d1d1d;
    border:0;
    box-shadow:none;
}
 
.main-portal .portal-section-frame-highlight,
.main-portal .portal-section-frame-shadow,
.main-portal .portal-section-well-highlight,
.main-portal .portal-section-well-shadow {
    fill:none;
    stroke-width:1;
     vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}
 
.main-portal .portal-section-frame-highlight,
.main-portal .portal-section-well-highlight {
    stroke:#555555;
}
 
.main-portal .portal-section-frame-shadow,
.main-portal .portal-section-well-shadow {
    stroke:#101010;
}
 
.main-portal .portal-section-anchor,
.main-portal .portal-section-button-geometry {
    pointer-events:auto;
}
 
.main-portal .portal-section-label {
    fill:#e2e2e2;
}
 
/* 선언문 전용 장식은 길라잡이 화면으로 넘어갈 때 함께 숨긴다. */
.main-portal.is-guide-screen-active .main-body-well > .wiki-decoration,
.main-portal.is-guide-screen-active .main-body-well > [data-wiki-decoration-rendered="1"] {
    visibility:hidden !important;
    pointer-events:none !important;
}
}


@media screen and (max-width:620px) {
@media screen and (max-width:700px) {
     .main-portal .main-manifesto {
     .main-portal .main-manifesto {
         padding:28px 16px;
         padding-top:10px;
        overflow-x:auto;
        justify-content:flex-start;
     }
     }
}
/* -----------------------------------------
하단 길라잡이 버튼
-----------------------------------------
상단의 설정–프로젝트–기업 및 공동체 합산 폭을 공유한다.
사선 방향은 상단 묶음과 반대로, 넓은 변이 하단에 놓인다.
*/
.main-portal [data-component="category-guide-nav"] {
    flex:0 0 auto;
    display:block;
    width:100%;
    height:65px;
    margin:2px 0 0;
    padding:0;
    position:relative;
    z-index:2147483000 !important;
    pointer-events:auto;
}


     .main-portal .main-manifesto-inner {
.main-portal .portal-guide-nav {
        font-size:14px;
     width:100%;
        line-height:26px;
    height:65px;
    }
    margin:0;
    background:var(--well, #080808);
}
 
.main-portal .portal-guide-svg {
    width:100%;
    height:65px;
}


    .main-portal .main-manifesto-title {
.main-portal .portal-guide-label {
        margin-bottom:24px;
    fill:#e2e2e2;
        font-size:28px;
        line-height:28px;
        letter-spacing:3px;
    }
}
}


/* 본문 데코가 별도 stacking context를 만들더라도 길라잡이 클릭면을 최상단에 유지한다. */
.main-portal .portal-guide-nav,
.main-portal .portal-guide-svg,
.main-portal .portal-guide-anchor {
    position:relative;
    z-index:2147483000 !important;
}


/* -----------------------------------------
/* -----------------------------------------
18px 비트맵 선언문 표시 / Common.js 통합 렌더러
대문 본문 패널 / 실제 래퍼·데코 클리핑
-----------------------------------------
-----------------------------------------
원문 h2/p는 DOM에 남겨 검색·복사·접근성의 원본으로 사용한다.
구조:
아틀라스 로드와 렌더링이 성공한 뒤에만 시각적으로 숨긴다.
로고 → 상단 버튼 → #1d1d1d 본문 프레임
Canvas의 내부 크기와 CSS 크기는 항상 같은 정수 px이다.
                    └ #080808 우물
                      ├ 선언문
                      ├ 대문 데코
                      └ 길라잡이
 
외곽 프레임과 내부 우물 모두 paint를 잘라낸다.
따라서 데코는 저장된 좌표와 z-index에 관계없이
#1d1d1d 프레임의 경계를 넘어 보일 수 없다.
*/
*/
.main-portal .main-manifesto-bitmap {
.main-portal .main-body-panel {
     display:block;
    flex:1 0 auto;
     width:auto;
    min-height:0;
     max-width:100%;
    width:100%;
     height:auto;
    margin:2px 0 0;
     margin:0 auto;
    padding:9px;
     padding:0;
    position:relative;
     display:flex;
    flex-direction:column;
    overflow:hidden;
    isolation:isolate;
    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;
}
 
.main-portal .main-body-well {
     flex:1 0 auto;
     min-height:0;
    width:100%;
     position:relative;
    display:flex;
    flex-direction:column;
    overflow:hidden;
     isolation:isolate;
     background:#080808;
     border:0;
     border:0;
     background:transparent;
    /* 오목한 우물의 안쪽 경계: 상단/우측 어둡게, 좌측/하단 밝게. */
     image-rendering:pixelated;
    box-shadow:
     image-rendering:crisp-edges;
        inset 0 1px 0 #101010,
        inset -1px 0 0 #101010,
        inset 1px 0 0 #555555,
        inset 0 -1px 0 #555555;
}
 
/* 기존 선언문 좌표와 폭은 유지하되 새 우물 안의 흐름 요소로 둔다. */
.main-portal .main-body-well > .main-manifesto {
    flex:1 0 auto;
    min-height:0;
    width:100%;
    margin:0 !important;
    /*
    길라잡이 하단에 추가한 3px을 전체 높이에 더하지 않는다.
    기존 하단 여유 24px 안에서 3px을 넘겨 전체 패널 높이를 보존한다.
    */
    padding:10px 0 21px !important;
    position:relative !important;
    top:auto !important;
    left:auto !important;
    overflow:visible !important;
     background:transparent !important;
     border:0 !important;
     box-shadow:none !important;
     transform:none !important;
     transform:none !important;
    z-index:1;
}
}


.main-portal .main-manifesto-inner.is-bitmap-ready > .main-manifesto-title,
/*
.main-portal .main-manifesto-inner.is-bitmap-ready > p {
대문 장식 렌더러가 일반 장식을 이 우물의 직접 자식으로 넣는다.
position:absolute를 보장하고, 우물 overflow:hidden으로 절단한다.
*/
.main-portal .main-body-well > .wiki-decoration,
.main-portal .main-body-well > [data-wiki-decoration-rendered="1"] {
     position:absolute !important;
     position:absolute !important;
     width:1px !important;
     margin:0 !important;
     height:1px !important;
    max-width:none !important;
     margin:-1px !important;
     max-height:none !important;
}
 
/* 길라잡이는 우물 최하단의 정상 흐름 요소다. */
.main-portal .main-body-well > [data-component="category-guide-nav"] {
    flex:0 0 65px;
    display:block !important;
    width:100% !important;
     min-width:0 !important;
    max-width:none !important;
    height:65px !important;
    /*
    위쪽은 2px.
    아래쪽은 우물의 1px inset을 제외하고 순수 #080808이 2px 보이도록
    CSS margin-bottom을 3px로 둔다.
    */
    margin:2px 0 3px !important;
     padding:0 !important;
     padding:0 !important;
    position:relative !important;
    overflow:visible !important;
    z-index:2147483000 !important;
    pointer-events:auto !important;
}
.main-portal .main-body-well .portal-guide-nav,
.main-portal .main-body-well .portal-guide-svg,
.main-portal .main-body-well .portal-guide-anchor {
    position:relative;
    z-index:2147483000 !important;
}
/* 실패했던 display:contents 우회 구조는 사용하지 않는다. */
.main-portal > .main-body-panel,
.main-portal .main-body-well {
    box-sizing:border-box;
}
@media screen and (max-width:700px) {
    .main-portal .main-body-panel {
        min-width:660px;
    }
}
/* -----------------------------------------
대문 높이 체인 / 외부 스크롤 완전 제거
-----------------------------------------
Layout.css의 .mw-parser-output은 일반 문서를 위해 overflow-y:auto이다.
대문에서는 전체 패널이 남은 높이를 정확히 나눠 써야 하므로 예외 처리한다.
핵심:
- 바깥 스크롤 박스 비활성화
- 높이 전달 체인을 100%로 고정
- 각 세로 flex 구간을 flex:1 1 0으로 축소 가능하게 변경
- min-height:0으로 min-content 높이 강제 확장을 차단
*/
body.action-view.clbi-main-page .liberty-content-main,
body.action-view.clbi-main-page .liberty-content-main > #mw-content-text,
body.action-view.clbi-main-page .liberty-content-main > .mw-body-content,
body.action-view.clbi-main-page .liberty-content-main #mw-content-text,
body.action-view.clbi-main-page .liberty-content-main .mw-body-content,
body.action-view.clbi-main-page .liberty-content-main .mw-parser-output {
    min-height:0 !important;
    overflow:hidden !important;
}
body.action-view.clbi-main-page .liberty-content-main .mw-parser-output {
    flex:1 1 0 !important;
    height:100% !important;
    max-height:100% !important;
    display:flex !important;
    flex-direction:column !important;
    overflow-y:hidden !important;
    overflow-x:hidden !important;
    scrollbar-width:none !important;
}
body.action-view.clbi-main-page .liberty-content-main .mw-parser-output::-webkit-scrollbar {
    display:none !important;
    width:0 !important;
    height:0 !important;
}
body.action-view.clbi-main-page .liberty-content-main .mw-parser-output > .main-portal {
    flex:1 1 0 !important;
    width:100% !important;
    height:100% !important;
    min-height:0 !important;
    max-height:100% !important;
    overflow:hidden !important;
}
body.action-view.clbi-main-page .main-portal {
    flex:1 1 0 !important;
    height:100% !important;
    min-height:0 !important;
    max-height:100% !important;
    overflow:hidden !important;
}
body.action-view.clbi-main-page .main-portal .main-body-panel {
    flex:1 1 0 !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
     overflow:hidden !important;
     overflow:hidden !important;
     clip:rect(0 0 0 0) !important;
}
     clip-path:inset(50%) !important;
 
     white-space:nowrap !important;
body.action-view.clbi-main-page .main-portal .main-body-well {
    flex:1 1 0 !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    overflow:hidden !important;
}
 
body.action-view.clbi-main-page .main-portal .main-body-well > .main-manifesto {
    flex:1 1 0 !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    overflow:hidden !important;
}
 
/* 길라잡이는 42px 본체·광원 + 상하 1px #050505 외곽선으로 44px이다.
  상하 2px #080808 간격, 상단 9px·하단 8px 프레임을 포함한 전체 행은 65px이다.
  상단 9px 중 외곽선·광원선을 제외한 #1d1d1d 실색 영역은 7px이다. */
body.action-view.clbi-main-page
.main-portal
.main-body-well > [data-component="category-guide-nav"] {
     flex:0 0 65px !important;
}
 
/* -----------------------------------------
버튼 프레임 / 상단 유지·하단 연속 용접
-----------------------------------------
상단 총 36px:
4px 프레임 + 2px #080808 + 24px 버튼 + 2px #080808 + 4px 프레임
 
하단 총 65px:
중앙에서 위로 솟은 패널 하단 프레임 + 2px #080808
+ 44px 길라잡이 외곽 + 2px #080808 + 공유 하단 프레임
 
하단은 별도 ㄷ자 상자가 아니다.
본문 패널의 하단 외곽선 자체가 중앙에서 사선으로 올라갔다 내려오는
하나의 연속된 프레임이다.
*/
 
/* ─────────────────────────────────────────
상단: 버튼 24px / 프레임과 2px 간격을 실제로 확보
───────────────────────────────────────── */
.main-portal > [data-component="category-nav"] {
    flex:none !important;
    display:block !important;
    width:100% !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    margin:0 !important;
    padding:8px !important;
    position:relative !important;
    overflow:hidden !important;
    isolation:isolate !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;
}
 
.main-portal > [data-component="category-nav"] > .portal-category-nav {
    display:block !important;
    position:relative !important;
    width:100% !important;
     height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    margin:0 !important;
    padding:2px !important;
    overflow:hidden !important;
    box-sizing:border-box !important;
    background:#080808 !important;
     border:0 !important;
     border:0 !important;
    /* 2px 간격은 순수 #080808이며 별도 광원선을 두지 않는다. */
    box-shadow:none !important;
}
.main-portal > [data-component="category-nav"] .portal-category-svg {
    display:block !important;
    position:relative !important;
    inset:auto !important;
    width:100% !important;
    height:24px !important;
    min-height:24px !important;
    max-height:24px !important;
    overflow:visible !important;
}
/* ─────────────────────────────────────────
하단: 기본 하단 프레임 위로만 중앙 버튼 프레임이 돌출
───────────────────────────────────────── */
/*
본문 패널의 기본 하단 프레임 두께는 유지하고,
그 위로만 길라잡이 사다리꼴 프레임이 돌출된다.
패널 전체가 두꺼운 하단 밴드가 되지 않도록 한다.
*/
body.action-view.clbi-main-page .main-portal .main-body-panel,
.main-portal .main-body-panel {
    padding:9px !important;
    border-bottom:0 !important;
    box-shadow:
        inset 0 1px 0 #555555,
        inset -1px 0 0 #555555,
        inset 1px 0 0 #101010 !important;
}
.main-portal .main-body-panel > [data-component="category-guide-nav"] {
    display:block !important;
    position:absolute !important;
    left:0 !important;
    right:0 !important;
    bottom:0 !important;
    width:auto !important;
    height:65px !important;
    min-height:65px !important;
    max-height:65px !important;
    margin:0 !important;
    padding:0 !important;
    overflow:visible !important;
    isolation:isolate !important;
    z-index:2147483000 !important;
    pointer-events:auto !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
}
.main-portal .main-body-panel > [data-component="category-guide-nav"] > .portal-guide-nav,
.main-portal .main-body-panel > [data-component="category-guide-nav"] .portal-guide-svg {
    display:block !important;
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:65px !important;
    min-height:65px !important;
    max-height:65px !important;
    margin:0 !important;
    padding:0 !important;
    overflow:visible !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
    z-index:2147483000 !important;
}
/* 기본 하단 프레임 + 중앙 돌출 프레임 */
.main-portal .portal-guide-panel-bottom-surface,
.main-portal .portal-guide-weld-outer {
    fill:#1d1d1d;
    stroke:none;
}
.main-portal .portal-guide-weld-well {
    fill:#080808;
    stroke:none;
}
.main-portal .portal-guide-panel-bottom-edge,
.main-portal .portal-guide-weld-edge {
    stroke:#050505;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}
/* 하단 기본 프레임: 상단만 #555555, 하단만 #101010. */
.main-portal .portal-guide-panel-bottom-highlight,
.main-portal .portal-guide-panel-bottom-shadow,
.main-portal .portal-guide-weld-shadow,
.main-portal .portal-guide-panel-bottom-inner {
    stroke:#101010;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}
/* 실제 길라잡이 버튼 외곽은 44px 사다리꼴이다. 바깥 돌출 프레임만 하단 기본 프레임과 용접된다. */
.main-portal .portal-guide-nav.is-continuous-weld
.portal-cat-inset-bottom {
    display:block !important;
}
/*
길라잡이 진입 상태:
- 전체 좌표계가 65px에서 45px로 실제 축소된다.
- 중앙 버튼은 44px에서 24px으로만 줄고, #1d1d1d 실면 7px의 9/8px 프레임은 유지한다.
- 좌우 우물은 중앙 버튼과 접합되는 단일 메인 프레임이 하단에서 올라와 메운다.
*/
.main-portal .portal-guide-button-geometry {
    transform:none;
}
.main-portal .portal-guide-rising-main-frame {
    transform-box:fill-box;
    transform-origin:center bottom;
}
}


.main-portal .main-manifesto-inner[data-bitmap-state="failed"] .main-manifesto-bitmap {
.main-portal .portal-guide-rising-main-frame-edge {
    fill:#050505;
    stroke:none;
    shape-rendering:crispEdges;
}
 
.main-portal .portal-guide-rising-main-frame-surface {
    fill:#1d1d1d;
    stroke:none;
    shape-rendering:crispEdges;
}
 
.main-portal .portal-guide-rising-main-frame-highlight-top,
.main-portal .portal-guide-rising-main-frame-highlight-left {
    fill:#555555;
    stroke:none;
    shape-rendering:crispEdges;
}
 
.main-portal .portal-guide-rising-main-frame-shadow-right,
.main-portal .portal-guide-rising-main-frame-shadow-bottom {
    fill:#101010;
    stroke:none;
    shape-rendering:crispEdges;
}
 
/* 예전 우물 내부 mount 규칙 차단 */
.main-portal .main-body-well > [data-component="category-guide-nav"],
body.action-view.clbi-main-page
.main-portal
.main-body-well > [data-component="category-guide-nav"] {
    flex:none !important;
    width:0 !important;
    height:0 !important;
    min-height:0 !important;
    max-height:0 !important;
    margin:0 !important;
    padding:0 !important;
    overflow:hidden !important;
}
 
@media screen and (max-width:700px) {
    .main-portal > [data-component="category-nav"],
    .main-portal .main-body-panel {
        min-width:660px !important;
    }
}
 
 
 
/* -----------------------------------------
광원선 중복 방지 확정 규칙
-----------------------------------------
#555555는 독립된 #1d1d1d 돌출면의 상단·우측에만 사용한다.
#101010은 같은 면의 좌측·하단에만 사용한다.
#080808 우물과 2px 간격에는 광원선을 추가하지 않는다.
*/
.main-portal > [data-component="category-nav"] > .portal-category-nav {
    box-shadow:none !important;
}
 
/* 본문 우물은 오목한 방향성 선을 유지한다. */
.main-portal .main-body-well {
    box-shadow:
        inset 0 1px 0 #101010,
        inset -1px 0 0 #101010,
        inset 1px 0 0 #555555,
        inset 0 -1px 0 #555555 !important;
}
 
/* -----------------------------------------
프레임 안쪽선·하단 아치 오버레이 확정 규칙
-----------------------------------------
상단:
- 기존 구조와 치수 유지
- #1d1d1d 프레임의 안쪽 경계에 방향성 1px 선 추가
- 안쪽 우물 경계는 상단/우측 #101010, 좌측/하단 #555555
- 선은 프레임의 마지막 1px에 놓여 2px #080808 간격을 침범하지 않음
 
하단:
- main-body-panel의 원래 전체 프레임을 그대로 복구
- SVG는 전체 하단 프레임을 다시 그리지 않음
- 버튼과 하부를 비운 중앙 아치형 프레임 조각만 기존 프레임 위에 얹음
*/
 
/* 상단 외곽 프레임의 안쪽 우물 경계
  우물은 오목하므로 돌출면과 반대 방향이다.
  상단/우측 #101010, 좌측/하단 #555555. */
.main-portal > [data-component="category-nav"]::after {
    content:"";
    display:block;
    position:absolute;
    inset:8px;
    z-index:3;
    pointer-events:none;
    box-sizing:border-box;
    border-style:solid;
    border-width:1px;
    border-color:#101010 #101010 #555555 #555555;
}
 
/* 2px 우물 간격과 버튼은 안쪽선보다 아래 레이어에 둔다. */
.main-portal > [data-component="category-nav"] > .portal-category-nav {
    z-index:1 !important;
    box-shadow:none !important;
}
 
.main-portal > [data-component="category-nav"] .portal-category-svg {
    z-index:1 !important;
}
 
/* 기존 본문 패널의 전체 프레임을 복구한다. */
body.action-view.clbi-main-page .main-portal .main-body-panel,
.main-portal .main-body-panel {
    padding:9px !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;
}
 
/* 아치 오버레이 좌표계. 패널 하부 자체는 투명하게 둔다. */
.main-portal .main-body-panel > [data-component="category-guide-nav"] {
    height:65px !important;
    min-height:65px !important;
    max-height:65px !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
}
 
.main-portal .main-body-panel > [data-component="category-guide-nav"] > .portal-guide-nav,
.main-portal .main-body-panel > [data-component="category-guide-nav"] .portal-guide-svg {
    height:65px !important;
    min-height:65px !important;
    max-height:65px !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
}
 
/* 아치 프레임 면과 내부 우물 */
.main-portal .portal-guide-arch-outer {
    fill:#1d1d1d;
    stroke:none;
}
 
.main-portal .portal-guide-arch-well {
    fill:#080808;
    stroke:none;
}
 
/* 아치의 최외곽: 상단과 양쪽 사선만 */
.main-portal .portal-guide-arch-edge {
    stroke:#050505;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}
 
/* 바깥 돌출면의 광원 */
.main-portal .portal-guide-arch-highlight {
    stroke:#555555;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}
 
.main-portal .portal-guide-arch-shadow {
    stroke:#101010;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}
 
 
/* 버튼과 마주 보는 하단 본문 프레임의 상단 1px만 담당한다.
  선 stroke가 아니라 정수 좌표의 1px rect이므로 2px로 번지지 않는다. */
.main-portal .portal-guide-facing-highlight {
    fill:#555555;
    stroke:none;
    shape-rendering:crispEdges;
}
 
/* 아치 안쪽 우물 경계: 상단/우측 어두움, 좌측 밝음. 하부는 열림. */
.main-portal .portal-guide-arch-inner-highlight {
    stroke:#101010;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}
 
.main-portal .portal-guide-arch-inner-shadow {
    stroke:#555555;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}
 
/* 이전 SVG가 그리던 독립 하단 프레임은 강제로 숨긴다. */
.main-portal .portal-guide-panel-bottom-surface,
.main-portal .portal-guide-panel-bottom-edge,
.main-portal .portal-guide-panel-bottom-highlight,
.main-portal .portal-guide-panel-bottom-shadow,
.main-portal .portal-guide-panel-bottom-inner,
.main-portal .portal-guide-weld-outer,
.main-portal .portal-guide-weld-well,
.main-portal .portal-guide-weld-edge,
.main-portal .portal-guide-weld-highlight,
.main-portal .portal-guide-weld-shadow {
     display:none !important;
     display:none !important;
}
}


/* -----------------------------------------
/* -----------------------------------------
대문 선언문 / 정적 1비트 비트맵 확정 표시
최종 시각 픽셀 보정 / 20260712
-----------------------------------------
-----------------------------------------
본문용 재조판:
목표는 선언값이 아니라 화면에서 보이는 색 면이다.
- 자간 -3px
 
- 행 피치 28px
상단 카테고리:
- 문단 추가 간격 16px
- 우물 inset 1px
- 제목 2배 정수 배율
- 순수 #080808 간격 2px
- 660px 고정 폭
- 실제 버튼 22px
- 기존 전체 높이는 유지
 
본문 패널:
- #050505 외곽선 1px
- 방향성 inset 1px
- 순수 #1d1d1d 면 7px
- 내부 #080808 우물
*/
 
/* ─────────────────────────────────────────
상단 카테고리: 실제 보이는 우물 간격 2px
───────────────────────────────────────── */
.main-portal > [data-component="category-nav"] {
    padding:8px !important;
    background:#1d1d1d !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;
}
 
/* 이전 border 기반 내부선은 코너 혼색을 만들므로 완전히 제거한다. */
.main-portal > [data-component="category-nav"]::after {
    content:none !important;
    display:none !important;
    border:0 !important;
    box-shadow:none !important;
}
 
/*
우물 inset 1px + padding 3px.
첫 1px은 inset이고, 그 뒤 순수 #080808이 정확히 2px 남는다.
*/
*/
.main-portal .main-manifesto-inner {
.main-portal > [data-component="category-nav"] > .portal-category-nav {
     width:660px !important;
    display:block !important;
     min-width:660px !important;
    position:relative !important;
     max-width:660px !important;
     width:100% !important;
     height:649px !important;
    height:auto !important;
     min-height:649px !important;
     margin:0 !important;
     max-height:649px !important;
    padding:3px !important;
    box-sizing:border-box !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;
}
 
.main-portal > [data-component="category-nav"] .portal-category-svg {
    display:block !important;
    position:relative !important;
    inset:auto !important;
    width:100% !important;
     height:22px !important;
     min-height:22px !important;
     max-height:22px !important;
     overflow:visible !important;
     overflow:visible !important;
}
}


.main-portal .main-manifesto-inner::before {
/* ─────────────────────────────────────────
     content:"";
본문 패널: 순수 #1d1d1d 면 7px + 선명한 inset
───────────────────────────────────────── */
body.action-view.clbi-main-page .main-portal .main-body-panel,
.main-portal .main-body-panel {
    padding:8px !important;
    position:relative !important;
    background:#1d1d1d !important;
    border:1px solid #050505 !important;
    border-radius:0 !important;
    box-shadow:none !important;
}
 
/*
box-shadow 코너 중첩 대신 네 개의 불투명 1px 면을 직접 그린다.
첫 번째 레이어가 코너 우선권을 가진다.
- 상단 #555555가 좌상단/우상단 우선
- 우측 #555555가 우하단 우선
- 좌측/하단 #101010
*/
body.action-view.clbi-main-page .main-portal .main-body-panel::before,
.main-portal .main-body-panel::before {
     content:"" !important;
    display:block !important;
    position:absolute !important;
    inset:0 !important;
    z-index:2147482990 !important;
    pointer-events:none !important;
    border:0 !important;
    background:
        linear-gradient(#555555,#555555) 0 0 / 100% 1px no-repeat,
        linear-gradient(#555555,#555555) 100% 0 / 1px 100% no-repeat,
        linear-gradient(#101010,#101010) 0 0 / 1px 100% no-repeat,
        linear-gradient(#101010,#101010) 0 100% / 100% 1px no-repeat !important;
}
 
/* 본문 우물의 오목한 inset도 최종 규칙으로 고정한다. */
.main-portal .main-body-well {
    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;
}
 
/* -----------------------------------------
본문 프레임 최종 시각 폭 7px
-----------------------------------------
inset은 layout 폭을 소비하지 않고 padding 면 위에 그려진다.
따라서 순수 프레임 폭 7px 목표에는 padding 자체를 7px로 둔다.
상단 버튼과 하단 아치 구조는 변경하지 않는다.
*/
body.action-view.clbi-main-page .main-portal .main-body-panel,
.main-portal .main-body-panel {
    /*
    inset 1px이 프레임 면 위를 덮으므로 레이아웃 padding은 8px을 사용한다.
    최종 화면에서 보이는 순수 #1d1d1d 면은 7px이다.
    */
    padding:8px !important;
}
 
/* -----------------------------------------
하단 아치 프레임 외곽·하단 안쪽선 정확 보정 / 20260712
-----------------------------------------
대상 구분:
- 버튼 자체의 외곽 #050505는 유지
- 아치형 바깥 프레임의 외부 #050505만 제거
- 버튼 하단 inset은 기본 #101010 유지
- 아치 프레임 하단 안쪽 면에만 #555555 1px 추가
*/
 
/* 버튼 자체는 원래 마감으로 복구한다. */
.main-portal .portal-guide-nav .portal-cat-edge {
    fill:#050505 !important;
}
 
.main-portal .portal-guide-nav .portal-cat-inset-bottom {
    stroke:#101010 !important;
}
 
/* 아치형 프레임 바깥의 #050505 외곽선만 제거한다. */
.main-portal .portal-guide-arch-edge {
    display:none !important;
}
 
/* 아치 프레임의 실제 하단 안쪽 면. 버튼과는 별도 요소다. */
.main-portal .portal-guide-arch-inner-bottom {
    display:block !important;
    fill:#555555 !important;
    stroke:none !important;
    shape-rendering:crispEdges;
}
 
/* 이전에 잘못 집었던 패널 하단 보조선에는 밝은 선을 두지 않는다. */
.main-portal .portal-guide-panel-bottom-inner {
    stroke:#101010 !important;
}
 
 
 
/* -----------------------------------------
하단 길라잡이 통합 프레임 위치 확정 / 20260713
본문 패널의 원래 하단 프레임은 분리하지 않는다.
버튼·아치·클릭 영역만 현재 상태에서 1px 위로 이동한다.
----------------------------------------- */
.main-portal .main-body-panel > [data-component="category-guide-nav"] {
    bottom:1px !important;
}
 
 
/* -----------------------------------------
하단 중앙 접합: 애드온 프레임 1px 연장 / 20260713
- 본문 패널의 원래 전체 프레임은 그대로 유지
- 버튼과 좌·우·상단 아치 프레임만 애드온
- 별도 #555555 하단선은 생성하지 않음
- JS가 아치 외곽면만 아래로 1px 연장하여 원래 우물 하단선을 같은 행에서 덮음
----------------------------------------- */
.main-portal .portal-guide-arch-inner-bottom {
    display:none !important;
}
 
 
/* -----------------------------------------
대문 선언문 절차적 진입 애니메이션 / 20260713
-----------------------------------------
제목·구분선·본문 행은 실제 HTML 요소를 Web Animations API로 움직인다.
CSS transition 클래스 전환에 의존하지 않아 초기 진입·새로고침·SPA에서
최종 상태로 순간 점프하는 문제를 피한다.
*/
 
/*
원문은 기본 표시 상태다.
JS가 폰트·행 측정·구분선 DOM까지 모두 준비한 뒤 붙이는
.manifesto-intro-prepared만 애니메이션의 초기 프레임을 소유한다.
따라서 강력 새로고침이나 raw 스크립트 실패가 본문을 숨길 수 없다.
*/
 
.main-portal.manifesto-intro-prepared .main-manifesto-title {
    position:relative !important;
    opacity:0;
    border-bottom:0 !important;
}
 
.main-portal .main-manifesto-title {
    position:relative !important;
    border-bottom:0 !important;
    box-shadow:none !important;
    background-image:none !important;
    text-decoration:none !important;
}
 
.main-portal .main-manifesto-title::before,
.main-portal .main-manifesto-title::after {
    content:none !important;
    display:none !important;
}
 
.main-portal .main-manifesto-title > .manifesto-divider {
     display:block;
     display:block;
     position:relative;
     position:absolute;
     z-index:2;
     left:0;
     width:660px;
    right:0;
     height:649px;
    bottom:0;
     width:100%;
     height:1px;
     margin:0;
     margin:0;
     padding:0;
     padding:0;
     background-image:url("data:image/png;base64,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");
    overflow:visible;
     background-color:transparent;
     background:transparent !important;
     background-repeat:no-repeat;
    border:0 !important;
     background-position:0 0;
     box-shadow:none !important;
     background-size:660px 649px;
     pointer-events:none;
     image-rendering:pixelated;
     z-index:4;
     image-rendering:crisp-edges;
}
     transform:none !important;
 
/* ManifestoIntro가 소유권을 얻은 뒤에는 이전 구분선 소스를 모두 차단한다. */
.main-portal.manifesto-divider-controlled .main-manifesto-title {
     border-bottom:0 !important;
     box-shadow:none !important;
     background-image:none !important;
     text-decoration:none !important;
}
}


.main-portal .main-manifesto-bitmap {
.main-portal.manifesto-divider-controlled .main-manifesto-title::before,
.main-portal.manifesto-divider-controlled .main-manifesto-title::after,
.main-portal.manifesto-divider-controlled .main-manifesto-inner > hr,
.main-portal.manifesto-divider-controlled .main-manifesto-divider,
.main-portal.manifesto-divider-controlled [data-manifesto-divider-track] {
    content:none !important;
     display:none !important;
     display:none !important;
}
}


.main-portal .main-manifesto-inner > .main-manifesto-title,
.main-portal .main-manifesto-title > .manifesto-divider > .manifesto-divider-half {
.main-portal .main-manifesto-inner > p {
    display:block;
     position:absolute !important;
    position:absolute;
     width:1px !important;
    top:0;
     height:1px !important;
    width:50%;
     margin:-1px !important;
    height:1px;
     padding:0 !important;
    margin:0;
     overflow:hidden !important;
    padding:0;
     clip:rect(0 0 0 0) !important;
    background:#626262;
     clip-path:inset(50%) !important;
    border:0;
     white-space:nowrap !important;
    box-shadow:none;
     border:0 !important;
    transform:scaleX(0);
    will-change:transform;
}
 
.main-portal .main-manifesto-title > .manifesto-divider > .manifesto-divider-left {
    left:0;
    transform-origin:100% 50%;
}
 
.main-portal .main-manifesto-title > .manifesto-divider > .manifesto-divider-right {
    right:0;
    transform-origin:0 50%;
}
 
/*
제목 구분선이 완성된 뒤 같은 위치에서 분리되어 본문 하단까지 내려가는 실선.
최종 이동 거리는 ManifestoIntro가 실제 렌더된 본문 높이를 정수 px로 측정한다.
*/
.main-portal .main-manifesto-inner > .manifesto-divider-drop {
    display:block;
     position:absolute;
    left:0;
     width:100%;
     height:1px;
     margin:0;
    padding:0;
    overflow:hidden;
    background:#626262;
    border:0;
    box-shadow:none;
    opacity:0;
    transform:translateY(0);
    will-change:transform, opacity;
    pointer-events:none;
    z-index:3;
}
 
.main-portal .main-manifesto-copy.manifesto-line-measuring .manifesto-measure-token {
    display:inline;
    white-space:normal;
    font:inherit;
    color:inherit;
}
 
.main-portal .main-manifesto-copy .manifesto-line {
    display:block;
    width:100%;
    height:26px;
    min-height:0;
    max-height:26px;
    margin:0;
     padding:0;
     overflow:visible;
    opacity:1;
    line-height:26px !important;
     clip-path:inset(0 0 0 0);
    will-change:height, max-height, opacity, clip-path;
}
 
.main-portal .main-manifesto-copy .manifesto-line-inner {
    display:block;
    width:100%;
    height:26px;
    margin:0;
    padding:0;
    line-height:26px !important;
    opacity:1;
    transform:translateY(0);
    will-change:transform, opacity;
}
 
.main-portal.manifesto-intro-prepared .main-manifesto-copy {
    visibility:visible !important;
}
 
.main-portal.manifesto-intro-prepared .main-manifesto-copy .manifesto-line {
    height:0;
    max-height:0;
    overflow:hidden;
    opacity:0;
     clip-path:inset(0 0 100% 0);
}
 
.main-portal.manifesto-intro-prepared .main-manifesto-copy .manifesto-line-inner {
    opacity:.18;
     transform:translateY(-10px);
}
 
.main-portal.manifesto-intro-complete .main-manifesto-title {
    opacity:1;
     border-bottom:0 !important;
}
 
.main-portal.manifesto-intro-complete .main-manifesto-title > .manifesto-divider > .manifesto-divider-half {
    transform:scaleX(1);
}
 
.main-portal.manifesto-intro-complete .main-manifesto-copy .manifesto-line {
    height:26px;
    max-height:26px;
    overflow:visible;
    opacity:1;
    clip-path:inset(0 0 0 0);
}
 
.main-portal.manifesto-intro-complete .main-manifesto-copy .manifesto-line-inner {
    opacity:1;
    transform:translateY(0);
}
}


@media screen and (max-width:700px) {
@media (prefers-reduced-motion:reduce) {
     .main-portal .main-manifesto {
    .main-portal.manifesto-intro-prepared .main-manifesto-title {
         overflow-x:auto;
        opacity:1;
         justify-content:flex-start;
        border-bottom:0 !important;
    }
 
    .main-portal .main-manifesto-title > .manifesto-divider {
        display:block !important;
        left:0 !important;
        width:100% !important;
        background:transparent !important;
    }
 
    .main-portal .main-manifesto-title > .manifesto-divider > .manifesto-divider-half {
        transform:scaleX(1) !important;
    }
 
    .main-portal .main-manifesto-inner > .manifesto-divider-drop {
        opacity:1;
    }
 
     .main-portal.manifesto-intro-prepared .main-manifesto-copy .manifesto-line,
    .main-portal.manifesto-intro-prepared .main-manifesto-copy .manifesto-line-inner {
        height:26px;
        max-height:26px;
         overflow:visible;
        opacity:1;
        clip-path:none;
         transform:none;
     }
     }
}
}

2026년 7월 20일 (월) 08:48 기준 최신판

/* =========================================
COASTLINE: BLACK ICE - MainPage
로고 + 카테고리 네비 + 선언문 대문
========================================= */

/*
책임 범위
-----------------------------------------
- 대문 본문 .main-portal 내부만 담당한다.
- 사이트 공통 셸은 Layout.css가 담당한다.
- 카테고리 네비의 SVG 구조는 CategoryNav.js가 생성한다.
- 콘솔, 그래프, STATUS, INFORMATION, PROJECTS는 대문에서 제거한다.
- 「진창」 선언문 배치는 이 파일이 담당하며, 폰트 선언은 Theme.css가 담당한다.
*/

.main-portal {
    --panel:#1d1d1d;
    --well:#080808;
    --edge:#050505;
    --highlight:#555555;
    --shadow:#101010;
    --text:#e2e2e2;
    --text-strong:#ffffff;
    --block-gap:2px;
    --frame:8px;
    --manifesto-divider-gap:8px;
    width:100%;
    min-height:100%;
    margin:0;
    padding:0;
    display:flex;
    flex-direction:column;
    color:var(--text);
    background:transparent;
    font-size:12px;
    line-height:18px;
    box-sizing:border-box;
}

body.action-view.clbi-main-page .liberty-content-main .mw-parser-output {
    display:flex !important;
    flex-direction:column !important;
}

body.action-view.clbi-main-page .liberty-content-main .mw-parser-output > .main-portal {
    flex:1 0 auto;
    min-height:0;
}

.main-portal *,
.main-portal *::before,
.main-portal *::after {
    box-sizing:border-box;
}

.main-portal a,
.main-portal a:visited {
    color:var(--text) !important;
    text-decoration:none !important;
}

.main-portal a:hover,
.main-portal a:focus {
    color:var(--text-strong) !important;
    text-decoration:none !important;
}

/* 과거 대문 구조가 캐시에 남아 있어도 화면에는 나타나지 않게 한다. */
.main-portal > .console,
.main-portal > .portal-bottom-row,
.main-portal > [data-archive-graph] {
    display:none !important;
}

/* -----------------------------------------
공통 돌출 프레임
----------------------------------------- */

.main-portal .lab-logo {
    background:var(--panel, #1d1d1d);
    border:1px solid var(--edge, #050505);
    border-radius:0;
    box-shadow:
        inset 0 1px 0 var(--highlight, #555555),
        inset -1px 0 0 var(--highlight, #555555),
        inset 1px 0 0 var(--shadow, #101010),
        inset 0 -1px 0 var(--shadow, #101010);
}

.main-portal .lab-logo {
    flex:0 0 auto;
    margin:0 0 var(--block-gap);
}

.main-portal [data-component="category-nav"] {
    flex:0 0 auto;
    display:block;
    width:100%;
    margin:0;
}

/* -----------------------------------------
로고 프레임
----------------------------------------- */

.main-portal .lab-logo {
    padding:var(--frame);
    overflow:hidden;
}

.main-portal .portal-logo-well {
    min-height:86px;
    padding:10px 8px;
    display:flex;
    align-items:center;
    justify-content:center;
    overflow:hidden;
    background:var(--well);
    border:0;
    box-shadow:
        inset 0 1px 0 var(--shadow),
        inset -1px 0 0 var(--shadow),
        inset 1px 0 0 var(--highlight),
        inset 0 -1px 0 var(--highlight);
    line-height:0;
}

.main-portal .portal-logo-well a,
.main-portal .portal-logo-well .mw-file-description {
    display:inline-block;
    line-height:0;
}

.main-portal .portal-logo-well img,
.main-portal .portal-logo-well .mw-file-element {
    display:block;
    width:1000px;
    max-width:144%;
    height:auto;
    filter:grayscale(1) contrast(1.04) brightness(1.02);
}

/* -----------------------------------------
카테고리 네비
----------------------------------------- */

.portal-category-nav {
    position:relative;
    width:100%;
    height:36px;
    margin:0;
    padding:0;
    overflow:hidden;
    background:var(--well, #080808);
    border:0;
    border-radius:0;
    box-shadow:none;
}

.portal-category-svg {
    display:block;
    width:100%;
    height:100%;
    overflow:visible;
}

/*
각 버튼은 SVG 안에서 독립된 사선 프레임으로 그린다.
- 외곽 1px: #050505
- 본체: #1d1d1d
- 상단/우측 inset: #555555
- 좌측/하단 inset: #101010
- 버튼 사이 배경: #080808 2px
*/
.portal-cat-edge {
    fill:#050505;
    stroke:none;
}

.portal-cat-surface {
    fill:#1d1d1d;
    stroke:none;
}

.portal-cat-inset {
    fill:none;
    stroke-width:1;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}

.portal-cat-inset-top,
.portal-cat-inset-right {
    stroke:#555555;
}

.portal-cat-inset-bottom,
.portal-cat-inset-left {
    stroke:#101010;
}

.portal-cat-hit {
    fill:transparent;
    stroke:none;
    cursor:pointer;
}

.portal-cat-anchor:hover .portal-cat-surface,
.portal-cat-anchor:focus .portal-cat-surface {
    fill:#242424;
}

.portal-cat-anchor:active .portal-cat-surface {
    fill:#101010;
}

.portal-cat-anchor:active .portal-cat-inset-top,
.portal-cat-anchor:active .portal-cat-inset-right {
    stroke:#101010;
}

.portal-cat-anchor:active .portal-cat-inset-bottom,
.portal-cat-anchor:active .portal-cat-inset-left {
    stroke:#555555;
}

.portal-cat-label {
    fill:#e2e2e2;
    font-family:inherit;
    font-size:12px;
    font-weight:700;
    text-anchor:middle;
    dominant-baseline:middle;
    pointer-events:none;
    paint-order:stroke;
    stroke:#050505;
    stroke-width:2px;
    stroke-linejoin:round;
}

.portal-cat-anchor:hover .portal-cat-label,
.portal-cat-anchor:focus .portal-cat-label {
    fill:#ffffff;
}

.main-portal a,
.main-portal .portal-cat-surface,
.main-portal .portal-cat-inset,
.main-portal .portal-cat-label {
    transition:none !important;
}

@media screen and (max-width:820px) {
    .portal-cat-label {
        font-size:11px;
    }
}

@media screen and (max-width:620px) {
    .main-portal {
        --frame:6px;
    }
}

/* -----------------------------------------
대문 선언문 / 실제 픽셀 웹폰트 단일 구현
----------------------------------------- */

@font-face {
    font-family:'NanumMyeongjoBold Pixel 18';
    src:url('/fonts/NanumMyeongjoBoldPixel18.woff2?v=20260713-perfect-bottom-direct-002') format('woff2');
    font-weight:400;
    font-style:normal;
    font-display:block;
}

.main-portal .main-manifesto {
    flex:1 0 auto;
    min-height:0;
    width:100%;
    margin:0;
    padding:10px 0 24px;
    display:flex;
    align-items:flex-start;
    justify-content:center;
    overflow:visible;
}

.main-portal .main-manifesto-inner {
    position:relative !important;
    top:0 !important;
    left:0 !important;
    width:660px !important;
    min-width:660px !important;
    max-width:660px !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    margin:0 auto !important;
    padding:0 !important;
    overflow:visible !important;
    color:#e2e2e2 !important;
    background:transparent !important;
    transform:none !important;
}

.main-portal .main-manifesto-inner::before,
.main-portal .main-manifesto-inner::after {
    content:none !important;
    display:none !important;
    background:none !important;
}

.main-portal .main-manifesto-title {
    position:static !important;
    top:auto !important;
    left:auto !important;
    width:660px !important;
    height:calc(48px + var(--manifesto-divider-gap) + 1px) !important;
    min-height:calc(48px + var(--manifesto-divider-gap) + 1px) !important;
    max-height:calc(48px + var(--manifesto-divider-gap) + 1px) !important;
    margin:0 0 var(--manifesto-divider-gap) !important;
    padding:0 0 var(--manifesto-divider-gap) !important;
    overflow:visible !important;
    clip:auto !important;
    clip-path:none !important;
    color:#e2e2e2 !important;
    -webkit-text-fill-color:#e2e2e2 !important;
    background:transparent !important;
    border:0 !important;
    /* 구분선은 ManifestoIntro가 만드는 좌우 실선 두 개만 사용한다. */
    border-bottom:0 !important;
    font-family:'NanumMyeongjoBold Pixel 18' !important;
    font-size:36px !important;
    font-weight:400 !important;
    font-style:normal !important;
    font-synthesis:none !important;
    font-kerning:none !important;
    font-variant-ligatures:none !important;
    font-feature-settings:'kern' 0, 'liga' 0 !important;
    line-height:48px !important;
    letter-spacing:0 !important;
    text-align:center !important;
    text-shadow:none !important;
    transform:none !important;
    user-select:text !important;
}

.main-portal .main-manifesto-copy {
    position:static !important;
    top:auto !important;
    left:auto !important;
    width:620px !important;
    min-width:620px !important;
    max-width:620px !important;
    height:auto !important;
    margin:0 auto !important;
    padding:0 !important;
    overflow:visible !important;
    color:#e2e2e2 !important;
    -webkit-text-fill-color:#e2e2e2 !important;
    background:transparent !important;
    font-family:'NanumMyeongjoBold Pixel 18' !important;
    font-size:18px !important;
    font-weight:400 !important;
    font-style:normal !important;
    font-synthesis:none !important;
    font-kerning:none !important;
    font-variant-ligatures:none !important;
    font-feature-settings:'kern' 0, 'liga' 0 !important;
    line-height:26px !important;
    letter-spacing:0 !important;
    word-break:keep-all !important;
    overflow-wrap:break-word !important;
    text-align:left !important;
    text-shadow:none !important;
    transform:none !important;
    user-select:text !important;
}

.main-portal .main-manifesto-copy,
.main-portal .main-manifesto-copy * {
    font-family:'NanumMyeongjoBold Pixel 18' !important;
    font-size:18px !important;
    font-weight:400 !important;
    font-style:normal !important;
    font-synthesis:none !important;
    font-kerning:none !important;
    font-variant-ligatures:none !important;
    font-feature-settings:'kern' 0, 'liga' 0 !important;
    line-height:26px !important;
    letter-spacing:0 !important;
    color:#e2e2e2 !important;
    -webkit-text-fill-color:#e2e2e2 !important;
}

.main-portal .main-manifesto-copy p {
    position:static !important;
    top:auto !important;
    left:auto !important;
    width:620px !important;
    height:auto !important;
    margin:0 0 10px !important;
    padding:0 !important;
    overflow:visible !important;
    clip:auto !important;
    clip-path:none !important;
    white-space:normal !important;
    transform:none !important;
    user-select:text !important;
}

.main-portal .main-manifesto-copy p:last-child {
    margin-bottom:0 !important;
}

.main-portal .main-manifesto-bitmap,
.main-portal canvas.main-manifesto-bitmap {
    display:none !important;
}

/*
길라잡이는 시대의 대륙 패널처럼 본문 DOM을 유지한 채 화면만 전환한다.
현재 단계에서는 왼쪽 더미 메뉴로 진입 애니메이션과 버튼 디자인만 확인한다.
*/
.main-portal .main-body-well > .main-guide-screen {
    flex:1 1 0;
    display:block;
    position:relative;
    width:100%;
    height:auto;
    min-height:0;
    margin:0;
    padding:0;
    overflow:hidden;
    background:transparent;
    border:0;
    box-shadow:none;
    z-index:1;
}

.main-portal .main-body-well > .main-guide-screen[hidden],
.main-portal .main-body-well > .main-manifesto[hidden] {
    display:none !important;
}

.main-portal .main-guide-menu {
    position:absolute;
    top:10px;
    left:10px;
    width:230px;
    margin:0;
    padding:0;
    display:flex;
    flex-direction:column;
    gap:2px;
    z-index:2;
}

.main-portal .main-guide-menu-item {
    width:230px;
    height:30px;
    margin:0;
    padding:0;
    opacity:0;
    transform:translateX(-240px);
    will-change:transform, opacity;
}

.main-portal .main-guide-screen.is-guide-menu-entering .main-guide-menu-item {
    animation:main-guide-menu-enter 260ms cubic-bezier(.16,.84,.24,1) both;
    animation-delay:calc(var(--guide-menu-order) * 44ms);
}

@keyframes main-guide-menu-enter {
    0% {
        opacity:0;
        transform:translateX(-240px);
    }
    72% {
        opacity:1;
        transform:translateX(4px);
    }
    100% {
        opacity:1;
        transform:translateX(0);
    }
}

.main-portal .main-guide-menu-button {
    appearance:none;
    -webkit-appearance:none;
    display:grid;
    grid-template-columns:30px minmax(0,1fr) 14px;
    align-items:center;
    width:230px;
    height:30px;
    margin:0;
    padding:0;
    overflow:hidden;
    box-sizing:border-box;
    color:#e2e2e2;
    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;
    font-family:inherit;
    font-size:12px;
    font-weight:700;
    line-height:28px;
    text-align:left;
    text-shadow:1px 1px 0 #050505;
    cursor:pointer;
}

.main-portal .main-guide-menu-number {
    display:block;
    width:30px;
    height:28px;
    color:#8f8f8f;
    background:#101010;
    border-right:1px solid #050505;
    box-shadow:inset 0 1px 0 #242424;
    line-height:28px;
    text-align:center;
}

.main-portal .main-guide-menu-label {
    display:block;
    min-width:0;
    height:28px;
    padding:0 8px;
    overflow:hidden;
    line-height:28px;
    white-space:nowrap;
    text-overflow:ellipsis;
}

.main-portal .main-guide-menu-arrow {
    display:block;
    width:14px;
    height:28px;
    color:#8f8f8f;
    line-height:27px;
    text-align:center;
}

.main-portal .main-guide-menu-button:hover,
.main-portal .main-guide-menu-button:focus-visible {
    color:#ffffff;
    background:#242424;
    outline:0;
}

.main-portal .main-guide-menu-button:hover .main-guide-menu-number,
.main-portal .main-guide-menu-button:focus-visible .main-guide-menu-number,
.main-portal .main-guide-menu-button:hover .main-guide-menu-arrow,
.main-portal .main-guide-menu-button:focus-visible .main-guide-menu-arrow {
    color:#ffffff;
}

.main-portal .main-guide-menu-button:active {
    color:#e2e2e2;
    background:#101010;
    box-shadow:
        inset 0 1px 0 #101010,
        inset -1px 0 0 #101010,
        inset 1px 0 0 #555555,
        inset 0 -1px 0 #555555;
}

@media (prefers-reduced-motion:reduce) {
    .main-portal .main-guide-screen.is-guide-menu-entering .main-guide-menu-item {
        animation:none;
        opacity:1;
        transform:none;
    }
}

/* -----------------------------------------
상단 카테고리 중앙 「프로젝트」 기둥 / 20260716
-----------------------------------------
버튼 2개 - #1d1d1d 기둥 - 버튼 2개.

CategoryPillar.js가 기존 project 버튼의 좌우 사선과 2px 간격을 그대로 사용한다.
기둥은 같은 경사를 유지한 채 SVG의 위·아래로 3px 우물을 관통하며 외곽 프레임과 같은
#1d1d1d 면에 직접 닿는다. 상하 외곽선은 두지 않아 하나의 패널로
이어진다. 버튼과 접하는 좌우의 #050505 외곽선은 생략하되,
기존 안쪽 방향성 광원선을 그 외곽선 좌표로 한 칸 이동한다.
안쪽선이 있던 자리는 별도 선 없이 #1d1d1d 본체 면으로 돌아간다.
*/
.main-portal .portal-category-svg.has-category-pillar
.portal-cat-anchor[data-category-key="project"],
.main-portal .portal-category-svg.has-category-pillar
.portal-category-pillar-source {
    display:none !important;
    pointer-events:none !important;
}

.main-portal .portal-category-pillar {
    pointer-events:none;
    shape-rendering:crispEdges;
}

.main-portal .portal-category-pillar-surface {
    fill:#1d1d1d;
    stroke:none;
}

.main-portal .portal-category-pillar-line {
    fill:none;
    stroke-width:1;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}

.main-portal .portal-category-pillar-shadow {
    stroke:#101010;
}

.main-portal .portal-category-pillar-highlight {
    stroke:#555555;
}

.main-portal .portal-category-pillar-label {
    fill:#e2e2e2;
    cursor:default;
    pointer-events:none;
}

/* -----------------------------------------
상단 카테고리 하단 회전·접합형 작품 버튼 / 20260716
-----------------------------------------
설정 왼쪽부터 기업 및 공동체 오른쪽까지의 실제 SVG 경계를 읽어
중앙 프레임의 최외곽 폭으로 사용한다. 좌우 투명 영역은 새 프레임으로
채우지 않는다. 형상은 위가 넓고 아래가 좁아지도록 뒤집고, 기존 상단
프레임 하단 9px 안으로 겹쳐 하나로 접합한다.
좌우 경사는 기존 설정·기업 버튼 사선의 화면상 기울기를 그대로 연장한다.
외곽·프레임 면·우물·버튼의 x 좌표도 같은 직선식으로 투영해 전 층의
사선이 서로 평행하고 끊김 없이 이어지게 한다.
두 프레임이 실제로 포개지는 상단 8px에서는 #050505를 #1d1d1d 면으로
덮는다. 좌우 방향선은 외곽선에서 재계산하지 않고 기존 설정 버튼의 좌측
인셋선과 기업 버튼의 우측 인셋선을 직접 읽어 같은 직선으로 연장한다.

초기 길라잡이 규격:
- 버튼 외곽 22px
- 프레임 실색 #1d1d1d 7px
- 우물 간격 2px
- 전체 부착 행 43px
*/
.main-portal > [data-component="portal-section-nav"] {
    flex:0 0 43px !important;
    display:block !important;
    width:100% !important;
    height:43px !important;
    min-height:43px !important;
    max-height:43px !important;
    margin:-9px 0 0 !important;
    padding:0 !important;
    position:relative !important;
    overflow:hidden !important;
    z-index:4 !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
}

.main-portal .portal-section-nav,
.main-portal .portal-section-svg {
    display:block !important;
    width:100% !important;
    height:43px !important;
    margin:0 !important;
    padding:0 !important;
    overflow:visible !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
}

.main-portal .portal-section-frame-edge {
    fill:#050505;
    stroke:none;
}

.main-portal .portal-section-frame-outline {
    fill:none;
    stroke:#050505;
    stroke-width:1;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}

.main-portal .portal-section-frame-surface {
    fill:#1d1d1d;
    stroke:none;
}

.main-portal .portal-section-frame-well {
    fill:#080808;
    stroke:none;
}

.main-portal .portal-section-frame-edge,
.main-portal .portal-section-frame-surface,
.main-portal .portal-section-frame-well,
.main-portal .portal-section-join-side-cover,
.main-portal .portal-section-button-geometry .portal-cat-edge,
.main-portal .portal-section-button-geometry .portal-cat-surface {
    shape-rendering:crispEdges;
}

.main-portal .portal-section-join-side-cover {
    fill:#1d1d1d;
    stroke:none;
}

.main-portal > [data-component="portal-section-nav"]::after {
    content:"";
    display:block;
    position:absolute;
    top:0;
    left:10%;
    right:auto;
    width:80%;
    height:7px;
    box-sizing:border-box;
    margin:0;
    padding:0;
    z-index:2147483647;
    pointer-events:none;
    background:#1d1d1d;
    border:0;
    box-shadow:none;
}

.main-portal .portal-section-frame-highlight,
.main-portal .portal-section-frame-shadow,
.main-portal .portal-section-well-highlight,
.main-portal .portal-section-well-shadow {
    fill:none;
    stroke-width:1;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}

.main-portal .portal-section-frame-highlight,
.main-portal .portal-section-well-highlight {
    stroke:#555555;
}

.main-portal .portal-section-frame-shadow,
.main-portal .portal-section-well-shadow {
    stroke:#101010;
}

.main-portal .portal-section-anchor,
.main-portal .portal-section-button-geometry {
    pointer-events:auto;
}

.main-portal .portal-section-label {
    fill:#e2e2e2;
}

/* 선언문 전용 장식은 길라잡이 화면으로 넘어갈 때 함께 숨긴다. */
.main-portal.is-guide-screen-active .main-body-well > .wiki-decoration,
.main-portal.is-guide-screen-active .main-body-well > [data-wiki-decoration-rendered="1"] {
    visibility:hidden !important;
    pointer-events:none !important;
}

@media screen and (max-width:700px) {
    .main-portal .main-manifesto {
        padding-top:10px;
        overflow-x:auto;
        justify-content:flex-start;
    }
}

/* -----------------------------------------
하단 길라잡이 버튼
-----------------------------------------
상단의 설정–프로젝트–기업 및 공동체 합산 폭을 공유한다.
사선 방향은 상단 묶음과 반대로, 넓은 변이 하단에 놓인다.
*/
.main-portal [data-component="category-guide-nav"] {
    flex:0 0 auto;
    display:block;
    width:100%;
    height:65px;
    margin:2px 0 0;
    padding:0;
    position:relative;
    z-index:2147483000 !important;
    pointer-events:auto;
}

.main-portal .portal-guide-nav {
    width:100%;
    height:65px;
    margin:0;
    background:var(--well, #080808);
}

.main-portal .portal-guide-svg {
    width:100%;
    height:65px;
}

.main-portal .portal-guide-label {
    fill:#e2e2e2;
}


/* 본문 데코가 별도 stacking context를 만들더라도 길라잡이 클릭면을 최상단에 유지한다. */
.main-portal .portal-guide-nav,
.main-portal .portal-guide-svg,
.main-portal .portal-guide-anchor {
    position:relative;
    z-index:2147483000 !important;
}

/* -----------------------------------------
대문 본문 패널 / 실제 래퍼·데코 클리핑
-----------------------------------------
구조:
로고 → 상단 버튼 → #1d1d1d 본문 프레임
                    └ #080808 우물
                       ├ 선언문
                       ├ 대문 데코
                       └ 길라잡이

외곽 프레임과 내부 우물 모두 paint를 잘라낸다.
따라서 데코는 저장된 좌표와 z-index에 관계없이
#1d1d1d 프레임의 경계를 넘어 보일 수 없다.
*/
.main-portal .main-body-panel {
    flex:1 0 auto;
    min-height:0;
    width:100%;
    margin:2px 0 0;
    padding:9px;
    position:relative;
    display:flex;
    flex-direction:column;
    overflow:hidden;
    isolation:isolate;
    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;
}

.main-portal .main-body-well {
    flex:1 0 auto;
    min-height:0;
    width:100%;
    position:relative;
    display:flex;
    flex-direction:column;
    overflow:hidden;
    isolation:isolate;
    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;
}

/* 기존 선언문 좌표와 폭은 유지하되 새 우물 안의 흐름 요소로 둔다. */
.main-portal .main-body-well > .main-manifesto {
    flex:1 0 auto;
    min-height:0;
    width:100%;
    margin:0 !important;
    /*
    길라잡이 하단에 추가한 3px을 전체 높이에 더하지 않는다.
    기존 하단 여유 24px 안에서 3px을 넘겨 전체 패널 높이를 보존한다.
    */
    padding:10px 0 21px !important;
    position:relative !important;
    top:auto !important;
    left:auto !important;
    overflow:visible !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
    transform:none !important;
    z-index:1;
}

/*
대문 장식 렌더러가 일반 장식을 이 우물의 직접 자식으로 넣는다.
position:absolute를 보장하고, 우물 overflow:hidden으로 절단한다.
*/
.main-portal .main-body-well > .wiki-decoration,
.main-portal .main-body-well > [data-wiki-decoration-rendered="1"] {
    position:absolute !important;
    margin:0 !important;
    max-width:none !important;
    max-height:none !important;
}

/* 길라잡이는 우물 최하단의 정상 흐름 요소다. */
.main-portal .main-body-well > [data-component="category-guide-nav"] {
    flex:0 0 65px;
    display:block !important;
    width:100% !important;
    min-width:0 !important;
    max-width:none !important;
    height:65px !important;
    /*
    위쪽은 2px.
    아래쪽은 우물의 1px inset을 제외하고 순수 #080808이 2px 보이도록
    CSS margin-bottom을 3px로 둔다.
    */
    margin:2px 0 3px !important;
    padding:0 !important;
    position:relative !important;
    overflow:visible !important;
    z-index:2147483000 !important;
    pointer-events:auto !important;
}

.main-portal .main-body-well .portal-guide-nav,
.main-portal .main-body-well .portal-guide-svg,
.main-portal .main-body-well .portal-guide-anchor {
    position:relative;
    z-index:2147483000 !important;
}

/* 실패했던 display:contents 우회 구조는 사용하지 않는다. */
.main-portal > .main-body-panel,
.main-portal .main-body-well {
    box-sizing:border-box;
}

@media screen and (max-width:700px) {
    .main-portal .main-body-panel {
        min-width:660px;
    }
}

/* -----------------------------------------
대문 높이 체인 / 외부 스크롤 완전 제거
-----------------------------------------
Layout.css의 .mw-parser-output은 일반 문서를 위해 overflow-y:auto이다.
대문에서는 전체 패널이 남은 높이를 정확히 나눠 써야 하므로 예외 처리한다.

핵심:
- 바깥 스크롤 박스 비활성화
- 높이 전달 체인을 100%로 고정
- 각 세로 flex 구간을 flex:1 1 0으로 축소 가능하게 변경
- min-height:0으로 min-content 높이 강제 확장을 차단
*/
body.action-view.clbi-main-page .liberty-content-main,
body.action-view.clbi-main-page .liberty-content-main > #mw-content-text,
body.action-view.clbi-main-page .liberty-content-main > .mw-body-content,
body.action-view.clbi-main-page .liberty-content-main #mw-content-text,
body.action-view.clbi-main-page .liberty-content-main .mw-body-content,
body.action-view.clbi-main-page .liberty-content-main .mw-parser-output {
    min-height:0 !important;
    overflow:hidden !important;
}

body.action-view.clbi-main-page .liberty-content-main .mw-parser-output {
    flex:1 1 0 !important;
    height:100% !important;
    max-height:100% !important;
    display:flex !important;
    flex-direction:column !important;
    overflow-y:hidden !important;
    overflow-x:hidden !important;
    scrollbar-width:none !important;
}

body.action-view.clbi-main-page .liberty-content-main .mw-parser-output::-webkit-scrollbar {
    display:none !important;
    width:0 !important;
    height:0 !important;
}

body.action-view.clbi-main-page .liberty-content-main .mw-parser-output > .main-portal {
    flex:1 1 0 !important;
    width:100% !important;
    height:100% !important;
    min-height:0 !important;
    max-height:100% !important;
    overflow:hidden !important;
}

body.action-view.clbi-main-page .main-portal {
    flex:1 1 0 !important;
    height:100% !important;
    min-height:0 !important;
    max-height:100% !important;
    overflow:hidden !important;
}

body.action-view.clbi-main-page .main-portal .main-body-panel {
    flex:1 1 0 !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    overflow:hidden !important;
}

body.action-view.clbi-main-page .main-portal .main-body-well {
    flex:1 1 0 !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    overflow:hidden !important;
}

body.action-view.clbi-main-page .main-portal .main-body-well > .main-manifesto {
    flex:1 1 0 !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    overflow:hidden !important;
}

/* 길라잡이는 42px 본체·광원 + 상하 1px #050505 외곽선으로 44px이다.
   상하 2px #080808 간격, 상단 9px·하단 8px 프레임을 포함한 전체 행은 65px이다.
   상단 9px 중 외곽선·광원선을 제외한 #1d1d1d 실색 영역은 7px이다. */
body.action-view.clbi-main-page
.main-portal
.main-body-well > [data-component="category-guide-nav"] {
    flex:0 0 65px !important;
}

/* -----------------------------------------
버튼 프레임 / 상단 유지·하단 연속 용접
-----------------------------------------
상단 총 36px:
4px 프레임 + 2px #080808 + 24px 버튼 + 2px #080808 + 4px 프레임

하단 총 65px:
중앙에서 위로 솟은 패널 하단 프레임 + 2px #080808
+ 44px 길라잡이 외곽 + 2px #080808 + 공유 하단 프레임

하단은 별도 ㄷ자 상자가 아니다.
본문 패널의 하단 외곽선 자체가 중앙에서 사선으로 올라갔다 내려오는
하나의 연속된 프레임이다.
*/

/* ─────────────────────────────────────────
상단: 버튼 24px / 프레임과 2px 간격을 실제로 확보
───────────────────────────────────────── */
.main-portal > [data-component="category-nav"] {
    flex:none !important;
    display:block !important;
    width:100% !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    margin:0 !important;
    padding:8px !important;
    position:relative !important;
    overflow:hidden !important;
    isolation:isolate !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;
}

.main-portal > [data-component="category-nav"] > .portal-category-nav {
    display:block !important;
    position:relative !important;
    width:100% !important;
    height:auto !important;
    min-height:0 !important;
    max-height:none !important;
    margin:0 !important;
    padding:2px !important;
    overflow:hidden !important;
    box-sizing:border-box !important;
    background:#080808 !important;
    border:0 !important;
    /* 2px 간격은 순수 #080808이며 별도 광원선을 두지 않는다. */
    box-shadow:none !important;
}

.main-portal > [data-component="category-nav"] .portal-category-svg {
    display:block !important;
    position:relative !important;
    inset:auto !important;
    width:100% !important;
    height:24px !important;
    min-height:24px !important;
    max-height:24px !important;
    overflow:visible !important;
}

/* ─────────────────────────────────────────
하단: 기본 하단 프레임 위로만 중앙 버튼 프레임이 돌출
───────────────────────────────────────── */

/*
본문 패널의 기본 하단 프레임 두께는 유지하고,
그 위로만 길라잡이 사다리꼴 프레임이 돌출된다.
패널 전체가 두꺼운 하단 밴드가 되지 않도록 한다.
*/
body.action-view.clbi-main-page .main-portal .main-body-panel,
.main-portal .main-body-panel {
    padding:9px !important;
    border-bottom:0 !important;
    box-shadow:
        inset 0 1px 0 #555555,
        inset -1px 0 0 #555555,
        inset 1px 0 0 #101010 !important;
}

.main-portal .main-body-panel > [data-component="category-guide-nav"] {
    display:block !important;
    position:absolute !important;
    left:0 !important;
    right:0 !important;
    bottom:0 !important;
    width:auto !important;
    height:65px !important;
    min-height:65px !important;
    max-height:65px !important;
    margin:0 !important;
    padding:0 !important;
    overflow:visible !important;
    isolation:isolate !important;
    z-index:2147483000 !important;
    pointer-events:auto !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
}

.main-portal .main-body-panel > [data-component="category-guide-nav"] > .portal-guide-nav,
.main-portal .main-body-panel > [data-component="category-guide-nav"] .portal-guide-svg {
    display:block !important;
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:65px !important;
    min-height:65px !important;
    max-height:65px !important;
    margin:0 !important;
    padding:0 !important;
    overflow:visible !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
    z-index:2147483000 !important;
}

/* 기본 하단 프레임 + 중앙 돌출 프레임 */
.main-portal .portal-guide-panel-bottom-surface,
.main-portal .portal-guide-weld-outer {
    fill:#1d1d1d;
    stroke:none;
}

.main-portal .portal-guide-weld-well {
    fill:#080808;
    stroke:none;
}

.main-portal .portal-guide-panel-bottom-edge,
.main-portal .portal-guide-weld-edge {
    stroke:#050505;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}

/* 하단 기본 프레임: 상단만 #555555, 하단만 #101010. */
.main-portal .portal-guide-panel-bottom-highlight,
.main-portal .portal-guide-panel-bottom-shadow,
.main-portal .portal-guide-weld-shadow,
.main-portal .portal-guide-panel-bottom-inner {
    stroke:#101010;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}

/* 실제 길라잡이 버튼 외곽은 44px 사다리꼴이다. 바깥 돌출 프레임만 하단 기본 프레임과 용접된다. */
.main-portal .portal-guide-nav.is-continuous-weld
.portal-cat-inset-bottom {
    display:block !important;
}

/*
길라잡이 진입 상태:
- 전체 좌표계가 65px에서 45px로 실제 축소된다.
- 중앙 버튼은 44px에서 24px으로만 줄고, #1d1d1d 실면 7px의 9/8px 프레임은 유지한다.
- 좌우 우물은 중앙 버튼과 접합되는 단일 메인 프레임이 하단에서 올라와 메운다.
*/
.main-portal .portal-guide-button-geometry {
    transform:none;
}

.main-portal .portal-guide-rising-main-frame {
    transform-box:fill-box;
    transform-origin:center bottom;
}

.main-portal .portal-guide-rising-main-frame-edge {
    fill:#050505;
    stroke:none;
    shape-rendering:crispEdges;
}

.main-portal .portal-guide-rising-main-frame-surface {
    fill:#1d1d1d;
    stroke:none;
    shape-rendering:crispEdges;
}

.main-portal .portal-guide-rising-main-frame-highlight-top,
.main-portal .portal-guide-rising-main-frame-highlight-left {
    fill:#555555;
    stroke:none;
    shape-rendering:crispEdges;
}

.main-portal .portal-guide-rising-main-frame-shadow-right,
.main-portal .portal-guide-rising-main-frame-shadow-bottom {
    fill:#101010;
    stroke:none;
    shape-rendering:crispEdges;
}

/* 예전 우물 내부 mount 규칙 차단 */
.main-portal .main-body-well > [data-component="category-guide-nav"],
body.action-view.clbi-main-page
.main-portal
.main-body-well > [data-component="category-guide-nav"] {
    flex:none !important;
    width:0 !important;
    height:0 !important;
    min-height:0 !important;
    max-height:0 !important;
    margin:0 !important;
    padding:0 !important;
    overflow:hidden !important;
}

@media screen and (max-width:700px) {
    .main-portal > [data-component="category-nav"],
    .main-portal .main-body-panel {
        min-width:660px !important;
    }
}



/* -----------------------------------------
광원선 중복 방지 확정 규칙
-----------------------------------------
#555555는 독립된 #1d1d1d 돌출면의 상단·우측에만 사용한다.
#101010은 같은 면의 좌측·하단에만 사용한다.
#080808 우물과 2px 간격에는 광원선을 추가하지 않는다.
*/
.main-portal > [data-component="category-nav"] > .portal-category-nav {
    box-shadow:none !important;
}

/* 본문 우물은 오목한 방향성 선을 유지한다. */
.main-portal .main-body-well {
    box-shadow:
        inset 0 1px 0 #101010,
        inset -1px 0 0 #101010,
        inset 1px 0 0 #555555,
        inset 0 -1px 0 #555555 !important;
}

/* -----------------------------------------
프레임 안쪽선·하단 아치 오버레이 확정 규칙
-----------------------------------------
상단:
- 기존 구조와 치수 유지
- #1d1d1d 프레임의 안쪽 경계에 방향성 1px 선 추가
- 안쪽 우물 경계는 상단/우측 #101010, 좌측/하단 #555555
- 선은 프레임의 마지막 1px에 놓여 2px #080808 간격을 침범하지 않음

하단:
- main-body-panel의 원래 전체 프레임을 그대로 복구
- SVG는 전체 하단 프레임을 다시 그리지 않음
- 버튼과 하부를 비운 중앙 아치형 프레임 조각만 기존 프레임 위에 얹음
*/

/* 상단 외곽 프레임의 안쪽 우물 경계
   우물은 오목하므로 돌출면과 반대 방향이다.
   상단/우측 #101010, 좌측/하단 #555555. */
.main-portal > [data-component="category-nav"]::after {
    content:"";
    display:block;
    position:absolute;
    inset:8px;
    z-index:3;
    pointer-events:none;
    box-sizing:border-box;
    border-style:solid;
    border-width:1px;
    border-color:#101010 #101010 #555555 #555555;
}

/* 2px 우물 간격과 버튼은 안쪽선보다 아래 레이어에 둔다. */
.main-portal > [data-component="category-nav"] > .portal-category-nav {
    z-index:1 !important;
    box-shadow:none !important;
}

.main-portal > [data-component="category-nav"] .portal-category-svg {
    z-index:1 !important;
}

/* 기존 본문 패널의 전체 프레임을 복구한다. */
body.action-view.clbi-main-page .main-portal .main-body-panel,
.main-portal .main-body-panel {
    padding:9px !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;
}

/* 아치 오버레이 좌표계. 패널 하부 자체는 투명하게 둔다. */
.main-portal .main-body-panel > [data-component="category-guide-nav"] {
    height:65px !important;
    min-height:65px !important;
    max-height:65px !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
}

.main-portal .main-body-panel > [data-component="category-guide-nav"] > .portal-guide-nav,
.main-portal .main-body-panel > [data-component="category-guide-nav"] .portal-guide-svg {
    height:65px !important;
    min-height:65px !important;
    max-height:65px !important;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
}

/* 아치 프레임 면과 내부 우물 */
.main-portal .portal-guide-arch-outer {
    fill:#1d1d1d;
    stroke:none;
}

.main-portal .portal-guide-arch-well {
    fill:#080808;
    stroke:none;
}

/* 아치의 최외곽: 상단과 양쪽 사선만 */
.main-portal .portal-guide-arch-edge {
    stroke:#050505;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}

/* 바깥 돌출면의 광원 */
.main-portal .portal-guide-arch-highlight {
    stroke:#555555;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}

.main-portal .portal-guide-arch-shadow {
    stroke:#101010;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}


/* 버튼과 마주 보는 하단 본문 프레임의 상단 1px만 담당한다.
   선 stroke가 아니라 정수 좌표의 1px rect이므로 2px로 번지지 않는다. */
.main-portal .portal-guide-facing-highlight {
    fill:#555555;
    stroke:none;
    shape-rendering:crispEdges;
}

/* 아치 안쪽 우물 경계: 상단/우측 어두움, 좌측 밝음. 하부는 열림. */
.main-portal .portal-guide-arch-inner-highlight {
    stroke:#101010;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}

.main-portal .portal-guide-arch-inner-shadow {
    stroke:#555555;
    stroke-width:1;
    fill:none;
    vector-effect:non-scaling-stroke;
    shape-rendering:crispEdges;
}

/* 이전 SVG가 그리던 독립 하단 프레임은 강제로 숨긴다. */
.main-portal .portal-guide-panel-bottom-surface,
.main-portal .portal-guide-panel-bottom-edge,
.main-portal .portal-guide-panel-bottom-highlight,
.main-portal .portal-guide-panel-bottom-shadow,
.main-portal .portal-guide-panel-bottom-inner,
.main-portal .portal-guide-weld-outer,
.main-portal .portal-guide-weld-well,
.main-portal .portal-guide-weld-edge,
.main-portal .portal-guide-weld-highlight,
.main-portal .portal-guide-weld-shadow {
    display:none !important;
}

/* -----------------------------------------
최종 시각 픽셀 보정 / 20260712
-----------------------------------------
목표는 선언값이 아니라 화면에서 보이는 색 면이다.

상단 카테고리:
- 우물 inset 1px
- 순수 #080808 간격 2px
- 실제 버튼 22px
- 기존 전체 행 높이는 유지

본문 패널:
- #050505 외곽선 1px
- 방향성 inset 1px
- 순수 #1d1d1d 면 7px
- 내부 #080808 우물
*/

/* ─────────────────────────────────────────
상단 카테고리: 실제 보이는 우물 간격 2px
───────────────────────────────────────── */
.main-portal > [data-component="category-nav"] {
    padding:8px !important;
    background:#1d1d1d !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;
}

/* 이전 border 기반 내부선은 코너 혼색을 만들므로 완전히 제거한다. */
.main-portal > [data-component="category-nav"]::after {
    content:none !important;
    display:none !important;
    border:0 !important;
    box-shadow:none !important;
}

/*
우물 inset 1px + padding 3px.
첫 1px은 inset이고, 그 뒤 순수 #080808이 정확히 2px 남는다.
*/
.main-portal > [data-component="category-nav"] > .portal-category-nav {
    display:block !important;
    position:relative !important;
    width:100% !important;
    height:auto !important;
    margin:0 !important;
    padding:3px !important;
    box-sizing:border-box !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;
}

.main-portal > [data-component="category-nav"] .portal-category-svg {
    display:block !important;
    position:relative !important;
    inset:auto !important;
    width:100% !important;
    height:22px !important;
    min-height:22px !important;
    max-height:22px !important;
    overflow:visible !important;
}

/* ─────────────────────────────────────────
본문 패널: 순수 #1d1d1d 면 7px + 선명한 inset
───────────────────────────────────────── */
body.action-view.clbi-main-page .main-portal .main-body-panel,
.main-portal .main-body-panel {
    padding:8px !important;
    position:relative !important;
    background:#1d1d1d !important;
    border:1px solid #050505 !important;
    border-radius:0 !important;
    box-shadow:none !important;
}

/*
box-shadow 코너 중첩 대신 네 개의 불투명 1px 면을 직접 그린다.
첫 번째 레이어가 코너 우선권을 가진다.
- 상단 #555555가 좌상단/우상단 우선
- 우측 #555555가 우하단 우선
- 좌측/하단 #101010
*/
body.action-view.clbi-main-page .main-portal .main-body-panel::before,
.main-portal .main-body-panel::before {
    content:"" !important;
    display:block !important;
    position:absolute !important;
    inset:0 !important;
    z-index:2147482990 !important;
    pointer-events:none !important;
    border:0 !important;
    background:
        linear-gradient(#555555,#555555) 0 0 / 100% 1px no-repeat,
        linear-gradient(#555555,#555555) 100% 0 / 1px 100% no-repeat,
        linear-gradient(#101010,#101010) 0 0 / 1px 100% no-repeat,
        linear-gradient(#101010,#101010) 0 100% / 100% 1px no-repeat !important;
}

/* 본문 우물의 오목한 inset도 최종 규칙으로 고정한다. */
.main-portal .main-body-well {
    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;
}

/* -----------------------------------------
본문 프레임 최종 시각 폭 7px
-----------------------------------------
inset은 layout 폭을 소비하지 않고 padding 면 위에 그려진다.
따라서 순수 프레임 폭 7px 목표에는 padding 자체를 7px로 둔다.
상단 버튼과 하단 아치 구조는 변경하지 않는다.
*/
body.action-view.clbi-main-page .main-portal .main-body-panel,
.main-portal .main-body-panel {
    /*
    inset 1px이 프레임 면 위를 덮으므로 레이아웃 padding은 8px을 사용한다.
    최종 화면에서 보이는 순수 #1d1d1d 면은 7px이다.
    */
    padding:8px !important;
}

/* -----------------------------------------
하단 아치 프레임 외곽·하단 안쪽선 정확 보정 / 20260712
-----------------------------------------
대상 구분:
- 버튼 자체의 외곽 #050505는 유지
- 아치형 바깥 프레임의 외부 #050505만 제거
- 버튼 하단 inset은 기본 #101010 유지
- 아치 프레임 하단 안쪽 면에만 #555555 1px 추가
*/

/* 버튼 자체는 원래 마감으로 복구한다. */
.main-portal .portal-guide-nav .portal-cat-edge {
    fill:#050505 !important;
}

.main-portal .portal-guide-nav .portal-cat-inset-bottom {
    stroke:#101010 !important;
}

/* 아치형 프레임 바깥의 #050505 외곽선만 제거한다. */
.main-portal .portal-guide-arch-edge {
    display:none !important;
}

/* 아치 프레임의 실제 하단 안쪽 면. 버튼과는 별도 요소다. */
.main-portal .portal-guide-arch-inner-bottom {
    display:block !important;
    fill:#555555 !important;
    stroke:none !important;
    shape-rendering:crispEdges;
}

/* 이전에 잘못 집었던 패널 하단 보조선에는 밝은 선을 두지 않는다. */
.main-portal .portal-guide-panel-bottom-inner {
    stroke:#101010 !important;
}



/* -----------------------------------------
하단 길라잡이 통합 프레임 위치 확정 / 20260713
본문 패널의 원래 하단 프레임은 분리하지 않는다.
버튼·아치·클릭 영역만 현재 상태에서 1px 위로 이동한다.
----------------------------------------- */
.main-portal .main-body-panel > [data-component="category-guide-nav"] {
    bottom:1px !important;
}


/* -----------------------------------------
하단 중앙 접합: 애드온 프레임 1px 연장 / 20260713
- 본문 패널의 원래 전체 프레임은 그대로 유지
- 버튼과 좌·우·상단 아치 프레임만 애드온
- 별도 #555555 하단선은 생성하지 않음
- JS가 아치 외곽면만 아래로 1px 연장하여 원래 우물 하단선을 같은 행에서 덮음
----------------------------------------- */
.main-portal .portal-guide-arch-inner-bottom {
    display:none !important;
}


/* -----------------------------------------
대문 선언문 절차적 진입 애니메이션 / 20260713
-----------------------------------------
제목·구분선·본문 행은 실제 HTML 요소를 Web Animations API로 움직인다.
CSS transition 클래스 전환에 의존하지 않아 초기 진입·새로고침·SPA에서
최종 상태로 순간 점프하는 문제를 피한다.
*/

/*
원문은 기본 표시 상태다.
JS가 폰트·행 측정·구분선 DOM까지 모두 준비한 뒤 붙이는
.manifesto-intro-prepared만 애니메이션의 초기 프레임을 소유한다.
따라서 강력 새로고침이나 raw 스크립트 실패가 본문을 숨길 수 없다.
*/

.main-portal.manifesto-intro-prepared .main-manifesto-title {
    position:relative !important;
    opacity:0;
    border-bottom:0 !important;
}

.main-portal .main-manifesto-title {
    position:relative !important;
    border-bottom:0 !important;
    box-shadow:none !important;
    background-image:none !important;
    text-decoration:none !important;
}

.main-portal .main-manifesto-title::before,
.main-portal .main-manifesto-title::after {
    content:none !important;
    display:none !important;
}

.main-portal .main-manifesto-title > .manifesto-divider {
    display:block;
    position:absolute;
    left:0;
    right:0;
    bottom:0;
    width:100%;
    height:1px;
    margin:0;
    padding:0;
    overflow:visible;
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
    pointer-events:none;
    z-index:4;
}

/* ManifestoIntro가 소유권을 얻은 뒤에는 이전 구분선 소스를 모두 차단한다. */
.main-portal.manifesto-divider-controlled .main-manifesto-title {
    border-bottom:0 !important;
    box-shadow:none !important;
    background-image:none !important;
    text-decoration:none !important;
}

.main-portal.manifesto-divider-controlled .main-manifesto-title::before,
.main-portal.manifesto-divider-controlled .main-manifesto-title::after,
.main-portal.manifesto-divider-controlled .main-manifesto-inner > hr,
.main-portal.manifesto-divider-controlled .main-manifesto-divider,
.main-portal.manifesto-divider-controlled [data-manifesto-divider-track] {
    content:none !important;
    display:none !important;
}

.main-portal .main-manifesto-title > .manifesto-divider > .manifesto-divider-half {
    display:block;
    position:absolute;
    top:0;
    width:50%;
    height:1px;
    margin:0;
    padding:0;
    background:#626262;
    border:0;
    box-shadow:none;
    transform:scaleX(0);
    will-change:transform;
}

.main-portal .main-manifesto-title > .manifesto-divider > .manifesto-divider-left {
    left:0;
    transform-origin:100% 50%;
}

.main-portal .main-manifesto-title > .manifesto-divider > .manifesto-divider-right {
    right:0;
    transform-origin:0 50%;
}

/*
제목 구분선이 완성된 뒤 같은 위치에서 분리되어 본문 하단까지 내려가는 실선.
최종 이동 거리는 ManifestoIntro가 실제 렌더된 본문 높이를 정수 px로 측정한다.
*/
.main-portal .main-manifesto-inner > .manifesto-divider-drop {
    display:block;
    position:absolute;
    left:0;
    width:100%;
    height:1px;
    margin:0;
    padding:0;
    overflow:hidden;
    background:#626262;
    border:0;
    box-shadow:none;
    opacity:0;
    transform:translateY(0);
    will-change:transform, opacity;
    pointer-events:none;
    z-index:3;
}

.main-portal .main-manifesto-copy.manifesto-line-measuring .manifesto-measure-token {
    display:inline;
    white-space:normal;
    font:inherit;
    color:inherit;
}

.main-portal .main-manifesto-copy .manifesto-line {
    display:block;
    width:100%;
    height:26px;
    min-height:0;
    max-height:26px;
    margin:0;
    padding:0;
    overflow:visible;
    opacity:1;
    line-height:26px !important;
    clip-path:inset(0 0 0 0);
    will-change:height, max-height, opacity, clip-path;
}

.main-portal .main-manifesto-copy .manifesto-line-inner {
    display:block;
    width:100%;
    height:26px;
    margin:0;
    padding:0;
    line-height:26px !important;
    opacity:1;
    transform:translateY(0);
    will-change:transform, opacity;
}

.main-portal.manifesto-intro-prepared .main-manifesto-copy {
    visibility:visible !important;
}

.main-portal.manifesto-intro-prepared .main-manifesto-copy .manifesto-line {
    height:0;
    max-height:0;
    overflow:hidden;
    opacity:0;
    clip-path:inset(0 0 100% 0);
}

.main-portal.manifesto-intro-prepared .main-manifesto-copy .manifesto-line-inner {
    opacity:.18;
    transform:translateY(-10px);
}

.main-portal.manifesto-intro-complete .main-manifesto-title {
    opacity:1;
    border-bottom:0 !important;
}

.main-portal.manifesto-intro-complete .main-manifesto-title > .manifesto-divider > .manifesto-divider-half {
    transform:scaleX(1);
}

.main-portal.manifesto-intro-complete .main-manifesto-copy .manifesto-line {
    height:26px;
    max-height:26px;
    overflow:visible;
    opacity:1;
    clip-path:inset(0 0 0 0);
}

.main-portal.manifesto-intro-complete .main-manifesto-copy .manifesto-line-inner {
    opacity:1;
    transform:translateY(0);
}

@media (prefers-reduced-motion:reduce) {
    .main-portal.manifesto-intro-prepared .main-manifesto-title {
        opacity:1;
        border-bottom:0 !important;
    }

    .main-portal .main-manifesto-title > .manifesto-divider {
        display:block !important;
        left:0 !important;
        width:100% !important;
        background:transparent !important;
    }

    .main-portal .main-manifesto-title > .manifesto-divider > .manifesto-divider-half {
        transform:scaleX(1) !important;
    }

    .main-portal .main-manifesto-inner > .manifesto-divider-drop {
        opacity:1;
    }

    .main-portal.manifesto-intro-prepared .main-manifesto-copy .manifesto-line,
    .main-portal.manifesto-intro-prepared .main-manifesto-copy .manifesto-line-inner {
        height:26px;
        max-height:26px;
        overflow:visible;
        opacity:1;
        clip-path:none;
        transform:none;
    }
}