diff --git a/assets.json b/assets.json index 0637a08..d1abce8 100644 --- a/assets.json +++ b/assets.json @@ -1 +1,3 @@ -[] \ No newline at end of file +{ + "romhackplaza": "data/assets/romhackplaza" +} \ No newline at end of file diff --git a/style_properties.less b/style_properties.less index 469a400..5bcd5a9 100644 --- a/style_properties.less +++ b/style_properties.less @@ -14,10 +14,12 @@ @xf-borderRadiusMedium: 0px; @xf-borderRadiusSmall: 0px; @xf-buttonBg: @xf-paletteColor3; +@xf-buttonCtaBg: @xf-paletteAccent2; @xf-buttonPrimaryBg: @xf-paletteAccent3; @xf-buttonTextColor: @xf-paletteNeutral1; @xf-chromeBg: @xf-paletteColor1; @xf-chromeTextColor: @xf-paletteNeutral1; +@xf-contentAccentBg: @xf-paletteAccent1; @xf-contentAltBg: @xf-paletteColor3; @xf-contentBg: @xf-paletteColor2; @xf-contentHighlightBg: @xf-paletteColor3; @@ -25,11 +27,13 @@ @xf-errorColor: @xf-paletteNeutral1; @xf-fontFamilyBody: 'Segoe UI', 'San Francisco', 'Helvetica Neue', sans-serif; @xf-fontFamilyUi: 'Segoe UI', 'San Francisco', 'Helvetica Neue', sans-serif; +@xf-inlineModHighlightColor: @xf-paletteAccent1; @xf-linkColor: @xf-paletteAccent3; @xf-linkHoverColor: @xf-paletteAccent2; @xf-linkUgcColor: @xf-paletteAccent3; @xf-linkUgcHoverColor: @xf-paletteAccent2; @xf-pageBg: @xf-paletteColor1; +@xf-paletteAccent1: hsl(35, 90%, 95%); @xf-paletteAccent2: #e56700; @xf-paletteAccent3: #ff7300; @xf-paletteColor1: #1e1e1e; @@ -40,14 +44,20 @@ @xf-paletteNeutral1: #f1f1f1; @xf-paletteNeutral2: #a1a1aa; @xf-paletteNeutral3: #111111; +@xf-publicLogoUrl: ~'data/assets/logo_default/plaza-logo-wide.webp'; +@xf-selectedItemBgColor: @xf-paletteAccent1; +@xf-selectedItemColor: @xf-paletteAccent3; @xf-styleType: dark; @xf-subNavBg: @xf-paletteColor2; @xf-successBg: #81c784; @xf-successColor: @xf-paletteNeutral1; @xf-successFeatureColor: #388e3c; @xf-textColor: @xf-paletteNeutral1; +@xf-textColorAccentContent: @xf-paletteAccent3; +@xf-textColorDimmed: mix(@xf-textColor, @xf-textColorMuted); @xf-textColorEmphasized: @xf-paletteAccent3; @xf-textColorFeature: @xf-paletteNeutral1; +@xf-textColorMuted: @xf-paletteNeutral2; .xf-blockTabHeaderSelected() { diff --git a/style_properties/_metadata.json b/style_properties/_metadata.json index 6e41c50..ecb9028 100644 --- a/style_properties/_metadata.json +++ b/style_properties/_metadata.json @@ -1,33 +1,33 @@ { "blockTabHeaderBg.json": { - "hash": "5207750cec31f74935a0c209f2bb7d5d" + "hash": "f548168a30a1d58f885379c826512664" }, "blockTabHeaderSelected.json": { "hash": "47eac3b302ad0fe474a0d0960d01e059" }, "blockTabHeaderTextColor.json": { - "hash": "d2d647878d3725763debf391d47486db" + "hash": "60987b64d0d5440a964a29356f62c9a6" }, "borderColor.json": { - "hash": "d336471427f3a4028996bddb971f2afa" + "hash": "188643a00ec1edff6b6c9a56ac2ee460" }, "borderColorAccentContent.json": { - "hash": "f2aff3c91a3241c9203b07e0c574828c" + "hash": "d66b2a8f03254ebf5526514258d40246" }, "borderColorFaint.json": { - "hash": "be6f17463760417b337cebbd89773430" + "hash": "7be6c7b8d9b69a388381311c812ac54f" }, "borderColorFeature.json": { - "hash": "2d8206ba58e695a661d20712db761817" + "hash": "166710f3e43991e1d4693c735f13d16c" }, "borderColorHeavy.json": { - "hash": "ad04822f5a3a42927dd967c341e45d63" + "hash": "1f06279972da1695c6b46f21b0e92ab5" }, "borderColorHighlight.json": { - "hash": "2ab3fdc69004f2f6a50af84ad45cc7c2" + "hash": "7e4e4b3b3d1483dd69b4cd2cec00ec2a" }, "borderColorLight.json": { - "hash": "aff3cdcedc1516d511dd6aca180a8236" + "hash": "e505c1138e48608af68155d642da1c5f" }, "borderRadiusLarge.json": { "hash": "6c8e75e1fcedd0b096d7bf911230a1c4" @@ -39,31 +39,37 @@ "hash": "03a46b0de545083de0e402a483ca6f1e" }, "buttonBg.json": { - "hash": "a8535a0dff9ac6ed83955c83d73253a0" + "hash": "c1634e1f6ff0cac089c1326d49980800" + }, + "buttonCtaBg.json": { + "hash": "810922cf9b02cafca3cb1476eeb19dbc" }, "buttonPrimaryBg.json": { - "hash": "9d6e7069664536ec94ec4a9cb00ae102" + "hash": "20d797f8ed23f15e4d4f5489eff32d27" }, "buttonTextColor.json": { - "hash": "474dfe468f35e3a7f7f7744620b9aafa" + "hash": "ab55be34da1e9618d8a1c11ba00c9cae" }, "chromeBg.json": { - "hash": "7fbcf3a7cfd4a1a7cf052382201f61c5" + "hash": "57cea2ca2670bbc1efd611347e7ef7fa" }, "chromeTextColor.json": { - "hash": "7d59fddb50e545f6dc4ee746d57300f9" + "hash": "95ef3871aec2885a46045ed9117f32ca" + }, + "contentAccentBg.json": { + "hash": "6c073c7846e2fcbfb6e42e31ee12e149" }, "contentAltBg.json": { - "hash": "475dbbcaf0266619fc0013038f6e1e9e" + "hash": "0468aaff60170b86470fae92621d5451" }, "contentBg.json": { - "hash": "d5e9973a4e83961dc45fdaaf6e81c83b" + "hash": "a602585bd026fe54b911c34051a92f64" }, "contentHighlightBg.json": { - "hash": "7ee9346c8d25ea473dacd9a9e21206e7" + "hash": "3f25b8f5a6851ecae0eaf5e3791c9cd9" }, "errorBg.json": { - "hash": "5b0fa167f49f5c9955d7946d5e102f4c" + "hash": "0640f2a117475e7615a8004007937f3a" }, "errorColor.json": { "hash": "e4469cb3a0e2c9cdc3840008700d8742" @@ -74,73 +80,97 @@ "fontFamilyUi.json": { "hash": "45a85d0b24fa4ea774734402210aaf2e" }, + "inlineModHighlightColor.json": { + "hash": "cb98086bf3814d6b4322d49d2bd5b22b" + }, "linkColor.json": { - "hash": "7ca02736780e9e4b47bf7d6d960bcffe" + "hash": "9831d4fa8c2918fc50b50c90388192e2" }, "linkHoverColor.json": { - "hash": "24233df430149979043c3864a9e94d4d" + "hash": "e66a8617ad8ea84d1c9e688acc427e07" }, "linkUgcColor.json": { - "hash": "a092f48a4f951cf3e92ed461659ae894" + "hash": "1a38ff8d88512e77e68c0931ee7f72d5" }, "linkUgcHoverColor.json": { - "hash": "2e1385c3bfe51e1874c0ec8805217d8d" + "hash": "fd483e9f6ebed528993ea0c5b3db6880" }, "pageBg.json": { - "hash": "3975020da986bf3e13a65be134449908" + "hash": "25b20f46219dd7b5cbccc5a1bc93d63d" + }, + "paletteAccent1.json": { + "hash": "87cf0a292eb7205172307c668732865b" }, "paletteAccent2.json": { - "hash": "00cb79f56e2ae668475327758cdd4ce2" + "hash": "4349b4660d958eb33ab63cef998e4f17" }, "paletteAccent3.json": { - "hash": "e9322fb2aa0043a573713fc3f96ca79a" + "hash": "56ba082c5e25fc8d3033242058d2de50" }, "paletteColor1.json": { - "hash": "976763c8be910c28f4c0008c9a277448" + "hash": "5d31b63804de05124fff929c11b5267f" }, "paletteColor2.json": { - "hash": "eecdd3bf62255ec43dfc912fb56ab08c" + "hash": "33c7c95dcc4c860a1adb200e7f852709" }, "paletteColor3.json": { - "hash": "e1603121b3eee6f5c4518966d685ef69" + "hash": "1eb9e549beb1af1ccbb432382f2a32f0" }, "paletteColor4.json": { - "hash": "c645a133d49ed59c98e33fe3cc17b5c4" + "hash": "e9faae6096c6bdfbab02281e1db92805" }, "paletteColor5.json": { - "hash": "23dedee0b4f9b9b88f3e99a5135dbfca" + "hash": "567468795753c5a7111a5f866ee32a09" }, "paletteNeutral1.json": { - "hash": "2a6c79989236ec6cbc8bf81344b52496" + "hash": "c3cdb06fe904db889e392ccf4446102b" }, "paletteNeutral2.json": { - "hash": "e6d5fa3553c3542a42c954eed332dc47" + "hash": "06b15abfcfd3ec5eb01c917d0e6f12d9" }, "paletteNeutral3.json": { - "hash": "e08775923d2c98300549be6ed17147d8" + "hash": "1ec2ef5d3d83ad10b6b7232aaa08c440" + }, + "publicLogoUrl.json": { + "hash": "aabe78e8cf804421f6dfa2a20b5028da" + }, + "selectedItemBgColor.json": { + "hash": "1b6dcccfb12810ca097e9609b6190590" + }, + "selectedItemColor.json": { + "hash": "b31443445198bba66ac1fe266b242e27" }, "styleType.json": { "hash": "a06efd294967581901bd111dfe7511c2" }, "subNavBg.json": { - "hash": "b61b38b236ab81ab58134cac3fa4963b" + "hash": "cf02b59b25e4764d10333085d206326e" }, "successBg.json": { - "hash": "1c9a192fe62a1bdbaf49d0d776919de8" + "hash": "e9a29a0bf4949a28c64b0379c43d362c" }, "successColor.json": { - "hash": "c17c8090edddc7a86df397787808c105" + "hash": "1448166e4c2a23f70a2f41568ec6f52c" }, "successFeatureColor.json": { - "hash": "25ab19e3c11c371f8b53ad56af94a5a0" + "hash": "915e092c9c59a762d40a7b6a0c80ceca" }, "textColor.json": { - "hash": "df26881141502f16be13b75b9903f48f" + "hash": "3707f47d0f8dc6307af0bbaa21f2a5d9" + }, + "textColorAccentContent.json": { + "hash": "a77a12cc25c97dbec7938c01a50357ac" + }, + "textColorDimmed.json": { + "hash": "f8a9b3ad55cabe63e15bbb285598e615" }, "textColorEmphasized.json": { - "hash": "7069705f62fdf89df20fcc7eab85959e" + "hash": "9bc63d4911cbfaf41224390ac3595d0b" }, "textColorFeature.json": { - "hash": "f149f8945b9e6497264151339755a294" + "hash": "982f1f7d5af442215b1feb98243f51a7" + }, + "textColorMuted.json": { + "hash": "b13405edd626276a29712e73a70dbe34" } } \ No newline at end of file diff --git a/style_properties/blockTabHeaderBg.json b/style_properties/blockTabHeaderBg.json index 89446ab..b469960 100644 --- a/style_properties/blockTabHeaderBg.json +++ b/style_properties/blockTabHeaderBg.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "blockTabHeader", "property_value": { - "default": "@xf-paletteColor2", - "alternate": "@xf-paletteColor4" + "default": "@xf-paletteColor2" }, "display_order": 6500 } \ No newline at end of file diff --git a/style_properties/blockTabHeaderTextColor.json b/style_properties/blockTabHeaderTextColor.json index c269b49..c36b1c5 100644 --- a/style_properties/blockTabHeaderTextColor.json +++ b/style_properties/blockTabHeaderTextColor.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "blockTabHeader", "property_value": { - "default": "@xf-paletteNeutral1", - "alternate": "@xf-paletteColor2" + "default": "@xf-paletteNeutral1" }, "display_order": 6600 } \ No newline at end of file diff --git a/style_properties/borderColor.json b/style_properties/borderColor.json index 4870869..5126641 100644 --- a/style_properties/borderColor.json +++ b/style_properties/borderColor.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "borderBasic", "property_value": { - "default": "@xf-paletteColor5", - "alternate": "xf-intensify(@xf-contentBg, 10%)" + "default": "@xf-paletteColor5" }, "display_order": 4000 } \ No newline at end of file diff --git a/style_properties/borderColorAccentContent.json b/style_properties/borderColorAccentContent.json index 2a38a3e..862486d 100644 --- a/style_properties/borderColorAccentContent.json +++ b/style_properties/borderColorAccentContent.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "borderOther", "property_value": { - "default": "@xf-paletteAccent2", - "alternate": "mix(@xf-paletteAccent3, @xf-paletteAccent2)" + "default": "@xf-paletteAccent2" }, "display_order": 5200 } \ No newline at end of file diff --git a/style_properties/borderColorFaint.json b/style_properties/borderColorFaint.json index 57ead2f..3af31a3 100644 --- a/style_properties/borderColorFaint.json +++ b/style_properties/borderColorFaint.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "borderBasic", "property_value": { - "default": "@xf-paletteColor5", - "alternate": "xf-diminish(@xf-borderColor, 6%)" + "default": "@xf-paletteColor5" }, "display_order": 4100 } \ No newline at end of file diff --git a/style_properties/borderColorFeature.json b/style_properties/borderColorFeature.json index 63e24d4..f43b0ff 100644 --- a/style_properties/borderColorFeature.json +++ b/style_properties/borderColorFeature.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "borderOther", "property_value": { - "default": "@xf-paletteAccent3", - "alternate": "@xf-paletteColor3" + "default": "@xf-paletteAccent3" }, "display_order": 5100 } \ No newline at end of file diff --git a/style_properties/borderColorHeavy.json b/style_properties/borderColorHeavy.json index 22d1f80..b3c5f74 100644 --- a/style_properties/borderColorHeavy.json +++ b/style_properties/borderColorHeavy.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "borderBasic", "property_value": { - "default": "@xf-paletteColor5", - "alternate": "xf-intensify(@xf-borderColor, 4%)" + "default": "@xf-paletteColor5" }, "display_order": 4300 } \ No newline at end of file diff --git a/style_properties/borderColorHighlight.json b/style_properties/borderColorHighlight.json index ec01cfe..bca6fb2 100644 --- a/style_properties/borderColorHighlight.json +++ b/style_properties/borderColorHighlight.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "borderOther", "property_value": { - "default": "@xf-paletteAccent3", - "alternate": "@xf-paletteColor4" + "default": "@xf-paletteAccent3" }, "display_order": 5000 } \ No newline at end of file diff --git a/style_properties/borderColorLight.json b/style_properties/borderColorLight.json index 0b80de8..e75a4f1 100644 --- a/style_properties/borderColorLight.json +++ b/style_properties/borderColorLight.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "borderBasic", "property_value": { - "default": "@xf-paletteColor5", - "alternate": "xf-diminish(@xf-borderColor, 4%)" + "default": "@xf-paletteColor5" }, "display_order": 4200 } \ No newline at end of file diff --git a/style_properties/buttonBg.json b/style_properties/buttonBg.json index fa00e2b..be13893 100644 --- a/style_properties/buttonBg.json +++ b/style_properties/buttonBg.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "buttons", "property_value": { - "default": "@xf-paletteColor3", - "alternate": "@xf-paletteColor4" + "default": "@xf-paletteColor3" }, "display_order": 8200 } \ No newline at end of file diff --git a/style_properties/buttonCtaBg.json b/style_properties/buttonCtaBg.json new file mode 100644 index 0000000..f0ef72f --- /dev/null +++ b/style_properties/buttonCtaBg.json @@ -0,0 +1,16 @@ +{ + "group_name": "color", + "title": "Call-to-action button background", + "description": "", + "property_type": "value", + "css_components": [], + "value_type": "color", + "value_parameters": "", + "has_variations": true, + "depends_on": "", + "value_group": "buttons", + "property_value": { + "default": "@xf-paletteAccent2" + }, + "display_order": 8400 +} \ No newline at end of file diff --git a/style_properties/buttonPrimaryBg.json b/style_properties/buttonPrimaryBg.json index 386ebab..6c25c09 100644 --- a/style_properties/buttonPrimaryBg.json +++ b/style_properties/buttonPrimaryBg.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "buttons", "property_value": { - "default": "@xf-paletteAccent3", - "alternate": "@xf-paletteColor3" + "default": "@xf-paletteAccent3" }, "display_order": 8300 } \ No newline at end of file diff --git a/style_properties/buttonTextColor.json b/style_properties/buttonTextColor.json index 3f88e3a..1c71e31 100644 --- a/style_properties/buttonTextColor.json +++ b/style_properties/buttonTextColor.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "buttons", "property_value": { - "default": "@xf-paletteNeutral1", - "alternate": "@xf-paletteColor1" + "default": "@xf-paletteNeutral1" }, "display_order": 8100 } \ No newline at end of file diff --git a/style_properties/chromeBg.json b/style_properties/chromeBg.json index 70e222d..83104a6 100644 --- a/style_properties/chromeBg.json +++ b/style_properties/chromeBg.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "chrome", "property_value": { - "default": "@xf-paletteColor1", - "alternate": "@xf-paletteColor5" + "default": "@xf-paletteColor1" }, "display_order": 6000 } \ No newline at end of file diff --git a/style_properties/chromeTextColor.json b/style_properties/chromeTextColor.json index ceef495..12c6bf5 100644 --- a/style_properties/chromeTextColor.json +++ b/style_properties/chromeTextColor.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "chrome", "property_value": { - "default": "@xf-paletteNeutral1", - "alternate": "@xf-paletteColor2" + "default": "@xf-paletteNeutral1" }, "display_order": 6050 } \ No newline at end of file diff --git a/style_properties/contentAccentBg.json b/style_properties/contentAccentBg.json new file mode 100644 index 0000000..eeba10f --- /dev/null +++ b/style_properties/contentAccentBg.json @@ -0,0 +1,16 @@ +{ + "group_name": "color", + "title": "Accented content background color", + "description": "This background color is used for further differentiation from regular content", + "property_type": "value", + "css_components": [], + "value_type": "color", + "value_parameters": "", + "has_variations": true, + "depends_on": "", + "value_group": "contentBackground", + "property_value": { + "default": "@xf-paletteAccent1" + }, + "display_order": 2400 +} \ No newline at end of file diff --git a/style_properties/contentAltBg.json b/style_properties/contentAltBg.json index a0d48cd..65565e4 100644 --- a/style_properties/contentAltBg.json +++ b/style_properties/contentAltBg.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "contentBackground", "property_value": { - "default": "@xf-paletteColor3", - "alternate": "darken(@xf-contentBg, 4%)" + "default": "@xf-paletteColor3" }, "display_order": 2200 } \ No newline at end of file diff --git a/style_properties/contentBg.json b/style_properties/contentBg.json index 728a4f7..5b9b178 100644 --- a/style_properties/contentBg.json +++ b/style_properties/contentBg.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "contentBackground", "property_value": { - "default": "@xf-paletteColor2", - "alternate": "@xf-paletteNeutral3" + "default": "@xf-paletteColor2" }, "display_order": 2000 } \ No newline at end of file diff --git a/style_properties/contentHighlightBg.json b/style_properties/contentHighlightBg.json index ce991ac..b18796a 100644 --- a/style_properties/contentHighlightBg.json +++ b/style_properties/contentHighlightBg.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "contentBackground", "property_value": { - "default": "@xf-paletteColor3", - "alternate": "@xf-paletteColor5" + "default": "@xf-paletteColor3" }, "display_order": 2300 } \ No newline at end of file diff --git a/style_properties/errorBg.json b/style_properties/errorBg.json index 918675a..84213b9 100644 --- a/style_properties/errorBg.json +++ b/style_properties/errorBg.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "errorMessage", "property_value": { - "default": "#e57373", - "alternate": "hsl(358, 70%, 20%)" + "default": "#e57373" }, "display_order": 10410 } \ No newline at end of file diff --git a/style_properties/inlineModHighlightColor.json b/style_properties/inlineModHighlightColor.json new file mode 100644 index 0000000..cea8379 --- /dev/null +++ b/style_properties/inlineModHighlightColor.json @@ -0,0 +1,16 @@ +{ + "group_name": "color", + "title": "Inline moderation highlight color", + "description": "When content is selected for inline moderation, its background color will be replaced with this", + "property_type": "value", + "css_components": [], + "value_type": "color", + "value_parameters": "", + "has_variations": true, + "depends_on": "", + "value_group": "contentBackground", + "property_value": { + "default": "@xf-paletteAccent1" + }, + "display_order": 2500 +} \ No newline at end of file diff --git a/style_properties/linkColor.json b/style_properties/linkColor.json index 7aacc89..21a93fe 100644 --- a/style_properties/linkColor.json +++ b/style_properties/linkColor.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "links", "property_value": { - "default": "@xf-paletteAccent3", - "alternate": "@xf-paletteColor2" + "default": "@xf-paletteAccent3" }, "display_order": 1000 } \ No newline at end of file diff --git a/style_properties/linkHoverColor.json b/style_properties/linkHoverColor.json index e64a4c1..aae533d 100644 --- a/style_properties/linkHoverColor.json +++ b/style_properties/linkHoverColor.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "links", "property_value": { - "default": "@xf-paletteAccent2", - "alternate": "@xf-paletteColor1" + "default": "@xf-paletteAccent2" }, "display_order": 1100 } \ No newline at end of file diff --git a/style_properties/linkUgcColor.json b/style_properties/linkUgcColor.json index cbe2ff6..6c3e1cc 100644 --- a/style_properties/linkUgcColor.json +++ b/style_properties/linkUgcColor.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "links", "property_value": { - "default": "@xf-paletteAccent3", - "alternate": "@xf-paletteColor2" + "default": "@xf-paletteAccent3" }, "display_order": 1200 } \ No newline at end of file diff --git a/style_properties/linkUgcHoverColor.json b/style_properties/linkUgcHoverColor.json index 8063951..53b05eb 100644 --- a/style_properties/linkUgcHoverColor.json +++ b/style_properties/linkUgcHoverColor.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "links", "property_value": { - "default": "@xf-paletteAccent2", - "alternate": "@xf-paletteColor1" + "default": "@xf-paletteAccent2" }, "display_order": 1300 } \ No newline at end of file diff --git a/style_properties/pageBg.json b/style_properties/pageBg.json index f980609..d59da4a 100644 --- a/style_properties/pageBg.json +++ b/style_properties/pageBg.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "contentBackground", "property_value": { - "default": "@xf-paletteColor1", - "alternate": "darken(@xf-contentBg, 8%)" + "default": "@xf-paletteColor1" }, "display_order": 2100 } \ No newline at end of file diff --git a/style_properties/paletteAccent1.json b/style_properties/paletteAccent1.json new file mode 100644 index 0000000..3833dfa --- /dev/null +++ b/style_properties/paletteAccent1.json @@ -0,0 +1,16 @@ +{ + "group_name": "palette", + "title": "Accent 1", + "description": "", + "property_type": "value", + "css_components": [], + "value_type": "color", + "value_parameters": "hidePalette=true", + "has_variations": true, + "depends_on": "", + "value_group": "accent", + "property_value": { + "default": "hsl(35, 90%, 95%)" + }, + "display_order": 2000 +} \ No newline at end of file diff --git a/style_properties/paletteAccent2.json b/style_properties/paletteAccent2.json index 7457302..ecba137 100644 --- a/style_properties/paletteAccent2.json +++ b/style_properties/paletteAccent2.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "accent", "property_value": { - "default": "#e56700", - "alternate": "hsl(35, 85%, 45%)" + "default": "#e56700" }, "display_order": 2100 } \ No newline at end of file diff --git a/style_properties/paletteAccent3.json b/style_properties/paletteAccent3.json index 1c3f070..6a903f0 100644 --- a/style_properties/paletteAccent3.json +++ b/style_properties/paletteAccent3.json @@ -11,7 +11,7 @@ "value_group": "accent", "property_value": { "default": "#ff7300", - "alternate": "hsl(35, 85%, 15%)" + "alternate": "#e56700" }, "display_order": 2200 } \ No newline at end of file diff --git a/style_properties/paletteColor1.json b/style_properties/paletteColor1.json index 2a416ca..84675b1 100644 --- a/style_properties/paletteColor1.json +++ b/style_properties/paletteColor1.json @@ -11,7 +11,7 @@ "value_group": "primary", "property_value": { "default": "#1e1e1e", - "alternate": "hsl(206, 60%, 75%)" + "alternate": "#f0f0f0" }, "display_order": 1000 } \ No newline at end of file diff --git a/style_properties/paletteColor2.json b/style_properties/paletteColor2.json index d5e833c..0b1a686 100644 --- a/style_properties/paletteColor2.json +++ b/style_properties/paletteColor2.json @@ -11,7 +11,7 @@ "value_group": "primary", "property_value": { "default": "#252526", - "alternate": "hsl(204, 60%, 60%)" + "alternate": "#ffffff" }, "display_order": 1100 } \ No newline at end of file diff --git a/style_properties/paletteColor3.json b/style_properties/paletteColor3.json index 0c802f0..b756c65 100644 --- a/style_properties/paletteColor3.json +++ b/style_properties/paletteColor3.json @@ -11,7 +11,7 @@ "value_group": "primary", "property_value": { "default": "#2d2d30", - "alternate": "hsl(205, 60%, 40%)" + "alternate": "#e8e8e8" }, "display_order": 1200 } \ No newline at end of file diff --git a/style_properties/paletteColor4.json b/style_properties/paletteColor4.json index 41ec12c..ad1d2b3 100644 --- a/style_properties/paletteColor4.json +++ b/style_properties/paletteColor4.json @@ -11,7 +11,7 @@ "value_group": "primary", "property_value": { "default": "#3e3e42", - "alternate": "hsl(205, 60%, 20%)" + "alternate": "#dcdcdc" }, "display_order": 1300 } \ No newline at end of file diff --git a/style_properties/paletteColor5.json b/style_properties/paletteColor5.json index a6f047c..42f6929 100644 --- a/style_properties/paletteColor5.json +++ b/style_properties/paletteColor5.json @@ -11,7 +11,7 @@ "value_group": "primary", "property_value": { "default": "#3f3f46", - "alternate": "hsl(205, 60%, 10%)" + "alternate": "#d0d0d0" }, "display_order": 1400 } \ No newline at end of file diff --git a/style_properties/paletteNeutral1.json b/style_properties/paletteNeutral1.json index 25b4e6b..027ad60 100644 --- a/style_properties/paletteNeutral1.json +++ b/style_properties/paletteNeutral1.json @@ -11,7 +11,7 @@ "value_group": "neutral", "property_value": { "default": "#f1f1f1", - "alternate": "hsl(0, 0%, 100%)" + "alternate": "#454545" }, "display_order": 3000 } \ No newline at end of file diff --git a/style_properties/paletteNeutral2.json b/style_properties/paletteNeutral2.json index e49e32f..260cd04 100644 --- a/style_properties/paletteNeutral2.json +++ b/style_properties/paletteNeutral2.json @@ -11,7 +11,7 @@ "value_group": "neutral", "property_value": { "default": "#a1a1aa", - "alternate": "hsl(0, 0%, 54%)" + "alternate": "#737373" }, "display_order": 3100 } \ No newline at end of file diff --git a/style_properties/paletteNeutral3.json b/style_properties/paletteNeutral3.json index 3aa00bf..ac56af7 100644 --- a/style_properties/paletteNeutral3.json +++ b/style_properties/paletteNeutral3.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "neutral", "property_value": { - "default": "#111111", - "alternate": "hsl(0, 0%, 8%)" + "default": "#111111" }, "display_order": 3200 } \ No newline at end of file diff --git a/style_properties/publicLogoUrl.json b/style_properties/publicLogoUrl.json new file mode 100644 index 0000000..a47fc2b --- /dev/null +++ b/style_properties/publicLogoUrl.json @@ -0,0 +1,17 @@ +{ + "group_name": "basic", + "title": "Logo URL", + "description": "The path from your XenForo root directory to your logo. If you specify alternate variations, they should be the same size. If you specify an SVG, you should set Emails > Email logo URL to a PNG, or similar, for better compatibility.", + "property_type": "value", + "css_components": [], + "value_type": "string", + "value_parameters": "asset=logo", + "has_variations": true, + "depends_on": "", + "value_group": "logo", + "property_value": { + "default": "data/assets/logo_default/plaza-logo-wide.webp", + "alternate": "data/assets/logo_alternate/plaza-logo-wide.webp" + }, + "display_order": 101 +} \ No newline at end of file diff --git a/style_properties/selectedItemBgColor.json b/style_properties/selectedItemBgColor.json new file mode 100644 index 0000000..d081794 --- /dev/null +++ b/style_properties/selectedItemBgColor.json @@ -0,0 +1,16 @@ +{ + "group_name": "color", + "title": "Selected item background color", + "description": "", + "property_type": "value", + "css_components": [], + "value_type": "color", + "value_parameters": "", + "has_variations": true, + "depends_on": "", + "value_group": "selectedItems", + "property_value": { + "default": "@xf-paletteAccent1" + }, + "display_order": 9200 +} \ No newline at end of file diff --git a/style_properties/selectedItemColor.json b/style_properties/selectedItemColor.json new file mode 100644 index 0000000..bb0662e --- /dev/null +++ b/style_properties/selectedItemColor.json @@ -0,0 +1,16 @@ +{ + "group_name": "color", + "title": "Selected item color", + "description": "", + "property_type": "value", + "css_components": [], + "value_type": "color", + "value_parameters": "", + "has_variations": true, + "depends_on": "", + "value_group": "selectedItems", + "property_value": { + "default": "@xf-paletteAccent3" + }, + "display_order": 9100 +} \ No newline at end of file diff --git a/style_properties/subNavBg.json b/style_properties/subNavBg.json index a2048ba..1ca6166 100644 --- a/style_properties/subNavBg.json +++ b/style_properties/subNavBg.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "chrome", "property_value": { - "default": "@xf-paletteColor2", - "alternate": "@xf-contentAltBg" + "default": "@xf-paletteColor2" }, "display_order": 6080 } \ No newline at end of file diff --git a/style_properties/successBg.json b/style_properties/successBg.json index 48b52dc..a7e15c7 100644 --- a/style_properties/successBg.json +++ b/style_properties/successBg.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "successMessage", "property_value": { - "default": "#81c784", - "alternate": "hsl(122, 70%, 20%)" + "default": "#81c784" }, "display_order": 10210 } \ No newline at end of file diff --git a/style_properties/successColor.json b/style_properties/successColor.json index 419cd77..46706cb 100644 --- a/style_properties/successColor.json +++ b/style_properties/successColor.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "successMessage", "property_value": { - "default": "@xf-paletteNeutral1", - "alternate": "hsl(116, 70%, 85%)" + "default": "@xf-paletteNeutral1" }, "display_order": 10220 } \ No newline at end of file diff --git a/style_properties/successFeatureColor.json b/style_properties/successFeatureColor.json index c443f22..5430a10 100644 --- a/style_properties/successFeatureColor.json +++ b/style_properties/successFeatureColor.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "successMessage", "property_value": { - "default": "#388e3c", - "alternate": "hsl(122, 70%, 50%)" + "default": "#388e3c" }, "display_order": 10230 } \ No newline at end of file diff --git a/style_properties/textColor.json b/style_properties/textColor.json index d843f47..d3ba1de 100644 --- a/style_properties/textColor.json +++ b/style_properties/textColor.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "textBasic", "property_value": { - "default": "@xf-paletteNeutral1", - "alternate": "darken(@xf-paletteNeutral1, 12%)" + "default": "@xf-paletteNeutral1" }, "display_order": 100 } \ No newline at end of file diff --git a/style_properties/textColorAccentContent.json b/style_properties/textColorAccentContent.json new file mode 100644 index 0000000..47d7009 --- /dev/null +++ b/style_properties/textColorAccentContent.json @@ -0,0 +1,16 @@ +{ + "group_name": "color", + "title": "Accented content text color", + "description": "", + "property_type": "value", + "css_components": [], + "value_type": "color", + "value_parameters": "", + "has_variations": true, + "depends_on": "", + "value_group": "textOther", + "property_value": { + "default": "@xf-paletteAccent3" + }, + "display_order": 3200 +} \ No newline at end of file diff --git a/style_properties/textColorDimmed.json b/style_properties/textColorDimmed.json new file mode 100644 index 0000000..69d6c13 --- /dev/null +++ b/style_properties/textColorDimmed.json @@ -0,0 +1,16 @@ +{ + "group_name": "color", + "title": "Dimmed text color", + "description": "Used when less-important text is placed next to normal text", + "property_type": "value", + "css_components": [], + "value_type": "color", + "value_parameters": "", + "has_variations": true, + "depends_on": "", + "value_group": "textBasic", + "property_value": { + "default": "mix(@xf-textColor, @xf-textColorMuted)" + }, + "display_order": 200 +} \ No newline at end of file diff --git a/style_properties/textColorEmphasized.json b/style_properties/textColorEmphasized.json index 1bdce16..0783b42 100644 --- a/style_properties/textColorEmphasized.json +++ b/style_properties/textColorEmphasized.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "textOther", "property_value": { - "default": "@xf-paletteAccent3", - "alternate": "@xf-paletteColor1" + "default": "@xf-paletteAccent3" }, "display_order": 3100 } \ No newline at end of file diff --git a/style_properties/textColorFeature.json b/style_properties/textColorFeature.json index 478d716..f4be06b 100644 --- a/style_properties/textColorFeature.json +++ b/style_properties/textColorFeature.json @@ -10,8 +10,7 @@ "depends_on": "", "value_group": "textOther", "property_value": { - "default": "@xf-paletteNeutral1", - "alternate": "@xf-paletteColor2" + "default": "@xf-paletteNeutral1" }, "display_order": 3000 } \ No newline at end of file diff --git a/style_properties/textColorMuted.json b/style_properties/textColorMuted.json new file mode 100644 index 0000000..8b6f3fc --- /dev/null +++ b/style_properties/textColorMuted.json @@ -0,0 +1,16 @@ +{ + "group_name": "color", + "title": "Muted text color", + "description": "Text is further de-emphasised using this style", + "property_type": "value", + "css_components": [], + "value_type": "color", + "value_parameters": "", + "has_variations": true, + "depends_on": "", + "value_group": "textBasic", + "property_value": { + "default": "@xf-paletteNeutral2" + }, + "display_order": 300 +} \ No newline at end of file diff --git a/templates/_metadata.json b/templates/_metadata.json index 07ba864..a06ce4a 100644 --- a/templates/_metadata.json +++ b/templates/_metadata.json @@ -3,7 +3,7 @@ "addon_id": "XF", "version_id": 2031070, "version_string": "2.3.10", - "hash": "92f8334dbbaac2af86e9e9de3b22fc45" + "hash": "09489ca3208db67cf6add9779edd76be" }, "public/account_alerts_popup.html": { "addon_id": "XF", @@ -11,17 +11,35 @@ "version_string": "2.3.10", "hash": "625739bb3c29b990a3dfc58e44fd24e8" }, + "public/account_preferences_popup.html": { + "addon_id": "RomhackPlaza/Master", + "version_id": 1000000, + "version_string": "1.0.0", + "hash": "5de44b0169e7c63fb664aefc04832ba3" + }, "public/alert_macros.html": { "addon_id": "XF", "version_id": 2031070, "version_string": "2.3.10", "hash": "0cb82ae0d5544911ac92db38a01cb211" }, + "public/conversations_popup.html": { + "addon_id": "XF", + "version_id": 2031070, + "version_string": "2.3.10", + "hash": "8e9cc51c532904221c9f876a8a2f5693" + }, + "public/delete_account.html": { + "addon_id": "", + "version_id": 0, + "version_string": "", + "hash": "8f108ffdfd4f6776c2ee690e8bf3aa62" + }, "public/extra.less": { "addon_id": "XF", "version_id": 2031070, "version_string": "2.3.10", - "hash": "24d94c7353b843acb056656d00ea35d2" + "hash": "278b91ff307ed1d1c634eee490ff8653" }, "public/member_tooltip.html": { "addon_id": "XF", @@ -35,22 +53,28 @@ "version_string": "2.3.10", "hash": "5a95069e23fb2a8c740d3d380a0feb34" }, + "public/misc_preferences_popup.html": { + "addon_id": "RomhackPlaza/Master", + "version_id": 1000000, + "version_string": "1.0.0", + "hash": "35f51014f2dfed0104697930d0eff39e" + }, "public/romhackplaza_css.html": { "addon_id": "", "version_id": 0, "version_string": "", - "hash": "96718ec22da14ac5d4615109068a2dc2" + "hash": "7ef3afe6786ee66da180c97f23f17fcd" }, "public/romhackplaza_js.html": { "addon_id": "", "version_id": 0, "version_string": "", - "hash": "30324ecf51ac365509fce5ef1db2ecd1" + "hash": "2de55abb39dab7c9db82172f3b33a2b3" }, "public/topbar_actions.html": { "addon_id": "RomhackPlaza/Master", "version_id": 1000000, "version_string": "1.0.0", - "hash": "b4d757a96108efbca01fb7e6b68f11b5" + "hash": "ee896c17cf565f9351ec2bfd2da1b7c1" } } \ No newline at end of file diff --git a/templates/public/PAGE_CONTAINER.html b/templates/public/PAGE_CONTAINER.html index d7299e6..b578298 100644 --- a/templates/public/PAGE_CONTAINER.html +++ b/templates/public/PAGE_CONTAINER.html @@ -10,7 +10,7 @@ data-logged-in="{{ $xf.visitor.user_id ? 'true' : 'false' }}" data-cookie-prefix="{$xf.cookie.prefix}" data-csrf="{{ csrf_token()|escape('js') }}" - class="has-no-js {{ $template ? 'template-' . $template : '' }}" + class="has-no-js {{ $template ? 'template-' . $template : '' }} {{ $xf.visitor.style_variation === 'alternate' ? '$light-mode' : '' }}" {{ $xf.runJobs ? ' data-run-jobs=""' : '' }}> @@ -82,29 +82,35 @@ -
+
- - - - - - - - - - - - - - - - - - - - -
- {$navHtml|raw} -
- {$subNavHtml|raw} - -
- {$navHtml|raw} - {$subNavHtml|raw} -
- - {$navHtml|raw} - {$subNavHtml|raw} -
- -
- - - - - - - -
-
- - Search -
+
+ + + +
@@ -665,6 +253,15 @@ + + + + - - - - - - - -
- - - - - - -
+
+ + + + + + +
+
+
{{ phrase('back') }} @@ -820,6 +310,7 @@ {$ldJsonHtml|raw} + diff --git a/templates/public/account_preferences_popup.html b/templates/public/account_preferences_popup.html new file mode 100644 index 0000000..7c62b19 --- /dev/null +++ b/templates/public/account_preferences_popup.html @@ -0,0 +1,53 @@ +
+
+ + Theme +
+ + + + + + +
+ +
+ +
+
+ + Account +
+ + + XenForo settings + + +
+ \ No newline at end of file diff --git a/templates/public/conversations_popup.html b/templates/public/conversations_popup.html new file mode 100644 index 0000000..5d7a424 --- /dev/null +++ b/templates/public/conversations_popup.html @@ -0,0 +1,33 @@ + + + + + + + + +
+ + No new conversations. +
+
+ +Edited for RHPZ + + + +
+
+ +
+ + + +
+
+
+ +
\ No newline at end of file diff --git a/templates/public/delete_account.html b/templates/public/delete_account.html new file mode 100644 index 0000000..ef8f56f --- /dev/null +++ b/templates/public/delete_account.html @@ -0,0 +1,36 @@ +{{ phrase('delete_account') }} + + + +
+
+
    +
    If you want to delete your Romhack Plaza account, please follow these steps: +
      +
    • You must send an email via the contact form using the same email address associated with your account.
    • +
    • The subject line of your request must be clear; for example: “Delete account”
    • +
    • The body of your email must include the following code(s), depending on what you wish to do.
    • +
    + Without these details, your request cannot be processed.
    +
    +

    + Codes +

    + + + Delete my account + Delete all my data + + + {$deleteAccountCode} + {$deleteAllDataCode} + + +
      +
    • If you only want to delete your account, just send the first code. Your data will still be on the site, but it will be anonymized.
    • +
    • If you also want to automatically delete all your data, send both codes.
    • +
    +
    +
