diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fbe1be5..3d54e37e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,6 +70,7 @@ - Leggero theme: - Depending on your browser or operating system settings, the Stringendo style switches between light and dark modes. ([#852](https://github.com/flatpressblog/flatpress/pull/852)) - Open Graph prefix added. ([#856](https://github.com/flatpressblog/flatpress/pull/856)) + - The Leggero theme now supports a widget top and bottombar for simple blockparser widgets. ([#937](https://github.com/flatpressblog/flatpress/pull/937)) ## Internationalization - Chinese translation by [Qingfeng Xiyu](http://zp.qfxy.net/) ([#913](https://github.com/flatpressblog/flatpress/pull/913)) diff --git a/admin/panels/maintain/admin.maintain.apcu.tpl b/admin/panels/maintain/admin.maintain.apcu.tpl index 523f17c9..c75a43ba 100644 --- a/admin/panels/maintain/admin.maintain.apcu.tpl +++ b/admin/panels/maintain/admin.maintain.apcu.tpl @@ -15,6 +15,8 @@ .apcu-label { font-size: 0.9em; color: #666; } .apcu-value { font-weight: bold; } .apcu-actions { margin: 0.5em 0 1em 0; } +.apcu-button { display: inline-block; padding: 0.4em 0.9em; border-radius: 4px; border: 1px solid #a94442; background: #f2dede; color: #a94442; text-decoration: none; font-weight: bold; } +.apcu-button:hover { background: #e4b9b9; } .apcu-clear-result { margin: 0.25em 0 1em 0; } @media (max-width: 720px) { .apcu-panel { padding: 0 0.25em; } @@ -23,6 +25,8 @@
+

{$panelstrings.back}

+

{$panelstrings.descr}

@@ -52,12 +56,6 @@
apc.shm_size
{$apcu.shm_size_ini}
-
-
{$panelstrings.memory_type}
-
- {if $apcu.memory_type}{$apcu.memory_type}{else}{$panelstrings.memory_type_unknown}{/if} -
-
{$panelstrings.num_slots}
{$apcu.num_slots}
@@ -102,10 +100,6 @@ {/if}
-
-
{$panelstrings.cache_type}
-
{$panelstrings.cache_user_only}
-
diff --git a/fp-content/images/Leggero-Themepreview/.thumbs/02-flatmaas-rev.png b/fp-content/images/Leggero-Themepreview/.thumbs/02-flatmaas-rev.png index 56c19632..dd663837 100644 Binary files a/fp-content/images/Leggero-Themepreview/.thumbs/02-flatmaas-rev.png and b/fp-content/images/Leggero-Themepreview/.thumbs/02-flatmaas-rev.png differ diff --git a/fp-content/images/Leggero-Themepreview/.thumbs/03-leggero.png b/fp-content/images/Leggero-Themepreview/.thumbs/03-leggero.png index c2f2b991..c4ff507d 100644 Binary files a/fp-content/images/Leggero-Themepreview/.thumbs/03-leggero.png and b/fp-content/images/Leggero-Themepreview/.thumbs/03-leggero.png differ diff --git a/fp-content/images/Leggero-Themepreview/.thumbs/04-leggero-v2.png b/fp-content/images/Leggero-Themepreview/.thumbs/04-leggero-v2.png index cb539127..fae11122 100644 Binary files a/fp-content/images/Leggero-Themepreview/.thumbs/04-leggero-v2.png and b/fp-content/images/Leggero-Themepreview/.thumbs/04-leggero-v2.png differ diff --git a/fp-content/images/Leggero-Themepreview/.thumbs/05-stringendo.png b/fp-content/images/Leggero-Themepreview/.thumbs/05-stringendo.png index 3278667b..bc042bc6 100644 Binary files a/fp-content/images/Leggero-Themepreview/.thumbs/05-stringendo.png and b/fp-content/images/Leggero-Themepreview/.thumbs/05-stringendo.png differ diff --git a/fp-content/images/Leggero-Themepreview/02-flatmaas-rev.png b/fp-content/images/Leggero-Themepreview/02-flatmaas-rev.png index 16a45dcd..90a5ddf5 100644 Binary files a/fp-content/images/Leggero-Themepreview/02-flatmaas-rev.png and b/fp-content/images/Leggero-Themepreview/02-flatmaas-rev.png differ diff --git a/fp-content/images/Leggero-Themepreview/03-leggero.png b/fp-content/images/Leggero-Themepreview/03-leggero.png index 096ba4c2..d0a5d049 100644 Binary files a/fp-content/images/Leggero-Themepreview/03-leggero.png and b/fp-content/images/Leggero-Themepreview/03-leggero.png differ diff --git a/fp-content/images/Leggero-Themepreview/04-leggero-v2.png b/fp-content/images/Leggero-Themepreview/04-leggero-v2.png index c9b50cd2..ec5fd3e9 100644 Binary files a/fp-content/images/Leggero-Themepreview/04-leggero-v2.png and b/fp-content/images/Leggero-Themepreview/04-leggero-v2.png differ diff --git a/fp-content/images/Leggero-Themepreview/05-stringendo.png b/fp-content/images/Leggero-Themepreview/05-stringendo.png index a18df929..fc80be80 100644 Binary files a/fp-content/images/Leggero-Themepreview/05-stringendo.png and b/fp-content/images/Leggero-Themepreview/05-stringendo.png differ diff --git a/fp-defaults/plugins.conf.php b/fp-defaults/plugins.conf.php index 6309b7b2..bfc7b8ff 100755 --- a/fp-defaults/plugins.conf.php +++ b/fp-defaults/plugins.conf.php @@ -6,42 +6,38 @@ * remove it to enable :) */ - 'accessibleantispam', - 'adminarea', - 'archives', - 'audiovideo', - 'bbcode', // bbcode-style formatting; if you disable this - // you'll loose some features, but you will be able to use html - // as a default - 'blockparser', - // 'calendar', - 'categories', - 'commentcenter', // including Akismet interface - 'cookiebanner', - 'datechanger', // Lets you change the publish date for (new) entries. - 'emoticons', // Activates an emoticons toolbar for entries and static pages - 'favicon', - 'feed', // Activates the RSS and Atom feed widget - 'fpprotect', // Hardens your blog with additional features in the HTTP response header. - // Removes the htaccess editor from the PrettyURLs plugin. - 'gallerycaptions', - 'gdprvideoembed', // Simple two-click solution for GDPR-compliant embedding of YouTube, Facebook and Vimeo videos. - 'jquery', // needed by ligthbox2 (quite heavy in size) - 'lastcomments', // cache-based last-comments block - 'lastentries', - 'mastodon', - 'mediamanager', - // 'newsletter', - 'photoswipe', - 'postviews', // Counts and displays entry views - 'prettyurls', // PrettyURLs with NGINX? see https://wiki.flatpress.org/res:plugins:prettyurls#nginx - 'qspam', // quick spam filter - 'readmore', - 'searchbox', - 'seometataginfo', // Makes it easier to find with search engines and post on social media - 'storage', - 'support', // Provides the FlatPress admin and the community with all relevant data in case of problems. - 'tag', - 'thumb' // creates thumbnails adding scale=NN% to [img] tags :) + 0 => 'accessibleantispam', + 1 => 'adminarea', + 2 => 'archives', + 3 => 'audiovideo', + 4 => 'bbcode', // bbcode-style formatting + 5 => 'blockparser', + 6 => 'categories', + 7 => 'commentcenter', // including Akismet interface + 8 => 'cookiebanner', + 9 => 'datechanger', // Lets you change the publish date for (new) entries + 10 => 'emoticons', // Activates an emoticons toolbar for entries and static pages + 11 => 'favicon', + 12 => 'feed', // Activates the RSS and Atom feed widget + 13 => 'fpprotect', // Hardens your blog with additional features in the HTTP response header + 14 => 'gallerycaptions', + 15 => 'gdprvideoembed', // Simple two-click solution for GDPR-compliant embedding of YouTube, Facebook and Vimeo videos + 16 => 'jquery', + 17 => 'lastcomments', // cache-based last-comments block + 18 => 'lastentries', + 19 => 'mastodon', + 20 => 'mediamanager', + 21 => 'newsletter', + 22 => 'photoswipe', + 23 => 'postviews', // Counts and displays entry views + 24 => 'prettyurls', // PrettyURLs with NGINX? see https://wiki.flatpress.org/res:plugins:prettyurls#nginx + 25 => 'qspam', // quick spam filter + 26 => 'readmore', + 27 => 'searchbox', + 28 => 'seometataginfo', // Makes it easier to find with search engines and post on social media + 29 => 'storage', + 30 => 'support', // Provides the FlatPress admin and the community with all relevant data in case of problems + 31 => 'tag', + 32 => 'thumb' // creates thumbnails adding scale=NN% to [img] tags :) ); ?> diff --git a/fp-defaults/settings-defaults.php b/fp-defaults/settings-defaults.php index 59e99235..57253a89 100755 --- a/fp-defaults/settings-defaults.php +++ b/fp-defaults/settings-defaults.php @@ -29,8 +29,9 @@ 'plugins' => array( 'blockparser' => array( 'pages' => array( - 'menu', - 'about' + 0 => 'menu', + 1 => 'bottommenu', + 2 => 'about' ), ), 'bbcode' => array ( diff --git a/fp-defaults/widgets.conf.php b/fp-defaults/widgets.conf.php index 65afc60f..cac19632 100755 --- a/fp-defaults/widgets.conf.php +++ b/fp-defaults/widgets.conf.php @@ -7,7 +7,7 @@ */ 'top' => array ( - // (no widgets) + 0 => 'blockparser:menu' ), /** @@ -22,21 +22,19 @@ // Right side widgets 'right' => array ( - 'adminarea', - 'blockparser:menu', - 'categories', - 'archives', - //'calendar', // quite time consuming, not really recommended - 'lastentries', - // 'lastcomments', - 'searchbox', - 'feed', - // 'newsletter', - 'mastodon' + 0 => 'categories', + 1 => 'archives', + 2 => 'lastentries', + 3 => 'lastcomments', + 4 => 'searchbox', + 5 => 'feed', + 6 => 'newsletter', + 7 => 'mastodon' ), 'bottom' => array ( - // (no widgets) + 0 => 'blockparser:bottommenu', + 1 => 'adminarea' ), ); ?> diff --git a/fp-interface/themes/leggero/comments.tpl b/fp-interface/themes/leggero/comments.tpl index f5e01d9b..7f6e24da 100755 --- a/fp-interface/themes/leggero/comments.tpl +++ b/fp-interface/themes/leggero/comments.tpl @@ -1,67 +1,71 @@ {include file="header.tpl"} +{include file="widgetstop.tpl"} +
+ {entry_block} + {entry} + {include file="entry-default.tpl"} + {comment_block} -
- {entry_block} - {entry} - {include file="entry-default.tpl"} - {comment_block} -
    - {comment} -
  1. +
      + {comment} - - {* - using this tag combo, the name is displayed as a link only - if user entered a URL. +
    1. - Syntax is quite intuitive: - "if $url is not empty, show $name between a tags, - else default fallback on displaying plain $name" + - *} - {if $url} - {if $url|is_external_url} + {if $url} + {if $url|is_external_url} - {$name|wp_specialchars:1} - {else} + {$name|wp_specialchars:1} + {else} - {$name|wp_specialchars:1} - {/if} - {else} + {$name|wp_specialchars:1} + {/if} + {else} - {$name|wp_specialchars:1} - {/if} - + {$name|wp_specialchars:1} + {/if} + + + {include file="shared:commentadminctrls.tpl"} + +

      + + {$date|date_format_daily} {$lang.entryauthor.at} {$date|date_format:"`$fp_config.locale.timeformat`"} +

      + + {$content|tag:comment_text} - {include file="shared:commentadminctrls.tpl"} {* this shows edit/delete links *} +
    2. -

      - {$date|date_format_daily} {$lang.entryauthor.at} {$date|date_format:"`$fp_config.locale.timeformat`"} -

      + {/comment} - {$content|tag:comment_text} +
    + {/comment_block} -
  2. - {/comment} -
- {/comment_block} + {/entry} - {/entry} + {capture assign='fp_nextpage'}{strip}{nextpage}{/strip}{/capture} + {capture assign='fp_prevpage'}{strip}{prevpage}{/strip}{/capture} + {if $fp_nextpage != '' || $fp_prevpage != ''} - {capture assign='fp_nextpage'}{strip}{nextpage}{/strip}{/capture} - {capture assign='fp_prevpage'}{strip}{prevpage}{/strip}{/capture} - {if $fp_nextpage != '' || $fp_prevpage != ''} - - {/if} + + + {/if} - {/entry_block} + {/entry_block} - {include file="shared:comment-form.tpl"} + {include file="shared:comment-form.tpl"} -
+
- {include file="widgets.tpl"} + {include file="widgets.tpl"} + {* +
+ *} {include file="footer.tpl"} diff --git a/fp-interface/themes/leggero/default.tpl b/fp-interface/themes/leggero/default.tpl index 1e550a79..3aa381f6 100755 --- a/fp-interface/themes/leggero/default.tpl +++ b/fp-interface/themes/leggero/default.tpl @@ -1,22 +1,29 @@ {include file="header.tpl"} - -
- - -
-

{$subject}

-
- - {if isset($rawcontent) and $rawcontent} {$content} - {else} {include file=$content}{/if} - + +{include file="widgetstop.tpl"} + +
+ +
+

{$subject}

+
+ + {if isset($rawcontent) and $rawcontent} + + {$content} + {else} + + {include file=$content} + {/if} + +
+
+
-
- -
- - {include file="widgets.tpl"} - + + {include file="widgets.tpl"} + + {include file="footer.tpl"} diff --git a/fp-interface/themes/leggero/flatmaas-rev/preview.png b/fp-interface/themes/leggero/flatmaas-rev/preview.png index 14019f0a..90a5ddf5 100644 Binary files a/fp-interface/themes/leggero/flatmaas-rev/preview.png and b/fp-interface/themes/leggero/flatmaas-rev/preview.png differ diff --git a/fp-interface/themes/leggero/flatmaas-rev/res/common.css b/fp-interface/themes/leggero/flatmaas-rev/res/common.css index 28bff873..f4ef0ad2 100755 --- a/fp-interface/themes/leggero/flatmaas-rev/res/common.css +++ b/fp-interface/themes/leggero/flatmaas-rev/res/common.css @@ -1,18 +1,20 @@ -/* -=================== -FlatMaas CSS Styles -=================== -Ispired by: http://csszengarden.com/?cssfile=http://maas-online.nl/zengarden/layout.css -Home page: http://www.maas-online.nl -------------------- +/** + * =================== + * FlatMaas CSS Styles + * =================== + * Ispired by: http://csszengarden.com/?cssfile=http://maas-online.nl/zengarden/layout.css + * Home page: http://www.maas-online.nl + * ------------------- + * + * Name: FlatMaas + * Author: Luciano Porro (drudo), reworked by Fraenkiman + * Version: 1.0.0 + */ -Name: FlatMaas -Author: Luciano Porro (drudo) -Version: 0.0.1 -*/ - -body { text-align: center } +body { + text-align: center +} /* ==== Structure with fixed width ==== */ #body-container { /* Simplified Box Model Hack */ @@ -24,7 +26,9 @@ body { text-align: center } background-color: white } -body > div#body-container { width: 760px } +body > div#body-container { + width: 760px +} #head { padding: 5px; @@ -41,6 +45,12 @@ body > div#body-container { width: 760px } background: #999977 } +div#head p img { + float: right; + border: 0; + height: 75px +} + #outer-container { padding: 0px; margin: 0px; @@ -57,13 +67,18 @@ body > div#body-container { width: 760px } border: solid 1px #ccc; width: 205px; font-size: 75%; - height: 1% + height:1% } -#main + #column { width: 195px; font-size: 80% } +#main + #column { + width: 195px; + font-size: 80% +} + +#column ul li table { + font-size: 100% +} -#column ul li table { font-size: 100% } - #column ul { margin-right: 10px; display: block; @@ -72,7 +87,7 @@ body > div#body-container { width: 760px } } #main { - float:left; + float: left; text-align: justify; position: relative; margin: 5px; @@ -80,7 +95,9 @@ body > div#body-container { width: 760px } font-size: 100% } -#outer-container > #main { width: 540px } +#outer-container > #main { + width: 530px +} #footer { clear: both; @@ -107,15 +124,37 @@ body { background: #EEEEDD } -hr { display: none } +hr { + display: none +} -p { margin: .5em 0 } +p { + margin: 0.5em 0 +} + +/* in the specific ID */ +#column p, +#column div { + margin: 10px 5px +} + +#main p { + line-height: 1.5em; + margin-top: 1.2em +} + +#main .entry img { + max-width: 100%; + height: auto +} + +#main .entry figure, +#main .entry .photoswipe { + max-width: 100%; + overflow: hidden +} - /* in the specific ID */ - #column p, #column div { margin: 10px 5px } - #main p { line-height: 1.5em; margin-top: 1.2em } - /* == Headers == */ h1 { /* Title of the blog */ font-size: 1.6em; @@ -135,6 +174,11 @@ h1 { /* Title of the blog */ height: 12px } +#head div.noprint { + float: right; + text-align: right; +} + h2 { /* Titles of the entry */ font-size: 1.4em; color: #333333; @@ -147,42 +191,42 @@ h2 { /* Titles of the entry */ background: transparent url('../imgs/entry.png') center left no-repeat } -.entry-title a { color: #333333 !IMPORTANT } +.entry-title a { + color: #333333 !IMPORTANT +} -h3 { margin: 0; +h3 { + margin: 0; font-size: 1.3em; padding: 1em 0 0.2em 0 } -h4 { font-size: 1.2em } - -/* in the specific ID */ -#column h4 { - /* Titles of the sections in #column */ - color: white; - font-family: "Gill Sans", "Trebuchet MS", Helvetica, sans-serif; - margin: 0 5px 5px 5px; - padding: .2em .5em; - background: #BBBB99 url('../imgs/sf_h4.png') bottom left repeat-x +h4 { + font-size: 1.2em } -#main h4 { margin: 1.5em 0 1em 0 } - -img { border: none } + /* in the specific ID */ + #column h4 { + /* Titles of the sections in #column */ + color: white; + font-family: "Gill Sans", "Trebuchet MS", Helvetica, sans-serif; + margin: 0 5px 5px 5px; + padding: 0.2em 0.5em; + background: #BBBB99 url('../imgs/sf_h4.png') bottom left repeat-x + } -/* in the specific ID */ -#main img { margin: .5em } + #main h4 { + margin: 1.5em 0 1em 0 + } -#main .entry img { - max-width: 100%; - height: auto +img { + border: none } -#main .entry figure, -#main .entry .photoswipe { - max-width: 100%; - overflow: hidden -} + /* in the specific ID */ + #main img { + margin: 0.5em + } blockquote { color: #666666; @@ -191,9 +235,13 @@ blockquote { background: #eeeeee url('../imgs/blockquote.png') bottom left no-repeat } -blockquote p { margin: 0; margin-top: unset !IMPORTANT } +blockquote p { + margin: 0; + margin-top: unset !IMPORTANT +} -pre, code { +pre, +code { color: #666666; font-size: 1.1em; font-family: "Lucida Console", Monaco, monospace; @@ -210,9 +258,17 @@ pre { padding: 5px } -ul, li, ol { margin: 0; padding: 0 } +ul, +li, +ol { + margin: 0; + padding: 0 +} -ul { padding-top: 0.3em; padding-bottom: 0.3em } +ul { + padding-top: 0.3em; + padding-bottom: 0.3em +} /* == List in MAIN == */ @@ -221,7 +277,9 @@ ul { padding-top: 0.3em; padding-bottom: 0.3em } padding: 0 0 0 1.6em } -#main ul li:before { content: "\00BB \0020" } +#main ul li:before { + content: "\00BB \0020" +} #main ol { list-style-position: inside; @@ -247,40 +305,55 @@ a:hover { text-decoration: underline } -h3 a, h3 a:link, h3 a:visited { color: #333 } +h3 a, +h3 a:link, +h3 a:visited { + color: #333 +} -#subheader a:link, #subheader a:visited, #footer a:link, #footer a:visited { +#subheader a:link, +#subheader a:visited, +#footer a:link, +#footer a:visited { color: white; text-decoration: none; font-weight: bold } -#subheader a:hover, #footer a:hover { color: white; text-decoration: underline } +#subheader a:hover, +#footer a:hover { + color: white; + text-decoration: underline +} /* == Form == */ -form { margin: 1em 0 } +form { + margin: 1em 0 +} fieldset { margin: 0 0 1em 0; - padding: .5em; + padding: 0.5em; border: 1px solid #999977 } - /* in the specific ID */ - #column fieldset { margin: 0 5px 0 5px } + #column fieldset { + margin: 0 5px 0 5px + } legend { color: #666666; font-size: 80%; font-style: oblique } - /* in the specific ID */ - #column legend { font-size: 100% } + #column legend { + font-size: 100% + } input { - margin-top: .1em; + margin-top: 0.1em; border: 1px solid #999977; background-color: #EEEEDD } @@ -292,13 +365,15 @@ input:hover { input[type=radio], input[type=checkbox] { height: 12px } -select { background-color: #EEEEDD } +select { + background-color: #EEEEDD +} textarea { width: 99%; font-size: 100%; font-family: verdana, Helvetica, Arial, sans-serif; - margin-top: .1em; + margin-top: 0.1em; border: 1px solid #999977; background-color: #EEEEDD } @@ -314,14 +389,14 @@ textarea:hover { font-size: 80%; font-style: oblique; color: #F1F1F1; - margin: .5em 0 0 0 + margin: 0.5em 0 0 0 } .date { /* Date under titles of the entry */ font-size: 80%; font-style: oblique; color: gray; - margin: .2em 0 .8em 0 + margin: 0.2em 0 0.8em 0 } .entry { @@ -335,7 +410,7 @@ textarea:hover { font-size: 80%; text-align: center; color: gray; - margin: .5em 0 0 0; + margin: 0.5em 0 0 0; clear: both } @@ -347,13 +422,21 @@ textarea:hover { background: #EEEEDD } -.floatLeft { float: left } /* don't touch this class!! */ +.floatLeft { /* don't touch this class!! */ + float: left +} -.floatRight { float: right } /* don't touch this class!! */ +.floatRight { /* don't touch this class!! */ + float: right +} -.imageColumn { text-align: center } +.imageColumn { + text-align: center +} -.imageColumn img { margin: 2px 0px } +.imageColumn img { + margin: 2px 0px +} .admincontrols { text-align: right; @@ -365,9 +448,13 @@ textarea:hover { margin-bottom: 5em } -.alignleft { float: left } +.alignleft { + float: left +} -.alignright { float: right } +.alignright { + float: right +} /* notifications */ @@ -412,9 +499,6 @@ textarea:hover { background: #fdd } -/* Search form */ -#search label { vertical-align: middle } - /* Search-widget */ div#widget-searchbox ul, div#widget-searchbox li { @@ -426,15 +510,22 @@ div#widget-searchbox div.buttonbar p input { margin: 0 -5px } -form#search ul { list-style-type: none } +form#search ul { + list-style-type: none +} -form#search ul li:before { content: none } +form#search ul li:before { + content: none +} /* Calendar-widget */ -#widget_calendar table.calendar { font-size: 90% } +#widget_calendar table.calendar { + font-size: 90% +} /* Feed-widget */ -.feed-widget { height: 12px !IMPORTANT; } +.feed-widget { height: 12px !IMPORTANT } + /* BBcode toolbar for comments */ .bb-btn-tlb p { display: table-cell } @@ -471,3 +562,19 @@ form#search ul li:before { content: none } vertical-align: middle; padding: 0 } + +/* ===== TOP/ BOTTOM BAR ===== */ +#columntop, +#columnbottom { + text-align: center; + clear: both; +} + +#columntop ul, +#columnbottom ul { + list-style-type: none +} + +#columntop ul li, #columnbottom ul li { + display: inline; +} \ No newline at end of file diff --git a/fp-interface/themes/leggero/footer.tpl b/fp-interface/themes/leggero/footer.tpl index 4640cfe7..ad4bde2c 100755 --- a/fp-interface/themes/leggero/footer.tpl +++ b/fp-interface/themes/leggero/footer.tpl @@ -1,27 +1,22 @@ -
- - - + +
+ + + {if !isset($smarty.const.MOD_ADMIN_PANEL)} + {include file="widgetsbottom.tpl"} + {/if} - - + + + + + + + {action hook=end_footer} + diff --git a/fp-interface/themes/leggero/index.tpl b/fp-interface/themes/leggero/index.tpl index 8251c581..438521a1 100755 --- a/fp-interface/themes/leggero/index.tpl +++ b/fp-interface/themes/leggero/index.tpl @@ -1,25 +1,32 @@ {include file="header.tpl"} -
+{include file="widgetstop.tpl"} - {entry_block} +
- {entry} - {include file='entry-default.tpl'} - {/entry} + {entry_block} - {capture assign='fp_nextpage'}{strip}{nextpage}{/strip}{/capture} - {capture assign='fp_prevpage'}{strip}{prevpage}{/strip}{/capture} - {if $fp_nextpage != '' || $fp_prevpage != ''} - - {/if} + {entry} - {/entry_block} + {include file="entry-default.tpl"} -
+ {/entry} + + {* include file="shared:entry_webshare_button.tpl" *} + + {capture assign='fp_nextpage'}{strip}{nextpage}{/strip}{/capture} + {capture assign='fp_prevpage'}{strip}{prevpage}{/strip}{/capture} + {if $fp_nextpage != '' || $fp_prevpage != ''} + + {/if} + + {/entry_block} + +
{include file="widgets.tpl"} + {include file="footer.tpl"} diff --git a/fp-interface/themes/leggero/leggero-v2/preview.png b/fp-interface/themes/leggero/leggero-v2/preview.png index 32bab87e..ec5fd3e9 100644 Binary files a/fp-interface/themes/leggero/leggero-v2/preview.png and b/fp-interface/themes/leggero/leggero-v2/preview.png differ diff --git a/fp-interface/themes/leggero/leggero-v2/res/column.css b/fp-interface/themes/leggero/leggero-v2/res/column.css index 551c6c05..fdc1a574 100644 --- a/fp-interface/themes/leggero/leggero-v2/res/column.css +++ b/fp-interface/themes/leggero/leggero-v2/res/column.css @@ -1,30 +1,149 @@ -/* -=================== -Leggero CSS Styles -=================== - -Name: Leggero v2 -Author: NoWhereMan, Drudo, Marc Thibeault and Fraenkiman -Version: 1.0 -Module: style.css -*/ - -/* ===== NORMAL DESIGN ===== */ -@media (min-width: 720px) { +/** + * =================== + * Leggero CSS Styles + * =================== + * + * Name: Leggero v2 + * Author: NoWhereMan, Drudo, Marc Thibeault and Fraenkiman + * Version: 1.0 + * Module: common.css + * Description: This design adapts to different screen sizes + * License: FlatPress is licensed under the GNU General Public License v2.0 + */ + +/* ===== NORMAL DESIGN (min. 720) ===== */ + @media (min-width: 720px) { /* ===== COLUMN ===== */ #column { - width: 215px; - margin: 0px 20px 0px 0px; + width: 243px; display: inline-block; - font-size: 90%; + font-size: 93%; height: 1%; margin-bottom: 5px; + color: white; + float: right; + margin: -2.0em 0.6em 0em 0em + } + + #widget_calendar { /* Calendar-Widget */ + font-size: 95% + } + + .comment-quote { /* Last Comments-Widget */ + font-size: 85% + } + + .feed-widget { /* Feed-Buttons Widget */ + margin: 0px; + height: 14px + } + + /* ===== TOP BAR ===== */ + #columntop, + #columnbottom { + margin: 10px; + background: none; + border: none; + font-size: 93%; + clear: both; color: white } -} + + #columntop { + min-height: 20px + } + + #columntop ul { + list-style-type: none; + margin-bottom: 0.5em + } + + #columntop li, + #columnbottom li { + padding: 0px 10px + } + + #columntop ul li, + #columnbottom ul li { + display: inline + } + + /* ===== BOTTOM BAR ===== */ + #columnbottom { + text-align: center + } + + #columnbottom ul { + list-style-type: none + } + } +/* ===== NORMAL DESIGN (min. 900) ===== */ + @media (min-width: 900px) { + /* ===== COLUMN ===== */ + #column { + width: 248px; + font-size: 95%; + margin: -2.0em 1.3em 0em 0em + } + + /* ===== TOP BAR ===== */ + #columntop, + #columnbottom { + font-size: 95% + } + + .feed-widget { /* Feed-Buttons Widget */ + margin: 0px; + height: 16px + } + } + +/* ===== NORMAL DESIGN (min. 1024) ===== */ + @media (min-width: 1024px) { + /* ===== COLUMN ===== */ + #column { + font-size: 96% + } + + /* ===== TOP BAR ===== */ + #columntop, + #columnbottom { + font-size: 96% + } + } + +/* ===== NORMAL DESIGN (min. 1280) ===== */ + @media (min-width: 1280px) { + /* ===== COLUMN ===== */ + #column { + /* font-size: 96% */ + } -/* ===== RESPONSIVE DESIGN ===== */ + /* ===== TOP BAR ===== */ + #columntop, + #columnbottom { + /* font-size: 96% */ + } + } + +/* ===== NORMAL DESIGN (min. 1440) ===== */ + @media (min-width: 1440px) { + /* ===== COLUMN ===== */ + #column { + width: 254px; + font-size: 100% + } + + /* ===== TOP BAR ===== */ + #columntop, + #columnbottom { + font-size: 100% + } + } + + +/* ===== RESPONSIVE DESIGN (max. 719) ===== */ @media (max-width: 719px) { /* ===== COLUMN ===== */ #column { @@ -36,27 +155,87 @@ Module: style.css margin: 5px auto; color: white } + + .feed-widget { /* Feed-Buttons Widget */ + margin: 0px; + height: 12px + } + + div#widget-fontsizeselect, /* hides the widget */ + div#widget-categories { + display: none + } + + /* ===== TOP BAR ===== */ + #columntop, + #columnbottom { + margin: 10px; + background: none; + border: none; + font-size: 100%; + text-align: center; + color: white + } + + #columntop { + min-height: 20px + } + + #columntop ul { + list-style-type: none; + margin-bottom: 0.5em + } + + #columntop li, + #columnbottom li { + padding: 0px 4px + } + + #columntop ul li, + #columnbottom ul li { + display: inline + } + + /* ===== BOTTOM BAR ===== */ + #columnbottom ul { + list-style-type: none + } } #column h4 { /* Titles of the sections */ - margin-bottom: .5em; + margin-bottom: 0.5em; color: white } -#column p, #column div { margin: 5px 0px } +#column p, +#column div { + margin: 5px 0px +} /* === List === */ -#column ul li table { font-size: 100% } - +#column ul li table { + font-size: 100% +} + #column ul { list-style-type: none; margin-right: 10px; - margin-bottom: .5em; + margin-bottom: 0.5em; padding-left: 1em } -#column fieldset { margin: 0 5px 0 5px } +#column fieldset { + margin: 0 5px 0 5px +} + +#column legend { + font-size: 100% +} + +#column img { + max-width: 100%; + margin: 5px 0px +} -#column legend { font-size: 100% } diff --git a/fp-interface/themes/leggero/leggero-v2/res/common.css b/fp-interface/themes/leggero/leggero-v2/res/common.css index 133c4c46..e7fe6040 100644 --- a/fp-interface/themes/leggero/leggero-v2/res/common.css +++ b/fp-interface/themes/leggero/leggero-v2/res/common.css @@ -246,10 +246,10 @@ h4 { font-size: 1.2em } #main { float:left; position: relative; - width: 365px; + width: 347px; font-size: 100%; padding: 25px; - margin: 20px; + margin: 0 20px 20px 20px; background-color: rgba(255,255,255,0.9); border-radius: 3px } @@ -286,21 +286,21 @@ h4 { font-size: 1.2em } #body-container { max-width: 738px } - #main { width: 413px } + #main { width: 395px } } @media (min-width: 820px) { /* Tablet */ #body-container { max-width: 790px } - #main { width: 465px } + #main { width: 432px } } @media (min-width: 960px) { /* Tablet landscape and Netbook */ #body-container { max-width: 930px } - #main { width: 605px } + #main { width: 570px } .responsive_bbcode_video { text-align: unset } @@ -315,7 +315,7 @@ h4 { font-size: 1.2em } #body-container { max-width: 994px } - #main { width: 669px } + #main { width: 635px } .bbcode_video { max-width: 480px !IMPORTANT; @@ -328,7 +328,7 @@ h4 { font-size: 1.2em } #body-container { max-width: 1250px } - #main { width: 925px } + #main { width: 885px } .bbcode_video { max-width: 560px !IMPORTANT; @@ -341,27 +341,27 @@ h4 { font-size: 1.2em } #body-container { max-width: 80% } - #main { width: 78% } + #main { width: 76% } } @media (min-width: 2048px) { - #main { width: 80% } + #main { width: 78% } } @media (min-width: 2400px) { - #main { width: 83% } + #main { width: 81% } } @media (min-width: 3200px) { - #main { width: 87% } + #main { width: 85% } } @media (min-width: 3840px) { - #main { width: 89% } + #main { width: 88% } } diff --git a/fp-interface/themes/leggero/leggero-v2/res/print.css b/fp-interface/themes/leggero/leggero-v2/res/print.css index ea677d31..b8b34746 100644 --- a/fp-interface/themes/leggero/leggero-v2/res/print.css +++ b/fp-interface/themes/leggero/leggero-v2/res/print.css @@ -1,13 +1,14 @@ -/* -=================== -Leggero CSS Styles -=================== - -Name: Leggero v2 -Author: Laborix -Version: 1.0 -Module: print.css -*/ +/** + * =================== + * Leggero CSS Styles + * =================== + * + * Name: Leggero v2 + * Author: Laborix and Fraenkiman + * Version: 1.0 + * Module: print.css + * License: FlatPress is licensed under the GNU General Public License v2.0 + */ body { color: #333; @@ -20,23 +21,53 @@ a { text-decoration: none } -h1 { font-size: 130% } +h1 { + font-size: 130% +} -h2 { font-size: 130% } +h2 { + font-size: 130%; +} -h3 { font-size: 100% } +h3 { + font-size: 100% +} -h4 { font-size: 100% } +h4 { + font-size: 100% +} -.date { font-size: 100% } +.date { + font-size: 100% +} -#column { display: none } +#head h1 a { + color: #000000 +} + +#head p.subtitle { + color: #000000 +} + +#column { + display: none +} + +div#column h4 { + color: #000000 +} -.admincontrols { display: none } +.admincontrols { + display: none +} -.readmore { display: none } +.readmore { + display: none +} -.navigation { display: none } +.navigation { + display: none +} .entry-footer { clear: both; @@ -69,10 +100,39 @@ pre { word-break: break-all } -.link-comments { display: none } +pre, +code { + font-family: "Lucida Console", Monaco, monospace !IMPORTANT; + font-size: 90% +} -hr { display: none } +.link-comments { + display: none +} -#footer { display: none } +hr { + display: none +} -#commentform { display: none } +#footer { + display: none +} + +#commentform { + display: none +} + +#head div.noprint, /* RSS Feed und Suche */ +#columntop, /* Topmenu */ +#columnbottom, /* Bottommenu */ +div.other_contact_options, /* Share- und Kontaktbuttons */ +div#cookieGuardMsg.visible, /* CookieGuard */ +#background-image, +div.webshare-buttons button, +div#topcontrol { /* Zurueck nach oben- Button */ + display: none +} + +* { + font-family: "Open Sans", sans-serif +} diff --git a/fp-interface/themes/leggero/leggero/preview.png b/fp-interface/themes/leggero/leggero/preview.png index 90f9f01c..d0a5d049 100644 Binary files a/fp-interface/themes/leggero/leggero/preview.png and b/fp-interface/themes/leggero/leggero/preview.png differ diff --git a/fp-interface/themes/leggero/leggero/res/column.css b/fp-interface/themes/leggero/leggero/res/column.css index ef88f6e4..5f892e65 100644 --- a/fp-interface/themes/leggero/leggero/res/column.css +++ b/fp-interface/themes/leggero/leggero/res/column.css @@ -1,58 +1,65 @@ -/* -=================== -Leggero CSS Styles -=================== -Ispired by: http://pluxml.org theme default -------------------- - -Name: Leggero -Author: NoWhereMan & drudo -Version: 0.2 -Module: style.css - -last change: 2023-11-01 - -*/ - +/** + * =================== + * Leggero CSS Styles + * =================== + * Ispired by: http://pluxml.org theme default + * ------------------- + * + * Name: Leggero + * Author: NoWhereMan & drudo + * Version: 0.2 + * Module: style.css + * + * last change: 2023-11-01 + */ /* ===== COLUMN ===== */ #column { float: right; - width: 28%; - font-size: 80% !important; - font-size: 75%; - height:1%; - margin: 1em; + width: 29.5%; + font-size: 80%; + height: 1%; + margin: 1em 1em 1em 0em; padding: 0.7em } -#column h4 { - /* Titles of the sections */ - margin-bottom: .5em +#column h4 { /* Titles of the sections */ + margin-bottom: 0.5em } -#column p, #column div { margin: 10px 5px } +#column p, +#column div { + margin: 10px 5px +} -#column a:link, #column a:visited { color: gray } +#column a:link, +#column a:visited { + color: gray +} /* === List === */ -#column ul li table { font-size: 100% } +#column ul li table { + font-size: 100% +} #column ul { list-style-type: none; margin-right: 10px; - margin-bottom: .5em; + margin-bottom: 0.5em; padding-left: 1em } -#column fieldset { margin: 0 5px 0 5px } +#column fieldset { + margin: 0 5px 0 5px +} -#column legend { font-size: 100% } +#column legend { + font-size: 100% +} /* ======================================================= The following definitions take care of the Calendar plugin ======================================================= */ - #widget_calendar table.calendar { font-size: 85% } @@ -91,3 +98,78 @@ The following definitions take care of the Calendar plugin /* ======================================================= End of Calendar plugin ======================================================= */ + +/* ===== TOP BAR ===== */ +#columntop, +#columnbottom { + margin: 10px; + background: none; + border: none; + font-size: 90%; + clear: both; + color: white +} + +#columntop ul { + list-style-type: none; + margin-bottom: 0.5em +} + +#columntop li, +#columnbottom li { + padding: 0px 10px +} + +#columntop ul li, +#columnbottom ul li { + display: inline +} + +/* ===== BOTTOM BAR ===== */ +#columnbottom { + text-align: center +} + +#columnbottom ul { + list-style-type: none +} + +@media (max-width: 768px) { + /* ===== TOP BAR ===== */ + #columntop, + #columnbottom { + margin: 10px; + background: none; + border: none; + font-size: 100%; + text-align: center; + color: white + } + + #columntop ul { + list-style-type: none; + margin-bottom: 0.5em + } + + #columntop li, + #columnbottom li { + padding: 0px 4px + } + + #columntop ul li, + #columnbottom ul li { + display: inline + } + + /* ===== RIGHT MENU ===== */ + #column { + width: 100%; + margin: 0; + padding: 0 + } + + /* ===== BOTTOM BAR ===== */ + #columnbottom ul { + list-style-type: none + } +} diff --git a/fp-interface/themes/leggero/static.tpl b/fp-interface/themes/leggero/static.tpl index 73fa8d85..c018555f 100755 --- a/fp-interface/themes/leggero/static.tpl +++ b/fp-interface/themes/leggero/static.tpl @@ -1,23 +1,38 @@ {include file="header.tpl"} +{include file="widgetstop.tpl"} +
+ + {static_block} + {static} + +
+

{$subject|tag:the_title}

+

+ {if function_exists('plugin_webfonts_head')} + + + {else} + {$lang.staticauthor.published_by} + {/if} {$author} + {if function_exists('plugin_webfonts_head')} +    + {else} + {$lang.staticauthor.on} + {/if}{$date|date_format_daily} +

+ + {$content|tag:the_content} + + {if function_exists('plugin_webshare_head') && function_exists('plugin_webfonts_head')} + {include file="shared:static_webshare.tpl"} + {/if} + +
+ {/static} + + {/static_block} + +
-
- - - {static_block} - {static} -
-

{$subject|tag:the_title}

-

{$lang.staticauthor.published_by} {$author} {$lang.staticauthor.on} {$date|date_format_daily}

- - {$content|tag:the_content} -
- {/static} - - {/static_block} - - -
- {include file="widgets.tpl"} - {include file="footer.tpl"} diff --git a/fp-interface/themes/leggero/stringendo/preview.png b/fp-interface/themes/leggero/stringendo/preview.png index f62b8afd..fc80be80 100644 Binary files a/fp-interface/themes/leggero/stringendo/preview.png and b/fp-interface/themes/leggero/stringendo/preview.png differ diff --git a/fp-interface/themes/leggero/stringendo/res/admin.css b/fp-interface/themes/leggero/stringendo/res/admin.css index 55ffdbe7..28ebc26b 100644 --- a/fp-interface/themes/leggero/stringendo/res/admin.css +++ b/fp-interface/themes/leggero/stringendo/res/admin.css @@ -6,7 +6,7 @@ * Name: Stringendo * Theme: Leggero * Author: Fraenkiman - * Version: 1.5.0 + * Version: 1.5.2 * Module: admin.css * * Admin area adjustments for the Stringendo style. @@ -23,44 +23,6 @@ body[class^="admin-"] a:visited { color: var(--fp-link, var(--fp-accent, #b22222)); } -/* Admin: reverse entry gradient (requested) */ -body[class^="admin-"] .entry { - background: rgb(249, 246, 241); - background: linear-gradient(360deg, rgb(255, 219, 166) 0%, rgb(249, 246, 241) 100%); -} - -/** - * Admin preview (entry/static write): make code blocks responsive. - * The preview uses the front-end template (preview.tpl / previewstatic.tpl) - * which renders the content inside #post-preview .entry. - */ -body.admin-entry-write #post-preview, -body.admin-static-write #post-preview { - max-width: 100%; - min-width: 0; -} - -body[class^="admin-"] #admin-post-preview fieldset { - max-height: 30em; - overflow: auto; -} - -body.admin-entry-write #post-preview .entry pre, -body.admin-static-write #post-preview .entry pre { - max-width: 100%; - overflow-x: auto; - overflow-y: auto; - white-space: pre; - overflow-wrap: normal; - word-break: normal; - -webkit-overflow-scrolling: touch; -} - -body.admin-entry-write #post-preview .entry pre code, -body.admin-static-write #post-preview .entry pre code { - white-space: inherit; -} - /* Admin pages do not render the front-end header (#head) */ body[class^="admin-"] #body-container { max-width: var(--fp-container, 1120px); @@ -209,7 +171,7 @@ body.admin-widgets-blockparser #admin-content table.entrylist td { /* Warm accent for field groups */ body.admin fieldset { - border: 1px solid #ff8c00; + border: 1px solid rgba(var(--fp-accent-3-rgb, 255, 140, 0), .45); } #admin-content tr:last-child td { @@ -227,11 +189,7 @@ body.admin fieldset { font-size: 14px; } -#admin-content td.main-cell { - /* width: 30%; */ -} - -@media (max-width: 1279px) { +@media (max-width: 1280px) { #admin-content table, #admin-content td { font-size: 12px; @@ -347,8 +305,8 @@ body.admin fieldset { html[lang^="en"] #plugin-table td:nth-child(3)::before { content: "Author: "; font-weight: 700; color: var(--fp-text, #0f172a); } html[lang^="en"] #plugin-table td:nth-child(4)::before { content: "Version: "; font-weight: 700; color: var(--fp-text, #0f172a); } - html[lang^="zh"] #plugin-table td:nth-child(3)::before { content: "作者: "; font-weight: 700; color: var(--fp-text, #0f172a); } - html[lang^="zh"] #plugin-table td:nth-child(4)::before { content: "版本: "; font-weight: 700; color: var(--fp-text, #0f172a); } + html[lang^="cn"] #plugin-table td:nth-child(3)::before { content: "作者: "; font-weight: 700; color: var(--fp-text, #0f172a); } + html[lang^="cn"] #plugin-table td:nth-child(4)::before { content: "版本: "; font-weight: 700; color: var(--fp-text, #0f172a); } html[lang^="cs"] #plugin-table td:nth-child(3)::before { content: "Autor: "; font-weight: 700; color: var(--fp-text, #0f172a); } html[lang^="cs"] #plugin-table td:nth-child(4)::before { content: "Verze: "; font-weight: 700; color: var(--fp-text, #0f172a); } @@ -401,6 +359,41 @@ input#subject { font-weight: 500; } +/** + * Entry/static write: preview code blocks must never force page overflow. + * Ensure
 stays within its container and scrolls horizontally when needed.
+ *
+ * NOTE: The preview output uses front-end markup (.entry), so we scope to the
+ * preview wrapper to avoid changing the public site styling.
+ */
+body[class^="admin-"] #admin-post-preview,
+body[class^="admin-"] #admin-post-preview #post-preview,
+body[class^="admin-"] #admin-post-preview .entry {
+	min-width: 0;
+	max-width: 100%;
+}
+
+body[class^="admin-"] #admin-post-preview pre {
+	box-sizing: border-box;
+	max-width: 100%;
+	overflow-x: auto;
+	overflow-y: auto;
+	white-space: pre;
+	word-break: normal;
+	overflow-wrap: normal;
+}
+
+body[class^="admin-"] #admin-post-preview pre code {
+	white-space: inherit;
+	word-break: inherit;
+	overflow-wrap: inherit;
+}
+
+body[class^="admin-"] #admin-post-preview fieldset {
+	max-height: 30em;
+	overflow: auto;
+}
+
 /* BBCode toolbar in admin: keep as icon buttons */
 #admin-bbcode-toolbar {
 	margin: 0 0 .5rem 0;
@@ -470,6 +463,10 @@ input#subject {
 	margin-bottom: 0;
 }
 
+fieldset#admin-bbcode-selectbar p select {
+	margin-top: 0.5em;
+}
+
 /* Emoticons row needs breathing room above the textarea */
 .emoticons {
 	margin: .45rem 0 .85rem;
@@ -687,7 +684,7 @@ dl.option-set dd {
 	border-radius: var(--fp-radius-sm, 10px);
 	background: var(--lt-color-gray-100, #f8f9fc);
 	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
-	font-size: .92em;
+	font-size: 1.1em;
 	overflow-x: auto;
 }
 
@@ -837,10 +834,10 @@ body.admin-uploader-mediamanager #admin-content table.entrylist td.main-cell a.l
 	html[lang^="en"] body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(5)::before { content: 'Uploaded on'; }
 	html[lang^="en"] body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(6)::before { content: 'Action'; }
 
-	html[lang^="zh"] body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(3)::before { content: '用于文章'; }
-	html[lang^="zh"] body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(4)::before { content: '文件大小'; }
-	html[lang^="zh"] body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(5)::before { content: '上传日期'; }
-	html[lang^="zh"] body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(6)::before { content: '操作'; }
+	html[lang^="cn"] body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(3)::before { content: '用于文章'; }
+	html[lang^="cn"] body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(4)::before { content: '文件大小'; }
+	html[lang^="cn"] body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(5)::before { content: '上传日期'; }
+	html[lang^="cn"] body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(6)::before { content: '操作'; }
 
 	html[lang^="cs"] body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(3)::before { content: 'Použito v příspěvcích'; }
 	html[lang^="cs"] body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(4)::before { content: 'Velikost souboru'; }
@@ -982,8 +979,8 @@ body.admin-uploader-mediamanager #admin-content table.entrylist td.main-cell a.l
  * Entry list: filter bar
  * ----------------------------
  */
-body.admin-entry-list #admin-content form[action*="p=entry"] fieldset,
-body.admin-entry-list #admin-content form[action*="p=static"] fieldset,
+body[class^="admin-entry-"] #admin-content form[action*="p=entry"] fieldset,
+body[class^="admin-static-"] #admin-content form[action*="p=static"] fieldset,
 #admin-bbcode-toolbar {
 	display: flex;
 	flex-wrap: wrap;
@@ -991,18 +988,18 @@ body.admin-entry-list #admin-content form[action*="p=static"] fieldset,
 	align-items: center;
 }
 
-body.admin-entry-list #admin-content form[action*="p=entry"] fieldset .alignleft,
-body.admin-entry-list #admin-content form[action*="p=entry"] fieldset .alignright {
+body[class^="admin-entry-"] #admin-content form[action*="p=entry"] fieldset .alignleft,
+body[class^="admin-entry-"] #admin-content form[action*="p=entry"] fieldset .alignright {
 	float: none;
 }
 
