summaryrefslogtreecommitdiffstats
path: root/templates/55/ad-hominem
diff options
context:
space:
mode:
Diffstat (limited to 'templates/55/ad-hominem')
-rw-r--r--templates/55/ad-hominem/.gitignore3
-rw-r--r--templates/55/ad-hominem/LICENSE339
-rw-r--r--templates/55/ad-hominem/README.md32
-rw-r--r--templates/55/ad-hominem/composer.json28
-rw-r--r--templates/55/ad-hominem/conf/default.php18
-rw-r--r--templates/55/ad-hominem/conf/metadata.php30
-rw-r--r--templates/55/ad-hominem/css/_admin.less138
-rw-r--r--templates/55/ad-hominem/css/_cookies.css74
-rw-r--r--templates/55/ad-hominem/css/_diff.css179
-rw-r--r--templates/55/ad-hominem/css/_edit.css453
-rw-r--r--templates/55/ad-hominem/css/_fileuploader.css123
-rw-r--r--templates/55/ad-hominem/css/_footnotes.css31
-rw-r--r--templates/55/ad-hominem/css/_forms.css118
-rw-r--r--templates/55/ad-hominem/css/_imgdetail.css38
-rw-r--r--templates/55/ad-hominem/css/_languages.less202
-rw-r--r--templates/55/ad-hominem/css/_links.css93
-rw-r--r--templates/55/ad-hominem/css/_media_fullscreen.css578
-rw-r--r--templates/55/ad-hominem/css/_media_popup.css216
-rw-r--r--templates/55/ad-hominem/css/_modal.css187
-rw-r--r--templates/55/ad-hominem/css/_recent.css91
-rw-r--r--templates/55/ad-hominem/css/_search.less203
-rw-r--r--templates/55/ad-hominem/css/_tabs.css84
-rw-r--r--templates/55/ad-hominem/css/_toc.css93
-rw-r--r--templates/55/ad-hominem/css/content.less436
-rw-r--r--templates/55/ad-hominem/css/design.less374
-rw-r--r--templates/55/ad-hominem/css/layout.less1308
-rw-r--r--templates/55/ad-hominem/css/links.less59
-rw-r--r--templates/55/ad-hominem/css/pagetools.less124
-rw-r--r--templates/55/ad-hominem/css/plugins.less28
-rw-r--r--templates/55/ad-hominem/css/print.less596
-rw-r--r--templates/55/ad-hominem/css/structure.less89
-rw-r--r--templates/55/ad-hominem/css/usertools.less50
-rw-r--r--templates/55/ad-hominem/detail.php158
-rw-r--r--templates/55/ad-hominem/images/apple-touch-icon.pngbin0 -> 45735 bytes
-rw-r--r--templates/55/ad-hominem/images/button-css.pngbin0 -> 297 bytes
-rw-r--r--templates/55/ad-hominem/images/button-donate.gifbin0 -> 187 bytes
-rw-r--r--templates/55/ad-hominem/images/button-dw.pngbin0 -> 398 bytes
-rw-r--r--templates/55/ad-hominem/images/button-html5.pngbin0 -> 305 bytes
-rw-r--r--templates/55/ad-hominem/images/button-php.gifbin0 -> 207 bytes
-rw-r--r--templates/55/ad-hominem/images/button-rss.pngbin0 -> 178 bytes
-rw-r--r--templates/55/ad-hominem/images/cookie.svg1
-rw-r--r--templates/55/ad-hominem/images/delete.svg1
-rw-r--r--templates/55/ad-hominem/images/edit.svg3
-rw-r--r--templates/55/ad-hominem/images/editor/browse-folder.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/browse-link.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/browse-parent.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/close.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/default.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/edit-cancel.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/edit-preview.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/edit-save.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/format-bold.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/format-header-decrease.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/format-header-equal.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/format-header-increase.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/format-header-menu.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/format-italic.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/format-list-bulleted.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/format-list-numbered.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/format-monospace.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/format-strikethrough.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/format-underline.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/insert-emoticon.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/insert-external-link.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/insert-hr.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/insert-link.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/insert-media.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/insert-signature.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/insert-symbol.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/overlay-menu.svg1
-rw-r--r--templates/55/ad-hominem/images/editor/overlay-popup.svg1
-rw-r--r--templates/55/ad-hominem/images/favicon.icobin0 -> 7406 bytes
-rw-r--r--templates/55/ad-hominem/images/home.svg3
-rw-r--r--templates/55/ad-hominem/images/info.svg1
-rw-r--r--templates/55/ad-hominem/images/search.pngbin0 -> 795 bytes
-rw-r--r--templates/55/ad-hominem/images/search.svg1
-rw-r--r--templates/55/ad-hominem/images/sitelogo.svg133
-rw-r--r--templates/55/ad-hominem/images/transparency.gifbin0 -> 79 bytes
-rw-r--r--templates/55/ad-hominem/images/user.svg5
-rw-r--r--templates/55/ad-hominem/lang/de-informal/lang.php58
-rw-r--r--templates/55/ad-hominem/lang/de-informal/settings.php32
-rw-r--r--templates/55/ad-hominem/lang/de-informal/style.txt1
-rw-r--r--templates/55/ad-hominem/lang/de/lang.php58
-rw-r--r--templates/55/ad-hominem/lang/de/settings.php32
-rw-r--r--templates/55/ad-hominem/lang/de/style.txt1
-rw-r--r--templates/55/ad-hominem/lang/en/lang.php53
-rw-r--r--templates/55/ad-hominem/lang/en/settings.php36
-rw-r--r--templates/55/ad-hominem/lang/en/style.txt4
-rw-r--r--templates/55/ad-hominem/lang/es/lang.php57
-rw-r--r--templates/55/ad-hominem/lang/es/settings.php36
-rw-r--r--templates/55/ad-hominem/lang/es/style.txt1
-rw-r--r--templates/55/ad-hominem/lang/fi/lang.php53
-rw-r--r--templates/55/ad-hominem/lang/fi/settings.php36
-rw-r--r--templates/55/ad-hominem/lang/fi/style.txt4
-rw-r--r--templates/55/ad-hominem/lang/fr/lang.php58
-rw-r--r--templates/55/ad-hominem/lang/fr/settings.php36
-rw-r--r--templates/55/ad-hominem/lang/fr/style.txt1
-rw-r--r--templates/55/ad-hominem/main.php131
-rw-r--r--templates/55/ad-hominem/my_template.php748
-rw-r--r--templates/55/ad-hominem/rest/pageinfo.php84
-rw-r--r--templates/55/ad-hominem/script.js356
-rw-r--r--templates/55/ad-hominem/style.ini136
-rw-r--r--templates/55/ad-hominem/template.info.txt7
-rw-r--r--templates/55/ad-hominem/tpl_footer.php26
-rw-r--r--templates/55/ad-hominem/tpl_searchform.php18
105 files changed, 8812 insertions, 0 deletions
diff --git a/templates/55/ad-hominem/.gitignore b/templates/55/ad-hominem/.gitignore
new file mode 100644
index 0000000..1ed8a6e
--- /dev/null
+++ b/templates/55/ad-hominem/.gitignore
@@ -0,0 +1,3 @@
+/composer.lock
+/vendor
+rest/php_errors.log
diff --git a/templates/55/ad-hominem/LICENSE b/templates/55/ad-hominem/LICENSE
new file mode 100644
index 0000000..d159169
--- /dev/null
+++ b/templates/55/ad-hominem/LICENSE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/templates/55/ad-hominem/README.md b/templates/55/ad-hominem/README.md
new file mode 100644
index 0000000..dcf2f64
--- /dev/null
+++ b/templates/55/ad-hominem/README.md
@@ -0,0 +1,32 @@
+# DokuWiki Template Ad-Hominem
+
+A clean and lightweight HTML5 template for DokuWiki.
+
+## Features
+
+
+ * Prominent search field with preloading search results.
+ * Collapsible sidebar and table of contents.
+ * Link preview: title and first paragraph of the linked page is shown in the title text.
+ * This also works for Wikipedia links!
+ * Looks good in print.
+ * The template implements [WCAG 2.1](https://www.w3.org/TR/WCAG21/) Level AA (however, the DokuWiki content renderer has some limitations)
+ * [GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation)-compliant: does not load external resources like font files or others (note that the [jquerycdn](https://www.dokuwiki.org/config:jquerycdn) setting needs to be set to “local delivery only” for GDPR-compliance)
+ * Neatly formatted and standards-compliant code (where possible – again, the DokuWiki content renderer is the limiting factor)
+ * Makes better use of larger screens (target is half of a 4K screen), but because the template is fully responsive, smaller is no problem (down to ca. 300px wide)
+ * improvements to edit view, media manager, etc.
+ * User-side controlled “dark mode”, i.e. follows the client side dark mode settings.
+ * Improvements to the default functionality, e.g. a resizeable internal link selection widget, etc.
+ * Configuration to override the "home"-link (see below)
+ * Integrated "Cookies" banner functionality
+ * Integrated languages menu (works with the [Translate](https://www.dokuwiki.org/plugin:translate) plugin)
+ * Compatible with PHP8+ as well as DokuWiki “[Kaos](https://www.dokuwiki.org/changes#release_2024-02-06_kaos)”.
+ * Support for global RTL (right-to-left) site direction.
+
+## Localizations
+
+As the template uses only the original DokuWiki template strings, it should work with any of the languages that DokuWiki comes in.
+
+## More information
+
+Please see the [Plugin page on the DokuWiki site](https://www.dokuwiki.org/template:ad-hominem) for more information:
diff --git a/templates/55/ad-hominem/composer.json b/templates/55/ad-hominem/composer.json
new file mode 100644
index 0000000..9c3fb02
--- /dev/null
+++ b/templates/55/ad-hominem/composer.json
@@ -0,0 +1,28 @@
+{
+ "name": "saschaleib/dokuwiki-template-ad-hominem",
+ "description": "Renewed template for DokuWiki, based on the original bundled template",
+ "homepage": "https://www.dokuwiki.org/template:ad-hominem",
+ "type": "project",
+ "license": "GPL v2",
+ "require": {
+ "php": ">=8.0",
+ "ext-json": "*"
+ },
+ "require-dev": {
+ "dokuwiki/dokuwiki": ">=2020-07-29"
+ },
+ "repositories": [
+ {
+ "type": "vcs",
+ "url": "https://github.com/dokuwiki/dokuwiki"
+ }
+ ],
+ "config": {
+ "platform": {
+ "php": "8.0"
+ }
+ },
+ "suggest": {},
+ "minimum-stability": "dev",
+ "prefer-stable": true
+}
diff --git a/templates/55/ad-hominem/conf/default.php b/templates/55/ad-hominem/conf/default.php
new file mode 100644
index 0000000..ef416db
--- /dev/null
+++ b/templates/55/ad-hominem/conf/default.php
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Configuration settings for the Ad Hominem template
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ */
+
+$conf['darkmode'] = 'allow';
+$conf['navtrail'] = 'none';
+$conf['printstyle'] = 'basic';
+$conf['homelink'] = '';
+
+$conf['cookiepos'] = 'bottom';
+$conf['cookiemsg'] = 'This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.';
+$conf['cookielink'] = 'about:cookies';
+
+$conf['langmenu'] = 'sb';
+$conf['langfilter'] = 'existing';
diff --git a/templates/55/ad-hominem/conf/metadata.php b/templates/55/ad-hominem/conf/metadata.php
new file mode 100644
index 0000000..c22bc45
--- /dev/null
+++ b/templates/55/ad-hominem/conf/metadata.php
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Configuration settings for the Ad Hominem template
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ */
+
+$meta['darkmode'] = array('multichoice',
+ '_choices' => array ('allow', 'disable'));
+
+$meta['navtrail'] = array('multichoice',
+ '_choices' => array ('none', 'text', 'link'));
+
+$meta['printstyle'] = array('multichoice',
+ '_choices' => array ('basic', 'compact'));
+
+$meta['cookiepos'] = array('multichoice',
+ '_choices' => array ('hide', 'top', 'bottom'));
+
+$meta['cookiemsg'] = array('string');
+
+$meta['cookielink'] = array('string');
+
+$meta['homelink'] = array('string');
+
+$meta['langmenu'] = array('multichoice',
+ '_choices' => array ('tb', 'sb'));
+
+$meta['langfilter'] = array('multichoice',
+ '_choices' => array ('all', 'existing'));
diff --git a/templates/55/ad-hominem/css/_admin.less b/templates/55/ad-hominem/css/_admin.less
new file mode 100644
index 0000000..8971e1b
--- /dev/null
+++ b/templates/55/ad-hominem/css/_admin.less
@@ -0,0 +1,138 @@
+.dokuwiki div.ui-admin {
+
+ & {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ }
+
+ h1.first-child,
+ div.level1 {
+ grid-column: 1 / span 2;
+ margin-bottom: 1em;
+ }
+
+ /* main task grouped in two columns */
+ ul.admin_tasks {
+ grid-column: 2;
+ list-style-type: none;
+ font-size: 1.125em;
+ margin: 0;
+ }
+ ul.admin_tasks:first-of-type {
+ grid-row: 3 / span 4;
+ grid-column: 1;
+ }
+ ul.admin_plugins {
+ grid-row: 6;
+ grid-column: 2;
+ }
+
+ /* general menu item styling */
+ ul {
+ padding: 0;
+ li {
+ margin: 0 0 1em 0;
+ font-weight: bold;
+ list-style-type: none;
+ white-space: nowrap;
+
+ a {
+ display: flex;
+ span {
+ display: inline-block;
+
+ &.icon {
+ width: 1.5em;
+ min-height: 1.5em;
+ margin: 0 0.5em;
+ vertical-align: top;
+
+ svg {
+ width: 1.5em;
+ height: 1.5em;
+ fill: @ini_link;
+ display: inline-block;
+ path {
+ fill: @ini_link;
+ }
+ }
+ }
+
+ &.prompt {
+ white-space: normal;
+ }
+ }
+ }
+ }
+ }
+
+ /* Security Warning */
+ #security__check {
+ clear: both;
+ grid-row: 7;
+ grid-column: 1 / span 2;
+ }
+
+ /* DokuWiki version */
+ #admin__version {
+ display: block;
+ box-sizing: border-box;
+ width: 100%;
+ max-height: 7em;
+ overflow: auto;
+ color: @ini_text_neu;
+ background: @ini_background_alt url('images/info.svg') .25em .5em no-repeat;
+ background-size: 1em;
+ padding: .25em 0 .25em 1.75em;
+ border: @ini_border 1px solid;
+ border-radius: .25em;
+ box-shadow: inset .5pt .5pt 1pt #0008;
+ grid-row: 9;
+ grid-column: 1 / span 2;
+ }
+}
+
+/* style the extension manager items: */
+.dokuwiki #extension__manager {
+ form.install { box-sizing: border-box; width: 100%; padding: 1em 2em; background-color: #EEE; }
+ form.install .block { text-align: left; width: 100% }
+ form.install input[name=installurl] {
+ font-family: @ini_mono_fonts;
+ padding: .25em .25em .25em 24px;
+ border-radius: 10px;
+ background: @ini_background_site url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAABdklEQVR4AWMgAVRo1zY3rGk41rC+rqvCBCJWBpPM4WoomLHtdtuv/t9Lfk263TtrQ0t7Oj9cbzZDc/W6s/8T7khD+P+F/8bv29PZlswJVVBu0vPuVZyNYHFZbmAqE1SR0cbjXR6pjGBO58am962Ta3e3ftqy6B5LCcMasOj7gInrm9jBzI4vTX+bfjT/7/4/p/w/zFXybUmt71u4wJzGfxP/t/xvA+KaP2XnQSKVFpWPav/U/6+HKJjz++OVJUDp1n9N/+r+19QyMCz1mPC/8X/X/26Igrn3GiUeL5n/v+F/8//6/9NOMTC0hDUDefP/L4MoOL6ickVeSQ1QqAGooPdBJE/lnloge/fhixBHftFd9bLkR83/+n/1QAXVP8qX1Pyv/L/s/12f/4xQNz8s3Pa/6X/Vvzqgour/5f/r/q//f2fmLy54WP7lfJN74eMSoKIyoNFz/5/+9ar+Px9aZL3Xfjvz7aO3/96+eLvsnSVE7CPhOAYA9nvIX0UoNU8AAAAASUVORK5CYII=') 3px center no-repeat;
+ width: calc(100% - 6em);
+ }
+ form.install input[name=overwrite] { width: auto; margin-left: 2em;}
+ form.install button[type=submit] {
+ border: #CCC solid 1.5pt;
+ padding: .5em .75em;
+ background-color: #cdf;
+ }
+ form.install button[type=submit]::before {
+ content: ' ';
+ display: inline-block;
+ position: relative;
+ top: .1em;
+ width: 1em;
+ height: 1em;
+ background: transparent url('images/editor/edit-save.svg') center bottom no-repeat;
+ margin-right: .25em;
+ }
+}
+
+/* dark mode overrides */
+@media (prefers-color-scheme: dark) {
+ body.darkmode.dokuwiki #extension__manager form.install { background-color: #39393D; }
+ body.darkmode.dokuwiki #extension__manager form.install button[type=submit] {
+ color: #CDF;
+ background-color: #346;
+ border-color: #90909B;
+ }
+ body.darkmode.dokuwiki #extension__manager form.install button[type=submit]::before { filter: invert(.9); }
+ body.darkmode.dokuwiki div.ui-admin #admin__version { color: @ini_text_alt_dark; background-color: @ini_background_alt_dark; }
+}
+/* below tablet size */
+@media (max-width: @ini_tablet_width) {
+ .dokuwiki div.ui-admin { display: block; }
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/_cookies.css b/templates/55/ad-hominem/css/_cookies.css
new file mode 100644
index 0000000..ac5090c
--- /dev/null
+++ b/templates/55/ad-hominem/css/_cookies.css
@@ -0,0 +1,74 @@
+/**
+ * This file provides styles for the cookies popup
+ */
+
+#cookiebanner {
+ position: fixed;
+ left: 0;
+ width: 100%;
+ color: @ini_text;
+ background-color: @ini_background_alt;
+ z-index: 1000;
+ padding: 10px;
+ box-sizing: border-box;
+ box-shadow: 0px 0px 10px #666;
+ border-top: @ini_border solid 1px;
+}
+
+#cookiebanner.cb_top { top: 0; }
+
+#cookiebanner.cb_bottom { bottom: 0; }
+
+#cookiebanner p {
+ clear: both;
+ margin: 0 auto;
+ max-width: 910pt;
+}
+
+#cookiebanner .cb_info {
+ margin-bottom: 6pt;
+}
+#cookiebanner .cb_icon {
+ float: left;
+ width: 64px;
+ height: 64px;
+ background: transparent url('images/cookie.svg') no-repeat center;
+ background-size: 64px;
+ margin: 8px 16px 8px 2px;
+}
+
+#cookiebanner .cb_action {
+ margin-top: 6pt;
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ grid-column-gap: 8pt;
+ column-gap: 8pt;
+ justify-items: center;
+}
+#cookiebanner .cb_action > * {
+ font-size: 12pt;
+}
+
+#cookiebanner .cb_action button {
+ background-color: rgba(0,0,0,0.1);
+ background-image: none;
+ border: @ini_border solid 2pt;
+ color: @ini_text;
+ padding: .25em .5em;
+ cursor: pointer;
+}
+
+/* dark mode overrides */
+@media (prefers-color-scheme: dark) {
+ body.darkmode #cookiebanner {
+ color: @ini_text_dark;
+ background-color: @ini_background_dark;
+ box-shadow: 0 0 10px @ini_background_site_dark;
+ border-top-color: @ini_border_dark;
+ }
+ body.darkmode #cookiebanner .cb_action button {
+ background-color: rgba(0,0,0,0.25);
+ border-color: @ini_border_dark;
+ color: @ini_text_dark;
+ }
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/_diff.css b/templates/55/ad-hominem/css/_diff.css
new file mode 100644
index 0000000..a494cde
--- /dev/null
+++ b/templates/55/ad-hominem/css/_diff.css
@@ -0,0 +1,179 @@
+/**
+ * This file provides styles for the diff view, which shows you
+ * differences between two versions of a page (?do=diff).
+ */
+
+.mode_diff table.diff {
+ width: 100%;
+ border-width: 0;
+}
+.mode_diff table.diff th,
+.mode_diff table.diff td {
+ vertical-align: top;
+ padding: 0;
+ border-width: 0;
+ /* no style.ini colours because deleted and added lines have a fixed background colour */
+ background-color: #fff;
+ color: #333;
+}
+
+/* table header */
+.mode_diff table.diff th {
+ border-bottom: 1px solid @ini_border;
+ font-size: 110%;
+ font-weight: normal;
+}
+.mode_diff table.diff th a {
+ font-weight: bold;
+}
+.mode_diff table.diff th span.user {
+ font-size: .9em;
+}
+.mode_diff table.diff th span.sum {
+ font-size: .9em;
+ font-weight: bold;
+}
+.mode_diff table.diff th.minor {
+ color: #999;
+}
+.mode_diff table.diff_sidebyside th {
+ width: 50%;
+}
+
+/* table body */
+.mode_diff table.diff .diff-lineheader {
+ width: .7em;
+ text-align: right;
+}
+[dir=rtl] .mode_diff table.diff .diff-lineheader {
+ text-align: left;
+}
+.mode_diff table.diff .diff-lineheader,
+.mode_diff table.diff td {
+ font-family: @ini_mono_fonts;
+ background-color: #F6F8FA;
+}
+.mode_diff table.diff td.diff-blockheader {
+ font-weight: bold;
+}
+.mode_diff table.diff .diff-addedline {
+ background-color: #E4FFEE;
+ color: inherit;
+}
+.mode_diff table.diff .diff-deletedline {
+ background-color: #FFEEF0;
+ color: inherit;
+}
+.mode_diff table.diff td.diff-context {
+ background-color: #FFF;
+ color: inherit;
+}
+.mode_diff table.diff td.diff-addedline strong {
+ color: #23292E;
+ background-color: #A5F2C1;
+ font-weight: normal;
+}
+.mode_diff table.diff td.diff-deletedline strong {
+ color: #23292E;
+ background-color: #FFB7BF;
+ font-weight: normal;
+}
+
+/* diff options */
+
+.mode_diff .diffoptions form {
+ float: left;
+}
+.mode_diff .diffoptions p {
+ float: right;
+}
+
+/* diff nav */
+
+.mode_diff table.diff_sidebyside td.diffnav {
+ padding-bottom: .7em;
+}
+.mode_diff .diffnav a {
+ display: inline-block;
+ vertical-align: middle;
+}
+.mode_diff .diffnav a span {
+ display: none;
+}
+
+.mode_diff .diffnav a:hover,
+.mode_diff .diffnav a:active,
+.mode_diff .diffnav a:focus {
+ background-color: @ini_background_alt;
+ text-decoration: none;
+}
+
+.mode_diff .diffnav a:before {
+ display: inline-block;
+ line-height: 1;
+ padding: .2em .4em;
+ border: 1px solid @ini_border;
+ border-radius: 2px;
+ color: @ini_text;
+}
+
+.mode_diff .diffnav a.diffprevrev:before {
+ content: '\25C0'; /* left triangle */
+}
+.mode_diff .diffnav a.diffnextrev:before,
+.mode_diff .diffnav a.difflastrev:before {
+ content: '\25B6'; /* right triangle */
+}
+.mode_diff .diffnav a.diffbothprevrev:before {
+ content: '\25C0\25C0';
+}
+.mode_diff .diffnav a.diffbothnextrev:before {
+ content: '\25B6\25B6';
+}
+
+.mode_diff .diffnav select {
+ width: 60%;
+ min-width: 9em;
+ height: 1.5em; /* height is necessary for longer options in Webkit */
+}
+
+.mode_diff .diffnav select option[selected] {
+ font-weight: bold;
+}
+
+/* dark mode overrides */
+@media (prefers-color-scheme: dark) {
+
+ body.mode_diff.darkmode table.diff .diff-lineheader,
+ body.mode_diff.darkmode table.diff th,
+ body.mode_diff.darkmode table.diff td {
+ background-color: #1C2125;
+ color: #D0D5DA;
+ }
+ body.mode_diff.darkmode table.diff td.diff-context {
+ background-color: #23292E;
+ }
+ body.mode_diff.darkmode table.diff .diff-deletedline {
+ background-color: #49090F;
+ }
+ body.mode_diff.darkmode table.diff .diff-addedline {
+ background-color: #0A3A1E;
+ }
+ body.mode_diff.darkmode table.diff td.diff-addedline strong {
+ color: #FFF;
+ background-color: #038642;
+ }
+ body.mode_diff.darkmode table.diff td.diff-deletedline strong {
+ color: #FFF;
+ background-color: #BB0E27;
+ }
+ body.mode_diff.darkmode .diffnav a::before {
+ color: @ini_text_dark;
+ border: transparent none 0;
+ }
+ body.mode_diff.darkmode .diffnav select {
+ background-color: @ini_background_site_dark;
+ color: @ini_text_dark;
+ border: transparent none 0;
+ }
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/_edit.css b/templates/55/ad-hominem/css/_edit.css
new file mode 100644
index 0000000..32889e4
--- /dev/null
+++ b/templates/55/ad-hominem/css/_edit.css
@@ -0,0 +1,453 @@
+/**
+ * This file provides styles for the edit view (?do=edit), preview
+ * and section edit buttons.
+ */
+
+/* edit view
+********************************************************************/
+
+.mode_edit div.editBox {
+}
+
+.mode_edit div.editBox button {
+ border: #666 solid 1px;
+ border-radius: 1px;
+ padding: 3pt 6pt;
+ margin: 0 2px;
+ cursor: pointer;
+}
+
+.mode_edit div.editButtons button:hover {
+ text-decoration: underline;
+}
+.mode_edit div.editBox button:focus {
+ outline: @ini_focus_color solid 2px;
+ background-color: @ini_background;
+}
+
+/*____________ toolbar ____________*/
+
+.mode_edit .editBox > .toolbar,
+.mode_preview .editBox > .toolbar {
+ display: block;
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+ background-color: @ini_background;
+ padding-bottom: 2px;
+ z-index: 9;
+}
+
+
+.mode_edit div.toolbar,
+.mode_preview div.toolbar {
+ display: inline-block;
+}
+#draft__status {
+ font-size: small;
+ color: @ini_text_alt;
+ background-color: inherit;
+}
+[dir=rtl] #draft__status {
+ /* float: left; */
+}
+#tool__bar {
+ float: left;
+}
+[dir=rtl] #tool__bar {
+ float: right;
+}
+
+/* hide the hard-coded button images */
+#tool__bar button>img {
+ visibility: hidden;
+}
+
+#tool__bar button {
+ background: #E9E9ED url('images/editor/default.svg') center no-repeat;
+ background-size: 20px;
+ padding: 3pt 6pt;
+ border: @ini_border solid 1px;
+}
+#tool__bar button[aria-haspopup=true]:after,
+#tool__bar button:nth-child(10):after,
+#tool__bar button:nth-child(15):after {
+ content: '';
+ display: inline-block;
+ position: absolute;
+ width: 8px;
+ height: 8px;
+ margin-left: -2px;
+ margin-top: 14px;
+ background: transparent none center no-repeat;
+ background-size: 13px;
+}
+
+#tool__bar button[aria-haspopup=true]:after {
+ background-image: url('images/editor/overlay-menu.svg');
+}
+#tool__bar button:nth-child(10):after,
+#tool__bar button:nth-child(15):after {
+ background-image: url('images/editor/overlay-popup.svg');
+}
+
+/* import the new icons */
+#tool__bar button[accesskey="b"] { background-image: url('images/editor/format-bold.svg'); margin-left: 1.5pt; }
+#tool__bar button[accesskey="i"] { background-image: url('images/editor/format-italic.svg'); }
+#tool__bar button[accesskey="u"] { background-image: url('images/editor/format-underline.svg'); }
+#tool__bar button[accesskey="m"] { background-image: url('images/editor/format-monospace.svg'); }
+#tool__bar button[accesskey="d"] { background-image: url('images/editor/format-strikethrough.svg'); }
+#tool__bar button[accesskey="8"] { background-image: url('images/editor/format-header-equal.svg'); margin-left: 4pt; }
+#tool__bar button[accesskey="9"] { background-image: url('images/editor/format-header-decrease.svg'); }
+#tool__bar button[accesskey="0"] { background-image: url('images/editor/format-header-increase.svg'); }
+#tool__bar button:nth-child(9) { background-image: url('images/editor/format-header-menu.svg'); }
+#tool__bar button[accesskey="l"] { background-image: url('images/editor/insert-link.svg');margin-left:4pt; }
+#tool__bar button:nth-child(11) { background-image: url('images/editor/insert-external-link.svg'); }
+#tool__bar button[accesskey="-"] { background-image: url('images/editor/format-list-numbered.svg'); margin-left:4pt;}
+#tool__bar button[accesskey="."] { background-image: url('images/editor/format-list-bulleted.svg'); }
+#tool__bar button:nth-child(14) { background-image: url('images/editor/insert-hr.svg');margin-left:4pt;}
+#tool__bar button:nth-child(15) { background-image: url('images/editor/insert-media.svg');margin-left:4pt; }
+#tool__bar button:nth-child(16) { background-image: url('images/editor/insert-emoticon.svg');margin-left:4pt; }
+#tool__bar button:nth-child(17) { background-image: url('images/editor/insert-symbol.svg'); }
+#tool__bar button[accesskey="y"] { background-image: url('images/editor/insert-signature.svg');margin-left:4pt; }
+
+/* set icons for known plugins: */
+#tool__bar #tbbtn_adhoctagsInline { background-image: url('../../plugins/adhoctags/images/code-tags.svg');margin-left:4pt; }
+#tool__bar #tbbtn_adhoctagsBlocks { background-image: url('../../plugins/adhoctags/images/code-brackets.svg'); }
+
+/* buttons inside of toolbar */
+.mode_edit div.toolbar button.toolbutton {
+ margin: 0;
+}
+/* picker popups (outside of .dokuwiki) */
+div.picker {
+ width: 300px;
+ border: 1px solid #CCC;
+ background-color: #EEE;
+ color: inherit;
+}
+/* picker for headlines */
+div.picker.pk_hl {
+ width: auto;
+}
+
+/* buttons inside of picker */
+div.picker button.pickerbutton,
+div.picker button.toolbutton {
+ padding: .1em .35em;
+ border-width: 0;
+}
+
+/*____________ edit textarea ____________*/
+
+.dokuwiki textarea.edit {
+ width: 100%;
+ padding: 1px 0 0 2px;
+ margin-bottom: .5em;
+ min-height: 52pt;
+ background-color: #EEE;
+ font-family: 'Source Code Pro',Menlo,Consolas,'Courier New',Courier,monospace;
+ font-size: 12pt;
+ line-height: 17pt;
+ caret-color: #0078D7;
+ resize: vertical;
+}
+.dokuwiki textarea.edit:focus {
+ outline: transparent none 0;
+}
+
+.dokuwiki textarea::-webkit-scrollbar-track {
+ background: @ini_background_alt;
+}
+.dokuwiki textarea::-webkit-scrollbar-thumb {
+ background: @ini_blockquote;
+}
+.dokuwiki textarea::-webkit-scrollbar-thumb:hover {
+ background: @ini_separator;
+}
+.dokuwiki textarea::-webkit-resizer {
+ background-color: @ini_background_alt;
+ background: linear-gradient(135deg, @ini_background_alt 0%, @ini_background_alt 50%, @ini_blockquote 50%, @ini_blockquote 100%);
+}
+
+.dokuwiki textarea { scrollbar-color: @ini_blockquote @ini_background_alt; }
+
+/*____________ below the textarea ____________*/
+
+.dokuwiki div.editBar {
+ display: grid;
+ grid-template-columns: 320px minmax(500px, 1fr) auto;
+ align-items: start;
+ margin-bottom: .5em;
+}
+
+/* size and wrap controls */
+#size__ctl {
+ grid-row: 1;
+ grid-column: 3;
+ min-width: 64px;
+}
+#size__ctl img {
+ cursor: pointer;
+}
+
+/* edit buttons */
+.dokuwiki .editBar .editButtons {
+ grid-row: 1;
+ grid-column: 1;
+ display: grid;
+ grid-template-columns: 1fr 1fr 1fr;
+}
+[dir=rtl] .dokuwiki .editBar .editButtons {
+ margin-right: 0;
+ margin-left: 1em;
+}
+.dokuwiki .editBar .editButtons button {
+ border: #CCC solid 1.5pt;
+ padding: .25em .5em;
+ margin: 0 2pt;
+}
+.dokuwiki .editBar .editButtons button::before {
+ content: ' ';
+ display: inline-block;
+ position: relative;
+ top: .1em;
+ width: 1em;
+ height: 1em;
+ background: none center bottom no-repeat;
+ background-size: 1em;
+ margin-right: 4px;
+}
+
+.dokuwiki .editBar .editButtons button#edbtn__save {
+ background-color: #ccddff;
+}
+.dokuwiki .editBar .editButtons button#edbtn__save::before {
+ background-image: url('images/editor/edit-save.svg');
+}
+.dokuwiki .editBar .editButtons button#edbtn__preview {
+ background-color: #ccffdd;
+}
+.dokuwiki .editBar .editButtons button#edbtn__preview::before {
+ background-image: url('images/editor/edit-preview.svg');
+}
+.dokuwiki .editBar .editButtons button[name="do[cancel]"] {
+ background-color: #ffccdd;
+}
+.dokuwiki .editBar .editButtons button[name="do[cancel]"]::before {
+ background-image: url('images/editor/edit-cancel.svg');
+}
+
+/* summary input and minor changes checkbox */
+.dokuwiki .editBar .summary {
+ grid-row: 1;
+ grid-column: 2;
+ display: grid;
+ grid-template-columns: 1fr auto;
+ line-height: 1em;
+ padding-top: 2pt;
+ padding-right: 5pt;
+}
+
+.dokuwiki .editBar .summary #edit__summary {
+ background-color: @ini_background_alt;
+ border-color: @ini_border;
+ color: @ini_text;
+ border-radius: 3pt;
+ margin-left: 0;
+ width: 100%;
+}
+
+.dokuwiki .editBar .summary label {
+ white-space: nowrap;
+}
+.dokuwiki .editBar .summary label:last-child {
+ padding: 2pt 0 2pt 4pt;
+}
+.dokuwiki .editBar .summary > label:first-child {
+ display: grid;
+ grid-template-columns: auto 1fr;
+ column-gap: 10px;
+ padding: 2pt 5pt 0 0;
+}
+.dokuwiki .editBar .summary label span {
+ font-size: small;
+ margin: 0 1pt 0 3pt;
+}
+.dokuwiki .editBar .summary input {
+}
+/* change background colour if summary is missing */
+.dokuwiki .editBar .summary input.missing {
+ color: @ini_text;
+ background-color: #ffcccc;
+}
+
+/* toolbar popups */
+.dokuwiki div.picker {
+ & {
+ background-color: @ini_background_alt;
+ border: @ini_border solid 1px;
+ padding: .125rem;
+ -webkit-box-shadow: .125rem .125rem .5rem 0 rgba(0,0,0,.2);
+ -moz-box-shadow: .125rem .125rem .5rem 0 rgba(0,0,0,.2);
+ box-shadow: .125rem .125rem .5rem 0 rgba(0,0,0,.2);
+ }
+ button {
+ & {
+ color: @ini_text;
+ background-color: @ini_background;
+ border: @ini_border solid 1px;
+ min-width: 24px; min-height: 24px;
+ cursor: pointer;
+ margin: 1px;
+ }
+ &:hover {
+ background-color: @ini_text;
+ color: @ini_background;
+ }
+ }
+ &#picker1 {
+ /* width: 308px; max-width: 308px; min-width: 308px; */
+ resize: both;
+ overflow: auto;
+ }
+ &#picker2 {
+ /* width: 585px; max-width: 585px; min-width: 585px; */
+ resize: both;
+ overflow: auto;
+ }
+}
+
+/* preview
+********************************************************************/
+
+.dokuwiki div.preview {
+ border: dotted #CCC;
+ border-width: .2em 0;
+ padding: 1.4em 0;
+ margin-bottom: 1.4em;
+}
+
+/* narrow screen overrides: */
+@media (max-width: @ini_tablet_width) {
+
+ .dokuwiki div.editBar {
+ grid-template-columns: 1fr 5px auto;
+ }
+ .dokuwiki div.editBar .summary {
+ grid-row: 2;
+ grid-column: 1 / span 3;
+ }
+ .dokuwiki .editBar .summary #edit__summary {
+ margin-left: 8pt;
+ width: ~"calc(100% - 8px)";
+ }
+ .dokuwiki .editBar .summary label:last-child {
+ /*text-align: right;*/
+ }
+}
+@media (max-width: @ini_phone_width) {
+
+ .dokuwiki .editBar .summary,
+ .dokuwiki .editBar .summary > label:first-child {
+ grid-template-columns: 100%;
+ }
+}
+@media (max-width: 390px) {
+
+ .dokuwiki .editBar .editButtons button {
+ overflow: hidden;
+ height: 30px;
+ line-height: 24px;
+ }
+ .dokuwiki .editBar .summary #edit__summary {
+ margin-left: 4px;
+ width: 100%;
+ }
+
+}
+/* dark mode overrides */
+@media (prefers-color-scheme: dark) {
+
+ body.darkmode .editBox > .toolbar {
+ background-color: @ini_background_dark;
+ }
+ body.darkmode textarea.edit {
+ background-color: @ini_background_alt_dark;
+ border: @ini_headlines_dark solid 1px;
+ color: @ini_text_dark;
+ }
+
+ body.darkmode textarea::-webkit-scrollbar-track {
+ background: @ini_background_alt_dark;
+ }
+ body.darkmode textarea::-webkit-scrollbar-thumb {
+ background: @ini_background_dark;
+ }
+ body.darkmode textarea::-webkit-scrollbar-thumb:hover {
+ background: @ini_background_site_dark;
+ }
+ body.darkmode textarea { scrollbar-color: @ini_background_dark @ini_background_alt_dark; }
+ .dokuwiki textarea::-webkit-resizer {
+ background-color: @ini_background_alt_dark;
+ background: linear-gradient(135deg, @ini_background_alt_dark 0%, @ini_background_alt_dark 50%, @ini_text_alt_dark 50%, @ini_text_alt_dark 100%);
+ }
+
+ body.mode_edit.darkmode div.editBox button,
+ body.mode_preview.darkmode div.editBox button {
+ background-color: @ini_headlines_dark;
+ border-color: @ini_border_dark;
+ }
+ body.mode_edit.darkmode .editBar .editButtons button::before,
+ body.mode_preview.darkmode .editBar .editButtons button::before {
+ filter: invert(.9);
+ }
+ body.darkmode .editBar .editButtons button#edbtn__save {
+ background-color: #334466;
+ color: #CCDDFF;
+ }
+ body.darkmode .editBar .editButtons button#edbtn__preview {
+ background-color: #226633;
+ color: #CCFFDD;
+ }
+ body.darkmode .editBar .editButtons button[name="do[cancel]"] {
+ background-color: #663344;
+ color: #FFCCDD;
+ }
+
+ body.mode_edit.darkmode #tool__bar button,
+ body.mode_preview.darkmode #tool__bar button {
+ border-color: @ini_border_dark;
+ filter: invert(.8);
+ }
+ body.mode_edit.darkmode .editBar .editButtons button,
+ body.mode_preview.darkmode .editBar .editButtons button {
+ border-color: @ini_border_dark;
+ }
+
+ body.mode_edit.darkmode .editBar .summary #edit__summary,
+ body.mode_preview.darkmode .editBar .summary #edit__summary {
+ background-color: @ini_background_alt_dark;
+ border-color: @ini_headlines_dark;
+ color: @ini_text_dark;
+ }
+
+ body.darkmode div.picker {
+ & {
+ background-color: @ini_background_dark;
+ border: @ini_border_dark solid 1px;
+ }
+ button {
+ & {
+ color: @ini_text_dark;
+ background-color: @ini_background_alt_dark;
+ border-color: @ini_border_dark;
+ }
+ &:hover {
+ background-color: @ini_text_dark;
+ color: @ini_background_alt_dark;
+ }
+ }
+ }
+
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/_fileuploader.css b/templates/55/ad-hominem/css/_fileuploader.css
new file mode 100644
index 0000000..5b89a37
--- /dev/null
+++ b/templates/55/ad-hominem/css/_fileuploader.css
@@ -0,0 +1,123 @@
+/**
+ * This file provides the styles for the file uploader
+ * used in the media manager (both fullscreen and popup).
+ */
+
+.qq-uploader {
+ position: relative;
+ width: 100%;
+}
+
+.qq-uploader .error {
+ color: #f00;
+ background-color: #fff;
+}
+
+/* select file button */
+
+.qq-upload-button {
+ display: inline-block;
+ text-decoration: none;
+ font-size: 100%;
+ cursor: pointer;
+ margin: 1px 1px 5px;
+ background-color: #15395B;
+ padding: 2pt 20pt;
+ color: #FFF;
+ cursor: pointer;
+}
+#mediamanager__upload_button {
+ padding: 3pt 6pt;
+ border: #666 solid 1px;
+}
+
+.qq-upload-button-focus {
+ outline: 1px dotted;
+}
+
+/* drop area */
+
+.qq-upload-drop-area {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ min-height: 70px;
+ z-index: 2;
+ background: @ini_background_neu;
+ color: @ini_text;
+ text-align: center;
+}
+
+.qq-upload-drop-area span {
+ display: block;
+ position: absolute;
+ top: 50%;
+ width: 100%;
+ margin-top: -8px;
+ font-size: 120%;
+}
+
+.qq-upload-drop-area-active {
+ background: @ini_background_alt;
+}
+
+/* list of files to upload */
+
+div.qq-uploader ul {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+.qq-uploader li {
+ margin: 0 0 5px;
+ color: @ini_text;
+}
+
+.qq-uploader li span,
+.qq-uploader li input,
+.qq-uploader li a {
+ margin-right: 5px;
+}
+
+.qq-upload-file {
+ display: block;
+ font-weight: bold;
+}
+
+.qq-upload-spinner {
+ display: inline-block;
+ background: url("../../images/throbber.gif");
+ width: 15px;
+ height: 15px;
+ vertical-align: text-bottom;
+}
+
+.qq-upload-size,
+.qq-upload-cancel {
+ font-size: 85%;
+}
+
+.qq-upload-failed-text {
+ display: none;
+}
+.qq-upload-fail .qq-upload-failed-text {
+ display: inline;
+}
+
+.qq-action-container * {
+ vertical-align: middle;
+}
+.qq-overwrite-check input {
+ margin-left: 10px;
+}
+
+/* media tree overrides */
+#media__tree ul li div.li {
+ display: grid;
+}
+#mediamanager__page .ui-resizable-e {
+ background-color: #EEE;
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/_footnotes.css b/templates/55/ad-hominem/css/_footnotes.css
new file mode 100644
index 0000000..a57dfb9
--- /dev/null
+++ b/templates/55/ad-hominem/css/_footnotes.css
@@ -0,0 +1,31 @@
+/**
+ * This file provides styles for footnotes.
+ */
+
+/*____________ footnotes inside the text ____________*/
+
+/* link to footnote inside the text */
+.dokuwiki sup a.fn_top {
+}
+/* JSpopup */
+div.insitu-footnote {
+ max-width: 40%;
+ min-width: 5em;
+}
+
+/*____________ footnotes at the bottom of the page ____________*/
+
+.dokuwiki div.footnotes {
+ border-top: 1px solid @ini_border;
+ padding: .5em 0 0 0;
+ margin: 1em 0 0 0;
+ clear: both;
+}
+.dokuwiki div.footnotes div.fn {
+}
+.dokuwiki div.footnotes div.fn div.content {
+ display: inline;
+}
+.dokuwiki div.footnotes div.fn sup a.fn_bot {
+ font-weight: bold;
+}
diff --git a/templates/55/ad-hominem/css/_forms.css b/templates/55/ad-hominem/css/_forms.css
new file mode 100644
index 0000000..c3fcdfc
--- /dev/null
+++ b/templates/55/ad-hominem/css/_forms.css
@@ -0,0 +1,118 @@
+/* TODO: this file is not up to the best standards and will be fixed after an overhaul of the form code */
+
+/**
+ * This file provides styles for forms in general and specifically
+ * for ?do=
+ * - login
+ * - resendpwd
+ * - register
+ * - profile
+ * - subscribe
+ */
+
+/* ---------------- forms ------------------------ */
+
+.dokuwiki form {
+ border: none;
+ display: inline;
+}
+
+.dokuwiki label.block {
+ display: block;
+ text-align: right;
+ font-weight: bold;
+}
+[dir=rtl] .dokuwiki label.block {
+ text-align: left;
+}
+
+.dokuwiki label.simple {
+ display: block;
+ text-align: left;
+ font-weight: normal;
+}
+[dir=rtl] .dokuwiki label.simple {
+ text-align: right;
+}
+
+.dokuwiki label.block select,
+.dokuwiki label.block input.edit {
+ width: 50%;
+}
+
+.dokuwiki label span {
+ vertical-align: middle;
+}
+
+.dokuwiki fieldset {
+ width: 400px;
+ text-align: center;
+ border: 1px solid @ini_border;
+ padding: 0.5em;
+ margin: auto;
+}
+
+
+.dokuwiki input.edit,
+.dokuwiki select.edit {
+ vertical-align: middle;
+}
+.dokuwiki select.edit {
+ padding: 0.1em 0;
+}
+
+.dokuwiki button {
+ vertical-align: middle;
+}
+.dokuwiki input:focus,
+.dokuwiki select:focus,
+.dokuwiki button:focus {
+ outline: @ini_focus_color solid 2px;
+}
+/**
+ * Styles for auth forms
+ */
+#dw__login fieldset,
+#dw__resendpwd fieldset,
+#dw__register fieldset {
+ max-width: calc(100% - 1em);
+ padding-bottom: 0.7em;
+}
+
+#dw__login fieldset label.block,
+#dw__resendpwd fieldset label.block,
+#dw__register fieldset label.block {
+ width: 100%;
+ max-width: 320px;
+}
+#dw__login label[for="remember__me"] {
+ margin: 0 10% 1.4em;
+}
+
+#dw__profiledelete {
+ display: block;
+ margin-top: 2.8em;
+}
+
+/**
+ * Styles for the subscription page
+ */
+
+#subscribe__form {
+ display: block;
+ width: 400px;
+ text-align: center;
+}
+
+#subscribe__form fieldset {
+ text-align: left;
+ margin: 0.5em 0;
+}
+[dir=rtl] #subscribe__form fieldset {
+ text-align: right;
+}
+
+#subscribe__form label {
+ display: block;
+ margin: 0 0.5em 0.5em;
+}
diff --git a/templates/55/ad-hominem/css/_imgdetail.css b/templates/55/ad-hominem/css/_imgdetail.css
new file mode 100644
index 0000000..a074000
--- /dev/null
+++ b/templates/55/ad-hominem/css/_imgdetail.css
@@ -0,0 +1,38 @@
+/**
+ * This file provides styles for the image detail page (detail.php).
+ */
+
+#dokuwiki__detail {
+ padding: 1em;
+}
+#dokuwiki__detail h1 {
+}
+
+#dokuwiki__detail img {
+ float: left;
+ margin: 0 1.5em .5em 0;
+}
+[dir=rtl] #dokuwiki__detail div.content img {
+ float: right;
+ margin-right: 0;
+ margin-left: 1.5em;
+}
+#dokuwiki__detail div.img_detail {
+ float: left;
+}
+[dir=rtl] #dokuwiki__detail div.content div.img_detail {
+ float: right
+}
+
+#dokuwiki__detail div.img_detail h2 {
+}
+#dokuwiki__detail div.img_detail dl {
+}
+#dokuwiki__detail div.img_detail dl dt {
+}
+#dokuwiki__detail div.img_detail dl dd {
+}
+
+#dokuwiki__detail p.back {
+ clear: both;
+}
diff --git a/templates/55/ad-hominem/css/_languages.less b/templates/55/ad-hominem/css/_languages.less
new file mode 100644
index 0000000..651c237
--- /dev/null
+++ b/templates/55/ad-hominem/css/_languages.less
@@ -0,0 +1,202 @@
+/**
+ * This file provides styles for the Languages list,
+ * both for the side- and the toolbar.
+ * This overrides some of the styles in the languages plugin.
+ */
+
+#tbLanguages, #sbLanguages {
+
+ ul {
+ & {
+ margin-left: .5em;
+ }
+ li {
+ & {
+ list-style: none inside;
+ }
+ a {
+ & {
+ display: grid;
+ grid-template-columns: 1.25em auto;
+ align-items: center;
+ gap: .4em;
+ padding: .125em;
+ line-height: 1.2em;
+ }
+ &::before {
+ content: attr(lang);
+ display: inline-block;
+ text-align: center;
+ place-self: stretch;
+ border: @ini_text solid 1px;
+ font-size: small;
+ border-radius: 1.5pt;
+ font-family: @ini_mono_fonts;
+ font-size: .75rem;
+ color: @ini_text;
+ }
+ &.wikilink1 {
+ & {
+ color: @ini_link;
+ }
+ &:hover {
+ text-decoration: none;
+ }
+ &:hover span {
+ text-decoration: underline;
+ }
+ }
+ &.wikilink2 {
+ & {
+ border-bottom: transparent 0 none;
+ }
+ &:hover {
+ text-decoration: none;
+ }
+ bdi {
+ color: @ini_missing;
+ text-decoration: underline;
+ text-decoration-style: dotted;
+ }
+ }
+ &.wikilink2:hover span {
+ text-decoration-style: solid;
+ }
+ }
+ }
+ }
+}
+
+#tbLanguages {
+
+ & {
+ display: grid;
+ place-items: center;
+ grid-template-rows: auto 0;
+ height: 100%;
+ }
+ button {
+ & {
+ padding: .25em;
+ font-size: 1rem;
+ border: transparent 1px solid;
+ background-color: transparent;
+ color: @ini_link;
+ cursor: pointer;
+ border-radius: .25em;
+ }
+ &:hover {
+ background-color: @ini_background_alt;
+ border-color: @ini_border;
+ text-decoration: underline;
+ }
+ svg {
+ width: 1.8rem; height: 1.8rem;
+ fill: @ini_link;
+ }
+ svg text {
+ fill: @ini_background_site;
+ text-transform: uppercase;
+ }
+ }
+ #langMenuWrapper {
+ & {
+ position: relative;
+ left: 2rem; top: .5rem;
+ }
+ #langMenu {
+ & {
+ position: absolute;
+ right: 0;
+ background-color: @ini_background_site;
+ border: @ini_border solid 1px;
+ box-shadow: 0 0 8px rgba(0,0,0,.2);
+ border-radius: 2pt;
+ padding: .25em;
+ z-index: 12;
+ }
+ &:before {
+ content: '';
+ position: absolute;
+ top: 0;
+ height: 1em;
+ right: 16%;
+ width: 1em;
+ margin-left: -.5em;
+ background-color: @ini_background_site;
+ box-shadow: 0 0 8px rgba(0,0,0,.2);
+ -webkit-clip-path: polygon(-8px -8px,calc(100% + 8px) -8px,calc(100% + 8px) calc(100% + 8px));
+ clip-path: polygon(-8px -8px,calc(100% + 8px) -8px,calc(100% + 8px) calc(100% + 8px));
+ transform: translateY(-50%) rotate(-45deg);
+ border: @ini_border solid 1px;
+ }
+ li a {
+ & {
+ font-size: 1rem;
+ padding: .25em;
+ min-width: 6.5em;
+ width: max-content;
+ }
+ }
+ }
+ }
+}
+
+#sbLanguages {
+ & {
+ margin: 1em .25em 0 1em;
+ }
+ h3 a.wikilink2 {
+ color: @ini_missing;
+ }
+ ul {
+ padding-left: 0 !important;
+ }
+}
+
+/* dark mode overrides: */
+@media (prefers-color-scheme: dark) {
+
+ body.darkmode {
+
+ #tbLanguages, #sbLanguages {
+ ul li a {
+ &::before { border-color: @ini_text_dark; color: @ini_text_dark; }
+ &.wikilink1 { color: @ini_link_dark; }
+ &.wikilink2 bdi { color: @ini_missing_dark; }
+ }
+ }
+
+ #tbLanguages {
+ button {
+ & { color: @ini_link_dark; }
+ &:hover { background-color: @ini_background_alt_dark; border-color: @ini_border_dark; }
+ svg { fill: @ini_link_dark; }
+ svg text { fill: @ini_background_site_dark; }
+ }
+ #langMenuWrapper #langMenu {
+ & {
+ background-color: @ini_background_site_dark;
+ border-color: @ini_border_dark;
+ box-shadow: 1pt 1pt 5pt rgba(0,0,0,0.4);;
+ }
+ &:before {
+ background-color: @ini_background_site_dark;
+ box-shadow: 1pt 1pt 5pt rgba(0,0,0,0.4);;
+ border-color: @ini_border_dark;
+ }
+ }
+ }
+ #sbLanguages h3 a.wikilink2 {
+ color: @ini_missing_dark;
+ }
+ }
+}
+
+@media (max-width: 950px) {
+
+ /* touchup for the languages list in menu mode */
+ #sbLanguages {
+ margin: .5em .25em 0 .5em;
+ }
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/_links.css b/templates/55/ad-hominem/css/_links.css
new file mode 100644
index 0000000..f9ee5de
--- /dev/null
+++ b/templates/55/ad-hominem/css/_links.css
@@ -0,0 +1,93 @@
+/**
+ * This file provides styles for all types of links.
+ */
+
+/*____________ links to wiki pages ____________*/
+
+/* existing wikipage */
+a.wikilink1 {
+}
+/* not existing wikipage */
+a.wikilink2 {
+ text-decoration: none;
+}
+a.wikilink2:link,
+a.wikilink2:visited {
+ border-bottom: 1px dashed;
+}
+a.wikilink2:hover,
+a.wikilink2:active,
+a.wikilink2:focus {
+ border-bottom-width: 0;
+}
+
+/* any link to current page */
+span.curid a {
+ font-weight: bold;
+}
+
+/* Wikipedia Links */
+a.iw_wp, a.iw_wpfr, a.iw_wpde, a.iw_wpes, a.iw_wppl, a.iw_wpjp, a.iw_wpmeta {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMTAwJTI1JyBoZWlnaHQ9JzEwMCUyNScgdmlld0JveD0nMCAwIDUxMiA1MTInIHZlcnNpb249JzEuMScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48Y2lyY2xlIGN4PScyNTYnIGN5PScyNTYnIHI9JzI1MCcgc3R5bGU9J2ZpbGw6I2ViZWJlYjtzdHJva2U6IzMzMztzdHJva2Utd2lkdGg6MTBweDsnLz48cGF0aCBkPSdNNjUsMTUybDAsOGMwLDIgMSwzIDQsM2MyMCwxIDIwLDUgMjgsMjNsOTAsMTk2YzcsMTQgMTYsMTYgMjUsLTFsNDUsLTg4bDQyLDg4YzgsMTUgMTYsMTYgMjQsMGw4NiwtMTk0YzgsLTE3IDE5LC0yNCAzNiwtMjRjMiwwIDIsLTEgMiwtM2wwLC04bC04MCwwbC0xLDFsMCw3YzAsMiAyLDMgNCwzYzEwLDAgMjksMiAyMSwxOWwtNzAsMTY2bC0zLC0xbC00MywtODhsMzcsLTcyYzgsLTE1IDEwLC0yNCAyNSwtMjRjMiwwIDQsLTEgNCwtM2wwLC03bC0xLC0xbC02NCwwbC0xLDFsMCw3YzAsMyA0LDMgNywzYzE4LDEgMTYsOCAxMCwxOWwtMjcsNTZsLTI1LC01MmMtOSwtMTYgLTExLC0yMSAyLC0yMmMzLC0xIDgsLTEgOCwtNGwwLC03bC0xLC0xbC02OSwwbC0xLDFsMCw4YzAsMiAyLDIgNSwyYzEyLDIgMTIsMyAyMywyNmw0MCw4NGwtMzcsNzVsLTMsLTFsLTc2LC0xNjdjLTgsLTE3IDIsLTE2IDE4LC0xN2MzLDAgMywtMSAzLC0zbDAsLTdsLTEsLTFsLTg2LDBaJyBzdHlsZT0nZmlsbDojMzMzOycvPjwvc3ZnPg==");
+}
+
+a.iw_google_de {
+ background-image: url(/lib/images/interwiki/google.svg);
+}
+
+a.iw_twitter {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAOCAYAAAAmL5yKAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHWSURBVDhPjVI9aFNRGD3nvgbS1kREB6E00RgKFkcRFQR/BhERHMTJ1tGppVsHZ5EqiJuDg/hsFt101w6CkrGg4GKJUKhYSc2LjaV57+u5L0+xxUoOnMf3ffee891370f0gdKzVtGMBwnLAVzOD9japjFAzpHlMNqrPcfE943JQpwq/kI5bI8ZbM7MzijNE3wL2mMZVUC8dInZUbFmwEx13gZ6sh7OvjFK+ES8qnS/OCyzi2Z4Adh5HX/UybGrhUFtursRR69Gw9a5cq0z5A2WltePSHDKxztAA7/JaJGHa+1iN06ewuC7eDRBftKOuo4Yyfh2Vt8Gkhe+TBZeuzi2kewUnd4S9sHspDpP7yYWNrS+6gNHh6aSquJBX+gTn9X0uw9c40ZhxYFTihd9oU8sBMx99YFLU8MHOdYVraf5/xER7tHSRN7/dmZAtPRdECNRL7orurq8By7gxyyXNENpvu2Q2AnJZ3UnV1QKeit/sKlTPieCW42bQz+zGlgKo4oRhzQxVYkvq/0l1TWy29BU54eku9+YGP79WikczK0xwbgG45rEx1VLxF/iilgncc85ng4Q3Nkp9kh/oRJ2GKNblPKACnpOfw30Jj9G8ntW313XWP0TwBYiI7IuEdRzyAAAAABJRU5ErkJggg==);
+}
+
+/*____________ other link types ____________*/
+
+a.urlextern,
+a.windows,
+a.mail,
+a.mediafile,
+a.interwiki {
+ background-repeat: no-repeat;
+ background-position: 0 center;
+ background-size: 1.1em;
+ padding: 0 0 0 1.25em;
+}
+/* external link */
+a.urlextern {
+ background-image: url(../../images/external-link.png);
+}
+/* windows share */
+a.windows {
+ background-image: url(../../images/unc.png);
+}
+/* email link */
+a.mail {
+ background-image: url(../../images/email.png);
+}
+
+/* icons of the following are set by dokuwiki in lib/exe/css.php */
+/* link to some embedded media */
+a.mediafile {
+}
+/* interwiki link */
+a.interwiki {
+}
+
+/* RTL corrections; if link icons don't work as expected, remove the following lines */
+[dir=rtl] a.urlextern,
+[dir=rtl] a.windows,
+[dir=rtl] a.mail,
+[dir=rtl] a.interwiki,
+[dir=rtl] a.mediafile {
+ background-position: right center;
+ padding: 0 18px 0 0;
+}
+
+
+/* dark mode overrides */
+@media (prefers-color-scheme: dark) {
+
+ body.darkmode a.iw_wp, body.darkmode a.iw_wpfr, body.darkmode a.iw_wpde, body.darkmode a.iw_wpes, body.darkmode a.iw_wppl, body.darkmode a.iw_wpjp, body.darkmode a.iw_wpmeta {
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyB2aWV3Qm94PScwIDAgNTEyIDUxMicgdmVyc2lvbj0nMS4xJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxjaXJjbGUgY3g9JzI1NicgY3k9JzI1Nicgcj0nMjUwJyBzdHlsZT0nZmlsbDojMzMzO3N0cm9rZTojZWJlYmViO3N0cm9rZS13aWR0aDoxMHB4OycvPjxwYXRoIGQ9J002NSwxNTJsMCw4YzAsMiAxLDMgNCwzYzIwLDEgMjAsNSAyOCwyM2w5MCwxOTZjNywxNCAxNiwxNiAyNSwtMWw0NSwtODhsNDIsODhjOCwxNSAxNiwxNiAyNCwwbDg2LC0xOTRjOCwtMTcgMTksLTI0IDM2LC0yNGMyLDAgMiwtMSAyLC0zbDAsLThsLTgwLDBsLTEsMWwwLDdjMCwyIDIsMyA0LDNjMTAsMCAyOSwyIDIxLDE5bC03MCwxNjZsLTMsLTFsLTQzLC04OGwzNywtNzJjOCwtMTUgMTAsLTI0IDI1LC0yNGMyLDAgNCwtMSA0LC0zbDAsLTdsLTEsLTFsLTY0LDBsLTEsMWwwLDdjMCwzIDQsMyA3LDNjMTgsMSAxNiw4IDEwLDE5bC0yNyw1NmwtMjUsLTUyYy05LC0xNiAtMTEsLTIxIDIsLTIyYzMsLTEgOCwtMSA4LC00bDAsLTdsLTEsLTFsLTY5LDBsLTEsMWwwLDhjMCwyIDIsMiA1LDJjMTIsMiAxMiwzIDIzLDI2bDQwLDg0bC0zNyw3NWwtMywtMWwtNzYsLTE2N2MtOCwtMTcgMiwtMTYgMTgsLTE3YzMsMCAzLC0xIDMsLTNsMCwtN2wtMSwtMWwtODYsMFonIHN0eWxlPSdmaWxsOiNlYmViZWI7Jy8+PC9zdmc+");
+ }
+
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/_media_fullscreen.css b/templates/55/ad-hominem/css/_media_fullscreen.css
new file mode 100644
index 0000000..dd703a2
--- /dev/null
+++ b/templates/55/ad-hominem/css/_media_fullscreen.css
@@ -0,0 +1,578 @@
+/**
+ * This file provides the styles for the fullscreen media manager
+ * (?do=media).
+ *
+ * What most templates would probably need to change (depending on
+ * their site width) are the 4 min-width's (search for @change).
+ */
+
+
+/*____________ structure ____________*/
+
+#mediamanager__page h1 {
+ margin-bottom: .5em;
+}
+
+#mediamanager__page {
+ /* min-width must be summary of all 3 panels' min-widths */
+ min-width: 50em; /* @change */
+ width: 100%;
+ text-align: left;
+}
+[dir=rtl] #mediamanager__page {
+ text-align: right;
+}
+#mediamanager__page .panel {
+ float: left;
+}
+[dir=rtl] #mediamanager__page .panel {
+ float: right;
+}
+
+#mediamanager__page .namespaces {
+ width: 20%;
+ min-width: 10em; /* @change */
+ left:0 !important; /* overrules jQuery UI resizable in rtl */
+}
+#mediamanager__page .filelist {
+ width: 50%;
+ min-width: 25em; /* @change */
+ left:0 !important; /* overrules jQuery UI resizable in rtl */
+}
+#mediamanager__page .file {
+ width: 30%;
+ min-width: 15em; /* @change */
+}
+
+#mediamanager__page .tabs li {
+ white-space: nowrap;
+}
+
+#mediamanager__page .panelHeader {
+ background-color: @ini_background_alt;
+ margin: 0 10px 10px 0;
+ padding: 10px 10px 8px;
+ text-align: left;
+ min-height: 20px;
+ overflow: hidden;
+}
+[dir=rtl] #mediamanager__page .panelHeader {
+ text-align: right;
+ margin: 0 0 10px 10px;
+}
+#mediamanager__page .panelContent {
+ overflow-y: auto;
+ overflow-x: hidden;
+ padding: 3px 0 0 0;
+ margin: 0 10px 10px 0;
+ position: relative;
+}
+[dir=rtl] #mediamanager__page .panelContent {
+ text-align: right;
+ margin: 0 0 10px 10px;
+}
+
+#mediamanager__page .file .panelHeader,
+#mediamanager__page .file .panelContent {
+ margin-right: 0;
+}
+[dir=rtl] #mediamanager__page .file .panelHeader,
+[dir=rtl] #mediamanager__page .file .panelContent {
+ margin-left: 0;
+}
+
+#mediamanager__page .ui-resizable-e,
+[dir=rtl] #mediamanager__page .ui-resizable-w {
+ width: 6px;
+ right: 2px;
+ background: transparent url(../../images/resizecol.png) center center no-repeat;
+}
+#mediamanager__page .ui-resizable-e:hover,
+[dir=rtl] #mediamanager__page .ui-resizable-w:hover {
+ background-color: @ini_background_alt;
+}
+
+#mediamanager__page dd {
+ margin: 0;
+}
+
+#mediamanager__page .panelHeader h3 {
+ float: left;
+ font-weight: normal;
+ font-size: 1em;
+ padding: 0;
+ margin: 0 0 3px;
+}
+[dir=rtl] #mediamanager__page .panelHeader h3 {
+ float : right
+}
+
+
+/*____________ namespaces panel ____________*/
+
+[dir=rtl] #mediamanager__page .namespaces {
+ text-align: right;
+}
+
+/* make it look like a tab (as in _tabs.css) */
+#mediamanager__page .namespaces h2 {
+ font-size: 1em;
+ display: inline-block;
+ padding: .3em .8em;
+ margin: 0 0 0 .3em;
+ border-radius: .5em .5em 0 0;
+ font-weight: normal;
+ background-color: @ini_background_alt;
+ color: @ini_text;
+ border: 1px solid @ini_border;
+ border-bottom-color: @ini_background_alt;
+ line-height: 1.4em;
+ position: relative;
+ bottom: -1px;
+ z-index: 2;
+}
+[dir=rtl] #mediamanager__page .namespaces h2 {
+ margin: 0 .3em 0 0;
+ position: relative;
+ right: 10px;
+}
+#mediamanager__page .namespaces .panelHeader {
+ border-top: 1px solid @ini_border;
+ z-index: 1;
+}
+
+#mediamanager__page .namespaces ul {
+ margin-left: .2em;
+ margin-bottom: 0;
+ padding: 0;
+ list-style: none;
+}
+[dir=rtl] #mediamanager__page .namespaces ul {
+ margin-left: 0;
+ margin-right: .2em;
+}
+#mediamanager__page .namespaces ul ul {
+ margin-left: 1em;
+}
+[dir=rtl] #mediamanager__page .namespaces ul ul {
+ margin-left: 0;
+ margin-right: 1em;
+}
+#mediamanager__page .namespaces ul ul li {
+ margin: 0;
+}
+
+#mediamanager__page .namespaces ul .selected {
+ background-color: __highlight__;
+ font-weight: bold;
+}
+
+
+/*____________ file list panel ____________*/
+
+/* file list header */
+
+#mediamanager__page .panelHeader form.options {
+ float: right;
+ margin-top: -3px;
+}
+[dir=rtl] #mediamanager__page .panelHeader form.options {
+ float : left
+}
+#mediamanager__page .panelHeader ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+#mediamanager__page .panelHeader ul li {
+ color: @ini_text;
+ float: left;
+ line-height: 1;
+ padding-left: 3px;
+}
+[dir=rtl] #mediamanager__page .panelHeader ul li {
+ padding-right: 3px;
+ padding-left: 0;
+ float: right;
+}
+
+#mediamanager__page .panelHeader ul li.ui-controlgroup-horizontal {
+ padding-left: 2px;
+ margin: 0 0 0 5px;
+}
+/* #mediamanager__page .panelHeader ul li.listType {
+ background: url('../../images/icon-list.png') 3px 1px no-repeat;
+}
+#mediamanager__page .panelHeader ul li.sortBy {
+ background: url('../../images/icon-sort.png') 3px 1px no-repeat;
+} */
+[dir=rtl] #mediamanager__page .panelHeader ul li.ui-controlgroup-horizontal {
+ padding-left: 0;
+ padding-right: 2px;
+ margin: 0 5px 0 0;
+ background-position: right 1px;
+}
+
+#mediamanager__page .panelHeader form.options .ui-controlgroup-horizontal label{
+ font-size: 90%;
+ margin-right: -0.4em;
+ padding: .3em .5em;
+ line-height: 1;
+}
+
+/* file list content */
+
+#mediamanager__page .filelist ul {
+ padding: 0;
+ margin: 0 10px 0 0;
+}
+[dir=rtl] #mediamanager__page .filelist ul {
+ margin: 0 0 0 10px;
+}
+#mediamanager__page .filelist ul.rows {
+ margin: 0;
+}
+#mediamanager__page .filelist .panelContent ul li:hover {
+ background-color: @ini_background_alt;
+}
+
+#mediamanager__page .filelist li dt a {
+ vertical-align: middle;
+ display: table-cell;
+ overflow: hidden;
+}
+
+/* file list as thumbs */
+
+#mediamanager__page .filelist .thumbs li {
+ width: 100px;
+ min-height: 130px;
+ display: inline-block;
+ /* the right margin should visually be 10px, but because of its inline-block nature the whitespace inbetween is about 4px more */
+ margin: 0 6px 10px 0;
+ background-color: @ini_background_neu;
+ color: @ini_text;
+ padding: 5px;
+ vertical-align: top;
+ text-align: center;
+ position: relative;
+ line-height: 1.2;
+}
+[dir=rtl] #mediamanager__page .filelist .thumbs li {
+ margin-right: 0;
+ margin-left: 6px;
+}
+
+#mediamanager__page .filelist .thumbs li dt a {
+ width: 100px;
+ height: 90px;
+}
+
+#mediamanager__page .filelist .thumbs li dt a img {
+ max-width: 90px;
+ max-height: 90px;
+}
+
+#mediamanager__page .filelist .thumbs li .name,
+#mediamanager__page .filelist .thumbs li .size,
+#mediamanager__page .filelist .thumbs li .filesize,
+#mediamanager__page .filelist .thumbs li .date {
+ display: block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ width: 90px;
+ white-space: nowrap;
+ font-size: 10pt;
+}
+#mediamanager__page .filelist .thumbs li .name {
+ padding: 5px 0;
+ font-weight: bold;
+}
+#mediamanager__page .filelist .thumbs li .date {
+ font-style: italic;
+ white-space: normal;
+}
+
+/* file list as rows */
+
+#mediamanager__page .filelist .rows li {
+ list-style: none;
+ display: block;
+ position: relative;
+ max-height: 50px;
+ margin: 0 0 3px 0;
+ background-color: @ini_background;
+ color: @ini_text;
+ overflow: hidden;
+}
+
+#mediamanager__page .filelist .rows li:nth-child(2n+1) {
+ background-color: @ini_background_neu;
+}
+
+#mediamanager__page .filelist .rows li dt {
+ float: left;
+ width: 10%;
+ height: 40px;
+ text-align: center;
+}
+[dir=rtl] #mediamanager__page .filelist .rows li dt {
+ float: right;
+}
+#mediamanager__page .filelist .rows li dt a {
+ width: 100px;
+ height: 40px;
+}
+
+#mediamanager__page .filelist .rows li dt a img {
+ max-width: 40px;
+ max-height: 40px;
+}
+
+#mediamanager__page .filelist .rows li .name,
+#mediamanager__page .filelist .rows li .size,
+#mediamanager__page .filelist .rows li .filesize,
+#mediamanager__page .filelist .rows li .date {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ float: left;
+ margin-left: 1%;
+ white-space: nowrap;
+}
+[dir=rtl] #mediamanager__page .filelist .rows li .name,
+[dir=rtl] #mediamanager__page .filelist .rows li .size,
+[dir=rtl] #mediamanager__page .filelist .rows li .filesize,
+[dir=rtl] #mediamanager__page .filelist .rows li .date {
+ float: right;
+ margin-left: 0;
+ margin-right: 1%;
+}
+
+#mediamanager__page .filelist .rows li .name {
+ width: 30%;
+ font-weight: bold;
+}
+#mediamanager__page .filelist .rows li .size,
+#mediamanager__page .filelist .rows li .filesize {
+ width: 15%;
+}
+#mediamanager__page .filelist .rows li .date {
+ width: 20%;
+ font-style: italic;
+ white-space: normal;
+}
+
+/* upload form */
+
+#mediamanager__page div.upload {
+ padding-bottom: 0.5em;
+}
+
+/*____________ file panel ____________*/
+
+#mediamanager__page .file ul.actions {
+ text-align: center;
+ margin: 0 0 5px;
+ padding: 0;
+ list-style: none;
+}
+#mediamanager__page .file ul.actions li {
+ display: inline;
+ margin: 0;
+}
+
+#mediamanager__page .file div.image {
+ margin-bottom: 5px;
+ text-align: center;
+}
+
+#mediamanager__page .file div.image img {
+ width: 100%;
+}
+
+#mediamanager__page .file dl {
+ margin-bottom: 0;
+}
+#mediamanager__page .file dl dt {
+ font-weight: bold;
+ display: block;
+ background-color: @ini_background_alt;
+ padding-left: .25em;
+}
+#mediamanager__page .file dl dd {
+ display: block;
+ background-color: @ini_background_neu;
+ padding-left: 1em;
+}
+
+/* file meta data edit form */
+
+#mediamanager__page form.meta div.row {
+ margin-bottom: 5px;
+}
+
+#mediamanager__page form.meta label span {
+ display: block;
+}
+
+#mediamanager__page form.meta input {
+ width: 50%;
+}
+
+#mediamanager__page form.meta button {
+ width: auto;
+}
+
+#mediamanager__page form.meta textarea.edit {
+ height: 6em;
+ width: 95%;
+ min-width: 95%;
+ max-width: 95%;
+}
+
+/* file revisions form */
+
+#mediamanager__page form.changes ul {
+ margin-left: 10px;
+ padding: 0;
+ list-style-type: none;
+}
+[dir=rtl] #mediamanager__page form.changes ul {
+ margin-left: 0;
+ margin-right: 10px;
+}
+
+#mediamanager__page form.changes ul li div.li div {
+ font-size: 90%;
+ color: @ini_text_neu;
+ padding-left: 18px;
+}
+[dir=rtl] #mediamanager__page form.changes ul li div.li div {
+ padding-left: 0;
+ padding-right: 18px;
+}
+#mediamanager__page form.changes ul li div.li input {
+ position: relative;
+ top: 1px;
+}
+
+/* file diff view */
+
+#mediamanager__diff table {
+ table-layout: fixed;
+ border-width: 0;
+}
+
+#mediamanager__diff td,
+#mediamanager__diff th {
+ width: 48%;
+ margin: 0 5px 10px 0;
+ padding: 0;
+ vertical-align: top;
+ text-align: left;
+ border-color: @ini_background;
+}
+[dir=rtl] #mediamanager__diff td,
+[dir=rtl] #mediamanager__diff th {
+ margin: 0 0 10px 5px;
+ text-align: right;
+}
+
+#mediamanager__diff th {
+ font-weight: normal;
+ background-color: @ini_background;
+ line-height: 1.2;
+}
+#mediamanager__diff th a {
+ font-weight: bold;
+}
+#mediamanager__diff th span {
+ font-size: 90%;
+}
+
+#mediamanager__diff dl dd strong{
+ background-color: __highlight__;
+ color: @ini_text;
+ font-weight: normal;
+}
+
+/* image diff views */
+
+#mediamanager__page .file form.diffView {
+ margin-bottom: 10px;
+ display: block;
+}
+
+#mediamanager__diff div.slider {
+ margin: 10px;
+ width: 95%;
+}
+
+#mediamanager__diff .imageDiff {
+ position: relative;
+}
+#mediamanager__diff .imageDiff .image2 {
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+#mediamanager__diff .imageDiff.opacity .image2 {
+ opacity: 0.5;
+}
+
+#mediamanager__diff .imageDiff.portions .image2 {
+ border-right: 1px solid red;
+ overflow: hidden;
+}
+
+#mediamanager__diff .imageDiff.portions img {
+ float: left;
+}
+
+#mediamanager__diff .imageDiff img {
+ width: 100%;
+ max-width: none;
+}
+
+/* dark mode overrides */
+@media (prefers-color-scheme: dark) {
+ body.darkmode #mediamanager__page .panelHeader,
+ body.darkmode .tabs > ul li a,
+ body.darkmode ul.tabs li strong,
+ body.darkmode ul.tabs li a {
+ background-color: transparent;
+ border-color: @ini_text_dark;
+ color: @ini_text_dark;
+ }
+
+ body.darkmode #mediamanager__page .namespaces h2 {
+ background-color: @ini_background_dark;
+ border-color: @ini_text_dark;
+ border-bottom-color: @ini_background_dark;
+ color: @ini_headlines_dark;
+ }
+ body.darkmode #mediamanager__page .filelist .thumbs li {
+ background-color: @ini_background_alt_dark;
+ color: @ini_text_dark;
+ }
+ body.darkmode #mediamanager__page .filelist .panelContent ul li:hover {
+ background-color: rgba(0,0,0,.2);
+ }
+
+ body.darkmode #mediamanager__page .filelist .rows li {
+ background-color: @ini_background_dark;
+ color: @ini_text_dark;
+ }
+ body.darkmode #mediamanager__page .filelist .rows li:nth-child(2n+1) {
+ background-color: @ini_background_alt_dark;
+ }
+
+ body.darkmode #mediamanager__page .ui-resizable-e { background-color: @ini_background_dark; }
+ body.darkmode #mediamanager__page .ui-resizable-e:hover,
+ body.darkmode [dir=rtl] #mediamanager__page .ui-resizable-w:hover { background-color: @ini_background_alt_dark; }
+ body.darkmode #mediamanager__page .file dl dt { background-color: rgba(0,0,0,.5); }
+ body.darkmode #mediamanager__page .file dl dd { background-color: rgba(0,0,0,.2); }
+ body.darkmode #mediamanager__page .namespaces ul .selected { background-color: @ini_background_alt_dark; }
+
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/_media_popup.css b/templates/55/ad-hominem/css/_media_popup.css
new file mode 100644
index 0000000..b75893b
--- /dev/null
+++ b/templates/55/ad-hominem/css/_media_popup.css
@@ -0,0 +1,216 @@
+/**
+ * This file provides styles for the media manager popup
+ * (mediamanager.php).
+ */
+
+/*____________ structure ____________*/
+
+html.popup {
+ overflow: auto;
+}
+
+#media__manager {
+ height: 100%;
+ overflow: hidden;
+}
+
+#mediamgr__aside {
+ width: 30%;
+ height: 100%;
+ overflow: auto;
+ position: absolute;
+ left: 0;
+ border-right: 1px solid @ini_border;
+}
+[dir=rtl] #mediamgr__aside {
+ left: auto;
+ right: 0;
+ border-right-width: 0;
+ border-left: 1px solid @ini_border;
+}
+#mediamgr__aside .pad {
+ padding: .5em;
+}
+
+#mediamgr__content {
+ width: 69.7%;
+ height: 100%;
+ overflow: auto;
+ position: absolute;
+ right: 0;
+}
+[dir=rtl] #mediamgr__content {
+ right: auto;
+ left: 0;
+}
+#mediamgr__content .pad {
+ padding: .5em;
+}
+
+#media__manager h1,
+#media__manager h2 {
+ font-size: 1.5em;
+ margin-bottom: .5em;
+ padding-bottom: .2em;
+ border-bottom: 1px solid @ini_border;
+}
+
+/* left side
+********************************************************************/
+
+/*____________ options ____________*/
+
+#media__opts {
+ margin-bottom: .5em;
+}
+
+#media__opts input {
+ margin-right: .3em;
+}
+[dir=rtl] #media__opts input {
+ margin-right: 0;
+ margin-left: .3em;
+}
+#media__opts label {
+}
+
+/*____________ tree ____________*/
+
+#media__tree ul {
+ padding-left: .2em;
+}
+[dir=rtl] #media__tree ul {
+ padding-left: 0;
+ padding-right: .2em;
+}
+#media__tree ul li {
+ clear: left;
+ list-style-type: none;
+ list-style-image: none;
+ margin-left: 0;
+}
+[dir=rtl] #media__tree ul li {
+ clear: right;
+ margin-right: 0;
+}
+#media__tree ul li img {
+ float: left;
+ padding: .5em .3em 0 0;
+}
+[dir=rtl] #media__tree ul li img {
+ float: right;
+ padding: .5em 0 0 .3em;
+}
+#media__tree ul li div.li {
+ display: inline;
+}
+#media__tree ul li li {
+ margin-left: 1.5em;
+}
+[dir=rtl] #media__tree ul li li {
+ margin-left: 0;
+ margin-right: 1.5em;
+}
+
+/* right side
+********************************************************************/
+
+/*____________ upload form ____________*/
+
+/* upload info */
+#media__content div.upload {
+ font-size: .9em;
+ margin-bottom: .5em;
+}
+
+#mediamanager__uploader {
+ margin-bottom: 1em;
+}
+#mediamanager__uploader p {
+ margin-bottom: .5em;
+}
+
+/*____________ file list ____________*/
+
+#media__content img.load {
+ margin: 1em auto;
+}
+
+#media__content .odd,
+#media__content .even {
+ padding: .5em;
+}
+#media__content .odd {
+ background-color: @ini_background_alt;
+}
+#media__content .even {
+}
+/* highlight newly uploaded or edited file */
+#media__content #scroll__here {
+ border: 1px dashed @ini_border;
+}
+
+/* link which inserts media file */
+#media__content a.mediafile {
+ margin-right: 1.5em;
+ font-weight: bold;
+ cursor: pointer;
+}
+[dir=rtl] #media__content a.mediafile {
+ margin-right: 0;
+ margin-left: 1.5em;
+}
+#media__content span.info {
+}
+#media__content img.btn {
+ vertical-align: text-bottom;
+}
+
+/* info how to insert media, if JS disabled */
+#media__content div.example {
+ color: @ini_text_neu;
+ margin-left: 1em;
+}
+
+#media__content div.detail {
+ padding: .2em 0;
+}
+#media__content div.detail div.thumb {
+ float: left;
+ margin: 0 .5em 0 18px;
+}
+[dir=rtl] #media__content div.detail div.thumb {
+ float: right;
+ margin: 0 18px 0 .5em;
+}
+#media__content div.detail div.thumb a {
+ display: block;
+ cursor: pointer;
+}
+#media__content div.detail p {
+ margin-bottom: 0;
+}
+
+
+/*____________ media search ____________*/
+
+#dw__mediasearch {
+}
+#dw__mediasearch p {
+}
+#dw__mediasearch label {
+}
+#dw__mediasearch label span {
+}
+#dw__mediasearch input.edit {
+}
+#dw__mediasearch button {
+}
+
+/* dark mode overrides */
+@media (prefers-color-scheme: dark) {
+
+ body.darkmode #media__content .odd {
+ background-color: @ini_background_dark;
+ }
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/_modal.css b/templates/55/ad-hominem/css/_modal.css
new file mode 100644
index 0000000..5ce1a69
--- /dev/null
+++ b/templates/55/ad-hominem/css/_modal.css
@@ -0,0 +1,187 @@
+/**
+ * This file provides styles for modal dialogues.
+ */
+
+.dokuwiki .ui-widget {
+ font-size: 100%;
+ /*min-width: 290px;
+ min-height: 285px; */
+}
+
+
+/* link wizard (opens from the link button in the edit toolbar)
+********************************************************************/
+
+#link__wiz {
+ resize: both;
+ max-width: 80%;
+ max-height: 512px;
+ -webkit-box-shadow: 2px 2px 3px 2px rgba(0,0,0,.5);
+ -moz-box-shadow: 2px 2px 3px 2px rgba(0,0,0,.5);
+ box-shadow: 2px 2px 3px 2px rgba(0,0,0,.5);
+}
+
+[dir=rtl] #link__wiz_close {
+ float: left;
+}
+
+#link__wiz .ui-dialog-content {
+ width: 100%;
+ height: ~"calc(100% - 22px)";
+ overflow: hidden;
+ color: @ini_text_alt;
+ font-size: small;
+}
+
+#link__wiz button.ui-dialog-titlebar-close {
+ width: 16px;
+ height: 16px;
+ min-width: 16px;
+ min-height: 16px;
+ background-color: @ini_background;
+ border: @ini_border solid 1px;
+}
+
+#link__wiz #link__wiz_entry {
+ width: ~"calc(100% - 5em)";
+ border-color: @ini_border;
+ background-color: @ini_background;
+ color: @ini_text;
+ font-family: @ini_mono_fonts;
+ font-size: 11pt;
+}
+#link__wiz #link__wiz_entry:focus {
+ outline: @ini_focus_color solid 2px;
+}
+
+#link__wiz_result {
+ background-color: @ini_background;
+ width: ~"calc(100% - 2px)";
+ height: ~"calc(100% - 68px)";
+ overflow: auto;
+ border: 1px solid @ini_border;
+ margin: 3px auto;
+ text-align: left;
+ font-size: medium;
+ line-height: 1em;
+}
+[dir=rtl] #link__wiz_result {
+ text-align: right;
+}
+
+#link__wiz_result div {
+ padding: 3px 3px 3px 0;
+}
+
+#link__wiz_result div a {
+ display: block;
+ padding-left: 1.3em;
+ min-height: 16px;
+ background: transparent 3px center no-repeat;
+ background-size: 1em;
+}
+[dir=rtl] #link__wiz_result div a {
+ padding: 3px 22px 3px 3px;
+ background-position: 257px 3px;
+}
+
+#link__wiz_result div.type_u a:link,
+#link__wiz_result div.type_u a:visited {
+ background-image: url(./images/editor/browse-parent.svg);
+ color: @ini_link;
+}
+#link__wiz_result div.type_f a {
+ background-image: url(./images/editor/browse-link.svg);
+}
+#link__wiz_result div.type_d a:link,
+#link__wiz_result div.type_d a:visited {
+ background-image: url(./images/editor/browse-folder.svg);
+ color: @ini_link;
+}
+
+#link__wiz_result div.even {
+ background-color: @ini_background_neu;
+}
+
+#link__wiz_result div.selected {
+ background-color: @ini_background_alt;
+}
+
+#link__wiz_result span {
+ display: block;
+ color: @ini_text_neu;
+ margin-left: 22px;
+}
+
+#link__wiz .ui-button {
+ background-color: transparent;
+ border-color: transparent;
+}
+
+#link__wiz .ui-icon-closethick {
+ background: transparent url(images/editor/close.svg) center no-repeat;
+ background-size: 16px;
+}
+
+/* media option wizard (opens when inserting media in the media popup)
+********************************************************************/
+
+#media__popup {
+ /* for backwards compatibility (not needed since Rincewind) */
+ display: none;
+}
+
+#media__popup_content p {
+ margin: 0 0 .5em;
+}
+
+#media__popup_content label {
+ margin-right: .5em;
+ cursor: default;
+}
+
+#media__popup_content button {
+ margin-right: 1px;
+ cursor: pointer;
+}
+
+/* dark mode overrides */
+@media (prefers-color-scheme: dark) {
+
+ body.darkmode #link__wiz {
+ background-color: @ini_background_dark;
+ border-color: @ini_border_dark;
+ }
+ body.darkmode #link__wiz .ui-widget-header {
+ background: @ini_background_alt_dark none;
+ border-color: @ini_border_dark;
+ }
+ body.darkmode #link__wiz .ui-widget-header .ui-dialog-title {
+ color: @ini_headlines_dark;
+ }
+ body.darkmode #link__wiz #link__wiz_entry {
+ border-color: @ini_border_dark;
+ background-color: @ini_background_alt_dark;
+ color: @ini_text_dark;
+ }
+ body.darkmode #link__wiz_result div.type_u a:link,
+ body.darkmode #link__wiz_result div.type_u a:visited,
+ body.darkmode #link__wiz_result div.type_u a:link,
+ body.darkmode #link__wiz_result div.type_u a:visited {
+ color: @ini_link_dark;
+ }
+ body.darkmode #link__wiz button.ui-dialog-titlebar-close {
+ border-color: @ini_border_dark;
+ }
+ body.darkmode #link__wiz .ui-icon-closethick {
+ background-color: @ini_background_dark;
+ }
+
+ body.darkmode #link__wiz_result {
+ background-color: rgba(0,0,0,.2);
+ border-color: @ini_border_dark;
+ }
+ body.darkmode #link__wiz_result div.even {
+ background-color: @ini_background_dark;
+ }
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/_recent.css b/templates/55/ad-hominem/css/_recent.css
new file mode 100644
index 0000000..9035a43
--- /dev/null
+++ b/templates/55/ad-hominem/css/_recent.css
@@ -0,0 +1,91 @@
+/**
+ * This file provides styles for the recent changes (?do=recent) and
+ * old revisions (?do=revisions).
+ */
+
+/*____________ list of revisions / recent changes ____________*/
+
+/* added dark mode overrides -- SL
+
+/* select type of revisions (media/pages) */
+.dokuwiki .changeType {
+ margin-bottom: .5em;
+}
+
+.dokuwiki form.changes ul li {
+ list-style: none;
+ margin-left: 0;
+}
+[dir=rtl] .dokuwiki form.changes ul li {
+ margin-right: 0;
+}
+.dokuwiki form.changes ul li span,
+.dokuwiki form.changes ul li a {
+ vertical-align: middle;
+}
+.dokuwiki form.changes ul li span.user a {
+ vertical-align: bottom;
+}
+.dokuwiki form.changes ul li.minor {
+ opacity: .7;
+}
+
+.dokuwiki form.changes li span.date {
+}
+.dokuwiki form.changes li a.diff_link {
+ vertical-align: baseline;
+}
+.dokuwiki form.changes li a.revisions_link {
+ vertical-align: baseline;
+}
+.dokuwiki form.changes li a.wikilink1,
+.dokuwiki form.changes li a.wikilink2 {
+}
+.dokuwiki form.changes li span.sum {
+ font-weight: bold;
+}
+.dokuwiki form.changes li span.user {
+}
+
+/*____________ size differences ____________*/
+
+.dokuwiki form.changes li .sizechange {
+ font-size: 80%;
+ border-radius: .2em;
+ padding: .1em .2em;
+ /* cannot use non-guaranteed style.ini colour placeholders, dark templates need to overwrite */
+ background-color: #ddd;
+}
+
+.dokuwiki form.changes li .sizechange.positive {
+ background-color: #cfc;;
+}
+.dokuwiki form.changes li .sizechange.negative {
+ background-color: #fdd;
+}
+
+/*____________ page navigator ____________*/
+
+.dokuwiki div.pagenav {
+ text-align: center;
+ margin: 1.4em 0;
+}
+.dokuwiki div.pagenav-prev,
+.dokuwiki div.pagenav-next {
+ display: inline;
+ margin: 0 .5em;
+}
+
+/* dark mode overrides */
+@media (prefers-color-scheme: dark) {
+ .dokuwiki form.changes li .sizechange {
+ background-color: #0C0C0D;
+ color: #D0D5DA;
+ }
+ .dokuwiki form.changes li .sizechange.positive {
+ background-color: #0A3A1E;
+ }
+ .dokuwiki form.changes li .sizechange.negative {
+ background-color: #49090F;
+ }
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/_search.less b/templates/55/ad-hominem/css/_search.less
new file mode 100644
index 0000000..fbd8291
--- /dev/null
+++ b/templates/55/ad-hominem/css/_search.less
@@ -0,0 +1,203 @@
+/**
+ * This file provides styles for the search results page (?do=search)
+ * and the AJAX search popup.
+ */
+
+/* general
+********************************************************************/
+
+/* search hit in normal text */
+.dokuwiki .search_hit {
+ color: @ini_text;
+ background-color: __highlight__;
+}
+
+/* "nothing found" at search + media */
+.dokuwiki div.nothing {
+ margin-bottom: 1.4em;
+}
+
+/* search results page
+********************************************************************/
+
+/*____________ advanced search form ____________*/
+.dokuwiki .search-results-form fieldset.search-form {
+ width: 100%;
+ margin: 1em 0;
+
+ input[name="q"] {
+ width: 50%;
+ }
+
+ button.toggleAssistant {
+ float: right;
+ }
+
+ .advancedOptions {
+ padding: 1em 0;
+
+ > div {
+ display: inline-block;
+ position: relative;
+ margin: 0 0.5em;
+ }
+
+ div.toggle {
+ // default closed toggle state
+ div.current {
+ cursor: pointer;
+ max-width: 10em;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+
+ &::after {
+ content: '▼';
+ font-size: smaller;
+ color: @ini_text_alt;
+ }
+ }
+ div.changed {
+ font-weight: bold;
+ }
+ ul {
+ display: none;
+ position: absolute;
+ border: 1px solid @ini_border;
+ background-color: @ini_background;
+ padding: 0.25em 0.5em;
+ text-align: left;
+ min-width: 10em;
+ max-width: 15em;
+ max-height: 50vh;
+ overflow: auto;
+ z-index: 100;
+ li {
+ margin: 0.25em 0;
+ list-style: none;
+
+ a {
+ display: block;
+ }
+ }
+ }
+
+ // open toggle state
+ &.open {
+ div.current::after {
+ content: '▲';
+ }
+
+ ul {
+ display: block;
+ }
+ }
+ }
+ }
+}
+
+[dir=rtl] .search-results-form fieldset.search-form .advancedOptions {
+ div.toggle ul {
+ text-align: right;
+ }
+}
+
+/*____________ matching pagenames ____________*/
+
+.dokuwiki div.search_quickresult {
+ margin-bottom: 1.4em;
+
+ ul {
+ padding: 0;
+
+ li {
+ float: left;
+ width: 12em;
+ margin: 0 1.5em;
+ }
+ }
+}
+
+[dir=rtl] .dokuwiki div.search_quickresult ul li {
+ float: right;
+}
+
+/*____________ search results ____________*/
+
+.dokuwiki dl.search_results {
+ margin-bottom: 1.2em;
+
+ /* search heading */
+ dt {
+ font-weight: normal;
+ margin-bottom: .2em;
+ }
+
+ /* last modified line */
+ dd.meta {
+ margin: 0 0 .2em 0;
+ }
+
+ /* search snippet */
+ dd.snippet {
+ color: @ini_text_alt;
+ background-color: inherit;
+ margin: 0 0 1.2em 0;
+
+ /* search hit in search results */
+ strong.search_hit {
+ font-weight: normal;
+ /* color is set in general */
+ }
+
+ /* ellipsis separating snippets */
+ .search_sep {
+ color: @ini_text;
+ background-color: inherit;
+ }
+ }
+}
+
+/* AJAX quicksearch popup
+********************************************************************/
+
+.dokuwiki form.search {
+ div.no {
+ position: relative;
+ }
+
+ /* .JSpopup */
+ div.ajax_qsearch {
+ position: absolute;
+ top: 0;
+ left: -13.5em; /* -( width of #qsearch__in + padding of .ajax_qsearch + a bit more ) */
+ width: 12em;
+ padding: 0.5em;
+ font-size: .9em;
+ z-index: 20;
+ text-align: left;
+ display: none;
+
+ strong {
+ display: block;
+ margin-bottom: .3em;
+ }
+
+ ul {
+ margin: 0 !important;
+ padding: 0 !important;
+
+ li {
+ margin: 0;
+ padding: 0;
+ display: block !important;
+ }
+ }
+ }
+}
+
+[dir=rtl] .dokuwiki form.search div.ajax_qsearch {
+ left: auto;
+ /*right: -13.5em;*/
+ text-align: right;
+}
diff --git a/templates/55/ad-hominem/css/_tabs.css b/templates/55/ad-hominem/css/_tabs.css
new file mode 100644
index 0000000..507f49e
--- /dev/null
+++ b/templates/55/ad-hominem/css/_tabs.css
@@ -0,0 +1,84 @@
+/**
+ * This file provides the styles for general tabs.
+ */
+
+.dokuwiki .tabs > ul,
+.dokuwiki ul.tabs {
+ padding: 0;
+ margin: 0;
+ overflow: hidden;
+ position: relative;
+}
+/* border underneath */
+.dokuwiki .tabs > ul:after,
+.dokuwiki ul.tabs:after {
+ position: absolute;
+ content: "";
+ width: 100%;
+ bottom: 0;
+ left: 0;
+ border-bottom: 1px solid @ini_border;
+}
+
+.dokuwiki .tabs > ul li,
+.dokuwiki ul.tabs li {
+ float: left;
+ padding: 0;
+ margin: 0;
+ list-style: none;
+}
+[dir=rtl] .dokuwiki .tabs > ul li,
+[dir=rtl] .dokuwiki ul.tabs li {
+ float: right;
+}
+
+.dokuwiki .tabs > ul li a,
+.dokuwiki ul.tabs li strong,
+.dokuwiki ul.tabs li a {
+ display: inline-block;
+ padding: .3em .8em;
+ margin: 0 0 0 .3em;
+ background-color: @ini_background_neu;
+ color: @ini_text;
+ border: 1px solid @ini_border;
+ border-radius: .5em .5em 0 0;
+ position: relative;
+ z-index: 0;
+}
+[dir=rtl] .dokuwiki .tabs > ul li a,
+[dir=rtl] .dokuwiki ul.tabs li strong,
+[dir=rtl] .dokuwiki ul.tabs li a {
+ margin: 0 .3em 0 0;
+}
+
+.dokuwiki ul.tabs li strong {
+ font-weight: normal;
+}
+
+.dokuwiki ul.tabs li a:link,
+.dokuwiki ul.tabs li a:visited {
+}
+.dokuwiki .tabs > ul li a:hover,
+.dokuwiki .tabs > ul li a:active,
+.dokuwiki .tabs > ul li a:focus,
+.dokuwiki .tabs > ul li .curid a,
+.dokuwiki .tabs > ul .active a,
+.dokuwiki ul.tabs li a:hover,
+.dokuwiki ul.tabs li a:active,
+.dokuwiki ul.tabs li a:focus,
+.dokuwiki ul.tabs li.active a,
+.dokuwiki ul.tabs li strong {
+ background-color: @ini_background_alt;
+ color: @ini_text;
+ text-decoration: none;
+ font-weight: normal;
+}
+
+.dokuwiki .tabs > ul li .curid a,
+.dokuwiki .tabs > ul li .active a,
+.dokuwiki .tabs > ul li .active a,
+.dokuwiki ul.tabs li.active a,
+.dokuwiki ul.tabs li strong {
+ z-index: 2;
+ border-bottom-color: @ini_background_alt;
+}
diff --git a/templates/55/ad-hominem/css/_toc.css b/templates/55/ad-hominem/css/_toc.css
new file mode 100644
index 0000000..469e927
--- /dev/null
+++ b/templates/55/ad-hominem/css/_toc.css
@@ -0,0 +1,93 @@
+/**
+ * This file provides styles for the TOC (table of contents), the
+ * sitemap (?do=index) and backlinks (?do=backlink).
+ */
+
+/* toc
+********************************************************************/
+
+/* toc container */
+#dw__toc {
+ float: right;
+ margin: 0 0 1.4em 1.4em;
+ width: 12em;
+ background-color: @ini_background_alt;
+ color: inherit;
+}
+[dir=rtl] #dw__toc {
+ float: left;
+ margin: 0 1.4em 1.4em 0;
+}
+
+/*____________ toc header ____________*/
+
+.dokuwiki h3.toggle {
+ padding: .2em .5em;
+ font-weight: bold;
+}
+
+.dokuwiki .toggle strong {
+ float: right;
+ margin: 0 .2em;
+}
+[dir=rtl] .dokuwiki .toggle strong {
+ float: left;
+}
+
+/*____________ toc list ____________*/
+
+#dw__toc > div {
+ padding: .2em .5em;
+}
+#dw__toc ul {
+ padding: 0;
+ margin: 0;
+}
+#dw__toc ul li {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ line-height: 1.1;
+}
+#dw__toc ul li div.li {
+ padding: .15em 0;
+}
+#dw__toc ul ul {
+ padding-left: 1em;
+}
+[dir=rtl] #dw__toc ul ul {
+ padding-left: 0;
+ padding-right: 1em;
+}
+#dw__toc ul ul li {
+}
+#dw__toc ul li a {
+}
+
+/* in case of toc list jumping one level
+ (e.g. if heading level 3 follows directly after heading level 1) */
+#dw__toc ul li.clear {
+}
+
+
+/* sitemap (and backlinks)
+********************************************************************/
+
+.dokuwiki ul.idx {
+ padding-left: 0;
+}
+[dir=rtl] .dokuwiki ul.idx {
+ padding-right: 0;
+}
+.dokuwiki ul.idx li {
+ list-style-image: url(../../images/bullet.png);
+}
+.dokuwiki ul.idx li.open {
+ list-style-image: url(../../images/open.png);
+}
+.dokuwiki ul.idx li.closed {
+ list-style-image: url(../../images/closed.png);
+}
+[dir=rtl] .dokuwiki ul.idx li.closed {
+ list-style-image: url(../../images/closed-rtl.png);
+}
diff --git a/templates/55/ad-hominem/css/content.less b/templates/55/ad-hominem/css/content.less
new file mode 100644
index 0000000..5c9b0de
--- /dev/null
+++ b/templates/55/ad-hominem/css/content.less
@@ -0,0 +1,436 @@
+/**
+ * This contains the content styling
+ * @author Sascha Leib <sascha@leib.be>
+ */
+
+body {
+ overflow: hidden auto;
+}
+
+.dokuwiki main {
+ p,
+ blockquote,
+ div.table {
+ margin-bottom: .5em;
+ margin-top: .5em;
+ }
+
+/* headlines: */
+ h1, h2, h3, h4, h5, h6 {
+ font-family: @ini_headline_fonts;
+ color: @ini_headlines;
+ margin: 1em 0 1em 0;
+ line-height: 1.1em;
+ }
+ h1 { font-size: 2em; }
+ h2 { font-size: 1.5em; }
+ h3 { font-size: 1.125em; }
+ h4 { font-size: 1em; }
+ h5 { font-size: .875em; }
+ h6 { font-size: .75em; }
+ h1 *, h2 *, h3 *, h4 *, h5 *, h6 * {
+ font-family: inherit;
+ font-size: inherit;
+ color: inherit;
+ margin: inherit;
+ line-height: inherit;
+ }
+ /* Definition Terms are like Headlines in many ways */
+ dl dt {
+ font-family: @ini_headline_fonts;
+ color: @ini_headlines;
+ }
+ dl.compact dl { /* except in compact mode */
+ font-weight: 600;
+ font-family: inherit;
+ color: inherit;
+ }
+
+ /* make strike-through and underline more useful! */
+ u {
+ -webkit-text-decoration-color: #F30;
+ -webkit-text-decoration-line: underline;
+ -webkit-text-decoration-style: wavy;
+ -webkit-text-decoration-thickness: .7pt;
+ text-decoration: underline #F30 wavy .7pt;
+ }
+ s, del {
+ -webkit-text-decoration-color: rgba(255,0,0,.5);
+ -webkit-text-decoration-line: line-through;
+ -webkit-text-decoration-style: solid;
+ -webkit-text-decoration-thickness: .1em;
+ text-decoration: line-through rgba(255,0,0,.5) solid .1em;
+ }
+
+ /* lists: */
+ ul, ol {
+ margin: 0 2em 1em 1em;
+ padding-left: 1.75em;
+ }
+ ul { list-style: square outside; }
+ ul ul { list-style-type: disc; }
+ ul ul ul { list-style-type: none; }
+ ul ul ul li {margin-left: 1em; }
+ ul ul ul li:before { display: block; content: '\2043'; text-align:center; float: left; width: 1em; margin-left: -1em; }
+ ul ul ul ul li:before { content: '\FE63' }
+ ul ul ul ul ul li:before { content: '\00B7' }
+
+ /* numbered lists vary by nestling: */
+ ol { list-style: decimal outside; }
+ ol ol { list-style-type: lower-alpha; }
+ ol ol ol { list-style-type: lower-roman; }
+ ol ol ol ol { list-style-type: lower-greek; }
+ ol ol ol ol ol { list-style-type: decimal-leading-zero; font-size: .96em;}
+ ol ol ol ol ol ol { list-style-type: upper-alpha; font-size: .96em;}
+ ul ul ul ol li { margin-left: 0; }
+ ul ul ul ol li:before { display: none; content: ''; }
+
+ li::marker {
+ color: #666;
+ }
+
+ ul ul, ul ol,
+ ol ul, ol ol {
+ margin-bottom: 0;
+ padding-left: .25em;
+ }
+
+ /* horizontal rules */
+ hr {
+ border: #666 solid 0;
+ border-top-width: 1pt;
+ height: 0;
+ margin: 3pt 0;
+ }
+
+ tt, blockquote tt,
+ pre, pre *,
+ code, code *,
+ blockquote code {
+ font-family: @ini_mono_fonts;
+ }
+ code, blockquote code {
+ border: @ini_border solid 1px;
+ border-radius: 3pt;
+ padding: 0 2pt;
+ }
+ pre {
+ overflow-x: auto;
+ white-space: pre-wrap;
+ word-wrap: normal;
+ border: 1px solid @ini_border;
+ border-radius: 2px;
+ box-shadow: inset 0 0 .5em @ini_border;
+ padding: .3em;
+ }
+
+ /* overwrite pre styling for CodeMirror plugin: */
+ .CodeMirror pre {
+ max-width: 100%;
+ }
+ /* quotes: */
+ blockquote {
+ border: @ini_blockquote solid 0;
+ border-width: 0 0 0 .4em;
+ border-radius: .5em;
+ padding: .25em 0 .25em .75em;
+ margin: 0 2em 1em 1em;
+ font-family: @ini_alt_fonts;
+ font-size: @ini_alt_font_size;
+ hanging-punctuation: first allow-end;
+ }
+ blockquote * {
+ font-family: @ini_alt_fonts;
+ }
+
+ svg {
+ display: block;
+ fill-rule: evenodd;
+ clip-rule: evenodd;
+ stroke-linejoin: round;
+ stroke-miterlimit: 1.5;
+ }
+ svg.math {
+ margin-left: 15px
+ }
+
+ /* tables */
+ div.table {
+ overflow-x: auto;
+ }
+ table {
+ & {
+ border-collapse: collapse;
+ empty-cells: show;
+ border-spacing: 0;
+ font-size: smaller;
+ border: 1px solid @ini_border;
+ margin-bottom: 1em;
+ }
+ th, td {
+ padding: .5em .3em;
+ vertical-align: top;
+ border: 1px solid @ini_border;
+ line-height: 1.25em;
+ }
+ th.centeralign, td.centeralign {
+ text-align: center;
+ }
+ th.rightalign, td.rightalign {
+ text-align: right;
+ }
+ th {
+ font-weight: bold;
+ background-color: @ini_background_alt;
+ text-align: left;
+ }
+ &.inline {
+ min-width: 50%;
+ margin-bottom: 0;
+ }
+ &.inline tr:hover td {
+ background-color: @ini_background_alt;
+ }
+ &.inline tr:hover th {
+ background-color: @ini_border;
+ }
+ }
+
+ /* asides */
+ aside {
+ & > * {
+ margin: .25em 0;
+ }
+ &.float-left, &.float-right {
+ width: 50%;
+ max-width: 220px;
+ min-width: 150px;
+ font-size: smaller;
+ line-height: 1.5em;
+ }
+ &.float-left {
+ clear: left;
+ float: left;
+ margin-right: .5em;
+ }
+ &.float-right {
+ clear: right;
+ float: right;
+ margin-left: .5em;
+ }
+ & footer {
+ line-height: 1.1em;
+ }
+ }
+
+ /* images */
+ img {
+ max-width: 100%;
+ height: auto;
+ }
+
+ /* abbbreviations a reslightly widened and made smaller */
+ abbr {
+ letter-spacing: .01em;
+ font-size: 97%;
+ }
+
+ /* extra styles for ad-hoc tags: */
+ kbd {
+ padding: .15em .25em;
+ margin: 0 .1em;
+ font-size: 85%;
+ color: @ini_headlines;
+ border: @ini_border solid 1px;
+ border-radius: .25em;
+ display: inline-block;
+ white-space: nowrap;
+ line-height: 1.2em;
+ letter-spacing: .03em;
+ }
+ kbd kbd {
+ background-color: @ini_background_alt;
+ -webkit-box-shadow: 0 .1em 0 rgba(0,0,0,0.25);
+ box-shadow: 0 .1em 0 rgba(0,0,0,0.25);
+ font-weight: bold;
+ }
+ samp {
+ background-color: @ini_background_alt;
+ font-family: @ini_mono_fonts;
+ white-space: nowrap;
+ }
+ mark {
+ background-color: @ini_highlight;
+ }
+
+ /* box / notification classes */
+ .box, .wrap_box,
+ .outline, .wrap_outline {
+ padding: 1pt .5em;
+ margin: .5em 0;
+ }
+ .box, .wrap_box {
+ background-color: @ini_background_alt;
+ }
+ .rounded, .wrap_rounded {
+ border-radius: .5em;
+ }
+
+ /* hyphenation only in the main-content */
+ p, li {
+ word-wrap: break-word;
+ overflow-wrap: break-word;
+ hyphens: auto;
+ -ms-hyphens: auto;
+ -moz-hyphens: auto;
+ -webkit-hyphens: auto;
+ hyphenate-limit-chars: 6 2 3;
+ }
+
+ /* footnotes section */
+ div.footnotes {
+ border-top: transparent 0 none;
+ margin-top: 1.5em;
+ font-size: smaller;
+ }
+ div.footnotes:before {
+ content: ' ';
+ display: block;
+ width: 33%;
+ min-width: 5em;
+ border-top: @ini_border solid 1.5pt;
+ height: .5em;
+ }
+ div.footnotes div.fn {
+ margin-left: 1em;
+ }
+}
+
+/* footnotes and similar poups: */
+.JSpopup {
+ background-color: @ini_background;
+ color: @ini_text;
+ border: @ini_border solid 1px;
+ padding: .25em;
+ box-shadow: 2px 2px 4px rgba(0, 0, 0, .5);
+}
+
+
+/* on the homepage only, reduce the H1 top margin: */
+body.home h1:first-child { margin-top: .5em; }
+
+
+[dir=rtl] {
+ main {
+ blockquote {
+ border-width: 0 .4em 0 0;
+ padding: .25em .75em .25em 0;
+ margin: 0 1em 1em 2em;
+ }
+
+ ul, ol {
+ margin-left: 0;
+ margin-right: .5em;
+ padding-left: 0;
+ padding-right: .25em;
+ }
+ ul li, ol li {
+ width: 100%;
+ }
+
+ ul ul ul li:before {
+ float: right;
+ margin-left: 0;
+ margin-right: -1em;
+ }
+
+ }
+}
+
+/* tablet break point: */
+@media (max-width: @ini_tablet_width) {
+
+ /* tighter hyphenation for narrower screens */
+ #main-content p, #main-content li {
+ hyphenate-limit-chars: 5 2 2;
+ }
+}
+
+/* phone break point: */
+@media (max-width: @ini_phone_width) {
+
+ .nophone, .wrap_nophone {
+ display: none !important;
+ }
+
+ main aside {
+ width: 100%;
+ max-width: initial;
+ float: none;
+ margin-left: 0;
+ }
+}
+
+/* dark mode overrides */
+@media (prefers-color-scheme: dark) {
+
+ body.darkmode {
+ main {
+ h1, h2, h3, h4, h5, h6, dt { color: @ini_headlines_dark; }
+ table {
+ & { border-color: @ini_border_dark; }
+ &.inline tr:hover td,
+ &.inline tr:hover th { background-color: @ini_border_dark; }
+ th { background-color: rgba(255,255,255,0.05); }
+ }
+ #acl_manager table tr:hover { background-color: rgba(255,255,255,0.1); }
+ code,
+ blockquote { border-color: @ini_blockquote_dark }
+ blockquote code { border-color: @ini_border_dark; }
+ kbd {color: @ini_headlines_dark;border-color: @ini_border_dark;}
+ kbd kbd {background-color: @ini_background_alt_dark;}
+ samp {background-color: @ini_background_alt_dark;}
+ pre {border-color: @ini_border_dark; box-shadow: inset 0 0 .5em @ini_background_site_dark;}
+ dl dt { color: @ini_headlines_dark; }
+
+ /* overrides for PRE blocks: */
+ pre.code {
+ .me1 {color: #3C3;}
+ .kw2 {color: #0C7;}
+ .kw3 {color: #0CF;}
+ }
+
+ div.error {background-color: #4B2F36; color: #FFB3D2; border-color: #743E4C;}
+ div.success {background-color: #28381F; color: #FBE2A1; border-color: #37562E;}
+ div.notify {background-color: #42381F; color: #FCE2A1; border-color: #56562E;}
+
+ /* colour overrides for Wrap Plugin */
+ .wrap_hi {background-color: @ini_highlight; color: #000;}
+ .wrap_box, .box {background-color: @ini_background_alt_dark; color: inherit;}
+ .wrap_outline, .outline {border-color: @ini_border_dark; color: inherit}
+ .red, .wrap_red { color: #E53935; }
+ .green, .wrap_green { color: #00E676; }
+ .wrap_tip {background-color: #47391B;}
+ .wrap_important {background-color: #603000;}
+ .wrap_alert, .wrap_danger {background-color: #4C0909;}
+ .wrap_help, .wrap_info {background-color: #112847;}
+ .wrap_download, .wrap_safety {background-color: #1C3802;}
+ .wrap_todo, .wrap_notice {background-color: #004A7F;}
+ .wrap_caution {background-color: #fcffaa;}
+ .wrap_warning {background-color: #FFC9AA;}
+
+ /* MathML fixes */
+ merror { background-color: @ini_highlight; color: red; }
+
+ }
+
+ /* footnote and similar poups: */
+ .JSpopup {
+ background-color: @ini_background_site_dark;
+ color: @ini_text_dark;
+ border-color: @ini_border_dark;
+ box-shadow: 2px 2px 4px #000;
+ }
+ }
+}
+
diff --git a/templates/55/ad-hominem/css/design.less b/templates/55/ad-hominem/css/design.less
new file mode 100644
index 0000000..be7a190
--- /dev/null
+++ b/templates/55/ad-hominem/css/design.less
@@ -0,0 +1,374 @@
+/**
+ * This file provides the main design styles for the
+ * bits that surround the content.
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Clarence Lee <clarencedglee@gmail.com>
+ */
+
+.dokuwiki.export {
+ background-color: @ini_background;
+}
+
+/* header
+********************************************************************/
+
+#dokuwiki__header {
+ padding: 2em 0 1.5em;
+
+ .headings,
+ .tools {
+ margin-bottom: 1.5em;
+ width: 49%;
+ }
+ .tools {
+ margin-top: .2em;
+ }
+
+ .logo {
+ margin: 0;
+ font-size: 1.5em;
+ font-weight: normal;
+ line-height: 1.2;
+
+ img {
+ float: left;
+ margin-right: .5em;
+ }
+
+ span {
+ display: block;
+ padding-top: 10px;
+ }
+
+ a {
+ text-decoration: none;
+ color: @ini_text;
+ background-color: inherit;
+ }
+ }
+
+ p.claim {
+ margin-bottom: 0;
+ font-size: 0.875em;
+ }
+
+ /* make all links in header (including breadcrumb and interwiki) same colour as the rest */
+ a {
+ color: @ini_link;
+ background-color: inherit;
+ }
+}
+
+[dir=rtl] #dokuwiki__header .logo img {
+ float: right;
+ margin-left: .5em;
+ margin-right: 0;
+}
+
+/* tools
+********************************************************************/
+
+/* highlight selected tool */
+.mode_admin .action.admin a,
+.mode_login .action.login a,
+.mode_register .action.register a,
+.mode_profile .action.profile a,
+.mode_recent .action.recent a,
+.mode_index .action.index a,
+.mode_media .action.media a,
+.mode_revisions .action.revs a,
+.mode_backlink .action.backlink a,
+.mode_subscribe .action.subscribe a {
+ font-weight: bold;
+}
+
+#dokuwiki__header .tools {
+ ul {
+ padding-left: 0;
+ margin-bottom: 0;
+ }
+
+ li {
+ font-size: 0.875em;
+ margin-left: 1em;
+ list-style: none;
+ display: inline;
+ }
+
+ form.search div.ajax_qsearch li {
+ font-size: 1em;
+ margin-left: 0;
+ display: block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+}
+
+[dir=rtl] #dokuwiki__header .tools li {
+ margin-right: 1em;
+ margin-left: 0;
+}
+
+#dokuwiki__header .mobileTools {
+ display: none; /* hide mobile tools dropdown to only show in mobile view */
+}
+
+/*____________ site tools ____________*/
+
+#dokuwiki__sitetools {
+ & {
+ text-align: right;
+ }
+ form.search {
+ font-size: 0.875em;
+ }
+}
+
+[dir=rtl] #dokuwiki__sitetools {
+ text-align: left;
+}
+
+form.search {
+ display: block;
+ position: relative;
+ margin-bottom: 0.5em;
+
+ input {
+ /* width: 18em; */
+ padding: .35em 22px .35em .1em;
+ }
+
+ button {
+ background: transparent url(images/search.png) no-repeat 0 0;
+ background-size: 16px;
+ border-width: 0;
+ width: 16px;
+ height: 16px;
+ text-indent: -99999px;
+ margin-left: -28px;
+ box-shadow: none;
+ padding: 0;
+ }
+}
+
+[dir=rtl] form.search {
+ input {
+ padding: .35em .1em .35em 22px;
+ }
+
+ button {
+ background-position: 5px 0;
+ margin-left: 0;
+ margin-right: -20px;
+ position: relative;
+ }
+}
+
+/*____________ breadcrumbs ____________*/
+
+.dokuwiki div.breadcrumbs {
+ border-top: 1px solid @ini_border;
+ border-bottom: 1px solid @ini_background;
+ margin-bottom: .5em;
+ font-size: 0.875em;
+ clear: both;
+
+ div {
+ padding: .1em .35em;
+ }
+
+ div:only-child {
+ border-top: 1px solid @ini_background;
+ border-bottom: 1px solid @ini_border;
+ }
+
+ div:first-child {
+ border-top: 1px solid @ini_background;
+ }
+
+ div:last-child {
+ border-bottom: 1px solid @ini_border;
+ }
+
+ .bcsep {
+ font-size: 0.75em;
+ }
+}
+
+/* sidebar
+********************************************************************/
+
+.dokuwiki .aside {
+ font-size: 0.875em;
+ overflow: hidden;
+ word-wrap: break-word;
+
+ /* make sidebar more condensed */
+
+ h1 {
+ font-size: 1.714em;
+ margin-bottom: .292em;
+ }
+
+ h2 {
+ margin-bottom: .333em;
+ }
+
+ h3 {
+ margin-bottom: .444em;
+ }
+
+ h4 {
+ margin-bottom: .5em;
+ }
+
+ h5 {
+ margin-bottom: .5714em;
+ }
+
+ p,
+ ul,
+ ol,
+ dl,
+ pre,
+ table,
+ fieldset,
+ hr,
+ blockquote,
+ address {
+ margin-bottom: .7em;
+ }
+
+ ul,
+ ol {
+ padding-left: .5em;
+ }
+
+ li ul,
+ li ol {
+ margin-bottom: 0;
+ padding: 0;
+ }
+
+ a:link,
+ a:visited {
+ color: @ini_link;
+ background-color: inherit;
+ }
+}
+
+[dir=rtl] .dokuwiki .aside ul,
+[dir=rtl] .dokuwiki .aside ol {
+ padding-right: .5em;
+}
+
+/* content
+********************************************************************/
+
+.dokuwiki .pageId {
+ float: right;
+ margin-right: -1em;
+ margin-bottom: -1px;
+ margin-top: -1.5em;
+ overflow: hidden;
+ padding: 0.5em 1em 0;
+
+ span {
+ font-size: 0.875em;
+ border: solid @ini_background_alt;
+ border-width: 1px 1px 0;
+ background-color: @ini_background;
+ color: @ini_text_alt;
+ padding: .1em .35em;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 2px;
+ box-shadow: 0 0 .5em @ini_text_alt;
+ display: block;
+ }
+}
+
+.dokuwiki div.page {
+ clear: both;
+ background: @ini_background;
+ color: inherit;
+ border: 1px solid @ini_background_alt;
+ box-shadow: 0 0 .5em @ini_text_alt;
+ border-radius: 2px;
+ padding: 1.556em 2em 2em;
+ margin-bottom: .5em;
+ overflow: hidden;
+ word-wrap: break-word;
+}
+
+.dokuwiki .docInfo {
+ font-size: 0.875em;
+ text-align: right;
+ overflow-wrap: break-word;
+}
+
+/* license note under edit window */
+.dokuwiki div.license {
+ font-size: small;
+ line-height: 1.5em;
+ padding: 3pt;
+ background-color: @ini_background_alt;
+ border: @ini_border solid 1px;
+}
+
+[dir=rtl] .dokuwiki .docInfo {
+ text-align: left;
+}
+
+[dir=rtl] .dokuwiki .pageId {
+ float: left;
+ margin-left: -1em;
+ margin-right: 0;
+}
+
+/* footer
+********************************************************************/
+
+.dokuwiki .wrapper {
+ margin-bottom: 1.4em;
+}
+
+#dokuwiki__footer {
+ margin-bottom: 1em;
+ text-align: center;
+
+ > .pad {
+ font-size: 0.875em;
+ }
+
+ div.license {
+ margin-bottom: 0.5em;
+ font-size: 100%;
+ }
+
+ div.buttons a {
+ img {
+ opacity: 0.5;
+ }
+
+ &:hover img,
+ &:active img,
+ &:focus img {
+ opacity: 1;
+ }
+ }
+
+}
+
+[dir=rtl] #dokuwiki__footer .license img {
+ margin: 0 0 0 .5em;
+}
+
+/* dark mode overrides */
+@media (prefers-color-scheme: dark) {
+ body.darkmode div.license {
+ background-color: @ini_background_alt_dark;
+ border-color: @ini_border_dark;
+ }
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/layout.less b/templates/55/ad-hominem/css/layout.less
new file mode 100644
index 0000000..f034095
--- /dev/null
+++ b/templates/55/ad-hominem/css/layout.less
@@ -0,0 +1,1308 @@
+/**
+ * This contains the most basic layouts and styles
+ * @author Sascha Leib <sascha@leib.be>
+ */
+
+html, body, * {
+ font-family: @ini_default_fonts;
+ margin: 0;
+ padding: 0;
+ scrollbar-gutter: auto;
+ scrollbar-width: thin;
+ scrollbar-color: @ini_blockquote @ini_background_site;
+}
+html {
+ scroll-behavior: smooth;
+}
+body {
+ background-color: @ini_background_site;
+ font-size: @ini_default_font_size;
+}
+
+/* scrollbar styles */
+::-webkit-scrollbar {
+ width: .5rem;
+}
+::-webkit-scrollbar-track {
+ background: @ini_background_site;
+}
+::-webkit-scrollbar-thumb {
+ border-radius: .25rem;
+ background: @ini_blockquote;
+}
+::-webkit-scrollbar-thumb:hover {
+ background: @ini_separator;
+}
+
+#skip-link {
+ & {
+ position: fixed;
+ left: 4pt;
+ top: 4pt;
+ width: auto;
+ z-index: 9999;
+ }
+ a {
+ position: absolute;
+ background-color: @ini_background;
+ font-size: 1.25em;
+ color: @ini_link;
+ height: 1px;
+ overflow: hidden;
+ clip: rect(1px, 1px, 1px, 1px);
+ }
+ a:focus {
+ position: static;
+ display: inline-block;
+ padding: 8px;
+ height: auto;
+ clip: auto;
+ overflow: visible;
+ outline: 2px solid @ini_focus_color;
+ }
+ &:focus {
+ display: block;
+ }
+}
+
+.sronly {
+ position: absolute;
+ width: 0;
+ height: 0;
+ overflow: hidden;
+ display: block;
+}
+.printonly,
+.print-only,
+.wrap_print-only {
+ display: none;
+}
+div.no {
+ display: inline;
+ margin: 0;
+ padding: 0;
+}
+
+#globalTools {
+ & {
+ grid-column: 2 / span 2;
+ grid-row: 1;
+ text-align: right;
+ font-size: 10pt;
+ }
+ a:link {
+ text-decoration: none;
+ }
+}
+#gSiteTools {
+ & {
+ justify-self: start;
+ }
+ & select {
+ display: none;
+ }
+}
+#gUserTools {
+ & {
+ justify-self: end;
+ padding-right: .5rem;
+ }
+ ul {
+ list-style: none inside;
+ display: block;
+ }
+ ul li {
+ display: inline;
+ }
+ ul li::before {
+ content: '\00B7';
+ display: inline-block;
+ width: .35em;
+ padding-right: .35em;
+ }
+ ul li:first-child::before {
+ content: '';
+ }
+}
+
+#header-layout,
+#footer-layout {
+ width: 100%;
+}
+
+#header-layout > header {
+ width: 100%;
+ max-width: @ini_site_width;
+ margin: 0 auto;
+ padding-top: .25rem;
+ display: grid;
+ grid-template-columns: @ini_sidebar_width auto @ini_sidebar_width;
+ grid-template-rows: auto auto auto;
+ justify-items: stretch;
+}
+
+#siteLogo {
+ & {
+ grid-column: 1;
+ grid-row: 1 / span 3;
+ column-gap: 8px;
+ padding: 0 .25em 0 .5em;
+ display: grid;
+ grid-template-columns: 64px auto;
+ grid-template-rows: auto auto;
+ }
+ .logo {
+ margin-top: 3pt;
+ grid-column: 1;
+ grid-row: 1 / span 2;
+ }
+ .logo img {
+ width: 64px;
+ height: auto;
+ }
+ .title,
+ .claim {
+ grid-column: 2;
+ grid-row: 2;
+ align-self: start;
+ font-size: 10pt;
+ padding-right: .5em;
+ max-width: e("calc(") @ini_sidebar_width e(" - 80px)")
+ }
+ .title {
+ grid-row: 1;
+ align-self: center;
+ font-size: 14pt;
+ line-height: 1em;
+ margin: 0;
+ }
+ .title * {
+ /* font-family: @ini_headline_fonts;
+ font-size: 13pt; */
+ }
+}
+
+#phSearch {
+ & {
+ grid-column: 2;
+ grid-row: 2;
+ padding: .5em 0;
+ }
+ form {
+
+ & > div.search-field {
+ width: 100%;
+ display: grid;
+ grid-template-columns: auto 20pt 20pt;
+ place-items: stretch;
+ border: @ini_border solid 1pt;
+ background: @ini_background;
+ border-radius: 4pt;
+ -moz-box-shadow: inset 0 0 3pt @ini_border;
+ -webkit-box-shadow: inset 0 0 3pt @ini_border;
+ box-shadow: inset 0 0 3pt @ini_border;
+ outline: transparent solid 2pt;
+ }
+
+ & .search-popup {
+ position: absolute;
+ width: 100%;
+ height: 5pt;
+ margin-right: 21pt;
+ }
+
+ > div {
+ &.search-field.focus {
+ outline-color: @ini_focus_color;
+ }
+ input {
+ grid-column: 1;
+ grid-row: 1;
+ z-index: 23;
+ font-size: large;
+ padding: 2pt 0 2pt 4pt;
+ border: transparent none 0;
+ border-radius: 3pt;
+ background-color: transparent;
+ }
+ input:focus {
+ outline: transparent none 0;
+ }
+ button {
+ color: @ini_text;
+ border: transparent solid 1pt;
+ background: transparent none no-repeat center;
+ background-size: 13pt;
+ width: 2em;
+ height: 2em;
+ border-radius: 3pt;
+ overflow: hidden;
+ margin: 1pt 1pt 1pt 0;
+ height: auto;
+ outline: transparent solid 2pt;
+ }
+ button[type=reset] {
+ background-image: url('images/delete.svg');
+ border-right: @ini_border solid 1pt;
+ }
+ button[type=submit] {
+ background-image: url('images/search.svg');
+ }
+ button:hover {
+ background-color: @ini_background_neu;
+ border-color: @ini_border;
+ }
+ button:focus {
+ background-color: @ini_background_neu;
+ }
+ }
+
+ }
+}
+#qsearch__out {
+ & {
+ z-index: 20;
+ position: relative;
+ left: 0;
+ width: auto;
+ padding: 0;
+ white-space: nowrap;
+ font-size: 1rem;
+ background-color: @ini_background_site;
+ -moz-box-shadow: 2px 2px 2px 0 rgba(0,0,0,.5);
+ -webkit-box-shadow: 2px 2px 2px 0 rgba(0,0,0,.5);
+ box-shadow: 2px 2px 2px 0 rgba(0,0,0,.5);
+ }
+ strong {
+ display: none;
+ padding: 2pt;
+ font-weight: normal;
+ }
+ ul {
+ border: @ini_border solid 1px;
+ border-top-width: 0;
+ max-height: 11em;
+ }
+ li {
+ border-top: @ini_border solid 1px;
+ }
+ a {
+ display: block;
+ padding: 2pt 0 2pt 4pt;
+ border: transparent solid 2px;
+ overflow: hidden;
+ text-overflow: '\2025';
+ }
+ a:focus {
+ border-color: @ini_focus_color;
+ }
+}
+
+#phTools{ }
+#phInclude {
+ grid-column: 2 / span 2;
+ grid-row: 3;
+ margin-right: 2pt;
+}
+
+#main-layout {
+ width: 100%;
+ max-width: @ini_site_width;
+ margin: 0 auto;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+ align-items: stretch;
+ align-content: flex-start;
+}
+
+#sidebar {
+ & {
+ width: @ini_sidebar_width;
+ max-width: @ini_sidebar_width;
+ flex-grow: 0;
+ }
+ &.toggle.hide,
+ &.toggle.alt {
+ max-width: 1em;
+ }
+ p, ul, ol {
+ padding-left: 1.25em;
+ }
+ ul {
+ list-style: square outside;
+ }
+ ul ~ ul, ul ~ ol,
+ ol ~ ul, ol ~ ol {
+ margin-top: .5em;
+ }
+ ul li, ol li {
+ color: @ini_text_alt;
+ padding: .1em 0;
+ }
+ dl dt {
+ font-weight: bold;
+ }
+ a:link, a:visited {
+ color: @ini_link;
+ }
+ .home a::before {
+ content: ' ';
+ display: inline-block;
+ width: 10pt;
+ height: 1em;
+ background: transparent url('images/home.svg') no-repeat no-repeat 0 4px;
+ background-size: .8em;
+ padding-right: 3pt;
+ }
+ .curid {
+ font-weight: bold;
+ }
+ h3, h4 {
+ font-size: 1.1rem;
+ margin: 0.25em 2pt;
+ }
+ & > button.tg_button {
+ float: right;
+ display: block;
+ background-color: transparent;
+ border: transparent none 0;
+ margin-right: 2px;
+ font-size: 1.5rem;
+ }
+ & > button:focus {
+ outline: @ini_focus_color solid 2px;
+ }
+ & > button.tg_button span {
+ display: none;
+ }
+ &.hide > button.tg_button,
+ &.alt > button.tg_button {
+ margin-left: 0;
+ width: 11pt;
+ }
+ & > button.tg_button::after {
+ content: '\2039';
+ color: @ini_link;
+ display: inline-block;
+ width: .75em;
+ height: 1.25em;
+ text-align: center;
+ }
+ &.hide>button.tg_button span,
+ &.alt>button.tg_button span {
+ display: none;
+ }
+ &.hide>button.tg_button::after,
+ &.alt>button.tg_button::after {
+ content: '\203A';
+ width: auto;
+ }
+
+ .tg_content {
+ line-height: 1.5em;
+ font-size: 11.5pt;
+ }
+
+ hr {
+ border: 0;
+ height: 1pt;
+ background: @ini_text_alt;
+ background-image: linear-gradient(to right, @ini_background_alt, @ini_text_alt, @ini_background_alt);
+ margin: .5em 1em .5em 0;
+ }
+}
+
+#sbNavigation {
+ margin: 1em .25em 0 1em;
+}
+#navBreadCrumbs {
+ margin-left: .5em;
+}
+#navBreadCrumbs ol {
+ list-style: decimal outside;
+ padding-left: 2em;
+}
+
+
+#navYouAreHere {
+ & {
+ display: flex;
+ flex-flow: row nowrap;
+ position: relative;
+ top: 0;
+ left: 0;
+ height: 16pt;
+ overflow: hidden;
+ white-space: nowrap;
+ }
+ h4 {
+ display: none /*inline-block */;
+ font-family: @ini_default_fonts;
+ font-weight: normal;
+ font-size: small;
+ line-height: 1.5em;
+ margin: 0 .5em 0 0;
+ }
+ ol {
+ & {
+ list-style: none inside;
+ display: flex;
+ line-height: 1.5em;
+ height: 100pt;
+ padding-left: 0;
+ margin: 0 2pt 0 0;
+ font-size: small;
+ overflow: scroll hidden;
+ }
+ li {
+ & {
+ color: @ini_headlines;
+ display: inline;
+ margin-bottom: 0;
+ max-width: 20em;
+ min-width: 2.2em;
+ overflow: hidden;
+ text-overflow: '\202F...';
+ }
+
+ &:last-child { flex-shrink: 1; }
+ &:nth-last-child(2) { flex-shrink: 2; }
+ &:nth-last-child(3) { flex-shrink: 3; }
+ &:nth-last-child(4) { flex-shrink: 4; }
+ &:nth-last-child(5) { flex-shrink: 5; }
+ &:nth-last-child(6) { flex-shrink: 6; }
+
+ &.home {
+ min-width: 14px;
+ flex-shrink: 0 !important;
+ }
+
+ &::before {
+ content: '\25B8';
+ padding: 0 2pt;
+ color: @ini_text_alt;
+ }
+ &.home::before {
+ content: '';
+ padding: 0;
+ }
+ &.home a {
+ display: inline-block;
+ width: 14px;
+ overflow: hidden;
+ }
+ &.home a::before {
+ content: ' ';
+ display: inline-block;
+ width: 14px;
+ height: 1em;
+ background: transparent url('images/home.svg') no-repeat left bottom;
+ filter: hue-rotate(-80deg);
+ }
+ }
+ }
+}
+
+/* fix for issue with homepage */
+body.home #navYouAreHere ol li:last-child {
+ display: none;
+}
+
+/* Table of Contents */
+#toc {
+ & {
+ clear: both;
+ float: right;
+ width: auto;
+ min-width: 32px;
+ padding-left: .25em;
+ line-height: 1.5em;
+ text-align: left;
+ max-width: @ini_toc_width;
+ background-color: transparent;
+ border: transparent none 0;
+ border-left: @ini_border solid 1pt;
+ }
+ ol {
+ list-style: none inside;
+ padding: 0 0 0 1em;
+ margin: 0;
+ }
+ ol li {
+ font-size: small;
+ line-height: 1.25em;
+ margin: .5em 0;
+ }
+ a[href^='#']:link,
+ a[href^='#']:visited {
+ color: @ini_inpage;
+ }
+}
+
+#toc-menubutton {
+ background: transparent;
+ margin-left: .5em;
+ padding: 0 .25em;
+ width: auto;
+ height: auto;
+ overflow: hidden;
+ border: transparent 0 none;
+ border-radius: 3pt;
+}
+#toc-menubutton > span {
+ font-family: @ini_headline_fonts;
+ line-height: 1.5em;
+ font-weight: bold;
+ color: @ini_headlines;
+}
+#toc-menubutton::after {
+ content: '\203A';
+ display: inline-block;
+ width: 1.5em;
+ text-align: center;
+}
+
+.hide #toc-menubutton::after,
+.alt #toc-menubutton::after {
+ content: '\2630';
+}
+
+.hide #toc-menubutton>span,
+.alt #toc-menubutton>span {
+ display: none;
+}
+
+main {
+ & {
+ width: e("calc(90% - 5px)");
+ flex-grow: 100;
+ background-color: @ini_background;
+ color: @ini_text;
+ line-height: 1.5em;
+ padding: 1.5em 5% .75em 5%;
+ border: @ini_border solid 1px;
+ border-radius: 5px;
+ }
+
+ /* edit buttons */
+ .secedit {
+ float: right;
+ margin-top: -22pt;
+ line-height: 0;
+ }
+ .secedit button {
+ border: @ini_border solid 1pt;
+ background-color: transparent;
+ color: transparent;
+ width: 20pt;
+ height: 20pt;
+ border-radius: 50%;
+ font-size: 0;
+ cursor: pointer;
+ }
+ .secedit button::before {
+ content: ' ';
+ display: inline-block;
+ width: 13pt;
+ height: 13pt;
+ padding: 2pt;
+ background: transparent url('images/edit.svg') no-repeat center;
+ background-size: 10pt;
+ }
+ .secedit button:hover {
+ background-color: @ini_highlight;
+ border: @ini_text_alt solid 1pt;
+ }
+ .secedit button:focus {
+ background-color: @ini_highlight;
+ border: @ini_focus_color solid 2px;
+ outline: transparent none 0;
+ }
+ .secedit button:hover::before {
+ }
+
+ .section_highlight {
+ border-radius: .5em;
+ outline: orange dashed 3px;
+ }
+
+ /* Definition List styles: */
+ dt { font-weight: 600; }
+ dd { margin-left: 1.25em; margin-bottom: .5em; }
+ dl.compact {
+ display: grid;
+ grid-template-columns: minmax(8em,min-content) auto;
+ }
+ dl.compact dt { grid-column-start: 1; }
+ dl.compact dd { grid-column-start: 2; margin-bottom: 0; }
+
+ /* math fonts */
+ math, .math, .math *,
+ .wrap_math, .wrap_math * {
+ font-family: @ini_math_fonts;
+ font-size: 12pt;
+ line-height: 1em;
+ }
+
+/* figure block */
+ figure {
+ & {
+ padding: .5em;
+ overflow: hidden;
+ }
+ figcaption {
+ clear: left;
+ margin-top: .5em;
+ font-size: smaller;
+ line-height: 1.4em;
+ }
+ figcaption p {
+ margin-bottom: 0;
+ }
+ figcaption.centered {
+ text-align: center;
+ }
+ & > *:first-child {
+ margin-top: .25em;
+ }
+ table {
+ background-color: @ini_background;
+ margin: 0;
+ }
+ div.table {
+ margin: 0;
+ }
+ & > p {
+ margin: 0;
+ }
+ }
+
+ & > footer {
+ margin-top: 1em;
+ padding-top: 1em;
+ text-align: right;
+ }
+ & > footer p.docInfo {
+ display: inline-block;
+ border-top: @ini_separator solid 1px;
+ padding-top: .5em;
+ padding-left: 5%;
+ font-size: small;
+ color: @ini_text_alt;
+ }
+}
+
+body.mediadetail {
+ figure {
+ img {
+ background: transparent url('images/transparency.gif');
+ }
+ table {
+ &.img_detail,
+ &.img_detail th,
+ &.img_detail td {
+ border: none;
+ }
+ &.img_detail th {
+ text-align: right;
+ white-space: nowrap;
+ border: none;
+ }
+ }
+ }
+}
+
+#footer-layout {
+ & {
+ padding-top: 1.5em;
+ }
+ & > footer {
+ & {
+ width: 100%;
+ max-width: @ini_site_width;
+ margin: 0 auto;
+ display: grid;
+ grid-template-columns: @ini_sidebar_width 1fr 1fr 1fr;
+ grid-template-rows: auto auto;
+ grid-gap: 6pt;
+ align-items: stretch;
+ }
+ .ftSection {
+ padding-left: 1em;
+ }
+ .ftSection ul {
+ list-style: none inside;
+ padding-left: .5em;
+ }
+ .ftSection ul li {
+ margin-bottom: .5em;
+ font-size: small;
+ }
+ .ftSection ul li a {
+ white-space: nowrap;
+ }
+ h4 {
+ color: @ini_headlines;
+ margin: 0 0 1em 0;
+ font-family: @ini_headline_fonts;
+ font-size: 1rem;
+ }
+
+ #ftPlaceholder>* {
+ display: none;
+ }
+ }
+}
+
+#ftLicenseButtons {
+ & {
+ grid-row: 2;
+ grid-column: 2 / span 3;
+ text-align: center;
+ font-size: small;
+ padding-top: 1em;
+ }
+ hr {
+ border: 0;
+ height: 1pt;
+ background: #333;
+ background-image: linear-gradient(to right, @ini_background_alt, @ini_text_alt, @ini_background_alt);
+ }
+ p.license {
+ margin: .5em 0 1em 0;
+ font-size: small;
+ color: @ini_text_alt;
+ }
+ p.license bdi {
+ display: block;
+ width: 100%;
+ }
+}
+
+/* togglers */
+.toggle .tg_button.active {
+ color: @ini_link;
+ cursor: pointer;
+}
+.toggle .tg_content,
+.toggle.auto .tg_content,
+.toggle.show .tg_content {
+ display: initial;
+}
+.toggle.hide .tg_content,
+.toggle.alt .tg_content {
+ display: none;
+}
+
+/* config overrides */
+#config__manager {
+ #dw__configform {
+
+ .selectiondefault {
+ background-color: @ini_background_alt;
+ }
+ .selection input {
+ margin-left: .5em;
+ }
+
+ & p:last-child {
+ position: -webkit-sticky; /* Safari */
+ position: sticky;
+ bottom: 0;
+ box-sizing: border-box;
+ background-color: rgba(255,255,255,.67);
+ border: @ini_border solid 2pt;
+ padding: .5em 0;
+ z-index: 9;
+ display: grid;
+ grid-template-columns: auto auto;
+ justify-items: center;
+ }
+ p:last-child button {
+ border: @ini_border solid 2pt;
+ padding: .25em .5em;
+ }
+ p:last-child button[type=submit] {
+ background-color: #ccddff;
+ }
+ }
+
+ fieldset {
+ background-color: transparent;
+ color: inherit;
+ }
+
+ table {
+ th, td {
+ border: none;
+ }
+ td.label span.outkey {
+ background-color: inherit;
+ }
+
+ tr.default .input,
+ tr .input {
+ background-color: transparent;
+ }
+ }
+}
+#extension__list {
+ .legend a.info, .legend a.info.close {
+ width: 22px;
+ height: 22px;
+ background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M11 9H13V7H11M12 20C7.59 20 4 16.41 4 12C4 7.59 7.59 4 12 4C16.41 4 20 7.59 20 12C20 16.41 16.41 20 12 20M12 2A10 10 0 0 0 2 12A10 10 0 0 0 12 22A10 10 0 0 0 22 12A10 10 0 0 0 12 2M11 17H13V11H11V17Z' style='fill:%23ADADB3'/%3E%3C/svg%3E") center no-repeat;
+ background-size: 24px;
+ border-radius: 50%;
+ margin-bottom: .5em;
+ }
+}
+
+/* RTL Overrides */
+[dir=rtl] {
+ #phSearch form .search-popup {
+ margin-right: 0;
+ margin-left: 21pt;
+ }
+ #phSearch form > div input {
+ padding-right: 4pt;
+ }
+
+ #globalTools {
+ text-align: left;
+ }
+ #gUserTools {
+ padding: 0 0 0 .5rem;
+ }
+
+ #toc {
+ float: left;
+ border-left: transparent 0;
+ border-right: #CCC solid 1pt;
+ }
+ #toc ol {
+ padding: 0 1em 0 0;
+ }
+
+ .secedit {
+ float: left;
+ }
+
+ #navYouAreHere ol li::before {
+ content: '\25C2';
+ }
+ #navYouAreHere ol li.home::before {
+ content: '';
+ }
+
+ #sidebar {
+ > button.tg_button {
+ float: left;
+ }
+
+ p, ul, ol {
+ padding-left: 0;
+ padding-right: 1.25em;
+ }
+ }
+ #sbNavigation {
+ margin: 1em 1em 0 .25em;
+ }
+ main {
+ figure figcaption {
+ clear: right;
+ }
+
+ & > footer {
+ text-align: left;
+ }
+ & > footer p.docInfo {
+ padding-left: 0;
+ padding-right: 5%;
+ }
+ }
+}
+
+/* dark mode overrides */
+@media screen and (prefers-color-scheme: dark) {
+
+ body.darkmode {
+
+ & { background-color: @ini_background_site_dark; color: @ini_text_dark; }
+ #skip-link a { background-color: @ini_background_dark;color: @ini_link_dark;}
+ #navYouAreHere ol {
+ li { color: @ini_headlines_dark;}
+ li::before { color: @ini_text_alt_dark;}
+ }
+ #phSearch form > div {
+ &.search-field { border-color: @ini_border_dark; background: @ini_background_dark; }
+ input { color: @ini_text_dark; }
+ button {color: @ini_text_dark; }
+ button[type="reset"] {border-right-color: @ini_border_dark; }
+ }
+ #qsearch__out {
+ & { background-color: @ini_background_site_dark; }
+ ul, li { border-color: @ini_border_dark; }
+ }
+
+ #config__manager {
+ #dw__configform {
+
+ .selectiondefault {
+ background-color: @ini_background_alt_dark;
+ }
+ .selectiondefault label {
+ color: @ini_text_dark;
+ }
+
+ p:last-child {
+ & {
+ background-color: rgba(57,57,61,.67);
+ border-color: @ini_border_dark;
+ }
+ button {
+ background-color: @ini_background_dark;
+ border-color: @ini_border_dark;
+ color: @ini_missing_dark;
+ }
+ button[type=submit] {
+ border-color: @ini_existing_dark;
+ background-color: @ini_background_dark;
+ color: @ini_existing_dark;
+ }
+ }
+ }
+ }
+ #sbNavigation {
+ h1, h2, h3, h4, h5, h6 { color: @ini_headlines_dark; }
+ }
+ #sidebar {
+ hr { background-image: linear-gradient(to right, @ini_background_site_dark, @ini_text_alt, @ini_background_site_dark); }
+ a:link, a:visited { color: @ini_link_dark; }
+ li::marker { color: @ini_text_dark; }
+ }
+
+ #toc {
+ & { border-color: @ini_border_dark; }
+ #toc-menubutton,
+ #toc-menubutton span { color: @ini_headlines_dark; }
+ a[href^='#']:link, a[href^='#']:visited { color: @ini_inpage_dark; }
+ }
+
+ main {
+ & { background-color: @ini_background_dark; color: @ini_text_dark; border-color: @ini_background_dark; }
+ h1, h2, h3, h4, h5, h6 { color: @ini_headlines_dark; }
+ & > footer p.docInfo { color: @ini_text_alt_dark; }
+ figure table { background-color: @ini_background_dark; }
+ }
+
+ #footer-layout > footer h4 { color: @ini_headlines_dark; }
+
+ #ftLicenseButtons {
+ p.license { color: @ini_text_alt_dark; }
+ hr { background-image: linear-gradient(to right, @ini_background_site_dark, @ini_text_dark, @ini_background_site_dark); }
+ }
+
+ /* Extension Manager: */
+ #extension__manager{
+ .panelHeader { background-color: @ini_background_alt_dark; }
+ ul.tabs li a { background-color: @ini_background_dark; border-color: @ini_border_dark; color: @ini_text_dark }
+ ul.tabs li.active a { background-color: @ini_background_alt_dark; border-color: @ini_text_dark; }
+ tr .input, tr.default .input { color: @ini_text_dark; }
+ }
+ #extension__list ul.extensionList li { color: @ini_text_dark; }
+ }
+
+ /* dark scrollbar styles for webkit browsers: */
+ &::-webkit-scrollbar-track {
+ background: @ini_background_site_dark;
+ }
+ &::-webkit-scrollbar-thumb {
+ background: @ini_background_alt_dark;
+ }
+ &::-webkit-scrollbar-thumb:hover {
+ background: @ini_background_dark;
+ }
+ /* dark scrollbars for firefox: */
+ * { scrollbar-color: @ini_background_alt_dark @ini_background_site_dark; }
+}
+
+/* tablet break point */
+@media all and (max-width: @ini_tablet_width) {
+ #header-layout > header {
+ margin: 0;
+ grid-template-columns: e("repeat(2, auto)");
+ grid-template-rows: e("repeat(4, auto)");
+ }
+ #header-layout > header #siteLogo {
+ grid-column: 1;
+ grid-row: 1;
+ }
+ #header-layout > header #globalTools {
+ grid-row: 1;
+ grid-column: 2;
+ }
+ #header-layout>header #globalTools ul li {
+ display: block;
+ margin-bottom: .5em;
+ }
+ #header-layout>header #globalTools ul li:before {
+ content: '';
+ }
+ #header-layout>header #phSearch {
+ grid-row: 2;
+ grid-column: 1 / span 2;
+ padding: .5em 1em 0 68px;
+ }
+ [dir=rtl] #header-layout>header #phSearch {
+ padding: .5em 68px 0 1em;
+ }
+ #header-layout>header #phTools {
+ grid-row: 3;
+ grid-column: 1 / span 2;
+ }
+ #header-layout>header #phInclude {
+ grid-row: 4;
+ grid-column: 1 / span 2;
+ margin: 0 6pt 5pt 64px;
+ }
+
+ #qsearch__out ul {
+ max-height: 100%;
+ }
+
+ #main-layout {
+ display: block;
+ }
+
+ #sidebar.toggle {
+ width: auto;
+ margin-left: .5em;
+ padding: 0;
+ position: relative;
+ top: -2.25em;
+ height: .25em;
+ }
+ #sidebar > button.tg_button,
+ [dir=rtl] #sidebar > button.tg_button {
+ float: none;
+ }
+ #sidebar.auto > button.tg_button,
+ #sidebar.hide > button.tg_button,
+ #sidebar.alt > button.tg_button,
+ #sidebar.show > button.tg_button {
+ width: 1.5em;
+ }
+ #sidebar > button.tg_button span {
+ display: none;
+ }
+
+ #sidebar > button.tg_button::after {
+ content: '\2630';
+ }
+ #sidebar.hide>button.tg_button::after,
+ #sidebar.alt>button.tg_button::after {
+ content: '\2715';
+ }
+
+ #sidebar .tg_content {
+ min-width: @ini_sidebar_width;
+ padding-right: 0;
+ margin-top: 10px;
+ padding-bottom: 1em;
+ background-color: @ini_background_site;
+ position: absolute;
+ z-index: 18;
+ border: @ini_border solid 1px;
+ -moz-box-shadow: 2px 2px 2px @ini_border;
+ -webkit-box-shadow: 2px 2px 2px @ini_border;
+ box-shadow: 2px 2px 2px @ini_border;
+ }
+
+ #sidebar .tg_content:before {
+ content: ' ';
+ z-index: 19;
+ width: 0;
+ height: 0;
+ position: absolute;
+ top: -10px;
+ left: 7px;
+ border-width: 0 10px 10px;
+ border-style: solid;
+ border-color: transparent;
+ border-bottom-color: @ini_border;
+ }
+ #sidebar .tg_content:after {
+ content: ' ';
+ z-index: 20;
+ width: 0;
+ height: 0;
+ position: absolute;
+ top: -8px;
+ left: 8px;
+ border-width: 0 9px 8px;
+ border-style: solid;
+ border-color: transparent;
+ border-bottom-color: @ini_background_site;
+ }
+
+ [dir=rtl] {
+ #sidebar .tg_content {
+ right: 5px;
+ }
+ #sidebar .tg_content:before {
+ right: 7px;
+ }
+ #sidebar .tg_content:after {
+ right: 8px;
+ }
+ }
+
+ #sbNavigation {
+ padding-left: .5em;
+ margin-left: 0;
+ }
+ #sidebar h3,
+ #sidebar h4 {
+ font-size: 1rem;
+ padding: .25em 0 .25em 2pt;
+ }
+ #sidebar ul, #sidebar ol {
+ margin-left: .5em;
+ }
+ #sidebar ul ul, #sidebar ol ol,
+ #sidebar ul ol, #sidebar ol ul {
+ margin-left: 0;
+ }
+ #sidebar p,
+ #sidebar li {
+ font-size: small;
+ padding: .25em 0 .25em .25em;
+ }
+
+ main {
+ width: auto;
+ box-shadow: 0 0 0 0 transparent;
+ }
+
+ .toggle .tg_content,
+ .toggle.alt .tg_content,
+ .toggle.show .tg_content {
+ display: initial;
+ }
+ .toggle.auto .tg_content {
+ display: none;
+ }
+
+ #toc.hide h3::after,
+ #toc.auto h3::after {
+ content: '\2630';
+ }
+ #toc.alt h3::after {
+ content: '\203A';
+ }
+
+ #toc.hide h3 > span,
+ #toc.auto h3 > span {
+ display: none;
+ }
+ #toc.alt h3 > span {
+ display: inline-block;
+ }
+
+ #footer-layout > footer {
+ grid-template-columns: 12pt 1fr 1fr 1fr;
+ }
+}
+
+@media all and (max-width: @ini_tablet_width) and (prefers-color-scheme: dark) {
+ body.darkmode #sidebar {
+ .tg_content {
+ & {
+ background-color: @ini_background_dark;
+ border-color: @ini_border_dark;
+ -moz-box-shadow: 3px 3px 3px @ini_background_site_dark;
+ -webkit-box-shadow: 3px 3px 3px @ini_background_site_dark;
+ box-shadow: 3px 3px 3px @ini_background_site_dark;
+ }
+ &::before {
+ border-bottom-color: @ini_border_dark;
+ }
+ &::after {
+ border-bottom-color: @ini_background_dark;
+ }
+ }
+ hr {
+ background: @ini_link_dark;
+ background-image: linear-gradient(to right, @ini_background_dark, @ini_headlines_dark, @ini_background_dark);
+ }
+ }
+}
+
+/* medium break point: */
+@media all and (max-width: @ini_phone_width) {
+ #footer-layout {
+ & {
+ padding-top: .5em;
+ }
+ & > footer {
+ & {
+ grid-template-columns: 100%;
+ grid-template-rows: auto auto auto auto auto;
+ }
+ .ftSection {
+ grid-column: 1;
+ padding: 0 .25em 0 .5em;
+ white-space: normal;
+ }
+ .ftSection ul {
+ padding-left: 0;
+ }
+ .ftSection li {
+ display: inline-block;
+ }
+ .ftSection li::before {
+ content: '\00B7';
+ display: inline;
+ width: .35em;
+ padding: 0 .35em;
+ }
+ .ftSection li:first-child::before {
+ content: '';
+ padding-left: 0;
+ }
+
+ #ftPlaceholder {
+ grid-row: 1;
+ }
+ #ftInclude {
+ grid-row: 2;
+ }
+ #ftSiteTools {
+ grid-row: 3;
+ }
+ #ftPageTools {
+ grid-row: 4;
+ }
+ #ftLicenseButtons {
+ grid-column: 1;
+ grid-row: 5;
+ }
+
+ h4 {
+ margin-bottom: .5em;
+ }
+ }
+ }
+
+ main blockquote {
+ margin-left: .15em;
+ margin-right: 0;
+ }
+ main ul, main ol {
+ margin-left: .5em;
+ margin-right: 0;
+ padding-left: .75em;
+ }
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/links.less b/templates/55/ad-hominem/css/links.less
new file mode 100644
index 0000000..f97f7ca
--- /dev/null
+++ b/templates/55/ad-hominem/css/links.less
@@ -0,0 +1,59 @@
+/**
+ * This contains the content styling
+ * @author Sascha Leib <sascha@leib.be>
+ */
+
+/* general link styles */
+a:link {
+ color: @ini_link;
+ text-decoration: none;
+ border-radius: 2px;
+}
+a:visited {
+ color: @ini_link;
+}
+a:hover {
+ text-decoration: underline;
+}
+a:focus {
+ outline: @ini_focus_color solid 2px;
+}
+a.wikilink1:link,
+a.wikilink1:visited {
+ color: @ini_existing;
+}
+a.wikilink2:link,
+a.wikilink2:visited {
+ color: @ini_missing;
+}
+
+a.media:link,
+a.media:visited {
+ display: block;
+ line-height: 0;
+}
+
+/* in-page links */
+a[href^='#'].wikilink1:link,
+a[href^='#'].wikilink1:visited {
+ color: @ini_inpage;
+ text-decoration: underline;
+ text-decoration-style: dotted;
+
+}
+
+/* special cases: included section in footer: */
+footer #ftInclude a.wikilink1:link,
+footer #ftInclude a.wikilink1:visited {
+ color: @ini_link;
+}
+
+/* dark mode overrides */
+@media (prefers-color-scheme: dark) {
+
+ body.darkmode a:link, body.darkmode a:visited { color: @ini_link_dark; }
+ body.darkmode a.wikilink1:link, body.darkmode a.wikilink1:visited { color: @ini_existing_dark; }
+ body.darkmode a.wikilink2:link, body.darkmode a.wikilink2:visited { color: @ini_missing_dark; }
+ body.darkmode #ftInclude a.wikilink1:link, body.darkmode #ftInclude a.wikilink1:visited { color: @ini_link_dark; }
+ body.darkmode a[href^='#'].wikilink1:link, body.darkmode a[href^='#'].wikilink1:visited { color: @ini_inpage_dark; }
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/pagetools.less b/templates/55/ad-hominem/css/pagetools.less
new file mode 100644
index 0000000..5473594
--- /dev/null
+++ b/templates/55/ad-hominem/css/pagetools.less
@@ -0,0 +1,124 @@
+/**
+ * This file provides the styles for the page tools
+ * (fly out navigation beside the page to edit, etc).
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+#dokuwiki__site > .site {
+ /* give space to the right so the tools won't disappear on smaller screens */
+ /* it's 40px because the 30px wide icons will have 5px more spacing to the left and right */
+ padding-right: 40px;
+ /* give the same space to the left to balance it out */
+ padding-left: 40px;
+}
+
+.dokuwiki div.page {
+ height: 190px;
+ min-height: 190px; /* 30 (= height of icons) x 6 (= maximum number of possible tools) + 2x5 */
+ height: auto;
+}
+
+#dokuwiki__pagetools {
+ @ico-width: 28px;
+ @ico-margin: 8px;
+ @item-width: (@ico-width + @ico-margin + @ico-margin);
+ @item-height: (@ico-width + @ico-margin);
+
+ position: absolute;
+ right: (-1 * @item-width);
+ /* on same vertical level as first headline, because .page has 2em padding */
+ top: 2em;
+ width: @item-width;
+
+ div.tools {
+ position: fixed;
+ width: @item-width;
+
+ ul {
+ position: absolute;
+ right: 0;
+ text-align: right;
+ margin: 0;
+ padding: 0;
+ /* add transparent border to prevent jumping when proper border is added on hover */
+ border: 1px solid transparent;
+ z-index: 10;
+
+ li {
+ padding: 0;
+ margin: 0;
+ list-style: none;
+ font-size: 0.875em;
+
+ a {
+
+ display: block;
+ /* add transparent border to prevent jumping when proper border is added on focus */
+ border: 1px solid transparent;
+ white-space: nowrap;
+ line-height: @item-height;
+ vertical-align: middle;
+ height: @item-height;
+
+ span {
+ display: none; // hide label until hover
+ margin: 0 @ico-margin;
+ }
+
+ svg {
+ width: @ico-width;
+ height: @ico-width;
+ margin: 0 @ico-margin;
+ display: inline-block;
+ vertical-align: middle;
+ fill: @ini_border;
+ }
+ }
+
+ // on interaction show the full item
+ a:active,
+ a:focus,
+ a:hover {
+ background-color: @ini_background_alt;
+
+ span {
+ display: inline-block;
+ }
+
+ svg {
+ fill: @ini_link;
+ }
+ }
+ }
+ }
+ }
+
+ [dir=rtl] & {
+ right: auto;
+ left: (-1 * @item-width);
+
+ div.tools {
+ ul {
+ right: auto;
+ left: 0;
+ text-align: left;
+ }
+ }
+ }
+}
+
+// on hover or focus show all items
+#dokuwiki__pagetools:hover, #dokuwiki__pagetools:focus-within {
+ div.tools ul {
+ background-color: @ini_background;
+ border-color: @ini_border;
+ border-radius: 2px;
+ box-shadow: 2px 2px 2px @ini_text_alt;
+
+ li a span {
+ display: inline-block;
+ }
+ }
+}
diff --git a/templates/55/ad-hominem/css/plugins.less b/templates/55/ad-hominem/css/plugins.less
new file mode 100644
index 0000000..f2f379c
--- /dev/null
+++ b/templates/55/ad-hominem/css/plugins.less
@@ -0,0 +1,28 @@
+/**
+ * This file contains style overrides for selected plugins
+ * @author Sascha Leib <sascha@leib.be>
+ */
+
+/* upgrade plugin */
+#plugin__upgrade_meter {
+ & {
+ height: 26px;
+ }
+ ol li {
+ .stage {
+ color: #444;
+ }
+ .step {
+ color: #444;
+ }
+ &.active {
+ height: 26px;
+ }
+ }
+}
+#plugin__upgrade_form {
+ button {
+ padding: .25em .5em;
+ cursor: pointer;
+ }
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/css/print.less b/templates/55/ad-hominem/css/print.less
new file mode 100644
index 0000000..63944ab
--- /dev/null
+++ b/templates/55/ad-hominem/css/print.less
@@ -0,0 +1,596 @@
+/**
+ * This contains the print layouts and styles
+ * @author Sascha Leib <sascha@leib.be>
+ */
+
+@page { margin: 2cm 4cm 3cm 2.5cm; }
+
+.noprint,
+.wrap_noprint {
+ display: none !important;
+}
+.nobreak,
+.wrap_nobreak {
+ white-space: nowrap !important;
+}
+.printonly,
+.print-only,
+.wrap_print-only {
+ display: initial;
+}
+
+html, body, * {
+ font-family: @ini_print_default_fonts;
+ margin: 0;
+ padding: 0;
+ background-color: transparent;
+}
+
+body {
+ font-size: 12pt;
+ box-decoration-break: clone;
+}
+
+/* hide unneded page elements */
+#globalTools, #phSearch,
+#sidebar, #toc, #navYouAreHere,
+#footer-layout .ftSection {
+ display: none;
+}
+#header-layout {
+ display: table-header-group;
+ padding-bottom: .25em;
+ margin-bottom: 1em;
+}
+#header-layout > header {
+ display: block;
+ padding-bottom: .25em;
+ border-bottom: #000 solid .5pt;
+ margin-bottom: 1em;
+}
+#siteLogo {
+ display: grid;
+ grid-template-columns: min-content max-content auto;
+ align-items: center;
+}
+#siteLogo .logo {
+ grid-row: 1;
+}
+#siteLogo .logo img {
+ width: 12pt;
+ height: auto;
+}
+#siteLogo .title {
+ font-size: 10pt;
+ line-height: 1.2em;
+ font-weight: bold;
+}
+#siteLogo .title a:link,
+#siteLogo .title a:visited {
+ font-family: @ini_print_title_fonts;
+ color: @ini_print_title_color;
+ text-decoration: none;
+}
+#siteLogo .claim {
+ grid-row: 1; grid-column: 3;
+ align-self: center;
+ max-width: 100%;
+ font-size: 10pt;
+ line-height: 1.2em;
+}
+
+#header-layout #phInclude {
+ display: none;
+}
+
+#main-layout {
+ padding-top: .5em;
+ display: table-row-group;
+}
+
+#footer-layout {
+ display: block;
+ padding-top: 0;
+}
+#footer-layout footer {
+ display: block;
+ width: auto;
+}
+
+/* reset main borders and margins: */
+main {
+ display: table-row-group;
+ padding: 0;
+ border-width: 0;
+ line-height: 1.5em;
+ border: none 0;
+ word-break: break-word;
+ -moz-box-shadow: 0 0 0 0 transparent;
+ -webkit-box-shadow: 0 0 0 0 transparent;
+ box-shadow: 0 0 0 0 transparent;
+}
+
+/* headlines */
+main h1, main h2, main h3, main h4, main h5, main h6 {
+ font-family: @ini_print_title_fonts;
+ color: @ini_print_title_color;
+ line-height: 1.2em;
+ margin: 1em 0 .5em 0;
+ padding: 0 0 .25em 0;
+ page-break-inside: avoid;
+ break-inside: avoid;
+ page-break-after: avoid;
+ break-after: avoid;
+ clear: both;
+ position: relative;
+}
+main h1 { font-size: 18pt; margin-bottom: .5em; }
+main h2 { font-size: 14pt; margin-top: 2em; }
+main h3 { font-size: 12pt; }
+main h4 { font-size: 12pt; font-style: italic; }
+main h5 { font-size: 12pt; font-weight: normal; font-style: italic; }
+main h6 { font-size: 11pt; font-weight: normal; font-style: italic; }
+
+/* workaround: force headlines to keep with the next paragraph: */
+main h1::after, main h2::after, main h3::after, main h4::after, main h5::after, main h6::after,
+main dl:not(.compact) dt::after {
+ content: '';
+ display: block;
+ height: 4.5em;
+ margin-bottom: -4.5em;
+ page-break-inside: avoid;
+ break-inside: avoid;
+}
+
+main h1 + div, main h2 + div, main h3 + div, main h4 + div, main h5 + div, main h6 + div {
+ page-break-before: avoid;
+ break-before: avoid;
+}
+
+/* paragraph-level blocks */
+main p, main ul, main ol {
+ margin: .5em 0;
+}
+main p, main li {
+ widows: 2;
+ orphans: 2;
+ word-wrap: break-word;
+ overflow-wrap: break-word;
+ hyphens: auto;
+ -ms-hyphens: auto;
+ -moz-hyphens: auto;
+ -webkit-hyphens: auto;
+ hyphenate-limit-chars: 6 2 3;
+}
+main ul { list-style: square outside; }
+main ul ul { list-style-type: disc; }
+main ul ul ul { list-style-type: none; }
+main ol { list-style: decimal outside; }
+main ul ul ul li {margin-left: 1em; }
+main ul ul ul li:before { display: block; content: '\2043'; text-align:center; float: left; width: 1em; margin-left: -1em; }
+main ul ul ul ul li:before { content: '\FE63' }
+main ul ul ul ul ul li:before { content: '\00B7' }
+
+main ol ol { list-style-type: lower-alpha; }
+main ol ol ol { list-style-type: lower-roman; }
+main ol ol ol ol { list-style-type: lower-greek; }
+main ol ol ol ol ol { list-style-type: decimal-leading-zero; }
+main ul ul ul ol li { margin-left: 0; }
+main ul ul ul ol li:before { display: none; content: ''; }
+
+main li {
+ margin-left: 1.5em;
+}
+main blockquote {
+ border-left: @ini_blockquote solid 3pt;
+ padding: .25em 0 .25em .5em;
+ margin: 0 .25em 1em .25em;
+ widows: 2;
+ orphans: 2;
+ hyphens: auto;
+}
+main pre {
+ white-space: normal;
+}
+main figure {
+ break-inside: avoid;
+ page-break-inside: avoid;
+ background-color: transparent;
+ border: #666 solid .5pt;
+ margin: .5em 0;
+}
+main figure figcaption {
+ font-family: @ini_print_title_fonts;
+ margin-top: .5em;
+ font-size: small;
+ text-align: left;
+}
+main figure figcaption p,
+main figure figcaption li {
+ font-family: @ini_print_title_fonts;
+}
+body.print-compact main figure figcaption p {
+ text-indent: 0;
+}
+body.print-compact main figure table {
+ max-width: 100%;
+ border: #000 solid .5pt;
+}
+main footer {
+ margin-top: 2em;
+ border-top: #000 solid .5pt;
+ page-break-before: avoid;
+ break-before: avoid;
+}
+main footer p.docInfo,
+body.print-compact main p.docInfo {
+ display: block;
+ border: none;
+ padding: 0;
+ text-align: right;
+ color: #000;
+}
+#ftLicenseButtons p.license {
+ color: #000;
+}
+
+/* links overrides */
+main a:link,
+main a:visited {
+ text-decoration: underline;
+ text-decoration-style: dotted;
+}
+main a:link.text-link,
+main a:visited.text-link {
+ color: #000;
+}
+
+/* add URL after external links - optional!
+main a.interwiki:after,
+main a.urlextern:after {
+ content: ' <' attr(href) '>';
+ font-size: 90%;
+ color: #333;
+} */
+
+/* fixed-width elements: */
+main tt, main code, main pre,
+main blockquote tt, main blockquote code, main blockquote pre {
+ font-family: @ini_mono_fonts;
+}
+
+/* text attributes */
+main s {
+ text-decoration: line-through rgba(255,0,0,0.5) solid 1pt;
+ -webkit-text-decoration: line-through rgba(255,0,0,0.5) solid 1pt;
+}
+main u {
+ -webkit-text-decoration-color: @ini_missing;
+ -webkit-text-decoration-line: underline;
+ -webkit-text-decoration-style: wavy;
+ -webkit-text-decoration-thickness: .7pt;
+ text-decoration: underline @ini_missing wavy .7pt;
+}
+main u.valid {
+ -webkit-text-decoration-color: @ini_existing;
+ text-decoration-color: @ini_existing;
+ text-decoration-style: dashed;
+}
+main abbr {
+ text-decoration: none;
+ font-size: 97%;
+ letter-spacing: .05em;
+}
+
+/* horizontal rules */
+main hr {
+ border: #000 solid 0;
+ border-top-width: 1pt;
+ height: 0;
+ margin: 3pt 0;
+}
+
+/* table styles */
+main table {
+ max-width: 100%;
+ border: #000 solid .5pt;
+ border-collapse: collapse;
+ line-height: 1.25em;
+ margin: .5em 0;
+ box-decoration-break: clone;
+ page-break-inside: avoid;
+ break-inside: avoid;
+ font-size: small;
+}
+main table td,
+main table th {
+ padding: 2pt 3pt;
+ vertical-align: top;
+}
+main table th,
+main table th * {
+ font-family: @ini_print_title_fonts;
+ color: @ini_print_title_color;
+}
+main table thead {
+ break-inside: avoid;
+ break-after: avoid;
+}
+main table thead tr {
+ background-color: #EEE;
+ border-bottom: #000 solid .5pt;
+ text-align: left;
+}
+main table thead tr th,
+main table thead tr td {
+ vertical-align: bottom;
+ border-right: #000 solid .5pt;
+}
+main table thead tr th:last-child,
+main table thead tr td:last-child {
+ border-right: none 0;
+}
+main table tbody tr {
+ border-bottom: #000 dashed .5pt;
+}
+main table tbody tr:nth-child(even) {
+ background-color: #EEE;
+}
+main table tbody th {
+ vertical-align: top;
+ border-right: #000 solid .5pt;
+}
+main table tbody td {
+ border-right: #000 dashed .5pt;
+}
+main table a:link {
+ text-decoration: none;
+}
+
+main table.layout,
+main table.layout tr,
+main table.layout th,
+main table.layout td {
+ border: none !important;
+ background: transparent none !important;
+}
+
+main blockquote table {
+ margin: 0;
+}
+
+/* image-related */
+main aside {
+ float: none;
+ width: 100%;
+ margin: .5em 0;
+ page-break-inside: avoid;
+ break-inside: avoid;
+}
+main img {
+ width: auto;
+ max-width: 100%;
+ height: auto;
+ break-inside: avoid;
+ page-break-inside: avoid;
+}
+
+/* footnotes */
+main div.footnotes {
+ margin-top: 1.5em;
+ font-size: smaller;
+}
+main div.footnotes div.fn {
+ display: grid;
+ grid-template-columns: 1.5em auto;
+ grid-gap: .25em;
+}
+main div.footnotes div.fn > sup {
+ vertical-align: baseline;
+ font-size: smaller;
+ text-align: right;
+}
+
+main div.footnotes:before {
+ content: ' ';
+ display: block;
+ width: 33%;
+ min-width: 5em;
+ border-top: @ini_text solid .5pt;
+ height: .5em;
+}
+
+/* show language code, if configured as menu */
+#tbLanguages {
+ & {
+ display: block;
+ float:right;
+ position: relative;
+ top: -1.5rem;
+ }
+ button {
+ & {
+ border: transparent none 0;
+ }
+ svg {
+ & {
+ fill: transparent;
+ stroke: #000;
+ stroke-width: .5pt;
+ width: 1.75rem; height: 1.75rem;
+ }
+ text {
+ fill: #000;
+ text-transform: uppercase;
+ font-family: Arial, Helvetica, Verdana, sans;
+ stroke-width: 0;
+ }
+ }
+ }
+}
+
+/* alternative compact style: */
+body.print-compact #main-content {
+ columns: 2;
+ column-gap: 1.2em;
+ column-rule: .25pt solid #666;
+ font-size: 11pt;
+}
+body.print-compact main h1,
+body.print-compact main h2,
+body.print-compact main figure {
+ column-span: all;
+}
+body.print-compact main figure.print-narrow {
+ column-span: none;
+}
+
+#main-content h1 + div > p:first-child {
+ column-span: all;
+ font-weight: 600;
+ margin-bottom: 1.5em;
+ text-indent: 0;
+}
+
+body.print-compact main p {
+ margin: 0;
+ text-align: justify;
+ text-indent: 1.5em;
+}
+body.print-compact main h1 + div > p:first-child + p,
+body.print-compact main h2 + div > p:first-child,
+body.print-compact main h3 + div > p:first-child,
+body.print-compact main h4 + div > p:first-child,
+body.print-compact main h5 + div > p:first-child,
+body.print-compact main h6 + div > p:first-child,
+body.print-compact main figure + p + p,
+body.print-compact main div.table + p,
+body.print-compact main aside + p + p,
+body.print-compact main ul + p,
+body.print-compact main ol + p,
+body.print-compact main blockquote + p,
+body.print-compact main p.info-box,
+body.print-compact main p.info-box + p + p {
+ text-indent: 0;
+}
+
+body.print-compact main table {
+ border: none;
+}
+body.print-compact main figure {
+ border: none;
+ margin: 1em 0 .5em 0;
+ padding: .5em 0;
+}
+body.print-compact main blockquote {
+ margin: .5em 0;
+ padding: 0 0 0 .5em;
+}
+body.print-compact main figure blockquote {
+ margin: 0;
+}
+body.print-compact main p.info-box {
+ margin: .5em 0;
+}
+body.print-compact main ul,
+body.print-compact main ol {
+ margin-left: .5em;
+ margin: 0;
+ padding: 0;
+ list-style-position: inside;
+}
+body.print-compact main ul > li,
+body.print-compact main ol > li {
+ margin-left: 0;
+}
+body.print-compact main ul ul,
+body.print-compact main ul ol,
+body.print-compact main ol ul,
+body.print-compact main ol ol,
+body.print-compact main ul ul li,
+body.print-compact main ul ol li,
+body.print-compact main ol ul li,
+body.print-compact main ol ol li {
+ margin-left: .5em;
+}
+body.print-compact main ul li::marker,
+body.print-compact main ol li::marker {
+ display: inline-block;
+ float: none;
+}
+body.print-compact main ul li div.li,
+body.print-compact main ol li div.li {
+ display: inline;
+}
+body.print-compact main ul div.li,
+body.print-compact main ol div.li {
+ text-align: justify;
+}
+
+/* media detail */
+body.mediadetail figure {
+ border: none;
+ background: transparent none;
+}
+body.mediadetail figure table ul {
+ margin: 0;
+}
+
+/* allow user to force keep-together rules: */
+.keep-together,
+.wrap_keep-together {
+ page-break-inside: avoid;
+ break-inside: avoid;
+}
+.break-before,
+.wrap_break-before {
+ page-break-before: always;
+ break-before: always;
+}
+.print-wide,
+.wrap_print-wide {
+ clear: both;
+ column-span: all;
+}
+.print-outline {
+ margin-top: 1em;
+ border: #666 solid .5pt;
+ border-radius: 1em;
+ padding: 0 1em;
+}
+
+/* site-banners */
+.site-banner {
+ clear: both;
+ column-span: all;
+ margin-top: 1em;
+ border: #666 solid 1pt;
+ border-radius: 1em;
+ padding: 0 1em;
+ page-break-inside: avoid;
+ break-inside: avoid;
+ text-align: left;
+}
+.site-banner h4 {
+ margin: .75em 0 .15em 0;
+ font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
+ font-size: 11pt;
+ font-style: normal;
+}
+.site-banner p {
+ font-size: 9pt;
+ line-height: 13pt;
+}
+.site-banner img {
+ margin: 0 .25em .25em .5em;
+}
+
+/* boxes */
+main .box,
+main .wrap_box {
+ border: #666 solid 1px;
+ background-color: @ini_background_alt;
+ padding: .5em .25em .5em .5em;
+ font-size: small;
+ line-height: 1.5em;
+}
diff --git a/templates/55/ad-hominem/css/structure.less b/templates/55/ad-hominem/css/structure.less
new file mode 100644
index 0000000..3ea2f83
--- /dev/null
+++ b/templates/55/ad-hominem/css/structure.less
@@ -0,0 +1,89 @@
+/**
+ * This file provides styles for the general layout structure.
+ *
+ * @author Anika Henke <anika@selfthinker.org>
+ */
+body {
+ margin: 0 auto;
+}
+
+#dokuwiki__site {
+ margin: 0 auto;
+ max-width: @ini_site_width;
+}
+
+#dokuwiki__site > .site {
+ padding: 0 .5em;
+}
+
+#dokuwiki__header {
+ width: 100%;
+
+ .headings {
+ float: left;
+ }
+
+ .tools {
+ float: right;
+ text-align: right;
+ }
+}
+
+[dir=rtl] #dokuwiki__header {
+ .headings {
+ float: right;
+ text-align: right;
+ }
+
+ .tools {
+ float: left;
+ text-align: left;
+ }
+}
+
+#dokuwiki__site .wrapper {
+ position: relative;
+}
+
+#dokuwiki__aside {
+ width: @ini_sidebar_width;
+ float: left;
+ position: relative;
+ display: block;
+
+ > .pad {
+ margin: 0 1.5em 0 0;
+ }
+}
+
+[dir=rtl] #dokuwiki__aside {
+ float: right;
+ > .pad {
+ margin: 0 0 0 1.5em;
+ }
+}
+
+.showSidebar #dokuwiki__content {
+ float: right;
+ margin-left: (-1 * @ini_sidebar_width);
+ width: 100%;
+
+ > .pad {
+ margin-left: @ini_sidebar_width;
+ }
+}
+
+[dir=rtl] .showSidebar #dokuwiki__content {
+ float: left;
+ margin-left: 0;
+ margin-right: (-1 * @ini_sidebar_width);
+
+ > .pad {
+ margin-left: 0;
+ margin-right: @ini_sidebar_width;
+ }
+}
+
+#dokuwiki__footer {
+ clear: both;
+}
diff --git a/templates/55/ad-hominem/css/usertools.less b/templates/55/ad-hominem/css/usertools.less
new file mode 100644
index 0000000..efdf16c
--- /dev/null
+++ b/templates/55/ad-hominem/css/usertools.less
@@ -0,0 +1,50 @@
+#dokuwiki__usertools {
+ position: absolute;
+ top: .5em;
+ right: 40px; // pagetool width
+ text-align: right;
+ width: 100%;
+
+ ul {
+ margin: 0 auto;
+ padding: 0;
+ max-width: @ini_site_width;
+ }
+
+ li.action a {
+ display: inline-flex;
+ flex-direction: row-reverse;
+ flex-wrap: nowrap;
+
+ svg {
+ height: 1.4em;
+ width: 1.4em;
+ vertical-align: middle;
+ fill: @ini_border;
+ margin-right: 0.2em;
+ }
+ }
+
+ li.action a:hover,
+ li.action a:active {
+ svg {
+ fill: @ini_link;
+ }
+ }
+
+}
+
+[dir=rtl] #dokuwiki__usertools {
+ text-align: left;
+ left: 40px; // pagetool width
+ right: auto;
+
+
+ li.action a {
+
+ svg {
+ margin-right: 0;
+ margin-left: 0.2em;
+ }
+ }
+}
diff --git a/templates/55/ad-hominem/detail.php b/templates/55/ad-hominem/detail.php
new file mode 100644
index 0000000..6e2ba89
--- /dev/null
+++ b/templates/55/ad-hominem/detail.php
@@ -0,0 +1,158 @@
+<?php
+/**
+ * Ad Hominem Template
+ *
+ * @link https://ad.hominem.info/
+ * @author Sascha Leib <sascha@leib.be>
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Clarence Lee <clarencedglee@gmail.com>
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ */
+
+ini_set('display_errors', 0);
+ini_set('display_startup_errors', 0);
+error_reporting(0);
+
+if (!defined('DOKU_INC')) die(); /* must be run from within DokuWiki */
+
+require_once('my_template.php');
+
+$htmlLang = ' lang="' . $conf['lang'] . ( $lang['direction'] != 'ltr' ? '" dir="'. $lang['direction'] : '') . '"';
+
+?><!DOCTYPE html>
+<html<?php echo $htmlLang ?>>
+<head>
+ <meta charset="UTF-8" />
+ <title><?php echo hsc(tpl_img_getTag('IPTC.Headline',$IMG)) ?> &ndash; <?php echo str_replace(' ', ' ', strip_tags($conf['title'])) ?></title>
+<?php my_metaheaders() ?>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+<?php my_favicons() ?>
+<?php tpl_includeFile('meta.html') ?>
+</head>
+<body class="mediadetail <?php echo trim(tpl_classes()); ?>">
+ <div id="skip-link">
+ <a href="#main-content"><?php echo $lang['skip_to_content']; ?></a>
+ </div>
+ <div id="header-layout">
+ <header>
+ <div id="siteLogo">
+ <?php my_sitelogo(); ?>
+
+ <h2 class="title"><?php tpl_link( my_homelink(), htmlentities($conf['title']), ''); ?></h2>
+ <p class="claim"><?php echo $conf['tagline']; ?></p>
+ </div>
+ <div id="globalTools">
+ <div id="gUserTools">
+ <h3 class="sronly"><?php echo $lang['user_tools']; ?></h3>
+ <ul>
+<?php my_userinfo(str_repeat(chr(9),6)); ?>
+ </ul>
+ </div>
+ </div>
+ <div id="phSearch">
+<?php include('tpl_searchform.php'); ?>
+ </div>
+ <div id="phTools"><!-- placeholder for additional tools --></div>
+ <div id="phInclude"><?php tpl_includeFile('header.html') ?></div>
+ </header>
+ </div>
+ <div id="main-layout">
+ <div id="sidebar" class="toggle hide">
+ <button class="tg_button" title="<?php echo $lang['sidebar'] ?>"><span><?php echo $lang['sidebar'] ?></span></button>
+ <div class="tg_content">
+ <nav id="sbNavigation">
+<!-- - - - - - - - - SIDEBAR CONTENT - - - - - - - -->
+<?php
+ tpl_flush();
+ tpl_includeFile('sidebarheader.html');
+ tpl_include_page($conf['sidebar'], true, true);
+ tpl_includeFile('sidebarfooter.html');
+?> </nav>
+<!-- - - - - - - - - END OF SIDEBAR CONTENT - - - - - - - -->
+ <div id="sbBreadcrumbs">
+<?php if($conf['breadcrumbs']) { my_breadcrumbs(str_repeat(chr(9),4)); } ?>
+ </div>
+ </div>
+ </div>
+ <main id="dokuwiki__top">
+ <header>
+<?php my_toc(str_repeat(chr(9),4));
+ tpl_flush();
+ tpl_includeFile('pageheader.html');
+ if($conf['youarehere']) { my_youarehere(str_repeat(chr(9),4)); }
+?> </header>
+ <article id="main-content">
+<!-- - - - - - - - - MEDIA DETAIL CONTENT - - - - - - - -->
+<?php
+
+ html_msgarea();
+
+ tpl_flush();
+ tpl_includeFile('pageheader.html');
+
+ if($ERROR): ?>
+ <h1><?php echo $ERROR; ?></h1>
+<?php else:
+ if($REV) echo p_locale_xhtml('showrev');
+?> <figure class="print-wide">
+ <h1><?php echo nl2br(hsc(tpl_img_getTag('simple.title'))); ?></h1>
+
+ <p class="center"><?php tpl_img(1088,800); /* parameters: maximum width, maximum height (and more) */ ?></p>
+ <figcaption>
+
+ <table class="img_detail">
+ <tbody>
+ <?php my_img_meta(str_repeat(chr(9),8)); ?>
+ <tr><th><?php echo $lang['reference']; ?></th>
+ <td><ul><?php
+ $media_usage = ft_mediause($IMG,true);
+ if(count($media_usage) > 0){
+ foreach($media_usage as $path){
+ echo '<li>'.html_wikilink($path).'</li>';
+ }
+ }else{
+ echo '<li>'.$lang['nothingfound'].'</li>';
+ }
+ ?></ul>
+ </td></tr>
+ <tr><td></td><td><small><?php echo $lang['media_acl_warning']; ?></small></td></tr>
+ </tbody>
+ </table>
+ <?php //Comment in for Debug// dbg(tpl_img_getTag('Simple.Raw'));?>
+ <?php endif; ?>
+ </figcaption>
+ </figure><?php tpl_flush() ?>
+ </article>
+ <footer>
+<?php tpl_includeFile('pagefooter.html') ?>
+ </footer>
+ </main>
+ </div>
+ <div id="footer-layout">
+ <footer>
+ <div id="ftPlaceholder" class="ftSection"></div>
+ <div id="ftInclude" class="ftSection">
+<?php tpl_includeFile('footer.html'); ?>
+ </div>
+ <div id="ftSiteTools" class="ftSection">
+ <h4><?php echo $lang['site_tools']; ?></h4>
+ <ul>
+ <?php echo (new \dokuwiki\Menu\SiteMenu())->getListItems('action ', false); ?>
+
+ </ul>
+ </div>
+ <div id="ftPageTools" class="ftSection">
+ <h4><?php echo $lang['page_tools']; ?></h4>
+ <ul>
+ <?php echo (new \dokuwiki\Menu\DetailMenu())->getListItems('', false); ?>
+
+ </ul>
+ </div>
+<?php include('tpl_footer.php') ?>
+ </footer>
+ </div>
+<?php my_cookiebanner("\t"); ?>
+ <div class="no"><?php tpl_indexerWebBug() /* provide DokuWiki housekeeping, required in all templates */ ?></div>
+ <div id="screen__mode" class="no"></div><?php /* helper to detect CSS media query in script.js */ ?>
+</body>
+</html> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/apple-touch-icon.png b/templates/55/ad-hominem/images/apple-touch-icon.png
new file mode 100644
index 0000000..5316c86
--- /dev/null
+++ b/templates/55/ad-hominem/images/apple-touch-icon.png
Binary files differ
diff --git a/templates/55/ad-hominem/images/button-css.png b/templates/55/ad-hominem/images/button-css.png
new file mode 100644
index 0000000..5c0f5a9
--- /dev/null
+++ b/templates/55/ad-hominem/images/button-css.png
Binary files differ
diff --git a/templates/55/ad-hominem/images/button-donate.gif b/templates/55/ad-hominem/images/button-donate.gif
new file mode 100644
index 0000000..bba284e
--- /dev/null
+++ b/templates/55/ad-hominem/images/button-donate.gif
Binary files differ
diff --git a/templates/55/ad-hominem/images/button-dw.png b/templates/55/ad-hominem/images/button-dw.png
new file mode 100644
index 0000000..8d6aea8
--- /dev/null
+++ b/templates/55/ad-hominem/images/button-dw.png
Binary files differ
diff --git a/templates/55/ad-hominem/images/button-html5.png b/templates/55/ad-hominem/images/button-html5.png
new file mode 100644
index 0000000..f7b0688
--- /dev/null
+++ b/templates/55/ad-hominem/images/button-html5.png
Binary files differ
diff --git a/templates/55/ad-hominem/images/button-php.gif b/templates/55/ad-hominem/images/button-php.gif
new file mode 100644
index 0000000..19aefb0
--- /dev/null
+++ b/templates/55/ad-hominem/images/button-php.gif
Binary files differ
diff --git a/templates/55/ad-hominem/images/button-rss.png b/templates/55/ad-hominem/images/button-rss.png
new file mode 100644
index 0000000..aa6b7fc
--- /dev/null
+++ b/templates/55/ad-hominem/images/button-rss.png
Binary files differ
diff --git a/templates/55/ad-hominem/images/cookie.svg b/templates/55/ad-hominem/images/cookie.svg
new file mode 100644
index 0000000..94a3cb5
--- /dev/null
+++ b/templates/55/ad-hominem/images/cookie.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;"><path d="M17.272,19.443c6.035,-0.582 10.759,-5.673 10.759,-11.858c-0,-1.843 -0.42,-3.588 -1.168,-5.146c1.668,-0.289 3.385,-0.439 5.137,-0.439c16.557,-0 30,13.443 30,30c0,16.557 -13.443,30 -30,30c-16.557,-0 -30,-13.443 -30,-30c0,-0.925 0.042,-1.84 0.124,-2.743c1.061,0.31 2.183,0.476 3.345,0.476c6.025,0 11.011,-4.482 11.803,-10.29Z" style="fill:#d5944b;stroke:#26251d;stroke-width:4px;"/><circle cx="17.927" cy="41.07" r="3.488" style="fill:#443017;"/><circle cx="31.33" cy="30.835" r="3.488" style="fill:#443017;"/><circle cx="32" cy="49.883" r="3.488" style="fill:#443017;"/><circle cx="43.952" cy="41.07" r="3.488" style="fill:#443017;"/><circle cx="49.092" cy="27.347" r="3.488" style="fill:#443017;"/><circle cx="38.306" cy="16.056" r="3.488" style="fill:#443017;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/delete.svg b/templates/55/ad-hominem/images/delete.svg
new file mode 100644
index 0000000..112bbb6
--- /dev/null
+++ b/templates/55/ad-hominem/images/delete.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><path d="M5.998,5.119l-3.269,-3.269l-0.733,0.733l3.269,3.269l-3.269,3.27l0.733,0.733l3.269,-3.269l3.269,3.269l0.734,-0.733l-3.269,-3.27l3.269,-3.269l-0.734,-0.733l-3.269,3.269Z" style="fill:#8d8d8d;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/edit.svg b/templates/55/ad-hominem/images/edit.svg
new file mode 100644
index 0000000..2dca1b0
--- /dev/null
+++ b/templates/55/ad-hominem/images/edit.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<svg width="100%" height="100%" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<g><path style="fill:#999" d="M0,15.967l3.553,-0.673l-2.821,-2.821l-0.732,3.494Z" /><path style="fill:#999" d="M13.062,6.49l-3.515,-3.504l-7.97,7.938c0,-0 0.769,-0.082 1.307,0.456c0.59,0.59 0.456,1.307 0.456,1.307c0,-0 0.781,-0.071 1.307,0.456c0.545,0.545 0.456,1.307 0.456,1.307l7.959,-7.96Z" /><path style="fill:#999" d="M10.945,1.556l1.304,-1.305c0.292,-0.291 0.762,-0.291 1.055,0.001l2.471,2.471c0.292,0.292 0.292,0.763 0,1.054l-1.304,1.305l-3.526,-3.526Z" /></g></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/browse-folder.svg b/templates/55/ad-hominem/images/editor/browse-folder.svg
new file mode 100644
index 0000000..06385d4
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/browse-folder.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;"><path d="M8.333,24.434l0,53.066c0,3.219 2.614,5.833 5.833,5.833l71.668,0c3.219,0 5.833,-2.614 5.833,-5.833l0,-46.667c0,-3.219 -2.614,-5.833 -5.833,-5.833l-37.51,-0l0,-0.566c0,-4.287 -3.48,-7.767 -7.766,-7.767l-24.458,0c-4.287,0 -7.767,3.48 -7.767,7.767Zm77.084,9.108c0,-1.265 -1.027,-2.292 -2.292,-2.292l-66.25,0c-1.265,0 -2.292,1.027 -2.292,2.292l0,41.249c0,1.265 1.027,2.292 2.292,2.292l66.25,-0c1.265,-0 2.292,-1.027 2.292,-2.292l0,-41.249Z" style="fill:#777;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/browse-link.svg b/templates/55/ad-hominem/images/editor/browse-link.svg
new file mode 100644
index 0000000..076ceab
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/browse-link.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><g><path d="M57.057,69.547l-6.851,6.851c-7.438,7.438 -19.517,7.438 -26.955,-0c-7.439,-7.439 -7.439,-19.517 -0,-26.956l7.723,-7.723c7.443,-7.395 19.488,-7.38 26.912,0.044c1.042,1.042 1.938,2.175 2.689,3.375l-5.869,5.869c-0.522,-1.355 -1.316,-2.607 -2.387,-3.678c-4.519,-4.519 -12.272,-4.109 -17.321,0.911l-5.241,5.24c-5.047,5.048 -5.469,12.823 -0.94,17.352c4.529,4.528 12.304,4.107 17.351,-0.941l1.886,-1.885c2.852,1.245 5.949,1.759 9.003,1.541Z" style="fill:#777;"/><path d="M42.9,30.45l6.852,-6.852c7.441,-7.441 19.531,-7.432 26.982,0.019c7.451,7.452 7.46,19.542 0.02,26.982l-7.725,7.725c-7.445,7.396 -19.502,7.373 -26.938,-0.064c-1.044,-1.043 -1.942,-2.178 -2.694,-3.38l5.87,-5.87c0.524,1.357 1.319,2.61 2.392,3.683c4.527,4.527 12.287,4.122 17.337,-0.899l5.242,-5.242c5.049,-5.049 5.465,-12.831 0.928,-17.367c-4.536,-4.536 -12.318,-4.12 -17.367,0.929l-1.886,1.885c-2.856,-1.248 -5.956,-1.765 -9.013,-1.549Z" style="fill:#777;"/></g></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/browse-parent.svg b/templates/55/ad-hominem/images/editor/browse-parent.svg
new file mode 100644
index 0000000..051c7fd
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/browse-parent.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><circle cx="36.049" cy="71.287" r="6.25" style="fill:#777;"/><circle cx="63.807" cy="71.287" r="6.25" style="fill:#777;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/close.svg b/templates/55/ad-hominem/images/editor/close.svg
new file mode 100644
index 0000000..773d01c
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/close.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M50.002,37.835l-24.496,-24.495l-12.166,12.166l24.495,24.496l-24.495,24.492l12.166,12.166l24.496,-24.491l24.492,24.491l12.166,-12.166l-24.495,-24.492l24.495,-24.496l-12.166,-12.166l-24.492,24.495Z" style="fill:#666;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/default.svg b/templates/55/ad-hominem/images/editor/default.svg
new file mode 100644
index 0000000..e547d3c
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/default.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M22,13.5C22,15.26 20.7,16.72 19,16.96V20A2,2 0 0,1 17,22H13.2V21.7A2.7,2.7 0 0,0 10.5,19C9,19 7.8,20.21 7.8,21.7V22H4A2,2 0 0,1 2,20V16.2H2.3C3.79,16.2 5,15 5,13.5C5,12 3.79,10.8 2.3,10.8H2V7A2,2 0 0,1 4,5H7.04C7.28,3.3 8.74,2 10.5,2C12.26,2 13.72,3.3 13.96,5H17A2,2 0 0,1 19,7V10.04C20.7,10.28 22,11.74 22,13.5M17,15H18.5A1.5,1.5 0 0,0 20,13.5A1.5,1.5 0 0,0 18.5,12H17V7H12V5.5A1.5,1.5 0 0,0 10.5,4A1.5,1.5 0 0,0 9,5.5V7H4V9.12C5.76,9.8 7,11.5 7,13.5C7,15.5 5.75,17.2 4,17.88V20H6.12C6.8,18.25 8.5,17 10.5,17C12.5,17 14.2,18.25 14.88,20H17V15Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/edit-cancel.svg b/templates/55/ad-hominem/images/editor/edit-cancel.svg
new file mode 100644
index 0000000..3327c05
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/edit-cancel.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z" /></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/edit-preview.svg b/templates/55/ad-hominem/images/editor/edit-preview.svg
new file mode 100644
index 0000000..6728c9b
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/edit-preview.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C15.76,17.5 19.17,15.36 20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12Z" /></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/edit-save.svg b/templates/55/ad-hominem/images/editor/edit-save.svg
new file mode 100644
index 0000000..8c981f9
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/edit-save.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2,4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z" /></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/format-bold.svg b/templates/55/ad-hominem/images/editor/format-bold.svg
new file mode 100644
index 0000000..67fcf2a
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/format-bold.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M72.1,54.841c-0,3.712 -0.406,7.05 -1.217,10.014c-0.811,2.964 -1.981,5.49 -3.509,7.581c-1.529,2.09 -3.408,3.696 -5.639,4.819c-2.23,1.123 -4.765,1.685 -7.604,1.685c-1.404,-0 -2.714,-0.133 -3.931,-0.398c-1.216,-0.265 -2.378,-0.694 -3.486,-1.287c-1.107,-0.592 -2.199,-1.341 -3.275,-2.246c-1.077,-0.905 -2.176,-1.996 -3.299,-3.275l-0,4.539c-0,0.343 -0.086,0.631 -0.258,0.865c-0.171,0.234 -0.452,0.429 -0.842,0.585c-0.39,0.156 -0.912,0.265 -1.567,0.328c-0.656,0.062 -1.451,0.093 -2.387,0.093c-0.967,0 -1.77,-0.031 -2.41,-0.093c-0.639,-0.063 -1.154,-0.172 -1.544,-0.328c-0.39,-0.156 -0.663,-0.351 -0.819,-0.585c-0.156,-0.234 -0.234,-0.522 -0.234,-0.865l0,-61.534c0,-0.312 0.094,-0.593 0.281,-0.842c0.187,-0.25 0.507,-0.46 0.959,-0.632c0.453,-0.172 1.053,-0.304 1.802,-0.398c0.748,-0.093 1.7,-0.14 2.854,-0.14c1.154,-0 2.106,0.047 2.855,0.14c0.748,0.094 1.349,0.226 1.801,0.398c0.452,0.172 0.772,0.382 0.959,0.632c0.188,0.249 0.281,0.53 0.281,0.842l0,23.069c1.061,-1.06 2.121,-1.965 3.182,-2.714c1.061,-0.749 2.121,-1.365 3.182,-1.848c1.061,-0.484 2.153,-0.835 3.276,-1.053c1.123,-0.218 2.308,-0.328 3.556,-0.328c3.088,0 5.709,0.617 7.861,1.849c2.153,1.232 3.908,2.893 5.265,4.983c1.357,2.09 2.347,4.531 2.971,7.324c0.624,2.792 0.936,5.732 0.936,8.82Zm-12.213,0.842c-0,-1.778 -0.133,-3.494 -0.398,-5.147c-0.265,-1.653 -0.725,-3.119 -1.38,-4.399c-0.656,-1.279 -1.506,-2.3 -2.551,-3.064c-1.045,-0.765 -2.363,-1.147 -3.954,-1.147c-0.78,0 -1.544,0.109 -2.293,0.328c-0.748,0.218 -1.52,0.592 -2.316,1.123c-0.795,0.53 -1.614,1.216 -2.457,2.059c-0.842,0.842 -1.731,1.887 -2.667,3.135l0,13.851c1.654,2.121 3.237,3.735 4.75,4.843c1.513,1.107 3.096,1.661 4.749,1.661c1.529,-0 2.823,-0.39 3.884,-1.17c1.061,-0.78 1.942,-1.794 2.644,-3.041c0.702,-1.248 1.209,-2.668 1.521,-4.259c0.312,-1.591 0.468,-3.182 0.468,-4.773Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/format-header-decrease.svg b/templates/55/ad-hominem/images/editor/format-header-decrease.svg
new file mode 100644
index 0000000..0a5fa35
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/format-header-decrease.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M87.522,19.851l-0.623,2.673c-0.757,0.049 -1.709,0.171 -2.856,0.366c-1.148,0.196 -2.014,0.379 -2.6,0.55c-1.001,0.317 -1.74,0.811 -2.216,1.483c-0.476,0.671 -0.812,1.422 -1.007,2.254l-8.371,36.368c-0.097,0.411 -0.177,0.8 -0.238,1.167c-0.061,0.366 -0.092,0.646 -0.092,0.842c0,1.098 0.47,1.91 1.41,2.435c0.94,0.525 2.692,0.91 5.256,1.154l-0.623,2.673l-28.111,-0l0.623,-2.673c0.635,-0.049 1.538,-0.122 2.71,-0.22c1.172,-0.098 2.014,-0.244 2.527,-0.44c0.952,-0.341 1.684,-0.83 2.197,-1.464c0.513,-0.635 0.867,-1.392 1.062,-2.271l4.189,-18.201l-21.82,0l-3.928,16.995c-0.098,0.413 -0.177,0.803 -0.239,1.17c-0.061,0.366 -0.091,0.646 -0.091,0.842c-0,1.098 0.452,1.904 1.355,2.417c0.903,0.512 2.624,0.903 5.163,1.172l-0.622,2.673l-28.099,-0l0.623,-2.673c0.61,-0.025 1.52,-0.104 2.728,-0.238c1.209,-0.135 2.106,-0.299 2.692,-0.495c0.952,-0.317 1.678,-0.805 2.179,-1.465c0.5,-0.659 0.848,-1.416 1.043,-2.27l8.399,-36.328c0.122,-0.513 0.207,-0.94 0.256,-1.282c0.049,-0.342 0.074,-0.598 0.074,-0.769c-0,-1.025 -0.519,-1.825 -1.557,-2.399c-1.038,-0.573 -2.728,-1.031 -5.072,-1.373l0.622,-2.673l28.106,-0l-0.623,2.673c-0.756,0.049 -1.678,0.171 -2.765,0.366c-1.086,0.196 -1.934,0.379 -2.545,0.55c-1.025,0.317 -1.77,0.824 -2.234,1.519c-0.463,0.696 -0.793,1.437 -0.988,2.223l-3.648,15.777l21.817,-0l3.363,-14.612c0.122,-0.513 0.207,-0.94 0.256,-1.282c0.049,-0.342 0.074,-0.598 0.074,-0.769c-0,-1.025 -0.501,-1.813 -1.502,-2.362c-1.001,-0.549 -2.661,-1.019 -4.981,-1.41l0.623,-2.673l28.104,-0Z" style="fill:#333;"/><path d="M97.931,60.053c0,0.131 -0.012,0.31 -0.036,0.538c-0.025,0.227 -0.062,0.48 -0.11,0.756c-0.049,0.277 -0.118,0.554 -0.208,0.831c-0.089,0.276 -0.199,0.528 -0.329,0.756c-0.131,0.228 -0.281,0.415 -0.452,0.562c-0.171,0.146 -0.37,0.22 -0.598,0.22l-19.922,-0c-0.261,-0 -0.456,-0.086 -0.586,-0.257c-0.13,-0.171 -0.195,-0.435 -0.195,-0.793c-0,-0.13 0.012,-0.314 0.036,-0.55c0.025,-0.236 0.065,-0.492 0.122,-0.769c0.057,-0.276 0.131,-0.553 0.22,-0.83c0.09,-0.276 0.199,-0.529 0.33,-0.756c0.13,-0.228 0.28,-0.416 0.451,-0.562c0.171,-0.146 0.362,-0.22 0.574,-0.22l19.922,0c0.26,0 0.456,0.09 0.586,0.269c0.13,0.179 0.195,0.447 0.195,0.805Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/format-header-equal.svg b/templates/55/ad-hominem/images/editor/format-header-equal.svg
new file mode 100644
index 0000000..714e771
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/format-header-equal.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M87.522,19.851l-0.623,2.673c-0.757,0.049 -1.709,0.171 -2.856,0.366c-1.148,0.196 -2.014,0.379 -2.6,0.55c-1.001,0.317 -1.74,0.811 -2.216,1.483c-0.476,0.671 -0.812,1.422 -1.007,2.254l-8.371,36.368c-0.097,0.411 -0.177,0.8 -0.238,1.167c-0.061,0.366 -0.092,0.646 -0.092,0.842c0,1.098 0.47,1.91 1.41,2.435c0.94,0.525 2.692,0.91 5.256,1.154l-0.623,2.673l-28.111,-0l0.623,-2.673c0.635,-0.049 1.538,-0.122 2.71,-0.22c1.172,-0.098 2.014,-0.244 2.527,-0.44c0.952,-0.341 1.684,-0.83 2.197,-1.464c0.513,-0.635 0.867,-1.392 1.062,-2.271l4.189,-18.201l-21.82,0l-3.928,16.995c-0.098,0.413 -0.177,0.803 -0.239,1.17c-0.061,0.366 -0.091,0.646 -0.091,0.842c-0,1.098 0.452,1.904 1.355,2.417c0.903,0.512 2.624,0.903 5.163,1.172l-0.622,2.673l-28.099,-0l0.623,-2.673c0.61,-0.025 1.52,-0.104 2.728,-0.238c1.209,-0.135 2.106,-0.299 2.692,-0.495c0.952,-0.317 1.678,-0.805 2.179,-1.465c0.5,-0.659 0.848,-1.416 1.043,-2.27l8.399,-36.328c0.122,-0.513 0.207,-0.94 0.256,-1.282c0.049,-0.342 0.074,-0.598 0.074,-0.769c-0,-1.025 -0.519,-1.825 -1.557,-2.399c-1.038,-0.573 -2.728,-1.031 -5.072,-1.373l0.622,-2.673l28.106,-0l-0.623,2.673c-0.756,0.049 -1.678,0.171 -2.765,0.366c-1.086,0.196 -1.934,0.379 -2.545,0.55c-1.025,0.317 -1.77,0.824 -2.234,1.519c-0.463,0.696 -0.793,1.437 -0.988,2.223l-3.648,15.777l21.817,-0l3.363,-14.612c0.122,-0.513 0.207,-0.94 0.256,-1.282c0.049,-0.342 0.074,-0.598 0.074,-0.769c-0,-1.025 -0.501,-1.813 -1.502,-2.362c-1.001,-0.549 -2.661,-1.019 -4.981,-1.41l0.623,-2.673l28.104,-0Z" style="fill:#333;"/><path d="M98.906,64.579c-0,1.172 -0.105,1.984 -0.315,2.438c-0.21,0.454 -0.452,0.681 -0.726,0.681l-20.714,-0c-0.274,-0 -0.511,-0.227 -0.712,-0.681c-0.201,-0.454 -0.301,-1.266 -0.301,-2.438c-0,-1.054 0.091,-1.83 0.274,-2.327c0.182,-0.498 0.429,-0.747 0.739,-0.747l20.714,0c0.328,0 0.584,0.249 0.767,0.747c0.182,0.497 0.274,1.273 0.274,2.327Zm-0,12.918c-0,1.171 -0.105,1.976 -0.315,2.416c-0.21,0.439 -0.452,0.658 -0.726,0.658l-20.714,0c-0.274,0 -0.511,-0.219 -0.712,-0.658c-0.201,-0.44 -0.301,-1.245 -0.301,-2.416c-0,-1.083 0.091,-1.874 0.274,-2.372c0.182,-0.497 0.429,-0.746 0.739,-0.746l20.714,-0c0.328,-0 0.584,0.249 0.767,0.746c0.182,0.498 0.274,1.289 0.274,2.372Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/format-header-increase.svg b/templates/55/ad-hominem/images/editor/format-header-increase.svg
new file mode 100644
index 0000000..f4277a7
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/format-header-increase.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M87.522,19.851l-0.623,2.673c-0.757,0.049 -1.709,0.171 -2.856,0.366c-1.148,0.196 -2.014,0.379 -2.6,0.55c-1.001,0.317 -1.74,0.811 -2.216,1.483c-0.476,0.671 -0.812,1.422 -1.007,2.254l-8.371,36.368c-0.097,0.411 -0.177,0.8 -0.238,1.167c-0.061,0.366 -0.092,0.646 -0.092,0.842c0,1.098 0.47,1.91 1.41,2.435c0.94,0.525 2.692,0.91 5.256,1.154l-0.623,2.673l-28.111,-0l0.623,-2.673c0.635,-0.049 1.538,-0.122 2.71,-0.22c1.172,-0.098 2.014,-0.244 2.527,-0.44c0.952,-0.341 1.684,-0.83 2.197,-1.464c0.513,-0.635 0.867,-1.392 1.062,-2.271l4.189,-18.201l-21.82,0l-3.928,16.995c-0.098,0.413 -0.177,0.803 -0.239,1.17c-0.061,0.366 -0.091,0.646 -0.091,0.842c-0,1.098 0.452,1.904 1.355,2.417c0.903,0.512 2.624,0.903 5.163,1.172l-0.622,2.673l-28.099,-0l0.623,-2.673c0.61,-0.025 1.52,-0.104 2.728,-0.238c1.209,-0.135 2.106,-0.299 2.692,-0.495c0.952,-0.317 1.678,-0.805 2.179,-1.465c0.5,-0.659 0.848,-1.416 1.043,-2.27l8.399,-36.328c0.122,-0.513 0.207,-0.94 0.256,-1.282c0.049,-0.342 0.074,-0.598 0.074,-0.769c-0,-1.025 -0.519,-1.825 -1.557,-2.399c-1.038,-0.573 -2.728,-1.031 -5.072,-1.373l0.622,-2.673l28.106,-0l-0.623,2.673c-0.756,0.049 -1.678,0.171 -2.765,0.366c-1.086,0.196 -1.934,0.379 -2.545,0.55c-1.025,0.317 -1.77,0.824 -2.234,1.519c-0.463,0.696 -0.793,1.437 -0.988,2.223l-3.648,15.777l21.817,-0l3.363,-14.612c0.122,-0.513 0.207,-0.94 0.256,-1.282c0.049,-0.342 0.074,-0.598 0.074,-0.769c-0,-1.025 -0.501,-1.813 -1.502,-2.362c-1.001,-0.549 -2.661,-1.019 -4.981,-1.41l0.623,-2.673l28.104,-0Z" style="fill:#333;"/><path d="M23.819,28.58c-0,0.114 -0.013,0.285 -0.037,0.512c-0.024,0.228 -0.065,0.489 -0.122,0.782c-0.057,0.293 -0.13,0.586 -0.22,0.879c-0.089,0.293 -0.195,0.561 -0.317,0.805c-0.122,0.244 -0.269,0.444 -0.44,0.598c-0.171,0.155 -0.354,0.232 -0.549,0.232l-7.593,0l-1.684,8.277c-0.033,0.163 -0.102,0.305 -0.208,0.427c-0.106,0.122 -0.264,0.228 -0.476,0.317c-0.212,0.09 -0.484,0.159 -0.818,0.208c-0.333,0.049 -0.744,0.073 -1.233,0.073c-0.488,0 -0.891,-0.024 -1.208,-0.073c-0.318,-0.049 -0.566,-0.118 -0.745,-0.208c-0.179,-0.089 -0.301,-0.195 -0.366,-0.317c-0.065,-0.122 -0.081,-0.264 -0.049,-0.427l1.685,-8.277l-7.569,0c-0.228,0 -0.407,-0.089 -0.537,-0.268c-0.13,-0.179 -0.195,-0.48 -0.195,-0.903c-0,-0.114 0.012,-0.285 0.037,-0.513c0.024,-0.228 0.061,-0.48 0.109,-0.757c0.049,-0.277 0.118,-0.553 0.208,-0.83c0.089,-0.277 0.195,-0.533 0.317,-0.769c0.122,-0.236 0.261,-0.427 0.415,-0.574c0.155,-0.146 0.33,-0.22 0.525,-0.22l7.642,0l1.66,-8.252c0.033,-0.162 0.106,-0.313 0.22,-0.451c0.114,-0.139 0.276,-0.252 0.488,-0.342c0.212,-0.09 0.488,-0.159 0.83,-0.208c0.342,-0.048 0.749,-0.073 1.221,-0.073c0.504,0 0.911,0.025 1.221,0.073c0.309,0.049 0.553,0.118 0.732,0.208c0.179,0.09 0.297,0.203 0.354,0.342c0.057,0.138 0.069,0.289 0.037,0.451l-1.661,8.252l7.642,0c0.228,0 0.399,0.082 0.513,0.245c0.114,0.162 0.171,0.423 0.171,0.781Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/format-header-menu.svg b/templates/55/ad-hominem/images/editor/format-header-menu.svg
new file mode 100644
index 0000000..faa202b
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/format-header-menu.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M87.522,19.851l-0.623,2.673c-0.757,0.049 -1.709,0.171 -2.856,0.366c-1.148,0.196 -2.014,0.379 -2.6,0.55c-1.001,0.317 -1.74,0.811 -2.216,1.483c-0.476,0.671 -0.812,1.422 -1.007,2.254l-8.371,36.368c-0.097,0.411 -0.177,0.8 -0.238,1.167c-0.061,0.366 -0.092,0.646 -0.092,0.842c0,1.098 0.47,1.91 1.41,2.435c0.94,0.525 2.692,0.91 5.256,1.154l-0.623,2.673l-28.111,-0l0.623,-2.673c0.635,-0.049 1.538,-0.122 2.71,-0.22c1.172,-0.098 2.014,-0.244 2.527,-0.44c0.952,-0.341 1.684,-0.83 2.197,-1.464c0.513,-0.635 0.867,-1.392 1.062,-2.271l4.189,-18.201l-21.82,0l-3.928,16.995c-0.098,0.413 -0.177,0.803 -0.239,1.17c-0.061,0.366 -0.091,0.646 -0.091,0.842c-0,1.098 0.452,1.904 1.355,2.417c0.903,0.512 2.624,0.903 5.163,1.172l-0.622,2.673l-28.099,-0l0.623,-2.673c0.61,-0.025 1.52,-0.104 2.728,-0.238c1.209,-0.135 2.106,-0.299 2.692,-0.495c0.952,-0.317 1.678,-0.805 2.179,-1.465c0.5,-0.659 0.848,-1.416 1.043,-2.27l8.399,-36.328c0.122,-0.513 0.207,-0.94 0.256,-1.282c0.049,-0.342 0.074,-0.598 0.074,-0.769c-0,-1.025 -0.519,-1.825 -1.557,-2.399c-1.038,-0.573 -2.728,-1.031 -5.072,-1.373l0.622,-2.673l28.106,-0l-0.623,2.673c-0.756,0.049 -1.678,0.171 -2.765,0.366c-1.086,0.196 -1.934,0.379 -2.545,0.55c-1.025,0.317 -1.77,0.824 -2.234,1.519c-0.463,0.696 -0.793,1.437 -0.988,2.223l-3.648,15.777l21.817,-0l3.363,-14.612c0.122,-0.513 0.207,-0.94 0.256,-1.282c0.049,-0.342 0.074,-0.598 0.074,-0.769c-0,-1.025 -0.501,-1.813 -1.502,-2.362c-1.001,-0.549 -2.661,-1.019 -4.981,-1.41l0.623,-2.673l28.104,-0Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/format-italic.svg b/templates/55/ad-hominem/images/editor/format-italic.svg
new file mode 100644
index 0000000..4def62e
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/format-italic.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M59.821,23.445c-0.156,0.873 -0.367,1.606 -0.632,2.199c-0.265,0.593 -0.616,1.068 -1.053,1.427c-0.437,0.359 -0.983,0.616 -1.638,0.772c-0.655,0.156 -1.45,0.234 -2.386,0.234c-0.905,0 -1.653,-0.078 -2.246,-0.234c-0.593,-0.156 -1.03,-0.413 -1.31,-0.772c-0.281,-0.359 -0.437,-0.834 -0.468,-1.427c-0.032,-0.593 0.031,-1.326 0.187,-2.199c0.187,-0.874 0.421,-1.599 0.702,-2.176c0.28,-0.577 0.631,-1.061 1.053,-1.451c0.421,-0.39 0.959,-0.655 1.614,-0.795c0.655,-0.141 1.451,-0.211 2.386,-0.211c0.905,0 1.646,0.07 2.223,0.211c0.577,0.14 1.014,0.405 1.31,0.795c0.297,0.39 0.46,0.874 0.492,1.451c0.031,0.577 -0.047,1.302 -0.234,2.176Zm-12.12,56.292c-0.062,0.25 -0.171,0.46 -0.327,0.632c-0.156,0.172 -0.39,0.32 -0.702,0.445c-0.312,0.124 -0.726,0.218 -1.24,0.28c-0.515,0.063 -1.147,0.094 -1.895,0.094c-0.78,-0 -1.412,-0.031 -1.896,-0.094c-0.483,-0.062 -0.857,-0.156 -1.123,-0.28c-0.265,-0.125 -0.436,-0.273 -0.514,-0.445c-0.078,-0.172 -0.086,-0.382 -0.024,-0.632l8.376,-42.114c0.031,-0.218 0.125,-0.421 0.281,-0.608c0.156,-0.187 0.39,-0.343 0.702,-0.468c0.312,-0.125 0.725,-0.219 1.24,-0.281c0.515,-0.062 1.162,-0.094 1.942,-0.094c0.749,0 1.365,0.032 1.848,0.094c0.484,0.062 0.858,0.156 1.123,0.281c0.265,0.125 0.437,0.281 0.515,0.468c0.078,0.187 0.101,0.39 0.07,0.608l-8.376,42.114Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/format-list-bulleted.svg b/templates/55/ad-hominem/images/editor/format-list-bulleted.svg
new file mode 100644
index 0000000..de1312d
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/format-list-bulleted.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><circle cx="16.525" cy="50" r="5.208" style="fill:#333;"/><circle cx="16.525" cy="24.781" r="5.208" style="fill:#333;"/><circle cx="16.525" cy="75.089" r="5.208" style="fill:#333;"/><path d="M83.36,45.833c2.288,0.015 4.14,1.876 4.14,4.167c0,2.3 -1.867,4.167 -4.167,4.167l-50.082,-0c-2.299,-0 -4.166,-1.867 -4.166,-4.167c-0,-2.3 1.867,-4.167 4.166,-4.167l50.082,0l0.027,0Z" style="fill:#333;"/><path d="M83.36,70.922c2.288,0.015 4.14,1.876 4.14,4.167c0,2.3 -1.867,4.167 -4.167,4.167l-50.082,-0c-2.299,-0 -4.166,-1.867 -4.166,-4.167c-0,-2.3 1.867,-4.167 4.166,-4.167l50.082,0l0.027,0Z" style="fill:#333;"/><path d="M83.36,20.615c2.288,0.014 4.14,1.876 4.14,4.166c0,2.3 -1.867,4.167 -4.167,4.167l-50.082,-0c-2.299,-0 -4.166,-1.867 -4.166,-4.167c-0,-2.299 1.867,-4.166 4.166,-4.166l50.082,-0l0.027,-0Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/format-list-numbered.svg b/templates/55/ad-hominem/images/editor/format-list-numbered.svg
new file mode 100644
index 0000000..4ac404f
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/format-list-numbered.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M83.36,45.833c2.288,0.015 4.14,1.876 4.14,4.167c0,2.3 -1.867,4.167 -4.167,4.167l-50.082,-0c-2.299,-0 -4.166,-1.867 -4.166,-4.167c-0,-2.3 1.867,-4.167 4.166,-4.167l50.082,0l0.027,0Z" style="fill:#333;"/><path d="M83.36,70.922c2.288,0.015 4.14,1.876 4.14,4.167c0,2.3 -1.867,4.167 -4.167,4.167l-50.082,-0c-2.299,-0 -4.166,-1.867 -4.166,-4.167c-0,-2.3 1.867,-4.167 4.166,-4.167l50.082,0l0.027,0Z" style="fill:#333;"/><path d="M83.36,20.615c2.288,0.014 4.14,1.876 4.14,4.166c0,2.3 -1.867,4.167 -4.167,4.167l-50.082,-0c-2.299,-0 -4.166,-1.867 -4.166,-4.167c-0,-2.299 1.867,-4.166 4.166,-4.166l50.082,-0l0.027,-0Z" style="fill:#333;"/><path d="M8.42,23.506l0.659,-3.125c3.019,-1.319 5.355,-2.853 7.007,-4.602l2.136,-0l-3.772,18.005l-3.528,-0l2.6,-12.402c-0.732,0.472 -1.576,0.903 -2.533,1.294c-0.956,0.39 -1.812,0.667 -2.569,0.83Z" style="fill:#333;"/><path d="M21.164,30.403l3.467,-0l-0.708,3.381l-3.467,-0l0.708,-3.381Z" style="fill:#333;"/><path d="M12.784,46.667l-3.43,-0.512c0.276,-1.66 0.921,-2.932 1.935,-3.815c1.013,-0.883 2.28,-1.324 3.802,-1.324c1.668,-0 2.979,0.451 3.931,1.355c0.952,0.903 1.428,2.05 1.428,3.442c-0,0.708 -0.147,1.418 -0.44,2.13c-0.293,0.712 -0.773,1.459 -1.44,2.24c-0.48,0.553 -1.265,1.337 -2.356,2.35c-1.09,1.013 -1.813,1.705 -2.167,2.075c-0.354,0.37 -0.693,0.763 -1.019,1.178l6.201,0l-0.659,3.198l-10.876,0c0.114,-0.879 0.372,-1.715 0.775,-2.508c0.403,-0.794 0.905,-1.532 1.507,-2.216c0.603,-0.683 1.705,-1.786 3.308,-3.308c1.205,-1.155 1.966,-1.908 2.283,-2.258c0.57,-0.635 0.96,-1.184 1.172,-1.648c0.212,-0.464 0.317,-0.883 0.317,-1.257c0,-0.603 -0.177,-1.091 -0.531,-1.465c-0.354,-0.375 -0.803,-0.562 -1.349,-0.562c-0.553,0 -1.037,0.21 -1.452,0.629c-0.415,0.419 -0.729,1.178 -0.94,2.276Z" style="fill:#333;"/><path d="M21.89,55.603l3.467,0l-0.708,3.381l-3.467,0l0.708,-3.381Z" style="fill:#333;"/><path d="M7.694,79.509l3.357,-0.402c0.138,0.952 0.388,1.611 0.75,1.977c0.362,0.366 0.845,0.55 1.447,0.55c0.797,-0 1.459,-0.269 1.983,-0.806c0.525,-0.537 0.788,-1.225 0.788,-2.063c-0,-0.733 -0.212,-1.312 -0.635,-1.74c-0.423,-0.427 -0.993,-0.641 -1.709,-0.641c-0.179,0 -0.366,0.017 -0.562,0.049l0.611,-2.917c0.122,0.016 0.24,0.024 0.354,0.024c0.936,0 1.648,-0.238 2.136,-0.714c0.488,-0.476 0.733,-1.121 0.733,-1.935c-0,-0.577 -0.165,-1.033 -0.495,-1.367c-0.329,-0.334 -0.763,-0.5 -1.3,-0.5c-0.504,-0 -0.956,0.185 -1.355,0.555c-0.399,0.37 -0.716,1.003 -0.952,1.898l-3.198,-0.635c0.407,-1.318 0.972,-2.331 1.696,-3.039c1.099,-1.058 2.45,-1.587 4.053,-1.587c1.644,0 2.893,0.458 3.748,1.373c0.854,0.916 1.282,2.012 1.282,3.29c-0,0.928 -0.273,1.766 -0.818,2.515c-0.546,0.748 -1.294,1.298 -2.246,1.648c0.756,0.398 1.314,0.915 1.672,1.55c0.358,0.635 0.537,1.298 0.537,1.99c0,1.318 -0.468,2.531 -1.404,3.637c-1.277,1.514 -2.925,2.271 -4.944,2.271c-1.513,-0 -2.76,-0.433 -3.741,-1.3c-0.981,-0.867 -1.577,-2.094 -1.788,-3.681Z" style="fill:#333;"/><path d="M22.134,80.803l3.467,0l-0.708,3.382l-3.467,-0l0.708,-3.382Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/format-monospace.svg b/templates/55/ad-hominem/images/editor/format-monospace.svg
new file mode 100644
index 0000000..7979056
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/format-monospace.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M29.854,28.357l0,3.977c3.338,-3.587 6.692,-5.381 10.061,-5.381c2.028,-0 3.806,0.538 5.334,1.614c1.529,1.077 2.808,2.707 3.837,4.89c1.747,-2.183 3.518,-3.813 5.311,-4.89c1.794,-1.076 3.596,-1.614 5.405,-1.614c2.839,-0 5.101,0.92 6.785,2.761c2.215,2.371 3.323,4.96 3.323,7.768l-0,27.467l3.322,0c0.936,0 1.606,0.18 2.012,0.539c0.406,0.358 0.608,0.834 0.608,1.427c0,0.561 -0.202,1.029 -0.608,1.404c-0.406,0.374 -1.076,0.561 -2.012,0.561l-7.253,0l-0,-31.024c-0,-1.997 -0.608,-3.65 -1.825,-4.96c-1.217,-1.31 -2.621,-1.966 -4.212,-1.966c-1.435,0 -2.948,0.539 -4.539,1.615c-1.591,1.076 -3.4,3.19 -5.428,6.34l0,26.064l3.276,0c0.936,0 1.607,0.18 2.012,0.539c0.406,0.358 0.608,0.834 0.608,1.427c0,0.561 -0.202,1.029 -0.608,1.404c-0.405,0.374 -1.076,0.561 -2.012,0.561l-7.253,0l-0,-30.743c-0,-2.09 -0.616,-3.814 -1.848,-5.171c-1.233,-1.357 -2.613,-2.036 -4.142,-2.036c-1.403,0 -2.792,0.453 -4.164,1.357c-1.903,1.279 -3.9,3.479 -5.99,6.598l0,26.064l3.323,0c0.935,0 1.606,0.18 2.012,0.539c0.405,0.358 0.608,0.834 0.608,1.427c-0,0.561 -0.203,1.029 -0.608,1.404c-0.406,0.374 -1.077,0.561 -2.012,0.561l-10.576,0c-0.936,0 -1.606,-0.187 -2.012,-0.561c-0.406,-0.375 -0.608,-0.843 -0.608,-1.404c-0,-0.593 0.202,-1.069 0.608,-1.427c0.406,-0.359 1.076,-0.539 2.012,-0.539l3.322,0l0,-32.615l-3.322,0c-0.936,0 -1.606,-0.187 -2.012,-0.561c-0.406,-0.375 -0.608,-0.858 -0.608,-1.451c-0,-0.561 0.202,-1.029 0.608,-1.404c0.406,-0.374 1.076,-0.561 2.012,-0.561l7.253,-0Z" style="fill:#333;fill-rule:nonzero;stroke:#333;stroke-width:1.63px;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/format-strikethrough.svg b/templates/55/ad-hominem/images/editor/format-strikethrough.svg
new file mode 100644
index 0000000..8bcb0f6
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/format-strikethrough.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M64.251,55.56c0.435,1.174 0.653,2.526 0.653,4.056c-0,2.153 -0.398,4.071 -1.193,5.756c-0.796,1.684 -1.927,3.104 -3.393,4.258c-1.466,1.154 -3.213,2.028 -5.241,2.62c-2.028,0.593 -4.258,0.889 -6.691,0.889c-1.498,0 -2.925,-0.117 -4.282,-0.351c-1.357,-0.233 -2.574,-0.53 -3.65,-0.889c-1.076,-0.358 -1.989,-0.733 -2.737,-1.123c-0.749,-0.39 -1.295,-0.741 -1.638,-1.052c-0.343,-0.312 -0.593,-0.749 -0.749,-1.311c-0.156,-0.561 -0.234,-1.326 -0.234,-2.293c0,-0.592 0.031,-1.091 0.094,-1.497c0.062,-0.406 0.14,-0.733 0.234,-0.983c0.093,-0.249 0.226,-0.429 0.398,-0.538c0.171,-0.109 0.366,-0.164 0.584,-0.164c0.344,0 0.851,0.211 1.521,0.632c0.671,0.421 1.498,0.881 2.48,1.381c0.983,0.499 2.145,0.959 3.486,1.38c1.342,0.421 2.886,0.632 4.633,0.632c1.31,-0 2.496,-0.141 3.556,-0.421c1.061,-0.281 1.981,-0.695 2.761,-1.24c0.78,-0.546 1.381,-1.241 1.802,-2.083c0.421,-0.842 0.631,-1.84 0.631,-2.995c0,-1.185 -0.304,-2.183 -0.912,-2.994c-0.457,-0.61 -1.024,-1.166 -1.701,-1.67l9.588,0Zm-25.204,-8.333c-0.815,-0.878 -1.484,-1.896 -2.009,-3.053c-0.608,-1.341 -0.912,-2.948 -0.912,-4.82c-0,-1.653 0.319,-3.236 0.959,-4.749c0.639,-1.513 1.599,-2.839 2.878,-3.978c1.279,-1.138 2.878,-2.051 4.796,-2.737c1.919,-0.686 4.157,-1.029 6.715,-1.029c1.123,-0 2.246,0.093 3.369,0.28c1.123,0.187 2.137,0.421 3.042,0.702c0.904,0.281 1.676,0.585 2.316,0.913c0.64,0.327 1.123,0.616 1.451,0.865c0.327,0.25 0.546,0.468 0.655,0.655c0.109,0.188 0.187,0.398 0.234,0.632c0.046,0.234 0.093,0.523 0.14,0.866c0.047,0.343 0.07,0.764 0.07,1.263c0,0.531 -0.023,0.991 -0.07,1.381c-0.047,0.39 -0.125,0.709 -0.234,0.959c-0.109,0.25 -0.242,0.429 -0.398,0.538c-0.156,0.109 -0.327,0.164 -0.514,0.164c-0.281,-0 -0.687,-0.172 -1.217,-0.515c-0.53,-0.343 -1.217,-0.71 -2.059,-1.099c-0.842,-0.39 -1.833,-0.757 -2.971,-1.1c-1.139,-0.343 -2.441,-0.515 -3.908,-0.515c-1.31,0 -2.464,0.148 -3.462,0.445c-0.999,0.296 -1.817,0.717 -2.457,1.263c-0.639,0.546 -1.123,1.193 -1.451,1.942c-0.327,0.749 -0.491,1.56 -0.491,2.433c0,1.217 0.312,2.239 0.936,3.065c0.624,0.827 1.435,1.552 2.433,2.176c0.998,0.624 2.137,1.186 3.416,1.685c1.137,0.444 2.293,0.9 3.467,1.368l-14.724,0Z" style="fill:#333;"/><rect x="31.243" y="48.79" width="37.426" height="5.208" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/format-underline.svg b/templates/55/ad-hominem/images/editor/format-underline.svg
new file mode 100644
index 0000000..99291d4
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/format-underline.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><rect x="27.332" y="81.153" width="58.539" height="4.36" style="fill:#333;"/><path d="M69.142,74.286l0,-7.3c-3.868,5.615 -9.124,8.423 -15.769,8.423c-2.933,-0 -5.67,-0.562 -8.212,-1.685c-2.543,-1.123 -4.43,-2.534 -5.662,-4.234c-1.233,-1.701 -2.098,-3.783 -2.597,-6.247c-0.344,-1.654 -0.515,-4.274 -0.515,-7.862l-0,-30.79l8.423,0l-0,27.562c-0,4.398 0.171,7.362 0.514,8.89c0.531,2.215 1.654,3.954 3.369,5.218c1.716,1.263 3.838,1.895 6.364,1.895c2.527,-0 4.898,-0.647 7.113,-1.942c2.215,-1.295 3.783,-3.057 4.703,-5.288c0.92,-2.23 1.38,-5.467 1.38,-9.709l0,-26.626l8.423,0l0,49.695l-7.534,-0Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/insert-emoticon.svg b/templates/55/ad-hominem/images/editor/insert-emoticon.svg
new file mode 100644
index 0000000..ee86595
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/insert-emoticon.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M83.333,50.026c0,9.203 -3.25,17.055 -9.751,23.556c-6.501,6.501 -14.353,9.751 -23.556,9.751c-9.202,0 -17.063,-3.25 -23.582,-9.751c-6.518,-6.501 -9.777,-14.353 -9.777,-23.556c-0,-9.237 3.259,-17.107 9.777,-23.608c6.519,-6.501 14.38,-9.751 23.582,-9.751c9.203,-0 17.055,3.25 23.556,9.751c6.501,6.501 9.751,14.371 9.751,23.608Zm-4.81,0c-0,-7.878 -2.78,-14.597 -8.34,-20.157c-5.56,-5.56 -12.279,-8.34 -20.157,-8.34c-7.878,0 -14.597,2.78 -20.157,8.34c-5.56,5.56 -8.34,12.279 -8.34,20.157c0,7.843 2.78,14.545 8.34,20.105c5.56,5.56 12.279,8.34 20.157,8.34c7.878,-0 14.597,-2.78 20.157,-8.34c5.56,-5.56 8.34,-12.262 8.34,-20.105Zm-37.072,-6.902c-0,1.151 -0.41,2.144 -1.229,2.981c-0.819,0.836 -1.821,1.254 -3.006,1.254c-1.151,0 -2.144,-0.418 -2.981,-1.254c-0.836,-0.837 -1.255,-1.83 -1.255,-2.981c0,-1.185 0.419,-2.187 1.255,-3.006c0.837,-0.82 1.83,-1.229 2.981,-1.229c1.185,-0 2.187,0.409 3.006,1.229c0.819,0.819 1.229,1.821 1.229,3.006Zm25.569,0c-0,1.151 -0.41,2.144 -1.229,2.981c-0.819,0.836 -1.822,1.254 -3.007,1.254c-1.15,0 -2.143,-0.418 -2.98,-1.254c-0.837,-0.837 -1.255,-1.83 -1.255,-2.981c0,-1.185 0.418,-2.187 1.255,-3.006c0.837,-0.82 1.83,-1.229 2.98,-1.229c1.185,-0 2.188,0.409 3.007,1.229c0.819,0.819 1.229,1.821 1.229,3.006Zm-32.366,17.621l3.241,-1.882c2.754,5.019 6.798,7.529 12.131,7.529c5.333,0 9.36,-2.51 12.079,-7.529l3.294,1.882c-1.743,3.312 -3.896,5.839 -6.458,7.582c-2.562,1.743 -5.534,2.614 -8.915,2.614c-3.416,0 -6.396,-0.871 -8.941,-2.614c-2.545,-1.743 -4.688,-4.27 -6.431,-7.582Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/insert-external-link.svg b/templates/55/ad-hominem/images/editor/insert-external-link.svg
new file mode 100644
index 0000000..0a5d41d
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/insert-external-link.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M74.439,18.683l-33.174,33.175l5.845,5.845l34.207,-34.207l-0,20.432l8.266,-0l0,-33.511l-33.511,-0l0,8.266l18.367,0Z" style="fill:#333;"/><path d="M50,12.5l-30,0c-4.139,0 -7.5,3.361 -7.5,7.5l-0,60c-0,4.139 3.361,7.5 7.5,7.5l60,0c4.139,0 7.5,-3.361 7.5,-7.5l0,-30l-6.25,0l0,25c0,3.449 -2.801,6.25 -6.25,6.25l-50,0c-3.449,0 -6.25,-2.801 -6.25,-6.25l-0,-50c-0,-3.449 2.801,-6.25 6.25,-6.25l25,0l0,-6.25Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/insert-hr.svg b/templates/55/ad-hominem/images/editor/insert-hr.svg
new file mode 100644
index 0000000..d6c7c3d
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/insert-hr.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><rect x="9.149" y="45.833" width="16.667" height="8.333" style="fill:#333;"/><rect x="30.383" y="45.833" width="16.667" height="8.333" style="fill:#333;"/><rect x="51.616" y="45.833" width="16.667" height="8.333" style="fill:#333;"/><rect x="72.85" y="45.833" width="16.667" height="8.333" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/insert-link.svg b/templates/55/ad-hominem/images/editor/insert-link.svg
new file mode 100644
index 0000000..e9c4d1c
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/insert-link.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><g><path d="M57.057,69.547l-6.851,6.851c-7.438,7.438 -19.517,7.438 -26.955,-0c-7.439,-7.439 -7.439,-19.517 -0,-26.956l7.723,-7.723c7.443,-7.395 19.488,-7.38 26.912,0.044c1.042,1.042 1.938,2.175 2.689,3.375l-5.869,5.869c-0.522,-1.355 -1.316,-2.607 -2.387,-3.678c-4.519,-4.519 -12.272,-4.109 -17.321,0.911l-5.241,5.24c-5.047,5.048 -5.469,12.823 -0.94,17.352c4.529,4.528 12.304,4.107 17.351,-0.941l1.886,-1.885c2.852,1.245 5.949,1.759 9.003,1.541Z" style="fill:#333;"/><path d="M42.9,30.45l6.852,-6.852c7.441,-7.441 19.531,-7.432 26.982,0.019c7.451,7.452 7.46,19.542 0.02,26.982l-7.725,7.725c-7.445,7.396 -19.502,7.373 -26.938,-0.064c-1.044,-1.043 -1.942,-2.178 -2.694,-3.38l5.87,-5.87c0.524,1.357 1.319,2.61 2.392,3.683c4.527,4.527 12.287,4.122 17.337,-0.899l5.242,-5.242c5.049,-5.049 5.465,-12.831 0.928,-17.367c-4.536,-4.536 -12.318,-4.12 -17.367,0.929l-1.886,1.885c-2.856,-1.248 -5.956,-1.765 -9.013,-1.549Z" style="fill:#333;"/></g></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/insert-media.svg b/templates/55/ad-hominem/images/editor/insert-media.svg
new file mode 100644
index 0000000..8341a28
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/insert-media.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path id="Frame" d="M87.5,20.393c0,-4.139 -3.361,-7.5 -7.5,-7.5l-60,-0c-4.139,-0 -7.5,3.361 -7.5,7.5l-0,60c-0,4.139 3.361,7.5 7.5,7.5l60,0c4.139,0 7.5,-3.361 7.5,-7.5l0,-60Zm-6.25,1.895c-0,-1.724 -1.4,-3.124 -3.124,-3.124l-56.252,0c-1.724,0 -3.124,1.4 -3.124,3.124l-0,56.231c-0,1.724 1.4,3.124 3.124,3.124l56.252,-0c1.724,-0 3.124,-1.4 3.124,-3.124l-0,-56.231Z" style="fill:#333;fill-rule:evenodd;"/><path d="M27.098,66.726l12.018,-14.591l7.627,9.259l11.116,-15.094l15.043,20.426l-45.804,0Z" style="fill:#333;"/><circle cx="44" cy="45" r="3" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/insert-signature.svg b/templates/55/ad-hominem/images/editor/insert-signature.svg
new file mode 100644
index 0000000..e8ea3cc
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/insert-signature.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;"><g id="Layer1"><path d="M37.584,60.801c9.856,-0.551 30.428,-1.801 36.89,-22.354c6.31,-20.071 -12.455,-35.504 -21.583,-3.414c-7.141,25.102 4.479,33.807 14.15,33.807c6.215,-0 9.838,-3.634 12.994,-3.634c5.806,-0 6.717,2.532 6.827,6.276" style="fill:none;stroke:#333;stroke-width:4.17px;"/><rect x="10.385" y="79.301" width="79.23" height="4.129" style="fill:#333;"/><path d="M23.297,59.764l-5.879,-5.879l-2.92,2.92l5.879,5.879l-5.879,5.878l2.92,2.92l5.879,-5.878l5.878,5.878l2.92,-2.92l-5.879,-5.878l5.879,-5.879l-2.92,-2.92l-5.878,5.879Z" style="fill:#333;"/></g></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/insert-symbol.svg b/templates/55/ad-hominem/images/editor/insert-symbol.svg
new file mode 100644
index 0000000..2ca26fd
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/insert-symbol.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M81.25,63.774l-2.808,15.787l-24.007,0l0,-2.767c1.649,-2.36 3.278,-4.733 4.887,-7.12c1.609,-2.387 2.913,-4.653 3.914,-6.796c1.135,-2.414 1.987,-4.733 2.555,-6.958c0.567,-2.224 0.851,-4.937 0.851,-8.138c0,-2.251 -0.237,-4.862 -0.71,-7.832c-0.474,-2.971 -1.265,-5.541 -2.375,-7.711c-1.515,-2.876 -3.409,-4.958 -5.682,-6.246c-2.273,-1.289 -4.885,-1.933 -7.834,-1.933c-2.95,0 -5.575,0.678 -7.875,2.035c-2.3,1.356 -4.153,3.418 -5.561,6.184c-1.109,2.143 -1.908,4.605 -2.395,7.386c-0.487,2.78 -0.73,5.486 -0.73,8.117c-0,2.984 0.297,5.69 0.892,8.118c0.595,2.428 1.447,4.781 2.555,7.06c1.055,2.251 2.4,4.584 4.035,6.998c1.636,2.415 3.211,4.693 4.725,6.836l-0,2.767l-24.129,0l-2.808,-15.787l2.808,-0c0.434,1.058 0.834,2.027 1.2,2.909c0.366,0.882 0.861,1.797 1.485,2.747c0.57,0.895 1.207,1.614 1.913,2.156c0.705,0.543 1.6,0.814 2.685,0.814l9.359,-0l-0,-1.343c-1.763,-1.98 -3.662,-4.198 -5.697,-6.653c-2.034,-2.455 -3.608,-4.591 -4.72,-6.408c-1.275,-2.062 -2.285,-4.334 -3.031,-6.816c-0.746,-2.482 -1.119,-5.134 -1.119,-7.955c-0,-3.119 0.637,-6.015 1.912,-8.687c1.275,-2.672 3.106,-5.093 5.493,-7.263c2.279,-2.062 5.066,-3.717 8.362,-4.965c3.296,-1.247 6.843,-1.871 10.641,-1.871c3.96,-0 7.575,0.63 10.844,1.892c3.268,1.261 6.056,2.936 8.361,5.025c2.306,2.116 4.09,4.537 5.351,7.263c1.262,2.726 1.892,5.595 1.892,8.606c0,2.821 -0.352,5.446 -1.058,7.874c-0.705,2.427 -1.722,4.74 -3.051,6.937c-1.357,2.198 -2.978,4.408 -4.863,6.633c-1.885,2.224 -3.75,4.354 -5.595,6.388l0,1.343l9.237,-0c1.004,-0 1.885,-0.278 2.645,-0.834c0.759,-0.556 1.41,-1.268 1.953,-2.136c0.624,-0.977 1.126,-1.913 1.505,-2.808c0.38,-0.895 0.773,-1.845 1.18,-2.848l2.808,-0Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/overlay-menu.svg b/templates/55/ad-hominem/images/editor/overlay-menu.svg
new file mode 100644
index 0000000..45b954c
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/overlay-menu.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M50,64.153l-26.364,-24.14l52.728,0l-26.364,24.14Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/editor/overlay-popup.svg b/templates/55/ad-hominem/images/editor/overlay-popup.svg
new file mode 100644
index 0000000..19795e7
--- /dev/null
+++ b/templates/55/ad-hominem/images/editor/overlay-popup.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="24px" height="24px" viewBox="0 0 417 417" version="1.1" xmlns="http://www.w3.org/2000/svg" xml:space="preserve"><path d="M116.667,294.312l-0,-34.67l34.798,0l0,34.67l-34.798,0Zm74.27,0l0,-34.67l34.792,0l0,34.67l-34.792,0Zm74.098,0l-0,-34.67l34.965,0l-0,34.67l-34.965,0Z" style="fill:#333;"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/favicon.ico b/templates/55/ad-hominem/images/favicon.ico
new file mode 100644
index 0000000..8b9616a
--- /dev/null
+++ b/templates/55/ad-hominem/images/favicon.ico
Binary files differ
diff --git a/templates/55/ad-hominem/images/home.svg b/templates/55/ad-hominem/images/home.svg
new file mode 100644
index 0000000..b7bbd1e
--- /dev/null
+++ b/templates/55/ad-hominem/images/home.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<svg width="100%" height="100%" viewBox="0 0 8 8" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<path style="fill:#2b73b7" d="M3.509,7.503l0,-2.502l-1.041,-0l0,2.502l-2.002,0l0,-5.025l3.534,-2.478l3.534,2.478l-0,5.025l-4.025,0Zm0.491,-0.51l3.003,-0l0,-4.215l-3.008,-2.142l-3.008,2.142l-0,4.215l0.991,-0l-0,-2.493l2.022,0l0,2.493Z"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/info.svg b/templates/55/ad-hominem/images/info.svg
new file mode 100644
index 0000000..3e0d4a0
--- /dev/null
+++ b/templates/55/ad-hominem/images/info.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11 7V9H13V7H11M14 17V15H13V11H10V13H11V15H10V17H14M22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12M20 12C20 7.58 16.42 4 12 4C7.58 4 4 7.58 4 12C4 16.42 7.58 20 12 20C16.42 20 20 16.42 20 12Z" style="fill:#666" /></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/search.png b/templates/55/ad-hominem/images/search.png
new file mode 100644
index 0000000..9ba0718
--- /dev/null
+++ b/templates/55/ad-hominem/images/search.png
Binary files differ
diff --git a/templates/55/ad-hominem/images/search.svg b/templates/55/ad-hominem/images/search.svg
new file mode 100644
index 0000000..1da21b4
--- /dev/null
+++ b/templates/55/ad-hominem/images/search.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg width="100%" height="100%" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg"><path style="fill:#999" d="M1.601,1.057c0.783,-0.659 1.794,-1.057 2.897,-1.057c2.483,0 4.498,2.014 4.498,4.495c0,0.991 -0.322,1.909 -0.867,2.652l3.871,3.872l-0.981,0.981l-3.873,-3.873c-0.743,0.542 -1.658,0.862 -2.648,0.862c-2.482,0 -4.498,-2.014 -4.498,-4.494c-0,-1.203 0.474,-2.297 1.245,-3.104l1.114,0.78c-0.628,0.577 -1.022,1.405 -1.022,2.324c0,1.743 1.417,3.158 3.161,3.158c1.745,-0 3.161,-1.415 3.161,-3.158c-0,-1.743 -1.416,-3.159 -3.161,-3.159c-0.818,0 -1.564,0.312 -2.126,0.822l-0.771,-1.101Z"/></svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/sitelogo.svg b/templates/55/ad-hominem/images/sitelogo.svg
new file mode 100644
index 0000000..d08234d
--- /dev/null
+++ b/templates/55/ad-hominem/images/sitelogo.svg
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="64" height="64" id="svg2" sodipodi:version="0.32" inkscape:version="0.46+devel r21627" sodipodi:docname="dokuwiki.svg" version="1.1" inkscape:output_extension="org.inkscape.output.svg.inkscape" viewBox="0 0 128 128">
+ <defs id="defs4">
+ <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" id="perspective100"/>
+ <linearGradient id="linearGradient2624">
+ <stop style="stop-color:#3a9030;stop-opacity:0.83673471;" offset="0" id="stop2626"/>
+ <stop style="stop-color:#3d9c32;stop-opacity:0.79591835;" offset="1" id="stop2628"/>
+ </linearGradient>
+ <linearGradient id="linearGradient2612">
+ <stop style="stop-color:#25901b;stop-opacity:0.83673471;" offset="0" id="stop2614"/>
+ <stop style="stop-color:#25901b;stop-opacity:0.37755102;" offset="1" id="stop2616"/>
+ </linearGradient>
+ <linearGradient id="linearGradient2600">
+ <stop style="stop-color:#e32525;stop-opacity:0.81632656;" offset="0" id="stop2602"/>
+ <stop style="stop-color:#e32525;stop-opacity:0.5714286;" offset="1" id="stop2604"/>
+ </linearGradient>
+ <marker inkscape:stockid="TriangleOutL" orient="auto" refY="0" refX="0" id="TriangleOutL" style="overflow:visible">
+ <path id="path2488" d="m 5.77,0 -8.65,5 0,-10 8.65,5 z" style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" transform="scale(0.8,0.8)"/>
+ </marker>
+ <marker inkscape:stockid="Arrow2Lstart" orient="auto" refY="0" refX="0" id="Arrow2Lstart" style="overflow:visible">
+ <path id="path2571" style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" transform="matrix(1.1,0,0,1.1,-5.5,0)"/>
+ </marker>
+ <linearGradient id="linearGradient2408">
+ <stop id="stop2410" offset="0" style="stop-color:#000000;stop-opacity:0.17346939;"/>
+ <stop id="stop2412" offset="1" style="stop-color:#c7cec2;stop-opacity:0;"/>
+ </linearGradient>
+ <linearGradient id="linearGradient2389">
+ <stop style="stop-color:#000000;stop-opacity:0.17346939;" offset="0" id="stop2391"/>
+ <stop style="stop-color:#c7cec2;stop-opacity:0;" offset="1" id="stop2393"/>
+ </linearGradient>
+ <linearGradient id="linearGradient2370">
+ <stop style="stop-color:#fbfaf9;stop-opacity:1;" offset="0" id="stop2372"/>
+ <stop style="stop-color:#e9dac7;stop-opacity:1;" offset="1" id="stop2374"/>
+ </linearGradient>
+ <linearGradient id="linearGradient2364">
+ <stop id="stop2366" offset="0" style="stop-color:#fbf6f0;stop-opacity:1;"/>
+ <stop id="stop2368" offset="1" style="stop-color:#e9dac7;stop-opacity:1;"/>
+ </linearGradient>
+ <linearGradient id="linearGradient2348">
+ <stop style="stop-color:#fbf6f0;stop-opacity:1;" offset="0" id="stop2350"/>
+ <stop style="stop-color:#e9dac7;stop-opacity:1;" offset="1" id="stop2352"/>
+ </linearGradient>
+ <linearGradient id="linearGradient2332">
+ <stop style="stop-color:#ede1ae;stop-opacity:1;" offset="0" id="stop2334"/>
+ <stop style="stop-color:#fefdfa;stop-opacity:1;" offset="1" id="stop2336"/>
+ </linearGradient>
+ <linearGradient id="linearGradient2249">
+ <stop style="stop-color:#00a423;stop-opacity:1;" offset="0" id="stop2251"/>
+ <stop style="stop-color:#00b427;stop-opacity:1;" offset="1" id="stop2253"/>
+ </linearGradient>
+ <linearGradient id="linearGradient2229">
+ <stop id="stop2231" offset="0" style="stop-color:#00b62b;stop-opacity:1;"/>
+ <stop id="stop2233" offset="1" style="stop-color:#a1d784;stop-opacity:1;"/>
+ </linearGradient>
+ <linearGradient id="linearGradient2213">
+ <stop style="stop-color:#000000;stop-opacity:1;" offset="0" id="stop2215"/>
+ <stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop2217"/>
+ </linearGradient>
+ <linearGradient id="linearGradient2360">
+ <stop style="stop-color:#d69c00;stop-opacity:1;" offset="0" id="stop2362"/>
+ <stop style="stop-color:#ffe658;stop-opacity:1;" offset="1" id="stop2364"/>
+ </linearGradient>
+ <linearGradient id="linearGradient2352">
+ <stop id="stop2354" offset="0" style="stop-color:#ce411e;stop-opacity:1;"/>
+ <stop id="stop2356" offset="1" style="stop-color:#ecad8d;stop-opacity:1;"/>
+ </linearGradient>
+ <linearGradient id="linearGradient2336">
+ <stop style="stop-color:#8f2a15;stop-opacity:1;" offset="0" id="stop2338"/>
+ <stop style="stop-color:#c8381b;stop-opacity:1;" offset="1" id="stop2340"/>
+ </linearGradient>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2336" id="linearGradient2342" x1="219.21262" y1="189.01556" x2="286.22665" y2="189.01556" gradientUnits="userSpaceOnUse"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2352" id="linearGradient2350" x1="219.66267" y1="192.73286" x2="277.8761" y2="192.73286" gradientUnits="userSpaceOnUse"/>
+ <radialGradient inkscape:collect="always" xlink:href="#linearGradient2360" id="radialGradient2366" cx="224.41418" cy="212.80016" fx="224.41418" fy="212.80016" r="8.6813803" gradientTransform="matrix(1,0,0,0.984179,0,3.366635)" gradientUnits="userSpaceOnUse"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2249" id="linearGradient2227" x1="192.03938" y1="262.25757" x2="263.67093" y2="262.25757" gradientUnits="userSpaceOnUse"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2229" id="linearGradient2247" x1="191.75092" y1="258.91571" x2="255.6561" y2="258.91571" gradientUnits="userSpaceOnUse"/>
+ <radialGradient inkscape:collect="always" xlink:href="#linearGradient2360" id="radialGradient2317" cx="257.41144" cy="274.64203" fx="257.41144" fy="274.64203" r="7.1440549" gradientTransform="matrix(1,0,0,1.631384,0,-173.4045)" gradientUnits="userSpaceOnUse"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2360" id="linearGradient2325" x1="184.07063" y1="246.35907" x2="201.40646" y2="246.35907" gradientUnits="userSpaceOnUse"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2332" id="linearGradient2346" x1="162.76369" y1="184.99277" x2="240.84924" y2="289.50323" gradientUnits="userSpaceOnUse"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2348" id="linearGradient2354" x1="140.15784" y1="303.78967" x2="136.14151" y2="195.87151" gradientUnits="userSpaceOnUse"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2370" id="linearGradient2362" x1="286.15598" y1="262.28729" x2="185.81258" y2="172.32423" gradientUnits="userSpaceOnUse"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2389" id="linearGradient2395" x1="213.96568" y1="220.07191" x2="244.79126" y2="265.40363" gradientUnits="userSpaceOnUse"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2408" id="linearGradient2406" x1="184.30582" y1="241.52789" x2="224.67441" y2="307.52844" gradientUnits="userSpaceOnUse"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2600" id="linearGradient2606" x1="202.41772" y1="222.05145" x2="206.06017" y2="210.3558" gradientUnits="userSpaceOnUse"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2612" id="linearGradient2618" x1="248.62152" y1="234.52202" x2="251.64362" y2="213.12164" gradientUnits="userSpaceOnUse"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2624" id="linearGradient2630" x1="275.71765" y1="251.56442" x2="255.68353" y2="217.94008" gradientUnits="userSpaceOnUse"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2352" id="linearGradient2640" gradientUnits="userSpaceOnUse" x1="219.66267" y1="192.73286" x2="277.8761" y2="192.73286"/>
+ <linearGradient inkscape:collect="always" xlink:href="#linearGradient2336" id="linearGradient2643" gradientUnits="userSpaceOnUse" x1="219.21262" y1="189.01556" x2="286.22665" y2="189.01556"/>
+ <radialGradient inkscape:collect="always" xlink:href="#linearGradient2360" id="radialGradient2647" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,0.984179,0,3.366635)" cx="224.41418" cy="212.80016" fx="224.41418" fy="212.80016" r="8.6813803"/>
+ </defs>
+ <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="3.734697" inkscape:cx="35.103028" inkscape:cy="81.524672" inkscape:document-units="px" inkscape:current-layer="layer3" inkscape:window-width="1206" inkscape:window-height="855" inkscape:window-x="0" inkscape:window-y="0" showguides="true" inkscape:guide-bbox="true" showgrid="false" inkscape:window-maximized="0"/>
+ <metadata id="metadata7">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g inkscape:groupmode="layer" id="layer3" inkscape:label="paper" style="display:inline" transform="translate(-158.14742,-158.45341)">
+ <g id="g1419">
+ <g id="g2376">
+ <path transform="matrix(0.989976,-0.141236,0.201069,0.979577,0,0)" style="fill:url(#linearGradient2354);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.7216621px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" d="m 120.21543,196.43769 70.90655,-0.79226 -2.40261,109.05308 -71.71761,0.37344 3.21367,-108.63426 z" id="rect1422" sodipodi:nodetypes="ccccc"/>
+ <path style="fill:url(#linearGradient2362);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" d="m 179.20033,182.08731 79.84173,-19.51687 26.61391,101.72428 -82.50312,21.58684 -23.95252,-103.79425 z" id="rect1425" sodipodi:nodetypes="ccccc"/>
+ <path transform="matrix(0.995676,-0.09289891,0.08102261,0.996712,0,0)" style="fill:url(#linearGradient2346);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00418305px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" d="m 159.01353,181.74387 85.58587,0.53396 0,110.47429 -84.53387,-2.5127 -1.052,-108.49555 z" id="rect1419" sodipodi:nodetypes="ccccc"/>
+ </g>
+ <path id="text2382" d="m 167.55116,214.00773 0,-20.1846 5.34962,0 0,2.37403 -2.48145,0 0,15.43654 2.48145,0 0,2.37403 -5.34962,0 m 7.34767,0 0,-20.1846 5.34961,0 0,2.37403 -2.48144,0 0,15.43654 2.48144,0 0,2.37403 -5.34961,0 m 7.36915,-20.1846 5.81153,0 c 1.31054,2e-5 2.30956,0.10028 2.99707,0.30078 0.92382,0.27216 1.71516,0.75555 2.37403,1.4502 0.65884,0.69468 1.16014,1.54689 1.50391,2.55664 0.34373,1.00262 0.51561,2.24155 0.51562,3.71681 -10e-6,1.29623 -0.16115,2.41342 -0.4834,3.35156 -0.39389,1.14584 -0.95607,2.07325 -1.68652,2.78223 -0.55145,0.53711 -1.29624,0.95606 -2.23438,1.25684 -0.70183,0.222 -1.63999,0.33301 -2.81446,0.33301 l -5.9834,0 0,-15.74807 m 3.17969,2.66407 0,10.43067 2.37402,0 c 0.88802,1e-5 1.52897,-0.0501 1.92286,-0.15039 0.51561,-0.1289 0.94172,-0.34732 1.27832,-0.65527 0.34374,-0.30794 0.62304,-0.81282 0.83789,-1.51465 0.21483,-0.70898 0.32226,-1.6722 0.32227,-2.88965 -1e-5,-1.21744 -0.10744,-2.15201 -0.32227,-2.80372 -0.21485,-0.65168 -0.51563,-1.16014 -0.90234,-1.52539 -0.38673,-0.36522 -0.87729,-0.61229 -1.47168,-0.74121 -0.44402,-0.10025 -1.31414,-0.15038 -2.61036,-0.15039 l -1.42871,0 m 14.96388,13.084 -3.75977,-15.74807 3.25489,0 2.37403,10.8174 2.87891,-10.8174 3.78125,0 2.76074,11.00002 2.417,-11.00002 3.20118,0 -3.82423,15.74807 -3.37305,0 -3.13672,-11.77345 -3.12598,11.77345 -3.44825,0 m 22.76272,-15.74807 0,20.1846 -5.34961,0 0,-2.37403 2.48145,0 0,-15.45803 -2.48145,0 0,-2.35254 5.34961,0 m 7.34767,0 0,20.1846 -5.34962,0 0,-2.37403 2.48145,0 0,-15.45803 -2.48145,0 0,-2.35254 5.34962,0" style="font-size:12.0000124px;font-style:normal;font-weight:normal;line-height:125%;fill:#6184a3;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans" transform="matrix(0.995433,-0.09546066,0.09546066,0.995433,0,0)"/>
+ <g id="g2632" style="display:inline">
+ <path style="fill:url(#linearGradient2606);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker-end:none" d="m 174.75585,201.60224 c -6.04576,2.46667 -10.16789,4.4194 -12.88454,6.35064 -2.71665,1.93124 -3.19257,4.60007 -3.24631,6.26587 -0.0269,0.8329 0.0809,1.77774 0.63189,2.44014 0.55103,0.6624 1.80769,1.87421 2.75794,2.38558 1.90049,1.02274 7.5417,2.42901 10.51899,3.07308 11.90917,2.57627 26.80568,1.68117 26.80568,1.68117 1.69307,1.2452 2.83283,2.82434 3.269,4.26902 4.5766,-1.88674 11.81084,-6.58439 13.15657,-8.57706 -5.45142,-4.19955 -10.79692,-6.33346 -16.51317,-8.30847 -1.59867,-0.71918 -2.87956,-1.22649 -0.71773,2.55635 0.98506,2.47275 0.85786,5.05143 0.57176,7.41825 0,0 -16.52749,0.40678 -28.23838,-2.1266 -2.92772,-0.63334 -5.46627,-0.95523 -7.21875,-1.89832 -0.87624,-0.47154 -1.48296,-0.8208 -1.91578,-1.3411 -0.43282,-0.5203 -0.2196,-1.29055 -0.20128,-1.85858 0.0366,-1.13607 0.25336,-1.67063 2.86177,-3.52492 2.60841,-1.85429 5.65407,-3.36195 11.65936,-5.81211 -0.0877,-1.29125 -0.29025,-2.5059 -1.29702,-2.99294 z" id="path2414" sodipodi:nodetypes="csssssccccccssssscc"/>
+ <path style="fill:url(#linearGradient2618);fill-opacity:1;fill-rule:evenodd;stroke:none" d="m 269.62539,220.7482 c -1.43576,-0.13963 -2.58044,0.30288 -2.56084,1.50218 0.94391,0.85652 1.34942,2.43518 1.48562,3.14008 0.1362,0.7049 0.0359,1.21914 -0.48562,1.89004 -1.043,1.3418 -3.12498,1.56875 -6.5006,2.72063 -6.75124,2.30377 -16.89306,2.52561 -27.90689,3.84639 -22.02767,2.64157 -39.03164,3.76107 -39.03164,3.76107 1.98346,-4.64758 6.32828,-4.41197 6.34903,-8.20969 0.27376,-0.89755 -3.14597,-1.31638 -5.09943,-0.10731 -4.26694,3.70137 -7.59152,6.75353 -10.69418,10.51311 l 1.88795,3.08438 c 0,0 26.13006,-2.88973 48.19776,-5.5361 11.03385,-1.32318 20.95601,-1.99856 27.80968,-4.33728 3.42683,-1.16936 5.95975,-1.49022 7.6409,-3.51958 0.63172,-0.76256 1.35238,-3.04699 1.06804,-4.73369 -0.21951,-1.30213 -1.14979,-3.09774 -2.15978,-4.01423 z" id="path2608" sodipodi:nodetypes="ccsssscccccssssc"/>
+ <path style="fill:url(#linearGradient2630);fill-opacity:1;fill-rule:evenodd;stroke:none" d="m 254.36185,220.33948 c -6.84997,3.24198 -7.15311,8.60912 -5.95953,12.79884 1.19358,4.18972 5.26293,8.75677 9.32121,12.40608 8.11656,7.29861 12.06046,9.33163 12.06046,9.33163 -3.71515,-0.10342 -7.89887,-1.41174 -8.13315,0.49304 -0.9483,2.97582 11.49137,3.47486 17.43787,2.70205 -1.39456,-7.57836 -3.79323,-13.21546 -7.73151,-14.90312 -1.68464,-0.14804 0.31242,4.72441 0.76985,9.39604 0,0 -3.62454,-1.73122 -11.60519,-8.90762 -3.99032,-3.5882 -7.37386,-7.3421 -8.47319,-11.20099 -1.09933,-3.85889 0.0776,-6.1205 4.95082,-9.53176 0.92816,-0.99528 -1.28985,-2.45913 -2.63764,-2.58419 z" id="path2620" sodipodi:nodetypes="csscccccsscc"/>
+ </g>
+ <path sodipodi:nodetypes="cccccc" id="rect2386" d="m 213.96569,234.57806 2.18756,-14.42897 15.21982,6.08793 21.49387,29.94828 -20.40591,9.21832 -18.49534,-30.82556 z" style="fill:url(#linearGradient2395);fill-opacity:1;stroke:none;display:inline"/>
+ <g id="g2649" style="display:inline">
+ <path style="fill:url(#radialGradient2647);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" d="m 232.55816,219.5295 -15.92827,0.32199 3.08809,-15.15716 12.84018,14.83517 z" id="path1443" sodipodi:nodetypes="cccc"/>
+ <path style="fill:#812310;fill-opacity:1;fill-rule:evenodd;stroke:none" d="m 221.60041,219.29315 -4.41205,0.0782 0.85429,-3.98263 3.55776,3.90445 z" id="path1452" sodipodi:nodetypes="cccc"/>
+ <path style="fill:url(#linearGradient2643);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" d="m 269.44172,159.27421 0.098,8.91471 8.0581,8.72344 7.75906,0.7992 -52.80669,41.84092 -6.66532,-3.30696 -5.08243,-5.618 -1.08987,-5.91194 49.72911,-45.44137 z" id="rect1437" sodipodi:nodetypes="ccccccccc"/>
+ <path style="fill:url(#linearGradient2640);fill-opacity:1;fill-rule:evenodd;stroke:none" d="m 268.94766,168.32844 8.3426,8.82719 -51.1007,38.68262 -4.9197,-5.4436 47.6778,-42.06621 z" id="rect1446" sodipodi:nodetypes="ccccc"/>
+ <path style="fill:#ffe965;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;display:inline" d="m 285.33776,177.73216 -8.16219,-0.86619 -7.7518,-8.67862 0.0132,-9.14293 8.36213,0.75209 7.18862,9.57682 0.35007,8.35883 z" id="path1440" sodipodi:nodetypes="ccccccc"/>
+ <path style="fill:#cb391c;fill-opacity:1;fill-rule:evenodd;stroke:none" d="m 280.72049,168.46367 0.1644,4.05654 -3.81335,-0.71676 -2.87504,-3.18901 -0.28089,-3.53393 3.85447,-0.16637 2.95041,3.54953 z" id="path1449" sodipodi:nodetypes="ccccccc"/>
+ </g>
+ <g id="g2657" style="display:inline">
+ <path style="fill:url(#linearGradient2406);fill-opacity:1;stroke:none" d="m 183.88617,256.82796 0.99991,-16.30721 17.2878,8.44012 26.05488,38.00946 -29.28095,-1.13363 -15.06164,-29.00874 z" id="rect2397" sodipodi:nodetypes="cccccc"/>
+ <path style="fill:url(#linearGradient2325);fill-opacity:1;stroke:#000000;stroke-linejoin:round;stroke-opacity:1;display:inline" d="m 200.90647,238.44836 -8.04601,15.77386 -7.05577,-13.57337 15.10178,-2.20049 z" id="rect2207" sodipodi:nodetypes="cccc"/>
+ <path style="fill:url(#linearGradient2227);fill-opacity:1;stroke:#000000;stroke-linejoin:round;stroke-opacity:1" d="m 201.05389,238.55401 62.11704,24.91912 -7.88689,3.21429 -4.35152,9.30976 1.1716,9.96396 -59.31453,-31.72759 -0.49402,-7.36382 3.09592,-5.82826 5.6624,-2.48746 z" id="rect1328" sodipodi:nodetypes="ccccccccc"/>
+ <path style="fill:url(#radialGradient2317);fill-opacity:1;stroke:#000000;stroke-linejoin:round;stroke-opacity:1;display:inline" d="m 255.27801,266.53504 7.9241,-3.04772 0.85337,10.24037 -3.9011,8.28983 -8.04601,3.77919 -1.341,-9.63083 4.51064,-9.63084 z" id="rect2204" sodipodi:nodetypes="ccccccc"/>
+ <path style="fill:url(#linearGradient2247);fill-opacity:1;stroke:none;display:inline" d="m 195.7549,241.421 59.13059,24.7962 -4.5917,9.76614 -57.48995,-29.00967 2.95106,-5.55267 z" id="rect2210" sodipodi:nodetypes="ccccc"/>
+ <path style="fill:#00b527;fill-opacity:1;stroke:none" d="m 255.02263,275.21029 2.08411,-4.1069 2.96459,-1.06995 0.69433,3.37197 -1.76759,3.85723 -3.15516,1.38315 -0.82028,-3.4355 z" id="rect2308" sodipodi:nodetypes="ccccccc"/>
+ <path style="fill:#258209;fill-opacity:1;stroke:none;display:inline" d="m 186.56849,241.00362 3.54963,-0.47312 -2.02297,3.53926 -1.52666,-3.06614 z" id="rect2327" sodipodi:nodetypes="cccc"/>
+ </g>
+ </g>
+ </g>
+</svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/images/transparency.gif b/templates/55/ad-hominem/images/transparency.gif
new file mode 100644
index 0000000..aa4510b
--- /dev/null
+++ b/templates/55/ad-hominem/images/transparency.gif
Binary files differ
diff --git a/templates/55/ad-hominem/images/user.svg b/templates/55/ad-hominem/images/user.svg
new file mode 100644
index 0000000..23b173a
--- /dev/null
+++ b/templates/55/ad-hominem/images/user.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="100%" height="100%" viewBox="0 0 6 6" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<circle style="fill:#999;stroke:none;stroke-width:0.5pt;" cx="3" cy="1.856" r="1.512"/>
+<path style="fill:#999;stroke:none;stroke-width:0.5pt;" d="M3,3.367c1.368,0 2.465,0.741 2.478,1.633c0.006,0.398 -1.11,0.674 -2.478,0.674c-1.368,-0 -2.474,-0.272 -2.478,-0.674c-0.01,-0.901 1.11,-1.633 2.478,-1.633Z"/>
+</svg> \ No newline at end of file
diff --git a/templates/55/ad-hominem/lang/de-informal/lang.php b/templates/55/ad-hominem/lang/de-informal/lang.php
new file mode 100644
index 0000000..102a794
--- /dev/null
+++ b/templates/55/ad-hominem/lang/de-informal/lang.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author MaWi <drmaxxis@gmail.com>
+ * @author F. Mueller-Donath <j.felix@mueller-donath.de>
+ * @author Sascha Leib <sascha@leib.be>
+ */
+$lang['__background_site__'] = 'Farbe für den Seitenhintergrund (hinter dem Inhaltsbereich)';
+$lang['__link__'] = 'Allgemeine Linkfarbe';
+$lang['__existing__'] = 'Farbe für Links zu existierenden Seiten';
+$lang['__missing__'] = 'Farbe für Links zu nicht-existierenden Seiten';
+$lang['__inpage__'] = 'Farbe für Links innerhalb derselben Seite';
+$lang['__site_width__'] = 'Breite der ganzen Seite (kann eine beliebige Längeneinheit sein: %, px, em, ...)';
+$lang['__sidebar_width__'] = 'Breite der Seitenleiste, falls vorhanden (kann eine beliebige Längeneinheit sein: %, px, em, ...)';
+
+$lang['__toc_width__'] = 'Breite des Inhaltsverzeichnises (kann eine beliebige Längeneinheit sein: %, px, em, ...)';
+$lang['__tablet_width__'] = 'Unter dieser Fensterbreite wechselt die Seite in den Tabletmodus';
+$lang['__phone_width__'] = 'Unter dieser Fensterbreite wechselt die Seite in den Handymodus';
+$lang['__theme_color__'] = 'Farbschema der Webapplikation';
+$lang['__focus_color__'] = 'Farbe des Fokusringes';
+
+$lang['__headlines__'] = 'Farbe der Überschriften';
+$lang['__blockquote__'] = 'Farbe der Markierung für Zitatblöcke';
+$lang['__separator__'] = 'Farbe von Linien';
+
+$lang['__default_fonts__'] = 'Schriftarten für Inhaltstext und Navigation';
+$lang['__default_font_size__'] = 'Standard-Schriftgröße';
+
+$lang['__alt_fonts__'] = 'Alternative Schriftarten (z.B. für Blockzitate)';
+$lang['__alt_font_size__'] = 'Basisgröße für alternative Schriftart (verwenden Sie rem oder % für beste Ergebnisse)';
+$lang['__headline_fonts__'] = 'Schriftarten für Überschriften';
+$lang['__mono_fonts__'] = 'Schriftarten mit fester Laufweite (z.B. für Code)';
+$lang['__math_fonts__'] = 'Mathematik-Schriftarten (z.B. für Formeln)';
+$lang['__print_default_fonts__'] = 'Standardschriftarten für Druck';
+$lang['__print_title_fonts__'] = 'Überschriften-Schriftarten für Druck';
+$lang['__print_title_color__'] = 'Überschriftenfarbe für Druck';
+
+$lang['__background_site_dark__'] = 'Seitenhintergrund (Nachtmodus)';
+$lang['__background_dark__'] = 'Hintergrund des Inhaltsbereichs (Nachtmodus)';
+$lang['__background_alt_dark__'] = 'Alternative Hintergrundfarbe (Nachtmodus)';
+$lang['__headlines_dark__'] = 'Farbe der Überschriften (Nachtmodus)';
+$lang['__text_dark__'] = 'Textfarbe (Nachtmodus)';
+$lang['__text_alt_dark__'] = 'Alternative Textfarbe (Nachtmodus)';
+$lang['__link_dark__'] = 'Farbe externe Links (Nachtmodus)';
+$lang['__existing_dark__'] = 'Farbe Links zu existierenden Artikeln (Nachtmodus)';
+$lang['__missing_dark__'] = 'Farbe Links zu fehlenden Artikeln (Nachtmodus)';
+$lang['__inpage_dark__'] = 'Farbe für Links innerhalb derselben Seite (Nachtmodus)';
+$lang['__border_dark__'] = 'Umrandungsfarbe (Nachtmodus)';
+$lang['__blockquote_dark__'] = 'Markierung von Zitatblöcken (Nachtmodus)';
+
+$lang['cookie_consent'] = 'OK';
+$lang['cookie_linktext'] = 'Mehr Info';
+
+$lang['homepage'] = 'Startseite';
+
+$lang['languages'] = 'Verfügbare Sprachen';
diff --git a/templates/55/ad-hominem/lang/de-informal/settings.php b/templates/55/ad-hominem/lang/de-informal/settings.php
new file mode 100644
index 0000000..4532046
--- /dev/null
+++ b/templates/55/ad-hominem/lang/de-informal/settings.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * German language file for the Ad Hominem template settings
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ */
+
+$lang['darkmode'] = 'Benutzerseitigen Nachtmodus zulassen';
+ $lang['darkmode_o_allow'] = 'Zulassen';
+ $lang['darkmode_o_disable'] = 'Deaktivieren';
+
+$lang['navtrail'] = 'Aktuelle Seite in hierarchischen Breadcrumbs anzeigen';
+ $lang['navtrail_o_none'] = 'Nicht anzeigen';
+ $lang['navtrail_o_text'] = 'Als Text anzeigen';
+ $lang['navtrail_o_link'] = 'Als Link anzeigen';
+
+$lang['cookiepos'] = 'Cookie-Banner auf der Seite anzeigen';
+ $lang['cookiepos_o_hide'] = 'Kein Cookie-Banner anzeigen';
+ $lang['cookiepos_o_top'] = 'Oben auf der Seite anzeigen';
+ $lang['cookiepos_o_bottom'] = 'Unten auf der Seite anzeigen';
+
+$lang['cookiemsg'] = 'Die Nachricht, die auf dem Banner angezeigt werden soll (kann HTML enthalten)';
+$lang['cookielink'] = 'Link zu weiteren Informationen (interner oder externer Link)';
+$lang['homelink'] = 'Link zu übergeordneter Homepage (leer für Standardverhalten)';
+
+$lang['printstyle'] = 'Druckstil-Variante';
+ $lang['printstyle_o_basic'] = 'Einfach';
+ $lang['printstyle_o_compact'] = 'Kompakt';
+
+$lang['langmenu'] = 'Zeige das Sprachen-Menü <small>(benötigt das <a href="https://www.dokuwiki.org/plugin:translation" target="_blank" hreflang="en">Translation-Plugin</a>)</small>';
+ $lang['langmenu_o_tb'] = 'Als Menü in der Werkzeugleiste';
+ $lang['langmenu_o_sb'] = 'Als Liste in der Seitenleiste';
diff --git a/templates/55/ad-hominem/lang/de-informal/style.txt b/templates/55/ad-hominem/lang/de-informal/style.txt
new file mode 100644
index 0000000..7f75bca
--- /dev/null
+++ b/templates/55/ad-hominem/lang/de-informal/style.txt
@@ -0,0 +1 @@
+Benutze einfach den Medien-Manager, um ein ''logo.png'' in den ''wiki''- oder obersten Namensraum hochzuladen, wenn du das Logo anpassen willst. Es wird dann automatisch als Logo verwendet. Alternativ kannst du dort auch ein ''favicon.ico'' hochladen. Falls du ein geschlossenes Wiki betreibst, ist es empfehlenswert, den ''wiki''- (oder Wurzel-)Namensraum für alle Nutzer in den ACL-Einstellungen als lesbar zu öffnen. Ansonsten wird das Logo nur für eingeloggte Nutzer angezeigt.
diff --git a/templates/55/ad-hominem/lang/de/lang.php b/templates/55/ad-hominem/lang/de/lang.php
new file mode 100644
index 0000000..6856fc7
--- /dev/null
+++ b/templates/55/ad-hominem/lang/de/lang.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Jürgen Fredriksson <jfriedrich@gmx.at>
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Sascha Leib <sascha@leib.be>
+ */
+$lang['__background_site__'] = 'Farbe für den Seitenhintergrund (hinter dem Inhaltsbereich)';
+$lang['__link__'] = 'Allgemeine Linkfarbe';
+$lang['__existing__'] = 'Farbe für Links zu existierenden Seiten';
+$lang['__missing__'] = 'Farbe für Links zu nicht-existierenden Seiten';
+$lang['__inpage__'] = 'Farbe für Links innerhalb derselben Seite';
+$lang['__site_width__'] = 'Breite der ganzen Seite (kann eine beliebige Längeneinheit sein: %, px, em, ...)';
+$lang['__sidebar_width__'] = 'Breite der Seitenleiste, falls vorhanden (kann eine beliebige Längeneinheit sein: %, px, em, ...)';
+
+$lang['__toc_width__'] = 'Breite des Inhaltsverzeichnises (kann eine beliebige Längeneinheit sein: %, px, em, ...)';
+$lang['__tablet_width__'] = 'Unter dieser Fensterbreite wechselt die Seite in den Tabletmodus';
+$lang['__phone_width__'] = 'Unter dieser Fensterbreite wechselt die Seite in den Handymodus';
+$lang['__theme_color__'] = 'Farbschema der Webapplikation';
+$lang['__focus_color__'] = 'Farbe des Fokusringes';
+
+$lang['__headlines__'] = 'Farbe der Überschriften';
+$lang['__blockquote__'] = 'Farbe der Markierung für Zitatblöcke';
+$lang['__separator__'] = 'Farbe von Linien';
+
+$lang['__default_fonts__'] = 'Schriftarten für Inhaltstext und Navigation';
+$lang['__default_font_size__'] = 'Standard-Schriftgröße';
+
+$lang['__alt_fonts__'] = 'Alternative Schriftarten (z.B. für Blockzitate)';
+$lang['__alt_font_size__'] = 'Basisgröße für alternative Schriftart (verwenden Sie rem oder % für beste Ergebnisse)';
+$lang['__headline_fonts__'] = 'Schriftarten für Überschriften';
+$lang['__mono_fonts__'] = 'Schriftarten mit fester Laufweite (z.B. für Code)';
+$lang['__math_fonts__'] = 'Mathematik-Schriftarten (z.B. für Formeln)';
+$lang['__print_default_fonts__'] = 'Standardschriftarten für Druck';
+$lang['__print_title_fonts__'] = 'Überschriften-Schriftarten für Druck';
+$lang['__print_title_color__'] = 'Überschriftenfarbe für Druck';
+
+$lang['__background_site_dark__'] = 'Seitenhintergrund (Nachtmodus)';
+$lang['__background_dark__'] = 'Hintergrund des Inhaltsbereichs (Nachtmodus)';
+$lang['__background_alt_dark__'] = 'Alternative Hintergrundfarbe (Nachtmodus)';
+$lang['__headlines_dark__'] = 'Farbe der Überschriften (Nachtmodus)';
+$lang['__text_dark__'] = 'Textfarbe (Nachtmodus)';
+$lang['__text_alt_dark__'] = 'Alternative Textfarbe (Nachtmodus)';
+$lang['__link_dark__'] = 'Farbe externe Links (Nachtmodus)';
+$lang['__existing_dark__'] = 'Farbe Links zu existierenden Artikeln (Nachtmodus)';
+$lang['__missing_dark__'] = 'Farbe Links zu fehlenden Artikeln (Nachtmodus)';
+$lang['__inpage_dark__'] = 'Farbe für Links innerhalb derselben Seite (Nachtmodus)';
+$lang['__border_dark__'] = 'Umrandungsfarbe (Nachtmodus)';
+$lang['__blockquote_dark__'] = 'Markierung von Zitatblöcken (Nachtmodus)';
+
+$lang['cookie_consent'] = 'OK';
+$lang['cookie_linktext'] = 'Weitere Information';
+
+$lang['homepage'] = 'Startseite';
+
+$lang['languages'] = 'Verfügbare Sprachen';
diff --git a/templates/55/ad-hominem/lang/de/settings.php b/templates/55/ad-hominem/lang/de/settings.php
new file mode 100644
index 0000000..24beae1
--- /dev/null
+++ b/templates/55/ad-hominem/lang/de/settings.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * German language file for the Ad Hominem template settings
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ */
+
+$lang['darkmode'] = 'Benutzerseitigen Nachtmodus zulassen';
+ $lang['darkmode_o_allow'] = 'Zulassen';
+ $lang['darkmode_o_disable'] = 'Deaktivieren';
+
+$lang['navtrail'] = 'Aktuelle Seite in hierarchischen Breadcrumbs anzeigen';
+ $lang['navtrail_o_none'] = 'Nicht anzeigen';
+ $lang['navtrail_o_text'] = 'Als Text anzeigen';
+ $lang['navtrail_o_link'] = 'Als Link anzeigen';
+
+$lang['cookiepos'] = 'Cookie-Banner auf der Seite anzeigen';
+ $lang['cookiepos_o_hide'] = 'Kein Cookie-Banner anzeigen';
+ $lang['cookiepos_o_top'] = 'Oben auf der Seite anzeigen';
+ $lang['cookiepos_o_bottom'] = 'Unten auf der Seite anzeigen';
+
+$lang['cookiemsg'] = 'Die Nachricht, die auf dem Banner angezeigt werden soll (kann HTML enthalten)';
+$lang['cookielink'] = 'Link zu weiteren Informationen (interner oder externer Link)';
+$lang['homelink'] = 'Link zu übergeordneter Homepage (leer für Standardverhalten)';
+
+$lang['printstyle'] = 'Druckstil-Variante';
+ $lang['printstyle_o_basic'] = 'Einfach';
+ $lang['printstyle_o_compact'] = 'Kompakt';
+
+$lang['langmenu'] = 'Zeige das Sprachen-Menü <small>(benötigt das <a href="https://www.dokuwiki.org/plugin:translation" target="_blank" hreflang="en">Translation-Plugin</a>)</small>';
+ $lang['langmenu_o_tb'] = 'Als Menü in der Werkzeugleiste';
+ $lang['langmenu_o_sb'] = 'Als Liste in der Seitenleiste';
diff --git a/templates/55/ad-hominem/lang/de/style.txt b/templates/55/ad-hominem/lang/de/style.txt
new file mode 100644
index 0000000..6e1d551
--- /dev/null
+++ b/templates/55/ad-hominem/lang/de/style.txt
@@ -0,0 +1 @@
+Wenn Sie das Logo anpassen wollen, benutzen Sie einfach den Medien-Manager, um ein ''logo.png'' in den ''wiki''- oder Wurzel-Namensraum hochzuladen. Es wird dann automatisch als Logo verwendet. Sie können dort auch ein ''favicon.ico'' hochladen. Falls Sie ein geschlossenes Wiki haben, ist es empfehlenswert, den ''wiki''- (oder Wurzel-)Namensraum für alle Nutzer in den ACL-Einstellungen als lesbar zu öffnen. Ansonsten wird das Logo nur für eingeloggte Nutzer angezeigt.
diff --git a/templates/55/ad-hominem/lang/en/lang.php b/templates/55/ad-hominem/lang/en/lang.php
new file mode 100644
index 0000000..d6d9624
--- /dev/null
+++ b/templates/55/ad-hominem/lang/en/lang.php
@@ -0,0 +1,53 @@
+<?php
+
+// style.ini values
+
+$lang['__background_site__'] = 'Window background color';
+$lang['__link__'] = 'External link color';
+$lang['__existing__'] = 'Existing article link color';
+$lang['__missing__'] = 'Missing article link color';
+$lang['__inpage__'] = 'Color of links within the same page';
+$lang['__site_width__'] = 'The width of the full site (can be any length unit: %, px, em, …)';
+$lang['__sidebar_width__'] = 'The width of the sidebar, if any (can be any length unit: %, px, em, …)';
+
+$lang['__toc_width__'] = 'The width of the Table of Contents block (can be any length unit: %, px, em, …)';
+$lang['__tablet_width__'] = 'Below screensizes of this width, the site switches to tablet mode';
+$lang['__phone_width__'] = 'Below screensizes of this width, the site switches to phone mode';
+$lang['__theme_color__'] = 'Theme color for web app view';
+$lang['__focus_color__'] = 'Focus-ring color';
+
+$lang['__headlines__'] = 'Headlines color';
+$lang['__blockquote__'] = 'Blockquote marker color';
+$lang['__separator__'] = 'Line separator color';
+
+$lang['__default_fonts__'] = 'Default fonts list (used for content and navigation)';
+$lang['__default_font_size__'] = 'Default font size';
+
+$lang['__alt_fonts__'] = 'Alternative fonts (used e.g. for blockquotes)';
+$lang['__alt_font_size__'] = 'Base size for alternative font (use rem or % for best results)';
+$lang['__headline_fonts__'] = 'Fonts to use for headlines';
+$lang['__mono_fonts__'] = 'Monospaced fonts (e.g. for code)';
+$lang['__math_fonts__'] = 'Math fonts (e.g. for formulas, etc.)';
+$lang['__print_default_fonts__'] = 'Default fonts for printing';
+$lang['__print_title_fonts__'] = 'Title fonts for printing';
+$lang['__print_title_color__'] = 'Title color for printing';
+
+$lang['__background_site_dark__'] = 'Window background (dark mode)';
+$lang['__background_dark__'] = 'Content background (dark mode)';
+$lang['__background_alt_dark__'] = 'Alternative background color (dark mode)';
+$lang['__headlines_dark__'] = 'Headlines color (dark mode)';
+$lang['__text_dark__'] = 'Text color (dark mode)';
+$lang['__text_alt_dark__'] = 'Alternative Text color (dark mode)';
+$lang['__link_dark__'] = 'External link color (dark mode)';
+$lang['__existing_dark__'] = 'Existing article link color (dark mode)';
+$lang['__missing_dark__'] = 'Missing article link color (dark mode)';
+$lang['__inpage_dark__'] = 'Color of links within the same page (dark mode)';
+$lang['__border_dark__'] = 'Border color (dark mode)';
+$lang['__blockquote_dark__'] = 'Blockquote marker (dark mode)';
+
+$lang['cookie_consent'] = 'OK';
+$lang['cookie_linktext'] = 'More information';
+
+$lang['homepage'] = 'Homepage';
+
+$lang['languages'] = 'Available languages';
diff --git a/templates/55/ad-hominem/lang/en/settings.php b/templates/55/ad-hominem/lang/en/settings.php
new file mode 100644
index 0000000..dcaba64
--- /dev/null
+++ b/templates/55/ad-hominem/lang/en/settings.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * English language file for the Ad Hominem template settings
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ */
+
+$lang['darkmode'] = 'Allow a client-side dark mode';
+ $lang['darkmode_o_allow'] = 'Allow';
+ $lang['darkmode_o_disable'] = 'Disable';
+
+$lang['navtrail'] = 'Show current page in hierarchical breadcrumbs';
+ $lang['navtrail_o_none'] = 'Don’t show';
+ $lang['navtrail_o_text'] = 'Show as text';
+ $lang['navtrail_o_link'] = 'Show as link';
+
+$lang['cookiepos'] = 'Display the Cookie message banner';
+ $lang['cookiepos_o_hide'] = 'Don’t show';
+ $lang['cookiepos_o_top'] = 'Show on top of page';
+ $lang['cookiepos_o_bottom'] = 'Show on bottom of page';
+
+$lang['cookiemsg'] = 'The message to display on the Cookie banner (may contain HTML tags)';
+$lang['cookielink'] = 'Link to the “More information” page (internal or external)';
+$lang['homelink'] = 'Override the homepage link (empty for default behaviour)';
+
+$lang['printstyle'] = 'Print style variant';
+ $lang['printstyle_o_basic'] = 'Basic';
+ $lang['printstyle_o_compact'] = 'Compact';
+
+$lang['langmenu'] = 'Display the Languages menu <small>(requires the <a href="https://www.dokuwiki.org/plugin:translation" target="_blank">Translation plugin</a>)</small>';
+ $lang['langmenu_o_tb'] = 'As a menu in toolbar';
+ $lang['langmenu_o_sb'] = 'As a list in sidebar';
+
+$lang['langfilter'] = 'Filter which translations to show in the menu or list';
+ $lang['langfilter_o_all'] = 'List all languages';
+ $lang['langfilter_o_existing'] = 'List only if translation exists';
diff --git a/templates/55/ad-hominem/lang/en/style.txt b/templates/55/ad-hominem/lang/en/style.txt
new file mode 100644
index 0000000..7bf3e1a
--- /dev/null
+++ b/templates/55/ad-hominem/lang/en/style.txt
@@ -0,0 +1,4 @@
+If you want to adjust the logo, simply use the Media Manager to upload a ''logo.png'' into the ''wiki'' or the root namespace and it
+will be automatically used. You can also upload a ''favicon.ico'' there. If you use a closed
+wiki it is recommended to make the ''wiki'' (or root) namespace world readable in the ACL settings or
+your logo is not shown to not logged in users.
diff --git a/templates/55/ad-hominem/lang/es/lang.php b/templates/55/ad-hominem/lang/es/lang.php
new file mode 100644
index 0000000..ad4661c
--- /dev/null
+++ b/templates/55/ad-hominem/lang/es/lang.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Domingo Redal <docxml@gmail.com>
+ * @author Sascha Leib <sascha@leib.be> (machine-translated with DeepL.com)
+ */
+$lang['__background_site__'] = 'Color para el fondo (detrás de la caja de contenido)';
+$lang['__link__'] = 'El color de los enlaces en general';
+$lang['__existing__'] = 'El color de los enlaces a páginas existentes';
+$lang['__missing__'] = 'El color de los enlaces a páginas no existentes';
+$lang['__inpage__'] = 'Color de los enlaces dentro de la misma página';
+$lang['__site_width__'] = 'El ancho de la página completa (puede ser cualquier unidad de longitud: %, px, em, …)';
+$lang['__sidebar_width__'] = 'El ancho de la barra lateral (puede ser cualquier unidad de longitud: %, px, em, …)';
+$lang['__tablet_width__'] = 'Para tamaños de pantalla por debajo de esta anchura, el sitio cambia al modo tableta';
+$lang['__phone_width__'] = 'Para tamaños de pantalla por debajo de esta anchura, el sitio cambia al modo teléfono';
+$lang['__theme_color__'] = 'Color del tema de la aplicación web';
+
+$lang['__toc_width__'] = 'La anchura del bloque del índice (puede ser cualquier unidad de longitud: %, px, em, …)';
+$lang['__focus_color__'] = 'Color de enfoque';
+
+$lang['__headlines__'] = 'Color de los titulares';
+$lang['__blockquote__'] = 'Color de los marcadores de las citas en bloque';
+$lang['__separator__'] = 'Color del separador de líneas';
+
+$lang['__default_fonts__'] = 'Lista de fuentes por defecto (utilizadas para el contenido y la navegación)';
+$lang['__default_font_size__'] = 'Tamaño de letra por defecto';
+
+$lang['__alt_fonts__'] = 'Fuentes alternativas (utilizadas, por ejemplo, para las citas en bloque)';
+$lang['__alt_font_size__'] = 'Tamaño base de la fuente alternativa (utilice rem o % para obtener mejores resultados)';
+$lang['__headline_fonts__'] = 'Fuentes para titulares';
+$lang['__mono_fonts__'] = 'Fuentes monoespaciadas (por ejemplo, para el código)';
+$lang['__math_fonts__'] = 'Fuentes matemáticas (por ejemplo, para fórmulas, etc.)';
+$lang['__print_default_fonts__'] = 'Fuentes por defecto para la impresión';
+$lang['__print_title_fonts__'] = 'Fuentes de los títulos para la impresión';
+$lang['__print_title_color__'] = 'Color del título para imprimir';
+
+$lang['__background_site_dark__'] = 'Fondo de la ventana (modo oscuro)';
+$lang['__background_dark__'] = 'Fondo del contenido (modo oscuro)';
+$lang['__background_alt_dark__'] = 'Color de fondo alternativo (modo oscuro)';
+$lang['__headlines_dark__'] = 'Color de los titulares (modo oscuro)';
+$lang['__text_dark__'] = 'Color del texto (modo oscuro)';
+$lang['__text_alt_dark__'] = 'Color del texto alternativo (modo oscuro)';
+$lang['__link_dark__'] = 'Color del enlace externo (modo oscuro)';
+$lang['__existing_dark__'] = 'Color del enlace del artículo existente (modo oscuro)';
+$lang['__missing_dark__'] = 'Color del enlace del artículo que falta (modo oscuro)';
+$lang['__inpage_dark__'] = 'Color de los enlaces dentro de la misma página (modo oscuro)';
+$lang['__border_dark__'] = 'Color del borde (modo oscuro)';
+$lang['__blockquote_dark__'] = 'Marcador de cita en bloque (modo oscuro)';
+
+$lang['cookie_consent'] = 'OK';
+$lang['cookie_linktext'] = 'Más información';
+
+$lang['homepage'] = 'Página de inicio';
+
+$lang['languages'] = 'Lenguas disponibles';
diff --git a/templates/55/ad-hominem/lang/es/settings.php b/templates/55/ad-hominem/lang/es/settings.php
new file mode 100644
index 0000000..474b5f1
--- /dev/null
+++ b/templates/55/ad-hominem/lang/es/settings.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Spanish language file for the Ad Hominem template settings
+ *
+ * @author Sascha Leib <sascha@leib.be> (machine-translated with DeepL.com - please feel free to improve!)
+ */
+
+$lang['darkmode'] = 'Permitir un modo oscuro del lado del cliente';
+ $lang['darkmode_o_allow'] = 'Permitir';
+ $lang['darkmode_o_disable'] = 'Desactivar';
+
+$lang['navtrail'] = 'Mostrar la página actual en las migas de pan jerárquicas';
+ $lang['navtrail_o_none'] = 'No mostrar';
+ $lang['navtrail_o_text'] = 'Mostrar como texto';
+ $lang['navtrail_o_link'] = 'Mostrar como enlace';
+
+$lang['cookiepos'] = 'Mostrar el mensaje de Cookie';
+ $lang['cookiepos_o_hide'] = 'No mostrar';
+ $lang['cookiepos_o_top'] = 'Mostrar en la parte superior de la página';
+ $lang['cookiepos_o_bottom'] = 'Mostrar en la parte inferior de la página';
+
+$lang['cookiemsg'] = 'El mensaje a mostrar en el banner de cookies (puede contener HTML)';
+$lang['cookielink'] = 'Enlace a la página "Más información" (interna o externa)';
+$lang['homelink'] = 'Sustituir el enlace de la página de inicio (vacío para el comportamiento por defecto)';
+
+$lang['printstyle'] = 'Variante de estilo de impresión';
+ $lang['printstyle_o_basic'] = 'Clásico';
+ $lang['printstyle_o_compact'] = 'Compacto';
+
+$lang['langmenu'] = 'Mostrar el menú de lenguas <small>(requiere el <a href="https://www.dokuwiki.org/plugin:translation" target="_blank">plugin de traducción</a>)</small>';
+ $lang['langmenu_o_tb'] = 'Como menú en la barra de herramientas';
+ $lang['langmenu_o_sb'] = 'Como lista en la barra lateral';
+
+$lang['langfilter'] = 'Filtrar qué traducciones mostrar en el menú o la lista';
+ $lang['langfilter_o_all'] = 'Listar todos los idiomas';
+ $lang['langfilter_o_existing'] = 'Mostrar sólo si existe traducción';
diff --git a/templates/55/ad-hominem/lang/es/style.txt b/templates/55/ad-hominem/lang/es/style.txt
new file mode 100644
index 0000000..60ce308
--- /dev/null
+++ b/templates/55/ad-hominem/lang/es/style.txt
@@ -0,0 +1 @@
+Si desea ajustar el logotipo, sólo tiene que utilizar el Administrador de Medios para cargar un ''logo.png'' dentro de "wiki'' o en el espacio de nombres de la raíz y se utilizará automáticamente. También puede cargar un ''favicon.ico'' allí. Si utiliza un wiki cerrado se recomienda hacer el ''wiki'' (o raíz) espacio de nombres legible por todo el mundo en la configuración de ACL o su logotipo no se mostrará para que los usuarios no registrados. \ No newline at end of file
diff --git a/templates/55/ad-hominem/lang/fi/lang.php b/templates/55/ad-hominem/lang/fi/lang.php
new file mode 100644
index 0000000..138c047
--- /dev/null
+++ b/templates/55/ad-hominem/lang/fi/lang.php
@@ -0,0 +1,53 @@
+<?php
+
+// style.ini values
+
+$lang['__background_site__'] = 'Ikkunan taustaväri';
+$lang['__link__'] = 'Ulkoisen linkin väri';
+$lang['__existing__'] = 'Olemassa olevan artikkelin linkin väri';
+$lang['__missing__'] = 'Puuttuvan artikkelilinkin väri';
+$lang['__inpage__'] = 'Saman sivun sisällä olevien linkkien väri';
+$lang['__site_width__'] = 'Koko sivuston leveys (voi olla mikä tahansa pituusyksikkö: %, px, em, …)';
+$lang['__sidebar_width__'] = 'Mahdollisen sivupalkin leveys (voi olla mikä tahansa pituusyksikkö: %, px, em, …)';
+
+$lang['__toc_width__'] = 'Sisällysluettelolohkon leveys (voi olla mikä tahansa pituusyksikkö: %, px, em, …)';
+$lang['__tablet_width__'] = 'Tämän leveyden alapuolella sivusto siirtyy tablettitilaan';
+$lang['__phone_width__'] = 'Tämän leveyden alapuolella sivusto siirtyy puhelintilaan';
+$lang['__theme_color__'] = 'Teemaväri verkkosovellusnäkymässä';
+$lang['__focus_color__'] = 'Fokusrenkaan väri';
+
+$lang['__headlines__'] = 'Otsikoiden väri';
+$lang['__blockquote__'] = 'Lohkolausemerkin väri';
+$lang['__separator__'] = 'Rivin erottimen väri';
+
+$lang['__default_fonts__'] = 'Oletusfonttien luettelo (käytetään sisällössä ja navigoinnissa)';
+$lang['__default_font_size__'] = 'Fontin oletuskoko';
+
+$lang['__alt_fonts__'] = 'Vaihtoehtoiset fontit (käytetään esim. lainausmerkeissä)';
+$lang['__alt_font_size__'] = 'Vaihtoehtoisen fontin peruskoko (käytä rem tai % parhaan tuloksen saamiseksi)';
+$lang['__headline_fonts__'] = 'Otsikoissa käytettävät fontit';
+$lang['__mono_fonts__'] = 'Yksiväripainotteiset fontit (esim. koodissa)';
+$lang['__math_fonts__'] = 'Matemaattiset fontit (esim. kaavoissa jne.)';
+$lang['__print_default_fonts__'] = 'Oletusfontit tulostusta varten';
+$lang['__print_title_fonts__'] = 'Otsikkofontit tulostusta varten';
+$lang['__print_title_color__'] = 'Otsikon väri tulostusta varten';
+
+$lang['__background_site_dark__'] = 'Ikkunan tausta (tumma tila)';
+$lang['__background_dark__'] = 'Sisällön tausta (tumma tila)';
+$lang['__background_alt_dark__'] = 'Vaihtoehtoinen taustaväri (tumma tila)';
+$lang['__headlines_dark__'] = 'Otsikoiden väri (tumma tila)';
+$lang['__text_dark__'] = 'Tekstin väri (tumma tila)';
+$lang['__text_alt_dark__'] = 'Vaihtoehtoinen tekstiväri (tumma tila)';
+$lang['__link_dark__'] = 'Ulkoisen linkin väri (tumma tila)';
+$lang['__existing_dark__'] = 'Olemassa olevan artikkelin linkin väri (tumma tila)';
+$lang['__missing_dark__'] = 'Puuttuva artikkelilinkin väri (tumma tila)';
+$lang['__inpage_dark__'] = 'Saman sivun sisällä olevien linkkien väri (tumma tila)';
+$lang['__border_dark__'] = 'Reunan väri (tumma tila)';
+$lang['__blockquote_dark__'] = 'Lohkolausemerkintä (tumma tila)';
+
+$lang['cookie_consent'] = 'OK';
+$lang['cookie_linktext'] = 'Lisätietoja';
+
+$lang['homepage'] = 'Kotisivu';
+
+$lang['languages'] = 'Käytettävissä olevat kielet';
diff --git a/templates/55/ad-hominem/lang/fi/settings.php b/templates/55/ad-hominem/lang/fi/settings.php
new file mode 100644
index 0000000..0456247
--- /dev/null
+++ b/templates/55/ad-hominem/lang/fi/settings.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Finnish language file for the Ad Hominem template settings
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ */
+
+$lang['darkmode'] = 'Salli asiakaspuolen pimeä tila';
+ $lang['darkmode_o_allow'] = 'Salli';
+ $lang['darkmode_o_disable'] = 'Poista käytöstä';
+
+$lang['navtrail'] = 'Näytä nykyinen sivu hierarkkisessa leivänmurussa';
+ $lang['navtrail_o_none'] = 'Älä näytä';
+ $lang['navtrail_o_text'] = 'Näytä tekstinä';
+ $lang['navtrail_o_link'] = 'Näytä linkkinä';
+
+$lang['cookiepos'] = 'Näytä evästeviestin banneri';
+ $lang['cookiepos_o_hide'] = 'Älä näytä';
+ $lang['cookiepos_o_top'] = 'Näytä sivun yläreunassa';
+ $lang['cookiepos_o_bottom'] = 'Näytä sivun alareunassa';
+
+$lang['cookiemsg'] = 'Evästeiden bannerissa näytettävä viesti (voi sisältää HTML-tunnisteita)';
+$lang['cookielink'] = 'Linkki ”Lisätietoja”-sivulle (sisäinen tai ulkoinen)';
+$lang['homelink'] = 'Linkki ylemmän tason kotisivulle (tyhjä oletusarvoisesti)';
+
+$lang['printstyle'] = 'Painotyylin vaihtelu';
+ $lang['printstyle_o_basic'] = 'perus';
+ $lang['printstyle_o_compact'] = 'kompakti';
+
+$lang['langmenu'] = 'Näytä lielet-valikko <small>(Vaatii <a href="https://www.dokuwiki.org/plugin:translation" target="_blank">Translation pluginin</a>)</small>';
+ $lang['langmenu_o_tb'] = 'Valikkona työkalupalkissa';
+ $lang['langmenu_o_sb'] = 'Luettelona sivupalkissa';
+
+$lang['langfilter'] = 'Valitse, mitkä käännökset näytetään valikossa tai luettelossa.';
+ $lang['langfilter_o_all'] = 'Näytä kaikki kielet';
+ $lang['langfilter_o_existing'] = 'Luettele vain, jos käännös on olemassa';
diff --git a/templates/55/ad-hominem/lang/fi/style.txt b/templates/55/ad-hominem/lang/fi/style.txt
new file mode 100644
index 0000000..7bf3e1a
--- /dev/null
+++ b/templates/55/ad-hominem/lang/fi/style.txt
@@ -0,0 +1,4 @@
+If you want to adjust the logo, simply use the Media Manager to upload a ''logo.png'' into the ''wiki'' or the root namespace and it
+will be automatically used. You can also upload a ''favicon.ico'' there. If you use a closed
+wiki it is recommended to make the ''wiki'' (or root) namespace world readable in the ACL settings or
+your logo is not shown to not logged in users.
diff --git a/templates/55/ad-hominem/lang/fr/lang.php b/templates/55/ad-hominem/lang/fr/lang.php
new file mode 100644
index 0000000..848015f
--- /dev/null
+++ b/templates/55/ad-hominem/lang/fr/lang.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ *
+ * @author Schplurtz le Déboulonné <Schplurtz@laposte.net>
+ * @author Nicolas Friedli <nicolas@theologique.ch>
+ * @author Sascha Leib <sascha@leib.be> (machine-translated with DeepL.com)
+ */
+$lang['__background_site__'] = 'Couleur du fond (derrière la boîte de contenu)';
+$lang['__link__'] = 'Couleur générale des liens';
+$lang['__existing__'] = 'Couleur des liens pour les pages existantes';
+$lang['__missing__'] = 'Couleur des liens pour les pages inexistantes';
+$lang['__inpage__'] = 'Couleur pour les liens au sein de la même page';
+$lang['__site_width__'] = 'Largeur du site complet (dans une unité de longueur valide : %, px, em,...)';
+$lang['__sidebar_width__'] = 'Largeur de la barre latérale, si existante (dans une unité de longueur valide : %, px, em, …)';
+$lang['__tablet_width__'] = 'En dessous de cette largeur, le site passe en mode tablette.';
+$lang['__phone_width__'] = 'En dessous de cette largeur, le site passe en mode smartphone.';
+$lang['__theme_color__'] = 'Thème de couleur de l’application web';
+
+$lang['__toc_width__'] = 'La largeur du bloc Table des matières (peut être toute unité de longueur : %, px, em, …)';
+$lang['__focus_color__'] = 'Couleur du focus';
+
+$lang['__headlines__'] = 'Couleur des titres';
+$lang['__blockquote__'] = 'Couleur du marqueur de citation';
+$lang['__separator__'] = 'Couleur du séparateur de ligne';
+
+$lang['__default_fonts__'] = 'Liste des polices par défaut (utilisées pour le contenu et la navigation)';
+$lang['__default_font_size__'] = 'Taille de police par défaut';
+
+$lang['__alt_fonts__'] = 'Polices alternatives (utilisées, par exemple pour les blocs de citations)';
+$lang['__alt_font_size__'] = 'Taille de base de la police alternative (utilisez rem ou % pour de meilleurs résultats)';
+$lang['__headline_fonts__'] = 'Polices à utiliser pour les titres';
+$lang['__mono_fonts__'] = 'Polices mono-espacées (pour le code, par exemple)';
+$lang['__math_fonts__'] = 'Polices mathématiques (par exemple, pour les formules, etc.)';
+$lang['__print_default_fonts__'] = 'Polices par défaut pour l’impression';
+$lang['__print_title_fonts__'] = 'Polices de titre pour l’impression';
+$lang['__print_title_color__'] = 'Couleur du titre pour l’impression';
+
+$lang['__background_site_dark__'] = 'Fond de la fenêtre (mode sombre)';
+$lang['__background_dark__'] = 'Arrière-plan du contenu (mode sombre)';
+$lang['__background_alt_dark__'] = 'Couleur de l’arrière-plan alternatif (mode sombre)';
+$lang['__headlines_dark__'] = 'Couleur des titres (mode sombre)';
+$lang['__text_dark__'] = 'Couleur du texte (mode sombre)';
+$lang['__text_alt_dark__'] = 'Couleur alternative du texte (mode sombre)';
+$lang['__link_dark__'] = 'Couleur des liens externes (mode sombre)';
+$lang['__existing_dark__'] = 'Couleur du lien de l’article existant (mode sombre)';
+$lang['__missing_dark__'] = 'Couleur du lien vers l’article manquant (mode sombre)';
+$lang['__inpage_dark__'] = 'Couleur pour les liens au sein de la même page (mode sombre)';
+$lang['__border_dark__'] = 'Couleur des bordures (mode sombre)';
+$lang['__blockquote_dark__'] = 'Couleur du marqueur de citation (mode sombre)';
+
+$lang['cookie_consent'] = 'OK';
+$lang['cookie_linktext'] = 'Plus d’informations';
+
+$lang['homepage'] = 'Page d’accueil';
+
+$lang['languages'] = 'Langues disponibles';
diff --git a/templates/55/ad-hominem/lang/fr/settings.php b/templates/55/ad-hominem/lang/fr/settings.php
new file mode 100644
index 0000000..892d111
--- /dev/null
+++ b/templates/55/ad-hominem/lang/fr/settings.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * French language file for the Ad Hominem template settings
+ *
+ * @author Sascha Leib <sascha@leib.be> (machine-translated with DeepL.com)
+ */
+
+$lang['darkmode'] = 'Autoriser un mode sombre côté client';
+ $lang['darkmode_o_allow'] = 'Autoriser';
+ $lang['darkmode_o_disable'] = 'Désactiver';
+
+$lang['navtrail'] = 'Afficher la page actuelle dans le fil d’Ariane hiérarchique';
+ $lang['navtrail_o_none'] = 'Ne pas afficher';
+ $lang['navtrail_o_text'] = 'Afficher en tant que texte';
+ $lang['navtrail_o_link'] = 'Afficher en tant que lien';
+
+$lang['cookiepos'] = 'Afficher la bannière du message sur les cookies';
+ $lang['cookiepos_o_hide'] = 'Ne pas afficher';
+ $lang['cookiepos_o_top'] = 'Afficher en haut de la page';
+ $lang['cookiepos_o_bottom'] = 'Afficher en bas de la page';
+
+$lang['cookiemsg'] = 'Le message à afficher dans le bandeau de messages sur les cookies (peut contenir du HTML)';
+$lang['cookielink'] = 'Lien vers la page « Plus d’informations » (interne ou externe)';
+$lang['homelink'] = 'Remplacer le lien de la page d’accueil (vide pour le comportement par défaut)';
+
+$lang['printstyle'] = 'Variante du style imprimé';
+ $lang['printstyle_o_basic'] = 'basique';
+ $lang['printstyle_o_compact'] = 'compact';
+
+$lang['langmenu'] = 'Afficher le menu Langues <small>(requiert le plugin <a href="https://www.dokuwiki.org/plugin:translation" target="_blank">Translations</a>)</small>';
+ $lang['langmenu_o_tb'] = 'En tant que menu dans la barre d’outils';
+ $lang['langmenu_o_sb'] = 'En tant que liste dans la barre latérale';
+
+$lang['langfilter'] = 'Sélectionner les traductions à afficher dans le menu ou la liste';
+ $lang['langfilter_o_all'] = 'Afficher toutes les langues';
+ $lang['langfilter_o_existing'] = 'Afficher uniquement si la traduction existe';
diff --git a/templates/55/ad-hominem/lang/fr/style.txt b/templates/55/ad-hominem/lang/fr/style.txt
new file mode 100644
index 0000000..9034cbc
--- /dev/null
+++ b/templates/55/ad-hominem/lang/fr/style.txt
@@ -0,0 +1 @@
+Si vous souhaitez modifier le logo, utilisez simplement le gestionnaire de médias et envoyez un fichier nommé "logo.png" dans la catégorie "wiki" ou à la racine. Il sera automatiquement utilisé. Il en est de même pour le "favicon.ico". Si vous utilisez un wiki fermé, il est recommandé de régler les ACL de la racine ou de la catégorie "wiki" pour rendre ces images visibles aux utilisateurs non connectés. \ No newline at end of file
diff --git a/templates/55/ad-hominem/main.php b/templates/55/ad-hominem/main.php
new file mode 100644
index 0000000..37c7548
--- /dev/null
+++ b/templates/55/ad-hominem/main.php
@@ -0,0 +1,131 @@
+<?php
+/**
+ * Ad Hominem Template
+ *
+ * @link https://ad.hominem.info/
+ * @author Sascha Leib <sascha@leib.be>
+ * @author Anika Henke <anika@selfthinker.org>
+ * @author Clarence Lee <clarencedglee@gmail.com>
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ */
+
+if (!defined('DOKU_INC')) die(); /* must be run from within DokuWiki */
+
+require_once('my_template.php');
+
+$hasSidebar = page_findnearest($conf['sidebar']);
+$showSidebar = $hasSidebar && ($ACT=='show');
+
+// get the language information:
+$htmlLang = ' lang="' . $conf['lang'] . ( $lang['direction'] != 'ltr' ? '" dir="'. $lang['direction'] : '') . '"';
+
+?><!DOCTYPE html>
+<html<?php echo $htmlLang ?>>
+<head>
+ <meta charset="UTF-8" />
+ <title><?php tpl_pagetitle() ?> &ndash; <?php echo str_replace(' ', ' ', strip_tags($conf['title'])) ?></title>
+<?php my_metaheaders() ?>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+<?php my_favicons() ?>
+<?php tpl_includeFile('meta.html') ?>
+</head>
+<body class="site <?php echo trim(tpl_classes()) . (tpl_getConf('darkmode') == 'allow' ? ' darkmode' : '') . (tpl_getConf('printstyle') !== 'basic' ? ' print-' . tpl_getConf('printstyle') : ''); ?>" data-pageid="<?php echo $ID; ?>">
+ <div id="skip-link">
+ <a href="#main-content"><?php echo $lang['skip_to_content']; ?></a>
+ </div>
+ <div id="header-layout">
+ <header>
+ <div id="siteLogo">
+ <?php my_sitelogo(); ?>
+
+ <h2 class="title"><?php tpl_link( my_homelink(), htmlentities($conf['title']), ''); ?></h2>
+ <p class="claim"><?php echo $conf['tagline']; ?></p>
+ </div>
+ <div id="globalTools">
+ <div id="gUserTools">
+ <h3 class="sronly"><?php echo $lang['user_tools']; ?></h3>
+ <ul>
+<?php my_userinfo(str_repeat(chr(9),6)); ?>
+ </ul>
+ </div>
+ </div>
+ <div id="phSearch">
+<?php include('tpl_searchform.php'); ?>
+ </div>
+ <div id="phTools">
+<?php my_langmenu(str_repeat(chr(9),4), 'tb'); ?>
+ </div>
+ <div id="phInclude"><?php tpl_includeFile('header.html') ?></div>
+ </header>
+ </div>
+ <div id="main-layout">
+ <div id="sidebar" class="toggle <?php
+ echo ( $showSidebar ? 'auto' : 'hide' ); ?>">
+ <button type="button" class="tg_button" title="<?php echo $lang['sidebar'] ?>"><span><?php echo $lang['sidebar'] ?></span></button>
+ <div class="tg_content">
+ <nav id="sbNavigation">
+<!-- - - - - - - - - SIDEBAR CONTENT - - - - - - - -->
+<?php
+ tpl_flush();
+ tpl_includeFile('sidebarheader.html');
+ tpl_include_page($conf['sidebar'], true, true);
+ tpl_includeFile('sidebarfooter.html');
+?>
+
+<!-- - - - - - - - - END OF SIDEBAR CONTENT - - - - - - - -->
+ </nav>
+<?php my_langmenu(str_repeat(chr(9),4), 'sb'); ?>
+ <div id="sbBreadcrumbs">
+<?php if($conf['breadcrumbs']) { my_breadcrumbs(str_repeat(chr(9),5)); } ?>
+ </div>
+ </div>
+ </div>
+ <main id="dokuwiki__top">
+ <header>
+<?php my_toc(str_repeat(chr(9),4));
+ tpl_flush();
+ tpl_includeFile('pageheader.html');
+ if($conf['youarehere']) { my_youarehere(str_repeat(chr(9),4)); }
+?> </header>
+ <article id="main-content">
+
+<!-- - - - - - - - - ARTICLE CONTENT - - - - - - - --><?php tpl_content(false) ?>
+
+
+<!-- - - - - - - - - END OF ARTICLE - - - - - - - -->
+
+ </article>
+ <footer>
+<?php my_lastchange(str_repeat(chr(9),4)); ?>
+<?php tpl_includeFile('pagefooter.html'); ?>
+ </footer>
+ </main>
+ </div>
+ <div id="footer-layout">
+ <footer>
+ <div id="ftPlaceholder" class="ftSection"></div>
+ <div id="ftInclude" class="ftSection">
+<?php tpl_includeFile('footer.html'); ?>
+ </div>
+ <div id="ftSiteTools" class="ftSection">
+ <h4><?php echo $lang['site_tools']; ?></h4>
+ <ul>
+ <?php echo (new \dokuwiki\Menu\SiteMenu())->getListItems('action ', false); ?>
+
+ </ul>
+ </div>
+ <div id="ftPageTools" class="ftSection">
+ <h4><?php echo $lang['page_tools']; ?></h4>
+ <ul>
+ <?php echo (new \dokuwiki\Menu\PageMenu())->getListItems('', false); ?>
+
+ </ul>
+ </div>
+<?php include('tpl_footer.php'); ?>
+ </footer>
+ </div>
+<?php my_cookiebanner("\t"); ?>
+ <div class="no"><?php tpl_indexerWebBug() /* provide DokuWiki housekeeping, required in all templates */ ?></div>
+ <div id="screen__mode" class="no"></div><?php /* helper to detect CSS media query in script.js */ ?>
+</body>
+</html> \ No newline at end of file
diff --git a/templates/55/ad-hominem/my_template.php b/templates/55/ad-hominem/my_template.php
new file mode 100644
index 0000000..b64eca1
--- /dev/null
+++ b/templates/55/ad-hominem/my_template.php
@@ -0,0 +1,748 @@
+<?php
+/**
+ * Overwriting DokuWiki template functions
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Sascha Leib <sascha@leib.be>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+use dokuwiki\Extension\Event;
+use dokuwiki\File\PageResolver;
+
+/**
+ * Print the specific HTML meta headers
+ *
+ * Overrides the original version by modifying the headers and the way it is printed
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @triggers TPL_METAHEADER_OUTPUT
+ * @param bool $alt Should feeds and alternative format links be added?
+ * @return bool
+ */
+function my_metaheaders($alt = true) {
+ global $ID;
+ global $REV;
+ global $INFO;
+ global $JSINFO;
+ global $ACT;
+ global $QUERY;
+ global $lang;
+ global $conf;
+ global $updateVersion;
+ /** @var Input $INPUT */
+ global $INPUT;
+
+ // prepare the head array
+ $head = array();
+
+ // prepare seed for js and css
+ $tseed = $updateVersion;
+ $depends = getConfigFiles('main');
+ $depends[] = DOKU_CONF."tpl/".$conf['template']."/style.ini";
+ foreach($depends as $f) $tseed .= @filemtime($f);
+ $tseed = md5($tseed);
+
+ // Open Graph information
+ $meta = p_get_metadata($ID);
+ if (is_array($meta) && array_key_exists('title', $meta) && $meta['title'] !== null) {
+ $head['meta'][] = array('property' => 'og:title', 'content' => tpl_pagetitle($ID, true));
+ $head['meta'][] = array('property' => 'og:site_name ', 'content' => $conf['title']);
+ $head['meta'][] = array('property' => 'og:type', 'content' => 'website');
+ $head['meta'][] = array('property' => 'og:url', 'content' => wl($ID, '', true, '&'));
+
+ if (array_key_exists('description', $meta) && is_array($meta['description'])) {
+ if (array_key_exists('abstract', $meta['description'])) {
+ $parts = explode("\n", $meta['description']['abstract']);
+
+ if (is_array($parts) && array_key_exists(2, $parts)) {
+ $head['meta'][] = array('property' => 'og:description', 'content' => $parts[2]);
+
+ // Bing insists in a non-og description:
+ $head['meta'][] = array('name' => 'description', 'content' => $parts[2]);
+ }
+ }
+ }
+ }
+
+ // the usual stuff
+ $head['meta'][] = array('name'=> 'generator', 'content'=> 'DokuWiki');
+ if(actionOK('search')) {
+ $head['link'][] = array(
+ 'rel' => 'search', 'type'=> 'application/opensearchdescription+xml',
+ 'href'=> DOKU_BASE.'lib/exe/opensearch.php', 'title'=> $conf['title']
+ );
+ }
+
+ $head['link'][] = array('rel'=> 'start', 'href'=> DOKU_BASE);
+ if(actionOK('index')) {
+ $head['link'][] = array(
+ 'rel' => 'contents', 'href'=> wl($ID, 'do=index', false, '&'),
+ 'title'=> $lang['btn_index']
+ );
+ }
+
+ if (actionOK('manifest')) {
+ $head['link'][] = array('rel'=> 'manifest', 'href'=> DOKU_BASE.'lib/exe/manifest.php');
+ }
+
+ $styleUtil = new \dokuwiki\StyleUtils();
+ $styleIni = $styleUtil->cssStyleini();
+ $replacements = $styleIni['replacements'];
+ if (!empty($replacements['__theme_color__'])) {
+ $head['meta'][] = array(
+ 'name' => 'theme-color',
+ 'content' => $replacements['__theme_color__']
+ );
+ }
+
+ if($alt) {
+ if(actionOK('rss')) {
+ $head['link'][] = array(
+ 'rel' => 'alternate', 'type'=> 'application/rss+xml',
+ 'title'=> $lang['btn_recent'], 'href'=> DOKU_BASE.'feed.php'
+ );
+ $head['link'][] = array(
+ 'rel' => 'alternate', 'type'=> 'application/rss+xml',
+ 'title'=> $lang['currentns'],
+ 'href' => DOKU_BASE.'feed.php?mode=list&ns='.(isset($INFO) ? $INFO['namespace'] : '')
+ );
+ }
+ if(($ACT == 'show' || $ACT == 'search') && $INFO['writable']) {
+ $head['link'][] = array(
+ 'rel' => 'edit',
+ 'title'=> $lang['btn_edit'],
+ 'href' => wl($ID, 'do=edit', false, '&')
+ );
+ }
+
+ if(actionOK('rss') && $ACT == 'search') {
+ $head['link'][] = array(
+ 'rel' => 'alternate', 'type'=> 'application/rss+xml',
+ 'title'=> $lang['searchresult'],
+ 'href' => DOKU_BASE.'feed.php?mode=search&q='.$QUERY
+ );
+ }
+
+ if(actionOK('export_xhtml')) {
+ $head['link'][] = array(
+ 'rel' => 'alternate', 'type'=> 'text/html', 'title'=> $lang['plainhtml'],
+ 'href'=> exportlink($ID, 'xhtml', '', false, '&')
+ );
+ }
+
+ if(actionOK('export_raw')) {
+ $head['link'][] = array(
+ 'rel' => 'alternate', 'type'=> 'text/plain', 'title'=> $lang['wikimarkup'],
+ 'href'=> exportlink($ID, 'raw', '', false, '&')
+ );
+ }
+ }
+
+ // setup robot tags apropriate for different modes
+ if(($ACT == 'show' || $ACT == 'export_xhtml') && !$REV) {
+ if($INFO['exists']) {
+ //delay indexing:
+ if((time() - $INFO['lastmod']) >= $conf['indexdelay'] && !isHiddenPage($ID) ) {
+ $head['meta'][] = array('name'=> 'robots', 'content'=> 'index,follow');
+ } else {
+ $head['meta'][] = array('name'=> 'robots', 'content'=> 'noindex,nofollow');
+ }
+ $canonicalUrl = wl($ID, '', true, '&');
+ if ($ID == $conf['start']) {
+ $canonicalUrl = DOKU_URL;
+ }
+ $head['link'][] = array('rel'=> 'canonical', 'href'=> $canonicalUrl);
+ } else {
+ $head['meta'][] = array('name'=> 'robots', 'content'=> 'noindex,follow');
+ }
+ } elseif(defined('DOKU_MEDIADETAIL')) {
+ $head['meta'][] = array('name'=> 'robots', 'content'=> 'index,follow');
+ } else {
+ $head['meta'][] = array('name'=> 'robots', 'content'=> 'noindex,nofollow');
+ }
+
+ // set metadata
+ if($ACT == 'show' || $ACT == 'export_xhtml') {
+ // keywords (explicit or implicit)
+ if(!empty($INFO['meta']['subject'])) {
+ $head['meta'][] = array('name'=> 'keywords', 'content'=> join(',', $INFO['meta']['subject']));
+ } else {
+ $head['meta'][] = array('name'=> 'keywords', 'content'=> str_replace(':', ',', $ID));
+ }
+ }
+
+ // load stylesheets
+ $head['link'][] = array(
+ 'rel' => 'stylesheet',
+ 'href'=> DOKU_BASE . 'lib/exe/css.php?t='.rawurlencode($conf['template']).'&tseed='.$tseed,
+ 'defer' => 'defer'
+ );
+
+ $script = "var NS='".(isset($INFO)?$INFO['namespace']:'')."';\n\t\t";
+ if($conf['useacl'] && $INPUT->server->str('REMOTE_USER')) {
+ $script .= "var SIG=".toolbar_signature().";\n\t\t";
+ }
+
+ if($conf['basedir']) {
+ $script .= 'var BASEDIR="'.$conf['basedir']."\";\n\t\t";
+ }
+
+ jsinfo();
+ $script .= 'var JSINFO = ' . json_encode($JSINFO).';';
+ $head['script'][] = array('_data'=> $script);
+
+ // load jquery
+ $jquery = getCdnUrls();
+ foreach($jquery as $src) {
+ $head['script'][] = array(
+ /* 'charset' => 'utf-8', -- obsolete */
+ '_data' => '',
+ 'src' => $src,
+ ) + ($conf['defer_js'] ? [ 'defer' => 'defer'] : []);
+ }
+
+ // load our javascript dispatcher
+ $head['script'][] = array(
+ /* 'charset'=> 'utf-8', -- obsolete */
+ '_data'=> '',
+ 'src' => DOKU_BASE . 'lib/exe/js.php'.'?t='.rawurlencode($conf['template']).'&tseed='.$tseed,
+ ) + ($conf['defer_js'] ? [ 'defer' => 'defer'] : []);
+
+ // trigger event here
+ Event::createAndTrigger('TPL_METAHEADER_OUTPUT', $head, '_my_metaheaders_action', true);
+ return true;
+}
+
+/**
+ * prints the array build by my_metaheaders
+ *
+ * Overrides the original version by adding a tab before each line for neater HTML code
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param array $data
+ */
+function _my_metaheaders_action($data) {
+ foreach($data as $tag => $inst) {
+ foreach($inst as $attr) {
+ if ( empty($attr) ) { continue; }
+ echo "\t<", $tag, ' ', buildAttributes($attr);
+ if(isset($attr['_data']) || $tag == 'script') {
+ if($tag == 'script' && $attr['_data'])
+ $attr['_data'] = "/*<![CDATA[*/".
+ $attr['_data'].
+ "\n/*!]]>*/";
+
+ echo '>', $attr['_data'], '</', $tag, '>';
+ } else {
+ echo '/>';
+ }
+ echo "\n";
+ }
+ }
+}
+
+/**
+ * get a link to the homepage.
+ *
+ * wraps the original wl() function to allow overriding in the options
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ *
+ * @returns string (link)
+ */
+function my_homelink() {
+ global $conf;
+
+ $hl = trim(tpl_getConf('homelink'));
+
+ if ( $hl !== '' ) {
+ return $hl;
+ } else {
+ return wl(); // default homelink
+ }
+}
+
+/**
+ * Print the breadcrumbs trace
+ *
+ * Cleanup of the original code to create neater and more accessible HTML
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $prefix inserted before each line
+ *
+ * @return void
+ */
+function my_breadcrumbs($prefix = '') {
+ global $lang;
+ global $conf;
+
+ //check if enabled
+ if(!$conf['breadcrumbs']) return false;
+
+ $crumbs = breadcrumbs(); //setup crumb trace
+
+ /* begin listing */
+ echo $prefix . "<nav id=\"navBreadCrumbs\">\n";
+ echo $prefix . "\t<h4>" . $lang['breadcrumb'] . "</h4>\n";
+ echo $prefix . "\t<ol reversed>\n";
+
+ $last = count($crumbs);
+ $i = 0;
+ foreach($crumbs as $id => $name) {
+ $i++;
+ echo $prefix . "\t\t<li" . ($i == $last ? ' class="current"' : '') . '><bdi>' . tpl_link(wl($id), hsc($name), '', true) . "</bdi></li>\n";
+ }
+ echo $prefix . "\t</ol>\n";
+ echo $prefix . "</nav>\n";
+}
+
+/**
+ * Hierarchical breadcrumbs
+ *
+ * Cleanup of the original code to create neater and more accessible HTML
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @author Nigel McNie <oracle.shinoda@gmail.com>
+ * @author Sean Coates <sean@caedmon.net>
+ * @author <fredrik@averpil.com>
+ *
+ * @param string $prefix to be added before each line
+ *
+ */
+function my_youarehere($prefix = '') {
+ global $conf;
+ global $ID;
+ global $lang;
+
+ // check if enabled
+ if(!$conf['youarehere']) return false;
+
+ $parts = explode(':', $ID);
+ $count = count($parts);
+ $isdir = ( $parts[$count-1] == $conf['start']);
+
+ $hl = trim(tpl_getConf('homelink'));
+
+ echo $prefix . "<nav id=\"navYouAreHere\">\n";
+ echo $prefix . "\t<h4>" . $lang['youarehere'] . "</h4>\n";
+ echo $prefix . "\t<ol>\n";
+
+ // always print the startpage
+ if ( $hl !== '' ) {
+ echo $prefix . "\t\t<li class=\"home\">" . tpl_link( $hl, htmlentities(tpl_getLang('homepage')), ' title="' . htmlentities(tpl_getLang('homepage')) . '"', true) . "</li>\n";
+ echo $prefix . "\t\t<li>" . tpl_pagelink(':'.$conf['start'], null, true) . "</li>\n";
+ } else {
+ echo $prefix . "\t\t<li class=\"home\">" . tpl_pagelink(':'.$conf['start'], null, true) . "</li>\n";
+ }
+
+ // print intermediate namespace links
+ $page = '';
+ for($i = 0; $i < $count - 1; $i++) {
+ $part = $parts[$i];
+ $page .= $part . ':';
+
+ if ($i == $count-2 && $isdir) break; // Skip last if it is an index page
+
+ echo $prefix . "\t\t<li>" . tpl_pagelink($page, null, true) . "</li>\n";
+ }
+
+ // chould the current page be included in the listing?
+ $trail = tpl_getConf('navtrail');
+
+ if ($trail !== 'none' && $trail !== '') {
+
+ echo $prefix . "\t\t<li class=\"current\">";
+ if ($trail == 'text') {
+ echo tpl_pagetitle($page . $parts[$count-1], true);
+ } else if ($trail == 'link') {
+ echo tpl_pagelink($page . $parts[$count-1], null, true);
+ }
+ echo "</li>\n";
+ }
+
+ echo $prefix . "\t</ol>\n";
+ echo $prefix . "</nav>\n";
+}
+
+/**
+ * My implementation of the basic userinfo (in the global banner)
+ *
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ *
+ * @param string $prefix to be added before each line
+ *
+ * @return void
+ */
+function my_userinfo($prefix = '') {
+ global $lang;
+ global $INPUT;
+
+ // add login/logout button:
+ $items = (new \dokuwiki\Menu\UserMenu())->getItems();
+ foreach($items as $it) {
+ $typ = $it->getType();
+
+ if ($typ === 'profile') { // special case for user profile:
+
+ echo $prefix . '<li class="action profile"><span class="sronly">' . $lang['loggedinas'] .
+ ' </span><a href="' . htmlentities($it->getLink()) . '" title="' . $it->getTitle() . '">' .
+ userlink() . "</a></li>\n";
+
+ } else {
+
+ echo $prefix . "<li class=\"action $typ\"><a href=\"" . htmlentities($it->getLink()) .
+ '" title="' . $it->getTitle() . '">' . ($typ === 'profile'? userlink() : $it->getLabel() ) .
+ "</a></li>\n";
+ }
+ }
+}
+
+/**
+ *Inserts a cleaner version of the TOC
+ *
+ * This is an update of the original function that renders the TOC directly.
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $prefix to be added before each line
+ *
+ * @return void
+ */
+function my_toc($prefix = '') {
+ global $TOC;
+ global $ACT;
+ global $ID;
+ global $REV;
+ global $INFO;
+ global $conf;
+ global $lang;
+ $toc = array();
+
+ if(is_array($TOC)) {
+ // if a TOC was prepared in global scope, always use it
+ $toc = $TOC;
+ } elseif(($ACT == 'show' || substr($ACT, 0, 6) == 'export') && !$REV && $INFO['exists']) {
+ // get TOC from metadata, render if neccessary
+ $meta = p_get_metadata($ID, '', METADATA_RENDER_USING_CACHE);
+ if(isset($meta['internal']['toc'])) {
+ $tocok = $meta['internal']['toc'];
+ } else {
+ $tocok = true;
+ }
+ $toc = isset($meta['description']['tableofcontents']) ? $meta['description']['tableofcontents'] : null;
+ if(!$tocok || !is_array($toc) || !$conf['tocminheads'] || count($toc) < $conf['tocminheads']) {
+ $toc = array();
+ }
+ } elseif($ACT == 'admin') {
+ // try to load admin plugin TOC
+ /** @var $plugin AdminPlugin */
+ if ($plugin = plugin_getRequestAdminPlugin()) {
+ $toc = $plugin->getTOC();
+ $TOC = $toc; // avoid later rebuild
+ }
+ }
+
+ /* Build the hierarchical list of headline links: */
+ if (count($toc) >= intval($conf['tocminheads'])) {
+ echo $prefix . "<aside id=\"toc\" class=\"toggle hide\">\n";
+ echo $prefix . "\t<button type=\"button\" id=\"toc-menubutton\" class=\"tg_button\" title=\"" . htmlentities($lang['toc']) . '" aria-haspopup="true" aria-controls="toc-menu"><span>' . htmlentities($lang['toc']) . "</span></button>\n" . $prefix . "\t<div id=\"toc-menu\" class=\"tg_content\" role=\"menu\" aria-labelledby=\"toc-menubutton\">";
+ $level = 0;
+ foreach($toc as $it) {
+
+ $nl = intval($it['level']);
+ $cp = ($nl <=> $level);
+
+ if ($cp > 0) {
+ while ($level < $nl) {
+ echo "\n" . $prefix . str_repeat("\t", $level*2 + 2) . "<ol>\n";
+ $level++;
+ }
+ } else if ($cp < 0) {
+ while ($level > $nl) {
+ echo "\n" . $prefix . str_repeat("\t", $level*2) . "</ol>\n" . $prefix . str_repeat("\t", $level*2-1) . "</li>\n";
+ $level--;
+ }
+ } else {
+ echo "</li>\n";
+ }
+
+ $href = ( array_key_exists('link', $it ) ? $it['link'] : '' ) . ( array_key_exists('hid', $it) && $it['hid'] !== '' ? '#' . $it['hid'] : '' );
+
+ echo $prefix . str_repeat("\t", $nl*2 + 1) . '<li role="presentation"><a role="menuitem" href="' . $href . '">' . htmlentities($it['title']) . "</a>";
+ $level = $nl;
+ }
+
+ for ($i = $level-1; $i > 0; $i--) {
+ echo "</li>\n" . $prefix . str_repeat("\t", $i*2 + 1) . "</ol>";
+ }
+
+ echo "</li>\n" . $prefix . "\t\t</ol>\n" . $prefix . "\t</div>\n" . $prefix . "</aside>\n";
+ }
+}
+
+/**
+ * Print last change date
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ *
+ * @param string $prefix to be added before each line
+ *
+ * @return void
+ */
+function my_lastchange($prefix = '') {
+
+ global $lang;
+ global $INFO;
+ global $conf;
+
+ $lastmod = $INFO['lastmod'];
+
+ if (intval($lastmod) > 0) { // is valid date?
+
+ $longDate = htmlentities(dformat($lastmod));
+
+ echo $prefix . "<p class=\"docInfo\">\n";
+ echo $prefix . "\t<bdi>" . $lang['lastmod'] . "</bdi>\n";
+ echo $prefix . "\t<time datetime=\"" . date('c', $lastmod) . '" title="' . $longDate . '"><span class="print-only">' . $longDate . '</span><span class="noprint">' . datetime_h($lastmod) . "</span></time>\n";
+ echo $prefix . "</p>\n";
+ }
+
+ /* user name for last change (is this really interesting to the visitor?) */
+ /* echo $prefix .'<span class="editorname" tabindex="0">' . $lang['by'] . ' <bdi>' . editorinfo($INFO['editor']) . "</bdi></span>\n"; */
+}
+
+/**
+ * Returns a description list of the metatags of the current image
+ *
+ * @return string html of description list
+ */
+function my_img_meta($prefix = '') {
+ global $lang;
+
+ $format = '%Y-%m-%dT%T%z'; /* e.g. 2021-21-05T16:45:12+02:00 */
+
+ $tags = tpl_get_img_meta();
+
+ foreach($tags as $tag) {
+ $label = $lang[$tag['langkey']];
+ if(!$label) $label = $tag['langkey'] . ':';
+
+ echo $prefix . '<tr><th>'.$label.'</th><td>';
+ if ($tag['type'] == 'date') {
+ echo '<time datetime="' . strftime($format, $tag['value']) . '">' . dformat($tag['value']) . '</time>';
+ } else {
+ echo hsc($tag['value']);
+ }
+ echo "</td></tr>\n";
+ }
+}
+
+/**
+ * Creates the Site logo image link
+ *
+ */
+function my_sitelogo() {
+ global $conf;
+
+ // get logo either out of the template images folder or data/media folder
+ $logoSize = array();
+ $logo = tpl_getMediaFile(array(':logo.svg', ':wiki:logo.svg', ':logo.png', ':wiki:logo.png', 'images/sitelogo.svg'), false, $logoSize);
+ tpl_link( my_homelink(),
+ '<img src="'.$logo.'" ' . (is_array($logoSize) && array_key_exists(3, $logoSize) ? $logoSize[3] : '') . ' alt="' . htmlentities($conf['title']) . '" />', 'accesskey="h" title="[H]" class="logo"');
+}
+
+/**
+ * Creates the various favicon and similar links:
+ *
+ * @param string $color overwrite the theme color.
+ *
+ * @return null
+ */
+function my_favicons($color = null) {
+
+ $logoSize = array();
+
+ /* Theme color:
+ if ($color == null) {
+
+ // get the style config:
+ $styleUtil = new \dokuwiki\StyleUtils();
+ $styleIni = $styleUtil->cssStyleini();
+ $replacements = $styleIni['replacements'];
+ $color = $replacements['__theme_color__'];
+
+ if ($color== null) { $color = '#2b73b7'; }
+ }
+ echo "\t<meta name=\"theme-color\" content=\"" . $color . "\" />\n"; */
+
+ // get the favicon:
+ $link = tpl_getMediaFile(array(':favicon.ico', ':favicon.png', ':favicon.svg', ':wiki:favicon.ico', ':wiki:favicon.png', ':wiki:favicon.svg'), false, $logoSize);
+ echo "\t<link rel=\"icon\" href=\"" . $link . "\" />\n";
+
+ // Apple Touch Icon
+ $logoSize = array();
+ $link = tpl_getMediaFile(array(':apple-touch-icon.png', ':wiki:apple-touch-icon.png', 'images/apple-touch-icon.png'), false, $logoSize);
+ echo "\t<link rel=\"apple-touch-icon\" href=\"" . $link . "\" />\n";
+
+}
+
+/**
+ * inserts the Cookies banner, if appropriate.
+ * This is based on Michal Koutny’s "cookielaw" plugin
+ *
+ * @param string $prefix to be added before each line
+ */
+function my_cookiebanner($prefix = '') {
+
+ // get the configuration settings:
+ $msg = tpl_getConf('cookiemsg', '(no message configured)');
+ $position = tpl_getConf('cookiepos', 'bottom');
+ $link = tpl_getConf('cookielink', 'about:cookies');
+
+ // if the cookie is already set or position is set to hide, do nothing.
+ if ( isset($_COOKIE['cookielaw']) or $position == 'hide') {
+ return;
+ }
+
+ // output the HTML code:
+ echo $prefix . "<div id=\"cookiebanner\" class=\"cb_" . $position . "\">\n";
+ echo $prefix . "\t<p class=\"cb_info\"><span class=\"cb_icon\"></span>\n";
+ echo $prefix . "\t\t<span class=\"cb_msg\">". $msg . "</span>\r";
+ echo $prefix . "\t</p>\n";
+ echo $prefix . "\t<p class=\"cb_action\">\n";
+ echo $prefix . "\t\t<button>" . hsc(tpl_getLang('cookie_consent')) . "</button>\n";
+ echo $prefix . "\t\t";
+ if ( substr($link, 0, 7) == 'http://' || substr($link, 0, 8) == 'https://') {
+ echo '<a href="' . $link . '" target="_blank">' . hsc(tpl_getLang('cookie_linktext')) . '</a>';
+ } else {
+ tpl_pagelink($link, tpl_getLang('cookie_linktext'));
+ }
+ echo $prefix . "\n\t</p>\n" . $prefix . "</div>\n";
+
+}
+
+/**
+ * inserts the Languages menu, if appropriate.
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ * @author Andreas Gohr <andi@splitbrain.org>
+ *
+ * @param string $prefix to be added before each line
+ * @param string $place the location from where it is called
+ * @param string $checkage should the age of the translation be checked?
+ */
+function my_langmenu($prefix, $place, $checkage = true) {
+
+ global $INFO;
+ global $conf;
+
+ // the current page language:
+ $lang = $conf['lang'];
+
+ /* get the config option: */
+ $config = tpl_getConf('langmenu', 'none');
+
+ /* only shw the menu if this is called from the right place */
+ if ($config == $place) {
+
+ /* collect the output: */
+ $out = '';
+
+ /* try to load the plugin: */
+ $trans = plugin_load('helper','translation');
+
+ /* plugin available? */
+ if ($trans) {
+
+ if (!$trans->istranslatable($INFO['id'])) return '';
+ if ($checkage) $trans->checkage();
+
+ [, $idpart] = $trans->getTransParts($INFO['id']);
+
+ $asMenu = ($place == 'tb'); // display as menu only in toolbar!
+
+ $out .= "{$prefix}<div id=\"{$place}Languages\">\n";
+
+ // create the header item
+
+ if ($asMenu) { // show as menu (toolbar)
+
+ // get the language name (in the local language)
+ $langName = htmlentities($trans->getLocalName($lang));
+
+ /* prepare the menu icon (note that the language code and name are embedded! */
+ $svg = "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><title>{$langName}</title><path d='M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4C22,2.89 21.1,2 20,2Z' /><text lengthAdjust='spacingAndGlyphs' x='50%' y='47%' dominant-baseline='middle' text-anchor='middle' style='font-size:50%'>{$lang}</text></svg>";
+
+ // prepare the menu button:
+ $out .= "{$prefix}\t<button id=\"langButton\" aria-haspopup=\"menu\" aria-controls=\"langMenuWrapper\" aria-expanded=\"false\">\n";
+ $out .= "{$prefix}\t\t{$svg}\n";
+ $out .= "{$prefix}\t\t<span class=\"sronly\">" . $trans->getLang('translations') . "</span>\n{$prefix}\t</button>\n";
+
+ } else { // show as list (sidebar)
+
+ // show title (only if the option is configured)
+ if (isset($trans->opts['title'])) {
+
+ // get a localized headline text
+ $headline = tpl_getLang('languages');
+
+ // should a link to the about page be added?
+ $about = $trans->getConf('about'); /* get the about link */
+ if ($about !== '') {
+ /* localized about links? */
+ if ($trans->getConf('localabout')) {
+ [, $aboutid] = $trans->getTransParts($about);
+ [$about, ] = $trans->buildTransID($lang, $aboutid);
+ $about = cleanID($about);
+ }
+ // build the link:
+ $headline = html_wikilink($about, $headline);
+ }
+ /* complete the headline */
+ $out .= "{$prefix}\t<h3><span>" . $headline . "</span></h3>\n";
+ }
+ }
+
+ /* build the menu content */
+ $out .= "{$prefix}\t<div id=\"langMenu" . ( $asMenu ? 'Wrapper" role="menu" style="display: none"' : 'List"') . ">\n"
+ . "{$prefix}\t\t<ul id=\"lang" . ( $asMenu ? 'Menu" role="group"' : 'List"' ) . ">\n";
+
+ // loop over each language and add it to the menu:
+ foreach ($trans->translations as $t) {
+ $l = ( $t !== '' ? $t : $lang );
+
+ [$trg, $lng] = $trans->buildTransID($t, $idpart);
+ $trg = cleanID($trg);
+ $exists = page_exists($trg, '', false);
+ $filter = tpl_getConf('langfilter', 'all');
+
+ /* only show if translation exists? */
+ if ($exists || $filter === 'all') {
+ $class = 'wikilink' . ( $exists ? '1' : '2');
+ $link = wl($trg);
+ $current = ($lng == $lang);
+
+ $out .= "{$prefix}\t\t\t<li" . ( $asMenu ? ' role="presentation"' : '' ). ( $current ? ' class="current"' : '' ) . ">\n";
+ $out .= "{$prefix}\t\t\t\t<a href=\"{$link}\" lang=\"{$lng}\" hreflang=\"{$lng}\" class=\"{$class}\"" . ( $asMenu ? ' role="menuitem"' : '' ) . '><bdi>'. $trans->getLocalName($lng) . "</bdi></a>\n";
+ $out .= "{$prefix}\t\t\t</li>\n";
+ }
+ }
+
+ // close all open elements:
+ $out .= "{$prefix}\t\t</ul>\n"
+ . "{$prefix}\t</div>\n"
+ . "{$prefix}</div>\n";
+ }
+ echo $out; // done.
+ }
+} \ No newline at end of file
diff --git a/templates/55/ad-hominem/rest/pageinfo.php b/templates/55/ad-hominem/rest/pageinfo.php
new file mode 100644
index 0000000..2280181
--- /dev/null
+++ b/templates/55/ad-hominem/rest/pageinfo.php
@@ -0,0 +1,84 @@
+<?php
+/**
+ * DokuWiki Information about a page in JSON format
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Sascha Leib <sascha.leib (at) kolmio.com>
+ */
+
+header('Content-Type: application/json');
+header('Access-Control-Allow-Origin: *');
+
+//ini_set('display_errors', '1');
+
+/* connect to DokuWiki: */
+if(!defined('NOSESSION')) define('NOSESSION',true); // we do not use a session or authentication here (better caching)
+if (!defined('DOKU_INC')) { define('DOKU_INC', __DIR__ . '/../../../../'); }
+require_once(DOKU_INC . 'inc/init.php');
+
+/* get the output style (can be 'preview' or 'all') */
+$style = strtolower($_GET['v']);
+if ($style !== 'preview') { $style = 'all'; }
+
+/* initialize the storage: */
+$result = [
+ 'type' => 'error'
+];
+
+/* find the page ID */
+$id = $_GET['id'];
+
+if ($id !== null) {
+
+ /* get all metadata; */
+ $meta = p_get_metadata($id);
+
+ if ($meta['title'] && $meta['title'] !== null) {
+
+ if ($style == 'preview') {
+ $result['type'] = 'preview';
+ } else {
+ $result['type'] = 'standard';
+ $result['pageid'] = $id;
+ $result['lang'] = $conf['lang'];
+ }
+
+ $result['title'] = $meta['title'];
+
+ /* The page URL(s) */
+ $url = wl($id);
+
+ if ($style == 'preview') {
+ $result['content_urls'] = [
+ 'desktop' => [
+ 'page' => wl($id)
+ ]
+ ];
+ } else {
+ $url = $conf['baseurl'] . wl($id);
+ $set = [
+ 'page' => $url,
+ 'revisions' => $url . '?do=revisions',
+ 'edit' => $url . '?do=edit'
+ ];
+ $result['content_urls'] = [
+ 'desktop' => $set,
+ 'mobile' => $set
+ ];
+ }
+
+ /* extract the first paragraph:*/
+ $parts = explode("\n", $meta['description']['abstract']);
+ $result['extract'] = $parts[2];
+ $result['extract_html'] = '<p>'.$parts[2].'</p>';
+
+ } else {
+ $result['extract'] = 'Error: page does not exist.';
+ $result['extract_html'] = '<p><strong>' . $result['extract'] . '</strong></p>';
+ }
+ // $result['conf'] = $conf; /* WARNING: this may expose your configuration to the Internet. Use only for debugging! */
+ // $result['meta'] = $meta; /* uncomment if you need additional meta information */
+}
+
+/* output the result: */
+echo json_encode($result); \ No newline at end of file
diff --git a/templates/55/ad-hominem/script.js b/templates/55/ad-hominem/script.js
new file mode 100644
index 0000000..46a2e5d
--- /dev/null
+++ b/templates/55/ad-hominem/script.js
@@ -0,0 +1,356 @@
+/**
+ * Page scripts for Ad Hominem Info Template
+ *
+ * @author Sascha Leib <sascha@leib.be>
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ */
+
+/* everything is contained in the $p namespace: */
+$p = {
+
+ /* called to initialize the entire script */
+ init: function() {
+
+ $p.cookie_banner.init();
+ $p.linkinfo.init();
+ $p.search.init();
+ $p.togglers.init();
+ $p.langMenu.init();
+
+ },
+
+ /* link information */
+ linkinfo: {
+ init: function() {
+
+ /* find all links in the main section */
+ var main = document.getElementById("main-layout");
+ var al = main.getElementsByTagName("a");
+ Array.prototype.forEach.call(al, function (a) {
+
+ Object.entries($p.linkinfo._restURLs).forEach((c) => {
+ var cls = c[0];
+ if (a.classList.contains(cls)) {
+ a.addEventListener('mouseover', $p.linkinfo._linkHoverCallback);
+ }
+ });
+ });
+ },
+
+ /* pre-defined REST API URLs for different sites. */
+ /* variables are enclosed in %, allowed vars are: */
+ /* - basedir = this site's basedir (e.g. "/"), */
+ /* - id = the data id of the link (internal only) */
+ /* - ln = the link name (e.g. for Wikipedia links) */
+ /* types can be 'internal', 'wikimedia', or 'ahtpl' */
+ /* for other sites using this template. */
+ _restURLs : {
+ 'wikilink1' : {
+ url: '%basedir%lib/tpl/ad-hominem/rest/pageinfo.php?id=%id%&v=preview',
+ type:'internal'
+ },
+ 'iw_wp' : {
+ url:'https://en.wikipedia.org/api/rest_v1/page/summary/%id%',
+ type:'wikimedia'
+ },
+ 'iw_wpfr' : {
+ url:'https://fr.wikipedia.org/api/rest_v1/page/summary/%id%',
+ type:'wikimedia'
+ },
+ 'iw_wpde' : {
+ url:'https://de.wikipedia.org/api/rest_v1/page/summary/%id%',
+ type:'wikimedia'
+ },
+ 'iw_wpes' : {
+ url:'https://es.wikipedia.org/api/rest_v1/page/summary/%id%',
+ type:'wikimedia'
+ },
+ 'iw_wppl' : {
+ url:'https://pl.wikipedia.org/api/rest_v1/page/summary/%id%',
+ type:'wikimedia'
+ },
+ 'iw_wpja' : {
+ url:'https://it.wikipedia.org/api/rest_v1/page/summary/%id%',
+ type:'wikimedia'
+ },
+ 'iw_wpru' : {
+ url:'https://ru.wikipedia.org/api/rest_v1/page/summary/%id%',
+ type:'wikimedia'
+ },
+ 'iw_meta' : {
+ url:'https://meta.wikipedia.org/api/rest_v1/page/summary/%id%',
+ type:'wikimedia'
+ },
+ 'iw_fo' : {
+ url:'https://fallacies.online/wiki/lib/tpl/ad-hominem/rest/pageinfo.php?id=%id%&v=preview',
+ base:'https://fallacies.online/wiki/',
+ type:'ahtpl'
+ },
+ 'iw_dfo' : {
+ url:'https://denkfehler.online/wiki/lib/tpl/ad-hominem/rest/pageinfo.php?id=%id%&v=preview',
+ base:'https://denkfehler.online/wiki/',
+ type:'ahtpl'
+ }
+ },
+ /* note: this covers the internal links and the most common
+ wikipedia lang versions. If you know about any other
+ relevant sites to be added here, let the author of this
+ template know (ad@hominem.info) */
+
+ /* TODO: mechanism to dynamically add sites by site admin */
+
+ /* callback for the onhover event of links: */
+ _linkHoverCallback: function() {
+
+ var a = jQuery(this);
+ var hi = jQuery.data(this, 'has-info');
+ var href = jQuery(this).attr('href');
+ var wid = null;
+ var url = null;
+ var type = '';
+
+ /* only if the info hasn't been set yet: */
+ if (hi == undefined || hi == '') {
+
+ // remember that we are now working on the link:
+ jQuery.data(this, 'has-info', '0');
+
+ // find the URL to query:
+ try {
+ for (var cls in $p.linkinfo._restURLs) {
+ if (a.hasClass(cls)) {
+ url = $p.linkinfo._restURLs[cls].url;
+ type = $p.linkinfo._restURLs[cls].type;
+ break;
+ }
+ };
+ } catch (e) {}
+
+ /* get the ID to request: */
+ switch(type) {
+
+ case 'internal': // internal links
+ url = url.replace('%basedir%', (typeof BASEDIR!=='undefined'?BASEDIR:'/'));
+ wid = jQuery(this).data('wiki-id');
+ break;
+ case 'wikimedia': // wikipedia sites
+ wid = href.substring(href.lastIndexOf('/')+1);
+ break;
+ case 'ahtpl': // Other sites with this template
+ wid = href.substring($p.linkinfo._restURLs[cls].base.length).replaceAll('/', ':');
+ break;
+ default: // unknown -> skip
+ return;
+ }
+
+ // URL & ID found?
+ if (url !== null && typeof wid !== 'undefined') {
+
+ /* load the page info */
+ jQuery.ajax({
+ url: url.replace('%id%', encodeURIComponent(wid)),
+ context: a,
+ dataType: 'json',
+ crossDomain: true,
+ error: function(xhr, msg, e) {
+ console.error(msg);
+ },
+ success: function(data, msg, xhr) {
+ // build the new title for the element:
+ if (typeof data.title !== 'undefined') {
+ jQuery(this).attr('title', data.title + "\n" + data.extract);
+ jQuery.data(this, 'has-info', '1');
+ }
+ },
+ complete: function() {
+ if (jQuery.data(this, 'has-info') == '0') {
+ jQuery.removeData(this, 'has-info');
+ }
+ }
+ });
+ }
+ }
+ }
+ },
+
+ /* anything related to the search */
+ search: {
+
+ /* initializer */
+ init: function() {
+ $p.search.gui.init();
+ },
+
+ /* the search gui */
+ gui: {
+
+ _container: null,
+ _elements: { field: null, clear: null, search: null },
+
+ /* init the gui */
+ init: function() {
+
+ try {
+
+ /* find all the search elements: */
+ var form = document.getElementById('dw__search');
+
+ var div = form.getElementsByClassName('search-field')[0];
+ $p.search.gui._container = div;
+
+ var field = div.getElementsByTagName('input')[0];
+ $p.search.gui._elements.field = field;
+ field.addEventListener('focus', $p.search.gui.__elementFocus);
+ field.addEventListener('blur', $p.search.gui.__elementBlur);
+
+ var buttons = div.getElementsByTagName('button');
+ Array.prototype.forEach.call(buttons, function(b) {
+ var type = b.getAttribute('type');
+ if (type == 'reset') {
+ $p.search.gui._elements.clear = b;
+ } else if (type == 'submit') {
+ $p.search.gui._elements.search = b;
+ }
+ b.addEventListener('focus', $p.search.gui.__elementFocus);
+ b.addEventListener('blur', $p.search.gui.__elementBlur);
+ });
+
+ } catch (e) {
+ console.warn("Can’t initialize search form.");
+ console.error(e);
+ }
+ },
+
+ /* call back for fields */
+ __elementFocus: function() {
+ $p.search.gui._container.classList.add("focus");
+ },
+ __elementBlur: function() {
+ $p.search.gui._container.classList.remove("focus");
+
+ }
+ }
+ },
+
+ /* expaning sections, for menus, etc. */
+ togglers: {
+
+ /* initialize togglers */
+ init: function() {
+
+ const togglers = document.getElementsByClassName("toggle");
+
+ Array.prototype.forEach.call(togglers, function(t) {
+
+ /* add default state */
+ if (!(t.classList.contains('show') || (t.classList.contains('hide')))) {
+ t.classList.add('auto');
+ }
+
+ /* add a callback to the toggler buttons */
+ var btn = t.getElementsByClassName('tg_button');
+ Array.prototype.forEach.call(btn, function(b) {
+ b.addEventListener('click', $p.togglers._buttonCallback);
+ b.classList.add('active');
+ });
+
+ });
+ },
+
+ /* callback for the toggler button click */
+ _buttonCallback: function() {
+
+ var t = this.parentNode;
+
+ /* current state of the toggler: */
+ var state = 'auto';
+ if (t.classList.contains('show')) state = 'show';
+ if (t.classList.contains('hide')) state = 'hide';
+ if (t.classList.contains('alt')) state = 'alt';
+
+ /* set new state: */
+ var newState = 'alt';
+ if (state == 'show') { newState = 'hide' }
+ else if (state == 'hide') { newState = 'show' }
+ else if (state == 'alt') { newState = 'auto' }
+
+ t.classList.remove(state);
+ t.classList.add(newState);
+
+ }
+ },
+
+ /* the language menu, if present */
+ langMenu: {
+ /* initialize lang menu */
+ init: function() {
+
+ const langMenu = document.getElementById('langButton');
+ if (langMenu) {
+ jQuery(langMenu).click($p.langMenu._btnCallback);
+ }
+ },
+
+ _btnCallback: function(e) {
+
+ const btn = e.currentTarget;
+ if (btn) {
+ const menuId = btn.getAttribute('aria-controls');
+ const expanded = (btn.getAttribute('aria-expanded') == 'true');
+ if (menuId) {
+ const menu = document.getElementById(menuId);
+ if (menu) {
+ if (expanded) {
+ jQuery(menu).hide();
+ btn.setAttribute('aria-expanded', 'false')
+ } else {
+ jQuery(menu).show();
+ btn.setAttribute('aria-expanded', 'true')
+ }
+ }
+ }
+ }
+ }
+
+ },
+ /* Cookies info banner */
+ cookie_banner: {
+
+ /* initialize Cookies info banner */
+ init: function() {
+
+ // find the cookiebanner elements:
+ var btn = jQuery('#cookiebanner button');
+
+ var cookie = jQuery.cookie('cookielaw');
+
+ if ( (cookie !== '1') && (btn.length >= 1) ) { // if found only
+
+ // assign callback:
+ jQuery(btn).click($p.cookie_banner._buttonCallback);
+
+ // show the banner
+ jQuery('#cookiebanner').show();
+
+ // set focus:
+ jQuery(btn).first().focus();
+ }
+ },
+
+ /* callback for the "OK" button */
+ _buttonCallback: function() {
+
+ const date = new Date();
+ date.setFullYear(date.getFullYear() + 1);
+
+ var path = ( typeof BASEDIR !== 'undefined' ? BASEDIR : '/');
+
+ document.cookie = 'cookielaw=1; path=' + path + '; expires=' + date.toUTCString() + '; SameSite=Lax';
+ jQuery('#cookiebanner').remove();
+ }
+ }
+};
+
+/* load the script when the DOM is ready */
+
+window.addEventListener("DOMContentLoaded", $p.init);
diff --git a/templates/55/ad-hominem/style.ini b/templates/55/ad-hominem/style.ini
new file mode 100644
index 0000000..06b120f
--- /dev/null
+++ b/templates/55/ad-hominem/style.ini
@@ -0,0 +1,136 @@
+; Please see http://php.net/manual/en/function.parse-ini-file.php
+; for limitations of the ini format used here
+
+; To extend this file or make changes to it, it is recommended to create
+; a local conf/tpl/<template-folder-name>/style.ini file to prevent losing
+; any changes after an upgrade.
+; Please don’t forget to copy the section your changes should be under
+; (i.e. [stylesheets] or [replacements]) into that file as well.
+
+; Define the stylesheets your template uses here. The second value
+; defines for which output media the style should be loaded. Currently
+; print, screen and all are supported.
+; You can reference CSS and LESS files here. Files referenced here will
+; be checked for updates when considering a cache rebuild while files
+; included through LESS’ @import statements are not
+
+[stylesheets]
+
+css/layout.less = all
+css/content.less = all
+css/links.less = all
+css/_cookies.css = screen
+css/_media_popup.css = screen
+css/_media_fullscreen.css = screen
+css/_fileuploader.css = screen
+css/_tabs.css = screen
+css/_links.css = screen
+css/_footnotes.css = screen
+css/_search.less = screen
+css/_recent.css = screen
+css/_diff.css = screen
+css/_edit.css = screen
+css/_modal.css = screen
+css/_forms.css = screen
+css/_admin.less = screen
+css/_languages.less = screen
+css/structure.less = screen
+css/design.less = screen
+css/usertools.less = screen
+css/pagetools.less = screen
+css/content.less = screen
+css/plugins.less = screen
+
+css/print.less = print
+
+
+; This section is used to configure some placeholder values used in
+; the stylesheets. Changing this file is the simplest method to
+; give your wiki a new look.
+; Placeholders defined here will also be made available as LESS variables
+; (with surrounding underscores removed, and the prefix @ini_ added)
+
+[replacements]
+
+;--------------------------------------------------------------------------
+;------ guaranteed dokuwiki color placeholders that every plugin can use
+
+; main text and background colors
+__text__ = "#111" ; @ini_text
+__headlines__ = "#333" ; @ini_headlines
+__background__ = "#FFF" ; @ini_background
+; alternative text and background colors
+__text_alt__ = "#333" ; @ini_text_alt
+__background_alt__ = "#EEE" ; @ini_background_alt
+; neutral text and background colors
+__text_neu__ = "#666" ; @ini_text_neu
+__background_neu__ = "#DDD" ; @ini_background_neu
+; border color
+__border__ = "#CCC" ; @ini_border
+; blockquote marker
+__blockquote__ = "#AAA" ; @ini_blockquote
+
+; highlighted text (e.g. search snippets)
+__highlight__ = "#fcffaa" ; @ini_highlight
+
+; default link color
+__link__ = "#1F53A8" ; @ini_link
+
+; border color
+__separator__ = "#666" ; @ini_separator
+
+;--------------------------------------------------------------------------
+
+__background_site__ = "#fbfaf9" ; @ini_background_site
+
+; these are used for wiki links
+__existing__ = "#006500" ; @ini_existing
+__missing__ = "#A92700" ; @ini_missing
+__inpage__ = "#494F52" ; @ini_inpage
+
+; site and sidebar widths
+__site_width__ = "950pt" ; @ini_site_width
+__sidebar_width__ = "280px" ; @ini_sidebar_width
+__toc_width__ = "200px" ; @ini_toc_width
+; cut off points for mobile devices
+__tablet_width__ = "950px" ; @ini_tablet_width
+__phone_width__ = "670px" ; @ini_phone_width
+
+__theme_color__ = "#232327" ; @ini_theme_color: theme_color of the web app
+
+; for focusing on element:
+__focus_color__ = "rgba(255,136,0,.75)" ; @ini_focus_color: focus colour (Accessibility)
+
+;---------------------------------------------- Dark Mode Colours -
+
+__background_site_dark__ = "#0C0C0D" ; @ini_background_site_dark
+__background_dark__ = "#232327" ; @ini_background_dark
+__background_alt_dark__ = "#39393D" ; @ini_background_alt_dark
+__headlines_dark__ = "#ADADB3" ; @ini_headlines_dark
+__text_dark__ = "#CCC" ; @ini_text_dark
+__text_alt_dark__ = "#AEAEAE" ; @ini_text_alt_dark
+__link_dark__ = "#76B0FD" ; @ini_link_dark
+__existing_dark__ = "#00CA1B" ; @ini_existing_dark
+__missing_dark__ = "#FF9233" ; @ini_missing_dark
+__inpage_dark__ = "#A7AEA6" ; @ini_inpage_dark
+__border_dark__ = "#38383D" ; @ini_border_dark
+__blockquote_dark__ = "#3b3b42" ; @ini_blockquote_dark
+
+
+;----------------------------------------------- Font families ----
+
+; The default font settings for the site:
+__default_fonts__ = "Helvetica Neue,Helvetica,Arial,Roboto,sans-serif" ; @ini_default_fonts
+__default_font_size__ = "14pt" ; @ini_default_font_size
+__headline_fonts__ = "Georgia,Palatino,Baskerville,serif" ; @ini_headline_fonts
+
+__alt_fonts__ = "Georgia,Palatino,Baskerville,serif" ; @ini_alt_fonts
+__alt_font_size__ = "92%" ; @ini_alt_font_size
+__mono_fonts__ = "Consolas,Courier New,Courier,monospace" ; @ini_mono_fonts
+__math_fonts__ = "STIX Two Math,Cambria Math,Latin Modern Math,Times New Roman,serif" ; @ini_math_fonts
+
+; ---------------------------------------------- Print Settings ----
+
+__print_default_fonts__ = "Georgia,Times New Roman,Garamond,serif" ; @ini_print_default_fonts
+__print_title_fonts__ = "Helvetica Neue,Helvetica,Arial,sans-serif" ; @ini_print_title_fonts
+__print_title_color__ = "#333" ; @ini_print_title_color
diff --git a/templates/55/ad-hominem/template.info.txt b/templates/55/ad-hominem/template.info.txt
new file mode 100644
index 0000000..75d65e9
--- /dev/null
+++ b/templates/55/ad-hominem/template.info.txt
@@ -0,0 +1,7 @@
+base ad-hominem
+author Sascha Leib
+email ad@hominem.info
+date 2024-10-07
+name Ad Hominem Template
+desc A flexible, lightweight and modernised revision of the DokuWIki default template, optimized for DokuWiki "Kaos"
+url https://www.dokuwiki.org/template:ad-hominem
diff --git a/templates/55/ad-hominem/tpl_footer.php b/templates/55/ad-hominem/tpl_footer.php
new file mode 100644
index 0000000..e3add96
--- /dev/null
+++ b/templates/55/ad-hominem/tpl_footer.php
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Template footer, included in the main and detail files
+ */
+
+// must be run from within DokuWiki
+if (!defined('DOKU_INC')) die();
+ ?> <div id="ftLicenseButtons">
+ <hr class="noprint" />
+ <p class="license">
+ <?php tpl_license('', false, false, false); tpl_includeFile('licenseinfo.html'); ?>
+ </p>
+<?php if($conf['license'] != null): ?> <div class="buttons noprint">
+ <?php
+ tpl_license('button', true, false, false);
+
+ $target = ($conf['target']['extern']) ? 'target="'.$conf['target']['extern'].'"' : '';
+ ?>
+ <a href="https://www.dokuwiki.org/donate" title="Donate" <?php echo $target?>><img src="<?php echo tpl_basedir(); ?>images/button-donate.gif" width="80" height="15" alt="Donate" /></a>
+ <a href="https://php.net" title="Powered by PHP" <?php echo $target?>><img src="<?php echo tpl_basedir(); ?>images/button-php.gif" width="80" height="15" alt="Powered by PHP" /></a>
+ <a href="//validator.w3.org/check/referer" title="Valid HTML5" <?php echo $target?>><img src="<?php echo tpl_basedir(); ?>images/button-html5.png" width="80" height="15" alt="Valid HTML5" /></a>
+ <a href="//jigsaw.w3.org/css-validator/check/referer?profile=css3" title="Valid CSS" <?php echo $target?>><img src="<?php echo tpl_basedir(); ?>images/button-css.png" width="80" height="15" alt="Valid CSS" /></a>
+ <a href="https://dokuwiki.org/" title="Driven by DokuWiki" <?php echo $target?>><img src="<?php echo tpl_basedir(); ?>images/button-dw.png" width="80" height="15" alt="Driven by DokuWiki" /></a>
+ </div><?php endif; ?>
+
+ </div>
diff --git a/templates/55/ad-hominem/tpl_searchform.php b/templates/55/ad-hominem/tpl_searchform.php
new file mode 100644
index 0000000..7e7208d
--- /dev/null
+++ b/templates/55/ad-hominem/tpl_searchform.php
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Search Form Include
+ */
+
+// must be run from within DokuWiki
+if (!defined('DOKU_INC')) die();
+?> <form action="<?php echo wl(); ?>" method="get" role="search" class="search doku_form" id="dw__search" accept-charset="utf-8">
+ <input type="hidden" name="do" value="search" />
+ <input type="hidden" name="id" value="<?php echo htmlentities($ID); ?>" />
+ <div class="search-field">
+ <label for="qsearch__in" class="sronly"><?php echo htmlentities($lang['btn_search']); ?></label>
+ <input name="q" type="text" class="edit" title="<?php echo $lang['btn_search']; ?> [F]" accesskey="f" placeholder="<?php echo $lang['btn_search']; ?>" autocomplete="off" id="qsearch__in" value="<?php echo ($ACT === 'search' ? $QUERY : ''); ?>" /><button value="0" type="reset" title="<?php echo htmlentities($lang['btn_delete']); ?>"><span class="sr-only"><?php echo htmlentities($lang['btn_delete']); ?></span></button><button value="1" type="submit" title="<?php echo htmlentities($lang['btn_search']); ?>"><span class="sr-only"><?php echo htmlentities($lang['btn_search']); ?></span></button>
+ </div>
+ <div class="search-popup">
+ <div id="qsearch__out" class="ajax_qsearch JSpopup"></div>
+ </div>
+ </form>