+
+
\ No newline at end of file diff --git a/templates/public/extra.less b/templates/public/extra.less index cf5ceaf..cfdded9 100644 --- a/templates/public/extra.less +++ b/templates/public/extra.less @@ -37,6 +37,8 @@ ul { list-style-type: square; } +[x-cloak] {display: none !important;} + /* File: resources/css/base/variables.css */ :root { @@ -69,6 +71,35 @@ ul { /* Menu settings */ --menu-size: 260px; --menu-user-avatar-bg: #555; + + /* Gap */ + --gap: 15px; +} + +.\$light-mode { + + /* RHPZ color */ + --rhpz-orange: #ff7300; + --rhpz-orange-hover: #e56700; + + /* Background colors */ + --bg: #f0f0f0; + --bg2: #ffffff; + --bg3: #e8e8e8; + --bg4: #dcdcdc; + + /* Text */ + --text: #454545; + --text2: #737373; + --text3: #111111; + + /* Elements */ + --border: #d0d0d0; + --error: #e57373; + --info: #1976d2; + --success: #81c784; + --success2: #388e3c; + } @@ -104,6 +135,7 @@ ul { background-color: var(--bg2); border: 1px solid var(--border); display: flex; + min-width: 0; flex-direction: column; transition: transform 0.2s, border-color 0.2s; cursor: pointer; @@ -116,6 +148,7 @@ ul { .\$entry-cover-wrapper { position: relative; aspect-ratio: 4/3; + min-width: 0; background-color: var(--bg); border-bottom: 1px solid var(--border); display: flex; @@ -155,6 +188,7 @@ ul { font-size: 1.1rem; margin-bottom: 5px; line-height: 1.3; + word-wrap: break-word; } .\$entry-card-author { @@ -173,6 +207,86 @@ ul { } } +@media (max-width: 1024px) { + .\$stats-grid { + grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); + gap: 15px; + margin-bottom: 25px; + } + + .\$stat-card { + padding: 15px; + gap: 12px; + } +} + +@media (max-width: 768px) { + .\$stats-grid { + grid-template-columns: repeat(2, 1fr); + gap: 12px; + margin-bottom: 20px; + } + + .\$stat-card { + padding: 12px; + gap: 10px; + font-size: 0.9rem; + } + + .\$stat-card i { + width: 28px; + height: 28px; + } + + .\$entry-card-info { + padding: 12px; + } + + .\$entry-card-title { + font-size: 0.95rem; + margin-bottom: 4px; + } + + .\$entry-card-author { + font-size: 0.8rem; + margin-bottom: 8px; + } + + .\$entry-card-meta { + font-size: 0.75rem; + } +} + +@media (max-width: 600px) { + .\$stats-grid { + grid-template-columns: 1fr; + gap: 10px; + margin-bottom: 15px; + } + + .\$stat-card { + padding: 10px; + flex-direction: row; + } + + .\$entry-card { + &:hover { + transform: none; + } + } + + .\$entry-card-title { + font-size: 0.9rem; + } + + .\$entry-badge { + top: 5px; + right: 5px; + padding: 3px 6px; + font-size: 0.65rem; + } +} + /* File: resources/css/components/common.css */ /* BUTTONS */ @@ -241,6 +355,13 @@ ul { border-bottom: 1px solid var(--border); padding-bottom: 10px; } +.\$block-success { + background-color: var(--success); + border: 1px solid var(--success); + color: var(--text); + padding: 20px; + margin-bottom: 20px; +} .\$block-error { background-color: var(--error); border: 1px solid var(--error); @@ -274,6 +395,11 @@ ul { color: var(--text); border-color: var(--success2); } +.\$badge.yellow, .\$badge.utilities { + background-color: #fdeb0f; + color: #000; + border-color: #fdeb0f; +} .\$topbar-badge { position: absolute; @@ -312,6 +438,7 @@ ul { .\$breadcrumb { margin-bottom: 15px; + flex-shrink: 0; } /* PAGE */ @@ -321,6 +448,7 @@ ul { font-weight: 300; margin-bottom: 20px; color: var(--text); + flex-shrink: 0; } /* TEXTS */ @@ -355,6 +483,97 @@ ul { animation: spin 1s infinite linear; } +.\$search-button { + background: none; + border: none; + cursor: pointer; +} + +@media (max-width: 768px) { + .\$btn { + padding: 7px 12px; + font-size: 0.85rem; + gap: 6px; + } + + .\$block { + padding: 15px; + margin-bottom: 15px; + } + + .\$block-header { + font-size: 1.05rem; + margin-bottom: 12px; + padding-bottom: 8px; + } + + .\$page-title { + font-size: 1.5rem; + margin-bottom: 15px; + } + + .\$content-title { + margin: 20px 0 12px 0; + padding-left: 8px; + } + + .\$quote { + padding: 12px; + margin-top: 20px; + font-size: 0.95rem; + } + + .\$whisper { + margin-bottom: 12px; + font-size: 0.9rem; + } + + .\$breadcrumb { + font-size: 0.85rem; + } +} + +@media (max-width: 600px) { + .\$btn { + padding: 6px 10px; + font-size: 0.8rem; + gap: 4px; + justify-content: center; + } + + .\$btn.primary, .\$btn.danger, .\$btn.success { + width: 100%; + } + + .\$block { + padding: 12px; + margin-bottom: 12px; + } + + .\$block-header { + font-size: 0.95rem; + margin-bottom: 10px; + padding-bottom: 6px; + } + + .\$page-title { + font-size: 1.2rem; + margin-bottom: 12px; + } + + .\$badge { + padding: 2px 6px; + font-size: 0.7rem; + } + + .\$topbar-badge { + min-width: 16px; + height: 16px; + padding: 0 3px; + font-size: 0.6rem; + } +} + /* File: resources/css/components/database.css */ .\$filter-bar { @@ -618,6 +837,10 @@ ul { flex-direction: column; } + .\$database-wrapper { + flex-direction: column; + } + .\$database-filters { width: 100%; display: grid; @@ -634,19 +857,63 @@ ul { } } +@media (max-width: 768px) { + .\$database-search { + gap: 8px; + margin-bottom: 15px; + flex-wrap: wrap; + } + + .\$database-wrapper { + flex-direction: column; + gap: 15px; + } + + .\$database-filters { + width: 100%; + grid-template-columns: 1fr; + order: -1; + margin-bottom: 10px; + } + + .\$database-filter-group { + padding: 12px 0; + } + + .\$grid-entries { + grid-template-columns: repeat(3, 1fr); + gap: 15px; + } +} + @media (max-width: 600px) { + .\$database-search { + flex-direction: column; + } + .\$database-filters { grid-template-columns: 1fr; } .\$grid-entries { grid-template-columns: repeat(2, 1fr); + gap: 12px; + } + + .\$database-filter-group { + padding: 10px 0; } } @media (max-width: 420px) { .\$grid-entries { grid-template-columns: 1fr; + gap: 10px; + } + + .\$database-search input { + font-size: 0.85rem; + padding: 6px 8px; } } @@ -750,6 +1017,269 @@ ul { +/* File: resources/css/components/drafts.css */ +.\$drafts-count { + font-size: 0.85rem; + color: var(--text2); + margin-bottom: 15px; + padding-bottom: 10px; + border-bottom: 1px solid var(--border); +} + +.\$drafts-empty { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 15px; + padding: 80px 20px; + background-color: var(--bg2); + border: 1px dashed var(--border); + text-align: center; + color: var(--text2); + + h3 { + font-size: 1.1rem; + color: var(--text); + margin: 0; + } + + p { + font-size: 0.9rem; + margin: 0; + } + +} + +.\$drafts-list { + display: flex; + flex-direction: column; + gap: 15px; +} + +.\$drafts-item { + display: flex; + gap: 20px; + background-color: var(--bg2); + border: 1px solid var(--border); + border-left: 3px solid var(--rhpz-orange); + padding: 20px; + transition: border-color 0.15s; + + &:hover { + border-color: var(--rhpz-orange); + } +} + +.\$drafts-cover { + width: 80px; + height: 80px; + flex-shrink: 0; + background-color: var(--bg); + border: 1px solid var(--border); + overflow: hidden; + display: flex; + align-items: center; + justify-content: center; + + img { + width: 100%; + height: 100%; + object-fit: contain; + } +} + +.\$drafts-cover-placeholder { + color: var(--border); +} + +.\$drafts-info { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; + gap: 12px; +} + +.\$drafts-top { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 15px; +} + +.\$drafts-title { + font-size: 1rem; + font-weight: 600; + color: var(--text); + margin-bottom: 6px; + white-space: normal; + overflow: hidden; + text-overflow: ellipsis; +} + +.\$drafts-meta { + display: flex; + gap: 6px; + flex-wrap: wrap; +} + +.\$drafts-dates { + display: flex; + flex-direction: column; + gap: 4px; + text-align: right; + font-size: 0.78rem; + color: var(--text2); + flex-shrink: 0; + + span { + display: flex; + align-items: center; + justify-content: flex-end; + gap: 5px; + } +} + +.\$drafts-progress { + display: flex; + align-items: center; + gap: 10px; +} + +.\$drafts-progress-bar { + flex: 1; + height: 4px; + background-color: var(--bg4); + overflow: hidden; +} + +.\$drafts-progress-fill { + height: 100%; + background-color: var(--rhpz-orange); + transition: width 0.3s ease; + + .\$complete { + background-color: var(--success); + } +} +.\$drafts-progress-label { + font-size: 0.75rem; + color: var(--text2); + white-space: nowrap; +} +.\$drafts-actions { + display: flex; + flex-direction: column; + gap: 8px; + justify-content: center; + flex-shrink: 0; + .\$btn { + white-space: nowrap; + } +} + +@media (max-width: 768px) { + .\$drafts-count { + font-size: 0.8rem; + margin-bottom: 12px; + padding-bottom: 8px; + } + + .\$drafts-item { + gap: 15px; + padding: 15px; + } + + .\$drafts-cover { + width: 70px; + height: 70px; + } + + .\$drafts-top { + gap: 12px; + } + + .\$drafts-title { + font-size: 0.95rem; + } + + .\$drafts-meta { + font-size: 0.8rem; + } + + .\$drafts-actions { + gap: 6px; + } + + .\$drafts-actions .\$btn { + padding: 6px 10px; + font-size: 0.8rem; + } +} + +@media (max-width: 600px) { + .\$drafts-empty { + padding: 60px 15px; + gap: 12px; + } + + .\$drafts-empty h3 { + font-size: 1rem; + } + + .\$drafts-empty p { + font-size: 0.85rem; + } + + .\$drafts-item { + flex-direction: column; + gap: 12px; + padding: 12px; + } + + .\$drafts-cover { + width: 100%; + height: 150px; + } + + .\$drafts-top { + flex-direction: column; + gap: 10px; + } + + .\$drafts-title { + font-size: 0.9rem; + } + + .\$drafts-meta { + font-size: 0.75rem; + } + + .\$drafts-progress { + flex-direction: column; + gap: 8px; + } + + .\$drafts-progress-bar { + width: 100%; + } + + .\$drafts-actions { + flex-direction: row; + gap: 6px; + flex-wrap: wrap; + } + + .\$drafts-actions .\$btn { + flex: 1; + min-width: 80px; + padding: 5px 8px; + font-size: 0.75rem; + } +} + + /* File: resources/css/components/easymde.css */ .\$EasyMDEContainer { display: flex; @@ -1223,6 +1753,50 @@ ul { flex-direction: column; gap: 5px; } +.\$gallery-item { + position: relative; + cursor: grab; + transition: opacity 0.2s, transform 0.15s; + user-select: none; +} + +.gallery-item:active { cursor: grabbing; } + +.\$gallery-item--dragging { + opacity: 0.4; + transform: scale(0.97); +} + +.\$gallery-drag-handle { + position: absolute; + top: 4px; + left: 4px; + z-index: 10; + background-color: rgba(0,0,0,0.6); + color: #fff; + padding: 3px 4px; + display: flex; + align-items: center; + cursor: grab; + opacity: 0; + transition: opacity 0.15s; +} + +.gallery-item:hover .gallery-drag-handle { opacity: 1; } + +.\$gallery-order-badge { + position: absolute; + bottom: 4px; + left: 4px; + z-index: 10; + background-color: rgba(0,0,0,0.7); + color: #fff; + font-size: 0.7rem; + font-weight: 700; + padding: 2px 6px; + min-width: 20px; + text-align: center; +} .\$authors-list { display: grid; grid-template-columns: repeat(4, 1fr); @@ -1333,6 +1907,210 @@ ul { color: var(--text2); white-space: nowrap; } +.\$upload-item-actions { + display: flex; + flex-direction: row; + gap: 15px; +} + +@media (max-width: 600px) { + .\$upload-item-actions { + flex-direction: column; + gap: 8px; + } + + .\$upload-item-actions .\$btn { + width: 100%; + } +} +.file-state-icon { width: 18px; height: 18px; } +.file-state-icon--public { color: var(--success); } +.file-state-icon--private { color: var(--text2); } +.file-state-icon--archived { color: var(--error); } + +.upload-item-state { display: flex; align-items: center; gap: 8px; } + +.author-search { position: relative; } + +.\$author-search-input { + display: flex; + align-items: center; + gap: 8px; + background-color: var(--bg); + border: 1px solid var(--border); + padding: 8px 12px; +} + +.\$author-search-input .\$form-input { + border: none; + padding: 0; + background: none; + flex: 1; +} + +.\$author-search-selected { + display: flex; + align-items: center; + gap: 5px; + color: var(--success); + font-size: 0.85rem; + white-space: nowrap; +} + +.\$author-search-dropdown { + position: absolute; + top: 100%; + left: 0; + right: 0; + background-color: var(--bg2); + border: 1px solid var(--border); + border-top: none; + z-index: 100; + max-height: 200px; + overflow-y: auto; +} + +.\$author-search-item { + display: flex; + align-items: center; + gap: 9px; + width: 100%; + padding: 9px 12px; + background: none; + border: none; + color: var(--text); + font-size: 0.88rem; + cursor: pointer; + text-align: left; + font-family: var(--typography); + transition: background-color 0.1s; +} + +.author-search-item:hover { background-color: var(--bg3); } + +.\$game-selector-mode { + display: flex; + gap: 0; + margin-bottom: 15px; + border: 1px solid var(--border); +} + +.\$game-selector-mode-btn { + display: flex; + align-items: center; + gap: 7px; + padding: 8px 14px; + background: none; + border: none; + border-right: 1px solid var(--border); + color: var(--text2); + font-size: 0.85rem; + cursor: pointer; + font-family: var(--font-family); + transition: background-color 0.1s, color 0.1s; +} + +.\$game-selector-mode-btn:last-child { + border-right: none; +} + +.\$game-selector-mode-btn:hover { + background-color: var(--bg3); + color: var(--text); +} + +.\$game-selector-mode-btn.active { + background-color: var(--bg3); + color: var(--rhpz-orange); + border-bottom: 2px solid var(--rhpz-orange); +} + +.\$game-selector-platform-only { + grid-column: span 1; +} + +@media (max-width: 768px) { + .\$form-group.level { + padding: 20px; + margin-bottom: 25px; + } + + .\$form-group-title { + font-size: 1rem; + margin-bottom: 15px; + padding-bottom: 8px; + } + + .\$form-group label, .\$form-label { + margin-bottom: 6px; + font-size: 0.9rem; + } + + .\$form-input, .\$form-select, .\$form-textarea, .\$form-field { + padding: 8px 10px; + font-size: 0.9rem; + } + + .\$form-textarea { + min-height: 100px; + } + + .\$game-selector-mode { + flex-direction: column; + gap: 0; + } + + .\$game-selector-mode-btn { + padding: 10px 12px; + border-right: none; + border-bottom: 1px solid var(--border); + } + + .\$game-selector-mode-btn:last-child { + border-bottom: none; + } + + .\$submit, .\$submit-level, .\$main-image-grid { + flex-direction: column; + } + + .\$grid-hashes { + grid-template-columns: 1fr; + } + + .\$hash-first { + display: none; + } +} + +@media (max-width: 600px) { + .\$form-group { + margin-bottom: 15px; + } + + .\$form-group.level { + padding: 15px; + margin-bottom: 20px; + } + + .\$form-group-title { + font-size: 0.95rem; + margin-bottom: 12px; + } + + .\$form-group label, .\$form-label { + font-size: 0.85rem; + } + + .\$form-input, .\$form-select, .\$form-textarea, .\$form-field { + padding: 6px 8px; + font-size: 0.85rem; + } + + .\$form-error-text { + font-size: 0.8rem; + } +} /* File: resources/css/components/grid.css */ @@ -1377,11 +2155,12 @@ ul { /* File: resources/css/components/hovercard.css */ .\$hovercard-overlay { - position: absolute; - z-index: 2000; + position: fixed; + z-index: 3500; background-color: var(--bg2); border: 1px solid var(--border); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5); + pointer-events: auto; } .\$hovercard-overlay-loading { @@ -1496,6 +2275,38 @@ ul { font-size: 0.82rem; } +@media (max-width: 768px) { + .\$hovercard { + width: 260px; + } + + .\$hovercard-actions { + gap: 6px; + } + + .\$hovercard-actions .\$btn { + font-size: 0.75rem; + padding: 6px 8px; + } +} + +@media (max-width: 600px) { + .\$hovercard { + width: calc(100vw - 40px); + max-width: 280px; + } + + .\$hovercard-actions { + flex-direction: column; + gap: 6px; + } + + .\$hovercard-actions .\$btn { + width: 100%; + justify-content: center; + } +} + /* File: resources/css/components/modal.css */ .\$modal-overlay { @@ -1548,13 +2359,690 @@ ul { } -.\$modal-content { +.\$modal-content, .\$modal-body { padding: 20px; } +/* File: resources/css/components/modcp.css */ +.\$modcp-wrapper { + display: flex; + gap: 0; + align-items: flex-start; + min-height: calc(100vh - 60px); +} + +.\$modcp-sidebar { + width: 220px; + flex-shrink: 0; + background-color: var(--bg2); + border: 1px solid var(--border); + position: sticky; + top: 0; + align-self: flex-start; + margin-right: 15px; +} + +.\$modcp-sidebar-header { + display: flex; + align-items: center; + gap: 8px; + padding: 14px 16px; + font-weight: 600; + font-size: 0.88rem; + color: var(--text); + border-bottom: 1px solid var(--border); + background-color: var(--bg3); + text-transform: uppercase; + letter-spacing: 0.5px; +} + + +.modcp-nav { padding: 8px 0; } + +.modcp-nav-group { margin-bottom: 4px; } + +.\$modcp-nav-label { + display: block; + padding: 8px 16px 4px; + font-size: 0.7rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.8px; + color: var(--text2); +} + +.\$modcp-nav-item { + display: flex; + align-items: center; + gap: 9px; + padding: 8px 16px; + font-size: 0.88rem; + color: var(--text); + text-decoration: none; + border-left: 3px solid transparent; + transition: background-color 0.1s, border-color 0.1s; + + &:hover { + background-color: var(--bg3); + text-decoration: none; + } + .\$active { + background-color: var(--bg3); + border-left-color: var(--rhpz-orange); + color: var(--text); + font-weight: 600; + } +} + +.\$modcp-nav-badge { + margin-left: auto; + background-color: var(--rhpz-orange); + color: #111; + font-size: 0.65rem; + font-weight: 700; + min-width: 18px; + height: 18px; + border-radius: 9px; + display: flex; + align-items: center; + justify-content: center; + padding: 0 5px; +} + +.\$modcp-content { + flex: 1; + min-width: 0; + background-color: var(--bg2); + border: 1px solid var(--border); + padding: 25px; +} + +.\$modcp-page-title { + display: flex; + align-items: center; + gap: 10px; + font-size: 1.3rem; + font-weight: 600; + color: var(--text); + margin-bottom: 25px; + padding-bottom: 15px; + border-bottom: 1px solid var(--border); +} + +.\$modcp-count { + margin-left: auto; + font-size: 0.85rem; + font-weight: normal; + color: var(--text2); +} + +.\$modcp-section-title { + font-size: 0.78rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.7px; + color: var(--text2); + margin-bottom: 12px; +} + +.\$modcp-stats { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); + gap: 12px; + margin-bottom: 25px; +} + +.\$modcp-stat-card { + display: flex; + align-items: center; + gap: 12px; + padding: 16px; + background-color: var(--bg3); + border: 1px solid var(--border); + border-left: 3px solid var(--border); + text-decoration: none; + transition: border-color 0.15s, background-color 0.15s; + color: var(--text); + + &:hover { + background-color: var(--bg4); + text-decoration: none; + } +} + +.modcp-stat-card--orange { border-left-color: var(--rhpz-orange); } +.modcp-stat-card--danger { border-left-color: var(--error); } +.modcp-stat-card--muted { cursor: default; } + +.modcp-stat-icon { color: var(--text2); } +.modcp-stat-card--orange .modcp-stat-icon { color: var(--rhpz-orange); } +.modcp-stat-card--danger .modcp-stat-icon { color: var(--error); } + +.modcp-stat-info { display: flex; flex-direction: column; } +.modcp-stat-value { font-size: 1.4rem; font-weight: 700; color: var(--text); line-height: 1; } +.modcp-stat-label { font-size: 0.75rem; color: var(--text2); margin-top: 3px; } + +.\$modcp-quick-actions { + display: flex; + flex-wrap: wrap; + gap: 8px; + margin-bottom: 25px; +} + +.\$modcp-quick-btn { + display: inline-flex; + align-items: center; + gap: 7px; + padding: 8px 14px; + background-color: var(--bg3); + border: 1px solid var(--border); + color: var(--text); + font-size: 0.85rem; + text-decoration: none; + transition: background-color 0.1s, border-color 0.1s; + + &:hover { + background-color: var(--bg4); + border-color: var(--rhpz-orange); + text-decoration: none; + } +} + +.modcp-list { display: flex; flex-direction: column; } + +.\$modcp-list-item { + display: flex; + align-items: center; + gap: 15px; + padding: 12px 15px; + border-bottom: 1px solid var(--border); + transition: background-color 0.1s; +} + +.modcp-list-item:last-child { border-bottom: none; } +.modcp-list-item:hover { background-color: var(--bg3); } +.modcp-list-item--deleted { opacity: 0.8; } + +.\$modcp-list-item-cover { + width: 44px; + height: 44px; + flex-shrink: 0; + background-color: var(--bg); + border: 1px solid var(--border); + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + color: var(--border); +} + +.\$modcp-list-item-cover img { + width: 100%; + height: 100%; + object-fit: contain; +} + +.\$modcp-list-item-info { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; + gap: 4px; +} + +.\$modcp-list-item-title { + font-size: 0.92rem; + font-weight: 600; + color: var(--text); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.\$modcp-list-item-meta { + display: flex; + align-items: center; + gap: 6px; + font-size: 0.78rem; + color: var(--text2); +} + +.\$modcp-list-item-actions { + display: flex; + gap: 6px; + flex-shrink: 0; +} + +.\$modcp-list-item-edit { + display: flex; + gap: 6px; + flex: 1; + align-items: center; +} + +.\$modcp-list-item-edit .\$form-input { + flex: 1; + padding: 5px 10px; + font-size: 0.88rem; +} + +.\$modcp-list-see-all { + display: block; + text-align: center; + padding: 10px; + font-size: 0.85rem; + color: var(--rhpz-orange); + border-top: 1px solid var(--border); + text-decoration: none; +} + +.\$modcp-add-form { + background-color: var(--bg3); + border: 1px solid var(--border); + padding: 15px; + margin-bottom: 20px; +} + +.\$modcp-add-form-inner { + display: flex; + gap: 8px; + align-items: center; +} + +.modcp-add-form-inner .form-input { flex: 1; } + +.\$modcp-empty { + display: flex; + flex-direction: column; + align-items: center; + gap: 12px; + padding: 50px 20px; + color: var(--text2); + text-align: center; +} + +.\$mod-alert { + display: flex; + align-items: center; + gap: 8px; + padding: 10px 15px; + margin-bottom: 20px; + font-size: 0.88rem; + border: 1px solid; +} + +.\$mod-alert--success { + background-color: rgba(129, 199, 132, 0.08); + border-color: rgba(129, 199, 132, 0.3); + color: var(--success); +} + +.\$modcp-list-item-edit--game { + flex-wrap: wrap; + gap: 6px; +} + +.modcp-list-item-edit--game .form-input { min-width: 180px; flex: 2; } +.modcp-list-item-edit--game .form-select { flex: 1; min-width: 120px; } + +.\$log-filters { + margin-bottom: 16px; + background-color: var(--bg3); + border: 1px solid var(--border); +} + +.\$log-filters-main { + display: flex; + align-items: center; + gap: 8px; + padding: 12px 14px; + flex-wrap: wrap; +} + +.\$log-search-wrap { + flex: 1; + min-width: 200px; + position: relative; + display: flex; + align-items: center; +} + +.\$log-search-wrap i { + position: absolute; + left: 10px; + color: var(--text2); + pointer-events: none; +} + +.log-search-wrap .form-input { padding-left: 30px; } + +.log-select { min-width: 130px; } + +.\$log-filter-dot { + width: 6px; + height: 6px; + border-radius: 50%; + background-color: var(--rhpz-orange); + flex-shrink: 0; +} + +.\$log-filters-extra { + border-top: 1px solid var(--border); + padding: 12px 14px; +} + +.\$log-filters-extra-inner { + display: flex; + align-items: flex-end; + gap: 12px; + flex-wrap: wrap; +} + +.\$log-filter-field { + display: flex; + flex-direction: column; + gap: 4px; +} + +.\$log-filter-label { + font-size: 0.7rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.6px; + color: var(--text2); +} + +.log-transition-enter { transition: all .15s ease; } +.log-transition-leave { transition: all .1s ease; } + +.\$log-results-bar { + display: flex; + align-items: center; + justify-content: space-between; + font-size: 0.78rem; + color: var(--text2); + margin-bottom: 10px; + padding: 0 2px; +} + +.log-loading { opacity: 0.5; } + +.log-item { align-items: flex-start; padding: 11px 14px; } +.log-item--open { background-color: var(--bg3); } + +.\$log-event-dot { + width: 26px; + height: 26px; + flex-shrink: 0; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + margin-top: 2px; + border: 1px solid var(--border); + background-color: var(--bg3); + color: var(--text2); +} + +.\$log-event-dot--created { + background-color: rgba(129,199,132,.1); + border-color: rgba(129,199,132,.35); + color: var(--success); +} + +.\$log-event-dot--updated { + background-color: rgba(255,115,0,.1); + border-color: rgba(255,115,0,.35); + color: var(--rhpz-orange); +} + +.\$log-event-dot--deleted { + background-color: rgba(229,115,115,.1); + border-color: rgba(229,115,115,.35); + color: var(--error); +} + +.\$log-channel-badge { + display: inline-flex; + align-items: center; + font-size: 0.68rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.5px; + padding: 1px 6px; + background-color: rgba(255,255,255,.05); + border: 1px solid var(--border); + color: var(--text2); +} + +.log-id { color: var(--text2); font-size: 0.78rem; } +.log-sep { color: var(--border); } + +.\$log-item-right { + display: flex; + align-items: center; + gap: 8px; + flex-shrink: 0; + margin-left: auto; +} + +.\$log-timestamp { + font-size: 0.75rem; + color: var(--text2); + white-space: nowrap; +} + +.log-expand-btn { padding: 4px 7px; } + +.\$log-properties { + background-color: var(--bg); + border-bottom: 1px solid var(--border); + padding: 14px 14px 14px 54px; +} + +.\$log-diff-label { + font-size: 0.68rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.7px; + color: var(--text2); + margin-bottom: 8px; +} + +.\$log-diff { + width: 100%; + border-collapse: collapse; + font-size: 0.8rem; +} + +.\$log-diff th { + text-align: left; + padding: 5px 10px; + font-size: 0.68rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.5px; + color: var(--text2); + border-bottom: 1px solid var(--border); +} + +.\$log-diff td { + padding: 5px 10px; + border-bottom: 1px solid var(--border); + vertical-align: top; + max-width: 300px; + overflow-wrap: break-word; +} + +.log-diff tr:last-child td { border-bottom: none; } + +.\$log-diff-key { + font-size: 0.78rem; + font-weight: 600; + color: var(--text); + width: 160px; + white-space: nowrap; +} + +.log-diff-old-head { color: var(--error) !important; } +.log-diff-new-head { color: var(--success) !important; } + +.\$log-diff-old { + color: var(--error); + background-color: rgba(229,115,115,.05); +} + +.\$log-diff-new { + color: var(--success); + background-color: rgba(129,199,132,.05); +} + +.\$log-raw { + font-family: monospace; + font-size: 0.78rem; + color: var(--text2); + background-color: var(--bg2); + border: 1px solid var(--border); + padding: 10px 12px; + overflow-x: auto; + white-space: pre-wrap; + word-break: break-all; +} + +.\$log-pagination { + padding: 14px 0 4px; + border-top: 1px solid var(--border); +} + +@media (max-width: 1024px) { + .\$modcp-wrapper { + min-height: auto; + } + + .\$modcp-sidebar { + width: 200px; + margin-right: 10px; + } + + .\$modcp-content { + padding: 20px; + } + + .\$modcp-page-title { + font-size: 1.15rem; + } +} + +@media (max-width: 768px) { + .\$modcp-wrapper { + flex-direction: column; + gap: 0; + } + + .\$modcp-sidebar { + width: 100%; + flex-shrink: 1; + position: relative; + top: auto; + align-self: auto; + margin-right: 0; + margin-bottom: 15px; + border: 1px solid var(--border); + max-height: 300px; + overflow-y: auto; + } + + .\$modcp-sidebar-header { + padding: 12px 14px; + font-size: 0.8rem; + } + + .\$modcp-nav-label { + padding: 6px 14px 3px; + font-size: 0.65rem; + } + + .\$modcp-nav-item { + padding: 6px 14px; + font-size: 0.8rem; + gap: 8px; + } + + .\$modcp-content { + padding: 15px; + } + + .\$modcp-page-title { + font-size: 1rem; + margin-bottom: 12px; + } + + .\$modcp-page-actions { + flex-direction: row; + gap: 8px; + } + + .\$modcp-table { + font-size: 0.85rem; + } + + .\$modcp-table th, .\$modcp-table td { + padding: 8px; + } + + .\$modcp-table tbody tr { + height: auto; + } +} + +@media (max-width: 600px) { + .\$modcp-sidebar { + max-height: 200px; + } + + .\$modcp-sidebar-header { + padding: 10px 12px; + font-size: 0.75rem; + } + + .\$modcp-nav-item { + padding: 5px 12px; + font-size: 0.75rem; + } + + .\$modcp-content { + padding: 12px; + } + + .\$modcp-page-title { + font-size: 0.95rem; + } + + .\$modcp-table { + font-size: 0.8rem; + overflow-x: auto; + display: block; + } + + .\$modcp-table th, .\$modcp-table td { + padding: 6px; + } + + .\$log-diff-key { + width: auto; + white-space: normal; + } + + .\$log-raw { + font-size: 0.7rem; + padding: 8px 10px; + } +} + + /* File: resources/css/components/notifications.css */ -.\$notifications { +.\$notifications, .\$conversations { position: absolute; top: calc(100% + 8px); right: 0; @@ -1577,6 +3065,28 @@ ul { } } +@media (max-width: 768px) { + .\$notifications, .\$conversations { + position: fixed; + width: calc(100% - 30px); + max-width: 340px; + right: 15px; + top: auto; + bottom: 15px; + max-height: calc(100vh - 130px); + z-index: 3000 !important; + } +} + +@media (max-width: 600px) { + .\$notifications, .\$conversations { + width: calc(100% - 20px); + right: 10px; + bottom: 10px; + max-width: 100%; + } +} + @keyframes dropdown-enter { from { opacity: 0; transform: translateY(-6px); } from { opacity: 0; transform: translateY(-6px); } @@ -1695,6 +3205,1157 @@ ul { } +/* File: resources/css/components/queue.css */ +.\$queue-empty { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 15px; + padding: 80px 20px; + color: var(--text2); + font-size: 0.95rem; +} + +.\$queue-item { + background-color: var(--bg2); + border: 1px solid var(--border); + border-left-width: 4px; + margin-bottom: 20px; + padding: 20px; +} + +.\$queue-item--pending { + border-left-color: var(--rhpz-orange); +} +.\$queue-item--rejected { + position: relative; + overflow: hidden; + border-left-color: var(--error); + + &::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + height: 2px; + background-color: var(--error); + width: var(--reject-progress, 100%); + opacity: 0.5; + transition: width 0.3s; + } +} + +.\$queue-item-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 15px; + margin-bottom: 20px; +} + +.\$queue-item-title { + font-size: 1.15rem; + font-weight: 600; + color: var(--text); + margin-bottom: 6px; +} + +.\$queue-item-meta { + font-size: 0.85rem; + color: var(--text2); + display: flex; + align-items: center; + gap: 6px; + flex-wrap: wrap; +} + +.\$queue-item-actions-header { + display: flex; + gap: 8px; + flex-shrink: 0; +} + +.\$timeline-container { + padding: 15px 20px; + background-color: var(--bg); + border: 1px solid var(--border); + margin-bottom: 20px; +} + +.\$timeline { + display: flex; + justify-content: space-between; + position: relative; + + &::before { + content: ''; + position: absolute; + top: 15px; + left: 30px; + right: 30px; + height: 2px; + background-color: var(--border); + z-index: 0; + } + +} + +.\$timeline-step { + display: flex; + flex-direction: column; + align-items: center; + position: relative; + z-index: 1; + width: 100px; +} + +.\$timeline-dot { + width: 32px; + height: 32px; + border-radius: 50%; + background-color: var(--bg); + border: 2px solid var(--border); + display: flex; + align-items: center; + justify-content: center; + color: var(--text2); + margin-bottom: 10px; + transition: all 0.2s; +} + +.\$timeline-step--active .\$timeline-dot { + border-color: var(--rhpz-orange); + background-color: var(--rhpz-orange); + color: #111; +} + +.\$timeline-step--validated .\$timeline-dot { + border-color: var(--success); + background-color: var(--success); + color: #111; +} + +.\$timeline-step--rejected .\$timeline-dot { + border-color: var(--error); + background-color: var(--error); + color: #fff; +} + +.\$timeline-label { + font-size: 0.78rem; + text-align: center; + color: var(--text2); + font-weight: 500; +} + +.timeline-step--active .timeline-label { color: var(--rhpz-orange); font-weight: 600; } +.timeline-step--validated .timeline-label { color: var(--success); } +.timeline-step--rejected .timeline-label { color: var(--error); } + +.\$queue-reject-reason { + display: flex; + gap: 10px; + align-items: flex-start; + padding: 12px 15px; + background-color: rgba(229, 115, 115, 0.08); + border-left: 2px solid var(--error); + color: var(--text); + font-size: 0.88rem; + margin-bottom: 15px; + line-height: 1.5; +} + +.\$queue-mod-zone { + border-top: 1px solid var(--border); + padding-top: 15px; + margin-top: 5px; + display: flex; + flex-direction: column; + gap: 15px; +} + +.\$queue-mod-separator { + border-top: 1px solid var(--border); +} + +.\$queue-mod-actions { + display: flex; + gap: 8px; + justify-content: flex-end; + margin-top: 10px; +} + +.\$queue-reject-form { + margin-top: 12px; + padding: 15px; + background-color: var(--bg3); + border: 1px solid var(--border); +} + +@media (max-width: 768px) { + .\$queue-item { + padding: 15px; + margin-bottom: 15px; + } + + .\$queue-item-header { + flex-direction: column; + gap: 12px; + } + + .\$queue-item-title { + font-size: 1rem; + } + + .\$queue-item-meta { + font-size: 0.8rem; + } + + .\$queue-item-actions-header { + gap: 6px; + flex-wrap: wrap; + width: 100%; + } + + .\$timeline { + font-size: 0.85rem; + } + + .\$timeline-container { + padding: 12px 15px; + } + + .\$queue-mod-actions { + flex-direction: column; + gap: 6px; + } +} + +@media (max-width: 600px) { + .\$queue-empty { + padding: 60px 15px; + font-size: 0.9rem; + } + + .\$queue-item { + padding: 12px; + border-left-width: 3px; + } + + .\$queue-item-title { + font-size: 0.95rem; + } + + .\$queue-item-meta { + font-size: 0.75rem; + } + + .\$queue-item-actions-header { + width: 100%; + } + + .\$timeline { + font-size: 0.8rem; + } + + .\$timeline-container { + padding: 10px 12px; + } + + .\$queue-mod-actions { + flex-direction: column; + } + + .\$queue-mod-actions .\$btn { + width: 100%; + } +} + + + +/* File: resources/css/components/settings.css */ +.\$settings-dropdown { + position: absolute; + top: calc(100% + 8px); + right: 0; + width: 240px; + background-color: var(--bg2); + border: 1px solid var(--border); + box-shadow: 0 8px 24px rgba(0,0,0,0.5); + z-index: 2000; +} + +@media (max-width: 768px) { + .\$settings-dropdown { + position: fixed; + width: calc(100% - 30px); + max-width: 240px; + right: 15px; + top: auto; + bottom: 15px; + max-height: calc(100vh - 130px); + overflow-y: auto; + z-index: 3000 !important; + } +} + +@media (max-width: 600px) { + .\$settings-dropdown { + width: calc(100% - 20px); + right: 10px; + bottom: 10px; + max-width: 100%; + } +} + +.\$settings-header { + padding: 12px 16px; + border-bottom: 1px solid var(--border); + background-color: var(--bg3); + font-weight: 600; + font-size: 0.9rem; + color: var(--text); +} + +.\$settings-section { + padding: 12px 16px; +} + +.\$settings-section-title { + display: flex; + align-items: center; + gap: 7px; + font-size: 0.78rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.7px; + color: var(--text2); + margin-bottom: 10px; +} + +.\$settings-separator { + border-top: 1px solid var(--border); +} + +.\$settings-themes { + display: flex; + gap: 8px; + flex-wrap: wrap; +} + +.\$settings-theme-btn { + width: 28px; + height: 28px; + border-radius: 50%; + border: 2px solid transparent; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--text); + transition: transform 0.15s, border-color 0.15s; + padding: 0; + + &:hover { + transform: scale(1.15); + } + + .\$active { + border-color: var(--text); + transform: scale(1.1); + } +} + +.\$settings-theme-toggle { + width: 100%; + background-color: var(--bg3); + border: 1px solid var(--border); + color: var(--text); + padding: 8px 12px; + cursor: pointer; + font-family: var(--typography); + font-size: 0.88rem; + transition: background-color 0.1s; + text-align: left; + + &:hover { + background-color: var(--bg4); + } +} + +.\$settings-theme-toggle-inner { + display: flex; + align-items: center; + gap: 8px; +} + +.\$settings-theme-toggle-badge { + margin-left: auto; + background-color: var(--rhpz-orange); + color: #111; + font-size: 0.65rem; + font-weight: 700; + padding: 2px 6px; +} + +.\$settings-perpage { + display: flex; + gap: 6px; +} + +.\$settings-perpage-btn { + flex: 1; + padding: 6px 4px; + background-color: var(--bg3); + border: 1px solid var(--border); + color: var(--text2); + font-size: 0.85rem; + cursor: pointer; + font-family: var(--typography); + transition: all 0.1s; + + &:hover { + background-color: var(--bg4); + color: var(--text); + } + + .\$active { + background-color: var(--rhpz-orange); + border-color: var(--rhpz-orange); + color: var(--text3); + font-weight: 600; + } +} + +.\$settings-link { + display: flex; + align-items: center; + gap: 9px; + padding: 8px 10px; + color: var(--text); + text-decoration: none; + font-size: 0.88rem; + transition: background-color 0.1s; + border: 1px solid transparent; + + &:hover { + background-color: var(--bg3); + border-color: var(--border); + text-decoration: none; + } +} + +.\$settings-link--danger { + color: var(--error); + + &:hover { + background-color: rgba(229, 115, 115, 0.08); + border-color: rgba(229, 115, 115, 0.3); + } +} + + +/* File: resources/css/components/tools.css */ +.\$patcher-container { + background-color: var(--bg2); + border: 1px solid var(--border); + padding: 25px; + margin-bottom: 20px; +} + +.\$patcher-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 20px; +} + +@media (max-width: 768px) { + .\$patcher-grid { + grid-template-columns: 1fr; + } + + .\$patcher-container { + padding: 20px; + } + + .\$patcher-dropzone { + padding: 40px 15px; + gap: 12px; + } + + .\$embed-patch-box { + padding: 20px; + height: auto; + } + + .\$embed-patch-box-icon { + gap: 12px; + } + + .\$embed-patch-box-icon-block { + width: 40px; + height: 40px; + } +} + +@media (max-width: 600px) { + .\$patcher-container { + padding: 15px; + margin-bottom: 15px; + } + + .\$patcher-grid { + gap: 15px; + } + + .\$patcher-dropzone { + padding: 30px 12px; + gap: 10px; + font-size: 0.9rem; + } + + .\$patcher-status-box { + margin-top: 15px; + padding: 12px; + font-size: 0.9rem; + } + + .\$embed-patch-box { + padding: 15px; + gap: 12px; + } + + .\$btn:disabled { + padding: 6px 8px; + font-size: 0.8rem; + } +} + +.\$patcher-dropzone { + border: 2px dashed var(--border); + background-color: var(--bg3); + padding: 55px 20px; + text-align: center; + cursor: pointer; + transition: all 0.2s ease; + display: flex; + flex-direction: column; + align-items: center; + gap: 15px; +} + +.\$patcher-dropzone:hover, .\$patcher-dropzone.dragover { + border-color: var(--rhpz-orange); + background-color: var(--bg4); +} + +.\$patcher-dropzone.has-file { + border-color: var(--success); + background-color: rgba(129, 199, 132, 0.02); +} + +.\$patcher-status-box { + margin-top: 20px; + padding: 15px; + border: 1px solid var(--border); + background-color: var(--bg3); + font-size: 0.95rem; + line-height: 1.4; +} + +.\$btn:disabled { + opacity: 0.4; + cursor: not-allowed; + background-color: var(--bg3); + border-color: var(--border); + color: var(--text2); +} + +.\$embed-patch-box { + border: 1px solid var(--border); + background-color: var(--bg3); + padding: 25px; + height: 85%; + display: flex; + flex-direction: column; + justify-content: center; + gap: 15px; +} +.\$embed-patch-box-icon { + display: flex; + align-items: center; + gap: 15px; +} +.\$embed-patch-box-icon-block { + width: 48px; + height: 48px; + background-color: var(--bg2); + border: 1px solid var(--border); + display: flex; + align-items: center; + justify-content: center; +} + + +/* File: resources/css/layout/activity.css */ + +.\$activity-hero-excerpt { + font-size: 0.9rem; + color: rgba(255,255,255,0.75); + margin-bottom: 12px; + line-height: 1.5; + max-width: 600px; +} + +.\$activity-tl-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 20px; + padding-bottom: 15px; + border-bottom: 1px solid var(--border); + gap: 15px; + flex-wrap: wrap; +} + +.\$activity-tl-title { + display: flex; + align-items: center; + gap: 10px; + font-size: 1.15rem; + font-weight: 600; + color: var(--text); + margin: 0; +} + +.\$activity-tl-filters { + display: flex; + gap: 5px; + flex-wrap: wrap; +} + +.\$activity-tl-filter { + display: inline-flex; + align-items: center; + gap: 5px; + padding: 5px 12px; + background: none; + border: 1px solid var(--border); + color: var(--text2); + font-size: 0.8rem; + cursor: pointer; + font-family: var(--typography); + transition: all 0.1s; +} + +.activity-tl-filter:hover { background-color: var(--bg3); color: var(--text); } +.\$activity-tl-filter.active { + background-color: var(--bg3); + border-color: var(--rhpz-orange); + color: var(--rhpz-orange); +} + +.\$activity-day-sep { + display: flex; + align-items: center; + gap: 10px; + padding-left: 54px; + margin: 20px 0 12px; +} + +.\$activity-day-label { + font-size: 0.72rem; + font-weight: 600; + color: var(--text2); + text-transform: uppercase; + letter-spacing: 0.8px; + white-space: nowrap; +} + +.\$activity-day-line { + flex: 1; + height: 1px; + background-color: var(--border); +} + +.\$activity-tl-item { + display: flex; + gap: 0; + margin-bottom: 2px; +} + +.\$activity-tl-left { + width: 54px; + flex-shrink: 0; + display: flex; + flex-direction: column; + align-items: center; + padding-top: 12px; +} + +.\$activity-tl-dot { + width: 32px; + height: 32px; + border-radius: 50%; + border: 1px solid var(--border); + background-color: var(--bg2); + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + z-index: 1; +} + +.\$activity-tl-dot--entry { + background-color: rgba(255,115,0,0.1); + border-color: rgba(255,115,0,0.4); + color: var(--rhpz-orange); +} + +.\$activity-tl-dot--news, .\$activity-tl-dot--review { + background-color: rgba(129,199,132,0.1); + border-color: rgba(129,199,132,0.4); + color: var(--success); +} + +.\$activity-tl-dot--message, .\$activity-tl-dot--thread, .\$activity-tl-dot--club { + background-color: rgba(25,118,210,0.1); + border-color: rgba(25,118,210,0.4); + color: var(--info); +} + +.\$activity-tl-line { + width: 1px; + flex: 1; + background-color: var(--border); + margin-top: 4px; + min-height: 16px; +} + +.activity-tl-item:last-of-type .activity-tl-line { display: none; } + +.\$activity-tl-card { + flex: 1; + display: flex; + align-items: center; + gap: 12px; + background-color: var(--bg2); + border: 1px solid var(--border); + padding: 10px 14px; + margin-bottom: 8px; + text-decoration: none; + transition: border-color 0.15s, background-color 0.1s; + min-width: 0; +} + +.\$activity-tl-card:hover { + border-color: var(--rhpz-orange); + background-color: var(--bg3); + text-decoration: none; +} + +.\$activity-tl-thumb { + width: 52px; + height: 52px; + flex-shrink: 0; + overflow: hidden; + display: flex; + align-items: center; + justify-content: center; + background-color: var(--bg3); + border: 1px solid var(--border); +} + +.\$activity-tl-thumb img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.\$activity-tl-body { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; + gap: 4px; +} + +.\$activity-tl-badge { + display: inline-flex; + align-items: center; + gap: 4px; + font-size: 0.68rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.6px; + padding: 2px 7px; + width: fit-content; +} + +.\$activity-tl-badge--entry { + background-color: rgba(255,115,0,0.1); + color: var(--rhpz-orange); + border: 1px solid rgba(255,115,0,0.25); +} + +.\$activity-tl-badge--news, .\$activity-tl-badge--review { + background-color: rgba(129,199,132,0.1); + color: var(--success); + border: 1px solid rgba(129,199,132,0.25); +} + +.\$activity-tl-badge--message, .\$activity-tl-badge--thread, .\$activity-tl-dot--club { + background-color: rgba(25,118,210,0.1); + color: var(--info); + border: 1px solid rgba(25,118,210,0.25); +} + +.\$activity-tl-card-title { + font-size: 0.92rem; + font-weight: 600; + color: var(--text); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + line-height: 1.3; +} + +.\$activity-tl-card-description { + font-size: 0.8rem; + color: var(--text2); + white-space: nowrap; + text-overflow: ellipsis; + line-height: 1.3; +} + +.\$activity-tl-meta { + display: flex; + align-items: center; + gap: 10px; + font-size: 0.75rem; + color: var(--text2); + flex-wrap: wrap; +} + +.\$activity-tl-meta span { + display: flex; + align-items: center; + gap: 3px; +} + +.\$activity-tl-time { + font-size: 0.72rem; + color: var(--text2); + white-space: nowrap; + flex-shrink: 0; + align-self: center; +} + +.\$activity-tl-empty { + display: flex; + flex-direction: column; + align-items: center; + gap: 12px; + padding: 60px; + color: var(--text2); + text-align: center; + padding-left: 54px; +} + +@media (max-width: 600px) { + .activity-tl-header { flex-direction: column; align-items: flex-start; } + .activity-tl-thumb { display: none; } + .activity-day-sep { padding-left: 44px; } + .activity-tl-left { width: 44px; } + + .\$activity-tl-date { + font-size: 0.75rem; + } + + .\$activity-tl-content-title { + font-size: 0.9rem; + } +} + +@media (max-width: 768px) { + .\$activity-timeline { + padding-left: 50px; + } + + .\$activity-tl-left { + width: 40px; + } + + .\$activity-tl-header { + gap: 10px; + } + + .\$activity-tl-date { + font-size: 0.8rem; + } +} + +.\$home-section { + margin-bottom: 30px; +} + +.\$home-section-header { + display: flex; + align-items: center; + justify-content: space-between; + padding-bottom: 12px; + border-bottom: 1px solid var(--border); + margin-bottom: 14px; +} + +.\$home-section-title { + display: flex; + align-items: center; + gap: 8px; + font-size: 1.05rem; + font-weight: 600; + color: var(--text); + margin: 0; +} + +.\$home-section-more { + display: inline-flex; + align-items: center; + gap: 4px; + font-size: 0.75rem; + color: var(--text2); + border: 1px solid var(--border); + padding: 4px 10px; + text-decoration: none; + transition: color 0.1s, border-color 0.1s; +} + +.\$home-section-more:hover { + color: var(--rhpz-orange); + border-color: var(--rhpz-orange); +} + +.\$news-strip { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; +} + +.\$news-strip-card { + display: flex; + flex-direction: column; + background-color: var(--bg2); + border: 1px solid var(--border); + text-decoration: none; + overflow: hidden; + transition: border-color 0.15s; +} + +.news-strip-card:hover { border-color: var(--rhpz-orange); text-decoration: none; } + +.\$news-strip-cover { + height: 110px; + background-color: var(--bg3); + background-size: cover; + background-position: center; + position: relative; + flex-shrink: 0; +} + +.\$news-strip-date { + position: absolute; + bottom: 6px; + left: 8px; + font-size: 0.68rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.5px; + color: rgba(255,255,255,0.8); + background: rgba(0,0,0,0.55); + padding: 2px 6px; + border: 1px solid rgba(255,255,255,0.07); +} + +.\$news-strip-body { + padding: 10px 12px; + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; +} + +.\$news-strip-badge { + font-size: 0.65rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.5px; + color: var(--success); + background: rgba(129,199,132,0.1); + border: 1px solid rgba(129,199,132,0.25); + padding: 1px 6px; + width: fit-content; +} + +.\$news-strip-title { + font-size: 0.85rem; + font-weight: 600; + color: var(--text); + line-height: 1.35; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + margin: 0; +} + +.\$news-strip-meta { + font-size: 0.72rem; + color: var(--text2); + margin-top: auto; +} + +.\$featured-entries-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px; +} + +.\$featured-entry-card { + display: flex; + flex-direction: column; + background-color: var(--bg2); + border: 1px solid var(--border); + text-decoration: none; + overflow: hidden; + transition: border-color 0.15s; +} + +.featured-entry-card:hover { border-color: var(--rhpz-orange); text-decoration: none; } + +.\$featured-entry-cover { + height: 80px; + background-color: var(--bg3); + position: relative; + flex-shrink: 0; + overflow: hidden; +} + +.\$featured-entry-cover img { + width: 100%; + height: 100%; + object-fit: cover; + opacity: 0.85; +} + +.\$featured-entry-star { + position: absolute; + top: 6px; + right: 6px; + font-size: 0.65rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.5px; + background: rgba(255,115,0,0.9); + color: #111; + padding: 2px 6px; + border: 1px solid rgba(255,115,0,0.5); + display: flex; + align-items: center; + gap: 3px; +} + +.\$featured-entry-body { + padding: 10px 12px; + display: flex; + flex-direction: column; + gap: 5px; + flex: 1; +} + +.\$featured-entry-platform { + font-size: 0.65rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.5px; + color: var(--rhpz-orange); + background: rgba(255,115,0,0.1); + border: 1px solid rgba(255,115,0,0.25); + padding: 1px 6px; + width: fit-content; +} + +.\$featured-entry-title { + font-size: 0.88rem; + font-weight: 600; + color: var(--text); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.\$featured-entry-meta { + font-size: 0.72rem; + color: var(--text2); + margin-top: auto; +} + +@media (max-width: 900px) { + .news-strip { grid-template-columns: repeat(3, 1fr); } + .featured-entries-grid { grid-template-columns: repeat(2, 1fr); } +} + +@media (max-width: 768px) { + .\$news-strip { + grid-template-columns: repeat(2, 1fr); + gap: 15px; + } + + .\$featured-entries-grid { + grid-template-columns: 1fr; + gap: 15px; + } + + .\$home-section { + margin-bottom: 20px; + } + + .\$news-strip-cover { + height: 100px; + } + + .\$featured-entry-title { + font-size: 0.95rem; + } +} + +@media (max-width: 600px) { + .news-strip { grid-template-columns: 1fr; } + .featured-entries-grid { grid-template-columns: 1fr; } + .news-strip-cover { height: 80px; } + + .\$news-strip-item { + padding: 10px; + } + + .\$news-strip-title { + font-size: 0.85rem; + } + + .\$featured-entry-title { + font-size: 0.9rem; + } + + .\$featured-entry-meta { + font-size: 0.7rem; + } + + .\$home-section-title { + font-size: 0.95rem; + } +} + + /* File: resources/css/layout/content.css */ #main-wrapper { flex-grow: 1; @@ -1721,24 +4382,6 @@ ul { cursor: pointer; } - .\$search-bar { - display: flex; - align-items: center; - background-color: var(--bg); - border: 1px solid var(--border); - border-radius: 2px; - padding: 5px 10px; - width: 300px; - input { - background: none; - border: none; - color: var(--text); - outline: none; - margin-left: 8px; - width: 100%; - } - } - .\$topbar-actions { display: flex; gap: 8px; @@ -1751,6 +4394,173 @@ ul { } +.\$search-bar { + display: flex; + align-items: center; + background-color: var(--bg); + border: 1px solid var(--border); + border-radius: 2px; + padding: 5px 10px; + width: 300px; + input { + background: none; + border: none; + color: var(--text); + outline: none; + margin-left: 8px; + width: 100%; + } +} + +.\$topbar-more-container { + display: none; +} + +.\$topbar-more-menu { + position: fixed; + top: 60px; + right: 0; + background-color: var(--bg2); + border: 1px solid var(--border); + border-top: none; + border-right: none; + z-index: 2000; + min-width: 180px; + max-height: calc(100vh - 60px); + overflow-y: auto; +} + +.\$topbar-more-item { + display: flex; + align-items: center; + gap: 10px; + padding: 10px 12px; + color: var(--text2); + text-decoration: none; + font-size: 0.9rem; + border-bottom: 1px solid var(--border); + transition: all 0.15s; + + &:last-child { + border-bottom: none; + } + + &:hover { + background-color: var(--bg3); + color: var(--text); + } + + i { + width: 16px; + height: 16px; + flex-shrink: 0; + } + + span { + flex-grow: 1; + text-align: left; + } +} + +@media (min-width: 769px) { + .\$topbar-more-container { + display: none !important; + } + + .topbar-admin-btn, + .\$topbar-mod-btn { + display: flex !important; + } +} +@media (max-width: 768px) { + .\$topbar-more-container { + display: block; + } + + .topbar-admin-btn, + .\$topbar-mod-btn { + display: none !important; + } + + #topbar { + padding: 0 10px; + } + + .\$search-bar { + display: none !important; + } + + .\$topbar-actions { + gap: 8px !important; + } + + .\$topbar-actions .\$btn { + padding: 8px 6px; + font-size: 0.85rem; + display: flex; + align-items: center; + justify-content: center; + } + + .\$topbar-actions i { + width: 16px !important; + height: 16px !important; + } + + .\$topbar-badge { + font-size: 0.65rem; + width: 18px; + height: 18px; + } +} + +@media (max-width: 600px) { + #topbar { + padding: 0 8px; + } + + .\$topbar-actions { + gap: 8px !important; + } + + .\$topbar-actions .\$btn { + padding: 6px 4px; + font-size: 0.75rem; + display: flex; + align-items: center; + justify-content: center; + } + + .\$topbar-actions i { + width: 14px !important; + height: 14px !important; + } + + .\$topbar-badge { + font-size: 0.6rem; + width: 16px; + height: 16px; + } +} + +.\$search-scope-select { + background-color: var(--bg2); + border: none; + border-right: 1px solid var(--border); + color: var(--text2); + font-size: 0.8rem; + padding: 8px 10px; + cursor: pointer; + outline: none; + appearance: none; + transition: color 0.15s; +} + +.search-scope-select:hover, +.\$search-scope-select:focus { + color: var(--text); +} + #content { flex-grow: 1; padding: 30px; @@ -1761,7 +4571,7 @@ ul { /* File: resources/css/layout/entry.css */ -#entry-container { +#entry-container, #comments-section, #reviews-section { background-color: var(--bg2); border: 1px solid var(--border); display: flex; @@ -1777,8 +4587,8 @@ ul { gap: 30px; .\$entry-cover { - width: 200px; - height: 280px; + width: 220px; + height: 220px; background-color: var(--bg); border: 1px solid var(--border); display: flex; @@ -1792,7 +4602,8 @@ ul { img { width: 100%; height: 100%; - object-fit: cover; + object-fit: contain; + padding: 8px; } } @@ -1869,6 +4680,7 @@ ul { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 15px; + margin-bottom: 30px; } .\$entry-gallery-item { @@ -1879,10 +4691,81 @@ ul { align-items: center; justify-content: center; cursor: pointer; + overflow: hidden; transition: border-color 0.2s; &:hover { border-color: var(--rhpz-orange); + + img { + transform: scale(1.05); + } + } + + img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.3s ease; + } + } +} + +.\$gallery-modal { + position: fixed; + z-index: 3000; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.85); + display: flex; + align-items: center; + justify-content: center; + + .\$gallery-modal-content { + max-width: 90%; + max-height: 90%; + position: relative; + + img { + max-width: 100%; + max-height: 90vh; + object-fit: contain; + border: 2px solid var(--border); + background-color: var(--bg); + box-shadow: 0 10px 25px rgba(0,0,0,0.5); + } + } + + .\$gallery-modal-close { + position: absolute; + top: 20px; + right: 30px; + color: #fff; + font-size: 40px; + font-weight: bold; + cursor: pointer; + user-select: none; + + &:hover { + color: var(--rhpz-orange); + } + } + + .\$gallery-modal-video { + width: 90%; + max-width: 960px; + aspect-ratio: 16/9; + box-shadow: 0 10px 30px rgba(0,0,0,0.6); + border: 1px solid var(--border); + background-color: #000; + + iframe { + width: 100%; + height: 100%; + border: none; + display: block; } } } @@ -1892,6 +4775,395 @@ ul { color: var( --text2 ); } +.\$comment-block { + display: flex; + gap: 16px; + padding: 20px 0; + border-bottom: 1px solid var(--border); + + &:last-child { + border-bottom: none; + } + + .\$comment-avatar { + flex-shrink: 0; + width: 48px; + height: 48px; + border-radius: 50%; + overflow: hidden; + background-color: var(--bg4); + border: 1px solid var(--border); + + img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; + } + } + + .\$comment-content { + flex: 1; + min-width: 0; + + .\$comment-meta { + font-size: 0.88rem; + color: var(--text2); + margin-bottom: 6px; + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 8px; + + .\$comment-author { + font-weight: 600; + color: var(--text); + text-decoration: none; + transition: color 0.2s; + + &:hover { + color: var(--rhpz-orange); + } + } + + .\$comment-date { + color: var(--text2); + } + + .\$comment-separator { + color: var(--border); + user-select: none; + } + } + + .\$comment-body { + font-size: 0.95rem; + color: var(--text); + line-height: 1.5; + word-wrap: break-word; + } + } +} + +.\$comments-empty { + text-align: center; + padding: 40px 20px; + color: var(--text2); + font-style: italic; + background-color: var(--bg); + border: 1px dashed var(--border); +} + +.\$entry-video-section { + margin-bottom: 30px; +} + +.\$video-thumbnail-wrapper { + position: relative; + width: 100%; + max-width: 500px; + aspect-ratio: 16/9; + background-color: #000; + border: 1px solid var(--border); + cursor: pointer; + overflow: hidden; + border-radius: 4px; + + img { + width: 100%; + height: 100%; + object-fit: cover; + opacity: 0.8; + transition: transform 0.3s ease, opacity 0.3s ease; + } + + .\$play-trigger { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 65px; + height: 65px; + background-color: rgba(0, 0, 0, 0.7); + border: 2px solid #fff; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + color: #fff; + font-size: 1.5rem; + transition: background-color 0.2s, transform 0.2s ease-out; + + i { margin-left: 4px; } + } + + &:hover { + img { + transform: scale(1.03); + opacity: 1; + } + .\$play-trigger { + background-color: var(--rhpz-orange); + border-color: var(--rhpz-orange); + transform: translate(-50%, -50%) scale(1.1); + box-shadow: 0 0 15px rgba(255, 115, 0, 0.5); + } + } +} + +.\$entry-submission-byline { + font-size: 0.85rem; + color: var(--text2); + margin-bottom: 20px; + display: flex; + align-items: center; + gap: 15px; + + i { + vertical-align: middle; + margin-right: 4px; + } +} + +.\$markdown-body { + p { + margin-bottom: 10px; + &:last-child { margin-bottom: 0; } + } + + a { + color: var(--rhpz-orange); + &:hover { + color: var(--rhpz-orange-hover); + text-decoration: underline; + } + } + + blockquote, .\$bbCodeBlock-blockquote { + background-color: var(--bg); + border-left: 3px solid var(--info); + padding: 12px 16px; + margin: 12px 0; + font-style: italic; + color: var(--text2); + } + + code { + font-family: monospace; + background-color: var(--bg3); + border: 1px solid var(--border); + padding: 2px 5px; + font-size: 0.9rem; + } +} + +.markdown-body h1, .markdown-body h2, .markdown-body h3, +.\$markdown-body h4, .\$markdown-body h5, .\$markdown-body h6 { + color: var(--text); + font-weight: 600; + margin: 16px 0 8px; + line-height: 1.3; +} + +.markdown-body h1 { font-size: 1.4rem; } +.markdown-body h2 { font-size: 1.2rem; } +.markdown-body h3 { font-size: 1.05rem; } + +.markdown-body strong { color: var(--text); font-weight: 700; } +.markdown-body em { color: var(--text2); } + +.\$markdown-body ul, .\$markdown-body ol { + margin: 0 0 12px 20px; + color: var(--text); +} + +.markdown-body li { margin-bottom: 4px; line-height: 1.5; } + +.\$markdown-body hr { + border: none; + border-top: 1px solid var(--border); + margin: 16px 0; +} + +.\$markdown-body table { + width: 100%; + border-collapse: collapse; + margin: 12px 0; + font-size: 0.9rem; +} + +.\$markdown-body th, .\$markdown-body td { + border: 1px solid var(--border); + padding: 6px 10px; + text-align: left; +} + +.\$markdown-body th { + background-color: var(--bg3); + font-weight: 600; + color: var(--text); +} + +.\$markdown-body del { + color: var(--text2); + text-decoration: line-through; +} + +.\$markdown-body img { + max-width: 100%; + border: 1px solid var(--border); + margin: 8px 0; +} + +.\$hack-actions { + display: flex; + gap: 10px; +} + +@media (max-width: 768px) { + .\$entry-header { + flex-direction: column; + padding: 20px; + gap: 20px; + + .\$entry-cover { + width: 100%; + height: 280px; + max-width: 300px; + margin: 0 auto; + } + + .\$entry-info { + .\$entry-title { + font-size: 1.6rem; + } + + .\$entry-authors { + font-size: 0.95rem; + } + + .\$entry-meta-grid { + grid-template-columns: 1fr; + gap: 12px; + margin-bottom: 20px; + } + + .\$entry-actions { + flex-direction: column; + gap: 10px; + + .\$btn { + width: 100%; + } + } + } + } + + .\$entry-content { + padding: 20px; + + .\$entry-section-title { + font-size: 1.1rem; + } + + .\$entry-gallery { + grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); + gap: 12px; + margin-bottom: 20px; + } + } + + .\$comment-block { + gap: 12px; + padding: 15px 0; + + .\$comment-avatar { + width: 40px; + height: 40px; + } + + .\$comment-content { + .\$comment-body { + font-size: 0.9rem; + } + } + } + + .\$video-thumbnail-wrapper { + max-width: 100%; + } + + .\$gallery-modal-close { + top: 10px; + right: 15px; + font-size: 30px; + } + + .\$hack-actions { + flex-direction: column; + } +} + +@media (max-width: 600px) { + .\$entry-header { + padding: 15px; + gap: 15px; + + .\$entry-cover { + height: 240px; + } + + .\$entry-info { + .\$entry-title { + font-size: 1.3rem; + margin-bottom: 8px; + } + + .\$entry-authors { + font-size: 0.85rem; + margin-bottom: 15px; + } + + .\$entry-actions { + gap: 8px; + + .\$btn { + padding: 8px 12px; + font-size: 0.85rem; + } + } + } + } + + .\$entry-content { + padding: 15px; + + .\$entry-gallery { + grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); + gap: 8px; + margin-bottom: 15px; + } + } + + .\$comment-block { + padding: 10px 0; + + .\$comment-avatar { + width: 36px; + height: 36px; + } + } + + .markdown-body h1 { font-size: 1.15rem; } + .markdown-body h2 { font-size: 1rem; } + .markdown-body h3 { font-size: 0.95rem; } + + .\$hack-actions { + flex-direction: column; + } +} + + /* File: resources/css/layout/menu.css */ #menu { @@ -1905,12 +5177,18 @@ ul { z-index: 100; .\$menu-header { - padding: 20px; + padding: 10px; display: flex; align-items: center; gap: 12px; border-bottom: 1px solid var(--border); + img { + width: 100%; + height: 100%; + object-fit: contain; + } + .\$menu-logo { width: 32px; height: 32px; @@ -2005,6 +5283,14 @@ ul { display: flex; align-items: center; justify-content: center; + overflow: hidden; + + img { + width: 100%; + height: 100%; + object-fit: cover; + border-radius: 50%; + } } .\$menu-user-info { display: flex; @@ -2074,6 +5360,1344 @@ ul { } } +#news-container { + background-color: var(--bg2); + border: 1px solid var(--border); + display: flex; + flex-direction: column; +} + +.\$news-header { + width: 100%; + height: 300px; + background-size: cover; + background-position: center; + display: flex; + align-items: flex-end; + padding: 40px 30px; + border-bottom: 1px solid var(--border); + position: relative; +} + +.\$news-header-content { + position: relative; + z-index: 2; +} + +.\$news-header .\$news-title { + font-size: 2.5rem; + font-weight: 600; + color: var(--text); + margin-bottom: 12px; + text-shadow: 0 2px 4px rgba(0,0,0,0.6); + word-wrap: break-word; + overflow-wrap: break-word; + word-break: break-word; +} + +@media (max-width: 768px) { + .\$news-header .\$news-title { + font-size: 1.8rem; + } +} + +@media (max-width: 600px) { + .\$news-header .\$news-title { + font-size: 1.4rem; + } +} + +.\$news-header .\$news-meta { + color: var(--text2); + display: flex; + gap: 20px; + font-size: 0.9rem; + align-items: center; +} + +.\$news-header .\$meta-item { + display: flex; + align-items: center; + gap: 6px; + background-color: rgba(0, 0, 0, 0.4); + padding: 4px 10px; + border-radius: 2px; + border: 1px solid rgba(255,255,255,0.05); +} + +.\$news-layout { + display: flex; + flex-direction: row; + gap: 30px; + padding: 30px; +} + +@media (max-width: 992px) { + .\$news-layout { + flex-direction: column; + } +} + +.\$news-main-content { + flex-grow: 1; + flex-basis: 0; + min-width: 0; +} + +.\$news-body-text { + line-height: 1.75; + color: var(--text); + font-size: 1.05rem; + margin-bottom: 15px; +} + +.\$news-body-text p { + margin-bottom: 20px; +} + +.\$news-sidebar { + width: 320px; + flex-shrink: 0; + display: flex; + flex-direction: column; + gap: 25px; +} + +@media (max-width: 992px) { + .\$news-sidebar { + width: 100%; + } +} + +.\$sidebar-block { + background-color: var(--bg); + border: 1px solid var(--border); + padding: 20px; + border-radius: 4px; +} + +.\$sidebar-title { + font-size: 1rem; + text-transform: uppercase; + letter-spacing: 0.5px; + color: var(--text); + margin-bottom: 15px; + display: flex; + align-items: center; + gap: 8px; + border-bottom: 1px solid var(--border); + padding-bottom: 8px; +} + +.\$btn-sidebar { + display: flex; + align-items: center; + justify-content: center; + gap: 8px; + width: 100%; + padding: 10px 15px; + font-size: 0.95rem; + font-weight: 500; + text-decoration: none; + cursor: pointer; + border-radius: 2px; + transition: background-color 0.2s ease, border-color 0.2s ease; + text-align: center; +} + +.\$btn-orange { + background-color: var(--rhpz-orange); + color: #fff; + border: 1px solid transparent; +} + +.\$btn-orange:hover { + background-color: var(--rhpz-orange-hover); +} + +.\$related-card { + display: flex; + flex-direction: column; + gap: 12px; +} + +.\$related-card-cover { + width: 100%; + height: 150px; + background-color: var(--bg2); + border: 1px solid var(--border); + overflow: hidden; + border-radius: 2px; +} + +.\$related-card-cover img { + width: 100%; + height: 100%; + object-fit: contain; + padding: 5px; +} + +.\$related-card-info h4 { + font-size: 1.1rem; + color: var(--text); + margin-bottom: 10px; + font-weight: 500; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.\$news-sidebar .\$video-thumbnail-wrapper { + position: relative; + width: 100%; + aspect-ratio: 16/9; + background-color: #000; + border: 1px solid var(--border); + cursor: pointer; + overflow: hidden; + border-radius: 2px; +} + +.\$news-sidebar .\$video-thumbnail-wrapper img { + width: 100%; + height: 100%; + object-fit: cover; + opacity: 0.7; + transition: transform 0.3s ease, opacity 0.3s ease; +} + +.\$news-sidebar .\$video-thumbnail-wrapper:hover img { + transform: scale(1.03); + opacity: 0.9; +} + +.\$news-sidebar .\$play-trigger { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 50px; + height: 50px; + background-color: rgba(0, 0, 0, 0.75); + border: 2px solid #fff; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + color: #fff; + transition: background-color 0.2s, transform 0.2s ease-out; +} + +.\$news-sidebar .\$video-thumbnail-wrapper:hover .\$play-trigger { + background-color: var(--rhpz-orange); + transform: translate(-50%, -50%) scale(1.1); +} + +.\$news-actions { + display: flex; + align-items: center; + gap: 8px; + margin-top: 15px; + flex-wrap: wrap; +} + +.\$news-header .\$news-actions .\$btn { + background-color: rgba(0, 0, 0, 0.5); + border-color: rgba(255, 255, 255, 0.15); + backdrop-filter: blur(4px); + color: var(--text); + transition: background-color 0.15s, border-color 0.15s; +} + +.\$news-header .\$news-actions .\$btn:hover { + background-color: rgba(0, 0, 0, 0.7); + border-color: rgba(255, 255, 255, 0.3); +} + +.\$news-header .\$news-actions .\$btn.success { + background-color: rgba(56, 142, 60, 0.6); + border-color: rgba(129, 199, 132, 0.4); + color: #81c784; +} + +.\$news-header .\$news-actions .\$btn.danger { + background-color: rgba(183, 28, 28, 0.5); + border-color: rgba(229, 115, 115, 0.4); + color: #e57373; +} + +.\$news-hero { + display: block; + position: relative; + width: 100%; + height: 360px; + margin-bottom: 20px; + border: 1px solid var(--border); + overflow: hidden; + text-decoration: none; + transition: border-color 0.2s; +} + +.\$news-hero:hover { + border-color: var(--rhpz-orange); + text-decoration: none; +} + +.\$news-hero-bg { + position: absolute; + inset: 0; + background-size: cover; + background-position: center; + background-color: var(--bg3); + transition: transform 0.4s ease; +} + +.\$news-hero:hover .\$news-hero-bg { + transform: scale(1.02); +} + +.\$news-hero-content { + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 30px; + z-index: 2; +} + +.\$news-hero-badge { + display: inline-flex; + align-items: center; + gap: 5px; + background-color: var(--rhpz-orange); + color: #111; + font-size: 0.72rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.8px; + padding: 4px 10px; + margin-bottom: 12px; +} + +.\$news-hero-title { + font-size: 2rem; + font-weight: 600; + color: #fff; + margin-bottom: 12px; + text-shadow: 0 2px 8px rgba(0,0,0,0.5); + line-height: 1.2; +} + +.\$news-hero-meta { + display: flex; + align-items: center; + gap: 15px; + font-size: 0.85rem; + color: rgba(255,255,255,0.75); +} + +.\$news-hero-meta span { + display: flex; + align-items: center; + gap: 5px; + background-color: rgba(0,0,0,0.4); + padding: 3px 10px; + border: 1px solid rgba(255,255,255,0.08); +} + +.\$news-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 15px; + margin-bottom: 20px; +} + +.\$news-card { + display: flex; + flex-direction: column; + background-color: var(--bg2); + border: 1px solid var(--border); + text-decoration: none; + overflow: hidden; + transition: border-color 0.15s, transform 0.15s; +} + +.\$news-card:hover { + border-color: var(--rhpz-orange); + transform: translateY(-2px); + text-decoration: none; +} + +.\$news-card-cover { + height: 160px; + background-size: cover; + background-position: center; + background-color: var(--bg3); + position: relative; + flex-shrink: 0; + transition: transform 0.3s ease; +} + +.\$news-card:hover .\$news-card-cover { + transform: scale(1.03); +} + +.\$news-card-state-badge { + position: absolute; + top: 10px; + right: 10px; + display: inline-flex; + align-items: center; + gap: 4px; + background-color: rgba(0,0,0,0.7); + color: var(--rhpz-orange); + font-size: 0.72rem; + font-weight: 600; + padding: 3px 8px; + border: 1px solid rgba(255,115,0,0.3); +} + +.\$news-card-body { + padding: 16px; + display: flex; + flex-direction: column; + flex: 1; + gap: 8px; +} + +.\$news-card-title { + font-size: 1rem; + font-weight: 600; + color: var(--text); + line-height: 1.3; + margin: 0; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; +} + +.\$news-card-excerpt { + font-size: 0.82rem; + color: var(--text2); + line-height: 1.5; + margin: 0; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + flex: 1; +} + +.\$news-card-meta { + display: flex; + align-items: center; + gap: 12px; + font-size: 0.75rem; + color: var(--text2); + margin-top: auto; + padding-top: 8px; + border-top: 1px solid var(--border); +} + +.\$news-card-meta span { + display: flex; + align-items: center; + gap: 4px; +} + +@media (max-width: 600px) { + .news-hero { height: 240px; } + .news-hero-title { font-size: 1.4rem; } + .news-grid { grid-template-columns: 1fr; } +} + +@media (max-width: 768px) { + + .\$news-header .\$news-meta { + gap: 12px; + font-size: 0.85rem; + } + + .\$news-layout { + flex-direction: column; + gap: 20px; + padding: 20px; + } + + .\$news-sidebar { + width: 100%; + } + + .\$news-content { + padding: 25px; + font-size: 1rem; + } + + .\$news-body-text { + font-size: 1rem; + } + + .\$sidebar-block { + padding: 15px; + } +} + +@media (max-width: 600px) { + .\$news-header .\$news-meta { + gap: 8px; + font-size: 0.8rem; + flex-wrap: wrap; + } + + .\$news-header .\$meta-item { + padding: 3px 8px; + font-size: 0.75rem; + } + + .\$news-layout { + gap: 15px; + padding: 15px; + } + + .\$news-main-content { + min-width: 0; + } + + .\$news-content { + padding: 15px; + font-size: 0.95rem; + } + + .\$news-body-text { + font-size: 0.95rem; + margin-bottom: 12px; + } + + .\$news-body-text p { + margin-bottom: 15px; + } + + .\$news-sidebar { + width: 100%; + gap: 15px; + } + + .\$sidebar-block { + padding: 12px; + } + + .\$sidebar-block h3 { + font-size: 0.95rem; + } + + .\$sidebar-block p { + font-size: 0.9rem; + } + + .\$news-card-title { + font-size: 0.9rem; + } +} + +@media (max-width: 420px) { + + .\$news-header .\$news-meta { + font-size: 0.75rem; + } + + .\$news-layout { + padding: 12px; + } + + .\$news-content { + padding: 12px; + } +} + + +/* File: resources/css/layout/responsive.css */ + +@media (max-width: 768px) { + :root { + --menu-size: 280px; + } + + #menu { + position: fixed; + left: 0; + top: 60px; + height: calc(100vh - 60px); + transform: translateX(-100%); + transition: transform 0.3s ease-in-out; + z-index: 999; + box-shadow: 2px 0 10px rgba(0, 0, 0, 0.5); + } + + #menu.mobile-open { + transform: translateX(0); + } + + #app.menu-open::before { + content: ''; + position: fixed; + top: 60px; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 998; + } + + .\$mobile-toggle { + display: flex !important; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + padding: 0; + } + + #main-wrapper { + width: 100%; + } + + #content { + padding: 20px; + } + + #topbar { + padding: 0 10px; + gap: 10px; + } + + .\$search-bar { + width: 100%; + max-width: 250px; + } + + .\$search-scope-select { + font-size: 0.7rem; + padding: 6px 8px; + } + + .\$topbar-actions { + gap: 4px; + overflow-x: auto; + flex-shrink: 1; + } + + .\$topbar-actions .\$btn { + flex-shrink: 0; + padding: 6px 8px; + } + + .\$vertical-separator { + height: 30px; + } +} + +@media (max-width: 600px) { + :root { + --menu-size: 240px; + } + + #content { + padding: 15px; + } + + #topbar { + padding: 0 8px; + height: 55px; + } + + #topbar { + flex-wrap: wrap; + gap: 8px; + } + + .\$search-bar { + max-width: 100%; + order: 3; + width: 100%; + margin-top: 8px; + } + + .\$topbar-actions { + gap: 2px; + max-width: 100%; + } + + .\$topbar-actions .\$btn { + padding: 4px 6px; + font-size: 0.9rem; + } + + .\$search-scope-select { + display: none; + } + + .\$search-bar input { + padding: 4px; + font-size: 0.9rem; + } + + #menu { + width: 240px; + } + + .\$menu-title { + display: none; + } + + .\$menu-logo { + width: 40px; + height: 40px; + } + + .\$menu-header { + padding: 8px; + justify-content: center; + } + + .\$menu-user-info .\$username { + font-size: 0.9rem; + } +} + +@media (max-width: 420px) { + :root { + --menu-size: 200px; + } + + #content { + padding: 12px; + } + + #topbar { + padding: 0 6px; + height: 50px; + } + + .\$mobile-toggle { + width: 35px; + height: 35px; + } + + .\$topbar-actions .\$btn { + padding: 3px 4px; + font-size: 0.8rem; + } + + .\$vertical-separator { + display: none; + } + + .\$menu-item { + padding: 8px 12px; + font-size: 0.9rem; + } + + .\$menu-group-title { + padding: 0 12px; + font-size: 0.65rem; + } + + .\$menu-user-info { + display: none; + } +} + +@media (max-height: 500px) and (max-width: 768px) { + #topbar { + height: 50px; + } + + #content { + padding: 12px; + } + + .\$menu-header { + padding: 8px; + } +} + +@media (max-width: 1024px) and (min-width: 769px) { + :root { + --menu-size: 240px; + } + + #content { + padding: 25px; + } + + .\$search-bar { + width: 250px; + } +} + +@media (min-width: 769px) { + + #menu { + transform: translateX(0) !important; + position: relative !important; + top: auto !important; + height: auto !important; + box-shadow: none !important; + } + + + #app.menu-open::before { + display: none; + } + + + .\$mobile-toggle { + display: none !important; + } + + + #app { + display: flex; + } + + #main-wrapper { + width: calc(100% - var(--menu-size)); + flex-grow: 1; + } +} + + +@media (hover: none) and (pointer: coarse) { + + .btn, + .menu-item, + button { + min-height: 44px; + min-width: 44px; + } + + + .\$btn { + padding: 8px 12px; + } + + + .\$menu-item:hover { + background-color: var(--bg2); + } +} + + +/* File: resources/css/layout/reviews.css */ +.\$review-section-header { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + gap: 10px; + margin-bottom: 10px; +} + +.\$review-header-right { + display: flex; + align-items: center; + gap: 10px; +} + +.\$review-avg-badge { + display: inline-flex; + align-items: center; + gap: 5px; + font-size: 0.85rem; + font-weight: 600; + color: var(--rhpz-orange); + background-color: rgba(255,115,0,.1); + border: 1px solid rgba(255,115,0,.3); + padding: 4px 10px; +} + +.\$review-avg-badge--lg { + font-size: 1rem; + padding: 8px 16px; +} + +.\$review-avg-count { + color: var(--text2); + font-weight: 400; + font-size: 0.85rem; +} + +.\$star-rating-display { + display: inline-flex; + align-items: center; + gap: 1px; +} + +.star-rating-display .star-filled { color: var(--rhpz-orange); fill: var(--rhpz-orange); } +.star-rating-display .star-empty { color: var(--border); } + +.\$review-title { + font-size: 0.98rem; + font-weight: 700; + color: var(--text); + margin-bottom: 4px; +} + +.\$star-input { + display: flex; + gap: 4px; +} + +.star-input-icon.star-filled svg { color: var(--rhpz-orange); fill: var(--rhpz-orange); } +.star-input-icon.star-empty svg { color: var(--border); } + +.\$star-input-icon { + cursor: pointer; + transition: transform 0.1s; +} + +.\$star-input-icon:hover { + transform: scale(1.15); +} + +.\$reviews-page-header { + display: flex; + flex-direction: column; + gap: 10px; + margin-bottom: 25px; + padding-bottom: 20px; + border-bottom: 1px solid var(--border); +} + +.\$reviews-back-link { + display: inline-flex; + align-items: center; + gap: 6px; + font-size: 0.82rem; + color: var(--text2); + text-decoration: none; + width: fit-content; +} + +.reviews-back-link:hover { color: var(--rhpz-orange); } + +.\$reviews-page-title { + font-size: 1.4rem; + font-weight: 600; + color: var(--text); +} + +@media (max-width: 768px) { + .\$review-section-header { + gap: 8px; + margin-bottom: 8px; + } + + .\$review-header-right { + gap: 8px; + flex-wrap: wrap; + } + + .\$review-avg-badge { + font-size: 0.8rem; + padding: 3px 8px; + } + + .\$review-avg-badge--lg { + font-size: 0.95rem; + padding: 6px 12px; + } + + .\$reviews-page-header { + gap: 8px; + margin-bottom: 20px; + padding-bottom: 15px; + } + + .\$reviews-page-title { + font-size: 1.15rem; + } + + .\$review-title { + font-size: 0.9rem; + } +} + +@media (max-width: 600px) { + .\$review-avg-badge { + font-size: 0.75rem; + padding: 2px 6px; + } + + .\$reviews-page-title { + font-size: 1rem; + } + + .\$review-title { + font-size: 0.85rem; + } + + .\$star-rating-display { + gap: 0; + } + + .\$star-input { + gap: 3px; + } +} + + +/* File: resources/css/layout/submit.css */ +.\$submit-hero { + display: flex; + align-items: flex-end; + justify-content: space-between; + gap: 24px; + background-color: var(--bg2); + border-bottom: 1px solid var(--border); + padding: 40px 36px 32px; +} + +.\$submit-eyebrow { + display: inline-flex; + align-items: center; + gap: 6px; + font-size: 0.68rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 1px; + color: var(--rhpz-orange); + background: rgba(255,115,0,.1); + border: 1px solid rgba(255,115,0,.3); + padding: 3px 10px; + margin-bottom: 16px; +} + +.\$submit-hero-title { + font-size: 1.9rem; + font-weight: 300; + color: var(--text); + margin-bottom: 10px; + line-height: 1.25; +} + +.\$submit-hero-sub { + font-size: 0.9rem; + color: var(--text2); + max-width: 460px; + line-height: 1.65; +} + +.\$submit-review-note { + font-size: 0.8rem; + color: var(--text2); + border: 1px solid var(--border); + background: var(--bg3); + padding: 14px 18px; + max-width: 210px; + line-height: 1.6; + flex-shrink: 0; +} + +.submit-review-note strong { color: var(--rhpz-orange); } + +.submit-body { padding: 28px 36px 40px; } + +.\$submit-section-label { + font-size: 0.68rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 1px; + color: var(--text2); + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 14px; +} + +.\$submit-section-label::after { + content: ''; + flex: 1; + height: 1px; + background: var(--border); +} + +.\$submit-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 10px; + margin-bottom: 30px; +} + +.\$submit-card { + display: flex; + flex-direction: column; + background: var(--bg2); + border: 1px solid var(--border); + text-decoration: none; + transition: border-color .15s, background .1s; +} + +.\$submit-card:hover { + border-color: var(--card-color); + background: var(--bg3); + text-decoration: none; +} + +.\$submit-card-top { + display: flex; + align-items: flex-start; + gap: 14px; + padding: 20px 20px 16px; + border-bottom: 1px solid var(--border); +} + +.\$submit-card-icon { + width: 38px; + height: 38px; + flex-shrink: 0; + display: flex; + align-items: center; + justify-content: center; + background: var(--card-bg); + border: 1px solid var(--card-border); + color: var(--card-color); +} + +.\$submit-card-title { + font-size: 0.95rem; + font-weight: 600; + color: var(--text); + margin-bottom: 4px; +} + +.\$submit-card-desc { + font-size: 0.78rem; + color: var(--text2); + line-height: 1.55; +} + +.\$submit-card-bottom { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 20px; +} + +.\$submit-card-tag { + font-size: 0.65rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.5px; + color: var(--card-color); + background: var(--card-bg); + border: 1px solid var(--card-border); + padding: 2px 7px; +} + +.\$submit-card-cta { + font-size: 0.75rem; + color: var(--text2); + display: flex; + align-items: center; + gap: 4px; + transition: color .15s; +} + +.submit-card:hover .submit-card-cta { color: var(--card-color); } + +.\$submit-news-row { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 10px; + margin-bottom: 28px; +} + +.\$submit-news-card { + display: flex; + align-items: center; + gap: 14px; + background: var(--bg2); + border: 1px solid var(--border); + padding: 18px 22px; + text-decoration: none; + transition: border-color .15s, background .1s; +} + +.\$submit-news-card:hover { + border-color: var(--success); + background: var(--bg3); +} + +.submit-news-card--disabled { opacity: .5; cursor: not-allowed; } +.submit-news-card--disabled:hover { border-color: var(--border); background: var(--bg2); } + +.\$submit-news-icon { + width: 38px; + height: 38px; + flex-shrink: 0; + display: flex; + align-items: center; + justify-content: center; + background: rgba(129,199,132,.1); + border: 1px solid rgba(129,199,132,.3); + color: var(--success); +} + +.\$submit-news-title { + font-size: 0.95rem; + font-weight: 600; + color: var(--text); + margin-bottom: 3px; +} + +.submit-news-desc { font-size: 0.78rem; color: var(--text2); line-height: 1.55; } + +.\$submit-news-cta { + flex-shrink: 0; + font-size: 0.75rem; + color: var(--text2); + display: flex; + align-items: center; + gap: 4px; + transition: color .15s; +} + +.submit-news-card:hover .submit-news-cta { color: var(--success); } + +.\$submit-news-staff-note { + background: var(--bg2); + border: 1px solid var(--border); + padding: 18px 22px; + font-size: 0.8rem; + color: var(--text2); + line-height: 1.65; + display: flex; + flex-direction: column; + gap: 10px; +} + +.\$submit-news-staff-badge { + display: inline-flex; + align-items: center; + gap: 5px; + font-size: 0.65rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: .6px; + color: var(--rhpz-orange); + background: rgba(255,115,0,.1); + border: 1px solid rgba(255,115,0,.3); + padding: 2px 8px; + width: fit-content; +} + +.submit-news-staff-note a { color: var(--text2); text-decoration: underline; } +.submit-news-staff-note a:hover { color: var(--text); } + +.\$submit-rules { + display: flex; + gap: 0; + background: var(--bg2); + border: 1px solid var(--border); +} + +.\$submit-rule { + flex: 1; + display: flex; + align-items: flex-start; + gap: 12px; + padding: 18px 22px; + border-right: 1px solid var(--border); + font-size: 0.8rem; + color: var(--text2); + line-height: 1.6; +} + +.submit-rule:last-child { border-right: none; } +.submit-rule strong { color: var(--text); } + +.\$submit-rule-num { + width: 22px; + height: 22px; + flex-shrink: 0; + display: flex; + align-items: center; + justify-content: center; + background: rgba(255,115,0,.1); + border: 1px solid rgba(255,115,0,.3); + color: var(--rhpz-orange); + font-size: 0.72rem; + font-weight: 700; +} + +@media (max-width: 900px) { + .submit-hero { flex-direction: column; align-items: flex-start; } + .submit-grid { grid-template-columns: repeat(2, 1fr); } + .submit-rules { flex-direction: column; } + .submit-rule { border-right: none; border-bottom: 1px solid var(--border); } + .submit-rule:last-child { border-bottom: none; } +} + +@media (max-width: 768px) { + .\$submit-hero { + flex-direction: column; + gap: 20px; + padding: 25px 20px; + } + + .\$submit-grid { + grid-template-columns: 1fr; + gap: 15px; + } + + .\$submit-body { + padding: 25px 20px; + } + + .\$submit-rules { + gap: 0; + } + + .\$submit-rule { + padding: 15px; + } +} + +@media (max-width: 600px) { + .\$submit-hero, .\$submit-body { + padding-left: 15px; + padding-right: 15px; + } + + .submit-grid { grid-template-columns: 1fr; } + .submit-news-row { grid-template-columns: 1fr; } + .submit-review-note { max-width: 100%; } + + .\$submit-hero { + gap: 15px; + padding: 15px; + } + + .\$submit-body { + padding: 15px; + } + + .\$submit-rule { + padding: 12px; + font-size: 0.9rem; + } + + .\$submit-hero-title { + font-size: 1.3rem; + } + + .\$submit-grid > * { + margin-bottom: 10px; + } +} + /* File: resources/css/xenforo.css */ .\$xf-menu-user-avatar-fix { diff --git a/templates/public/misc_preferences_popup.html b/templates/public/misc_preferences_popup.html new file mode 100644 index 0000000..0efebe1 --- /dev/null +++ b/templates/public/misc_preferences_popup.html @@ -0,0 +1,55 @@ +
+
+ + Theme +
+ + + + + + +
+ +
+ + +
+
+ + Account +
+ + + XenForo settings + + +
+
+ \ No newline at end of file diff --git a/templates/public/romhackplaza_css.html b/templates/public/romhackplaza_css.html index 3ccf800..a7866f5 100644 --- a/templates/public/romhackplaza_css.html +++ b/templates/public/romhackplaza_css.html @@ -1,3 +1,6 @@ \ No newline at end of file diff --git a/templates/public/romhackplaza_js.html b/templates/public/romhackplaza_js.html index fff3471..18eff1e 100644 --- a/templates/public/romhackplaza_js.html +++ b/templates/public/romhackplaza_js.html @@ -3,4 +3,81 @@ document.addEventListener('DOMContentLoaded', function() { lucide.createIcons(); }); - \ No newline at end of file + + window.refreshIcons = (container = document) => { + const pending = container.querySelectorAll('[data-lucide]'); + if (pending.length === 0) return; + lucide.createIcons(); + }; + (function () { + var APP_URL = "{{ $xf.options.homePageUrl }}"; + + var form = document.getElementById('rhpzSearchForm'); + var select = document.getElementById('rhpzSearchScope'); + var input = document.getElementById('rhpzSearchInput'); + + var scopes = { + forum: { action: "{{ link('search/2147483647/') }}", param: 'q', extra: { o: 'relevance' } }, + entries: { action: APP_URL + '/database', param: 's' }, + news: { action: APP_URL + '/news', param: 's' } + }; + + form.addEventListener('submit', function (e) { + e.preventDefault(); + + var term = input.value.trim(); + if (!term) return; + + var cfg = scopes[select.value]; + var params = new URLSearchParams(Object.assign({}, { [cfg.param]: term }, cfg.extra || {})); + + window.location = cfg.action + '?' + params.toString(); + }); + })(); + (function () { + const menuToggle = document.querySelector('.\\$mobile-toggle'); + const menu = document.getElementById('menu'); + const app = document.getElementById('app'); + const content = document.getElementById('content'); + + if (!menuToggle || !menu) return; + + menuToggle.addEventListener('click', (e) => { + e.stopPropagation(); + menu.classList.toggle('mobile-open'); + app.classList.toggle('menu-open'); + }); + + const menuItems = menu.querySelectorAll('.\\$menu-item'); + menuItems.forEach(item => { + item.addEventListener('click', () => { + menu.classList.remove('mobile-open'); + app.classList.remove('menu-open'); + }); + }); + + document.addEventListener('click', (e) => { + const isClickInsideMenu = menu.contains(e.target); + const isClickOnToggle = menuToggle.contains(e.target); + + if (!isClickInsideMenu && !isClickOnToggle && menu.classList.contains('mobile-open')) { + menu.classList.remove('mobile-open'); + app.classList.remove('menu-open'); + } + }); + + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape' && menu.classList.contains('mobile-open')) { + menu.classList.remove('mobile-open'); + app.classList.remove('menu-open'); + } + }); + + window.addEventListener('resize', () => { + if (window.innerWidth > 768) { + menu.classList.remove('mobile-open'); + app.classList.remove('menu-open'); + } + }); + })() + \ No newline at end of file diff --git a/templates/public/topbar_actions.html b/templates/public/topbar_actions.html index ba2965d..ddd3842 100644 --- a/templates/public/topbar_actions.html +++ b/templates/public/topbar_actions.html @@ -4,10 +4,10 @@
- + - + @@ -16,21 +16,75 @@ - + - + - +
- - + + + + + + @@ -61,18 +115,59 @@
- +
- + + + - + + \ No newline at end of file