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

편집 요약 없음
태그: 되돌려진 기여
편집 요약 없음
 
(같은 사용자의 중간 판 45개는 보이지 않습니다)
1번째 줄: 1번째 줄:
/* =========================================
/* =========================================
  COASTLINE: BLACK ICE
COASTLINE: BLACK ICE
  MediaWiki:Test.css FULL REPLACEMENT
MediaWiki:Test.css
  Current Document Skin
Sandbox main-page integration test
  2000s Industrial Game Site / Clean Flat Metal
Existing full portal body + SVG category nav from CategoryNav.js
  ========================================= */
========================================= */
 
/*
Scope:
- This file is globally imported while the test page is still active.
- Every visual rule is scoped to .stylelab, except the bridge for nested .main-portal.
- No body, top-nav, sidebar, page shell, or global layout selectors.
 
Current role:
- Test.css still owns the full test page layout: notice rail, logo, console, image feed, guestbook, tracker, status, footer.
- MainPage.css + CategoryNav.js own the SVG category navigation.
- This file only provides a bridge so the new JS/SVG category nav can sit inside the old test body without double padding or background.
 
Cleanup plan:
- After the full main page is migrated, these .stylelab rules should be renamed or moved into MainPage.css as .main-portal components.
- Then Test.css can be removed from Common.css import.
*/


/* -----------------------------------------
/* -----------------------------------------
  0. Scope / Variables
0. Style tokens
  현재 문서 보기 화면 전용
----------------------------------------- */
  ----------------------------------------- */


body.action-view:not(.page-대문):not(.ns--1) {
.stylelab {
    --clbi-bg: #020202;
--surface-page:#070707;
    --clbi-grid: rgba(118,118,118,0.075);
--surface-frame:#101010;
--surface-frame-soft:#141414;
--surface-title:#1d1d1d;
--surface-title-hover:#252525;
--surface-well:#080808;
--surface-screen:#060606;
--surface-row:#121212;
--surface-row-alt:#151515;
--surface-inset:#070707;


    --clbi-panel: #111111;
--edge-top:#555555;
    --clbi-panel-2: #151515;
--edge-side:#2b2b2b;
    --clbi-panel-3: #1a1a1a;
--edge-bottom:#050505;
    --clbi-title: #202020;
--edge-soft:#202020;
    --clbi-title-2: #252525;
--edge-mid:#333333;
    --clbi-inner: #080808;
--edge-weak:#181818;
    --clbi-inner-2: #0d0d0d;
    --clbi-row: #131313;
    --clbi-row-hover: #191919;


    --clbi-hi: #5e5e5e;
--text-main:#e2e2e2;
    --clbi-mid: #343434;
--text-soft:#c8c8c8;
    --clbi-mid-2: #262626;
--text-dim:#8a8a8a;
    --clbi-low: #050505;
--text-faint:#626262;
    --clbi-black: #000000;


    --clbi-text: #e2e2e2;
--signal-blue:#6f8fa8;
    --clbi-text-soft: #c8c8c8;
--signal-teal:#5a9b92;
    --clbi-text-dim: #888888;
--signal-green:#78966c;
    --clbi-text-deep: #5d5d5d;
--signal-amber:#c4a04a;
--signal-red:#a85c50;
--signal-gray:#9a9a9a;


    --clbi-link: #e0e0e0;
--wip-yellow:#f2c300;
    --clbi-link-hover: #ffffff;
--wip-black:#050505;
    --clbi-link-new: #b8b8b8;


    background: #000 !important;
--space-block:8px;
    color: var(--clbi-text) !important;
--space-inner:6px;
}
--space-tight:4px;
--pad-panel:8px;
 
--title-h:24px;
--screen-title-h:22px;
--nav-h:30px;
--ticker-h:22px;
--row-h:23px;
--gauge-h:48px;


body.action-view:not(.page-대문):not(.ns--1) *,
width:100%;
body.action-view:not(.page-대문):not(.ns--1) *::before,
margin:0 auto;
body.action-view:not(.page-대문):not(.ns--1) *::after {
padding:var(--space-block);
    box-sizing: border-box;
color:var(--text-main);
background:var(--surface-page);
font-size:11px;
line-height:1.5;
box-sizing:border-box;
}
}


/* -----------------------------------------
.stylelab *,
  1. Background
.stylelab *::before,
  ----------------------------------------- */
