@@ -34,25 +34,31 @@
--co-danger : #ff6a6a ;
--co-font : "Roboto Condensed" , "Bahnschrift" , "Arial Narrow" , Arial , sans-serif ;
--co-transition : 80 ms linear ;
--co-border-stroke : 5 px ;
--co-border-strip-height : 11 px ;
--co-border-cap : 10 px ;
--co-border-edge : 4 px ;
/*
* Fallout 4 submenu alignment (1280× 720, like ADD-ONS panel):
* Left — tight gap, no overlap (~454px)
* Top — MULTIPLAYER row (~286px)
* Bottom — main menu box bottom (~146px inset)
* UI scale: 1920× 1080 is the design baseline (scale 1). Higher resolutions scale up
* so text and chrome stay readable and aligned with the native Scaleform menu.
* layout.js also sets --co-ui-scale on resize for Ultralight.
*/
--co-panel-left : max ( 35.6 vw , 454 px ) ;
--co-panel-right : max ( 2 vw , 24 px ) ;
--co-panel-top : max ( 39.5 vh , 286 px ) ;
--co-panel-bottom : max ( 20.5 vh , 146 px ) ;
--co-font-xs : clamp ( 9 px , 0.75 vw , 11 px ) ;
--co-font-sm : clamp ( 10 px , 0.85 vw , 12 px ) ;
--co-font-md : clamp ( 13 px , 1.05 vw , 16 px ) ;
--co-font-lg : clamp ( 16 px , 1.3 vw , 20 px ) ;
--co-nav-width : clamp ( 152 px , 14 vw , 196 px ) ;
--co-ui-scale : max ( 1 , min ( calc ( 100 vw / 1920 ) , calc ( 100 vh / 1080 ) ) ) ;
--co-border-stroke : calc ( 5 px * var ( - - co - ui - scale ) ) ;
--co-border-strip-height : calc ( 11 px * var ( - - co - ui - scale ) ) ;
--co-border-cap : calc ( 10 px * var ( - - co - ui - scale ) ) ;
--co-border-edge : calc ( 4 px * var ( - - co - ui - scale ) ) ;
/*
* Fallout 4 submenu alignment (1280× 720 reference, expressed as viewport %):
* Left — tight gap, no overlap (~454px @ 1280)
* Top — MULTIPLAYER row (~286px @ 720)
* Bottom — main menu box bottom (~146px inset @ 720)
*/
--co-panel-left : 35.6 vw ;
--co-panel-right : 2 vw ;
--co-panel-top : 39.5 vh ;
--co-panel-bottom : 20.5 vh ;
--co-font-xs : calc ( 11 px * var ( - - co - ui - scale ) ) ;
--co-font-sm : calc ( 12 px * var ( - - co - ui - scale ) ) ;
--co-font-md : calc ( 16 px * var ( - - co - ui - scale ) ) ;
--co-font-lg : calc ( 20 px * var ( - - co - ui - scale ) ) ;
--co-nav-width : calc ( 196 px * var ( - - co - ui - scale ) ) ;
/*
* In-game cursor is rendered by PrismaUI_F4 from Data/PrismaUI_F4/misc/cursor.png
* (deployed from assets/F4MouseCursor.png). CSS cursor only applies in a browser.
@@ -109,6 +115,7 @@ body {
transition : opacity var ( - - co - transition ) ;
padding : var ( - - co - border - cap ) var ( - - co - border - edge ) ;
overflow : visible ;
font-size : calc ( 16 px * var ( - - co - ui - scale ) ) ;
}
. co-panel . co-loading {
@@ -156,8 +163,8 @@ body {
flex : 0 0 var ( - - co - nav - width ) ;
display : flex ;
flex-direction : column ;
padding : 6 px 0 ;
border-right : 1 px solid var ( - - co - green - dim ) ;
padding : 0.375 em 0 ;
border-right : 0.0625 em solid var ( - - co - green - dim ) ;
overflow-y : auto ;
}
@@ -172,7 +179,7 @@ body {
letter-spacing : 0.12 em ;
text-transform : uppercase ;
text-align : left ;
padding : 10 px 16 px ;
padding : 0.625 em 1 em ;
cursor : var ( - - co - cursor ) ;
transition : background var ( - - co - transition ) , color var ( - - co - transition ) ;
}
@@ -230,8 +237,8 @@ body {
display : flex ;
align-items : baseline ;
justify-content : space-between ;
gap : 16 px ;
padding : 10 px 16 px 8 px ;
gap : 1 em ;
padding : 0.625 em 1 em 0.5 em ;
}
. co-subpanel-title {
@@ -244,7 +251,7 @@ body {
. co-subpanel-meta {
display : flex ;
gap : 10 px ;
gap : 0.625 em ;
font-size : var ( - - co - font - xs ) ;
font-weight : 700 ;
letter-spacing : 0.12 em ;
@@ -260,8 +267,8 @@ body {
/* Preview — Load-menu thumbnail (favorites / recent only). */
. co-preview-area {
flex-shrink : 0 ;
margin : 0 12 px 8 px ;
border : 1 px solid var ( - - co - green - dim ) ;
margin : 0 0.75 em 0.5 em ;
border : 0.0625 em solid var ( - - co - green - dim ) ;
background : var ( - - co - bg - dark ) ;
overflow : hidden ;
}
@@ -273,7 +280,7 @@ body {
. co-preview {
width : 100 % ;
height : clamp ( 72 px , 14 vh , 120 px ) ;
height : calc ( 120 px * var ( - - co - ui - scale ) ) ;
display : flex ;
align-items : center ;
justify-content : center ;
@@ -291,8 +298,8 @@ body {
}
. co-preview-caption {
padding : 6 px 10 px ;
border-top : 1 px solid var ( - - co - green - dim ) ;
padding : 0.375 em 0.625 em ;
border-top : 0.0625 em solid var ( - - co - green - dim ) ;
font-size : var ( - - co - font - xs ) ;
letter-spacing : 0.08 em ;
text-transform : uppercase ;
@@ -312,16 +319,16 @@ body {
/* Filters */
. co-filters {
flex-shrink : 0 ;
padding : 0 12 px 10 px ;
padding : 0 0.75 em 0.625 em ;
display : flex ;
flex-direction : column ;
gap : 6 px ;
gap : 0.375 em ;
}
. co-filters . focused . co-filter-row . focused . co-filter-input ,
. co-filters . focused . co-filter-row . focused . co-filter-select ,
. co-filters . focused . co-filter-row . focused . co-checkbox {
outline : 1 px solid var ( - - co - green ) ;
outline : 0.0625 em solid var ( - - co - green ) ;
outline-offset : 0 ;
}
@@ -329,12 +336,12 @@ body {
display : flex ;
flex-wrap : wrap ;
align-items : flex-end ;
gap : 6 px 10 px ;
gap : 0.375 em 0.625 em ;
}
. co-filters-row-selects . co-filter-row {
flex : 1 1 90 px ;
min-width : 80 px ;
flex : 1 1 5.625 em ;
min-width : 5 em ;
}
. co-filters-row-options {
@@ -344,7 +351,7 @@ body {
. co-filter-row {
display : flex ;
flex-direction : column ;
gap : 3 px ;
gap : 0.1875 em ;
min-width : 0 ;
}
@@ -355,7 +362,7 @@ body {
. co-filter-row . co-filter-checks {
flex-direction : row ;
align-items : center ;
gap : 5 px ;
gap : 0.3125 em ;
flex : 0 0 auto ;
}
@@ -371,12 +378,12 @@ body {
. co-filter-select {
width : 100 % ;
background : var ( - - co - bg - dark ) ;
border : 1 px solid var ( - - co - green - dim ) ;
border : 0.0625 em solid var ( - - co - green - dim ) ;
color : var ( - - co - green ) ;
font : inherit ;
font-size : var ( - - co - font - sm ) ;
font-weight : 600 ;
padding : 5 px 8 px ;
padding : 0.3125 em 0.5 em ;
border-radius : 0 ;
cursor : var ( - - co - cursor ) ;
transition : border-color var ( - - co - transition ) ;
@@ -402,7 +409,7 @@ body {
. co-checkbox-row {
display : flex ;
align-items : center ;
gap : 5 px ;
gap : 0.3125 em ;
font-size : var ( - - co - font - xs ) ;
font-weight : 700 ;
letter-spacing : 0.06 em ;
@@ -417,9 +424,9 @@ body {
}
. co-checkbox {
width : 13 px ;
height : 13 px ;
border : 1 px solid var ( - - co - border ) ;
width : calc ( 13 px * var ( - - co - ui - scale ) ) ;
height : calc ( 13 px * var ( - - co - ui - scale ) ) ;
border : 0.0625 em solid var ( - - co - border ) ;
background : transparent ;
display : inline-flex ;
align-items : center ;
@@ -429,7 +436,7 @@ body {
. co-checkbox . checked :: after {
content : "X" ;
font-size : 9 px ;
font-size : calc ( 9 px * var ( - - co - ui - scale ) ) ;
font-weight : 700 ;
color : var ( - - co - green ) ;
line-height : 1 ;
@@ -437,7 +444,7 @@ body {
. co-btn {
appearance : none ;
border : 1 px solid var ( - - co - green - dim ) ;
border : 0.0625 em solid var ( - - co - green - dim ) ;
background : transparent ;
color : var ( - - co - green ) ;
font : inherit ;
@@ -445,7 +452,7 @@ body {
font-weight : 700 ;
letter-spacing : 0.1 em ;
text-transform : uppercase ;
padding : 5 px 10 px ;
padding : 0.3125 em 0.625 em ;
cursor : var ( - - co - cursor ) ;
margin-left : auto ;
flex-shrink : 0 ;
@@ -460,7 +467,7 @@ body {
. co-btn . focused {
background : rgba ( var ( - - co - r ) , var ( - - co - g ) , var ( - - co - b ) , 0.18 ) ;
outline : 1 px solid var ( - - co - green ) ;
outline : 0.0625 em solid var ( - - co - green ) ;
}
/* Server list — save-file style rows */
@@ -481,11 +488,11 @@ body {
overflow-y : auto ;
scrollbar-width : thin ;
scrollbar-color : var ( - - co - green - dim ) transparent ;
padding : 0 4 px ;
padding : 0 0.25 em ;
}
. co-server-list :: -webkit-scrollbar {
width : 4 px ;
width : calc ( 4 px * var ( - - co - ui - scale ) ) ;
}
. co-server-list :: -webkit-scrollbar-thumb {
@@ -496,8 +503,8 @@ body {
display : flex ;
align-items : center ;
justify-content : space-between ;
gap : 16 px ;
padding : 8 px 12 px ;
gap : 1 em ;
padding : 0.5 em 0.75 em ;
font-size : var ( - - co - font - md ) ;
line-height : 1.2 ;
cursor : var ( - - co - cursor ) ;
@@ -517,7 +524,7 @@ body {
. co-server-row-left {
display : flex ;
align-items : center ;
gap : 10 px ;
gap : 0.625 em ;
min-width : 0 ;
flex : 1 ;
}
@@ -535,7 +542,7 @@ body {
. co-server-row-right {
display : flex ;
align-items : center ;
gap : 20 px ;
gap : 1.25 em ;
flex-shrink : 0 ;
font-size : var ( - - co - font - md ) ;
font-weight : 700 ;
@@ -550,7 +557,7 @@ body {
. co-fav {
color : var ( - - co - text - dim ) ;
font-size : 15 px ;
font-size : calc ( 15 px * var ( - - co - ui - scale ) ) ;
flex-shrink : 0 ;
}
@@ -575,7 +582,7 @@ body {
. co-scroll-indicator {
flex-shrink : 0 ;
text-align : center ;
padding : 2 px 0 4 px ;
padding : 0.125 em 0 0.25 em ;
font-size : var ( - - co - font - xs ) ;
letter-spacing : 0.15 em ;
color : var ( - - co - text - dim ) ;
@@ -591,13 +598,13 @@ body {
display : flex ;
align-items : center ;
justify-content : flex-end ;
padding : 6 px 14 px 8 px ;
border-top : 1 px solid var ( - - co - green - dim ) ;
padding : 0.375 em 0.875 em 0.5 em ;
border-top : 0.0625 em solid var ( - - co - green - dim ) ;
}
. co-prompts {
display : flex ;
gap : 16 px ;
gap : 1 em ;
flex-wrap : wrap ;
justify-content : flex-end ;
}
@@ -605,7 +612,7 @@ body {
. co-prompt {
display : flex ;
align-items : center ;
gap : 6 px ;
gap : 0.375 em ;
font-size : var ( - - co - font - xs ) ;
font-weight : 700 ;
letter-spacing : 0.08 em ;
@@ -614,16 +621,16 @@ body {
}
. co-prompt-key {
min-width : 18 px ;
height : 18 px ;
border : 1 px solid var ( - - co - border ) ;
min-width : calc ( 18 px * var ( - - co - ui - scale ) ) ;
height : calc ( 18 px * var ( - - co - ui - scale ) ) ;
border : 0.0625 em solid var ( - - co - border ) ;
border-radius : 50 % ;
display : flex ;
align-items : center ;
justify-content : center ;
font-size : 8 px ;
font-size : calc ( 8 px * var ( - - co - ui - scale ) ) ;
font-weight : 700 ;
padding : 0 3 px ;
padding : 0 calc ( 3 px * var ( - - co - ui - scale ) ) ;
}
. co-prompt-key--glyph {
@@ -644,16 +651,16 @@ body {
}
. co-direct-connect {
padding : 16 px 20 px ;
max-width : 480 px ;
padding : 1 em 1.25 em ;
max-width : calc ( 480 px * var ( - - co - ui - scale ) ) ;
}
. co-direct-row {
margin-bottom : 12 px ;
margin-bottom : 0.75 em ;
}
. co-direct-row . focused . co-filter-input {
outline : 1 px solid var ( - - co - green ) ;
outline : 0.0625 em solid var ( - - co - green ) ;
background : rgba ( var ( - - co - r ) , var ( - - co - g ) , var ( - - co - b ) , 0.08 ) ;
}
@@ -664,11 +671,11 @@ body {
letter-spacing : 0.1 em ;
text-transform : uppercase ;
color : var ( - - co - text - dim ) ;
margin-bottom : 4 px ;
margin-bottom : 0.25 em ;
}
. co-empty {
padding : 24 px 16 px ;
padding : 1.5 em 1 em ;
text-align : center ;
color : var ( - - co - text - dim ) ;
font-size : var ( - - co - font - md ) ;
@@ -696,7 +703,7 @@ body {
font-size : var ( - - co - font - md ) ;
letter-spacing : 0.1 em ;
text-transform : uppercase ;
margin-top : 14 px ;
margin-top : 0.875 em ;
}
. co-join-overlay . co-error p {
@@ -704,9 +711,9 @@ body {
}
. co-spinner {
width : 22 px ;
height : 22 px ;
border : 2 px solid var ( - - co - green - dim ) ;
width : calc ( 22 px * var ( - - co - ui - scale ) ) ;
height : calc ( 22 px * var ( - - co - ui - scale ) ) ;
border : calc ( 2 px * var ( - - co - ui - scale ) ) solid var ( - - co - green - dim ) ;
border-top-color : var ( - - co - green ) ;
border-radius : 50 % ;
animation : co-spin 0.8 s linear infinite ;
@@ -715,23 +722,3 @@ body {
@ keyframes co-spin {
to { transform : rotate ( 360 deg ) ; }
}
@ media ( max-width : 1280px ) {
: root {
--co-panel-left : max ( 35.8 vw , 450 px ) ;
--co-panel-right : max ( 2 vw , 16 px ) ;
--co-panel-top : max ( 40 vh , 280 px ) ;
--co-panel-bottom : max ( 21 vh , 142 px ) ;
--co-nav-width : clamp ( 136 px , 15 vw , 168 px ) ;
}
}
@ media ( min-width : 2560px ) {
: root {
--co-panel-left : max ( 35.6 vw , 908 px ) ;
--co-panel-right : max ( 2.5 vw , 48 px ) ;
--co-panel-top : max ( 39.5 vh , 572 px ) ;
--co-panel-bottom : max ( 20.5 vh , 292 px ) ;
}
}