-body.admin-entry-list #admin-content form[action*="p=entry"] fieldset select[name="category"] {
+body[class^="admin-entry-"] #admin-content form[action*="p=entry"] fieldset select[name="category"] {
 	width: auto;
 	flex: 1 1 360px;
 	max-width: 560px;
 }
 
-body.admin-entry-list #admin-content form[action*="p=entry"] fieldset input#filter {
+body[class^="admin-entry-"] #admin-content form[action*="p=entry"] fieldset input#filter {
 	width: auto;
 	margin-left: auto;
 	margin-bottom: 0.5em;
@@ -1017,6 +1014,15 @@ body.admin-entry-list #admin-content form[action*="p=entry"] fieldset input#filt
 	}
 }
 
+@media (max-width: 560px) {
+	body[class^="admin-entry-"] #admin-content form[action*="p=entry"] fieldset select[name="category"],
+	body[class^="admin-entry-"] #admin-content form[action*="p=entry"] fieldset input#filter {
+		flex: 1 1 100%;
+		max-width: 100%;
+		margin-left: 0;
+	}
+}
+
 #admin-drafts {
 	padding: 0.4em;
 	color: #555;
@@ -1048,7 +1054,7 @@ body.admin-entry-list #admin-content form[action*="p=entry"] fieldset input#filt
  * Panel: admin.php?p=entry&action=list
  * ----------------------------
  */
