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

편집 요약 없음
편집 요약 없음
3번째 줄: 3번째 줄:
MediaWiki:Test.css
MediaWiki:Test.css
Sandbox-only style test
Sandbox-only style test
Dimension pass: spacing / height / alignment
Dimension pass + image feed crossfade
========================================= */
========================================= */


156번째 줄: 156번째 줄:


/* -----------------------------------------
/* -----------------------------------------
2. Logo
2. Logo / nameplate
Placed below image feed inside the screen device.
----------------------------------------- */
----------------------------------------- */


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


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


.stylelab .lab-logo img,
.stylelab .lab-nameplate img,
.stylelab .lab-logo .mw-file-element {
.stylelab .lab-nameplate .mw-file-element {
width:720px;
width:620px;
max-width:88%;
max-width:90%;
height:auto;
height:auto;
filter:
filter:
284번째 줄: 287번째 줄:
position:absolute;
position:absolute;
inset:0;
inset:0;
z-index:1;
z-index:6;
pointer-events:none;
pointer-events:none;
background:
background:
305번째 줄: 308번째 줄:
position:absolute;
position:absolute;
inset:-40px 0;
inset:-40px 0;
z-index:2;
z-index:7;
pointer-events:none;
pointer-events:none;
opacity:0.13;
opacity:0.13;
326번째 줄: 329번째 줄:


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


.stylelab .main-screen h2 {
/* -----------------------------------------
margin:0 0 12px !important;
5. Image feed crossfade
Current image fades down, next layer becomes visible.
----------------------------------------- */
 
.stylelab .image-feed {
position:relative;
width:100%;
height:220px;
min-height:220px;
overflow:hidden;
border:1px solid var(--edge-soft);
background:#030303;
isolation:isolate;
}
 
.stylelab .feed-layer {
position:absolute;
inset:0;
z-index:1;
opacity:0;
background-image:var(--feed-img);
background-size:cover;
background-position:center center;
background-repeat:no-repeat;
filter:
brightness(0.78)
contrast(1.12)
saturate(0.78)
grayscale(0.16);
animation:image-feed-fade-4 24s linear infinite;
}
 
.stylelab .feed-layer-1 { animation-delay:0s; }
.stylelab .feed-layer-2 { animation-delay:6s; }
.stylelab .feed-layer-3 { animation-delay:12s; }
.stylelab .feed-layer-4 { animation-delay:18s; }
 
@keyframes image-feed-fade-4 {
0% { opacity:0; }
4.166% { opacity:1; }
25% { opacity:1; }
29.166% { opacity:0; }
100% { opacity:0; }
}
 
.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);
}
 
/* -----------------------------------------
6. 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;
padding:0 0 8px !important;
border-bottom:1px solid var(--edge-soft) !important;
border-bottom:1px solid var(--edge-soft) !important;
color:#f4f4f4 !important;
color:#f4f4f4 !important;
font-size:22px !important;
font-size:20px !important;
line-height:1.25 !important;
line-height:1.25 !important;
text-align:center !important;
text-align:center !important;
346번째 줄: 485번째 줄:
}
}


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


.stylelab .main-screen p:last-child {
.stylelab .statement-plate p:last-child {
margin-bottom:0;
margin-bottom:0;
}
.stylelab .side-screen {
padding:var(--pad-panel);
display:flex;
flex-direction:column;
}
}


/* -----------------------------------------
/* -----------------------------------------
5. Screen subcomponents
7. Screen subcomponents
Only used inside SCREEN DEVICE.
Only used inside SCREEN DEVICE.
----------------------------------------- */
----------------------------------------- */
412번째 줄: 545번째 줄:


/* -----------------------------------------
/* -----------------------------------------
6. Ticker
8. Ticker
Type: RECORD STRIP
Type: RECORD STRIP
Not a screen device.
Not a screen device.
432번째 줄: 565번째 줄:


/* -----------------------------------------
/* -----------------------------------------
7. Module grid
9. Module grid
----------------------------------------- */
----------------------------------------- */


459번째 줄: 592번째 줄:


/* -----------------------------------------
/* -----------------------------------------
8. Record modules
10. Record modules
No scanlines. No screen treatment.
No scanlines. No screen treatment.
----------------------------------------- */
----------------------------------------- */
502번째 줄: 635번째 줄:


/* -----------------------------------------
/* -----------------------------------------
9. Status tags
11. Status tags
Small functional color only.
Small functional color only.
No structural color use.
No structural color use.
553번째 줄: 686번째 줄:


/* -----------------------------------------
/* -----------------------------------------
10. Team work module
12. Team work module
Use WIP construction motif only where the making team is foregrounded.
Use WIP construction motif only where the making team is foregrounded.
Only motif: left vertical construction rail.
Only motif: left vertical construction rail.
587번째 줄: 720번째 줄:


/* -----------------------------------------
/* -----------------------------------------
11. Status instrument
13. Status instrument
Type: STATUS INSTRUMENT
Type: STATUS INSTRUMENT
No scanlines. Gauge cells may have recessed finish.
No scanlines. Gauge cells may have recessed finish.
667번째 줄: 800번째 줄:


/* -----------------------------------------
/* -----------------------------------------
12. Guestbook
14. Guestbook
Type: RECORD MODULE
Type: RECORD MODULE
Separate from ARCHIVE STATUS.
Separate from ARCHIVE STATUS.
699번째 줄: 832번째 줄:


/* -----------------------------------------
/* -----------------------------------------
13. Manual samples
15. Manual samples
Type: RECORD MODULE
Type: RECORD MODULE
----------------------------------------- */
----------------------------------------- */
734번째 줄: 867번째 줄:


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



2026년 5월 18일 (월) 08:49 판

/* =========================================
COASTLINE: BLACK ICE
MediaWiki:Test.css
Sandbox-only style test
Dimension pass + image feed crossfade
========================================= */

/*
Scope:
- This file is globally imported.
- Every visual rule is scoped to .stylelab.
- No body, top-nav, sidebar, page shell, or global layout selectors.
*/

/* -----------------------------------------
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;
--pad-screen-x:18px;
--pad-screen-y:16px;

--title-h:24px;
--data-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:underline !important;
}

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

.stylelab .frame,
.stylelab .lab-logo,
.stylelab .directory,
.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. Logo / nameplate
Placed below image feed inside the screen device.
----------------------------------------- */

.stylelab .lab-nameplate {
width:100%;
height:auto;
margin:var(--space-inner) 0 0;
padding:8px 8px 7px;
border:1px solid var(--edge-soft);
background:#0b0b0b;
text-align:center;
line-height:0;
}

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

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

/* -----------------------------------------
3. Directory strip
Test component only. Not a global navigation replacement.
----------------------------------------- */

.stylelab .directory {
width:100%;
height:var(--nav-h);
margin:0 0 var(--space-block) !important;
border-collapse:collapse !important;
table-layout:fixed !important;
}

.stylelab .directory tbody,
.stylelab .directory tr {
width:100%;
height:var(--nav-h);
}

.stylelab .directory td {
height:var(--nav-h);
margin:0 !important;
padding:0 !important;
border:none !important;
border-right:1px solid var(--edge-bottom) !important;
background:var(--surface-frame-soft) !important;
vertical-align:middle !important;
text-align:center !important;
}

.stylelab .directory td:last-child {
border-right:none !important;
}

.stylelab .directory a {
display:flex !important;
align-items:center !important;
justify-content:center !important;
width:100% !important;
height:var(--nav-h) !important;
min-height:var(--nav-h) !important;
padding:0 6px !important;
color:var(--text-main) !important;
font-size:10px !important;
font-weight:700 !important;
line-height:1.2 !important;
text-align:center !important;
text-shadow:1px 1px 0 #000 !important;
}

.stylelab .directory td:hover,
.stylelab .directory td:hover a {
background:var(--surface-title-hover) !important;
color:#ffffff !important;
text-decoration:none !important;
}

/* -----------------------------------------
4. 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;
}

/* -----------------------------------------
5. Image feed crossfade
Current image fades down, next layer becomes visible.
----------------------------------------- */

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

.stylelab .feed-layer {
position:absolute;
inset:0;
z-index:1;
opacity:0;
background-image:var(--feed-img);
background-size:cover;
background-position:center center;
background-repeat:no-repeat;
filter:
brightness(0.78)
contrast(1.12)
saturate(0.78)
grayscale(0.16);
animation:image-feed-fade-4 24s linear infinite;
}

.stylelab .feed-layer-1 { animation-delay:0s; }
.stylelab .feed-layer-2 { animation-delay:6s; }
.stylelab .feed-layer-3 { animation-delay:12s; }
.stylelab .feed-layer-4 { animation-delay:18s; }

@keyframes image-feed-fade-4 {
0% { opacity:0; }
4.166% { opacity:1; }
25% { opacity:1; }
29.166% { opacity:0; }
100% { opacity:0; }
}

.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);
}

