편집 요약 없음 태그: 수동 되돌리기 |
(Install package: clbiwiki-mainpage-trim-v3-renewal-20260711 (1) / css/MainPage.css) |
||
| 1번째 줄: | 1번째 줄: | ||
/* ========================================= | /* ========================================= | ||
COASTLINE: BLACK ICE - MainPage | COASTLINE: BLACK ICE - MainPage | ||
대문 전용 스타일 | 대문 전용 v3 스타일 | ||
========================================= */ | ========================================= */ | ||
/* | /* | ||
책임 범위 | |||
----------------------------------------- | ----------------------------------------- | ||
- 대문 본문 .main-portal 내부만 담당한다. | |||
- 사이트 공통 셸은 Layout.css가 담당한다. | |||
- 카테고리 네비의 SVG 구조는 CategoryNav.js가 생성한다. | |||
- 대문에서 제거된 보조 모듈의 레거시 스타일은 이 파일에 두지 않는다. | |||
- . | |||
- 카테고리 | |||
- | |||
*/ | */ | ||
.main-portal { | .main-portal { | ||
-- | --panel:#1d1d1d; | ||
--well:#080808; | |||
--item:#101010; | |||
--edge:#050505; | |||
- | --highlight:#555555; | ||
--shadow:#101010; | |||
-- | --text:#e2e2e2; | ||
--text-strong:#ffffff; | |||
--meta:#8a8a8a; | |||
--muted:#626262; | |||
--gap:2px; | |||
--edge | --block-gap:8px; | ||
--frame:8px; | |||
width:100%; | |||
-- | margin:0; | ||
-- | padding:0; | ||
color:var(--text); | |||
background:transparent; | |||
--text | font-size:12px; | ||
--text- | line-height:18px; | ||
-- | box-sizing:border-box; | ||
-- | |||
-- | |||
-- | |||
width:100%; | |||
margin:0; | |||
padding:0; | |||
color:var(--text | |||
font-size: | |||
line-height: | |||
} | } | ||
| 87번째 줄: | 40번째 줄: | ||
.main-portal *::before, | .main-portal *::before, | ||
.main-portal *::after { | .main-portal *::after { | ||
box-sizing:border-box; | box-sizing:border-box; | ||
} | } | ||
.main-portal a { | .main-portal a, | ||
color:var(--text | .main-portal a:visited { | ||
text-decoration:none !important; | color:var(--text) !important; | ||
text-decoration:none !important; | |||
} | } | ||
.main-portal a:hover { | .main-portal a:hover, | ||
color: | .main-portal a:focus { | ||
text-decoration:none !important; | color:var(--text-strong) !important; | ||
text-decoration:none !important; | |||
} | } | ||
/* ----------------------------------------- | /* ----------------------------------------- | ||
공통 돌출 프레임 | |||
----------------------------------------- */ | ----------------------------------------- */ | ||
| 107번째 줄: | 62번째 줄: | ||
.main-portal .lab-logo, | .main-portal .lab-logo, | ||
.main-portal .console, | .main-portal .console, | ||
.main-portal . | .main-portal .ticker, | ||
. | .portal-category-nav { | ||
background:var(--panel, #1d1d1d); | |||
border:1px solid var(--edge, #050505); | |||
border | border-radius:0; | ||
var(--edge | box-shadow: | ||
inset 0 1px 0 var(--highlight, #555555), | |||
var(-- | inset -1px 0 0 var(--highlight, #555555), | ||
var(-- | inset 1px 0 0 var(--shadow, #101010), | ||
inset 0 -1px 0 var(--shadow, #101010); | |||
} | } | ||
.main-portal . | .main-portal .notice-rail, | ||
.main-portal .lab-logo, | |||
.main-portal [data-component="category-nav"], | |||
.main-portal .console { | |||
margin:0 0 var(--block-gap); | |||
.main-portal . | |||
.main-portal | |||
.main-portal . | |||
} | } | ||
/* ----------------------------------------- | /* ----------------------------------------- | ||
알림 레일 | |||
----------------------------------------- */ | ----------------------------------------- */ | ||
.main-portal .notice-rail { | .main-portal .notice-rail { | ||
display:grid; | |||
grid-template-columns:minmax(0,1fr); | |||
gap:var(--gap); | |||
padding:var(--frame); | |||
overflow:hidden; | |||
var(-- | |||
var(-- | |||
} | } | ||
.main-portal .notice-line { | .main-portal .notice-line { | ||
position:relative; | position:relative; | ||
display:grid; | min-width:0; | ||
grid-template-columns: | height:24px; | ||
align-items:center; | display:grid; | ||
gap: | grid-template-columns:54px 86px minmax(0,1fr) 42px; | ||
align-items:center; | |||
padding:0 8px; | gap:8px; | ||
padding:0 8px; | |||
background: | overflow:hidden; | ||
background:var(--item); | |||
border:1px solid var(--edge); | |||
box-shadow:inset 0 1px 0 var(--panel); | |||
color:var(--text); | |||
line-height:22px; | |||
} | } | ||
.main-portal .notice-line.is-alert { | .main-portal .notice-line.is-alert { | ||
padding-left:12px; | |||
} | } | ||
.main-portal .notice-line.is-alert::before { | .main-portal .notice-line.is-alert::before { | ||
content:""; | content:""; | ||
position:absolute; | position:absolute; | ||
left:0; | |||
top:0; | |||
bottom:0; | |||
background: | width:4px; | ||
background: | |||
repeating-linear-gradient( | |||
45deg, | |||
#f2c300 0 4px, | |||
#f2c300 4px 5px, | |||
#050505 5px 9px, | |||
#050505 9px 10px | |||
); | |||
pointer-events:none; | |||
} | } | ||
.main-portal .notice-line | .main-portal .notice-line:hover { | ||
color:var(--text-strong); | |||
} | } | ||
.main-portal .notice-badge { | .main-portal .notice-badge { | ||
color:var(--text-strong); | |||
font-size:12px; | |||
font-weight:700; | |||
white-space:nowrap; | |||
font-size: | |||
font-weight:700; | |||
} | } | ||
.main-portal .notice- | .main-portal .notice-date, | ||
.main-portal .notice- | .main-portal .notice-action { | ||
color:var(--meta); | |||
font-family:Consolas, Monaco, monospace !important; | |||
font-size:11px; | |||
white-space:nowrap; | |||
font-size: | |||
} | } | ||
.main-portal .notice-text { | .main-portal .notice-text { | ||
min-width:0; | min-width:0; | ||
overflow:hidden; | overflow:hidden; | ||
text-overflow:ellipsis; | color:var(--text); | ||
white-space:nowrap | text-overflow:ellipsis; | ||
white-space:nowrap; | |||
} | } | ||
.main-portal .notice-line | .main-portal .notice-line:hover .notice-text, | ||
.main-portal .notice-line:hover .notice-action { | |||
color:var(--text-strong); | |||
.main-portal .notice-line | |||
- | |||
} | } | ||
.main-portal .notice-action { | .main-portal .notice-action { | ||
justify-self:end; | justify-self:end; | ||
text-align:right; | |||
align | |||
} | } | ||
/* ----------------------------------------- | /* ----------------------------------------- | ||
로고 프레임 | |||
----------------------------------------- */ | ----------------------------------------- */ | ||
.main-portal .lab-logo { | .main-portal .lab-logo { | ||
padding:var(--frame); | |||
overflow:hidden; | |||
} | } | ||
.main-portal . | .main-portal .portal-logo-well { | ||
min-height:86px; | |||
padding:10px 8px; | |||
line-height:0; | 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 . | .main-portal .portal-logo-well a, | ||
.main-portal . | .main-portal .portal-logo-well .mw-file-description { | ||
width:760px; | display:inline-block; | ||
max-width:90%; | line-height:0; | ||
height:auto; | } | ||
filter: | |||
grayscale(1) | .main-portal .portal-logo-well img, | ||
contrast(1.04) | .main-portal .portal-logo-well .mw-file-element { | ||
brightness(1.02); | display:block; | ||
width:760px; | |||
max-width:90%; | |||
height:auto; | |||
filter:grayscale(1) contrast(1.04) brightness(1.02); | |||
} | } | ||
/* ----------------------------------------- | /* ----------------------------------------- | ||
카테고리 네비 | |||
----------------------------------------- */ | ----------------------------------------- */ | ||
.main-portal [data-component="category-nav"] { | .main-portal [data-component="category-nav"] { | ||
display:block; | display:block; | ||
width:100% | width:100%; | ||
} | } | ||
.portal-category-nav { | .portal-category-nav { | ||
position:relative; | position:relative; | ||
width:100%; | width:100%; | ||
height: | height:24px; | ||
margin:0; | margin:0; | ||
padding:0; | padding:0; | ||
overflow:hidden | overflow:hidden; | ||
} | } | ||
.portal-category-svg { | .portal-category-svg { | ||
display:block; | display:block; | ||
width:100%; | width:100%; | ||
height:100%; | height:100%; | ||
} | } | ||
.portal-cat-shape { | .portal-cat-shape { | ||
fill:transparent; | fill:transparent; | ||
stroke:none; | stroke:none; | ||
pointer-events:all; | pointer-events:all; | ||
} | } | ||
.portal-cat-anchor:hover .portal-cat-shape { | .portal-cat-anchor:hover .portal-cat-shape { | ||
fill:rgba(255,255,255,0.035); | fill:rgba(255,255,255,0.035); | ||
} | } | ||
.portal-cat-anchor:active .portal-cat-shape { | .portal-cat-anchor:active .portal-cat-shape { | ||
fill:rgba(0,0,0,0. | fill:rgba(0,0,0,0.18); | ||
} | } | ||
.portal-cat-label { | .portal-cat-label { | ||
fill: | fill:#e2e2e2; | ||
font- | font-family:inherit; | ||
font- | font-size:12px; | ||
font- | font-weight:700; | ||
text-anchor:middle; | text-anchor:middle; | ||
dominant-baseline:middle; | dominant-baseline:middle; | ||
pointer-events:none; | pointer-events:none; | ||
paint-order:stroke; | paint-order:stroke; | ||
stroke:# | stroke:#050505; | ||
stroke-width:2px; | stroke-width:2px; | ||
stroke-linejoin:round; | stroke-linejoin:round; | ||
} | } | ||
.portal-cat-anchor:hover .portal-cat-label { | .portal-cat-anchor:hover .portal-cat-label { | ||
fill:#ffffff | fill:#ffffff; | ||
} | } | ||
.portal-cat-divider { | .portal-cat-divider { | ||
stroke:#050505; | stroke:#050505; | ||
stroke-width:1; | stroke-width:1; | ||
shape-rendering:crispEdges; | shape-rendering:crispEdges; | ||
vector-effect:non-scaling-stroke; | vector-effect:non-scaling-stroke; | ||
pointer-events:none; | pointer-events:none; | ||
} | } | ||
/* ----------------------------------------- | /* ----------------------------------------- | ||
메인 콘솔 | |||
----------------------------------------- */ | ----------------------------------------- */ | ||
.main-portal .console { | .main-portal .console { | ||
width:100%; | width:100%; | ||
padding:0 var(--frame) var(--frame); | |||
overflow:hidden; | |||
} | } | ||
.main-portal . | .main-portal .titlebar, | ||
.main-portal .screen-title { | |||
background:var(-- | height:34px; | ||
min-height:34px; | |||
display:flex; | |||
align-items:center; | |||
justify-content:space-between; | |||
gap:8px; | |||
padding:0; | |||
overflow:hidden; | |||
background:transparent; | |||
border:0; | |||
box-shadow:none; | |||
color:var(--text-strong); | |||
font-size:12px; | |||
font-weight:700; | |||
line-height:34px; | |||
white-space:nowrap; | |||
} | } | ||
.main-portal . | .main-portal .titlebar > span, | ||
.main-portal .screen-title > span { | |||
min-width:0; | |||
overflow:hidden; | |||
text-overflow:ellipsis; | |||
} | } | ||
.main-portal . | .main-portal .titlebar > span:last-child, | ||
.main-portal . | .main-portal .screen-title > span:last-child { | ||
flex:0 0 auto; | |||
color:var(--meta); | |||
font-size:11px; | |||
} | } | ||
.main-portal . | .main-portal .console-body { | ||
padding:3px; | |||
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); | |||
), | |||
); | |||
} | } | ||
.main-portal . | .main-portal .console-grid { | ||
display:grid; | |||
grid-template-columns:minmax(0,1fr) 260px; | |||
gap:var(--gap); | |||
align-items:stretch; | |||
); | |||
} | } | ||
.main-portal .main-screen | .main-portal .main-screen, | ||
.main-portal . | .main-portal .archive-screen { | ||
min-width:0; | |||
padding:var(--frame); | |||
overflow:hidden; | |||
background:var(--panel); | |||
border:1px solid var(--edge); | |||
box-shadow: | |||
inset 0 1px 0 var(--highlight), | |||
inset -1px 0 0 var(--highlight), | |||
inset 1px 0 0 var(--shadow), | |||
inset 0 -1px 0 var(--shadow); | |||
} | } | ||
.main-portal .main-screen { | .main-portal .main-screen { | ||
display:grid; | |||
grid-template-rows:auto auto; | |||
gap:var(--gap); | |||
} | } | ||
.main-portal . | .main-portal .archive-screen { | ||
display:flex; | |||
display:flex; | flex-direction:column; | ||
flex-direction:column; | padding-top:0; | ||
} | } | ||
/* ----------------------------------------- | /* ----------------------------------------- | ||
이미지 피드 | |||
----------------------------------------- */ | ----------------------------------------- */ | ||
.main-portal .image-feed { | .main-portal .image-feed { | ||
position:relative; | position:relative; | ||
width:100%; | width:100%; | ||
height: | height:260px; | ||
min-height: | min-height:260px; | ||
overflow:hidden; | overflow:hidden; | ||
border:1px | isolation:isolate; | ||
background:#030303; | |||
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); | |||
} | } | ||
.main-portal .feed-layer { | .main-portal .feed-layer { | ||
position:absolute; | position:absolute; | ||
inset:-12px; | inset:-12px; | ||
z-index:1; | z-index:1; | ||
opacity:0; | opacity:0; | ||
background-position:center; | |||
background-position: | background-repeat:no-repeat; | ||
background-repeat:no-repeat; | background-size:cover; | ||
filter: | filter:brightness(0.78) contrast(1.12) saturate(0.78) grayscale(0.16); | ||
brightness(0.78) | transform:translate(0,0) scale(1.06); | ||
contrast(1.12) | transform-origin:center; | ||
saturate(0.78) | will-change:opacity, transform; | ||
grayscale(0.16); | animation-duration:24s; | ||
transform:translate(0,0) scale(1.06); | animation-iteration-count:infinite; | ||
transform-origin: | animation-timing-function:linear; | ||
will-change:opacity, transform; | |||
animation-duration:24s; | |||
animation- | |||
animation- | |||
} | } | ||
.main-portal .feed-bg-001 { | .main-portal .feed-bg-001 { background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-001.png'); } | ||
background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed- | .main-portal .feed-bg-002 { background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-002.png'); } | ||
} | .main-portal .feed-bg-003 { background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-003.png'); } | ||
.main-portal .feed-bg-004 { background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-004.png'); } | |||
.main-portal .feed-layer-1 { animation-name:image-feed-drift-left; animation-delay:0s; } | |||
.main-portal .feed-layer-2 { animation-name:image-feed-drift-right; animation-delay:6s; } | |||
.main-portal .feed-layer-3 { animation-name:image-feed-drift-left; animation-delay:12s; } | |||
.main-portal .feed-layer-4 { animation-name:image-feed-drift-right; animation-delay:18s; } | |||
.main-portal .feed-layer-1 { | |||
animation-name:image-feed-drift-left; | |||
animation-delay:0s; | |||
} | |||
.main-portal .feed-layer-2 { | |||
animation-name:image-feed-drift-right; | |||
animation-delay:6s; | |||
} | |||
.main-portal .feed-layer-3 { | |||
animation-name:image-feed-drift-left; | |||
animation-delay:12s; | |||
} | |||
.main-portal .feed-layer-4 { | |||
animation-name:image-feed-drift-right; | |||
animation-delay:18s; | |||
} | |||
@keyframes image-feed-drift-left { | @keyframes image-feed-drift-left { | ||
0% { opacity:0; transform:translate(0,0) scale(1.06); } | 0% { opacity:0; transform:translate(0,0) scale(1.06); } | ||
4.166% { opacity:1; 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); } | 25% { opacity:1; transform:translate(-22px,14px) scale(1.075); } | ||
29.166% { opacity:0; transform:translate(-26px,16px) scale(1.078); } | 29.166% { opacity:0; transform:translate(-26px,16px) scale(1.078); } | ||
100% { opacity:0; transform:translate(0,0) scale(1.06); } | 100% { opacity:0; transform:translate(0,0) scale(1.06); } | ||
} | } | ||
@keyframes image-feed-drift-right { | @keyframes image-feed-drift-right { | ||
0% { opacity:0; transform:translate(0,0) scale(1.06); } | 0% { opacity:0; transform:translate(0,0) scale(1.06); } | ||
4.166% { opacity:1; 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); } | 25% { opacity:1; transform:translate(22px,14px) scale(1.075); } | ||
29.166% { opacity:0; transform:translate(26px,16px) scale(1.078); } | 29.166% { opacity:0; transform:translate(26px,16px) scale(1.078); } | ||
100% { opacity:0; transform:translate(0,0) scale(1.06); } | 100% { opacity:0; transform:translate(0,0) scale(1.06); } | ||
} | } | ||
.main-portal .image-feed::before { | .main-portal .image-feed::before { | ||
content:""; | content:""; | ||
position:absolute; | position:absolute; | ||
inset:0; | inset:0; | ||
z-index:5; | z-index:5; | ||
pointer-events:none; | pointer-events:none; | ||
background: | background: | ||
linear-gradient( | linear-gradient(to bottom, rgba(0,0,0,0.18), transparent 22%, transparent 74%, rgba(0,0,0,0.30)), | ||
to bottom, | linear-gradient(to right, rgba(0,0,0,0.22), transparent 10%, transparent 90%, rgba(0,0,0,0.22)); | ||
rgba(0,0,0,0.18) | |||
transparent 22%, | |||
transparent 74%, | |||
rgba(0,0,0,0.30) | |||
), | |||
linear-gradient( | |||
to right, | |||
rgba(0,0,0,0.22) | |||
transparent 10%, | |||
transparent 90%, | |||
rgba(0,0,0,0.22) | |||
); | |||
} | } | ||
.main-portal .image-feed::after { | .main-portal .image-feed::after { | ||
content:""; | content:""; | ||
position:absolute; | position:absolute; | ||
inset:-40px 0; | inset:-40px 0; | ||
z-index:6; | z-index:6; | ||
pointer-events:none; | pointer-events:none; | ||
opacity:0. | opacity:0.18; | ||
background: | background: | ||
repeating-linear-gradient( | repeating-linear-gradient( | ||
to bottom, | to bottom, | ||
rgba(255,255,255,0. | rgba(255,255,255,0.09) 0, | ||
rgba(255,255,255,0. | rgba(255,255,255,0.09) 1px, | ||
transparent 2px, | transparent 2px, | ||
transparent 5px | transparent 5px | ||
); | ); | ||
mix-blend-mode:screen; | mix-blend-mode:screen; | ||
} | } | ||
.main-portal .feed-caption { | .main-portal .feed-caption { | ||
position:absolute; | position:absolute; | ||
left:0; | left:0; | ||
right:0; | right:0; | ||
bottom:0; | bottom:0; | ||
z-index:8; | z-index:8; | ||
height: | height:24px; | ||
padding:0 | padding:0 8px; | ||
display:flex; | display:flex; | ||
align-items:center; | align-items:center; | ||
justify-content:space-between; | justify-content:space-between; | ||
gap:8px; | gap:8px; | ||
overflow:hidden; | |||
background:rgba(16,16,16,0.94); | |||
color: | border-top:1px solid var(--edge); | ||
font-size: | color:var(--text); | ||
font-size:11px; | |||
font-weight:700; | |||
line-height:23px; | |||
} | } | ||
.main-portal .feed-caption span:first-child { | .main-portal .feed-caption span:first-child { | ||
min-width:0; | min-width:0; | ||
overflow:hidden; | overflow:hidden; | ||
text-overflow:ellipsis; | text-overflow:ellipsis; | ||
white-space:nowrap; | white-space:nowrap; | ||
} | } | ||
.main-portal .feed-caption span:last-child { | .main-portal .feed-caption span:last-child { | ||
flex:0 0 auto; | flex:0 0 auto; | ||
color:var(-- | color:var(--meta); | ||
} | } | ||
/* ----------------------------------------- | /* ----------------------------------------- | ||
선언문 | |||
----------------------------------------- */ | ----------------------------------------- */ | ||
.main-portal .statement-plate { | .main-portal .statement-plate { | ||
padding:12px 16px; | |||
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); | |||
} | } | ||
.main-portal .statement-plate h2 { | .main-portal .statement-plate h2 { | ||
margin:0 0 | margin:0 0 8px !important; | ||
padding:0 0 | padding:0 0 7px !important; | ||
border-bottom:1px solid var(-- | border:0 !important; | ||
color: | border-bottom:1px solid var(--item) !important; | ||
font-size: | color:var(--text-strong) !important; | ||
font-size:14px !important; | |||
font-weight:700 !important; | |||
text- | line-height:20px !important; | ||
text-align:center !important; | |||
} | } | ||
.main-portal .statement-plate p { | .main-portal .statement-plate p { | ||
max-width: | max-width:840px; | ||
margin:0 auto | margin:0 auto 8px; | ||
color: | color:var(--text); | ||
font-size:12px; | font-size:12px; | ||
line-height: | font-weight:400; | ||
text-align:center; | line-height:18px; | ||
text-align:center; | |||
word-break:keep-all; | |||
} | } | ||
.main-portal .statement-plate p:last-child { | .main-portal .statement-plate p:last-child { | ||
margin-bottom:0; | margin-bottom:0; | ||
} | } | ||
/* ----------------------------------------- | /* ----------------------------------------- | ||
ARCHIVE STATUS | |||
----------------------------------------- */ | ----------------------------------------- */ | ||
.main-portal . | .main-portal .archive-screen .screen-title { | ||
flex:0 0 34px; | |||
flex | |||
} | } | ||
.main-portal .instrument-body { | .main-portal .instrument-body { | ||
flex:1 1 auto; | flex:1 1 auto; | ||
min-height:0; | min-height:0; | ||
padding:var(-- | padding:3px; | ||
display:grid; | |||
grid-template-columns:minmax(0,1fr); | |||
align-content:start; | |||
gap:var(--gap); | |||
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); | |||
} | } | ||
.main-portal .instrument-grid { | |||
display:grid; | |||
grid-template-columns:minmax(0,1fr) minmax(0,1fr); | |||
gap:var(--gap); | |||
.main-portal . | |||
} | } | ||
.main-portal . | .main-portal .gauge, | ||
.main-portal .instrument-line { | |||
background:var(--item); | |||
border:1px solid var(--edge); | |||
box-shadow:inset 0 1px 0 var(--panel); | |||
.main-portal . | |||
background | |||
border:1px solid | |||
var(- | |||
} | } | ||
.main-portal .gauge { | .main-portal .gauge { | ||
height: | height:72px; | ||
padding:8px; | |||
padding: | display:flex; | ||
display:flex; | flex-direction:column; | ||
flex-direction:column; | align-items:center; | ||
align-items:center; | justify-content:center; | ||
justify-content:center; | overflow:hidden; | ||
text-align:center; | |||
text-align:center | |||
} | } | ||
.main-portal .gauge b { | .main-portal .gauge b { | ||
display:block; | display:block; | ||
color: | color:var(--text-strong); | ||
font-family:Consolas, Monaco, monospace !important; | font-family:Consolas, Monaco, monospace !important; | ||
font-size: | font-size:20px; | ||
font-weight:700; | |||
line-height:24px; | |||
} | } | ||
.main-portal .gauge span { | .main-portal .gauge span { | ||
display:block; | display:block; | ||
margin-top: | margin-top:4px; | ||
color:var(-- | color:var(--meta); | ||
font-size: | font-size:10px; | ||
line-height: | line-height:12px; | ||
white-space:nowrap; | |||
} | } | ||
.main-portal .instrument-lines { | .main-portal .instrument-lines { | ||
display:grid; | |||
grid-template-columns:minmax(0,1fr); | |||
gap:var(--gap); | |||
} | } | ||
.main-portal .instrument-line { | .main-portal .instrument-line { | ||
display:grid; | height:24px; | ||
grid-template-columns: | min-height:24px; | ||
align-items:center; | padding:0 8px; | ||
gap: | display:grid; | ||
grid-template-columns:76px minmax(0,1fr); | |||
align-items:center; | |||
gap:8px; | |||
overflow:hidden; | |||
font-size: | font-size:11px; | ||
line-height: | line-height:22px; | ||
} | } | ||
.main-portal .instrument- | .main-portal .instrument-label { | ||
color:var(--meta); | |||
white-space:nowrap; | |||
} | } | ||
.main-portal .instrument- | .main-portal .instrument-value { | ||
min-width:0; | |||
overflow:hidden; | |||
color:var(--text); | |||
text-align:right; | |||
text-overflow:ellipsis; | |||
white-space:nowrap; | |||
} | } | ||
.main-portal . | .main-portal .gauge:hover, | ||
.main-portal .instrument-line:hover { | |||
color:var(--text-strong); | |||
.main-portal .instrument- | |||
color:var(--text- | |||
} | } | ||
.main-portal .instrument-line:hover .instrument-value { | .main-portal .instrument-line:hover .instrument-value { | ||
color: | color:var(--text-strong); | ||
} | } | ||
/* ----------------------------------------- | /* ----------------------------------------- | ||
하단 로그 | |||
----------------------------------------- */ | ----------------------------------------- */ | ||
.main-portal . | .main-portal .ticker { | ||
height:24px; | |||
margin:0; | |||
padding:0 8px; | |||
overflow:hidden; | |||
color:var(--meta); | |||
font-family:Consolas, Monaco, monospace !important; | |||
font-size:11px; | |||
line-height:22px; | |||
text-overflow:ellipsis; | |||
white-space:nowrap; | |||
} | } | ||
/* ----------------------------------------- | |||
반응형 | |||
----------------------------------------- */ | |||
.main-portal . | @media screen and (max-width:1100px) { | ||
.main-portal .console-grid { | |||
} | grid-template-columns:minmax(0,1fr); | ||
} | |||
.main-portal . | .main-portal .archive-screen { | ||
min-height:190px; | |||
min- | } | ||
} | } | ||
.main-portal . | @media screen and (max-width:820px) { | ||
.main-portal .notice-line { | |||
grid-template-columns:48px minmax(0,1fr); | |||
} | } | ||
.main-portal . | .main-portal .notice-date, | ||
.main-portal .notice-action { | |||
display:none; | |||
} | |||
} | |||
.main-portal . | .main-portal .image-feed { | ||
height:220px; | |||
} | min-height:220px; | ||
} | |||
. | .portal-cat-label { | ||
font-size:11px; | |||
} | |||
} | } | ||
.main-portal . | @media screen and (max-width:620px) { | ||
.main-portal .notice-rail, | |||
.main-portal .lab-logo, | |||
.main-portal .console { | |||
} | --frame:6px; | ||
} | |||
.main-portal . | .main-portal .notice-line { | ||
gap:6px; | |||
padding-right:6px; | |||
} | |||
} | |||
.main-portal . | .main-portal .notice-text { | ||
font-size:11px; | |||
} | |||
} | |||
.main-portal .statement-plate { | |||
padding:10px 12px; | |||
} | |||
.main-portal .instrument-grid { | |||
.main-portal . | grid-template-columns:minmax(0,1fr); | ||
grid-template-columns: | } | ||
} | } | ||
/* 아날로그 UI는 상태 변화를 즉시 보여준다. */ | |||
/* | |||
.main-portal a, | .main-portal a, | ||
.main-portal button, | .main-portal button, | ||
.main-portal .notice-line, | .main-portal .notice-line, | ||
.main-portal .portal-cat-shape, | |||
.main-portal .portal-cat-label, | |||
.main-portal | .main-portal .gauge, | ||
.main-portal | .main-portal .instrument-line { | ||
.main-portal . | transition:none !important; | ||
.main-portal . | |||
transition:none !important; | |||
} | } | ||
2026년 7월 11일 (토) 03:55 판
/* =========================================
COASTLINE: BLACK ICE - MainPage
대문 전용 v3 스타일
========================================= */
/*
책임 범위
-----------------------------------------
- 대문 본문 .main-portal 내부만 담당한다.
- 사이트 공통 셸은 Layout.css가 담당한다.
- 카테고리 네비의 SVG 구조는 CategoryNav.js가 생성한다.
- 대문에서 제거된 보조 모듈의 레거시 스타일은 이 파일에 두지 않는다.
*/
.main-portal {
--panel:#1d1d1d;
--well:#080808;
--item:#101010;
--edge:#050505;
--highlight:#555555;
--shadow:#101010;
--text:#e2e2e2;
--text-strong:#ffffff;
--meta:#8a8a8a;
--muted:#626262;
--gap:2px;
--block-gap:8px;
--frame:8px;
width:100%;
margin:0;
padding:0;
color:var(--text);
background:transparent;
font-size:12px;
line-height:18px;
box-sizing:border-box;
}
.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 .notice-rail,
.main-portal .lab-logo,
.main-portal .console,
.main-portal .ticker,
.portal-category-nav {
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 .notice-rail,
.main-portal .lab-logo,
.main-portal [data-component="category-nav"],
.main-portal .console {
margin:0 0 var(--block-gap);
}
/* -----------------------------------------
알림 레일
----------------------------------------- */
.main-portal .notice-rail {
display:grid;
grid-template-columns:minmax(0,1fr);
gap:var(--gap);
padding:var(--frame);
overflow:hidden;
}
.main-portal .notice-line {
position:relative;
min-width:0;
height:24px;
display:grid;
grid-template-columns:54px 86px minmax(0,1fr) 42px;
align-items:center;
gap:8px;
padding:0 8px;
overflow:hidden;
background:var(--item);
border:1px solid var(--edge);
box-shadow:inset 0 1px 0 var(--panel);
color:var(--text);
line-height:22px;
}
.main-portal .notice-line.is-alert {
padding-left:12px;
}
.main-portal .notice-line.is-alert::before {
content:"";
position:absolute;
left:0;
top:0;
bottom:0;
width:4px;
background:
repeating-linear-gradient(
45deg,
#f2c300 0 4px,
#f2c300 4px 5px,
#050505 5px 9px,
#050505 9px 10px
);
pointer-events:none;
}
.main-portal .notice-line:hover {
color:var(--text-strong);
}
.main-portal .notice-badge {
color:var(--text-strong);
font-size:12px;
font-weight:700;
white-space:nowrap;
}
.main-portal .notice-date,
.main-portal .notice-action {
color:var(--meta);
font-family:Consolas, Monaco, monospace !important;
font-size:11px;
white-space:nowrap;
}
.main-portal .notice-text {
min-width:0;
overflow:hidden;
color:var(--text);
text-overflow:ellipsis;
white-space:nowrap;
}
.main-portal .notice-line:hover .notice-text,
.main-portal .notice-line:hover .notice-action {
color:var(--text-strong);
}
.main-portal .notice-action {
justify-self:end;
text-align:right;
}
/* -----------------------------------------
로고 프레임
----------------------------------------- */
.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:760px;
max-width:90%;
height:auto;
filter:grayscale(1) contrast(1.04) brightness(1.02);
}
/* -----------------------------------------
카테고리 네비
----------------------------------------- */
.main-portal [data-component="category-nav"] {
display:block;
width:100%;
}
.portal-category-nav {
position:relative;
width:100%;
height:24px;
margin:0;
padding:0;
overflow:hidden;
}
.portal-category-svg {
display:block;
width:100%;
height:100%;
}
.portal-cat-shape {
fill:transparent;
stroke:none;
pointer-events:all;
}
.portal-cat-anchor:hover .portal-cat-shape {
fill:rgba(255,255,255,0.035);
}
.portal-cat-anchor:active .portal-cat-shape {
fill:rgba(0,0,0,0.18);
}
.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 {
fill:#ffffff;
}
.portal-cat-divider {
stroke:#050505;
stroke-width:1;
shape-rendering:crispEdges;
vector-effect:non-scaling-stroke;
pointer-events:none;
}
/* -----------------------------------------
메인 콘솔
----------------------------------------- */
.main-portal .console {
width:100%;
padding:0 var(--frame) var(--frame);
overflow:hidden;
}
.main-portal .titlebar,
.main-portal .screen-title {
height:34px;
min-height:34px;
display:flex;
align-items:center;
justify-content:space-between;
gap:8px;
padding:0;
overflow:hidden;
background:transparent;
border:0;
box-shadow:none;
color:var(--text-strong);
font-size:12px;
font-weight:700;
line-height:34px;
white-space:nowrap;
}
.main-portal .titlebar > span,
.main-portal .screen-title > span {
min-width:0;
overflow:hidden;
text-overflow:ellipsis;
}
.main-portal .titlebar > span:last-child,
.main-portal .screen-title > span:last-child {
flex:0 0 auto;
color:var(--meta);
font-size:11px;
}
.main-portal .console-body {
padding:3px;
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);
}
.main-portal .console-grid {
display:grid;
grid-template-columns:minmax(0,1fr) 260px;
gap:var(--gap);
align-items:stretch;
}
.main-portal .main-screen,
.main-portal .archive-screen {
min-width:0;
padding:var(--frame);
overflow:hidden;
background:var(--panel);
border:1px solid var(--edge);
box-shadow:
inset 0 1px 0 var(--highlight),
inset -1px 0 0 var(--highlight),
inset 1px 0 0 var(--shadow),
inset 0 -1px 0 var(--shadow);
}
.main-portal .main-screen {
display:grid;
grid-template-rows:auto auto;
gap:var(--gap);
}
.main-portal .archive-screen {
display:flex;
flex-direction:column;
padding-top:0;
}
/* -----------------------------------------
이미지 피드
----------------------------------------- */
.main-portal .image-feed {
position:relative;
width:100%;
height:260px;
min-height:260px;
overflow:hidden;
isolation:isolate;
background:#030303;
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);
}
.main-portal .feed-layer {
position:absolute;
inset:-12px;
z-index:1;
opacity:0;
background-position:center;
background-repeat:no-repeat;
background-size:cover;
filter:brightness(0.78) contrast(1.12) saturate(0.78) grayscale(0.16);
transform:translate(0,0) scale(1.06);
transform-origin:center;
will-change:opacity, transform;
animation-duration:24s;
animation-iteration-count:infinite;
animation-timing-function:linear;
}
.main-portal .feed-bg-001 { background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-001.png'); }
.main-portal .feed-bg-002 { background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-002.png'); }
.main-portal .feed-bg-003 { background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-003.png'); }
.main-portal .feed-bg-004 { background-image:url('/index.php?title=특수:Redirect/file/Bg-Feed-004.png'); }
.main-portal .feed-layer-1 { animation-name:image-feed-drift-left; animation-delay:0s; }
.main-portal .feed-layer-2 { animation-name:image-feed-drift-right; animation-delay:6s; }
.main-portal .feed-layer-3 { animation-name:image-feed-drift-left; animation-delay:12s; }
.main-portal .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); }
}
.main-portal .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), transparent 22%, transparent 74%, rgba(0,0,0,0.30)),
linear-gradient(to right, rgba(0,0,0,0.22), transparent 10%, transparent 90%, rgba(0,0,0,0.22));
}
.main-portal .image-feed::after {
content:"";
position:absolute;
inset:-40px 0;
z-index:6;
pointer-events:none;
opacity:0.18;
background:
repeating-linear-gradient(
to bottom,
rgba(255,255,255,0.09) 0,
rgba(255,255,255,0.09) 1px,
transparent 2px,
transparent 5px
);
mix-blend-mode:screen;
}
.main-portal .feed-caption {
position:absolute;
left:0;
right:0;
bottom:0;
z-index:8;
height:24px;
padding:0 8px;
display:flex;
align-items:center;
justify-content:space-between;
gap:8px;
overflow:hidden;
background:rgba(16,16,16,0.94);
border-top:1px solid var(--edge);
color:var(--text);
font-size:11px;
font-weight:700;
line-height:23px;
}
.main-portal .feed-caption span:first-child {
min-width:0;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}
.main-portal .feed-caption span:last-child {
flex:0 0 auto;
color:var(--meta);
}
/* -----------------------------------------
선언문
----------------------------------------- */
.main-portal .statement-plate {
padding:12px 16px;
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);
}
.main-portal .statement-plate h2 {
margin:0 0 8px !important;
padding:0 0 7px !important;
border:0 !important;
border-bottom:1px solid var(--item) !important;
color:var(--text-strong) !important;
font-size:14px !important;
font-weight:700 !important;
line-height:20px !important;
text-align:center !important;
}
.main-portal .statement-plate p {
max-width:840px;
margin:0 auto 8px;
color:var(--text);
font-size:12px;
font-weight:400;
line-height:18px;
text-align:center;
word-break:keep-all;
}
.main-portal .statement-plate p:last-child {
margin-bottom:0;
}
/* -----------------------------------------
ARCHIVE STATUS
----------------------------------------- */
.main-portal .archive-screen .screen-title {
flex:0 0 34px;
}
.main-portal .instrument-body {
flex:1 1 auto;
min-height:0;
padding:3px;
display:grid;
grid-template-columns:minmax(0,1fr);
align-content:start;
gap:var(--gap);
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);
}
.main-portal .instrument-grid {
display:grid;
grid-template-columns:minmax(0,1fr) minmax(0,1fr);
gap:var(--gap);
}
.main-portal .gauge,
.main-portal .instrument-line {
background:var(--item);
border:1px solid var(--edge);
box-shadow:inset 0 1px 0 var(--panel);
}
.main-portal .gauge {
height:72px;
padding:8px;
display:flex;
flex-direction:column;
align-items:center;
justify-content:center;
overflow:hidden;
text-align:center;
}
.main-portal .gauge b {
display:block;
color:var(--text-strong);
font-family:Consolas, Monaco, monospace !important;
font-size:20px;
font-weight:700;
line-height:24px;
}
.main-portal .gauge span {
display:block;
margin-top:4px;
color:var(--meta);
font-size:10px;
line-height:12px;
white-space:nowrap;
}
.main-portal .instrument-lines {
display:grid;
grid-template-columns:minmax(0,1fr);
gap:var(--gap);
}
.main-portal .instrument-line {
height:24px;
min-height:24px;
padding:0 8px;
display:grid;
grid-template-columns:76px minmax(0,1fr);
align-items:center;
gap:8px;
overflow:hidden;
font-size:11px;
line-height:22px;
}
.main-portal .instrument-label {
color:var(--meta);
white-space:nowrap;
}
.main-portal .instrument-value {
min-width:0;
overflow:hidden;
color:var(--text);
text-align:right;
text-overflow:ellipsis;
white-space:nowrap;
}
.main-portal .gauge:hover,
.main-portal .instrument-line:hover {
color:var(--text-strong);
}
.main-portal .instrument-line:hover .instrument-value {
color:var(--text-strong);
}
/* -----------------------------------------
하단 로그
----------------------------------------- */
.main-portal .ticker {
height:24px;
margin:0;
padding:0 8px;
overflow:hidden;
color:var(--meta);
font-family:Consolas, Monaco, monospace !important;
font-size:11px;
line-height:22px;
text-overflow:ellipsis;
white-space:nowrap;
}
/* -----------------------------------------
반응형
----------------------------------------- */
@media screen and (max-width:1100px) {
.main-portal .console-grid {
grid-template-columns:minmax(0,1fr);
}
.main-portal .archive-screen {
min-height:190px;
}
}
@media screen and (max-width:820px) {
.main-portal .notice-line {
grid-template-columns:48px minmax(0,1fr);
}
.main-portal .notice-date,
.main-portal .notice-action {
display:none;
}
.main-portal .image-feed {
height:220px;
min-height:220px;
}
.portal-cat-label {
font-size:11px;
}
}
@media screen and (max-width:620px) {
.main-portal .notice-rail,
.main-portal .lab-logo,
.main-portal .console {
--frame:6px;
}
.main-portal .notice-line {
gap:6px;
padding-right:6px;
}
.main-portal .notice-text {
font-size:11px;
}
.main-portal .statement-plate {
padding:10px 12px;
}
.main-portal .instrument-grid {
grid-template-columns:minmax(0,1fr);
}
}
/* 아날로그 UI는 상태 변화를 즉시 보여준다. */
.main-portal a,
.main-portal button,
.main-portal .notice-line,
.main-portal .portal-cat-shape,
.main-portal .portal-cat-label,
.main-portal .gauge,
.main-portal .instrument-line {
transition:none !important;
}