-@media (max-width: 1079px) {
+@media (max-width: 1080px) {
 	body.admin-entry-list #admin-content table.entrylist {
 		border: 0;
 		border-radius: 0;
@@ -1168,10 +1174,10 @@ body.admin-entry-list #admin-content form[action*="p=entry"] fieldset input#filt
 	html[lang^="en"] body.admin-entry-list #admin-content table.entrylist td:nth-child(4)::before { content: "Comments"; }
 	html[lang^="en"] body.admin-entry-list #admin-content table.entrylist td:nth-child(5)::before { content: "Action"; }
 
-	html[lang^="zh"] body.admin-entry-list #admin-content table.entrylist td:nth-child(1)::before { content: "日期"; }
-	html[lang^="zh"] body.admin-entry-list #admin-content table.entrylist td:nth-child(3)::before { content: "ID"; }
-	html[lang^="zh"] body.admin-entry-list #admin-content table.entrylist td:nth-child(4)::before { content: "评论数"; }
-	html[lang^="zh"] body.admin-entry-list #admin-content table.entrylist td:nth-child(5)::before { content: "操作"; }
+	html[lang^="cn"] body.admin-entry-list #admin-content table.entrylist td:nth-child(1)::before { content: "日期"; }
+	html[lang^="cn"] body.admin-entry-list #admin-content table.entrylist td:nth-child(3)::before { content: "ID"; }
+	html[lang^="cn"] body.admin-entry-list #admin-content table.entrylist td:nth-child(4)::before { content: "评论数"; }
+	html[lang^="cn"] body.admin-entry-list #admin-content table.entrylist td:nth-child(5)::before { content: "操作"; }
 
 	html[lang^="cs"] body.admin-entry-list #admin-content table.entrylist td:nth-child(1)::before { content: "Datum"; }
 	html[lang^="cs"] body.admin-entry-list #admin-content table.entrylist td:nth-child(3)::before { content: "ID"; }
@@ -1360,6 +1366,10 @@ body[class^="admin-entry-"] #admin-date select {
 	margin-bottom: 0;
 }
 
+fieldset#plugin_datechanger label {
+	margin-bottom: 0.5em;
+}
+
 /**
  * ----------------------------
  * Widgets panel: draggable list items
@@ -1526,6 +1536,10 @@ body[class^="admin-"] #footer {
 	display: block !IMPORTANT;
 }
 
+#tagplace span {
+	cursor: pointer;
+}
+
 /* Comment center plugin */
 body.admin-entry-commentcenter dl.option-set {
 	align-items: baseline;
@@ -1542,6 +1556,11 @@ body.admin-plugin-newsletter #admin-content th {
 	display: none;
 }
 