.stylelab *::after {
 
box-sizing:border-box;
body.action-view:not(.page-대문):not(.ns--1) .WW-bg {
    background: var(--clbi-bg) !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .WW-bg::before {
.stylelab a {
    content: "";
color:var(--text-main) !important;
    position: absolute;
text-decoration:none !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    opacity: 0.30 !important;
    filter: none !important;
    animation: none !important;
    background-image:
        linear-gradient(var(--clbi-grid) 1px, transparent 1px),
        linear-gradient(90deg, var(--clbi-grid) 1px, transparent 1px) !important;
    background-size: 64px 64px, 64px 64px !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .WW-bg::after {
.stylelab a:hover {
    content: none !important;
color:#ffffff !important;
text-decoration:none !important;
}
}


/* -----------------------------------------
/* -----------------------------------------
  2. Layout
1. Frame system
  ----------------------------------------- */
North-light rule:
top bright / sides neutral / bottom dark
----------------------------------------- */
 
.stylelab .frame,
.stylelab .notice-rail,
.stylelab .lab-logo,
.stylelab .console,
.stylelab .panel,
.stylelab .instrument-panel,
.stylelab .ticker {
border:1px solid;
border-color:
var(--edge-top)
var(--edge-side)
var(--edge-bottom)
var(--edge-side);
background:var(--surface-frame);
border-radius:0;
box-shadow:none;
outline:none;
overflow:hidden;
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-top-nav-wrap {
.stylelab .titlebar {
    width: min(2024px, calc(100% - 16px)) !important;
position:relative;
    margin: 0 auto !important;
height:var(--title-h);
    padding: 8px 8px 0 !important;
min-height:var(--title-h);
padding:0 var(--pad-panel);
display:flex;
align-items:center;
justify-content:space-between;
gap:var(--space-block);
background:var(--surface-title);
border-bottom:1px solid var(--edge-bottom);
color:#f0f0f0;
font-size:10px;
font-weight:700;
line-height:1;
white-space:nowrap;
overflow:hidden;
text-shadow:1px 1px 0 #000;
}
}


body.action-view:not(.page-대문):not(.ns--1) .content-wrapper {
.stylelab .titlebar > span {
    width: min(2024px, calc(100% - 16px)) !important;
display:block;
    max-width: 2024px !important;
min-width:0;
    margin: 0 auto !important;
overflow:hidden;
    padding: 8px !important;
text-overflow:ellipsis;
    display: flex !important;
    align-items: flex-start !important;
    justify-content: center !important;
    gap: 8px !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .container-fluid.liberty-content {
.stylelab .titlebar > span:first-child {
    flex: 1 1 auto !important;
flex:1 1 auto;
    width: auto !important;
    max-width: none !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding-bottom: 0 !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .liberty-content {
.stylelab .titlebar > span:last-child {
    border: none !important;
flex:0 0 auto;
    box-shadow: none !important;
color:#a8a8a8;
    border-radius: 0 !important;
font-weight:700;
text-align:right;
}
}


/* -----------------------------------------
/* -----------------------------------------
  3. Core Frame Rule
2. Notice rail
  한 요소에는 외곽선 한 겹만
Important notices above logo.
  ----------------------------------------- */
Maintenance alert uses construction stripe on the whole row.
Normal notice remains neutral.
----------------------------------------- */


body.action-view:not(.page-대문):not(.ns--1) #clbi-top-nav,
.stylelab .notice-rail {
body.action-view:not(.page-대문):not(.ns--1) .liberty-content-main,
width:100%;
body.action-view:not(.page-대문):not(.ns--1) .clbi-left-box,
margin:0 0 var(--space-block);
body.action-view:not(.page-대문):not(.ns--1) .clbi-right-box,
background:#101010;
body.action-view:not(.page-대문):not(.ns--1) .catlinks,
border:1px solid;
body.action-view:not(.page-대문):not(.ns--1) .screen-header {
border-color:
    border-radius: 0 !important;
#606060
    border-top: 1px solid var(--clbi-hi) !important;
var(--edge-side)
    border-left: 1px solid var(--clbi-mid) !important;
var(--edge-bottom)
    border-right: 1px solid var(--clbi-black) !important;
var(--edge-side);
    border-bottom: 1px solid var(--clbi-black) !important;
box-shadow:none;
    background: var(--clbi-panel) !important;
    box-shadow: none !important;
    outline: none !important;
    filter: none !important;
    overflow: hidden !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-left-title,
.stylelab .notice-line {
body.action-view:not(.page-대문):not(.ns--1) .clbi-right-title {
position:relative;
    border-radius: 0 !important;
display:grid;
    border: none !important;
grid-template-columns:72px 96px minmax(0,1fr) 48px;
    border-bottom: 1px solid var(--clbi-low) !important;
align-items:center;
    background: var(--clbi-title) !important;
gap:7px;
    color: #f0f0f0 !important;
min-height:30px;
    box-shadow: none !important;
padding:0 8px;
    text-shadow: 1px 1px 0 #000 !important;
border-bottom:1px solid #050505;
background:#141414;
font-size:12px;
line-height:1.25;
color:#dcdcdc;
overflow:hidden;
}
}


/* -----------------------------------------
.stylelab .notice-line:last-child {
  4. Top Navigation
border-bottom:none;
  ----------------------------------------- */
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-top-nav {
.stylelab .notice-line > * {
    margin-bottom: 8px !important;
position:relative;
z-index:2;
}
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-top-nav-main {
.stylelab .notice-line:hover {
    position: relative !important;
background:#1c1c1c;
    display: flex !important;
color:#ffffff;
    align-items: stretch !important;
    width: 100% !important;
    min-height: 36px !important;
    height: 36px !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-top-nav-logo {
.stylelab .notice-line.is-alert {
    display: none !important;
background:
repeating-linear-gradient(
45deg,
var(--wip-yellow) 0 9px,
var(--wip-yellow) 9px 10px,
var(--wip-black) 10px 19px,
var(--wip-black) 19px 20px
);
}
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-top-nav-tabs {
.stylelab .notice-line.is-alert::before {
    display: flex !important;
content:"";
    align-items: stretch !important;
position:absolute;
    flex: 1 1 auto !important;
inset:0;
    min-width: 0 !important;
z-index:1;
    height: 36px !important;
pointer-events:none;
background:rgba(0,0,0,0.42);
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-top-nav-item {
.stylelab .notice-line.is-alert:hover::before {
    position: relative !important;
background:rgba(0,0,0,0.34);
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    width: 118px !important;
    flex: 0 0 118px !important;
    min-height: 36px !important;
    height: 36px !important;
    padding: 0 !important;
    border-radius: 0 !important;
    border: none !important;
    border-right: 1px solid var(--clbi-low) !important;
    background: #171717 !important;
    color: var(--clbi-text) !important;
    font-size: 11px !important;
    line-height: 1 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    box-shadow: none !important;
    text-shadow: 1px 1px 0 #000 !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-top-nav-item:hover,
.stylelab .notice-line.is-notice {
body.action-view:not(.page-대문):not(.ns--1) .clbi-top-nav-item.clbi-tnav-active {
background:#141414;
    background: #242424 !important;
    color: #ffffff !important;
    text-decoration: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-tnav-lang {
.stylelab .notice-line.is-notice:hover {
    width: 54px !important;
background:#1c1c1c;
    flex: 0 0 54px !important;
    min-height: 36px !important;
    height: 36px !important;
    padding: 0 !important;
    gap: 1px !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-tnav-icon,
.stylelab .notice-badge {
body.action-view:not(.page-대문):not(.ns--1) .clbi-icon {
display:inline-flex;
    width: 18px !important;
align-items:center;
    height: 18px !important;
justify-content:center;
    flex: 0 0 18px !important;
height:20px;
    filter: grayscale(1) brightness(1.45) contrast(0.95) !important;
padding:0 7px;
    opacity: 0.86 !important;
border:1px solid #444444;
background:#0b0b0b;
color:#d8d8d8;
font-size:10px;
font-weight:700;
line-height:1;
text-shadow:1px 1px 0 #000;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-tnav-label {
.stylelab .notice-line.is-alert .notice-badge,
    height: auto !important;
.stylelab .notice-line.is-notice .notice-badge {
    line-height: 1 !important;
border-color:#505050;
    font-size: 11px !important;
background:#101010;
    font-weight: 700 !important;
color:#eeeeee;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-tnav-lang-code {
.stylelab .notice-date {
    font-size: 10px !important;
color:#9d9d9d;
white-space:nowrap;
font-size:10px;
font-family:Consolas, Monaco, monospace !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-tnav-arrow {
.stylelab .notice-text {
    color: var(--clbi-text-dim) !important;
min-width:0;
    font-size: 10px !important;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
color:#e0e0e0;
font-size:12px;
font-weight:700;
}
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-top-nav-search {
.stylelab .notice-line.is-alert .notice-badge,
    position: static !important;
.stylelab .notice-line.is-alert .notice-date,
    left: auto !important;
.stylelab .notice-line.is-alert .notice-text,
    top: auto !important;
.stylelab .notice-line.is-alert .notice-action {
    right: auto !important;
text-shadow:
    bottom: auto !important;
-1px 0 0 #000,
    transform: none !important;
1px 0 0 #000,
    pointer-events: auto !important;
0 -1px 0 #000,
 
0 1px 0 #000,
    display: flex !important;
-1px -1px 0 #000,
    align-items: center !important;
1px -1px 0 #000,
    justify-content: center !important;
-1px 1px 0 #000,
    flex: 0 0 276px !important;
1px 1px 0 #000;
    width: 276px !important;
    height: 36px !important;
    padding: 0 8px !important;
    margin: 0 !important;
    border-left: 1px solid #202020 !important;
    border-right: 1px solid var(--clbi-low) !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-top-search-input {
.stylelab .notice-line:hover .notice-text {
    width: 260px !important;
color:#ffffff;
    max-width: 260px !important;
    height: 22px !important;
    padding: 2px 7px !important;
    border-radius: 0 !important;
    border: 1px solid var(--clbi-mid-2) !important;
    background: #050505 !important;
    color: #dcdcdc !important;
    font-size: 11px !important;
    outline: none !important;
    box-shadow: none !important;
    transition: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-top-search-input:focus {
.stylelab .notice-action {
    width: 260px !important;
justify-self:end;
    max-width: 260px !important;
display:inline-flex;
    border-color: #444 !important;
align-items:center;
justify-content:center;
height:20px;
min-width:38px;
padding:0 5px;
border:1px solid #3a3a3a;
background:#0b0b0b;
color:#c8c8c8;
font-size:10px;
font-weight:700;
white-space:nowrap;
line-height:1;
}
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-top-nav-right {
.stylelab .notice-line:hover .notice-action {
    display: flex !important;
border-color:#606060;
    align-items: stretch !important;
background:#181818;
    flex: 0 0 auto !important;
color:#ffffff;
    margin-left: 0 !important;
    border-left: 0 !important;
}
}


/* -----------------------------------------
/* -----------------------------------------
  5. Worldbuilding Dropdown
3. Top logo
  ----------------------------------------- */
Site signboard. Placed before category navigation and content.
----------------------------------------- */


body.action-view:not(.page-대문):not(.ns--1) #clbi-sub-worldbuilding {
.stylelab .lab-logo {
    width: 100% !important;
width:100%;
    height: 0 !important;
height:auto;
    overflow: hidden !important;
margin:0 0 var(--space-block);
    border-top: 0 solid var(--clbi-low) !important;
padding:10px 0 8px;
    background: #0a0a0a !important;
text-align:center;
    transition: height 160ms ease !important;
line-height:0;
background:#0b0b0b;
}
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-sub-worldbuilding.worldbuilding-open {
.stylelab .lab-logo a,
    height: 25px !important;
.stylelab .lab-logo .mw-file-description {
    border-top-width: 1px !important;
display:inline-block;
line-height:0;
}
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-sub-worldbuilding-inner,
.stylelab .lab-logo img,
body.action-view:not(.page-대문):not(.ns--1) .clbi-tnav-sub-list {
.stylelab .lab-logo .mw-file-element {
    height: 24px !important;
width:760px;
max-width:90%;
height:auto;
filter:
grayscale(1)
contrast(1.04)
brightness(1.02);
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-tnav-sub-list {
/* -----------------------------------------
    display: flex !important;
4. Category navigation bridge
    align-items: stretch !important;
----------------------------------------- */
    flex-wrap: nowrap !important;
 
    padding: 0 !important;
/*
    margin: 0 !important;
The actual category navigation is now generated by CategoryNav.js
}
and styled by MainPage.css as SVG.
 
Why this bridge exists:
- The old full test body is still wrapped in .stylelab.
- MainPage.css expects a .main-portal wrapper.
- If .main-portal keeps its own padding/background inside .stylelab, the category nav gets a double frame and the ratio feels different from the original body.


body.action-view:not(.page-대문):not(.ns--1) .clbi-tnav-sub-item {
So, inside .stylelab, .main-portal is treated as a transparent mount wrapper only.
    position: relative !important;
The SVG nav itself remains owned by MainPage.css.
    display: flex !important;
*/
    align-items: center !important;
    justify-content: center !important;
    height: 24px !important;
    min-height: 24px !important;
    padding: 0 14px 1px !important;
    border: none !important;
    border-right: 1px solid var(--clbi-low) !important;
    background: #141414 !important;
    color: var(--clbi-text) !important;
    font-size: 10px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    white-space: nowrap !important;
    box-shadow: none !important;
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-tnav-sub-item::after {
.stylelab .main-portal {
    display: none !important;
width:100%;
margin:0;
padding:0;
background:transparent;
font-size:11px;
line-height:1.5;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-tnav-sub-item:hover {
.stylelab .main-portal [data-component="category-nav"] {
    background: #202020 !important;
width:100%;
    color: #fff !important;
margin:0 0 var(--space-block);
    box-shadow: none !important;
padding:0;
}
}


/* -----------------------------------------
/* -----------------------------------------
  6. Sidebars
5. Main console
  ----------------------------------------- */
Type: SCREEN DEVICE
frame > titlebar > body > screen panels
----------------------------------------- */


body.action-view:not(.page-대문):not(.ns--1) #clbi-left-sidebar,
.stylelab .console {
body.action-view:not(.page-대문):not(.ns--1) #clbi-right-sidebar {
width:100%;
    width: 230px !important;
margin:0 0 var(--space-block);
    flex: 0 0 230px !important;
padding:0;
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
    padding: 0 !important;
    align-self: flex-start !important;
    z-index: 1000 !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-left-box,
.stylelab .console-body {
body.action-view:not(.page-대문):not(.ns--1) .clbi-right-box {
padding:var(--space-inner);
    background: var(--clbi-panel) !important;
background:var(--surface-frame);
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-left-title,
.stylelab .console-grid {
body.action-view:not(.page-대문):not(.ns--1) .clbi-right-title {
display:grid;
    min-height: 24px !important;
grid-template-columns:minmax(0,1fr) 260px;
    padding: 5px 8px !important;
gap:var(--space-inner);
    display: flex !important;
align-items:stretch;
    align-items: center !important;
    gap: 6px !important;
    font-size: 11px !important;
    line-height: 1.2 !important;
    font-weight: 700 !important;
    letter-spacing: 0 !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-left-content,
.stylelab .main-screen,
body.action-view:not(.page-대문):not(.ns--1) .clbi-right-content {
.stylelab .side-screen {
    padding: 8px !important;
position:relative;
    color: var(--clbi-text-soft) !important;
min-width:0;
    font-size: 11px !important;
height:100%;
    line-height: 1.55 !important;
overflow:hidden;
    background: var(--clbi-inner) !important;
border:1px solid var(--edge-soft);
background:var(--surface-screen);
box-shadow:
inset 0 0 0 1px rgba(255,255,255,0.018),
inset 0 0 18px rgba(0,0,0,0.70);
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-left-content a,
.stylelab .main-screen::before,
body.action-view:not(.page-대문):not(.ns--1) .clbi-right-content a {
.stylelab .side-screen::before {
    color: var(--clbi-text) !important;
content:"";
    text-decoration: none !important;
position:absolute;
inset:0;
z-index:6;
pointer-events:none;
background:
radial-gradient(
ellipse at 50% 42%,
rgba(255,255,255,0.030) 0%,
transparent 42%
),
linear-gradient(
to bottom,
rgba(255,255,255,0.030) 0%,
transparent 24%,
rgba(0,0,0,0.16) 100%
);
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-left-content a:hover,
.stylelab .main-screen::after,
body.action-view:not(.page-대문):not(.ns--1) .clbi-right-content a:hover {
.stylelab .side-screen::after {
    color: #fff !important;
content:"";
    text-decoration: underline !important;
position:absolute;
inset:-40px 0;
z-index:7;
pointer-events:none;
opacity:0.13;
background:
repeating-linear-gradient(
to bottom,
rgba(255,255,255,0.080) 0px,
rgba(255,255,255,0.080) 1px,
transparent 2px,
transparent 5px
);
mix-blend-mode:screen;
}
}


/* 최근 변경 */
.stylelab .main-screen > *,
body.action-view:not(.page-대문):not(.ns--1) .clbi-recent-item {
.stylelab .side-screen > * {
    display: flex !important;
position:relative;
    align-items: center !important;
z-index:3;
    justify-content: space-between !important;
    gap: 6px !important;
    min-height: 22px !important;
    margin: 0 !important;
    padding: 4px 0 !important;
    border: none !important;
    border-bottom: 1px solid #202020 !important;
    background: transparent !important;
    box-shadow: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-recent-item:last-child {
.stylelab .main-screen {
    border-bottom: none !important;
min-height:392px;
padding:var(--pad-panel);
display:flex;
flex-direction:column;
justify-content:flex-start;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-recent-title-wrap {
.stylelab .side-screen {
    flex: 1 1 auto !important;
padding:var(--pad-panel);
    min-width: 0 !important;
display:flex;
    overflow: hidden !important;
flex-direction:column;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-recent-title {
/* -----------------------------------------
    color: #d8d8d8 !important;
6. Image feed crossfade + alternating drift
    font-size: 10px !important;
Current image fades down, next layer becomes visible.
    line-height: 1.35 !important;
Image drift alternates: left-down / right-down.
----------------------------------------- */
 
.stylelab .image-feed {
position:relative;
width:100%;
height:240px;
min-height:240px;
overflow:hidden;
border:1px solid var(--edge-soft);
background:#030303;
isolation:isolate;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-recent-time {
.stylelab .feed-layer {
    flex: 0 0 auto !important;
position:absolute;
    color: var(--clbi-text-dim) !important;
inset:-12px;
    font-size: 9px !important;
z-index:1;
    white-space: nowrap !important;
opacity:0;
background-size:cover;
background-position:center center;
background-repeat:no-repeat;
filter:
brightness(0.78)
contrast(1.12)
saturate(0.78)
grayscale(0.16);
transform:translate(0,0) scale(1.06);
transform-origin:center center;
will-change:opacity, transform;
animation-duration:24s;
animation-timing-function:linear;
animation-iteration-count:infinite;
}
}


/* 오른쪽 사이드바 검색 */
.stylelab .feed-bg-001 {
body.action-view:not(.page-대문):not(.ns--1) #clbi-search-input {
background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-001.png');
    width: 100% !important;
    height: 22px !important;
    margin: 0 0 5px !important;
    padding: 2px 6px !important;
    border-radius: 0 !important;
    border: 1px solid #2a2a2a !important;
    background: #050505 !important;
    color: #dcdcdc !important;
    font-size: 11px !important;
    box-shadow: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-search-btn {
.stylelab .feed-bg-002 {
    width: 100% !important;
background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-002.png');
    min-height: 23px !important;
    padding: 4px 0 !important;
    border-radius: 0 !important;
    border: 1px solid #2a2a2a !important;
    background: #151515 !important;
    color: #e0e0e0 !important;
    font-size: 10px !important;
    font-weight: 700 !important;
    cursor: pointer !important;
    box-shadow: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-search-btn:hover {
.stylelab .feed-bg-003 {
    background: #222 !important;
background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-003.png');
    color: #fff !important;
}
}


/* 유저 버튼 */
.stylelab .feed-bg-004 {
body.action-view:not(.page-대문):not(.ns--1) .clbi-user-btn {
background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-004.png');
    display: block !important;
    margin: 0 0 4px !important;
    padding: 5px 8px !important;
    border-radius: 0 !important;
    border: 1px solid #2a2a2a !important;
    border-left: 3px solid #555 !important;
    background: #151515 !important;
    color: var(--clbi-text) !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    line-height: 1.25 !important;
    box-shadow: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-user-btn:last-child {
.stylelab .feed-layer-1 {
    margin-bottom: 0 !important;
animation-name:image-feed-drift-left;
animation-delay:0s;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-user-btn:hover,
.stylelab .feed-layer-2 {
body.action-view:not(.page-대문):not(.ns--1) .clbi-user-btn.clbi-user-btn-active {
animation-name:image-feed-drift-right;
    background: #222 !important;
animation-delay:6s;
    color: #fff !important;
    border-color: #3a3a3a !important;
    border-left-color: #777 !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-user-btn-logout {
.stylelab .feed-layer-3 {
    border-left-color: #777 !important;
animation-name:image-feed-drift-left;
    color: #cfcfcf !important;
animation-delay:12s;
}
}


/* 링크 박스 */
.stylelab .feed-layer-4 {
body.action-view:not(.page-대문):not(.ns--1) .clbi-link-box {
animation-name:image-feed-drift-right;
    padding: 8px !important;
animation-delay:18s;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-link-box ul {
@keyframes image-feed-drift-left {
    display: flex !important;
0% {
    gap: 5px !important;
opacity:0;
    list-style: none !important;
transform:translate(0,0) scale(1.06);
    margin: 0 !important;
}
    padding: 0 !important;
4.166% {
opacity:1;
transform:translate(0,0) scale(1.06);
}
25% {
opacity:1;
transform:translate(-22px,14px) scale(1.075);
}
29.166% {
opacity:0;
transform:translate(-26px,16px) scale(1.078);
}
100% {
opacity:0;
transform:translate(0,0) scale(1.06);
}
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-link-box ul li {
@keyframes image-feed-drift-right {
    flex: 1 !important;
0% {
    margin: 0 !important;
opacity:0;
    padding: 0 !important;
transform:translate(0,0) scale(1.06);
}
4.166% {
opacity:1;
transform:translate(0,0) scale(1.06);
}
}
 
25% {
body.action-view:not(.page-대문):not(.ns--1) .clbi-link-box ul li a {
opacity:1;
    display: flex !important;
transform:translate(22px,14px) scale(1.075);
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    min-height: 24px !important;
    padding: 4px 0 !important;
    border-radius: 0 !important;
    border: 1px solid #2a2a2a !important;
    background: #151515 !important;
    color: #a0a0a0 !important;
    font-size: 10px !important;
    font-weight: 700 !important;
    text-align: center !important;
    box-shadow: none !important;
}
}
 
29.166% {
body.action-view:not(.page-대문):not(.ns--1) .clbi-link-box ul li a:hover {
opacity:0;
    background: #222 !important;
transform:translate(26px,16px) scale(1.078);
    color: #fff !important;
}
}
 
100% {
/* -----------------------------------------
opacity:0;
  7. Left TOC
transform:translate(0,0) scale(1.06);
  ----------------------------------------- */
 
body.action-view:not(.page-대문):not(.ns--1) #side-toc-box .toc-sidebar-content {
    padding: 8px !important;
}
}
body.action-view:not(.page-대문):not(.ns--1) #side-toc-box .generated-toc {
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) #side-toc-box .generated-toc li {
.stylelab .image-feed::before {
    margin: 0 !important;
content:"";
    padding: 0 !important;
position:absolute;
    background: transparent !important;
inset:0;
    line-height: 1.35 !important;
z-index:5;
    border-bottom: 1px solid #202020 !important;
pointer-events:none;
background:
linear-gradient(
to bottom,
rgba(0,0,0,0.18) 0%,
transparent 22%,
transparent 74%,
rgba(0,0,0,0.30) 100%
),
linear-gradient(
to right,
rgba(0,0,0,0.22) 0%,
transparent 10%,
transparent 90%,
rgba(0,0,0,0.22) 100%
);
}
}


body.action-view:not(.page-대문):not(.ns--1) #side-toc-box .generated-toc li:last-child {
.stylelab .image-feed::after {
    border-bottom: none !important;
content:"";
position:absolute;
inset:-40px 0;
z-index:6;
pointer-events:none;
opacity:0.20;
background:
repeating-linear-gradient(
to bottom,
rgba(255,255,255,0.090) 0px,
rgba(255,255,255,0.090) 1px,
transparent 2px,
transparent 5px
);
mix-blend-mode:screen;
}
}


body.action-view:not(.page-대문):not(.ns--1) #side-toc-box .generated-toc a {
.stylelab .feed-caption {
    display: block !important;
position:absolute;
    color: #d8d8d8 !important;
left:0;
    text-decoration: none !important;
right:0;
    padding: 5px 3px !important;
bottom:0;
    border-radius: 0 !important;
z-index:8;
    overflow: hidden !important;
height:22px;
    background: transparent !important;
padding:0 7px;
display:flex;
align-items:center;
justify-content:space-between;
gap:8px;
border-top:1px solid rgba(255,255,255,0.09);
background:rgba(5,5,5,0.86);
color:#cfcfcf;
font-size:10px;
line-height:22px;
text-shadow:1px 1px 0 #000;
}
}


body.action-view:not(.page-대문):not(.ns--1) #side-toc-box .generated-toc a:hover {
.stylelab .feed-caption span:first-child {
    background: #151515 !important;
min-width:0;
    color: #ffffff !important;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}
}


body.action-view:not(.page-대문):not(.ns--1) #side-toc-box .toc-scroll-wrap {
.stylelab .feed-caption span:last-child {
    display: block !important;
flex:0 0 auto;
    width: 100% !important;
color:var(--text-dim);
    overflow: hidden !important;
    position: relative !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) #side-toc-box .toc-scroll-wrap.is-scrolling {
/* -----------------------------------------
    mask-image: linear-gradient(to right, black 88%, transparent 100%) !important;
7. Statement plate below image feed
    -webkit-mask-image: linear-gradient(to right, black 88%, transparent 100%) !important;
----------------------------------------- */
}


body.action-view:not(.page-대문):not(.ns--1) #side-toc-box .toc-scroll-text {
.stylelab .statement-plate {
    display: inline-block !important;
margin:var(--space-inner) 0 0;
    white-space: nowrap !important;
padding:13px 18px 12px;
    max-width: none !important;
border:1px solid var(--edge-soft);
background:#080808;
}
}


body.action-view:not(.page-대문):not(.ns--1) #side-toc-box .toc-level-2 .toc-scroll-text {
.stylelab .statement-plate h2 {
    font-size: 11px !important;
margin:0 0 10px !important;
    font-weight: 700 !important;
padding:0 0 8px !important;
    color: #e0e0e0 !important;
border-bottom:1px solid var(--edge-soft) !important;
color:#f4f4f4 !important;
font-size:20px !important;
line-height:1.25 !important;
text-align:center !important;
text-shadow:
1px 1px 0 #000,
0 0 4px rgba(255,255,255,0.10) !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) #side-toc-box .toc-level-3 {
.stylelab .statement-plate p {
    padding-left: 10px !important;
max-width:820px;
margin:0 auto 9px;
color:#d8d8d8;
font-size:12px;
line-height:1.68;
text-align:center;
text-shadow:1px 1px 0 #000;
}
}


body.action-view:not(.page-대문):not(.ns--1) #side-toc-box .toc-level-3 .toc-scroll-text {
.stylelab .statement-plate p:last-child {
    font-size: 10px !important;
margin-bottom:0;
    font-weight: 400 !important;
    color: #b8b8b8 !important;
}
}


/* -----------------------------------------
/* -----------------------------------------
  8. Document Header / Title
8. Screen guestbook
  ----------------------------------------- */
Top-right body content module.
Dummy only. Final interactive function later.
----------------------------------------- */


body.action-view:not(.page-대문):not(.ns--1) .liberty-content-header {
.stylelab .screen-title {
    display: flex !important;
height:var(--screen-title-h);
    align-items: flex-end !important;
min-height:var(--screen-title-h);
    justify-content: space-between !important;
margin:0 0 var(--space-inner);
    gap: 8px !important;
padding:0 7px;
    padding: 0 !important;
display:flex;
    margin: 0 !important;
align-items:center;
    background: transparent !important;
justify-content:space-between;
    border: none !important;
gap:6px;
    box-shadow: none !important;
border:1px solid var(--edge-soft);
    min-height: 0 !important;
background:#151515;
    height: auto !important;
color:#f0f0f0;
font-size:10px;
font-weight:700;
line-height:1;
text-shadow:1px 1px 0 #000;
}
}


body.action-view:not(.page-대문):not(.ns--1) .liberty-content-header .title {
.stylelab .screen-title span:last-child {
    order: 1 !important;
color:var(--text-dim);
    flex: 1 1 auto !important;
font-size:9px;
    min-width: 0 !important;
    display: flex !important;
    align-items: flex-end !important;
    margin: 0 !important;
    padding: 0 !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .liberty-content-header h1 {
.stylelab .guestbook-device {
    display: block !important;
flex:1 1 auto;
    margin: 0 !important;
min-height:0;
    padding: 0 !important;
display:flex;
    min-width: 0 !important;
flex-direction:column;
    line-height: 1 !important;
gap:var(--space-inner);
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-page-title-main,
.stylelab .guestbook-messages {
body.action-view:not(.page-대문):not(.ns--1) .mw-page-title-namespace,
flex:1 1 auto;
body.action-view:not(.page-대문):not(.ns--1) .mw-page-title-separator {
min-height:0;
    display: inline-block !important;
border-top:1px solid var(--edge-soft);
    vertical-align: bottom !important;
border-bottom:1px solid var(--edge-soft);
    position: relative !important;
overflow:hidden;
    margin: 0 !important;
    padding: 7px 8px !important;
    border-radius: 0 !important;
    border-top: 1px solid var(--clbi-hi) !important;
    border-left: 1px solid var(--clbi-mid) !important;
    border-right: 1px solid var(--clbi-black) !important;
    border-bottom: none !important;
    background: var(--clbi-title) !important;
    color: #f0f0f0 !important;
    line-height: 1.15 !important;
    font-size: 22px !important;
    text-shadow: 1px 1px 0 #000 !important;
    box-shadow: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-page-title-main::after,
.stylelab .guestbook-message {
body.action-view:not(.page-대문):not(.ns--1) .mw-page-title-namespace::after,
padding:6px 2px;
body.action-view:not(.page-대문):not(.ns--1) .mw-page-title-separator::after,
border-bottom:1px solid var(--edge-soft);
body.action-view:not(.page-대문):not(.ns--1) .liberty-content-header .title h1::after {
    content: none !important;
    display: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-page-title-namespace {
.stylelab .guestbook-message:last-child {
    padding-right: 2px !important;
border-bottom:none;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-page-title-separator {
.stylelab .guestbook-message:hover {
    padding-left: 2px !important;
background:#111111;
    padding-right: 2px !important;
    border-left: none !important;
    border-right: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-page-title-namespace ~ .mw-page-title-main {
.stylelab .guestbook-message-head {
    border-left: none !important;
display:flex;
    padding-left: 2px !important;
align-items:center;
justify-content:space-between;
gap:6px;
margin-bottom:3px;
font-size:9px;
line-height:1.2;
}
}


body.action-view:not(.page-대문):not(.ns--1) .liberty-content-header .contentSub {
.stylelab .guestbook-name {
    display: none !important;
color:#eeeeee;
font-weight:700;
white-space:nowrap;
}
}


/* 편집 버튼 */
.stylelab .guestbook-time {
body.action-view:not(.page-대문):not(.ns--1) .liberty-content-header .content-tools {
color:var(--text-dim);
    order: 2 !important;
white-space:nowrap;
    flex: 0 0 auto !important;
    padding: 0 !important;
    margin: 0 !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .content-tools .btn,
.stylelab .guestbook-text {
body.action-view:not(.page-대문):not(.ns--1) .btn-secondary,
color:var(--text-soft);
body.action-view:not(.page-대문):not(.ns--1) .btn-group .btn {
font-size:10px;
    min-height: 30px !important;
line-height:1.45;
    padding: 6px 9px !important;
word-break:keep-all;
    border-radius: 0 !important;
    border: 1px solid #2a2a2a !important;
    border-bottom: none !important;
    background: #151515 !important;
    color: #e2e2e2 !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    line-height: 1.1 !important;
    box-shadow: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .content-tools .btn:hover,
.stylelab .guestbook-form {
body.action-view:not(.page-대문):not(.ns--1) .btn-secondary:hover,
display:grid;
body.action-view:not(.page-대문):not(.ns--1) .btn-group .btn:hover {
grid-template-columns:minmax(0,1fr) 48px;
    background: #222 !important;
gap:var(--space-tight);
    color: #fff !important;
    border-color: #3a3a3a !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .btn-group .btn:first-child,
.stylelab .guestbook-input {
body.action-view:not(.page-대문):not(.ns--1) .btn-group .dropdown-toggle {
height:24px;
    border-radius: 0 !important;
padding:0 7px;
display:flex;
align-items:center;
border:1px solid var(--edge-soft);
background:#070707;
color:var(--text-faint);
font-size:10px;
line-height:1;
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
}
}


/* -----------------------------------------
.stylelab .guestbook-input:hover {
  9. Main Content
background:#0c0c0c;
  ----------------------------------------- */
color:#8f8f8f;
}


body.action-view:not(.page-대문):not(.ns--1) .Liberty .content-wrapper .liberty-content .liberty-content-main,
.stylelab .guestbook-submit {
body.action-view:not(.page-대문):not(.ns--1) .liberty-content-main {
height:24px;
    width: 100% !important;
display:flex;
    border-radius: 0 !important;
align-items:center;
    border-top: 1px solid var(--clbi-hi) !important;
justify-content:center;
    border-left: 1px solid var(--clbi-mid) !important;
border:1px solid var(--edge-soft);
    border-right: 1px solid var(--clbi-black) !important;
background:#161616;
    border-bottom: 1px solid var(--clbi-black) !important;
color:var(--text-soft);
    background: #111111 !important;
font-size:9px;
    color: var(--clbi-text) !important;
font-weight:700;
    box-shadow: none !important;
line-height:1;
    outline: none !important;
text-shadow:1px 1px 0 #000;
    overflow: hidden !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .liberty-content-main .mw-parser-output {
.stylelab .guestbook-submit:hover {
    padding: 18px !important;
background:#222222;
    background: transparent !important;
color:#ffffff;
    color: var(--clbi-text) !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output p {
/* -----------------------------------------
    color: var(--clbi-text) !important;
9. Ticker
    line-height: 1.82 !important;
Type: RECORD STRIP
    margin: 0.65em 0 1em !important;
Not a screen device.
----------------------------------------- */
 
.stylelab .ticker {
height:var(--ticker-h);
margin:0 0 var(--space-inner);
padding:0 var(--pad-panel);
color:#bdbdbd;
background:#171717;
font-size:10px;
line-height:var(--ticker-h);
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
text-shadow:1px 1px 0 #000;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output b,
/* -----------------------------------------
body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output strong {
10. Module grid
    color: #ffffff !important;
----------------------------------------- */
    font-weight: 700 !important;
}


body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output i,
.stylelab .module-grid {
body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output em {
display:grid;
    color: #d0d0d0 !important;
grid-template-columns:minmax(0,1fr) minmax(0,1fr) 280px;
gap:var(--space-inner);
align-items:stretch;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output hr {
.stylelab .panel,
    height: 0 !important;
.stylelab .instrument-panel {
    border: none !important;
min-width:0;
    border-top: 1px solid #2a2a2a !important;
height:100%;
    margin: 16px 0 !important;
display:flex;
flex-direction:column;
}
}


/* 본문 제목 */
.stylelab .panel-body,
body.action-view:not(.page-대문):not(.ns--1) .Liberty .content-wrapper .liberty-content .liberty-content-main h1,
.stylelab .instrument-body {
body.action-view:not(.page-대문):not(.ns--1) .Liberty .content-wrapper .liberty-content .liberty-content-main h2,
flex:1 1 auto;
body.action-view:not(.page-대문):not(.ns--1) .Liberty .content-wrapper .liberty-content .liberty-content-main h3,
min-height:0;
body.action-view:not(.page-대문):not(.ns--1) .Liberty .content-wrapper .liberty-content .liberty-content-main h4,
padding:var(--pad-panel);
body.action-view:not(.page-대문):not(.ns--1) .Liberty .content-wrapper .liberty-content .liberty-content-main h5,
background:var(--surface-well);
body.action-view:not(.page-대문):not(.ns--1) .Liberty .content-wrapper .liberty-content .liberty-content-main h6 {
    margin: 1.2rem 0 0.65rem !important;
    padding: 6px 8px !important;
    border: none !important;
    border-top: 1px solid #333 !important;
    border-bottom: 1px solid #050505 !important;
    background: #181818 !important;
    color: #ffffff !important;
    line-height: 1.25 !important;
    overflow-wrap: break-word !important;
    overflow: hidden !important;
    text-shadow: 1px 1px 0 #000 !important;
    box-shadow: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output h2 {
/* -----------------------------------------
    font-size: 18px !important;
11. Record modules
}
No scanlines. No screen treatment.
----------------------------------------- */


body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output h3 {
.stylelab .record-list {
    font-size: 15px !important;
margin:0 !important;
    background: #151515 !important;
padding:0 !important;
list-style:none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-editsection,
.stylelab .record-list li {
body.action-view:not(.page-대문):not(.ns--1) .mw-editsection a {
display:grid;
    color: #8a8a8a !important;
grid-template-columns:minmax(0,1fr) auto;
    font-size: 10px !important;
align-items:center;
    text-shadow: none !important;
gap:var(--space-block);
height:var(--row-h);
min-height:var(--row-h);
margin:0;
padding:0 2px;
border-bottom:1px solid var(--edge-soft);
color:var(--text-soft);
line-height:1.25;
}
}


/* 본문 링크 */
.stylelab .record-list li:first-child {
body.action-view:not(.page-대문):not(.ns--1) .liberty-content-main a {
border-top:1px solid var(--edge-soft);
    color: var(--clbi-link) !important;
    text-decoration: underline !important;
    text-decoration-color: #555 !important;
    text-underline-offset: 2px !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .liberty-content-main a:hover {
.stylelab .record-list li:hover {
    color: var(--clbi-link-hover) !important;
background:#151515;
    text-decoration-color: #ffffff !important;
color:#ffffff;
}
}


body.action-view:not(.page-대문):not(.ns--1) .liberty-content-main a.new,
.stylelab .record-list li span:first-child {
body.action-view:not(.page-대문):not(.ns--1) .liberty-content-main a.new:visited {
min-width:0;
    color: var(--clbi-link-new) !important;
overflow:hidden;
    text-decoration-style: dashed !important;
text-overflow:ellipsis;
white-space:nowrap;
}
}


body.action-view:not(.page-대문):not(.ns--1) .liberty-content-main a.external {
.stylelab .meta {
    color: #d8d8d8 !important;
color:var(--text-dim);
    text-decoration: underline !important;
white-space:nowrap;
font-size:9px;
line-height:1;
}
}


body.action-view:not(.page-대문):not(.ns--1) .liberty-content-main a.external::before {
.stylelab .record-list li:hover .meta {
    display: none !important;
color:#c0c0c0;
}
}


/* -----------------------------------------
/* -----------------------------------------
  10. Tables / Lists / Code
12. Status tags
  ----------------------------------------- */
Small functional color only.
No structural color use.
----------------------------------------- */


body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output ul,
.stylelab .status-tag {
body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output ol {
display:inline-flex;
    margin-top: 0.4em !important;
align-items:center;
    margin-bottom: 1em !important;
justify-content:center;
min-width:34px;
height:16px;
padding:0 4px;
border:1px solid #303030;
background:#161616;
color:var(--text-soft);
font-size:9px;
text-align:center;
line-height:1;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output li {
.stylelab .status-tag.is-progress {
    margin-bottom: 0.25em !important;
border-color:#6d5b2c;
    line-height: 1.65 !important;
background:#19170f;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output table.wikitable,
.stylelab .status-tag.is-review {
body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output .mw-datatable {
border-color:#36515d;
    border-collapse: collapse !important;
background:#10171a;
    border: 1px solid #2a2a2a !important;
    background: #0a0a0a !important;
    color: var(--clbi-text) !important;
    box-shadow: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output table.wikitable th,
.stylelab .status-tag.is-wait {
body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output .mw-datatable th {
border-color:#484848;
    padding: 6px 8px !important;
background:#151515;
    border: 1px solid #2a2a2a !important;
    background: #202020 !important;
    color: #ffffff !important;
    font-weight: 700 !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output table.wikitable td,
.stylelab .status-tag.is-done {
body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output .mw-datatable td {
border-color:#3d5c38;
    padding: 6px 8px !important;
background:#111811;
    border: 1px solid #242424 !important;
    background: #101010 !important;
    color: var(--clbi-text-soft) !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output table.wikitable tr:hover td,
.stylelab .status-tag.is-alert {
body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output .mw-datatable tr:hover td {
border-color:#6a3933;
    background: #161616 !important;
background:#1b1110;
}
}


body.action-view:not(.page-대문):not(.ns--1) pre,
/* -----------------------------------------
body.action-view:not(.page-대문):not(.ns--1) code,
13. Team work module
body.action-view:not(.page-대문):not(.ns--1) .mw-code {
Use WIP construction motif only where the making team is foregrounded.
    border-radius: 0 !important;
Only motif: left vertical construction rail.
    border: 1px solid #2a2a2a !important;
----------------------------------------- */
    background: #070707 !important;
 
    color: #dcdcdc !important;
.stylelab .team-panel .panel-body {
    box-shadow: none !important;
position:relative;
padding-left:15px;
}
}


body.action-view:not(.page-대문):not(.ns--1) pre {
.stylelab .team-panel .panel-body::before {
    padding: 10px !important;
content:"";
    overflow: auto !important;
position:absolute;
left:6px;
top:8px;
bottom:8px;
width:4px;
pointer-events:none;
background:
repeating-linear-gradient(
45deg,
var(--wip-yellow) 0 4px,
var(--wip-yellow) 4px 5px,
var(--wip-black) 5px 9px,
var(--wip-black) 9px 10px
);
opacity:0.95;
}
}


body.action-view:not(.page-대문):not(.ns--1) blockquote {
.stylelab .team-panel .titlebar > span:last-child {
    margin: 1em 0 !important;
color:#c6c6c6;
    padding: 8px 12px !important;
    border: 1px solid #2a2a2a !important;
    border-left: 3px solid #555 !important;
    background: #0b0b0b !important;
    color: #d0d0d0 !important;
}
}


/* -----------------------------------------
/* -----------------------------------------
  11. Images / Media
14. Status instrument
  ----------------------------------------- */
Type: STATUS INSTRUMENT
No scanlines. Gauge cells may have recessed finish.
----------------------------------------- */


body.action-view:not(.page-대문):not(.ns--1) .thumbinner {
.stylelab .instrument-grid {
    border-radius: 0 !important;
display:grid;
    border: 1px solid #2a2a2a !important;
grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    background: #0a0a0a !important;
gap:var(--space-inner);
    color: var(--clbi-text-soft) !important;
margin:0 0 var(--space-inner);
    box-shadow: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .thumbcaption {
.stylelab .gauge {
    color: #b8b8b8 !important;
height:var(--gauge-h);
    font-size: 11px !important;
min-width:0;
    line-height: 1.45 !important;
padding:6px;
display:flex;
flex-direction:column;
align-items:center;
justify-content:center;
border:1px solid var(--edge-soft);
background:var(--surface-inset);
text-align:center;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.025),
inset 0 -1px 0 rgba(0,0,0,0.55);
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-parser-output img {
.stylelab .gauge:hover {
    image-rendering: auto;
background:#0d0d0d;
}
}


/* -----------------------------------------
.stylelab .gauge b {
  12. Infobox Cleanup
display:block;
  ----------------------------------------- */
color:#f0f0f0;
font-family:Consolas, Monaco, monospace !important;
font-size:18px;
line-height:1;
text-shadow:1px 1px 0 #000;
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-infobox {
.stylelab .gauge span {
    border-radius: 0 !important;
display:block;
    border: 1px solid #242424 !important;
margin-top:5px;
    background: #151515 !important;
color:var(--text-dim);
    color: var(--clbi-text) !important;
font-size:9px;
    box-shadow: none !important;
line-height:1;
    outline: none !important;
    overflow: hidden !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-infobox table,
.stylelab .instrument-lines {
body.action-view:not(.page-대문):not(.ns--1) .clbi-infobox tbody,
border-top:1px solid var(--edge-soft);
body.action-view:not(.page-대문):not(.ns--1) .clbi-infobox tr,
border-bottom:1px solid var(--edge-soft);
body.action-view:not(.page-대문):not(.ns--1) .clbi-infobox td,
body.action-view:not(.page-대문):not(.ns--1) .clbi-infobox th {
    box-shadow: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-infobox th {
.stylelab .instrument-line {
    background: #202020 !important;
display:grid;
    color: #ffffff !important;
grid-template-columns:82px minmax(0,1fr);
    border-color: #242424 !important;
align-items:center;
gap:6px;
height:22px;
min-height:22px;
padding:0 2px;
border-bottom:1px solid var(--edge-soft);
font-size:10px;
line-height:1.2;
}
}


body.action-view:not(.page-대문):not(.ns--1) .clbi-infobox td {
.stylelab .instrument-line:last-child {
    background: #101010 !important;
border-bottom:none;
    color: var(--clbi-text-soft) !important;
    border-color: #242424 !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) [class*="infobox-glass-"] {
.stylelab .instrument-line:hover {
    position: relative !important;
background:#151515;
    top: 0 !important;
    border-radius: 0 !important;
    border: 1px solid #242424 !important;
    background: #101010 !important;
    color: #ffffff !important;
    box-shadow: none !important;
    overflow: hidden !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) [class*="infobox-glass-"]::before,
.stylelab .instrument-label {
body.action-view:not(.page-대문):not(.ns--1) [class*="infobox-glass-"]::after {
color:var(--text-dim);
    content: none !important;
white-space:nowrap;
    display: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .party-inner-list {
.stylelab .instrument-value {
    gap: 2px !important;
color:var(--text-soft);
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}
}


body.action-view:not(.page-대문):not(.ns--1) .party-inner-item {
.stylelab .instrument-line:hover .instrument-value {
    width: 100% !important;
color:#ffffff;
    min-height: 18px !important;
    margin: 2px 0 !important;
    padding: 2px 7px !important;
    border-radius: 0 !important;
    border: 1px solid #2a2a2a !important;
    background: #151515 !important;
    box-shadow: none !important;
    color: #fff !important;
}
}


/* -----------------------------------------
/* -----------------------------------------
  13. Screen Header Documents
15. Footer split
  ----------------------------------------- */
Left: style rule check
Right: policy / license / credits / socials
----------------------------------------- */


body.action-view:not(.page-대문):not(.ns--1) .screen-header {
.stylelab .footer-grid {
    margin: 0 0 8px !important;
display:grid;
    padding: 10px 12px !important;
grid-template-columns:minmax(0,1fr) 300px;
    background: #111 !important;
gap:var(--space-inner);
margin-top:var(--space-inner);
align-items:stretch;
}
}


body.action-view:not(.page-대문):not(.ns--1) .screen-header h1,
.stylelab .footer-grid .panel {
body.action-view:not(.page-대문):not(.ns--1) .screen-header h2,
height:100%;
body.action-view:not(.page-대문):not(.ns--1) .screen-header h3 {
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    background: transparent !important;
}
}


/* screen-header 문서에서 왼쪽으로 이동된 관리 박스 */
.stylelab .manual-panel {
body.action-view:not(.page-대문):not(.ns--1) #clbi-tools-box .btn-group {
margin-top:0;
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important;
    width: 100% !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) #clbi-tools-box .btn {
.stylelab .sample-row {
    width: 100% !important;
display:grid;
    border: 1px solid #2a2a2a !important;
grid-template-columns:150px minmax(0,1fr);
    border-radius: 0 !important;
align-items:center;
    background: #151515 !important;
gap:var(--space-inner);
min-height:24px;
padding:4px 0;
border-bottom:1px solid var(--edge-soft);
}
}


/* -----------------------------------------
.stylelab .sample-row:first-child {
  14. Categories
border-top:1px solid var(--edge-soft);
  ----------------------------------------- */
}


body.action-view:not(.page-대문):not(.ns--1) .catlinks {
.stylelab .sample-row:hover {
    margin: 8px 0 0 !important;
background:#151515;
    padding: 8px 10px !important;
    color: #b8b8b8 !important;
    font-size: 11px !important;
    line-height: 1.5 !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .catlinks a {
.stylelab .sample-label {
    color: #d8d8d8 !important;
color:var(--text-dim);
    text-decoration: none !important;
font-size:10px;
line-height:1.25;
}
}


body.action-view:not(.page-대문):not(.ns--1) .catlinks a:hover {
.stylelab .sample-value {
    color: #fff !important;
color:var(--text-soft);
    text-decoration: underline !important;
font-size:10px;
line-height:1.35;
}
}


/* -----------------------------------------
.stylelab .sample-row:hover .sample-value {
  15. Forms / Messages
color:#ffffff;
  ----------------------------------------- */
}


body.action-view:not(.page-대문):not(.ns--1) input,
.stylelab .policy-list {
body.action-view:not(.page-대문):not(.ns--1) textarea,
border-top:1px solid var(--edge-soft);
body.action-view:not(.page-대문):not(.ns--1) select {
border-bottom:1px solid var(--edge-soft);
    border-radius: 0 !important;
    border: 1px solid #2a2a2a !important;
    background: #050505 !important;
    color: #e0e0e0 !important;
    box-shadow: none !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) button,
.stylelab .policy-row {
body.action-view:not(.page-대문):not(.ns--1) input[type="button"],
display:grid;
body.action-view:not(.page-대문):not(.ns--1) input[type="submit"] {
grid-template-columns:minmax(0,1fr) 18px;
    border-radius: 0 !important;
align-items:center;
    border: 1px solid #2a2a2a !important;
gap:var(--space-inner);
    background: #151515 !important;
height:24px;
    color: #e0e0e0 !important;
padding:0 2px;
    box-shadow: none !important;
border-bottom:1px solid var(--edge-soft);
font-size:10px;
line-height:1.2;
}
}


body.action-view:not(.page-대문):not(.ns--1) button:hover,
.stylelab .policy-row:last-child {
body.action-view:not(.page-대문):not(.ns--1) input[type="button"]:hover,
border-bottom:none;
body.action-view:not(.page-대문):not(.ns--1) input[type="submit"]:hover {
    background: #222 !important;
    color: #fff !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .mw-message-box,
.stylelab .policy-row:hover {
body.action-view:not(.page-대문):not(.ns--1) .warningbox,
background:#151515;
body.action-view:not(.page-대문):not(.ns--1) .errorbox,
body.action-view:not(.page-대문):not(.ns--1) .successbox {
    border-radius: 0 !important;
    border: 1px solid #2a2a2a !important;
    background: #101010 !important;
    color: var(--clbi-text) !important;
    box-shadow: none !important;
}
}


/* -----------------------------------------
.stylelab .policy-row a {
  16. Footer
display:block;
  ----------------------------------------- */
min-width:0;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
color:var(--text-soft) !important;
}


body.action-view:not(.page-대문):not(.ns--1) footer {
.stylelab .policy-row:hover a {
    border-radius: 0 !important;
color:#ffffff !important;
    border-top: none !important;
text-decoration:none !important;
    border-left: 1px solid var(--clbi-mid) !important;
    border-right: 1px solid var(--clbi-black) !important;
    border-bottom: 1px solid var(--clbi-black) !important;
}
}


body.action-view:not(.page-대문):not(.ns--1) .liberty-footer {
.stylelab .policy-mark {
    background: #080808 !important;
color:var(--text-dim);
    border-top: 1px solid #222 !important;
font-size:14px;
    color: #8a8a8a !important;
line-height:1;
white-space:nowrap;
text-align:right;
}
}


/* -----------------------------------------
.stylelab .policy-row:hover .policy-mark {
  17. Responsive
color:#ffffff;
  ----------------------------------------- */
}


@media screen and (max-width: 1720px) {
.stylelab .social-strip {
    body.action-view:not(.page-대문):not(.ns--1) #clbi-left-sidebar {
display:grid;
        display: none !important;
grid-template-columns:repeat(4,1fr);
    }
gap:var(--space-tight);
margin-top:var(--space-inner);
}


    body.action-view:not(.page-대문):not(.ns--1) .content-wrapper {
.stylelab .social-icon {
        width: min(1480px, calc(100% - 16px)) !important;
display:block;
        max-width: 1480px !important;
height:26px;
    }
min-width:0;
}


    body.action-view:not(.page-대문):not(.ns--1) .container-fluid.liberty-content {
.stylelab .social-icon a {
        width: auto !important;
display:flex !important;
        max-width: none !important;
align-items:center !important;
        min-width: 0 !important;
justify-content:center !important;
    }
width:100% !important;
height:26px !important;
border:1px solid var(--edge-soft) !important;
background:#111111 !important;
color:var(--text-soft) !important;
font-size:10px !important;
font-weight:700 !important;
line-height:1 !important;
text-decoration:none !important;
text-shadow:1px 1px 0 #000 !important;
box-sizing:border-box !important;
}
}


@media screen and (max-width: 1180px) {
.stylelab .social-icon a:hover {
    body.action-view:not(.page-대문):not(.ns--1) #clbi-left-sidebar,
background:#1c1c1c !important;
    body.action-view:not(.page-대문):not(.ns--1) #clbi-right-sidebar {
color:#ffffff !important;
        display: none !important;
border-color:#3a3a3a !important;
    }
text-decoration:none !important;
}


    body.action-view:not(.page-대문):not(.ns--1) .content-wrapper {
/* -----------------------------------------
        display: block !important;
16. Responsive
        width: calc(100% - 16px) !important;
----------------------------------------- */
        max-width: none !important;
    }


    body.action-view:not(.page-대문):not(.ns--1) .container-fluid.liberty-content {
@media screen and (max-width:1380px) {
        width: 100% !important;
.stylelab .module-grid {
        max-width: 100% !important;
grid-template-columns:minmax(0,1fr) minmax(0,1fr);
        min-width: 0 !important;
}
        margin: 0 !important;
    }


    body.action-view:not(.page-대문):not(.ns--1) #clbi-top-nav-main {
.stylelab .footer-grid {
        height: auto !important;
grid-template-columns:minmax(0,1fr);
        flex-wrap: wrap !important;
}
    }
}


    body.action-view:not(.page-대문):not(.ns--1) #clbi-top-nav-tabs {
@media screen and (max-width:1180px) {
        width: 100% !important;
.stylelab .console-grid {
        height: auto !important;
grid-template-columns:minmax(0,1fr);
        flex-wrap: wrap !important;
}
    }


    body.action-view:not(.page-대문):not(.ns--1) .clbi-top-nav-item {
.stylelab .module-grid {
        flex: 1 1 25% !important;
grid-template-columns:minmax(0,1fr);
        width: auto !important;
}
    }


    body.action-view:not(.page-대문):not(.ns--1) #clbi-top-nav-search {
.stylelab .notice-line {
        width: 100% !important;
grid-template-columns:62px minmax(0,1fr);
        flex: 1 1 100% !important;
min-height:32px;
        height: 34px !important;
}
        border-left: none !important;
    }


    body.action-view:not(.page-대문):not(.ns--1) #clbi-top-search-input,
.stylelab .notice-date,
    body.action-view:not(.page-대문):not(.ns--1) #clbi-top-search-input:focus {
.stylelab .notice-action {
        width: 100% !important;
display:none;
        max-width: none !important;
}
    }
 
    body.action-view:not(.page-대문):not(.ns--1) #clbi-top-nav-right {
        display: none !important;
    }
 
    body.action-view:not(.page-대문):not(.ns--1) .liberty-content-header {
        display: block !important;
    }
 
    body.action-view:not(.page-대문):not(.ns--1) .liberty-content-header .content-tools {
        margin-top: 4px !important;
    }
 
    body.action-view:not(.page-대문):not(.ns--1) .mw-page-title-main,
    body.action-view:not(.page-대문):not(.ns--1) .mw-page-title-namespace,
    body.action-view:not(.page-대문):not(.ns--1) .mw-page-title-separator {
        font-size: 18px !important;
    }
}
}

2026년 5월 19일 (화) 08:31 기준 최신판

/* =========================================
COASTLINE: BLACK ICE
MediaWiki:Test.css
Sandbox main-page integration test
Existing full portal body + SVG category nav from CategoryNav.js
========================================= */

/*
Scope:
- This file is globally imported while the test page is still active.
- Every visual rule is scoped to .stylelab, except the bridge for nested .main-portal.
- No body, top-nav, sidebar, page shell, or global layout selectors.

Current role:
- Test.css still owns the full test page layout: notice rail, logo, console, image feed, guestbook, tracker, status, footer.
- MainPage.css + CategoryNav.js own the SVG category navigation.
- This file only provides a bridge so the new JS/SVG category nav can sit inside the old test body without double padding or background.

Cleanup plan:
- After the full main page is migrated, these .stylelab rules should be renamed or moved into MainPage.css as .main-portal components.
- Then Test.css can be removed from Common.css import.
*/

/* -----------------------------------------
0. Style tokens
----------------------------------------- */

.stylelab {
--surface-page:#070707;
--surface-frame:#101010;
--surface-frame-soft:#141414;
--surface-title:#1d1d1d;
--surface-title-hover:#252525;
--surface-well:#080808;
--surface-screen:#060606;
--surface-row:#121212;
--surface-row-alt:#151515;
--surface-inset:#070707;

--edge-top:#555555;
--edge-side:#2b2b2b;
--edge-bottom:#050505;
--edge-soft:#202020;
--edge-mid:#333333;
--edge-weak:#181818;

--text-main:#e2e2e2;
--text-soft:#c8c8c8;
--text-dim:#8a8a8a;
--text-faint:#626262;

--signal-blue:#6f8fa8;
--signal-teal:#5a9b92;
--signal-green:#78966c;
--signal-amber:#c4a04a;
--signal-red:#a85c50;
--signal-gray:#9a9a9a;

--wip-yellow:#f2c300;
--wip-black:#050505;

--space-block:8px;
--space-inner:6px;
--space-tight:4px;
--pad-panel:8px;

--title-h:24px;
--screen-title-h:22px;
--nav-h:30px;
--ticker-h:22px;
--row-h:23px;
--gauge-h:48px;

width:100%;
margin:0 auto;
padding:var(--space-block);
color:var(--text-main);
background:var(--surface-page);
font-size:11px;
line-height:1.5;
box-sizing:border-box;
}

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

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

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

/* -----------------------------------------
1. Frame system
North-light rule:
top bright / sides neutral / bottom dark
----------------------------------------- */

.stylelab .frame,
.stylelab .notice-rail,
.stylelab .lab-logo,
.stylelab .console,
.stylelab .panel,
.stylelab .instrument-panel,
.stylelab .ticker {
border:1px solid;
border-color:
var(--edge-top)
var(--edge-side)
var(--edge-bottom)
var(--edge-side);
background:var(--surface-frame);
border-radius:0;
box-shadow:none;
outline:none;
overflow:hidden;
}

.stylelab .titlebar {
position:relative;
height:var(--title-h);
min-height:var(--title-h);
padding:0 var(--pad-panel);
display:flex;
align-items:center;
justify-content:space-between;
gap:var(--space-block);
background:var(--surface-title);
border-bottom:1px solid var(--edge-bottom);
color:#f0f0f0;
font-size:10px;
font-weight:700;
line-height:1;
white-space:nowrap;
overflow:hidden;
text-shadow:1px 1px 0 #000;
}

.stylelab .titlebar > span {
display:block;
min-width:0;
overflow:hidden;
text-overflow:ellipsis;
}

.stylelab .titlebar > span:first-child {
flex:1 1 auto;
}

.stylelab .titlebar > span:last-child {
flex:0 0 auto;
color:#a8a8a8;
font-weight:700;
text-align:right;
}

/* -----------------------------------------
2. Notice rail
Important notices above logo.
Maintenance alert uses construction stripe on the whole row.
Normal notice remains neutral.
----------------------------------------- */

.stylelab .notice-rail {
width:100%;
margin:0 0 var(--space-block);
background:#101010;
border:1px solid;
border-color:
#606060
var(--edge-side)
var(--edge-bottom)
var(--edge-side);
box-shadow:none;
}

.stylelab .notice-line {
position:relative;
display:grid;
grid-template-columns:72px 96px minmax(0,1fr) 48px;
align-items:center;
gap:7px;
min-height:30px;
padding:0 8px;
border-bottom:1px solid #050505;
background:#141414;
font-size:12px;
line-height:1.25;
color:#dcdcdc;
overflow:hidden;
}

.stylelab .notice-line:last-child {
border-bottom:none;
}

.stylelab .notice-line > * {
position:relative;
z-index:2;
}

.stylelab .notice-line:hover {
background:#1c1c1c;
color:#ffffff;
}

.stylelab .notice-line.is-alert {
background:
repeating-linear-gradient(
45deg,
var(--wip-yellow) 0 9px,
var(--wip-yellow) 9px 10px,
var(--wip-black) 10px 19px,
var(--wip-black) 19px 20px
);
}

.stylelab .notice-line.is-alert::before {
content:"";
position:absolute;
inset:0;
z-index:1;
pointer-events:none;
background:rgba(0,0,0,0.42);
}

.stylelab .notice-line.is-alert:hover::before {
background:rgba(0,0,0,0.34);
}

.stylelab .notice-line.is-notice {
background:#141414;
}

.stylelab .notice-line.is-notice:hover {
background:#1c1c1c;
}

.stylelab .notice-badge {
display:inline-flex;
align-items:center;
justify-content:center;
height:20px;
padding:0 7px;
border:1px solid #444444;
background:#0b0b0b;
color:#d8d8d8;
font-size:10px;
font-weight:700;
line-height:1;
text-shadow:1px 1px 0 #000;
}

.stylelab .notice-line.is-alert .notice-badge,
.stylelab .notice-line.is-notice .notice-badge {
border-color:#505050;
background:#101010;
color:#eeeeee;
}

.stylelab .notice-date {
color:#9d9d9d;
white-space:nowrap;
font-size:10px;
font-family:Consolas, Monaco, monospace !important;
}

.stylelab .notice-text {
min-width:0;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
color:#e0e0e0;
font-size:12px;
font-weight:700;
}

.stylelab .notice-line.is-alert .notice-badge,
.stylelab .notice-line.is-alert .notice-date,
.stylelab .notice-line.is-alert .notice-text,
.stylelab .notice-line.is-alert .notice-action {
text-shadow:
-1px 0 0 #000,
1px 0 0 #000,
0 -1px 0 #000,
0 1px 0 #000,
-1px -1px 0 #000,
1px -1px 0 #000,
-1px 1px 0 #000,
1px 1px 0 #000;
}

.stylelab .notice-line:hover .notice-text {
color:#ffffff;
}

.stylelab .notice-action {
justify-self:end;
display:inline-flex;
align-items:center;
justify-content:center;
height:20px;
min-width:38px;
padding:0 5px;
border:1px solid #3a3a3a;
background:#0b0b0b;
color:#c8c8c8;
font-size:10px;
font-weight:700;
white-space:nowrap;
line-height:1;
}

.stylelab .notice-line:hover .notice-action {
border-color:#606060;
background:#181818;
color:#ffffff;
}

/* -----------------------------------------
3. Top logo
Site signboard. Placed before category navigation and content.
----------------------------------------- */

.stylelab .lab-logo {
width:100%;
height:auto;
margin:0 0 var(--space-block);
padding:10px 0 8px;
text-align:center;
line-height:0;
background:#0b0b0b;
}

.stylelab .lab-logo a,
.stylelab .lab-logo .mw-file-description {
display:inline-block;
line-height:0;
}

.stylelab .lab-logo img,
.stylelab .lab-logo .mw-file-element {
width:760px;
max-width:90%;
height:auto;
filter:
grayscale(1)
contrast(1.04)
brightness(1.02);
}

/* -----------------------------------------
4. Category navigation bridge
----------------------------------------- */

/*
The actual category navigation is now generated by CategoryNav.js
and styled by MainPage.css as SVG.

Why this bridge exists:
- The old full test body is still wrapped in .stylelab.
- MainPage.css expects a .main-portal wrapper.
- If .main-portal keeps its own padding/background inside .stylelab, the category nav gets a double frame and the ratio feels different from the original body.

So, inside .stylelab, .main-portal is treated as a transparent mount wrapper only.
The SVG nav itself remains owned by MainPage.css.
*/

.stylelab .main-portal {
width:100%;
margin:0;
padding:0;
background:transparent;
font-size:11px;
line-height:1.5;
}

.stylelab .main-portal [data-component="category-nav"] {
width:100%;
margin:0 0 var(--space-block);
padding:0;
}

/* -----------------------------------------
5. Main console
Type: SCREEN DEVICE
frame > titlebar > body > screen panels
----------------------------------------- */

.stylelab .console {
width:100%;
margin:0 0 var(--space-block);
padding:0;
}

.stylelab .console-body {
padding:var(--space-inner);
background:var(--surface-frame);
}

.stylelab .console-grid {
display:grid;
grid-template-columns:minmax(0,1fr) 260px;
gap:var(--space-inner);
align-items:stretch;
}

.stylelab .main-screen,
.stylelab .side-screen {
position:relative;
min-width:0;
height:100%;
overflow:hidden;
border:1px solid var(--edge-soft);
background:var(--surface-screen);
box-shadow:
inset 0 0 0 1px rgba(255,255,255,0.018),
inset 0 0 18px rgba(0,0,0,0.70);
}

.stylelab .main-screen::before,
.stylelab .side-screen::before {
content:"";
position:absolute;
inset:0;
z-index:6;
pointer-events:none;
background:
radial-gradient(
ellipse at 50% 42%,
rgba(255,255,255,0.030) 0%,
transparent 42%
),
linear-gradient(
to bottom,
rgba(255,255,255,0.030) 0%,
transparent 24%,
rgba(0,0,0,0.16) 100%
);
}

.stylelab .main-screen::after,
.stylelab .side-screen::after {
content:"";
position:absolute;
inset:-40px 0;
z-index:7;
pointer-events:none;
opacity:0.13;
background:
repeating-linear-gradient(
to bottom,
rgba(255,255,255,0.080) 0px,
rgba(255,255,255,0.080) 1px,
transparent 2px,
transparent 5px
);
mix-blend-mode:screen;
}

.stylelab .main-screen > *,
.stylelab .side-screen > * {
position:relative;
z-index:3;
}

.stylelab .main-screen {
min-height:392px;
padding:var(--pad-panel);
display:flex;
flex-direction:column;
justify-content:flex-start;
}

.stylelab .side-screen {
padding:var(--pad-panel);
display:flex;
flex-direction:column;
}

/* -----------------------------------------
6. Image feed crossfade + alternating drift
Current image fades down, next layer becomes visible.
Image drift alternates: left-down / right-down.
----------------------------------------- */

.stylelab .image-feed {
position:relative;
width:100%;
height:240px;
min-height:240px;
overflow:hidden;
border:1px solid var(--edge-soft);
background:#030303;
isolation:isolate;
}

.stylelab .feed-layer {
position:absolute;
inset:-12px;
z-index:1;
opacity:0;
background-size:cover;
background-position:center center;
background-repeat:no-repeat;
filter:
brightness(0.78)
contrast(1.12)
saturate(0.78)
grayscale(0.16);
transform:translate(0,0) scale(1.06);
transform-origin:center center;
will-change:opacity, transform;
animation-duration:24s;
animation-timing-function:linear;
animation-iteration-count:infinite;
}

.stylelab .feed-bg-001 {
background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-001.png');
}

.stylelab .feed-bg-002 {
background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-002.png');
}

.stylelab .feed-bg-003 {
background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-003.png');
}

.stylelab .feed-bg-004 {
background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-004.png');
}

.stylelab .feed-layer-1 {
animation-name:image-feed-drift-left;
animation-delay:0s;
}

.stylelab .feed-layer-2 {
animation-name:image-feed-drift-right;
animation-delay:6s;
}

.stylelab .feed-layer-3 {
animation-name:image-feed-drift-left;
animation-delay:12s;
}

.stylelab .feed-layer-4 {
animation-name:image-feed-drift-right;
animation-delay:18s;
}

@keyframes image-feed-drift-left {
0% {
opacity:0;
transform:translate(0,0) scale(1.06);
}
4.166% {
opacity:1;
transform:translate(0,0) scale(1.06);
}
25% {
opacity:1;
transform:translate(-22px,14px) scale(1.075);
}
29.166% {
opacity:0;
transform:translate(-26px,16px) scale(1.078);
}
100% {
opacity:0;
transform:translate(0,0) scale(1.06);
}
}

@keyframes image-feed-drift-right {
0% {
opacity:0;
transform:translate(0,0) scale(1.06);
}
4.166% {
opacity:1;
transform:translate(0,0) scale(1.06);
}
25% {
opacity:1;
transform:translate(22px,14px) scale(1.075);
}
29.166% {
opacity:0;
transform:translate(26px,16px) scale(1.078);
}
100% {
opacity:0;
transform:translate(0,0) scale(1.06);
}
}

.stylelab .image-feed::before {
content:"";
position:absolute;
inset:0;
z-index:5;
pointer-events:none;
background:
linear-gradient(
to bottom,
rgba(0,0,0,0.18) 0%,
transparent 22%,
transparent 74%,
rgba(0,0,0,0.30) 100%
),
linear-gradient(
to right,
rgba(0,0,0,0.22) 0%,
transparent 10%,
transparent 90%,
rgba(0,0,0,0.22) 100%
);
}

.stylelab .image-feed::after {
content:"";
position:absolute;
inset:-40px 0;
z-index:6;
pointer-events:none;
opacity:0.20;
background:
repeating-linear-gradient(
to bottom,
rgba(255,255,255,0.090) 0px,
rgba(255,255,255,0.090) 1px,
transparent 2px,
transparent 5px
);
mix-blend-mode:screen;
}

.stylelab .feed-caption {
position:absolute;
left:0;
right:0;
bottom:0;
z-index:8;
height:22px;
padding:0 7px;
display:flex;
align-items:center;
justify-content:space-between;
gap:8px;
border-top:1px solid rgba(255,255,255,0.09);
background:rgba(5,5,5,0.86);
color:#cfcfcf;
font-size:10px;
line-height:22px;
text-shadow:1px 1px 0 #000;
}

.stylelab .feed-caption span:first-child {
min-width:0;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}

.stylelab .feed-caption span:last-child {
flex:0 0 auto;
color:var(--text-dim);
}

/* -----------------------------------------
7. Statement plate below image feed
----------------------------------------- */

.stylelab .statement-plate {
margin:var(--space-inner) 0 0;
padding:13px 18px 12px;
border:1px solid var(--edge-soft);
background:#080808;
}

.stylelab .statement-plate h2 {
margin:0 0 10px !important;
padding:0 0 8px !important;
border-bottom:1px solid var(--edge-soft) !important;
color:#f4f4f4 !important;
font-size:20px !important;
line-height:1.25 !important;
text-align:center !important;
text-shadow:
1px 1px 0 #000,
0 0 4px rgba(255,255,255,0.10) !important;
}

.stylelab .statement-plate p {
max-width:820px;
margin:0 auto 9px;
color:#d8d8d8;
font-size:12px;
line-height:1.68;
text-align:center;
text-shadow:1px 1px 0 #000;
}

.stylelab .statement-plate p:last-child {
margin-bottom:0;
}

/* -----------------------------------------
8. Screen guestbook
Top-right body content module.
Dummy only. Final interactive function later.
----------------------------------------- */

.stylelab .screen-title {
height:var(--screen-title-h);
min-height:var(--screen-title-h);
margin:0 0 var(--space-inner);
padding:0 7px;
display:flex;
align-items:center;
justify-content:space-between;
gap:6px;
border:1px solid var(--edge-soft);
background:#151515;
color:#f0f0f0;
font-size:10px;
font-weight:700;
line-height:1;
text-shadow:1px 1px 0 #000;
}

.stylelab .screen-title span:last-child {
color:var(--text-dim);
font-size:9px;
}

.stylelab .guestbook-device {
flex:1 1 auto;
min-height:0;
display:flex;
flex-direction:column;
gap:var(--space-inner);
}

.stylelab .guestbook-messages {
flex:1 1 auto;
min-height:0;
border-top:1px solid var(--edge-soft);
border-bottom:1px solid var(--edge-soft);
overflow:hidden;
}

.stylelab .guestbook-message {
padding:6px 2px;
border-bottom:1px solid var(--edge-soft);
}

.stylelab .guestbook-message:last-child {
border-bottom:none;
}

.stylelab .guestbook-message:hover {
background:#111111;
}

.stylelab .guestbook-message-head {
display:flex;
align-items:center;
justify-content:space-between;
gap:6px;
margin-bottom:3px;
font-size:9px;
line-height:1.2;
}

.stylelab .guestbook-name {
color:#eeeeee;
font-weight:700;
white-space:nowrap;
}

.stylelab .guestbook-time {
color:var(--text-dim);
white-space:nowrap;
}

.stylelab .guestbook-text {
color:var(--text-soft);
font-size:10px;
line-height:1.45;
word-break:keep-all;
}

.stylelab .guestbook-form {
display:grid;
grid-template-columns:minmax(0,1fr) 48px;
gap:var(--space-tight);
}

.stylelab .guestbook-input {
height:24px;
padding:0 7px;
display:flex;
align-items:center;
border:1px solid var(--edge-soft);
background:#070707;
color:var(--text-faint);
font-size:10px;
line-height:1;
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
}

.stylelab .guestbook-input:hover {
background:#0c0c0c;
color:#8f8f8f;
}

.stylelab .guestbook-submit {
height:24px;
display:flex;
align-items:center;
justify-content:center;
border:1px solid var(--edge-soft);
background:#161616;
color:var(--text-soft);
font-size:9px;
font-weight:700;
line-height:1;
text-shadow:1px 1px 0 #000;
}

.stylelab .guestbook-submit:hover {
background:#222222;
color:#ffffff;
}

/* -----------------------------------------
9. Ticker
Type: RECORD STRIP
Not a screen device.
----------------------------------------- */

.stylelab .ticker {
height:var(--ticker-h);
margin:0 0 var(--space-inner);
padding:0 var(--pad-panel);
color:#bdbdbd;
background:#171717;
font-size:10px;
line-height:var(--ticker-h);
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
text-shadow:1px 1px 0 #000;
}

/* -----------------------------------------
10. Module grid
----------------------------------------- */

.stylelab .module-grid {
display:grid;
grid-template-columns:minmax(0,1fr) minmax(0,1fr) 280px;
gap:var(--space-inner);
align-items:stretch;
}

.stylelab .panel,
.stylelab .instrument-panel {
min-width:0;
height:100%;
display:flex;
flex-direction:column;
}

.stylelab .panel-body,
.stylelab .instrument-body {
flex:1 1 auto;
min-height:0;
padding:var(--pad-panel);
background:var(--surface-well);
}

/* -----------------------------------------
11. Record modules
No scanlines. No screen treatment.
----------------------------------------- */

.stylelab .record-list {
margin:0 !important;
padding:0 !important;
list-style:none !important;
}

.stylelab .record-list li {
display:grid;
grid-template-columns:minmax(0,1fr) auto;
align-items:center;
gap:var(--space-block);
height:var(--row-h);
min-height:var(--row-h);
margin:0;
padding:0 2px;
border-bottom:1px solid var(--edge-soft);
color:var(--text-soft);
line-height:1.25;
}

.stylelab .record-list li:first-child {
border-top:1px solid var(--edge-soft);
}

.stylelab .record-list li:hover {
background:#151515;
color:#ffffff;
}

.stylelab .record-list li span:first-child {
min-width:0;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}

.stylelab .meta {
color:var(--text-dim);
white-space:nowrap;
font-size:9px;
line-height:1;
}

.stylelab .record-list li:hover .meta {
color:#c0c0c0;
}

/* -----------------------------------------
12. Status tags
Small functional color only.
No structural color use.
----------------------------------------- */

.stylelab .status-tag {
display:inline-flex;
align-items:center;
justify-content:center;
min-width:34px;
height:16px;
padding:0 4px;
border:1px solid #303030;
background:#161616;
color:var(--text-soft);
font-size:9px;
text-align:center;
line-height:1;
}

.stylelab .status-tag.is-progress {
border-color:#6d5b2c;
background:#19170f;
}

.stylelab .status-tag.is-review {
border-color:#36515d;
background:#10171a;
}

.stylelab .status-tag.is-wait {
border-color:#484848;
background:#151515;
}

.stylelab .status-tag.is-done {
border-color:#3d5c38;
background:#111811;
}

.stylelab .status-tag.is-alert {
border-color:#6a3933;
background:#1b1110;
}

/* -----------------------------------------
13. Team work module
Use WIP construction motif only where the making team is foregrounded.
Only motif: left vertical construction rail.
----------------------------------------- */

.stylelab .team-panel .panel-body {
position:relative;
padding-left:15px;
}

.stylelab .team-panel .panel-body::before {
content:"";
position:absolute;
left:6px;
top:8px;
bottom:8px;
width:4px;
pointer-events:none;
background:
repeating-linear-gradient(
45deg,
var(--wip-yellow) 0 4px,
var(--wip-yellow) 4px 5px,
var(--wip-black) 5px 9px,
var(--wip-black) 9px 10px
);
opacity:0.95;
}

.stylelab .team-panel .titlebar > span:last-child {
color:#c6c6c6;
}

/* -----------------------------------------
14. Status instrument
Type: STATUS INSTRUMENT
No scanlines. Gauge cells may have recessed finish.
----------------------------------------- */

.stylelab .instrument-grid {
display:grid;
grid-template-columns:minmax(0,1fr) minmax(0,1fr);
gap:var(--space-inner);
margin:0 0 var(--space-inner);
}

.stylelab .gauge {
height:var(--gauge-h);
min-width:0;
padding:6px;
display:flex;
flex-direction:column;
align-items:center;
justify-content:center;
border:1px solid var(--edge-soft);
background:var(--surface-inset);
text-align:center;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.025),
inset 0 -1px 0 rgba(0,0,0,0.55);
}

.stylelab .gauge:hover {
background:#0d0d0d;
}

.stylelab .gauge b {
display:block;
color:#f0f0f0;
font-family:Consolas, Monaco, monospace !important;
font-size:18px;
line-height:1;
text-shadow:1px 1px 0 #000;
}

.stylelab .gauge span {
display:block;
margin-top:5px;
color:var(--text-dim);
font-size:9px;
line-height:1;
}

.stylelab .instrument-lines {
border-top:1px solid var(--edge-soft);
border-bottom:1px solid var(--edge-soft);
}

.stylelab .instrument-line {
display:grid;
grid-template-columns:82px minmax(0,1fr);
align-items:center;
gap:6px;
height:22px;
min-height:22px;
padding:0 2px;
border-bottom:1px solid var(--edge-soft);
font-size:10px;
line-height:1.2;
}

.stylelab .instrument-line:last-child {
border-bottom:none;
}

.stylelab .instrument-line:hover {
background:#151515;
}

.stylelab .instrument-label {
color:var(--text-dim);
white-space:nowrap;
}

.stylelab .instrument-value {
color:var(--text-soft);
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}

.stylelab .instrument-line:hover .instrument-value {
color:#ffffff;
}

/* -----------------------------------------
15. Footer split
Left: style rule check
Right: policy / license / credits / socials
----------------------------------------- */

.stylelab .footer-grid {
display:grid;
grid-template-columns:minmax(0,1fr) 300px;
gap:var(--space-inner);
margin-top:var(--space-inner);
align-items:stretch;
}

.stylelab .footer-grid .panel {
height:100%;
}

.stylelab .manual-panel {
margin-top:0;
}

.stylelab .sample-row {
display:grid;
grid-template-columns:150px minmax(0,1fr);
align-items:center;
gap:var(--space-inner);
min-height:24px;
padding:4px 0;
border-bottom:1px solid var(--edge-soft);
}

.stylelab .sample-row:first-child {
border-top:1px solid var(--edge-soft);
}

.stylelab .sample-row:hover {
background:#151515;
}

.stylelab .sample-label {
color:var(--text-dim);
font-size:10px;
line-height:1.25;
}

.stylelab .sample-value {
color:var(--text-soft);
font-size:10px;
line-height:1.35;
}

.stylelab .sample-row:hover .sample-value {
color:#ffffff;
}

.stylelab .policy-list {
border-top:1px solid var(--edge-soft);
border-bottom:1px solid var(--edge-soft);
}

.stylelab .policy-row {
display:grid;
grid-template-columns:minmax(0,1fr) 18px;
align-items:center;
gap:var(--space-inner);
height:24px;
padding:0 2px;
border-bottom:1px solid var(--edge-soft);
font-size:10px;
line-height:1.2;
}

.stylelab .policy-row:last-child {
border-bottom:none;
}

.stylelab .policy-row:hover {
background:#151515;
}

.stylelab .policy-row a {
display:block;
min-width:0;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
color:var(--text-soft) !important;
}

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

.stylelab .policy-mark {
color:var(--text-dim);
font-size:14px;
line-height:1;
white-space:nowrap;
text-align:right;
}

.stylelab .policy-row:hover .policy-mark {
color:#ffffff;
}

.stylelab .social-strip {
display:grid;
grid-template-columns:repeat(4,1fr);
gap:var(--space-tight);
margin-top:var(--space-inner);
}

.stylelab .social-icon {
display:block;
height:26px;
min-width:0;
}

.stylelab .social-icon a {
display:flex !important;
align-items:center !important;
justify-content:center !important;
width:100% !important;
height:26px !important;
border:1px solid var(--edge-soft) !important;
background:#111111 !important;
color:var(--text-soft) !important;
font-size:10px !important;
font-weight:700 !important;
line-height:1 !important;
text-decoration:none !important;
text-shadow:1px 1px 0 #000 !important;
box-sizing:border-box !important;
}

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

/* -----------------------------------------
16. Responsive
----------------------------------------- */

@media screen and (max-width:1380px) {
.stylelab .module-grid {
grid-template-columns:minmax(0,1fr) minmax(0,1fr);
}

.stylelab .footer-grid {
grid-template-columns:minmax(0,1fr);
}
}

@media screen and (max-width:1180px) {
.stylelab .console-grid {
grid-template-columns:minmax(0,1fr);
}

.stylelab .module-grid {
grid-template-columns:minmax(0,1fr);
}

.stylelab .notice-line {
grid-template-columns:62px minmax(0,1fr);
min-height:32px;
}

.stylelab .notice-date,
.stylelab .notice-action {
display:none;
}
}