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

(Install package: clbiwiki-mainpage-yisunshin-static-bitmap-spacing-v2-20260712 / css/MainPage.css)
(Install package: whole-wiki-source-scan / css/MainPage.css)
태그: 수동 되돌리기
 
(같은 사용자의 중간 판 100개는 보이지 않습니다)
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-repeat:no-repeat;
     background:transparent !important;
     background-position:0 0;
    border:0 !important;
     background-size:660px 649px;
     box-shadow:none !important;
     image-rendering:pixelated;
    pointer-events:none;
     image-rendering:crisp-edges;
     z-index:4;
     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;
    }
}