+/* Bottom menu */
+#columnbottom ul {
+	padding: 0 0.5rem;
+}
+
 /* Chrome, Edge, and Safari - the right Scrollbar */
 @supports selector(::-webkit-scrollbar) {
 	body::-webkit-scrollbar {
@@ -1549,7 +1568,7 @@ body.admin-plugin-newsletter #admin-content th {
 	}
 
 	body::-webkit-scrollbar-thumb {
-		background-color: var(--fp-scroll, #6b6c6d) !IMPORTANT;
+		background-color: var(--fp-scroll, #6b6c6d);
 		border-radius: 3px;
 	}
 }
@@ -1558,116 +1577,70 @@ body.admin-plugin-newsletter #admin-content th {
 @supports (-moz-appearance:button) and (contain:paint) {
 	* {
 		scrollbar-width: thin;
-		scrollbar-color: var(--fp-scroll, #6b6c6d) var(--fp-bg, #f6f7fb) !IMPORTANT;
+		scrollbar-color: var(--fp-scroll, #6b6c6d) var(--fp-bg, #f6f7fb);
 	}
 }
 
+/* The bottom Scrollbar */
+#scrollIndicator.line {
+	background: var(--fp-scroll, #6b6c6d);
+}
+
 /* ---------- Admin dark mode refinements ---------- */
 @media (prefers-color-scheme: dark) {
-	body[class^="admin-"] .entry {
-		background: var(--fp-admin-entry-gradient, linear-gradient(180deg, #182538 0%, #0f1724 100%));
-	}
-
-	body.admin fieldset {
-		border-color: rgba(var(--fp-accent-3-rgb, 240, 179, 95), 0.55);
-	}
-
-	ul#admin-tabmenu,
-	#admin-submenu,
-	#admin-content table,
-	#admin-content td,
-	#admin-content th,
-	#admin-drafts {
-		border-color: var(--fp-border, #304158);
-	}
-
-	ul#admin-tabmenu,
-	#admin-content th {
-		background: rgba(24, 34, 51, 0.95);
-	}
-
-	#admin-submenu,
-	#admin-content table,
-	#admin-content td {
-		background: rgba(15, 23, 36, 0.96);
-	}
-
-	ul#admin-tabmenu a:hover,
-	#admin-submenu a:hover,
-	#admin-submenu a.active {
-		background: rgba(var(--fp-accent-3-rgb, 240, 179, 95), 0.2);
-		color: var(--fp-text, #e7edf7);
-	}
-
-	ul#admin-tabmenu a.admin-tab-current,
-	#admin-submenu a.active {
-		background: linear-gradient(135deg, #c67a27 0%, #f0b35f 100%);
-		border-color: rgba(var(--fp-accent-3-rgb, 240, 179, 95), 0.42);
-		color: var(--fp-button-text, #000000);
+	body[class^="admin-"] #admin-content td::before,
+	body[class^="admin-"] #admin-content table.entrylist td::before {
+		color: var(--fp-muted, #b5c3d6);
 	}
 
 	a.link-delete:hover,
 	a.link-disable:hover {
-		background-color: rgba(248, 113, 113, 0.18);
+		background-color: rgba(248, 113, 113, .16);
 		color: #fecaca;
 	}
 
 	a.link-enable:hover {
-		background-color: rgba(74, 222, 128, 0.18);
+		background-color: rgba(74, 222, 128, .16);
 		color: #bbf7d0;
 	}
 
 	a.link-general:hover {
-		background-color: rgba(148, 163, 184, 0.14);
-		color: var(--fp-text, #e7edf7);
+		background-color: rgba(148, 163, 184, .14);
+		color: var(--fp-text, #eef4ff);
 	}
 
 	#admin-drafts {
-		color: #e7d6a8;
-		border-color: rgba(245, 158, 11, 0.36);
-		background: rgba(120, 53, 15, 0.28);
+		color: #fde68a;
+		border-color: rgba(251, 191, 36, .34);
+		background: rgba(120, 53, 15, .24);
 	}
 
-	body[class^="admin-"] code,
-	body[class^="admin-"] pre,
-	body[class^="admin-"] kbd,
-	body[class^="admin-"] samp,
-	body[class^="admin-"] tt,
-	#admin-content dl dd code,
-	#admin-content dl dd pre {
-		background: rgba(24, 34, 51, 0.95);
-		border-color: var(--fp-border, #304158);
-		color: var(--fp-text, #e7edf7);
+	#admin-bbcode-toolbar p .bb-button {
+		border-color: rgba(var(--fp-accent-2-rgb, 255, 179, 71), .35);
+		background: var(--fp-accent-gradient, linear-gradient(135deg, var(--fp-accent-2, #ffb347) 0%, var(--fp-accent-3, #ffd166) 100%));
+		color: var(--fp-button-text, #000000);
 	}
 
-	body[class^="admin-"] #manage-widgets li.widget-class,
-	body[class^="admin-"] #manage-widgets li.widget-instance,
-	body[class^="admin-"] #manage-widgets li.widget-placeholder {
-		background: rgba(15, 23, 36, 0.96);
-		border-color: var(--fp-border, #304158);
+	#admin-bbcode-toolbar p .bb-button:hover {
+		background: var(--fp-accent-gradient-hover, linear-gradient(135deg, var(--fp-accent, #ff8c00) 0%, var(--fp-accent-3, #ffd166) 100%));
+		border-color: rgba(var(--fp-accent-2-rgb, 255, 179, 71), .45);
 	}
 
-	#admin-bbcode-toolbar p .bb-button,
-	.bb-btn-tlb button.bb-button {
-		background: var(--fp-accent-gradient, linear-gradient(135deg, #b36b18 0%, #f0b35f 100%));
-		border-color: rgba(var(--fp-accent-2-rgb, 183, 116, 40), 0.55);
-		color: var(--fp-button-text, #000000);
-		box-shadow: 0 8px 18px rgba(0, 0, 0, 0.22);
+	#admin-bbcode-toolbar p .bb-button:focus-visible {
+		border-color: rgba(var(--fp-focus-rgb, 124, 197, 255), .55);
+		box-shadow: 0 0 0 4px rgba(var(--fp-focus-rgb, 124, 197, 255), .18);
 	}
 
-	#admin-bbcode-toolbar p .bb-button:hover,
-	#admin-bbcode-toolbar button.bb-button:hover {
-		background: var(--fp-accent-gradient-hover, linear-gradient(135deg, #c67a27 0%, #ffd39d 100%));
-		border-color: rgba(var(--fp-accent-2-rgb, 183, 116, 40), 0.65);
-		color: var(--fp-button-text, #000000);
-		box-shadow: 0 0 0 4px rgba(var(--fp-accent-3-rgb, 240, 179, 95), 0.16), 0 10px 22px rgba(0, 0, 0, 0.28);
+	body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(3),
+	body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(4),
+	body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(5),
+	body.admin-uploader-mediamanager #admin-content table.entrylist td:nth-child(6) {
+		border-top-color: rgba(181, 195, 214, .16);
 	}
 
-	#admin-bbcode-toolbar p .bb-button:focus-visible,
-	#admin-bbcode-toolbar button.bb-button:focus-visible {
-		outline: none;
-		border-color: rgba(var(--fp-focus-rgb, 139, 194, 255), 0.68);
-		box-shadow: 0 0 0 4px rgba(var(--fp-focus-rgb, 139, 194, 255), 0.18), 0 10px 22px rgba(0, 0, 0, 0.28);
+	/* Config panel */
+	#admin-config dl.option-list dd code {
+		background: var(--fp-surface, #121a28);
 	}
 
 	/* Widget panel */
@@ -1689,6 +1662,20 @@ body.admin-plugin-newsletter #admin-content th {
 		background: var(--fp-surface-2, #182235);
 	}
 
+	/* Tag plugin */
+	#tagplace span {
+		background: var(--lt-color-gray-600, #5e636e);
+		border-radius: 3px;
+	}
+
+	#tagplace span:hover {
+		background: var(--lt-color-gray-700, #2f3237);
+	}
+
+	.tagsuggestions {
+		background: var(--fp-surface, #182235);
+	}
+
 	/* APCu panel */
 	.apcu-status-good {
 		background: rgba(20, 83, 45, .32) !IMPORTANT;
@@ -1699,7 +1686,7 @@ body.admin-plugin-newsletter #admin-content th {
 	}
 
 	.apcu-card {
-		background: var(--qb-highlight-sentence-from-caret-background-color, #4343431a) !IMPORTANT;
+		background: var(--qb-highlight-sentence-from-caret-background-color) #4343431a !IMPORTANT;
 		border: 1px solid rgba(var(--fp-accent-3-rgb), .45) !IMPORTANT;
 	}
 
@@ -1708,31 +1695,22 @@ body.admin-plugin-newsletter #admin-content th {
 		background: var(--fp-muted, #b5c3d6) !IMPORTANT;
 	}
 
-	/* Tag plugin */
-	#tagplace span {
-		background: var(--lt-color-gray-600, #5e636e);
-		border-radius: 3px;
-	}
-
-	#tagplace span:hover {
-		background: var(--lt-color-gray-700, #2f3237);
-	}
-
-	.tagsuggestions {
-		background: var(--fp-surface, #182235);
-	}
-
 	/* Chrome, Edge, and Safari - the right Scrollbar */
 	@supports selector(::-webkit-scrollbar) {
 		body::-webkit-scrollbar-thumb {
-			background-color: var(--fp-scroll, #815523) !IMPORTANT;
+			background-color: var(--fp-scroll, #815523);
 		}
 	}
 
 	/* Firefox - the right Scrollbar */
 	@supports (-moz-appearance:button) and (contain:paint) {
 		* {
-			scrollbar-color: var(--fp-scroll, #815523) var(--fp-bg, #060d18) !IMPORTANT;
+			scrollbar-color: var(--fp-scroll, #815523) var(--fp-bg, #060d18);
 		}
 	}
+
+	/* The bottom Scrollbar */
+	#scrollIndicator.line {
+		background: var(--fp-scroll, #815523);
+	}
 }
diff --git a/fp-interface/themes/leggero/stringendo/res/column.css b/fp-interface/themes/leggero/stringendo/res/column.css
index cd517a14..87ea2083 100644
--- a/fp-interface/themes/leggero/stringendo/res/column.css
+++ b/fp-interface/themes/leggero/stringendo/res/column.css
@@ -6,7 +6,7 @@
  * Name: Stringendo
  * Theme: Leggero
  * Author: Fraenkiman
- * Version: 1.5.0
+ * Version: 1.5.2
  * Module: column.css
  *
  * Sidebar / widgets column.
@@ -39,7 +39,7 @@
 	}
 }
 
-@media (max-width: 959px) {
+@media (max-width: 1079px) {
 	#column {
 		width: 100%;
 		flex: 0 0 auto;
@@ -49,8 +49,7 @@
 /* Each widget is a card */
 #column > div,
 .stringendo-widgets-under-main > div {
-	background: rgb(247, 240, 223);
-	background: linear-gradient(180deg, rgb(247, 240, 223) 0%, rgb(253, 198, 154) 100%);
+	background: var(--fp-widget-bg, linear-gradient(180deg, rgb(247, 240, 223) 0%, rgb(253, 198, 154) 100%));
 	border: 1px solid var(--fp-border, #e2e8f0);
 	border-radius: var(--fp-radius, 14px);
 	box-shadow: var(--fp-shadow-sm, 0 2px 10px rgba(2, 6, 23, 0.06));
@@ -70,6 +69,13 @@
 	gap: var(--fp-space-5, 1.25rem);
 }
 
+/* When no widgets were moved, keep the (JS-created) container out of the layout. */
+.stringendo-widgets-under-main:empty,
+.stringendo-widgets-under-main.stringendo-under-empty {
+	display: none;
+	margin-top: 0;
+}
+
 @media (min-width: 720px) {
 	.stringendo-widgets-under-main {
 		grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -86,6 +92,21 @@
 	}
 }
 
+#columntop ul,
+#columnbottom ul {
+	padding: 0 0.5rem;
+}
+
+#columntop li,
+#columnbottom li {
+	margin: 0 0.5rem;
+}
+
+#columnbottom {
+	margin-top: var(--fp-space-5, 1.25rem);
+}
+
+
 /**
  * Progressive reveal for under-main widget grid:
  * If frontend fade-in is active, keep this grid hidden until #column finished fading in.
@@ -206,16 +227,3 @@ html.fp-fadein body:not([class^="admin-"]) .stringendo-widgets-under-main.string
 	font-size: .95rem;
 	margin-bottom: .35rem;
 }
-
-@media (prefers-color-scheme: dark) {
-	#column > div,
-	.stringendo-widgets-under-main > div {
-		background: var(--fp-widget-gradient, linear-gradient(180deg, #182538 0%, #0f1724 100%));
-		border-color: var(--fp-border, #304158);
-	}
-
-	#column h4,
-	.stringendo-widgets-under-main h4 {
-		color: var(--fp-heading, #ffd39d);
-	}
-}
diff --git a/fp-interface/themes/leggero/stringendo/res/common.css b/fp-interface/themes/leggero/stringendo/res/common.css
index 906cd127..0d4cc769 100644
--- a/fp-interface/themes/leggero/stringendo/res/common.css
+++ b/fp-interface/themes/leggero/stringendo/res/common.css
@@ -6,7 +6,7 @@
  * Name: Stringendo
  * Theme: Leggero
  * Author: Fraenkiman
- * Version: 1.5.0
+ * Version: 1.5.2
  * Module: common.css
  *
  * Modern, bright and responsive presentation layer.
@@ -41,52 +41,55 @@
 
 /* ---------- Design tokens ---------- */
 :root {
-	/* Let form controls use a light palette */
-	color-scheme: light;
-
+	/* Let form controls follow the active browser/system palette */
+	color-scheme: light dark;
 	--fp-container: 1366px;
 	--fp-sidebar: 320px;
-
 	--fp-bg: #f6f7fb;
 	--fp-surface: #ffffff;
 	--fp-surface-2: #f1f5f9;
 	--fp-text: #0f172a;
 	--fp-muted: #475569;
 	--fp-border: #e2e8f0;
-
 	--fp-accent: #b22222;
 	--fp-accent-2: #8b0000;
 	--fp-accent-3: #ff8c00;
 	--fp-accent-4: #4b0082;
 	--fp-accent-soft: #ffe4e6;
 	--fp-accent-soft-2: #ffedd5;
-
 	--fp-link: #007fff;
 	--fp-link-hover: #b22222;
 	--fp-link-visited: #800080;
-
 	--fp-accent-rgb: 178, 34, 34;
 	--fp-accent-2-rgb: 139, 0, 0;
 	--fp-accent-3-rgb: 255, 140, 0;
 	--fp-link-rgb: 0, 127, 255;
 	--fp-focus-rgb: 0, 127, 255;
-
 	--fp-accent-gradient: linear-gradient(135deg, var(--fp-accent-2) 0%, var(--fp-accent-3) 100%);
 	--fp-accent-gradient-hover: linear-gradient(135deg, var(--fp-accent) 0%, var(--fp-accent-3) 100%);
-
 	--fp-shadow-sm: 0 2px 10px rgba(2, 6, 23, 0.06);
 	--fp-shadow: 0 10px 30px rgba(2, 6, 23, 0.10);
-
 	--fp-radius: 14px;
 	--fp-radius-sm: 10px;
-
 	--fp-space-1: .25rem;
 	--fp-space-2: .5rem;
 	--fp-space-3: .75rem;
 	--fp-space-4: 1rem;
 	--fp-space-5: 1.25rem;
 	--fp-space-6: 1.5rem;
-
+	--fp-search-mag: rgba(15, 23, 42, .55);
+	--fp-heading: #8b0000;
+	--fp-header-gradient: linear-gradient(180deg, #ff8c00 0%, #8b0000 100%);
+	--fp-header-title: #0f172a;
+	--fp-header-subtitle: #f8f9fc;
+	--fp-header-link: #f8f9fc;
+	--fp-entry-bg: linear-gradient(1deg, rgb(255, 219, 166) 0%, rgb(249, 246, 241) 100%);
+	--fp-widget-bg: linear-gradient(180deg, rgb(247, 240, 223) 0%, rgb(253, 198, 154) 100%);
+	--fp-admin-entry-bg: linear-gradient(360deg, rgb(255, 219, 166) 0%, rgb(249, 246, 241) 100%);
+	--fp-cookie-bg: rgba(255, 255, 255, .95);
+	--fp-cookie-border: var(--fp-border, #e2e8f0);
+	--fp-pattern-dot-rgb: 255, 140, 0;
+	--fp-button-text: #ffffff;
 	--fp-scroll: #6b6c6d;
 }
 
@@ -96,6 +99,48 @@
 	}
 }
 
+@media (prefers-color-scheme: dark) {
+	:root {
+		color-scheme: dark;
+		--fp-bg: #060d18;
+		--fp-surface: #121a28;
+		--fp-surface-2: #182235;
+		--fp-text: #eef4ff;
+		--fp-muted: #b5c3d6;
+		--fp-border: #2a3850;
+		--fp-accent: #ff8c00;
+		--fp-accent-2: #ffb347;
+		--fp-accent-3: #ffd166;
+		--fp-accent-4: #c792ea;
+		--fp-accent-soft: #3a1820;
+		--fp-accent-soft-2: #342314;
+		--fp-link: #7cc5ff;
+		--fp-link-hover: #ffd166;
+		--fp-link-visited: #d8b4fe;
+		--fp-accent-rgb: 255, 140, 0;
+		--fp-accent-2-rgb: 255, 179, 71;
+		--fp-accent-3-rgb: 255, 209, 102;
+		--fp-link-rgb: 124, 197, 255;
+		--fp-focus-rgb: 124, 197, 255;
+		--fp-shadow-sm: 0 12px 26px rgba(0, 0, 0, 0.32);
+		--fp-shadow: 0 18px 48px rgba(0, 0, 0, 0.42);
+		--fp-search-mag: rgba(238, 244, 255, .68);
+		--fp-heading: #ffb347;
+		--fp-header-gradient: linear-gradient(180deg, #5a1f0d 0%, #1f0b05 100%);
+		--fp-header-title: #fff1d6;
+		--fp-header-subtitle: #ffd9a0;
+		--fp-header-link: #ffe5bd;
+		--fp-entry-bg: linear-gradient(180deg, rgba(28, 20, 13, .95) 0%, rgba(16, 22, 34, .98) 100%);
+		--fp-widget-bg: linear-gradient(180deg, rgba(43, 30, 17, .96) 0%, rgba(20, 27, 41, .98) 100%);
+		--fp-admin-entry-bg: linear-gradient(180deg, rgba(51, 35, 20, .96) 0%, rgba(18, 24, 38, .98) 100%);
+		--fp-cookie-bg: rgba(11, 18, 32, .96);
+		--fp-cookie-border: #2a3850;
+		--fp-pattern-dot-rgb: 183, 116, 40;
+		--fp-button-text: #000000;
+		--fp-scroll: #815523;
+	}
+}
+
 /* ---------- Base reset ---------- */
 * {
 	box-sizing: border-box;
@@ -116,13 +161,21 @@ body {
 	color: var(--fp-text, #0f172a);
 	background-color: var(--fp-bg, #f6f7fb);
 	/* SVG pattern + tiny gradient fallback (visible even if SVG fails to load) */
-	background-image: url('../imgs/bg.svg'), radial-gradient(circle at 1px 1px, rgba(var(--fp-accent-3-rgb, 255, 140, 0), .045) 1px, transparent 0);
+	background-image: url('../imgs/bg.svg'), radial-gradient(circle at 1px 1px, rgba(var(--fp-pattern-dot-rgb, 255, 140, 0), .045) 1px, transparent 0);
 	background-repeat: repeat, repeat;
 	background-size: 600px 600px, 36px 36px;
 	background-position: top left, top left;
 	background-attachment: scroll, scroll;
 }
 
+#background-image {
+	display: none;
+}
+
+#background-svg {
+	display: none;
+}
+
 img,
 svg,
 video {
@@ -147,8 +200,9 @@ h4 {
 }
 
 h2, h3, h4 {
-	color: #8b0000;
+	color: var(--fp-heading, #8b0000);
 }
+
 /* Improve focus visibility without being loud */
 :focus-visible {
 	outline: 3px solid rgba(var(--fp-focus-rgb, 0, 127, 255), .38);
@@ -173,6 +227,7 @@ a:hover {
 
 /* ---------- Layout ---------- */
 #body-container {
+	/* max-width: var(--fp-container, 1279px); */
 	max-width: var(--fp-container, 1366px);
 	margin: 0 auto;
 	padding: var(--fp-space-5, 1.25rem);
@@ -185,35 +240,127 @@ a:hover {
 }
 
 #head {
-	background: linear-gradient(180deg, #ff8c00 0%, #8b0000 100%);
+	background: var(--fp-header-gradient, linear-gradient(180deg, #ff8c00 0%, #8b0000 100%));
 	border: 1px solid var(--fp-border, #e2e8f0);
 	border-radius: var(--fp-radius, 14px);
 	box-shadow: var(--fp-shadow-sm, 0 2px 10px rgba(2, 6, 23, 0.06));
 	padding: var(--fp-space-6, 1.5rem);
+	/* Layout: title/subtitle left, feeds+search right */
+	display: grid;
+	grid-template-columns: 1fr minmax(14rem, 22rem);
+	grid-template-areas:
+		"title noprint"
+		"subtitle noprint";
+	column-gap: var(--fp-space-5, 1.25rem);
+	row-gap: .1rem;
 }
 
 #head h1 {
+	grid-area: title;
 	margin: 0;
 	font-size: clamp(1.7rem, 2.4vw, 2.35rem);
 	line-height: 1.15;
 	letter-spacing: -0.02em;
+	text-align: left;
 }
 
 #head h1 a {
-	color: #0f172a;
+	color: var(--fp-header-title, #0f172a);
 }
 
 #head .subtitle {
+	grid-area: subtitle;
 	margin: var(--fp-space-2, .5rem) 0 0 0;
-	color: #f8f9fc;
+	color: var(--fp-header-subtitle, #f8f9fc);
 	font-size: 1.02rem;
+	text-align: left;
+}
+
+/* Header right block: RSS/Atom/help + search */
+#head .noprint {
+	grid-area: noprint;
+	justify-self: end;
+	align-self: start;
+	text-align: right;
+	line-height: 1.35;
+	color: var(--fp-header-link, var(--fp-surface, rgba(248, 249, 252, 1)));
+}
+
+#head .noprint a {
+	color: var(--fp-header-link, var(--fp-surface, rgba(248, 249, 252, 1)));
+}
+
+#head .noprint form {
+	margin: .35rem 0 0 0;
+	position: relative;
+}
+
+#head .noprint input[type="text"] {
+	margin: 0;
+	padding-right: 2.35rem;
+}
+
+#head .noprint input[type="text"]::placeholder {
+	color: var(--fp-search-mag, rgba(15, 23, 42, .55));
+	opacity: 1;
+}
+
+/* Search button inside the input, neutral (no gradient/background) */
+#head .noprint button.search-button {
+	position: absolute;
+	right: .25rem;
+	top: 50%;
+	transform: translateY(-50%);
+	appearance: none;
+	border: 0;
+	background: transparent;
+	box-shadow: none;
+	padding: 0;
+	width: 2rem;
+	height: 2rem;
+	border-radius: 999px;
+	color: var(--fp-search-mag, rgba(15, 23, 42, .55));
+	display: inline-flex;
+	align-items: center;
+	justify-content: center;
+	line-height: 1;
+}
+
+#head .noprint button.search-button:hover {
+	background: transparent;
+}
+
+#head .noprint button.search-button:focus-visible {
+	outline: none;
+	box-shadow: 0 0 0 4px rgba(var(--fp-focus-rgb, 0, 127, 255), .18);
+}
+
+#head .noprint button.search-button i {
+	color: inherit;
+}
+
+/* Responsive: stack header blocks on small screens */
+@media (max-width: 799px) {
+	#head {
+		grid-template-columns: 1fr;
+		grid-template-areas:
+			"title"
+			"subtitle"
+			"noprint";
+	}
+
+	#head .noprint {
+		justify-self: stretch;
+		text-align: right;
+		margin-top: .6rem;
+	}
 }
 
 /* Stringendo: headings a bit more "drängend" */
 h2,
 h3,
 h4 {
-	color: #8b0000;
+	color: var(--fp-heading, #8b0000);
 }
 
 #outer-container {
@@ -224,41 +371,47 @@ h4 {
 	margin-top: var(--fp-space-5, 1.25rem);
 }
 
+/* Keep the optional top widget bar as a full-width row inside the flex layout. */
+#columntop {
+	flex: 0 0 100%;
+	order: 0;
+}
+
 #main,
 #cpmain {
 	flex: 1 1 0;
 	min-width: 0;
 }
 
-	/* Fade-in: main first, then column (frontend only; JS adds html.fp-fadein). */
-	html.fp-fadein body:not([class^="admin-"]) #main {
-		opacity: 0;
-		animation: fpStringendoFadeIn 320ms ease-out 0ms both;
-		will-change: opacity, transform;
-	}
+/* Fade-in: main first, then column (frontend only; JS adds html.fp-fadein). */
+html.fp-fadein body:not([class^="admin-"]) #main {
+	opacity: 0;
+	animation: fpStringendoFadeIn 320ms ease-out 0ms both;
+	will-change: opacity, transform;
+}
 
-	html.fp-fadein body:not([class^="admin-"]) #column {
-		opacity: 0;
-		animation: fpStringendoFadeInOpacity 260ms ease-out 140ms both;
-		will-change: opacity;
-	}
+html.fp-fadein body:not([class^="admin-"]) #column {
+	opacity: 0;
+	animation: fpStringendoFadeInOpacity 260ms ease-out 140ms both;
+	will-change: opacity;
+}
 
-	@media (prefers-reduced-motion: reduce) {
-		html.fp-fadein body:not([class^="admin-"]) #main,
-		html.fp-fadein body:not([class^="admin-"]) #column {
-			animation: none;
-			opacity: 1;
-			transform: none;
-			will-change: auto;
-		}
+@media (prefers-reduced-motion: reduce) {
+	html.fp-fadein body:not([class^="admin-"]) #main,
+	html.fp-fadein body:not([class^="admin-"]) #column {
+		animation: none;
+		opacity: 1;
+		transform: none;
+		will-change: auto;
 	}
+}
 
 /* Admin pages use only #cpmain, no sidebar */
 body[class^="admin-"] #outer-container {
 	gap: var(--fp-space-4, 1rem);
 }
 
-@media (max-width: 959px) {
+@media (max-width: 1079px) {
 	#body-container {
 		padding: var(--fp-space-4, 1rem);
 	}
@@ -278,8 +431,7 @@ body[class^="admin-"] #outer-container {
 
 /* ---------- Content blocks ---------- */
 .entry {
-	background: rgb(249, 246, 241);
-	background: linear-gradient(1deg, rgb(255, 219, 166) 0%, rgb(249, 246, 241) 100%);
+	background: var(--fp-entry-bg, linear-gradient(1deg, rgb(255, 219, 166) 0%, rgb(249, 246, 241) 100%));
 	border: 1px solid var(--fp-border, #e2e8f0);
 	border-radius: var(--fp-radius, 14px);
 	box-shadow: var(--fp-shadow-sm, 0 2px 10px rgba(2, 6, 23, 0.06));
@@ -291,11 +443,10 @@ body[class^="admin-"] #outer-container {
 /* Date heading printed once for same-day entries */
 h2.date {
 	margin: 0 0 var(--fp-space-2, .5rem) 0;
-	font-size: .85rem;
-	font-weight: 500;
+	font-size: .92rem;
 	color: var(--fp-muted, #475569);
 	letter-spacing: .06em;
-	text-transform: uppercase;
+	font-weight: normal;
 }
 
 .entry-title,
@@ -414,7 +565,10 @@ h2.date {
 
 .entry pre {
 	background: var(--fp-surface-2, #f1f5f9);
-	border: 1px solid var(--fp-border, #e2e8f0);
+	border-left: 5px solid var(--fp-accent);
+	border-right: 1px solid var(--fp-accent);
+	border-top: 1px solid var(--fp-accent);
+	border-bottom: 1px solid var(--fp-accent);
 	border-radius: var(--fp-radius-sm, 10px);
 	padding: var(--fp-space-4, 1rem);
 	overflow: auto;
@@ -499,7 +653,7 @@ table th {
 
 .entry-footer strong {
 	color: var(--fp-text, #0f172a);
-	font-weight: 700;
+	font-weight: 800;
 }
 
 .entry-footer a {
@@ -596,11 +750,16 @@ button:not(.leaflet-control):not(.pswp__button):not(.bb-button) {
 	border: 1px solid rgba(var(--fp-accent-2-rgb, 139, 0, 0), .35);
 	border-radius: 999px;
 	background: var(--fp-accent-gradient, var(--fp-accent, #b22222));
-	color: #ffffff;
+	color: var(--fp-button-text, #ffffff);
 	padding: .55rem 1rem;
 	font-weight: 500;
 	cursor: pointer;
 	text-decoration: none;
+	display: inline-flex;
+	align-items: center;
+	justify-content: center;
+	line-height: 1.4;
+	text-align: center;
 }
 
 input[type="submit"]:hover,
@@ -612,12 +771,6 @@ button:not(.leaflet-control):not(.pswp__button):not(.bb-button):hover {
 	background: var(--fp-accent-gradient-hover, var(--fp-accent-2, #8b0000));
 }
 
-.link-comments a,
-.readmore {
-	display: inline-flex;
-	align-items: center;
-}
-
 /**
  * BBCode & emoticon toolbars (frontend + admin): keep neutral icon buttons.
  * Must override the general button styling (accent gradients) reliably.
@@ -686,8 +839,18 @@ button:not(.leaflet-control):not(.pswp__button):not(.bb-button):disabled {
 	text-align: center;
 }
 
+.webshare {
+	display: inline-flex;
+	justify-content: center;
+	align-items: center;
+	border-radius: 50%;
+	width: 2em;
+	height: 2em;
+	margin: 0.3em 0em 0.3em 0em;
+}
+
 fieldset {
-	border: 1px solid #ff8c00;
+	border: 1px solid rgba(var(--fp-accent-3-rgb, 255, 140, 0), .45);
 	border-radius: var(--fp-radius-sm, 10px);
 	padding: var(--fp-space-4, 1rem);
 	margin-bottom: 1em;
@@ -814,6 +977,10 @@ ol#comments ol {
 	list-style: decimal;
 }
 
+ol#comments li {
+	background: rgb(255, 219, 166);
+}
+
 ol#comments blockquote {
 	margin: 1rem 0;
 	padding: .85rem 1rem;
@@ -879,14 +1046,23 @@ ol#comments pre code {
 	div.floatright,
 	.img-gallery div.photoswipe figure { /* unset photoswipe.css */
 		float: unset;
+		
+	}
+
+	div.photoswipe figure { /* unset photoswipe.css */
+		margin: auto !IMPORTANT;
+	}
+
+	div.photoswipe figcaption {
+		width: 100% !IMPORTANT;
 	}
 
 	div.floatright,
 	div.floatleft,
 	div.photoswipe.thumbnail.nofloat {
+		width: unset !IMPORTANT;
 		margin-left: auto;
 		margin-right: auto;
-		width: unset !IMPORTANT;
 		text-align: center;
 	}
 
@@ -900,18 +1076,20 @@ ol#comments pre code {
 	border-radius: 3px;
 }
 
+div.photoswipe figcaption {
+	font-size: 12px !IMPORTANT;
+}
+
 .pswp__img {
 	border-radius: 3px
 }
 
 /**
  * Widgets that overflow the sidebar can be moved below #main via widgets-under-main.js.
- * Ensure the under-main container spans a full row (no matter the sidebar layout).
+ * The under-main container lives outside #outer-container and spans the full content width.
  */
-#outer-container > .stringendo-widgets-under-main {
-	flex: 0 0 100%;
+.stringendo-widgets-under-main {
 	width: 100%;
-	order: 10;
 }
 
 /* If the sidebar becomes empty, let #main use the full width */
@@ -924,6 +1102,44 @@ ol#comments pre code {
 }
 
 /* BBCode Video + GDPR-Video */
+.responsive_bbcode_video {
+	position: relative;
+	display: block;
+	box-sizing: border-box;
+	max-width: 100%;
+	width: 560px;
+	height: 315px;
+	margin-bottom: 0.5rem;
+}
+
+.responsive_bbcode_video > .video-responsive_bbcode_video {
+	position: relative;
+	display: block;
+	box-sizing: border-box;
+	width: 100% !IMPORTANT;
+	height: 100% !IMPORTANT;
+	max-width: 100%;
+	background-color: var(--qb-highlight-style-error-selected-background-color, #4343431a);
+	box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.1);
+	border-radius: 3px;
+	overflow: hidden;
+}
+
+.responsive_bbcode_video.video-float-left {
+	float: left;
+	margin: 0 1rem 0.5rem 0;
+}
+
+.responsive_bbcode_video.video-float-right {
+	float: right;
+	margin: 0 0 0.5rem 1rem;
+}
+
+.responsive_bbcode_video.video-float-nofloat {
+	margin-left: auto;
+	margin-right: auto;
+}
+
 .responsive_bbcode_video button {
 	height: unset !IMPORTANT;
 }
@@ -939,37 +1155,117 @@ ol#comments pre code {
 	margin: 0px 3px 0px 0px;
 }
 
-@media (min-width: 1080px) {
-	.bbcode_video {
-		width: 640px !IMPORTANT;
-		height: 360px !IMPORTANT;
+/* Captcha plugin */
+img#captcha {
+	border-radius: 10px;
+}
+
+input#aspam_code {
+	margin-top: 0.3rem;
+}
+
+/* Desktop PC */
+@media (max-width: 1365px) {
+	.bbcode_video,
+	.responsive_bbcode_video {
+		width: 470px;
+		height: 265px;
+	}
+}
+
+@media (max-width: 1279px) {
+	.bbcode_video,
+	.responsive_bbcode_video {
+		/* width: 400px; */
+		/* height: 225px; */
+	}
+}
+
+/* mobile Device */
+@media (max-width: 1079px) {
+	.bbcode_video,
+	.responsive_bbcode_video {
+		width: 640px;
+		height: 360px;
+	}
+}
+
+@media (max-width: 959px) {
+	.bbcode_video,
+	.responsive_bbcode_video {
+		width: 480px;
+		height: 270px;
+	}
+}
+
+@media (max-width: 919px) {
+	.bbcode_video,
+	.responsive_bbcode_video {
+		/* width: 400px; */
+		/* height: 225px; */
 	}
 }
 
-@media (max-width: 1024px) {
+@media (max-width: 799px) {
+	.bbcode_video,
+	.responsive_bbcode_video {
+		/* width: 320px; */
+		/* height: 180px; */
+	}
+}
+
+@media (max-width: 719px) {
+	.responsive_bbcode_video {
+		float: unset !IMPORTANT;
+		width: 100%;
+		height: auto;
+		aspect-ratio: 1.777 / 1;
+		margin-left: auto;
+		margin-right: auto;
+	}
+
+	.responsive_bbcode_video > .video-responsive_bbcode_video {
+		position: absolute;
+		top: 0;
+		left: 0;
+		width: 100% !IMPORTANT;
+		height: 100% !IMPORTANT;
+	}
+
 	.bbcode_video {
-		width: 320px !IMPORTANT;
-		height: 180px !IMPORTANT;
+		float: unset ! IMPORTANT;
+		position: absolute;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%;
 	}
 }
 
-/**
- * widgets-under-main.js may move #columnbottom out of #outer-container so that
- * overflow sidebar widgets can render above it (under-main grid -> columnbottom).
- * In that case, re-create the normal vertical spacing that is otherwise provided
- * by the flex gap inside #outer-container.
- */
-html.stringendo-columnbottom-moved #columnbottom {
-	margin-top: var(--fp-space-5, 1.25rem);
+.bbcode_video.nofloat {
+	margin-bottom: 0.5rem;
 }
 
-/* Captcha plugin */
-img#captcha {
-	border-radius: 10px;
+#columntop, #columnbottom {
+	width: 100%;
+	text-align: center;
 }
 
-input#aspam_code {
-	margin-top: 0.3rem;
+#columntop ul li, #columnbottom ul li {
+	display: inline;
+}
+
+#columntop > div, #columnbottom > div {
+	background: var(--fp-widget-bg, linear-gradient(180deg, rgb(247, 240, 223) 0%, rgb(253, 198, 154) 100%));
+	border: 1px solid var(--fp-border, #e2e8f0);
+	border-radius: var(--fp-radius, 14px);
+	box-shadow: var(--fp-shadow-sm, 0 2px 10px rgba(2, 6, 23, 0.06));
+	margin: 0;
+	overflow: hidden;
+}
+
+#columnbottom > div {
+	margin: 0 0 var(--fp-space-5, 1.25rem) 0;
 }
 
 /* Chrome, Edge, and Safari - the right Scrollbar */
@@ -979,7 +1275,7 @@ input#aspam_code {
 	}
 
 	body::-webkit-scrollbar-thumb {
-		background-color: var(--fp-scroll, #6b6c6d) !IMPORTANT;
+		background-color: var(--fp-scroll, #6b6c6d);
 		border-radius: 3px;
 	}
 }
@@ -988,7 +1284,7 @@ input#aspam_code {
 @supports (-moz-appearance:button) and (contain:paint) {
 	* {
 		scrollbar-width: thin;
-		scrollbar-color: var(--fp-scroll, #6b6c6d) var(--fp-bg, #f6f7fb) !IMPORTANT;
+		scrollbar-color: var(--fp-scroll, #6b6c6d) var(--fp-bg, #f6f7fb);
 	}
 }
 
@@ -997,167 +1293,73 @@ input#aspam_code {
 	background: var(--fp-scroll, #6b6c6d);
 }
 
+/* The bottom Scrollbar */
+#scrollIndicator.line {
+	background: var(--fp-scroll, #6b6c6d);
+}
+
 /* ---------- Stringendo dark mode refinements ---------- */
 @media (prefers-color-scheme: dark) {
-	:root {
-		color-scheme: dark;
-		--fp-bg: #060d18;
-		--fp-surface: #0f1724;
-		--fp-surface-2: #182233;
-		--fp-text: #e7edf7;
-		--fp-muted: #a9b5c9;
-		--fp-border: #304158;
-		--fp-accent: #c67a27;
-		--fp-accent-2: #b77428;
-		--fp-accent-3: #f0b35f;
-		--fp-accent-4: #ceb9ff;
-		--fp-accent-soft: #432515;
-		--fp-accent-soft-2: #4c2d16;
-		--fp-link: #8bc2ff;
-		--fp-link-hover: #ffd39d;
-		--fp-link-visited: #d7b9ff;
-		--fp-accent-rgb: 198, 122, 39;
-		--fp-accent-2-rgb: 183, 116, 40;
-		--fp-accent-3-rgb: 240, 179, 95;
-		--fp-link-rgb: 139, 194, 255;
-		--fp-focus-rgb: 139, 194, 255;
-		--fp-accent-gradient: linear-gradient(135deg, #b36b18 0%, #f0b35f 100%);
-		--fp-accent-gradient-hover: linear-gradient(135deg, #c67a27 0%, #ffd39d 100%);
-		--fp-shadow-sm: 0 4px 18px rgba(0, 0, 0, 0.32);
-		--fp-shadow: 0 14px 36px rgba(0, 0, 0, 0.42);
-		--fp-heading: #ffd39d;
-		--fp-header-title: #f8fafc;
-		--fp-header-subtitle: #ffe6c9;
-		--fp-button-text: #000000;
-		--fp-pattern-rgb: 183, 116, 40;
-		--fp-entry-gradient: linear-gradient(180deg, #182538 0%, #0f1724 100%);
-		--fp-widget-gradient: linear-gradient(180deg, #182538 0%, #0f1724 100%);
-		--fp-admin-entry-gradient: linear-gradient(180deg, #182538 0%, #0f1724 100%);
-		--fp-surface-rgb: 15, 23, 36;
-		--lt-color-gray-100: #182233;
-		--lt-color-gray-400: #5a6a82;
-		--lt-color-gray-500: #7c8ea7;
-		--fp-scroll: #815523;
-	}
-
-	html,
 	body {
-		background-color: var(--fp-bg, #060d18);
-	}
-
-	body {
-		background-image: url('../imgs/bg.svg'), radial-gradient(circle at 1px 1px, rgba(var(--fp-pattern-rgb, 183, 116, 40), 0.085) 1px, transparent 0);
-	}
-
-	h2,
-	h3,
-	h4 {
-		color: var(--fp-heading, #ffd39d);
-	}
-
-	#head {
-		background: linear-gradient(180deg, #b77428 0%, #6f3606 100%);
-		border-color: rgba(var(--fp-accent-3-rgb, 240, 179, 95), 0.26);
-		box-shadow: 0 14px 30px rgba(0, 0, 0, 0.35);
+		background-image: url('../imgs/bg.svg'), radial-gradient(circle at 1px 1px, rgba(var(--fp-pattern-dot-rgb, 183, 116, 40), .12) 1px, transparent 0);
 	}
 
 	#head h1 a {
-		color: var(--fp-header-title, #f8fafc);
-	}
-
-	#head .subtitle {
-		color: var(--fp-header-subtitle, #ffe6c9);
-	}
-
-	.navigation a,
-	.entry,
-	ol#comments > li {
-		background: var(--fp-entry-gradient, linear-gradient(180deg, #182538 0%, #0f1724 100%));
-		border-color: var(--fp-border, #304158);
+		text-shadow: 0 1px 0 rgba(0, 0, 0, .28);
 	}
 
 	ol#comments > li.comment-admin {
-		background: linear-gradient(180deg, rgba(183, 116, 40, 0.24) 0%, rgba(15, 23, 36, 0.95) 100%);
+		background: rgba(var(--fp-accent-3-rgb, 255, 209, 102), .12);
 	}
 
-	.entry-title a,
-	.entry .title,
-	.entry .title a {
-		color: var(--fp-text, #e7edf7);
-	}
-
-	.entry-title a:hover {
-		color: var(--fp-link-hover, #ffd39d);
-	}
-
-	.entry blockquote {
-		background: rgba(24, 34, 51, 0.92);
-		border-left-color: var(--fp-accent-3, #f0b35f);
-	}
-
-	input[type="text"],
-	input[type="email"],
-	input[type="password"],
-	input[type="url"],
-	input[type="search"],
-	input[type="number"],
-	textarea,
-	select {
-		background: rgba(15, 23, 36, 0.96);
-		border-color: var(--fp-border, #304158);
-		color: var(--fp-text, #e7edf7);
-		box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
-	}
-
-	input[type="submit"],
-	input[type="button"],
-	.link-comments a,
-	.readmore a,
-	button:not(.leaflet-control):not(.pswp__button):not(.bb-button) {
-		color: var(--fp-button-text, #000000);
-		border-color: rgba(var(--fp-accent-2-rgb, 183, 116, 40), 0.55);
-		box-shadow: 0 8px 18px rgba(0, 0, 0, 0.22);
+	ol#comments li {
+		background: var(--qb-highlight-selection-toolbox-word-background-color, #4343431a);
 	}
 
-	input[type="submit"]:hover,
-	input[type="button"]:hover,
-	.link-comments a:hover,
-	.readmore a:hover,
-	button:not(.leaflet-control):not(.pswp__button):not(.bb-button):hover {
+	/* BBCode toolbar */
+	.bb-btn-tlb p .bb-button {
+		border-color: rgba(var(--fp-accent-2-rgb, 255, 179, 71), .35);
+		background: var(--fp-accent-gradient, linear-gradient(135deg, var(--fp-accent-2, #ffb347) 0%, var(--fp-accent-3, #ffd166) 100%));
 		color: var(--fp-button-text, #000000);
 	}
 
-	input[type="reset"],
-	button[type="reset"] {
-		border-color: rgba(var(--fp-accent-3-rgb, 240, 179, 95), 0.45);
-		color: var(--fp-link-hover, #ffd39d);
+	.bb-btn-tlb p .bb-button:hover {
+		background: var(--fp-accent-gradient-hover, linear-gradient(135deg, var(--fp-accent, #ff8c00) 0%, var(--fp-accent-3, #ffd166) 100%));
+		border-color: rgba(var(--fp-accent-2-rgb, 255, 179, 71), .45);
 	}
 
-	input[type="reset"]:hover,
-	button[type="reset"]:hover {
-		background: rgba(var(--fp-accent-3-rgb, 240, 179, 95), 0.16);
+	.bb-btn-tlb p .bb-button:focus-visible {
+		border-color: rgba(var(--fp-focus-rgb, 124, 197, 255), .55);
+		box-shadow: 0 0 0 4px rgba(var(--fp-focus-rgb, 124, 197, 255), .18);
 	}
 
-	fieldset {
-		border-color: rgba(var(--fp-accent-3-rgb, 240, 179, 95), 0.55);
+	/* PhotoSwipe plugin */
+	.photoswipe figure img,
+	.responsive_bbcode_video > .video-responsive_bbcode_video,
+	.bbcode_video,
+	.responsive_bbcode_video iframe[data-src] {
+		box-shadow: 0 10px 24px rgba(0, 0, 0, .35);
+		color: var(--lt-color-gray-500, #8f96a3);
+		background: var(--fp-surface-2, #f1f5f9);
+		border: 1px solid var(--fp-border, #e2e8f0);
 	}
 
-	legend,
+	/* CookieBanner plugin */
 	#cookie_banner div.buttonbar {
-		color: var(--fp-text, #e7edf7);
+		color: var(--fp-text, #eef4ff);
 	}
 
 	/* Chrome, Edge, and Safari - the right Scrollbar */
 	@supports selector(::-webkit-scrollbar) {
 		body::-webkit-scrollbar-thumb {
-			background-color: var(--fp-scroll, #815523) !IMPORTANT;
+			background-color: var(--fp-scroll, #815523);
 		}
 	}
 
 	/* Firefox - the right Scrollbar */
 	@supports (-moz-appearance:button) and (contain:paint) {
 		* {
-			scrollbar-color: var(--fp-scroll, #815523) var(--fp-bg, #060d18) !IMPORTANT;
+			scrollbar-color: var(--fp-scroll, #815523) var(--fp-bg, #060d18);
 		}
 	}
 
diff --git a/fp-interface/themes/leggero/stringendo/res/widgets-under-main.js b/fp-interface/themes/leggero/stringendo/res/widgets-under-main.js
index c721697c..090c8afe 100644
--- a/fp-interface/themes/leggero/stringendo/res/widgets-under-main.js
+++ b/fp-interface/themes/leggero/stringendo/res/widgets-under-main.js
@@ -1,9 +1,9 @@
 /**
  * Stringendo – widgets under #main (wide screens)
- * Version: 1.5.0
+ * Version: 1.5.2
  *
  * Goal:
- * - If viewport >= 960px AND the widget column (#column) would extend below #main,
+ * - On wide layouts (>= 720px), if the widget column (#column) would extend below #main,
  *   move only the *overflowing* widgets under #main in a responsive grid.
  * - Preserve widget order.
  * - If the right column is empty, expand #main to full width.
@@ -11,7 +11,7 @@
  * Notes:
  * - We recalculate after window "load" (images loaded) to avoid moving widgets
  *   too early and leaving the right column empty on pages that later become taller.
- * - No external dependencies besides jQuery.
+ * - No external dependencies besides jQuery (jQuery is loaded by FlatPress).
  */
 
 (function ($) {
@@ -19,14 +19,7 @@
 
 	var MIN_WIDTH = 720;
 	var UNDER_ID = 'stringendo-widgets-under-main';
-	var BOTTOM_ID = 'columnbottom';
-	var BOTTOM_ANCHOR_ID = 'stringendo-columnbottom-anchor';
-	var ROOT_MOVED_CLASS = 'stringendo-columnbottom-moved';
-	var updateTimer = null;
-	var rafToken = null;
-	var didFullLayout = false;
-	var raf = window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function (cb) { return window.setTimeout(cb, 16); };
-	var caf = window.cancelAnimationFrame ? window.cancelAnimationFrame.bind(window) : function (id) { window.clearTimeout(id); };
+	var rafId = 0;
 
 	function viewportWidth() {
 		return (window.innerWidth || document.documentElement.clientWidth || 0);
@@ -64,54 +57,24 @@
 		}
 	}
 
+
+
 	function ensureUnderContainer($outer) {
 		var $under = $('#' + UNDER_ID);
 		if (!$under.length) {
-			$under = $('
', { id: UNDER_ID, 'class': 'stringendo-widgets-under-main' }); - /** - * Important: keep the sidebar's sticky boundary limited to #outer-container. - * If the under-main container is placed inside #outer-container, the sticky - * column stays "too long" (it remains sticky while the page is already in - * the under-main section). Therefore insert it AFTER #outer-container. - */ - $outer.after($under); + $under = $('
', { id: UNDER_ID, 'class': 'stringendo-widgets-under-main stringendo-under-empty' }); + // Keep the sticky boundary limited to #outer-container: render the under-main grid outside it. + var $bottom = $('#columnbottom'); + if ($bottom.length) { + $under.insertBefore($bottom); + } else { + $outer.after($under); + } } syncUnderVisibility($under); return $under; } - function ensureColumnBottomAnchor($outer) { - var $bottom = $('#' + BOTTOM_ID); - if (!$bottom.length) { - return $(); - } - var $anchor = $('#' + BOTTOM_ANCHOR_ID); - if (!$anchor.length) { - $anchor = $('
', { - id: BOTTOM_ANCHOR_ID, - 'aria-hidden': 'true' - }).css({ - display: 'none', - height: 0, - overflow: 'hidden' - }); - // Preserve the original insertion point of #columnbottom inside #outer-container. - $bottom.before($anchor); - } - return $anchor; - } - - function restoreColumnBottom($outer) { - var $bottom = $('#' + BOTTOM_ID); - var $anchor = $('#' + BOTTOM_ANCHOR_ID); - if ($bottom.length && $anchor.length && $bottom.parent().length && $bottom.parent()[0] !== $outer[0]) { - $anchor.after($bottom); - } - try { - document.documentElement.classList.remove(ROOT_MOVED_CLASS); - } catch (e) {} - } - function restoreWidgets($column) { var $under = $('#' + UNDER_ID); if (!$under.length) { @@ -126,57 +89,42 @@ } function scheduleUpdate() { - if (updateTimer) { - clearTimeout(updateTimer); - updateTimer = null; + // Throttle to the next frame (fast, avoids timer cascades). + var raf = window.requestAnimationFrame; + var caf = window.cancelAnimationFrame; + if (!raf) { + setTimeout(updateLayout, 16); + return; } - if (rafToken) { - caf(rafToken); - rafToken = null; + if (rafId && caf) { + try { caf(rafId); } catch (e) {} } - // Use rAF to coalesce multiple triggers into a single layout pass. - rafToken = raf(function () { - rafToken = null; - updateLayout(true); + rafId = raf(function () { + rafId = 0; + updateLayout(); }); } - /** - * Full layout pass: - * - Restores widgets and columnbottom to the original state - * - Moves only overflowing widgets under #main - * - * Incremental pass: - * - Only moves additional widgets if the column still overflows - * - Never moves widgets back (stable, avoids "double" reveals) - */ - function updateLayout(isFull) { + function updateLayout() { var $outer = $('#outer-container'); var $column = $('#column'); - var $main = $('#main,#cpmain').first(); + var $main = $('#main, #cpmain').first(); if (!$outer.length || !$column.length || !$main.length) { return; } - /** - * Full pass resets first, then decides what to do for current viewport. - * Incremental pass only moves additional widgets if needed. - */ - if (isFull) { - restoreWidgets($column); - restoreColumnBottom($outer); - $('#' + UNDER_ID).remove(); - $outer.removeClass('stringendo-widgets-under-main-active stringendo-no-column'); + + // Always reset first, then decide what to do for current viewport. + restoreWidgets($column); + var $underExisting = $('#' + UNDER_ID); + if ($underExisting.length) { + $underExisting.addClass('stringendo-under-empty'); } + $outer.removeClass('stringendo-widgets-under-main-active stringendo-no-column'); // Narrow layouts stack anyway. if (!isWide()) { - if (isFull) { - // Ensure we clean up any previously created under-container. - $('#' + UNDER_ID).remove(); - $outer.removeClass('stringendo-widgets-under-main-active stringendo-no-column'); - } return; } @@ -196,12 +144,13 @@ var colTop = colOffset.top; var colBottom = colTop + ($column.outerHeight(true) || 0); - /** - * If the column ends above (or at) the main bottom, keep everything in the column. - * In incremental mode, keep already moved widgets under #main (stable, no flicker). - */ + // If the column ends above (or at) the main bottom, keep everything in the column. if (colBottom <= mainBottom) { - didFullLayout = didFullLayout || !!isFull; + return; + } + + var diff = colBottom - mainBottom; + if (diff <= 0) { return; } @@ -209,65 +158,55 @@ syncUnderVisibility($under); $outer.addClass('stringendo-widgets-under-main-active'); - /** - * If a bottom widget row exists (#columnbottom), ensure it stays *below* the - * under-main widget grid. This keeps sidebar widgets "under #main" and "above #columnbottom". - */ - var $bottom = $('#' + BOTTOM_ID); - // widgetsbottom.tpl always renders the wrapper; only move it if it actually contains widgets. - if ($bottom.length && $bottom.children('div').length) { - ensureColumnBottomAnchor($outer); - $under.after($bottom); - try { - document.documentElement.classList.add(ROOT_MOVED_CLASS); - } catch (e0) {} + // Move only as many bottom widgets as needed (reduces reflow vs. iterative measuring). + var moved = 0; + var i; + for (i = $widgets.length - 1; i >= 0; i--) { + var $w = $widgets.eq(i); + moved += ($w.outerHeight(true) || 0); + $w.prependTo($under); + if (moved >= diff) { + break; + } } - // Move bottom widgets under #main until the column fits within main's height span. + // Small safety net for edge cases (collapsing margins etc.). var safety = 0; - while ($column.children('div').length && safety < 200) { + while ($column.children('div').length && safety < 10) { colBottom = colTop + ($column.outerHeight(true) || 0); if (colBottom <= mainBottom) { break; } - $column.children('div').last().prependTo($under); safety++; } + if ($under.children('div').length) { + $under.removeClass('stringendo-under-empty'); + } + // Hide the empty right column if everything was moved. if (!$column.children('div').length) { $outer.addClass('stringendo-no-column'); } - - didFullLayout = didFullLayout || !!isFull; } - // Run as early as possible (defer scripts run after parsing, before DOMContentLoaded). - scheduleUpdate(); - $(function () { - // Safety: run again on DOM ready. + // Initial attempt (DOM ready). scheduleUpdate(); - // If fade-in is active, keep late recalcs minimal to avoid visible "double" reveals. - if (hasFadeIn()) { - setTimeout(scheduleUpdate, 180); - } }); - // After images are loaded, main height can change. Use incremental pass to avoid flicker. - $(window).on('load', function () { - if (!didFullLayout) { - updateLayout(true); - return; - } - updateLayout(false); - }); + // After images are loaded, main height can change significantly. + $(window).on('load', scheduleUpdate); + + // BFCache restores (back/forward) can skip normal load. + $(window).on('pageshow', scheduleUpdate); // When the column fade-in completed, reveal under-main widget grid (if present). $(window).on('stringendo:columnShown', function () { syncUnderVisibility($('#' + UNDER_ID)); }); + // Re-evaluate when viewport changes. $(window).on('resize orientationchange', scheduleUpdate); diff --git a/fp-interface/themes/leggero/widgetsbottom.tpl b/fp-interface/themes/leggero/widgetsbottom.tpl new file mode 100644 index 00000000..27cbe510 --- /dev/null +++ b/fp-interface/themes/leggero/widgetsbottom.tpl @@ -0,0 +1,19 @@ + {capture assign='widgets_bottom'} + {widgets pos=bottom} + {assign var=w_content value=$content|default:''|trim} + {if $w_content != ''} + +
+ {$content} +
+ {/if} + {/widgets} + {/capture} + {if $widgets_bottom|trim != ''} + + +
+ {$widgets_bottom nofilter} +
+ + {/if} diff --git a/fp-interface/themes/leggero/widgetstop.tpl b/fp-interface/themes/leggero/widgetstop.tpl new file mode 100644 index 00000000..d4f9373c --- /dev/null +++ b/fp-interface/themes/leggero/widgetstop.tpl @@ -0,0 +1,20 @@ + {capture assign='widgets_top'} + {widgets pos=top} + {assign var=w_content value=$content|default:''|trim} + {if $w_content != ''} + +
+ {$content} +
+ {/if} + {/widgets} + {/capture} + {if $widgets_top|trim != ''} + + +
+ {$widgets_top nofilter} +
+ + {/if} + diff --git a/setup/lang/lang.cs-cz.php b/setup/lang/lang.cs-cz.php index 125ce844..2c44532b 100644 --- a/setup/lang/lang.cs-cz.php +++ b/setup/lang/lang.cs-cz.php @@ -99,6 +99,12 @@ [*][url=contact.php]Kontakt[/url] [/list]'; +$lang ['samplecontent'] ['bottommenu'] ['subject'] = 'Dolní nabídka'; +$lang ['samplecontent'] ['bottommenu'] ['content'] = '[list] +[*][url=static.php?page=legal-notice]Právní upozornění[/url] +[*][url=static.php?page=privacy-policy]Zásady ochrany osobních údajů[/url] +[/list]'; + $lang ['samplecontent'] ['entry'] ['subject'] = 'Vítejte ve FlatPressu!'; $lang ['samplecontent'] ['entry'] ['content'] = 'Tento článek vám ukáže některé z možností [url=https://www.flatpress.org target=_blank rel=external]FlatPressu[/url]. @@ -193,6 +199,9 @@ $lang ['samplecontent'] ['about'] ['subject'] = 'O mně'; $lang ['samplecontent'] ['about'] ['content'] = 'Sem napište něco o sobě. ([url=admin.php?p=static&action=write&page=about]Editovat![/url])'; +$lang ['samplecontent'] ['legal-notice'] ['subject'] = 'Právní upozornění'; +$lang ['samplecontent'] ['legal-notice'] ['content'] = '([url=admin.php?p=static&action=write&page=legal-notice]Upravit![/url])'; + $lang ['samplecontent'] ['privacy-policy'] ['subject'] = 'Zásady ochrany osobních údajů'; $lang ['samplecontent'] ['privacy-policy'] ['content'] = 'V některých zemích, například pokud používáte službu Akismet Antispam, je nutné poskytnout návštěvníkům zásady ochrany osobních údajů. Zásady ochrany osobních údajů mohou být nezbytné také v případě, že návštěvník může použít kontaktní formulář nebo funkci komentáře. diff --git a/setup/lang/lang.da-dk.php b/setup/lang/lang.da-dk.php index cf0323d5..d00cbf26 100644 --- a/setup/lang/lang.da-dk.php +++ b/setup/lang/lang.da-dk.php @@ -99,6 +99,12 @@ [*][url=contact.php]Kontakt[/url] [/list]'; +$lang ['samplecontent'] ['bottommenu'] ['subject'] = 'Menuen nederst'; +$lang ['samplecontent'] ['bottommenu'] ['content'] = '[list] +[*][url=static.php?page=legal-notice]Juridisk meddelelse[/url] +[*][url=static.php?page=privacy-policy]Privatlivspolitik[/url] +[/list]'; + $lang ['samplecontent'] ['entry'] ['subject'] = 'Velkommen til FlatPress!'; $lang ['samplecontent'] ['entry'] ['content'] = 'Dette er et eksempel på et indlæg. Det viser dig nogle af [url=https://www.flatpress.org target=_blank rel=external]FlatPress[/url]\' funktioner. @@ -197,6 +203,9 @@ $lang ['samplecontent'] ['about'] ['subject'] = 'Om'; $lang ['samplecontent'] ['about'] ['content'] = 'Skriv noget om dig selv og denne blog her. ([url=admin.php?p=static&action=write&page=about]Arbejd med mig![/url])'; +$lang ['samplecontent'] ['legal-notice'] ['subject'] = 'Juridisk meddelelse'; +$lang ['samplecontent'] ['legal-notice'] ['content'] = '([url=admin.php?p=static&action=write&page=legal-notice]Rediger mig![/url])'; + $lang ['samplecontent'] ['privacy-policy'] ['subject'] = 'Privatlivspolitik'; $lang ['samplecontent'] ['privacy-policy'] ['content'] = 'I nogle lande, f.eks. hvis du bruger Akismet Antispam-tjenesten, er det nødvendigt at give dine besøgende en privatlivspolitik. En privatlivspolitik kan også være nødvendig, hvis den besøgende kan bruge kontaktformularen eller kommentarfunktionen. diff --git a/setup/lang/lang.de-de.php b/setup/lang/lang.de-de.php index 56f2a073..9d7589ab 100644 --- a/setup/lang/lang.de-de.php +++ b/setup/lang/lang.de-de.php @@ -1,5 +1,5 @@ 'Namestitev je zaklenjena', 'descr' => 'Zdi se, da se namestitev že izvaja: Datoteka zaklepa %s že obstaja. - + Če želite znova zagnati namestitev, najprej izbrišite to datoteko. - + Pozor! Datoteka setup.php in imenik setup/ ne smeta ostati na strežniku, zato ju po končani namestitvi izbrišite! - +
  • Ok, pelji me na moj blog
  • Datoteko sem izbrisal, ponovno zaženite namestitev
  • @@ -22,7 +22,7 @@ $lang ['err'] = array( 'setuprun1' => 'Namestitev se izvaja.', - + 'setuprun2' => 'Namestitev je že v teku: Če ste skrbnik, lahko izbrišete ', 'setuprun3' => ' za ponovni zagon.', 'writeerror' => 'Napake pri pisanju', @@ -42,19 +42,19 @@ $lang ['step1'] = array( 'head' => 'Dobrodošli v FlatPress!', 'descr' => 'Hvala, ker ste izbrali FlatPress. - + Preden lahko začnete z novim blogom, morate določiti nekaj malenkosti. - + Toda brez skrbi, to ne bo trajalo dolgo!', 'descrl1' => 'Izberite jezik.', 'descrl2' => 'Ni na seznamu?', 'descrlang' => 'Če na seznamu ne najdete svojega jezika, preverite, ali je na voljo ustrezen jezikovni paket : - +
    %s
    - + Če želite namestiti jezikovni paket, preprosto naložite njegovo vsebino v imenik flatpress/. Nato znova zaženite namestitev.', 'descrw' => 'Za zagon programa FlatPress potrebujete le imenik, v katerega je mogoče pisati. - +
    %s
    ' ); @@ -71,17 +71,17 @@ $lang ['step3'] = array( 'head' => 'Pripravljen', 'descr' => 'To je to. - + Ne gre verjeti? - + Ne, pravzaprav se šele začenja! Toda bloganje je zdaj vaše delo. ;) - + - + Hvala, ker ste izbrali FlatPress!' ); @@ -99,6 +99,12 @@ [*][url=contact.php]Pišite na[/url] [/list]'; +$lang ['samplecontent'] ['bottommenu'] ['subject'] = 'Spodnji meni'; +$lang ['samplecontent'] ['bottommenu'] ['content'] = '[list] +[*][url=static.php?page=legal-notice]Pravno obvestilo[/url] +[*][url=static.php?page=privacy-policy]Politika zasebnosti[/url] +[/list]'; + $lang ['samplecontent'] ['entry'] ['subject'] = 'Dobrodošli v FlatPress!'; $lang ['samplecontent'] ['entry'] ['content'] = 'To je vzorčna objava, ki vam prikazuje nekatere funkcije [url=https://www.flatpress.org target=_blank rel=external]FlatPress[/url]. @@ -195,6 +201,9 @@ $lang ['samplecontent'] ['about'] ['subject'] = 'O'; $lang ['samplecontent'] ['about'] ['content'] = 'Tukaj napišite nekaj o sebi in tem blogu. ([url=admin.php?p=static&action=write&page=about]Delajte z mano![/url])'; +$lang ['samplecontent'] ['legal-notice'] ['subject'] = 'Pravno obvestilo'; +$lang ['samplecontent'] ['legal-notice'] ['content'] = '([url=admin.php?p=static&action=write&page=legal-notice]Uredi me![/url])'; + $lang ['samplecontent'] ['privacy-policy'] ['subject'] = 'Politika zasebnosti'; $lang ['samplecontent'] ['privacy-policy'] ['content'] = 'Če uporabljate na primer storitev Akismet Antispam, je treba v nekaterih državah svojim obiskovalcem zagotoviti pravilnik o zasebnosti. Pravilnik o zasebnosti je morda potreben tudi, če lahko obiskovalec uporabi kontaktni obrazec ali funkcijo za komentiranje. diff --git a/setup/lang/lang.tr-tr.php b/setup/lang/lang.tr-tr.php index e66a0323..7e07c9e1 100644 --- a/setup/lang/lang.tr-tr.php +++ b/setup/lang/lang.tr-tr.php @@ -1,5 +1,5 @@ 'FlatPress' ), 'menu'); } + if (!static_exists('bottommenu')) { + static_save(array( + 'subject' => $vl ['bottommenu'] ['subject'], + 'content' => $vl ['bottommenu'] ['content'], + 'date' => date_time(), + 'version' => system_ver(), + 'author' => 'FlatPress' + ), 'bottommenu'); + } if (!static_exists('about')) { static_save(array( 'subject' => $vl ['about'] ['subject'], @@ -34,6 +43,15 @@ function check_step() { 'author' => 'FlatPress' ), 'about'); } + if (!static_exists('legal-notice')) { + static_save(array( + 'subject' => $vl ['legal-notice'] ['subject'], + 'content' => $vl ['legal-notice'] ['content'], + 'date' => date_time(), + 'version' => system_ver(), + 'author' => 'FlatPress' + ), 'legal-notice'); + } if (!static_exists('privacy-policy')) { static_save(array( 'subject' => $vl ['privacy-policy'] ['subject'],