/* -----------------------------------------
6. 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;
}

/* -----------------------------------------
7. Screen subcomponents
Only used inside SCREEN DEVICE.
----------------------------------------- */

.stylelab .data-title {
height:var(--data-title-h);
min-height:var(--data-title-h);
margin:0 0 var(--space-inner);
padding:0 7px;
display:flex;
align-items:center;
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 .data-table {
width:100%;
margin:0;
border-collapse:collapse;
table-layout:fixed;
font-size:10px;
}

.stylelab .data-table td {
height:24px;
padding:0 6px;
border:1px solid var(--edge-soft);
background:#111;
color:var(--text-soft);
vertical-align:middle;
line-height:1.25;
}

.stylelab .data-table td:first-child {
width:72px;
color:var(--text-dim);
background:#0b0b0b;
}

/* -----------------------------------------
8. 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;
}

/* -----------------------------------------
9. Module grid
----------------------------------------- */

.stylelab .module-grid {
display:grid;
grid-template-columns:minmax(0,1fr) minmax(0,1fr) 250px 250px;
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);
}

/* -----------------------------------------
10. 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 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;
}

/* -----------------------------------------
11. 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;
color:#d3bb72;
background:#19170f;
}

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

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

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

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

/* -----------------------------------------
12. 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;
}

/* -----------------------------------------
13. 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 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-label {
color:var(--text-dim);
white-space:nowrap;
}

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

/* -----------------------------------------
14. Guestbook
Type: RECORD MODULE
Separate from ARCHIVE STATUS.
----------------------------------------- */

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

.stylelab .guest-line {
min-height:22px;
padding:4px 2px;
display:flex;
align-items:center;
border-bottom:1px solid var(--edge-soft);
font-size:10px;
line-height:1.35;
color:var(--text-soft);
}

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

.stylelab .guest-name {
color:#eeeeee;
font-weight:700;
margin-right:4px;
}

/* -----------------------------------------
15. Manual samples
Type: RECORD MODULE
----------------------------------------- */

.stylelab .manual-panel {
margin-top:var(--space-inner);
}

.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-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;
}

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

@media screen and (max-width:1380px) {
.stylelab .module-grid {
grid-template-columns:minmax(0,1fr) 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 .directory {
height:auto;
table-layout:auto !important;
}

.stylelab .directory,
.stylelab .directory tbody,
.stylelab .directory tr,
.stylelab .directory td {
display:block !important;
width:100% !important;
height:auto !important;
}

.stylelab .directory td {
border-right:none !important;
border-bottom:1px solid var(--edge-bottom) !important;
}

.stylelab .directory td:last-child {
border-bottom:none !important;
}

.stylelab .directory a {
height:var(--nav-h) !important;
}
}