<style title="CRMP ONLINE(Dark)" description="" user_selectable="1" base_version_id="2021370" export_version="2">
<assets>
<asset key="dt_theme_files" path="styles/pad"/>
</assets>
<templates>
<template title="PAGE_CONTAINER" type="public" addon_id="XF" version_id="2021370" version_string="2.2.13">
<![CDATA[ <!DOCTYPE html> <html id="XF" lang="{$xf.language.language_code}" dir="{$xf.language.text_direction}" data-app="public" data-template="{$template}" data-container-key="{$containerKey}" data-content-key="{$contentKey}" data-logged-in="{{ $xf.visitor.user_id ? 'true' : 'false' }}" data-cookie-prefix="{$xf.cookie.prefix}" data-csrf="{{ csrf_token()|escape('js') }}" class="has-no-js {{ $template ? 'template-' . $template : '' }}" {{ $xf.runJobs ? ' data-run-jobs=""' : '' }}> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> <xf:set var="$siteName" value="{$xf.options.boardTitle}" /> <xf:set var="$h1"><xf:h1 fallback="{$siteName}" /></xf:set> <xf:set var="$description"><xf:description /></xf:set> <title><xf:title formatter="%s | %s" fallback="{$xf.options.boardTitle}" page="{$pageNumber}" /></title> <link rel="manifest" href="{{ base_url('webmanifest.php') }}"> <xf:if is="property('metaThemeColor')"> <meta name="theme-color" content="{{ parse_less_color(property('metaThemeColor')) }}" /> </xf:if> <meta name="apple-mobile-web-app-title" content="{{ $xf.options.boardShortTitle ?: $xf.options.boardTitle }}"> <xf:if is="property('publicIconUrl')"> <link rel="apple-touch-icon" href="{{ base_url(property('publicIconUrl', true)) }}"> <xf:elseif is="property('publicMetadataLogoUrl')" /> <link rel="apple-touch-icon" href="{{ base_url(property('publicMetadataLogoUrl')) }}" /> </xf:if> <xf:foreach loop="$head" value="$headTag"> {$headTag} </xf:foreach> <xf:if is="!$head.meta_site_name && $siteName is not empty"> <xf:macro template="metadata_macros" name="site_name" arg-siteName="{$siteName}" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_type"> <xf:macro template="metadata_macros" name="type" arg-type="website" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_title"> <xf:macro template="metadata_macros" name="title" arg-title="{{ page_title() ?: $siteName }}" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_description && $description is not empty && $pageDescriptionMeta"> <xf:macro template="metadata_macros" name="description" arg-description="{$description}" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_share_url"> <xf:macro template="metadata_macros" name="share_url" arg-shareUrl="{$xf.fullUri}" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_image_url && property('publicMetadataLogoUrl')"> <xf:macro template="metadata_macros" name="image_url" arg-imageUrl="{{ base_url(property('publicMetadataLogoUrl'), true) }}" arg-output="{{ true }}" /> </xf:if> <xf:macro template="helper_js_global" name="head" arg-app="public" /> <xf:if is="property('publicFaviconUrl')"> <link rel="icon" type="image/png" href="{{ base_url(property('publicFaviconUrl'), true) }}" sizes="32x32" /> </xf:if> <xf:include template="google_analytics" /> </head> <body data-template="{$template}"> <div class="p-pageWrapper" id="top"> <xf:if contentcheck="true"> <div class="p-staffBar"> <div class="p-staffBar-inner hScroller" data-xf-init="h-scroller"> <div class="hScroller-scroll"> <xf:contentcheck> <xf:if is="$xf.visitor.is_moderator && $xf.session.unapprovedCounts.total"> <a href="{{ link('approval-queue') }}" class="p-staffBar-link badgeContainer badgeContainer--highlighted" data-badge="{$xf.session.unapprovedCounts.total|number}"> {{ phrase('approval_queue') }} </a> </xf:if> <xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId && $xf.session.reportCounts.total"> <a href="{{ link('reports') }}" class="p-staffBar-link badgeContainer badgeContainer--visible {{ ($xf.session.reportCounts.total && ($xf.session.reportCounts.lastBuilt > $xf.session.reportLastRead) OR $xf.session.reportCounts.assigned) ? ' badgeContainer--highlighted' : '' }}" data-badge="{{ $xf.session.reportCounts.assigned ? $xf.session.reportCounts.assigned|number . ' / ' . $xf.session.reportCounts.total|number : $xf.session.reportCounts.total|number }}" title="{{ $xf.session.reportCounts.lastBuilt ? phrase('last_report_update:')|for_attr . ' ' . date_time($xf.session.reportCounts.lastBuilt) : '' }}"> {{ phrase('reports') }} </a> </xf:if> <xf:if contentcheck="true"> <a class="p-staffBar-link menuTrigger" data-xf-click="menu" data-xf-key="alt+m" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">{{ phrase('moderator') }}</a> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('moderator_tools') }}</h4> <xf:contentcheck> <!--[XF:mod_tools_menu:top]--> <xf:if is="$xf.visitor.is_moderator"> <a href="{{ link('approval-queue') }}" class="menu-linkRow">{{ phrase('approval_queue') }}</a> </xf:if> <xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId"> <a href="{{ link('reports') }}" class="menu-linkRow" title="{{ $xf.session.reportCounts.lastBuilt ? phrase('last_report_update:')|for_attr . ' ' . date_time($xf.session.reportCounts.lastBuilt) : '' }}">{{ phrase('reports') }}</a> </xf:if> <!--[XF:mod_tools_menu:bottom]--> </xf:contentcheck> </div> </div> </xf:if> <xf:if is="$xf.visitor.is_admin"> <a href="{{ base_url('admin.php') }}" class="p-staffBar-link" target="_blank">{{ phrase('admin') }}</a> </xf:if> </xf:contentcheck> </div> </div> </div> </xf:if> <xf:set var="$srcset">{{ property('publicLogoUrl2x') ? base_url(property('publicLogoUrl2x')) . ' 2x' : '' }}</xf:set> <xf:set var="$navHtml"> <nav class="p-nav"> <div class="p-nav-inner"> <xf:button class="button--plain p-nav-menuTrigger" data-xf-click="off-canvas" data-menu=".js-headerOffCanvasMenu" tabindex="0" aria-label="{{ phrase('menu')|for_attr }}"> <i aria-hidden="true"></i> </xf:button> <xf:if is="property('dt_text_logo')"> <div class="p-header-logo p-header-logo--text"> <a href="{{ ($xf.options.logoLink && $xf.homePageUrl) ? $xf.homePageUrl : link('index') }}"> {{ property('dt_text_logo') }} </a> </div> <xf:else /> <div class="p-header-logo p-header-logo--image"> <a href="{{ ($xf.options.logoLink && $xf.homePageUrl) ? $xf.homePageUrl : link('index') }}"> <img src="{{ base_url(property('publicLogoUrl')) }}" srcset="{$srcset}" alt="{$xf.options.boardTitle}" width="{{ property('publicLogoWidth') ?: '' }}" height="{{ property('publicLogoHeight') ?: '' }}" /> </a> </div> </xf:if> <div class="p-nav-scroller hScroller" data-xf-init="h-scroller" data-auto-scroll=".p-navEl.is-selected"> <div class="hScroller-scroll"> <ul class="p-nav-list js-offCanvasNavSource"> <xf:foreach loop="$navTree" key="$navSection" value="$navEntry" i="$i" if="{{ $navSection != $xf.app.defaultNavigationId }}"> <li> <xf:macro name="nav_entry" arg-navId="{$navSection}" arg-nav="{$navEntry}" arg-selected="{{ $navSection == $pageSection }}" arg-shortcut="{$i}" /> </li> </xf:foreach> </ul> </div> </div> <div class="p-nav-opposite"> <div class="p-navgroup p-account {{ $xf.visitor.user_id ? 'p-navgroup--member' : 'p-navgroup--guest' }}"> <xf:if is="$xf.visitor.user_id"> <xf:if is="$xf.visitor.user_state == 'rejected' OR $xf.visitor.user_state == 'disabled'"> <a href="{{ link('account') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--user"> <xf:avatar user="$xf.visitor" size="xxs" href="" title="" /> <span class="p-navgroup-linkText">{$xf.visitor.username}</span> </a> <a href="{{ link('logout', null, {'t': csrf_token()}) }}" class="p-navgroup-link"> <span class="p-navgroup-linkText">{{ phrase('log_out') }}</span> </a> <xf:else /> <a href="{{ link('account') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--user {{ ($xf.visitor.conversations_unread OR $xf.visitor.alerts_unread) ? 'badgeContainer badgeContainer--highlighted' : '' }}" data-badge="{{ ($xf.visitor.conversations_unread + $xf.visitor.alerts_unread)|number }}" data-xf-click="menu" data-xf-key="{{ phrase('shortcut.visitor_menu')|for_attr }}" data-menu-pos-ref="< .p-navgroup" title="{$xf.visitor.username}" aria-expanded="false" aria-haspopup="true"> <xf:avatar user="$xf.visitor" size="xxs" href="" title="" /> <span class="p-navgroup-linkText">{$xf.visitor.username}</span> </a> <div class="menu menu--structural menu--wide menu--account" data-menu="menu" aria-hidden="true" data-href="{{ link('account/visitor-menu') }}" data-load-target=".js-visitorMenuBody"> <div class="menu-content js-visitorMenuBody"> <div class="menu-row"> {{ phrase('loading...') }} </div> </div> </div> <a href="{{ link('conversations') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--conversations js-badge--conversations badgeContainer{{ $xf.visitor.conversations_unread ? ' badgeContainer--highlighted' : '' }}" data-badge="{$xf.visitor.conversations_unread|number}" data-xf-click="menu" data-xf-key="{{ phrase('shortcut.conversations_menu')|for_attr }}" data-menu-pos-ref="< .p-navgroup" title="{{ phrase('conversations')|for_attr }}" aria-label="{{ phrase('conversations')|for_attr }}" aria-expanded="false" aria-haspopup="true"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('nav_inbox') }}</span> </a> <div class="menu menu--structural menu--medium" data-menu="menu" aria-hidden="true" data-href="{{ link('conversations/popup') }}" data-nocache="true" data-load-target=".js-convMenuBody"> <div class="menu-content"> <h3 class="menu-header">{{ phrase('conversations') }}</h3> <div class="js-convMenuBody"> <div class="menu-row">{{ phrase('loading...') }}</div> </div> <div class="menu-footer menu-footer--split"> <div class="menu-footer-main"> <ul class="listInline listInline--bullet"> <li><a href="{{ link('conversations') }}">{{ phrase('show_all') }}</a></li> <xf:if is="$xf.visitor.canStartConversation()"> <li><a href="{{ link('conversations/add') }}">{{ phrase('start_new_conversation') }}</a></li> </xf:if> </ul> </div> </div> </div> </div> <a href="{{ link('account/alerts') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--alerts js-badge--alerts badgeContainer{{ $xf.visitor.alerts_unviewed ? ' badgeContainer--highlighted' : '' }}" data-badge="{$xf.visitor.alerts_unviewed|number}" data-xf-click="menu" data-xf-key="{{ phrase('shortcut.alerts_menu')|for_attr }}" data-menu-pos-ref="< .p-navgroup" title="{{ phrase('alerts')|for_attr }}" aria-label="{{ phrase('alerts')|for_attr }}" aria-expanded="false" aria-haspopup="true"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('nav_alerts') }}</span> </a> <div class="menu menu--structural menu--medium" data-menu="menu" aria-hidden="true" data-href="{{ link('account/alerts-popup') }}" data-nocache="true" data-load-target=".js-alertsMenuBody"> <div class="menu-content"> <h3 class="menu-header">{{ phrase('alerts') }}</h3> <div class="js-alertsMenuBody"> <div class="menu-row">{{ phrase('loading...') }}</div> </div> <div class="menu-footer menu-footer--split"> <div class="menu-footer-main"> <ul class="listInline listInline--bullet"> <li><a href="{{ link('account/alerts') }}">{{ phrase('show_all') }}</a></li> <li><a href="{{ link('account/alerts/mark-read') }}" class="js-alertsMarkRead">{{ phrase('mark_read') }}</a></li> <li><a href="{{ link('account/preferences') }}">{{ phrase('preferences') }}</a></li> </ul> </div> </div> </div> </div> </xf:if> <xf:else /> <xf:if is="property('dt_triggers_style') == 'option2'"> <a href="{{ link('login') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--logIn" data-xf-click="menu"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('log_in') }}</span> </a> <xf:else /> <a href="{{ link('login') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--logIn" data-xf-click="overlay" data-follow-redirects="on"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('log_in') }}</span> </a> </xf:if> <div class="menu menu--structural menu--medium" data-menu="menu" data-nav-id="userLogin" aria-hidden="true" data-href="{{ link('login')}}"></div> <xf:if is="$xf.options.registrationSetup.enabled"> <a href="{{ link('register') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--register" data-xf-click="overlay" data-follow-redirects="on"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('register') }}</span> </a> </xf:if> </xf:if> </div> <div class="p-navgroup p-discovery{{ !$xf.visitor.canSearch() ? ' p-discovery--noSearch' : '' }}"> <a href="{{ link('whats-new') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--whatsnew" aria-label="{{ phrase('whats_new')|for_attr }}" title="{{ phrase('whats_new')|for_attr }}"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('whats_new') }}</span> </a> <xf:if is="$xf.visitor.canSearch()"> <a href="{{ link('search') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--search" data-xf-click="menu" data-xf-key="{{ phrase('shortcut.search_menu')|for_attr }}" aria-label="{{ phrase('search')|for_attr }}" aria-expanded="false" aria-haspopup="true" title="{{ phrase('search')|for_attr }}"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('search') }}</span> </a> <div class="menu menu--structural menu--wide" data-menu="menu" aria-hidden="true"> <form action="{{ link('search/search') }}" method="post" class="menu-content" data-xf-init="quick-search"> <h3 class="menu-header">{{ phrase('search') }}</h3> <!--[XF:search_menu:above_input]--> <div class="menu-row"> <xf:if is="$searchConstraints"> <div class="inputGroup inputGroup--joined"> <xf:textbox name="keywords" placeholder="{{ phrase('search...') }}" aria-label="{{ phrase('search') }}" data-menu-autofocus="true" /> <xf:select name="constraints" class="js-quickSearch-constraint" aria-label="{{ phrase('search_within') }}"> <xf:option value="">{{ phrase('everywhere') }}</xf:option> <xf:foreach loop="$searchConstraints" key="$constraintName" value="$constraint"> <xf:option value="{$constraint|json}">{$constraintName}</xf:option> </xf:foreach> </xf:select> </div> <xf:else /> <xf:textbox name="keywords" placeholder="{{ phrase('search...') }}" aria-label="{{ phrase('search') }}" data-menu-autofocus="true" /> </xf:if> </div> <!--[XF:search_menu:above_title_only]--> <div class="menu-row"> <xf:checkbox standalone="true"> <xf:option name="c[title_only]"> <xf:label> {{ phrase('search_titles_only') }} <xf:if is="$xf.options.enableTagging"> <span tabindex="0" role="button" data-xf-init="tooltip" data-trigger="hover focus click" title="{{ phrase('tags_will_also_be_searched')|for_attr }}"> <xf:fa icon="far fa-question-circle" class="u-muted u-smaller" /> </span> </xf:if> </xf:label> </xf:option> </xf:checkbox> </div> <!--[XF:search_menu:above_member]--> <div class="menu-row"> <div class="inputGroup"> <span class="inputGroup-text" id="ctrl_search_menu_by_member">{{ phrase('by:') }}</span> <input type="text" class="input" name="c[users]" data-xf-init="auto-complete" placeholder="{{ phrase('member') }}" aria-labelledby="ctrl_search_menu_by_member" /> </div> </div> <div class="menu-footer"> <span class="menu-footer-controls"> <xf:button type="submit" class="button--primary" icon="search" /> <xf:button href="{{ link('search') }}">{{ phrase('advanced_search...') }}</xf:button> </span> </div> <xf:csrf /> </form> </div> </xf:if> </div> </div> </div> <xf:ad position="container_header" /> </nav> </xf:set> <xf:set var="$subNavHtml"> <xf:if is="$selectedNavChildren is not empty"> <div class="p-sectionLinks"> <div class="p-sectionLinks-inner hScroller" data-xf-init="h-scroller"> <div class="hScroller-scroll"> <ul class="p-sectionLinks-list"> <xf:foreach loop="$selectedNavChildren" key="$navId" value="$navEntry" i="$i"> <li> <xf:macro name="nav_entry" arg-navId="{$navId}" arg-nav="{$navEntry}" arg-shortcut="alt+{$i}" /> </li> </xf:foreach> </ul> </div> </div> </div> <xf:elseif is="{$selectedNavEntry}" /> <div class="p-sectionLinks p-sectionLinks--empty"></div> </xf:if> </xf:set> <xf:if is="property('publicNavSticky') == 'primary'"> <div class="p-navSticky p-navSticky--primary {{ ({$xf.visitor.is_moderator} && (property('dt_sticky_staff_tools'))) ? 'p-staffSticky' : '' }}" data-xf-init="sticky-header"> {$navHtml|raw} </div> {$subNavHtml|raw} <xf:elseif is="property('publicNavSticky') == 'all'" /> <div class="p-navSticky p-navSticky--all {{ ({$xf.visitor.is_moderator} && (property('dt_sticky_staff_tools'))) ? 'p-staffSticky' : '' }}" data-xf-init="sticky-header"> {$navHtml|raw} {$subNavHtml|raw} </div> <xf:else /> {$navHtml|raw} {$subNavHtml|raw} </xf:if> <div class="offCanvasMenu offCanvasMenu--nav js-headerOffCanvasMenu" data-menu="menu" aria-hidden="true" data-ocm-builder="navigation"> <div class="offCanvasMenu-backdrop" data-menu-close="true"></div> <div class="offCanvasMenu-content"> <div class="offCanvasMenu-header"> {{ phrase('menu') }} <a class="offCanvasMenu-closer" data-menu-close="true" role="button" tabindex="0" aria-label="{{ phrase('close')|for_attr }}"></a> </div> <xf:if is="$xf.visitor.user_id"> <div class="p-offCanvasAccountLink"> <div class="offCanvasMenu-linkHolder"> <a href="{{ link('account') }}" class="offCanvasMenu-link"> <xf:avatar user="$xf.visitor" size="xxs" href="" /> {$xf.visitor.username} </a> </div> <hr class="offCanvasMenu-separator" /> </div> <xf:else /> <div class="p-offCanvasRegisterLink"> <div class="offCanvasMenu-linkHolder"> <a href="{{ link('login') }}" class="offCanvasMenu-link" data-xf-click="overlay" data-menu-close="true"> {{ phrase('log_in') }} </a> </div> <hr class="offCanvasMenu-separator" /> <xf:if is="$xf.options.registrationSetup.enabled"> <div class="offCanvasMenu-linkHolder"> <a href="{{ link('register') }}" class="offCanvasMenu-link" data-xf-click="overlay" data-menu-close="true"> {{ phrase('register') }} </a> </div> <hr class="offCanvasMenu-separator" /> </xf:if> </div> </xf:if> <div class="js-offCanvasNavTarget"></div> <div class="offCanvasMenu-installBanner js-installPromptContainer" style="display: none;" data-xf-init="install-prompt"> <div class="offCanvasMenu-installBanner-header">{{ phrase('install_app') }}</div> <xf:button class="js-installPromptButton">{{ phrase('install') }}</xf:button> </div> </div> </div> <div class="p-body"> <div class="p-body-header"> <div class="p-body-header-inner"> <xf:if is="$headerHtml is not empty"> {$headerHtml|raw} <xf:elseif contentcheck="true" /> <xf:contentcheck> <xf:if contentcheck="true"> <div class="p-title {{ $noH1 ? 'p-title--noH1' : '' }}"> <xf:contentcheck> <xf:if is="!$noH1"> <h1 class="p-title-value">{$h1}</h1> </xf:if> <xf:if contentcheck="true"> <div class="p-title-pageAction"><xf:contentcheck><xf:pageaction /></xf:contentcheck></div> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if is="$description is not empty"> <div class="p-description">{$description}</div> </xf:if> </xf:contentcheck> </xf:if> </div> </div> <div class="p-body-inner"> <!--XF:EXTRA_OUTPUT--> <xf:if is="property('dt_guest_message')"> <xf:if is="!$xf.visitor.user_id"> <div class="p-guest--message"> <div class="p-guest--message-content"> {{ property('dt_guest_message_content') }} </div> </div> </xf:if> </xf:if> <xf:if is="$notices.block"> <xf:macro template="notice_macros" name="notice_list" arg-type="block" arg-notices="{$notices.block}" /> </xf:if> <xf:if is="$notices.scrolling"> <xf:macro template="notice_macros" name="notice_list" arg-type="scrolling" arg-notices="{$notices.scrolling}" /> </xf:if> <xf:macro template="browser_warning_macros" name="javascript" /> <xf:macro template="browser_warning_macros" name="browser" /> <xf:ad position="container_breadcrumb_top_above" /> <div class="p-breadcrumbs--container{{ $sidebar ? ' p-breadcrumbs--container--side' : '' }}"> <xf:macro name="breadcrumbs" arg-breadcrumbs="{$breadcrumbs}" arg-navTree="{$navTree}" arg-selectedNavEntry="{$selectedNavEntry}" /> <xf:if is="$sidebar"><xf:if is="property('dt_collapsible_sidebar') && !property('dt_disable_sidebar') && $sidebar"><span id="collapse-side" class="collapseTrigger collapseTrigger--block {{ !is_toggled('_side-1') ? ' is-active' : '' }}" data-xf-click="toggle" data-xf-init="toggle-storage" data-storage-type="cookie" data-target=".p-body-sidebar, .p-body-content" data-storage-key="_side-1"></span></xf:if></xf:if> </div> <xf:ad position="container_breadcrumb_top_below" /> <div class="p-body-main {{ $sidebar ? 'p-body-main--withSidebar' : '' }} {{ $sideNav ? 'p-body-main--withSideNav' : '' }}"> <xf:if is="$sideNav"> <div class="p-body-sideNav"> <div class="p-body-sideNavTrigger"> <xf:button class="button--link" data-xf-click="off-canvas" data-menu="#js-SideNavOcm"> {{ $sideNavTitle ?: phrase('navigation') }} </xf:button> </div> <div class="p-body-sideNavInner" data-ocm-class="offCanvasMenu offCanvasMenu--blocks" id="js-SideNavOcm" data-ocm-builder="sideNav"> <div data-ocm-class="offCanvasMenu-backdrop" data-menu-close="true"></div> <div data-ocm-class="offCanvasMenu-content"> <div class="p-body-sideNavContent"> <xf:ad position="container_sidenav_above" /> <xf:foreach loop="$sideNav" value="$sideNavHtml"> {$sideNavHtml} </xf:foreach> <xf:ad position="container_sidenav_below" /> </div> </div> </div> </div> </xf:if> <div class="p-body-content {{ !is_toggled('_side-1') ? 'is-active' : '' }}"> <xf:ad position="container_content_above" /> <div class="p-body-pageContent">{$content|raw}</div> <xf:ad position="container_content_below" /> </div> <xf:if is="$sidebar"> <div class="p-body-sidebar {{ !is_toggled('_side-1') ? 'is-active' : '' }}"> <xf:ad position="container_sidebar_above" /> <xf:if is="!$xf.visitor.user_id AND property('dt_sidebar_login')"> <xf:include template="dt_sidebar_login" /> </xf:if> <xf:foreach loop="$sidebar" value="$sidebarHtml"> {$sidebarHtml} </xf:foreach> <xf:ad position="container_sidebar_below" /> </div> </xf:if> </div> <xf:ad position="container_breadcrumb_bottom_above" /> <xf:macro name="breadcrumbs" arg-breadcrumbs="{$breadcrumbs}" arg-navTree="{$navTree}" arg-selectedNavEntry="{$selectedNavEntry}" arg-variant="bottom" /> <xf:ad position="container_breadcrumb_bottom_below" /> </div> </div> <xf:if is="property('dt_extra_footer')"><xf:include template="extra_footer" /></xf:if> <footer class="p-footer" id="footer"> <div class="p-footer-inner"> <div class="p-footer-row"> <div class="p-footer-row-main"> <ul class="p-footer-linkList"> <xf:if contentcheck="true"> <xf:contentcheck> <xf:if is="$xf.cookieConsent.getMode() == 'advanced'"> <li><a href="{{ link('misc/cookies') }}" rel="nofollow" data-xf-init="tooltip" title="{{ phrase('cookie_consent')|for_attr }}" data-xf-click="cookie-consent-toggle"> <xf:fa icon="fa-cookie" /> {{ phrase('cookie_consent_label') }} </a></li> </xf:if> <xf:if is="$xf.visitor.canChangeStyle()"> <li><a href="{{ link('misc/style') }}" data-xf-click="overlay" data-xf-init="tooltip" title="{{ phrase('style_chooser')|for_attr }}" rel="nofollow"> <xf:fa icon="fa-paint-brush" /> {$xf.style.title} </a></li> </xf:if> <xf:if is="$xf.visitor.canChangeLanguage()"> <li><a href="{{ link('misc/language') }}" data-xf-click="overlay" data-xf-init="tooltip" title="{{ phrase('language_chooser')|for_attr }}" rel="nofollow"> <xf:fa icon="fa-globe" /> {$xf.language.title}</a></li> </xf:if> </xf:contentcheck> </xf:if> <xf:if is="$xf.visitor.canUseContactForm()"> <xf:if is="$xf.contactUrl"> <li><a href="{$xf.contactUrl}" data-xf-click="{{ ($xf.options.contactUrl.overlay OR $xf.options.contactUrl.type == 'default') ? 'overlay' : '' }}">{{ phrase('contact_us') }}</a></li> </xf:if> </xf:if> <xf:if is="$xf.tosUrl"> <li><a href="{$xf.tosUrl}">{{ phrase('terms_and_rules') }}</a></li> </xf:if> <xf:if is="$xf.privacyPolicyUrl"> <li><a href="{$xf.privacyPolicyUrl}">{{ phrase('privacy_policy') }}</a></li> </xf:if> <xf:if is="$xf.helpPageCount"> <li><a href="{{ link('help') }}">{{ phrase('help') }}</a></li> </xf:if> <xf:if is="$xf.homePageUrl"> <li><a href="{$xf.homePageUrl}">{{ phrase('home') }}</a></li> </xf:if> <li><a href="{{ link('forums/index.rss', '-') }}" target="_blank" class="p-footer-rssLink" title="{{ phrase('rss')|for_attr }}"><span aria-hidden="true"><xf:fa icon="fa-rss" /><span class="u-srOnly">{{ phrase('rss') }}</span></span></a></li> </ul> </div> </div> <xf:if contentcheck="true"> <div class="p-footer-debug"> <xf:contentcheck> <xf:macro template="debug_macros" name="debug" arg-controller="{$controller}" arg-action="{$actionMethod}" arg-template="{$template}" /> </xf:contentcheck> </div> </xf:if> </div> </footer> </div> <!-- closing p-pageWrapper --> <div class="u-bottomFixer js-bottomFixTarget"> <xf:if is="$notices.floating"> <xf:macro template="notice_macros" name="notice_list" arg-type="floating" arg-notices="{$notices.floating}" /> </xf:if> <xf:if is="$notices.bottom_fixer"> <xf:macro template="notice_macros" name="notice_list" arg-type="bottom_fixer" arg-notices="{$notices.bottom_fixer}" /> </xf:if> </div> <xf:if is="property('scrollJumpButtons')"> <div class="u-scrollButtons js-scrollButtons" data-trigger-type="{{ property('scrollJumpButtons') }}"> <xf:button href="#top" class="button--scroll" data-xf-click="scroll-to"><xf:fa icon="fa-arrow-up" /><span class="u-srOnly">{{ phrase('top') }}</span></xf:button> <xf:if is="property('scrollJumpButtons') != 'up'"> <xf:button href="#footer" class="button--scroll" data-xf-click="scroll-to"><xf:fa icon="fa-arrow-down" /><span class="u-srOnly">{{ phrase('bottom') }}</span></xf:button> </xf:if> </div> </xf:if> <xf:macro template="helper_js_global" name="body" arg-app="public" arg-jsState="{$jsState}" /> <xf:if is="count($xf.reactionsActive) > 1 AND $xf.visitor.user_id"> <script type="text/template" id="xfReactTooltipTemplate"> <div class="tooltip-content-inner"> <div class="reactTooltip"> <xf:foreach loop="$xf.reactionsActive" key="$reactionId" value="$reaction"> <xf:reaction id="{$reactionId}" tooltip="true" /> </xf:foreach> </div> </div> </script> </xf:if> {$ldJsonHtml|raw} <xf:js> $(document).ready(function() { var staffBar = $('.p-staffBar'); if (staffBar.length) { $('body').addClass('has-staffBar'); var lastScrollTop = 0; var scrollThreshold = 100; var staffBarHeight = staffBar.outerHeight(); $(window).scroll(function() { var scrollTop = $(this).scrollTop(); if (scrollTop > scrollThreshold) { if (scrollTop > lastScrollTop) { staffBar.addClass('p-staffBar--hidden'); } else { staffBar.removeClass('p-staffBar--hidden'); } } else { staffBar.removeClass('p-staffBar--hidden'); } lastScrollTop = scrollTop; }); if (!staffBar.hasClass('p-staffBar--hidden')) { $('.p-pageWrapper').css('padding-top', staffBarHeight + 'px'); } } }); </xf:js> </body> </html> <xf:macro name="nav_entry" arg-navId="!" arg-nav="!" arg-selected="{{ false }}" arg-shortcut=""> <div class="p-navEl {{ $selected ? 'is-selected' : '' }}" {{ $nav.children ? 'data-has-children="true"' : '' }}> <xf:if is="$nav.href"> <xf:macro name="nav_link" arg-navId="{$navId}" arg-nav="{$nav}" arg-class="p-navEl-link {{ $nav.children ? 'p-navEl-link--splitMenu' : '' }}" arg-shortcut="{{ $nav.children ? false : $shortcut }}" /> <xf:if is="$nav.children"><a data-xf-key="{$shortcut}" data-xf-click="menu" data-menu-pos-ref="< .p-navEl" class="p-navEl-splitTrigger" role="button" tabindex="0" aria-label="{{ phrase('toggle_expanded')|for_attr }}" aria-expanded="false" aria-haspopup="true"></a></xf:if> <xf:elseif is="$nav.children" /><a data-xf-key="{$shortcut}" data-xf-click="menu" data-menu-pos-ref="< .p-navEl" class="p-navEl-linkHolder" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true"> <xf:macro name="nav_link" arg-navId="{$navId}" arg-nav="{$nav}" arg-class="p-navEl-link p-navEl-link--menuTrigger" /> </a> <xf:else /> <xf:macro name="nav_link" arg-navId="{$navId}" arg-nav="{$nav}" arg-class="p-navEl-link" arg-shortcut="{$shortcut}" /> </xf:if> <xf:if is="$nav.children"> <div class="menu menu--structural" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <xf:foreach loop="$nav.children" key="$childNavId" value="$child"> <xf:macro name="nav_menu_entry" arg-navId="{$childNavId}" arg-nav="{$child}" /> </xf:foreach> </div> </div> </xf:if> </div> </xf:macro> <xf:macro name="nav_link" arg-navId="!" arg-nav="!" arg-class="" arg-titleHtml="" arg-shortcut="{{ false }}"> <xf:set var="$tag" value="{{ $nav.href ? 'a' : 'span' }}" /> <{$tag} {{ $nav.href ? 'href="' . $nav.href . '"' : '' }} class="{{ trim($class) }} {$nav.attributes.class}" {{ attributes($nav.attributes, ['class']) }} {{ $shortcut !== false ? 'data-xf-key="' . $shortcut . '"' : '' }} data-nav-id="{$navId}"><xf:if is="$nav.icon"><xf:fa icon="{$nav.icon}" /> </xf:if>{{ $titleHtml ? $titleHtml|raw : $nav.title }}<xf:if is="$nav.counter"> <span class="badge badge--highlighted">{$nav.counter|number}</span></xf:if></{$tag}> </xf:macro> <xf:macro name="nav_menu_entry" arg-navId="!" arg-nav="!" arg-depth="0"> <xf:macro name="nav_link" arg-navId="{$navId}" arg-nav="{$nav}" arg-class="menu-linkRow u-indentDepth{$depth} js-offCanvasCopy" /> <xf:if is="$nav.children"> <xf:foreach loop="$nav.children" key="$childNavId" value="$child"> <xf:macro name="nav_menu_entry" arg-navId="{$childNavId}" arg-nav="{$child}" arg-depth="{{ $depth + 1 }}" /> </xf:foreach> <xf:if is="$depth == 0"> <hr class="menu-separator" /> </xf:if> </xf:if> </xf:macro> <xf:macro name="breadcrumbs" arg-breadcrumbs="!" arg-navTree="!" arg-selectedNavEntry="{{ null }}" arg-variant=""> <xf:if contentcheck="true"> <ul class="p-breadcrumbs {{ $variant ? 'p-breadcrumbs--' . $variant : '' }}" itemscope itemtype="https://schema.org/BreadcrumbList"> <xf:contentcheck> <xf:set var="$position" value="{{ 0 }}" /> <xf:set var="$rootBreadcrumb" value="{$navTree.{$xf.options.rootBreadcrumb}}" /> <xf:set var="$rootBreadcrumbHref" value="{{ $rootBreadcrumb.href|substr(-1) == '/' ? $rootBreadcrumb.href : $rootBreadcrumb.href . '/' }}" /> <xf:if is="$rootBreadcrumb AND $rootBreadcrumbHref != $xf.uri AND $rootBreadcrumbHref != $xf.fullUri"> <xf:set var="$position" value="{{ $position + 1 }}" /> <xf:macro name="crumb" arg-position="{$position}" arg-href="{$rootBreadcrumb.href}" arg-value="{$rootBreadcrumb.title}" /> </xf:if> <xf:if is="$selectedNavEntry AND $selectedNavEntry.href AND $selectedNavEntry.href != $xf.uri AND $selectedNavEntry.href != $xf.fullUri AND $selectedNavEntry.href != $rootBreadcrumbHref"> <xf:set var="$position" value="{{ $position + 1 }}" /> <xf:macro name="crumb" arg-position="{$position}" arg-href="{$selectedNavEntry.href}" arg-value="{$selectedNavEntry.title}" /> </xf:if> <xf:foreach loop="$breadcrumbs" value="$breadcrumb" if="$breadcrumb.href != $xf.uri AND $breadcrumb.href != $xf.fullUri"> <xf:set var="$position" value="{{ $position + 1 }}" /> <xf:macro name="crumb" arg-position="{$position}" arg-href="{$breadcrumb.href}" arg-value="{$breadcrumb.value}" /> </xf:foreach> </xf:contentcheck> </ul> </xf:if> </xf:macro> <xf:macro name="crumb" arg-href="!" arg-value="!" arg-position="{{ 0 }}"> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a href="{$href}" itemprop="item"> <xf:if is="{$href} == {$xf.homePageUrl} && property('dt_homeCrumb_icon')"> <xf:fa icon="fa-home" /> <xf:else /> <span itemprop="name">{$value}</span> </xf:if> </a> <xf:if is="$position"><meta itemprop="position" content="{$position}" /></xf:if> </li> </xf:macro> ]]>
</template>
<template title="account_visitor_menu" type="public" addon_id="XF" version_id="2010670" version_string="2.1.6">
<![CDATA[ <xf:if contentcheck="true"> <h4 class="menu-tabHeader tabs" data-xf-init="tabs" role="tablist"> <span class="hScroller" data-xf-init="h-scroller"> <span class="hScroller-scroll"> <a href="{{ link('account') }}" class="tabs-tab is-active" role="tab" tabindex="0" aria-controls="{{ unique_id('accountMenu') }}">{{ phrase('your_account') }}</a> <xf:contentcheck> <xf:if is="$xf.visitor.canViewBookmarks()"> <a href="{{ link('account/bookmarks') }}" class="tabs-tab" role="tab" tabindex="0" aria-controls="{{ unique_id('accountMenuBookmarks') }}">{{ phrase('bookmarks') }}</a> </xf:if> <!--[XF:account_tabs:bottom]--> </xf:contentcheck> </span> </span> </h4> <xf:set var="$hasTabs" value="{{ true }}" /> </xf:if> <xf:set var="$accountHtml"> <div class="menu-row menu-row--alt"> <xf:macro name="visitor_panel_row" /> </div> <xf:macro name="visitor_panel_row"> <div class="contentRow"> <div class="contentRow-figure"> <span class="avatarWrapper"> <xf:avatar user="{$xf.visitor}" size="m" href="" notooltip="true" /> <xf:if is="$xf.visitor.canUploadAvatar()"> <a class="avatarWrapper-update" href="{{ link('account/avatar') }}" data-xf-click="overlay"><span>{{ phrase('edit') }}</span></a> </xf:if> </span> </div> <div class="contentRow-main"> <h3 class="contentRow-header"><xf:username user="$xf.visitor" rich="true" notooltip="true" /></h3> <div class="contentRow-lesser"> <xf:usertitle user="$xf.visitor" /> </div> <div class="contentRow-minor"> <!--[XF:stats_pairs:above_messages]--> <dl class="pairs pairs--justified fauxBlockLink"> <dt>{{ phrase('messages') }}</dt> <dd> <a href="{{ link('search/member', null, {'user_id': $xf.visitor.user_id}) }}" class="fauxBlockLink-linkRow u-concealed"> {$xf.visitor.message_count|number} </a> </dd> </dl> <!--[XF:stats_pairs:above_reactions]--> <dl class="pairs pairs--justified fauxBlockLink"> <dt>{{ phrase('reaction_score') }}</dt> <dd> <a href="{{ link('account/reactions') }}" class="fauxBlockLink-linkRow u-concealed"> {$xf.visitor.reaction_score|number} </a> </dd> </dl> <!--[XF:stats_pairs:above_points]--> <xf:if is="$xf.options.enableTrophies"> <dl class="pairs pairs--justified fauxBlockLink"> <dt>{{ phrase('trophy_points') }}</dt> <dd> <a href="{{ link('members/trophies', $xf.visitor) }}" data-xf-click="overlay" class="fauxBlockLink-linkRow u-concealed"> {$xf.visitor.trophy_points|number} </a> </dd> </dl> </xf:if> </div> </div> </div> </xf:macro> <!--[XF:menu_separator:below_visitor_panel]--> <hr class="menu-separator menu-separator--hard" /> <ul class="listPlain listColumns listColumns--narrow listColumns--together"> <!--[XF:content_links:top]--> <xf:if is="$xf.options.enableNewsFeed"> <li><a href="{{ link('whats-new/news-feed') }}" class="menu-linkRow">{{ phrase('news_feed') }}</a></li> </xf:if> <li><a href="{{ link('search/member', null, {'user_id': $xf.visitor.user_id}) }}" class="menu-linkRow">{{ phrase('your_content') }}</a></li> <li><a href="{{ link('account/reactions') }}" class="menu-linkRow">{{ phrase('reactions_received') }}</a></li> <xf:if is="property('dt_condense_visito_tabs')"> <li><a href="{{ link('conversations') }}" class="menu-linkRow js-badge--conversations badgeContainer{{ $xf.visitor.conversations_unread ? ' badgeContainer--highlighted' : '' }}" data-badge="{$xf.visitor.conversations_unread|number}">{{ phrase('conversations') }}</a></li> <li><a href="{{ link('account/alerts') }}" class="menu-linkRow js-badge--alerts badgeContainer{{ $xf.visitor.alerts_unread ? ' badgeContainer--highlighted' : '' }}" data-badge="{$xf.visitor.alerts_unread|number}">{{ phrase('alerts') }}</a></li> </xf:if> <!--[XF:content_links:bottom]--> </ul> <!--[XF:menu_separator:below_content_links]--> <hr class="menu-separator" /> <ul class="listPlain listColumns listColumns--narrow listColumns--together"> <!--[XF:account_links:top]--> <li><a href="{{ link('account/account-details') }}" class="menu-linkRow">{{ phrase('account_details') }}</a></li> <li><a href="{{ link('account/security') }}" class="menu-linkRow">{{ phrase('password_and_security') }}</a></li> <li><a href="{{ link('account/privacy') }}" class="menu-linkRow">{{ phrase('privacy') }}</a></li> <li><a href="{{ link('account/preferences') }}" class="menu-linkRow">{{ phrase('preferences') }}</a></li> <xf:if is="$xf.visitor.canEditSignature()"> <li><a href="{{ link('account/signature') }}" class="menu-linkRow">{{ phrase('signature') }}</a></li> </xf:if> <xf:if is="$xf.app.userUpgradeCount"> <li><a href="{{ link('account/upgrades') }}" class="menu-linkRow">{{ phrase('account_upgrades') }}</a></li> </xf:if> <xf:if is="$xf.app.connectedAccountCount"> <li><a href="{{ link('account/connected-accounts') }}" class="menu-linkRow">{{ phrase('connected_accounts') }}</a></li> </xf:if> <li><a href="{{ link('account/following') }}" class="menu-linkRow">{{ phrase('following') }}</a></li> <li><a href="{{ link('account/ignored') }}" class="menu-linkRow">{{ phrase('ignoring') }}</a></li> <!--[XF:account_links:bottom]--> </ul> <!--[XF:menu_separator:below_account_links]--> <hr class="menu-separator" /> <a href="{{ link('logout', null, {'t': csrf_token()}) }}" class="menu-linkRow">{{ phrase('log_out') }}</a> <xf:if is="$xf.visitor.canPostOnProfile()"> <xf:form action="{{ link('members/post', $xf.visitor) }}" ajax="true" data-redirect="off" data-reset-complete="true" data-no-auto-focus="true" class="menu-footer"> <span class="u-srOnly" id="ctrl_message">{{ phrase('update_your_status:') }}</span> <xf:textarea name="message" rows="1" autosize="true" maxlength="{$xf.options.profilePostMaxLength}" placeholder="{{ phrase('update_your_status...') }}" data-xf-init="focus-trigger user-mentioner emoji-completer" data-display="< :next" aria-labelledby="ctrl_message" /> <div class="u-hidden u-hidden--transition u-inputSpacer"> <xf:button type="submit" class="button--primary" icon="reply">{{ phrase('post_verb') }}</xf:button> </div> </xf:form> </xf:if> </xf:set> <xf:if is="$hasTabs"> <ul class="tabPanes"> <li class="is-active" role="tabpanel" id="{{ unique_id('accountMenu') }}"> {$accountHtml|raw} </li> <xf:if is="$xf.visitor.canViewBookmarks()"> <li role="tabpanel" id="{{ unique_id('accountMenuBookmarks') }}" data-href="{{ link('account/bookmarks-popup') }}" data-load-target=".js-bookmarksMenuBody"> <div class="js-bookmarksMenuBody"> <div class="menu-row">{{ phrase('loading...') }}</div> </div> <div class="menu-footer menu-footer--close"> <a href="{{ link('account/bookmarks') }}" class="js-bookmarkShowAllLink">{{ phrase('show_all...') }}</a> </div> </li> </xf:if> <!--[XF:account_tab_panes:bottom]--> </ul> <xf:else /> {$accountHtml|raw} </xf:if> ]]>
</template>
<template title="app_body.less" type="public" addon_id="XF" version_id="2020970" version_string="2.2.9">
<![CDATA[ // ######################################### MAIN BODY ################################# .p-body { display: flex; flex-direction: column; align-items: stretch; flex-grow: 1; min-height: 1px; // IE11 workaround - related to #139187 } .p-body-inner { display: flex; flex-direction: column; width: 100%; } .p-body-inner { .m-pageWidth(); .m-pageInset(); .m-clearFix(); padding-top: ((@xf-elementSpacer) / 2); padding-bottom: @xf-elementSpacer; } .p-body-header { position: relative; background-repeat: no-repeat; background-position: center center; background-size: cover; background-attachment: scroll; border-top: 0px solid rgb(33, 31, 42); border-bottom: 0px solid rgb(33, 31, 42); background-color: @xf-contentHighlightBg; background-image: url("{{ property('dt_header_background') }}"); clip-path: polygon(0 0,100% 0,100% calc(~'100% - 45px'),calc(~'100% - 45px') 100%,0 100%); transform: translate3d(0,0,0); will-change: clip-path,transform; overflow: hidden; margin-bottom: @xf-elementSpacer; &::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(35deg, rgba(20, 23, 29, .85) 20%, rgba(30, 33, 39, .15) 100%); z-index: 1; } &-inner { .m-pageWidth(); .m-pageInset(); position: relative; padding-top: 4%; padding-bottom: 4%; z-index: 4; } .p-title-value { color: @xf-linkColor; font-size: 3.2em; font-weight: 900; text-transform: uppercase; -webkit-text-stroke: 2px currentColor; -webkit-text-fill-color: transparent; letter-spacing: 2px; @media (max-width: @xf-responsiveMedium) { font-size: 2em; } } .p-description { font-size: @xf-fontSizeLarge; } &::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: url("{{ asset('dt_theme_files') }}/img/pattern.png"); background-repeat: repeat; background-position: center center; opacity: .45; z-index: 1; } } .p-body-main { display: flex; flex-wrap: wrap; justify-content: space-between; width: 100%; max-width: 100%; min-height: 1px; // IE11 workaround - related to #139187 margin-bottom: auto; } .p-body-content { display: block; width: 100%; .p-body-main--withSideNav & { @media (min-width: @xf-responsiveWide) { flex-grow: 1; display: inline-block; width: calc(~'100% - @{xf-sidebarWidth} - @{xf-sidebarSpacer}'); max-width: calc(~'100% - @{xf-sidebarWidth} - @{xf-sidebarSpacer}'); } } .p-body-main--withSidebar & { flex-grow: 1; display: inline-block; width: calc(~'100% - @{xf-sidebarWidth} - @{xf-sidebarSpacer}'); max-width: calc(~'100% - @{xf-sidebarWidth} - @{xf-sidebarSpacer}'); } .p-body-main--withSidebar.p-body-main--withSideNav & { flex-grow: 1; display: inline-block; width: calc(~'100% - @{xf-sidebarWidth} - @{xf-sidebarWidth} - @{xf-sidebarSpacer}'); max-width: calc(~'100% - @{xf-sidebarWidth} - @{xf-sidebarWidth} - @{xf-sidebarSpacer}'); } .p-body-main--withSidebar &, .p-body-main--withSideNav & { // don't let the ad overflow the sidebar area -- this can happen due to how the Adsense JS works ins.adsbygoogle { // -10px gives a little buffer or helps account for no scrollbar being considered max-width: calc(~'100vw - 10px - @{xf-pageEdgeSpacer} - @{xf-pageEdgeSpacer} - @{xf-sidebarWidth} - @{xf-sidebarSpacer}'); @media (min-width: @xf-pageWidthMax) { // window wider than the max width, so limit to the display area without the sidebar max-width: calc(~'@{xf-pageWidthMax} - @{xf-pageEdgeSpacer} - @{xf-pageEdgeSpacer} - @{xf-sidebarWidth} - @{xf-sidebarSpacer}'); } @media (max-width: @xf-responsiveWide) { // sidebar/sidenav have been moved/hidden max-width: 100vw; } } } } .p-body-pageContent { > .tabs--standalone:first-child { margin-bottom: (@xf-elementSpacer) / 2; } } .p-body-sideNav { display: inline-block; width: @xf-sidebarWidth; } .p-body-sideNavTrigger { display: none; } .p-body-sidebar { display: inline-block; width: @xf-sidebarWidth; .contentRow-figure .avatar--m { // make these avatars a bit smaller in the sidebar so the content has more space .m-avatarSize(@avatar-m * 2 / 3); } } .p-body-sideNavCol, .p-body-contentCol, .p-body-sidebarCol { display: table-column; } .p-body-sideNavCol, .p-body-sidebarCol { width: auto; } .p-body-content, .p-body-pageContent, .p-body-sideNav, .p-body-sideNavContent, .p-body-sidebar { > :first-child { margin-top: 0; } > :last-child { margin-bottom: 0; } } @media (max-width: @xf-responsiveWide) { .p-body-sideNavCol, .p-body-contentCol, .p-body-sidebarCol { display: none; width: auto; } .p-body-main, .p-body-content { display: block; overflow: hidden; } .p-body-sideNav { display: block; width: auto; } .p-body-sideNavTrigger { margin-bottom: ((@xf-elementSpacer) / 2); text-align: center; .button:before { .m-faBase(); font-size: 120%; vertical-align: middle; display: inline-block; margin: -4px 6px -4px 0; .m-faContent(@fa-var-bars); //, .88em } .has-js & { display: block; } } .has-js .p-body-sideNavInner:not(.offCanvasMenu) { display: none; .m-transitionFadeDown(); } .has-no-js .p-body-sideNavInner { margin-bottom: @xf-elementSpacer; } .p-body-sidebar { display: flex; flex-wrap: wrap; align-items: stretch; margin: (@xf-elementSpacer) -((@xf-pageEdgeSpacer) / 2) -(@xf-elementSpacer); width: auto; > * { margin: 0 ((@xf-pageEdgeSpacer) / 2) @xf-elementSpacer; min-width: @xf-sidebarWidth; flex: 1 1 @xf-sidebarWidth; &:last-child { margin-bottom: @xf-elementSpacer; } } // add an invisible block to ensure that the last row has the correct widths &:after { display: block; content: ''; height: 0; margin: 0 ((@xf-pageEdgeSpacer) / 2); min-width: @xf-sidebarWidth; flex: 1 1 @xf-sidebarWidth; } .block-container { display: flex; flex-direction: column; height: 100%; .block-footer { margin-top: auto; } } } .p-body-main--withSideNav, .p-body-main--withSidebar, .p-body-main--withSidebar.p-body-main--withSideNav { .p-body-content { width: 100%; max-width: 100%; padding: 0; } } } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .p-body-sideNavContent { // this is likely to contain blocks that overflow the container so account for that margin: 0 -@xf-pageEdgeSpacer; padding: 0 @xf-pageEdgeSpacer; .offCanvasMenu & { margin: 0; padding: 0; } } .p-body-sidebar { display: block; width: 100%; margin-left: 0; margin-right: 0; > * { margin-left: 0; margin-right: 0; min-width: 0; } } } ]]>
</template>
<template title="app_breadcrumbs.less" type="public" addon_id="XF" version_id="2020070" version_string="2.2.0">
<![CDATA[ .p-breadcrumbs { .m-listPlain(); .m-clearFix(); margin-bottom: 5px; line-height: 1.5; &.p-breadcrumbs--bottom { margin-top: @xf-elementSpacer; margin-bottom: 0; } > li { float: left; font-size: @xf-fontSizeSmall; a { display: inline-block; vertical-align: bottom; max-width: 300px; .m-overflowEllipsis(); } &:after, &:before { .m-faBase(); font-size: 90%; color: @xf-textColorMuted; } &:after { .m-faContent(@fa-var-angle-right, false ltr); //, .5em .m-faContent(@fa-var-angle-left, false, rtl); //, .5em } &:first-child { &:before { .m-faContent(@fa-var-home); font-size: @xf-fontSizeSmall; margin-right: .5em; } } &:last-child { a { font-weight: @xf-fontWeightHeavy; } } } } @media (max-width: @xf-responsiveMedium) { .p-breadcrumbs > li a { max-width: 200px; } } @media (max-width: @xf-responsiveNarrow) { .p-breadcrumbs { > li { display: none; &:last-child { display: block; } a { max-width: 90vw; } &:after { display: none; } &:before { .m-faContent(@fa-var-chevron-left, false, ltr); .m-faContent(@fa-var-chevron-right, false, rtl); margin-right: .5em; } } } } ]]>
</template>
<template title="app_inlinemod.less" type="public" addon_id="XF" version_id="2021270" version_string="2.2.12">
<![CDATA[ // #################################### INLINE MOD BUTTON ################ .inlineModButton { display: inline-block; position: relative; i:before { display: inline-block; .m-faBase(); .m-faContent(@fa-var-check-square, 1em); //, .88em vertical-align: -1px; font-size: 1.2em; margin: -.2em 0; line-height: 1; } &.inlineModButton--noIcon i { display: none; } &.is-mod-active { color: @xf-textColorAttention; .inlineModButton-count { display: inline; } } &:not(.inlineModButton--withLabel) { .inlineModButton-label { .m-visuallyHidden(); } } } .inlineModButton-count { display: none; position: absolute; top: -3px; left: -6px; .xf-contentAccentBase(); border: @xf-borderSize solid @xf-borderColorAccentContent; border-radius: @xf-borderRadiusSmall; padding: 1px 2px; font-size: 9px; line-height: 1; .inlineModButton--noIcon & { position: static; font-size: 80%; padding-top: 0; padding-bottom: 0; } } // #################################### INLINE MOD BAR ################ .inlineModBar { .xf-inlineModBar(); .m-transitionFadeDown(); .m-clearFix(); .input, .button { padding-top: @xf-paddingSmall; padding-bottom: @xf-paddingSmall; } &.is-active:first-of-type { .m-dropShadow(0, 0, 8px, 3px, 0.12); } } .inlineModBar-inner { .m-pageWidth(); .m-pageInset(); display: flex; align-items: center; } .inlineModBar-controls { .m-listPlain(); margin-right: auto; display: flex; align-items: center; flex-wrap: wrap; min-height: 35px; max-width: 100%; > li { float: left; display: inline-block; margin-right: 1em; &:last-child { margin-right: 0; } } } .inlineModBar-close { float: right; margin-left: 1em; order: 2; } .inlineModBar-title { font-weight: @xf-fontWeightHeavy; } .button.inlineModBar-goButton { font-size: @xf-fontSizeNormal; line-height: @xf-lineHeightDefault; min-width: 0; } .inlineModBarCover { position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: -1; cursor: pointer; } ]]>
</template>
<template title="app_nav.less" type="public" addon_id="XF" version_id="2020970" version_string="2.2.9">
<![CDATA[ // navEl / Navigation Elements for header navigation .p-navEl { .m-clearFix(); } .p-navEl-linkHolder { float: left; } .p-navEl-link { float: left; .m-transition(opacity, background; @_nav-elTransitionSpeed); &.p-navEl-link--menuTrigger { cursor: pointer; &:after { .m-menuGadget(); // .58em opacity: .5; .m-transition(opacity; @_nav-elTransitionSpeed); } &:hover:after { opacity: 1; } } } .p-navEl-splitTrigger { float: left; opacity: .5; cursor: pointer; text-decoration: none; .m-transition(all; @_nav-elTransitionSpeed); &:after { .m-menuGadget(); // .58em line-height: 1; } &:hover { opacity: 1; text-decoration: none; } } // HEADER NAV ROW .p-nav { .xf-publicNav(); a { color: inherit; } } .p-nav-inner { .m-pageWidth(); .m-pageInset(0px); .m-clearFix(); display: flex; align-items: center; } .p-nav .p-nav-menuTrigger { display: none; vertical-align: middle; align-self: center; margin-left: max(0px, @xf-pageEdgeSpacer - 6px); margin-right: 5px; padding: (@xf-publicNavPaddingV - 12px) 8px; color: inherit; &:hover { text-decoration: none; } &::before, &::after { display: none; } i:after { .m-faBase(); font-size: @xf-fontSizeLargest; .m-faContent(@fa-var-bars); //, .88em vertical-align: bottom; } .p-nav-menuText { display: none; } } .p-nav-smallLogo { display: none; max-width: 140px; align-self: center; img { display: block; max-height: @header-navHeight; &:not([src$=".svg"]) { width: auto; } } } .p-nav-scroller { margin-right: auto; max-width: 100%; .hScroller-scroll:not(.is-calculated) { // IE11 seems to want to flash a vertical scrollbar without this here overflow: hidden; } .hScroller-action { .m-hScrollerActionColorVariation( xf-default(@xf-publicNav--background-color, transparent), xf-default(@xf-publicNav--color, ~""), xf-intensify(@xf-publicNav--color, 10%) ); } } .p-nav-list { .m-listPlain(); .m-clearFix(); font-size: 0; // this applies padding that will be contained within the scroller. // it needs font-size 0 to not create extra space though &:before, &:after { display: inline-block; width: @xf-pageEdgeSpacer; content: ''; } > li { display: inline-block; vertical-align: bottom; font-size: @xf-fontSizeNormal; &:first-child { margin-left: 0; } } .m-navElHPadding(@xf-publicNavPaddingH); .p-navEl { .xf-publicNavTab(); .m-transition(all; @_nav-elTransitionSpeed); &.is-selected { .xf-publicNavSelected(); .p-navEl-link { padding-right: @xf-publicNavPaddingH; // since the split trigger is hidden &:hover { background: none; text-decoration: none; } } .p-navEl-splitTrigger { display: none; } } &:not(.is-selected):not(.is-menuOpen) { &:hover, .p-navEl-link:hover, .p-navEl-splitTrigger:hover { .xf-publicNavTabHover(); } } &.is-menuOpen { .xf-publicNavTabMenuOpen(); a { text-decoration: none; opacity: 1; } } } .p-navEl-link, .p-navEl-splitTrigger { padding-top: @xf-publicNavPaddingV; padding-bottom: @xf-publicNavPaddingV; } } .p-navSticky--primary.is-sticky { .p-nav-list { .p-navEl-link.p-navEl-link--splitMenu { padding-right: ((@xf-publicNavPaddingH) / 4); } .p-navEl.is-selected .p-navEl-splitTrigger { display: inline; } } } @media (max-width: @xf-publicNavCollapseWidth) { .has-js { .p-nav-inner { min-height: 45px; } .p-nav .p-nav-menuTrigger { display: inline-block; } .p-nav-smallLogo { display: inline-block; vertical-align: middle; } .p-nav-scroller { display: none; } } } // ACCOUNT/VISITOR/SEARCH SECTION .p-nav-opposite { margin-left: auto; margin-right: @xf-pageEdgeSpacer; text-align: right; flex-shrink: 0; } .p-navgroup { float: left; .m-clearFix(); &.p-discovery { &.p-discovery--noSearch { margin-left: 0; } } } .p-navgroup-link { float: left; padding: @xf-publicNavPaddingV @_navAccount-hPadding; &:hover { text-decoration: none; background: fade(@xf-contentAccentBg, 8%); color: @xf-contentAccentBg; } &.p-navgroup-link--user { .m-overflowEllipsis(); max-width: 150px; padding-top: 23px; padding-bottom: 23px; .avatar { .m-avatarSize(40px); margin: 0; &::after { display: none; } img { box-shadow: none; } } } &.badgeContainer { opacity: .6; position: relative; &:after { position: absolute; right: (@_navAccount-hPadding - 12px); top: (@xf-publicNavPaddingV - 6px); margin: 0; font-size: 10px; } &:hover, &.badgeContainer--highlighted { opacity: 1; } } &.is-menuOpen { .xf-publicNavTabMenuOpen(); opacity: 1; } &.p-navgroup-link--iconic { i:after { .m-faBase(); display: inline-block; min-width: 1.2em; text-align: center; } } &.p-navgroup-link--conversations i:after { .m-faContent(@fa-var-envelope, 1em); } &.p-navgroup-link--alerts i:after { .m-faContent(@fa-var-bell); //, .88em } &.p-navgroup-link--logIn i:after { .m-faContent(@fa-var-sign-in); //, .88em } &.p-navgroup-link--register i:after { .m-faContent(@fa-var-user-plus); //, .88em } &.p-navgroup-link--bookmarks i:after { .m-faContent(@fa-var-bookmark); //, .75em } &.p-navgroup-link--whatsnew i:after { .m-faContent(@fa-var-bolt); //, .63em } &.p-navgroup-link--search i:after { .m-faContent(@fa-var-search); //, 1em } } .p-navgroup-link--whatsnew { display: none; } @media (max-width: @xf-responsiveWide) { .p-navgroup-link { &.p-navgroup-link--iconic .p-navgroup-linkText, &.p-navgroup-link--textual i { display: none; } &.p-navgroup-link--textual { .m-overflowEllipsis(); max-width: 110px; } &.p-navgroup-link--iconic i:after { text-align: center; } } } @media (max-width: @xf-publicNavCollapseWidth) { .p-navgroup-link--whatsnew { display: block; } .has-js { .p-nav-opposite { align-self: center; margin-right: max(0px, @xf-pageEdgeSpacer - 6px); .p-navgroup { background: none; margin-left: 0; } .p-navgroup-link { border: none; border-radius: @xf-borderRadiusMedium; &.is-menuOpen { .m-borderBottomRadius(0); } &.badgeContainer { opacity: 1; } } } } } @media (max-width: 359px) { .p-navgroup-link&.p-navgroup-link--user { display: none; } } @media (max-width: 374px) { .p-navgroup-link.p-navgroup-link--register { display: none; } } ]]>
</template>
<template title="app_sectionlinks.less" type="public" addon_id="XF" version_id="2010170" version_string="2.1.1">
<![CDATA[ // SUB SECTION LINKS .p-sectionLinks { .xf-publicSubNav(); .hScroller-action { .m-hScrollerActionColorVariation( xf-default(@xf-publicSubNav--background-color, transparent), xf-default(@xf-publicSubNav--color, ~""), xf-default(@xf-publicSubNavElHover--color, ~"") ); } &.p-sectionLinks--empty { height: 10px; } } .p-sectionLinks-inner { .m-clearFix(); .m-pageWidth(); @defaultPadding: max(0px, @xf-pageEdgeSpacer - @xf-publicSubNavPaddingH); .m-pageInset(@defaultPadding); } .p-sectionLinks-list { .m-listPlain(); font-size: 0; a { color: inherit; } > li { display: inline-block; } .m-navElHPadding(@xf-publicSubNavPaddingH); .p-navEl { font-size: @xf-publicSubNav--font-size; &:hover { .xf-publicSubNavElHover(); a { text-decoration: @xf-publicSubNavElHover--text-decoration; } } &.is-menuOpen { .xf-publicSubNavElMenuOpen(); } } .p-navEl-link, .p-navEl-splitTrigger { padding-top: @xf-publicSubNavPaddingV; padding-bottom: @xf-publicSubNavPaddingV; } } @media (max-width: @xf-publicNavCollapseWidth) { .has-js .p-sectionLinks { display: none; } } ]]>
</template>
<template title="app_staffbar.less" type="public" addon_id="XF" version_id="2021370" version_string="2.2.13">
<![CDATA[ .p-staffBar { background: linear-gradient(180deg, #232427 0%, #1f2021 100%); border-bottom: 1px solid rgba(255,140,66,0.08); box-shadow: 0 8px 24px rgba(10,10,12,0.45); color: #e9e9ea; font-weight: 600; font-size: 13px; position: fixed; top: 0; left: 0; right: 0; z-index: 1000; height: 44px; display: flex; align-items: center; transition: transform 240ms cubic-bezier(.2,.8,.2,1), opacity 200ms ease; -webkit-font-smoothing: antialiased; } .p-staffBar.p-staffBar--hidden { transform: translateY(-100%); opacity: 0; pointer-events: none; } .p-staffBar a { color: #ff8c42; text-decoration: none; transition: color 180ms ease; } .p-staffBar a:hover { color: #ff7a20; } .p-staffBar-inner { .m-pageWidth(); .m-pageInset(); .m-clearFix(); display: flex; align-items: center; justify-content: center; height: 100%; } .p-staffBar-link { display: inline-flex; align-items: center; gap: 6px; color: #e9e9ea; padding: 6px 12px; margin-right: 8px; background: rgba(255,255,255,0.03); border-radius: 8px; border: 1px solid rgba(255,255,255,0.04); font-size: 12px; transition: background 180ms ease, box-shadow 180ms ease, transform 180ms ease; } .p-staffBar-link:hover { background: rgba(255,140,66,0.08); transform: translateY(-1px); box-shadow: 0 4px 14px rgba(0,0,0,0.25); color: #fff; } .p-staffBar-link:last-child { margin-right: 0; } .p-staffBar-link::before { content: '•'; font-size: 10px; color: #ff8c42; margin-right: 4px; } .has-staffBar .p-pageWrapper { padding-top: 44px; transition: padding-top 240ms cubic-bezier(.2,.8,.2,1); } .has-staffBar .p-staffBar--hidden + .p-pageWrapper { padding-top: 0; } ]]>
</template>
<template title="app_user_banners.less" type="public" addon_id="XF" version_id="2010470" version_string="2.1.4">
<![CDATA[ .m-userBannerVariation(@color; @bg; @border: false) { color: @color; background: @bg; border-color: xf-intensify(@bg, 10%); & when (iscolor(@border)) { border-color: @border; } } .userBanner { font-size: 75%; font-weight: @xf-fontWeightNormal; font-style: normal; padding: 1px @xf-paddingMedium; border: 1px solid transparent; border-radius: @xf-borderRadiusSmall; text-align: center; display: inline-block; strong { font-weight: inherit; } // variations &.userBanner--hidden { background: none; border: none; box-shadow: none; } &.userBanner--staff, &.userBanner--primary { .m-userBannerVariation(@xf-textColorEmphasized, @xf-paletteColor1, @xf-paletteColor1); } &.userBanner--accent { .m-userBannerVariation(@xf-textColorEmphasized, @xf-paletteAccent1, @xf-paletteAccent1); } &.userBanner--owner { .m-userBannerVariation(@xf-textColorEmphasized, @xf-paletteAccent2, @xf-paletteAccent2); } &.userBanner--red { .m-userBannerVariation(white, #d80000); } &.userBanner--green { .m-userBannerVariation(white, green); } &.userBanner--olive { .m-userBannerVariation(white, olive); } &.userBanner--lightGreen { .m-userBannerVariation(black, #ccf9c8, #bee8ba); } &.userBanner--blue { .m-userBannerVariation(white, #0008e3); } &.userBanner--royalBlue { .m-userBannerVariation(white, royalblue); } &.userBanner--skyBlue { .m-userBannerVariation(white, #7cc3e0); } &.userBanner--gray { .m-userBannerVariation(white, gray); } &.userBanner--silver { .m-userBannerVariation(black, silver); } &.userBanner--yellow { .m-userBannerVariation(black, #ffff91, #e6e687); } &.userBanner--orange { .m-userBannerVariation(black, #ffcb00); } } ]]>
</template>
<template title="core.less" type="public" addon_id="XF" version_id="2020970" version_string="2.2.9">
<![CDATA[ // ########################## GLOBAL BASE SETUP ####################### html { font: @xf-fontSizeNormal / @xf-lineHeightDefault sans-serif; font-family: @xf-fontFamilyUi; font-weight: @xf-fontWeightNormal; color: @xf-textColor; margin: 0; padding: 0; word-wrap: break-word; background-color: @xf-pageBg; /* // just a reminder that we *might* want this at some point -ms-text-size-adjust: none; -webkit-text-size-adjust: none;*/ } button, input, optgroup, select, textarea { font-family: @xf-fontFamilyUi; line-height: @xf-lineHeightDefault; } img { max-width: 100%; height: auto; } b, strong { font-weight: @xf-fontWeightHeavy; } a { .xf-link(); &:hover { .xf-linkHover(); } } svg { fill: currentColor; } {{ include('core_setup.less') }} {{ include('core_utilities.less') }} {{ include('core_list.less') }} {{ include('core_categorylist.less') }} {{ include('core_block.less') }} {{ include('core_blockmessage.less') }} {{ include('core_blockstatus.less') }} {{ include('core_blocklink.less') }} {{ include('core_blockend.less') }} {{ include('core_fixedmessage.less') }} {{ include('core_button.less') }} {{ include('core_meter_bar.less') }} // ################################# INPUTS & FORMS ##################### {{ include('core_input.less') }} {{ include('core_formrow.less') }} {{ include('core_collapse.less') }} {{ include('core_badge.less') }} {{ include('core_tooltip.less') }} {{ include('core_menu.less') }} {{ include('core_offcanvas.less') }} {{ include('core_tab.less') }} {{ include('core_overlay.less') }} {{ include('core_globalaction.less') }} {{ include('core_avatar.less') }} {{ include('core_datalist.less') }} {{ include('core_filter.less') }} {{ include('core_contentrow.less') }} {{ include('core_pagenav.less') }} {{ include('core_hscroller.less') }} // FLASH MESSAGES .flashMessage { display: none; position: fixed; top: 0; left: 0; right: 0; z-index: @zIndex-9; .xf-flashMessage(); .m-transitionFadeDown(); } // AUTOCOMPLETE .autoCompleteList { .m-autoCompleteList(); margin-top: 2px; &.autoCompleteList--inherit { font-size: inherit; li { padding: @xf-paddingLarge; line-height: inherit; } } } // #################################### TAGS ############################## // note that while this is related to tags, it's commonly used so just include it .tagList, .tagList > dt, .tagList > dd { display: inline; padding: 0; margin: 0; } .tagItem { display: inline-block; max-width: 100%; padding: 0 6px 1px; margin: 0 0 2px; border-radius: @xf-borderRadiusMedium; font-size: @xf-fontSizeSmaller; .xf-chip(); a&:hover { text-decoration: none; color: @xf-chip--color; .xf-chipHover(); } } // ############################# MISC ######################### .recaptcha { &.input { box-sizing: content-box; max-width: 100%; } img { max-width: 100%; } } .likesBar { .m-transitionFadeDown(); .xf-minorBlockContent(); border-left: @xf-borderSizeMinorFeature solid @xf-borderColorFeature; padding: @xf-paddingMedium; font-size: @xf-fontSizeSmaller; margin-top: @xf-paddingMedium; } .likeIcon { &:before { .m-faBase(); .m-faContent(@fa-var-thumbs-up); //, 1em color: @xf-textColorFeature; //margin-right: .2em; } } .reactionsBar { .m-transitionFadeDown(); .xf-minorBlockContent(); border-left: @xf-borderSizeMinorFeature solid @xf-borderColorFeature; border-radius: @xf-blockBorderRadius; padding: @xf-paddingMedium; font-size: @xf-fontSizeSmaller; margin-top: @xf-paddingMedium; } .reactionSummary { display: inline-block; .m-listPlain(); line-height: 16px; height: 16px; margin: 0 -2px; vertical-align: text-top; > li { display: inline-block; height: 20px; width: 20px; padding: 2px; margin: -2px 0; background: @xf-contentBg; border-radius: 50%; position: relative; margin-left: -6px; &:nth-child(1) { z-index: 3; margin-left: 0; } &:nth-child(2) { z-index: 2; } &:nth-child(3) { z-index: 1; } } .reaction { position: absolute; top: 0; &.reaction { // increase specificity to override .reaction.reaction--<size> display: block; } } } .reactionsBar, .message-responseRow { .reactionSummary { > li { background: @xf-contentAltBg; } .reaction { top: 2px; } } } .reactTooltip { padding: 0; display: flex; flex-wrap: wrap; justify-content: center; max-width: 100%; .reaction { margin: @xf-paddingSmall; .m-transition(transform); &:hover { .m-transform(scale(1.2)); } } } .colorChip { display: inline-block; border: @xf-borderSize solid @xf-borderColor; border-radius: @xf-borderRadiusMedium; padding: 1px; width: 100px; } .colorChip-inner { display: block; background-color: transparent; border-radius: @xf-borderRadiusSmall; height: 1em; } .colorChip-value { display: none; } pre.sf-dump { // not ideal, but then again neither is the default of 99999... z-index: @zIndex-1 !important; } .grecaptcha-badge { z-index: @zIndex-5; } // Bookmarking links for 2.1 .bookmarkLink { &:before { .m-faBase(); .m-faContent(@fa-var-bookmark); font-weight: min(@xf-fontAwesomeWeight, @faWeight-regular); } &.is-bookmarked { &:before { font-weight: @faWeight-solid; } } &.bookmarkLink--highlightable.is-bookmarked { color: @xf-textColorAttention; &:hover { color: @xf-textColorAccentContent; } } span { margin-left: .35em; } } .dragHandle { cursor: move; touch-action: none; &:before { .m-faBase(); .m-faContent(@fa-var-bars); } .is-undraggable & { visibility: hidden; cursor: default; } } .memberProfileBanner { background-size: cover !important; background-position-x: center !important; background-repeat: no-repeat !important; &.memberProfileBanner--small { height: 150px; margin-bottom: @xf-paddingMedium; } &.memberProfileBanner--empty { display: none; } } .solutionIcon { display: inline-flex; padding: @xf-paddingMedium; font-size: @xf-fontSizeLargest; line-height: 1; color: @xf-textColorMuted; .m-transition(); a& { color: @xf-textColorMuted; text-decoration: none; } &:before { .m-faBase(); .m-faContent(@fa-var-check-circle); font-weight: min(@xf-fontAwesomeWeight, @faWeight-regular); } &.is-solution { color: @xf-votePositiveColor; opacity: 1; &:before { font-weight: @faWeight-solid; } } } {{ include('core_action_bar.less') }} {{ include('core_labels.less') }} {{ include('core_reaction.less') }} {{ include('core_smilie.less') }} {{ include('core_bbcode.less') }} {{ include('core_dt_proprties.less') }} {{ include('core_dt_extra.less') }} // RESOLUTION OUTPUT .debugResolution { .debugResolution-output:before { content: "Full @{xf-responsiveWide} - @{xf-pageWidthMax}"; @media (min-width: @xf-pageWidthMax) { content: "Max > @{xf-pageWidthMax}"; } @media (max-width: @xf-responsiveWide) { content: "Wide < @{xf-responsiveWide}"; } @media (max-width: @xf-responsiveMedium) { content: "Medium < @{xf-responsiveMedium}"; } @media (max-width: @xf-responsiveNarrow) { content: "Narrow < @{xf-responsiveNarrow}"; } } } ]]>
</template>
<template title="core_blockend.less" type="public" addon_id="XF" version_id="2021070" version_string="2.2.10">
<![CDATA[ // This contains rules that apply to various block and block-related systems. This file should be included // after all of the primary definitions to ensure the rules override. .blockMessage, .blockStatus, .block-row { p:first-child { margin-top: 0; } p:last-child { margin-bottom: 0; } } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .blockMessage.blockMessage--none { margin-left: 0; margin-right: 0; } } ]]>
</template>
<template title="core_button.less" type="public" addon_id="XF" version_id="2020970" version_string="2.2.9">
<![CDATA[ // ############################ BUTTONS ################# .button, a.button // needed for specificity over a:link { .m-buttonBase(); a { color: inherit; text-decoration: none; } .xf-buttonDefault(); &.button--primary { .xf-buttonPrimary(); } &.button--cta { .xf-buttonCta(); } &.button--link { // block colors background: @xf-contentBg; color: @xf-linkColor; border: @xf-borderSize solid @xf-borderColor; &:hover, &:active, &:focus { text-decoration: none; background: @xf-contentHighlightBg; color: @xf-contentHighlightBase--color; } } &.button--plain { background: none; color: @xf-linkColor; border: none; &:hover, &:active, &:focus { text-decoration: none; background: none; } } &.button--alt { // block colors background-color: @xf-paletteColor1; color: @xf-linkColor; .m-buttonBorderColorVariation(@xf-paletteColor2); &:hover, &:active, &:focus { background-color: @xf-paletteColor1; color: @xf-linkColor; } } &.button--longText { .m-overflowEllipsis(); max-width: 100%; display: inline-block; } &.is-disabled { .xf-buttonDisabled(); &:hover, &:active, &:focus { background: xf-default(@xf-buttonDisabled--background-color, transparent) !important; } } &.is-hidden { display: none; } &.button--scroll { background: @xf-contentHighlightBg; color: @xf-textColorEmphasized; font-size: 80%; clip-path: polygon(0 100%, 0 30%, 30% 0, 100% 0, 100% 100%); padding: @xf-paddingLargest @xf-elementSpacer; margin: 0; &::before, &::after { display: none; } } &.button--normal { font-size: @xf-fontSizeNormal; } &.button--small { font-size: @xf-fontSizeSmall; padding: 3px 6px; } &.button--smaller { font-size: @xf-fontSizeSmaller; padding: 2px 5px; } &.button--fullWidth { display: block; width: 100%; } &.button--adminStyleAsset { &.is-disabled { visibility: hidden; } &.is-modify { .m-buttonIcon(@fa-var-pencil); } &.is-revert { .m-buttonIcon(@fa-var-history); } } &.button--wrap { white-space: normal; } &.button--icon { > .button-text:before, .button-icon { .m-faBase(); } > .button-text:before, > .fa--xf:before, .button-icon { font-size: 120%; vertical-align: -.1em; display: inline-block; margin: -.255em 6px -.255em 0; } > .fa--xf { // helps fix a button alignment issue (Chrome only) line-height: inherit; } .button-icon { height: 1em; vertical-align: 0; } &.button--iconOnly { > .button-text:before, > i.fa--xf:before, .button-icon { margin-left: 0; margin-right: 0; } } &.button--padded { > .button-text:before, > i.fa--xf:before, .button-icon { margin-top: 0; margin-bottom: 0; } } &--add { .m-buttonIcon(@fa-var-plus-square, .88em); } &--confirm { .m-buttonIcon(@fa-var-check, 1em); } &--write { .m-buttonIcon(@fa-var-edit, 1.13em); } &--import { .m-buttonIcon(@fa-var-upload, 1.13em); } &--export { .m-buttonIcon(@fa-var-download, 1.13em); } &--download { .m-buttonIcon(@fa-var-download, 1.13em); } &--redirect { .m-buttonIcon(@fa-var-external-link, 1em); } &--disable { .m-buttonIcon(@fa-var-power-off, 1em); } &--edit { .m-buttonIcon(@fa-var-edit, 1.13em); } &--save { .m-buttonIcon(@fa-var-save, .88em); } &--reply { .m-buttonIcon(@fa-var-reply, 1.13em); } &--quote { .m-buttonIcon(@fa-var-quote-left, 1.13em); } &--purchase { .m-buttonIcon(@fa-var-credit-card, 1.13em); } &--payment { .m-buttonIcon(@fa-var-credit-card, 1.13em); } &--convert { .m-buttonIcon(@fa-var-bolt, .75em); } &--search { .m-buttonIcon(@fa-var-search, 1em); } &--sort { .m-buttonIcon(@fa-var-sort, .63em); } &--upload { .m-buttonIcon(@fa-var-upload, 1.13em); } &--attach { .m-buttonIcon(@fa-var-paperclip, 1em); } &--login { .m-buttonIcon(@fa-var-lock, .88em); } &--rate { .m-buttonIcon(@fa-var-star, 1.13em); } &--config { .m-buttonIcon(@fa-var-cog, 1em); } &--refresh { .m-buttonIcon(@fa-var-sync-alt, 1em); } &--translate { .m-buttonIcon(@fa-var-globe, .97em); } &--vote { .m-buttonIcon(@fa-var-check-circle, 1em); } &--result { .m-buttonIcon(@fa-var-chart-bar, 1em); } &--history { .m-buttonIcon(@fa-var-history, 1em); } &--cancel { .m-buttonIcon(@fa-var-ban, 1em); } &--close { .m-buttonIcon(@fa-var-times, .69em); } &--preview { .m-buttonIcon(@fa-var-eye, 1.13em); } &--conversation { .m-buttonIcon(@fa-var-comments, 1.13em); } &--bolt { .m-buttonIcon(@fa-var-bolt, .75em); } &--list { .m-buttonIcon(@fa-var-list, 1em); } &--prev { .m-buttonIcon(@fa-var-chevron-left, .63em); } &--next { .m-buttonIcon(@fa-var-chevron-right, .63em); } &--markRead { .m-buttonIcon(@fa-var-check-square, .88em); } &--user { .m-buttonIcon(@fa-var-user, .88em); } &--userCircle { .m-buttonIcon(@fa-var-user-circle, .97em); } &--notificationsOn { .m-buttonIcon(@fa-var-bell, 1.25em); } // actually only .88em, but as we use this as a toggle, make it the same width as bell-slash &--notificationsOff { .m-buttonIcon(@fa-var-bell-slash, 1.25em); } &--show { .m-buttonIcon(@fa-var-eye, 1.25em) } // actually only 1.13em, but it's a toggle &--hide { .m-buttonIcon(@fa-var-eye-slash, 1.25em) } // for inline mod confirmations &--merge { .m-buttonIcon(@fa-var-compress, .88em); } &--move { .m-buttonIcon(@fa-var-share, 1.13em); } &--copy { .m-buttonIcon(@fa-var-copy, .88em); } &--approve, &--unapprove { .m-buttonIcon(@fa-var-shield, 1em); } &--delete, &--undelete { .m-buttonIcon(@fa-var-trash-alt, .88em); } &--stick, &--unstick { .m-buttonIcon(@fa-var-thumbtack, .75em); } &--lock { .m-buttonIcon(@fa-var-lock, .88em); } &--unlock { .m-buttonIcon(@fa-var-unlock, .88em); } &--bookmark { .m-buttonIcon(@fa-var-bookmark); &.is-bookmarked .button-text:before { font-weight: @faWeight-solid; color: @xf-textColorAttention; } } } &.button--provider { > .button-text:before, .button-icon { .m-faBase('Brands'); font-size: 120%; vertical-align: middle; display: inline-block; margin: -4px 6px -4px 0; } .button-icon { height: 1em; vertical-align: 0; } &--facebook { .m-buttonColorVariation(#3B5998, white); .m-buttonIcon(@fa-var-facebook, 1em); } &--twitter { .m-buttonColorVariation(#1DA1F3, white); .m-buttonIcon(@fa-var-twitter, 1em); } &--google { .m-buttonColorVariation(white, #444); border-color: #e9e9e9; > .button-text:before { display: none; } } &--github { .m-buttonColorVariation(#666666, white); .m-buttonIcon(@fa-var-github, .97em); } &--linkedin { .m-buttonColorVariation(#0077b5, white); .m-buttonIcon(@fa-var-linkedin, .88em); } &--microsoft { .m-buttonColorVariation(#00bcf2, white); .m-buttonIcon(@fa-var-windows, .88em); } &--yahoo { .m-buttonColorVariation(#410093, white); .m-buttonIcon(@fa-var-yahoo, .88em); } } &.button--splitTrigger { // button-text and button-menu are always children of button--splitTrigger // but are defined here for reasons of specificity, as these border colors // are overwritten by .m-buttonBorderColorVariation() > .button-text { border-right: @xf-borderSize solid transparent; } > .button-menu { border-left: @xf-borderSize solid transparent; } .m-clearFix(); padding: 0; font-size: 0; display: inline-block; button.button-text { background: transparent; border: none; border-right: @xf-borderSize solid transparent; color: inherit; } > .button-text, > .button-menu { .xf-buttonBase(); display: inline-block; &:hover { &:after { opacity: 1; } } } > .button-text { .m-borderRightRadius(0); } > .button-menu { .m-borderLeftRadius(0); padding-right: xf-default(@xf-buttonBase--padding-right, 0);// * (2/3); padding-left: xf-default(@xf-buttonBase--padding-left, 0);// * (2/3); &:after { .m-menuGadget(); // .58em opacity: .5; } } } } .buttonGroup { display: inline-block; vertical-align: top; .m-clearFix(); &.buttonGroup--aligned { vertical-align: middle; } > .button { float: left; &:not(:first-child) { border-left: none; } &:not(:first-child):not(:last-child) { border-radius: 0; } &:first-child:not(:last-child) { .m-borderRightRadius(0); } &:last-child:not(:first-child) { .m-borderLeftRadius(0); } } > .buttonGroup-buttonWrapper { float: left; &:not(:first-child) > .button { border-left: none; } &:not(:first-child):not(:last-child) > .button { border-radius: 0; } &:first-child:not(:last-child) > .button { .m-borderRightRadius(0); } &:last-child:not(:first-child) > .button { .m-borderLeftRadius(0); } } } .toggleButton { > input { display: none; } > span { .xf-buttonDisabled(); .m-buttonBorderColorVariation(xf-default(@xf-buttonDisabled--background-color, transparent)); } &.toggleButton--small > span { font-size: @xf-fontSizeSmaller; padding: @xf-paddingSmall; } > input:checked + span { .xf-buttonDefault(); .m-buttonBlockColorVariationSimple(xf-default(@xf-buttonDefault--background-color, transparent)); } } .u-scrollButtons { position: fixed; bottom: 0; right: (@xf-pageEdgeSpacer) / 2; .has-hiddenscroll & { right: 20px; } z-index: @zIndex-9; .m-transition(opacity; @xf-animationSpeed); opacity: 0; display: none; &.is-transitioning { display: block; } &.is-active { display: block; opacity: 1; } .button { display: block; + .button { margin-top: (@xf-pageEdgeSpacer) / 2; } } } ]]>
</template>
<template title="core_dt_extra.less" type="public" addon_id="" version_id="0" version_string="">
<![CDATA[ a:link { -webkit-tap-highlight-color: fade(@xf-paletteColor1, 30%); } ::selection { background-color: fade(@xf-paletteColor1, 80%);color: #fff; } ::-moz-selection { background-color: fade(@xf-paletteColor1, 80%);color: #fff; } .fr-popup .fr-color-set > span:hover { transform: scale(1.2,1.2); } .link.link--external { color: @xf-bbCodeBlockTitle--color; &:hover { color: @xf-paletteColor1; } } .editorSmilies .smilie { opacity: 0.5; .m-transition(all, 0.2s); &:hover { opacity: 1.0; transform: scale(1.3); } } .p-breadcrumbs > li:last-child::after { display: none; } .animate-pulse { -webkit-animation: pulse 2s infinite linear; animation: pulse 2s infinite linear; } @keyframes pulse { 0% {transform: scale(1);} 15% {transform: scale(1.3);} 30% {transform: scale(1);} 45% {transform: scale(1.3);} 60% {transform: scale(1);} } .js-bookmarksMenuBody .contentRow-title { font-size: @xf-fontSizeNormal; } .p-breadcrumbs--container, .p-breadcrumbs.p-breadcrumbs--bottom { } .p-breadcrumbs--container { margin-bottom: @xf-elementSpacer; .p-breadcrumbs { margin-bottom: 0; } } .block.block--treeEntryChooser { .block-container { margin: @xf-paddingLarge @xf-paddingLargest; } } .block.block--category { .block-header a { .xf-dt_category_header(); } } .p-body-sidebar { .xf-dt_sidebar_styling(); .block-container { .xf-dt_widget_wrapper(); } .block-minorHeader { .xf-dt_widget_header(); } } .p-footer-copyright { .fa-heart { color: red; } } .select2-results__options li { .xf-menuLinkRow(); } .select2-container .select2-results__option.select2-results__option--highlighted { .xf-menuLinkRowSelected(); } // ################ Templates Enhancemnts ################ .badge, .badgeContainer:after { min-width: 12px; height: 16px; line-height: 14px; text-align: center; white-space: nowrap; word-wrap: normal; padding: 0 2px; margin: -2px 0; } @keyframes fa-bell-ring { 0% { transform:rotate(-15deg) } 2% { transform:rotate(15deg) } 4% { transform:rotate(-18deg) } 6% { transform:rotate(18deg) } 8% { transform:rotate(-22deg) } 10% { transform:rotate(22deg) } 12% { transform:rotate(-18deg) } 14% { transform:rotate(18deg) } 16% { transform:rotate(-12deg) } 18% { transform:rotate(12deg) } 20%, 100% { transform:rotate(0deg) } } .p-navgroup-link--alerts.badgeContainer--highlighted i::after { animation: fa-bell-ring 5s ease 10s 6; transform-origin: 50% 0; } .blockLink { &:hover { .xf-contentAltBase(); } } .filterBar-menuTrigger { color: @xf-textColorEmphasized; &:hover { color: inherit; } } .label { &.label--primary { .m-labelVariation(@xf-textColorEmphasized, @xf-paletteColor1, @xf-paletteColor1); } } .tooltip-content { .tooltip--preview & { .m-dropShadow(0, 0, 30px, 0, .12); } .tooltip--bookmark &, .tooltip--member &, .tooltip--share & { .m-dropShadow(0, 0, 30px, 0, .12); } } .tabs--standalone { .tabs-tab { position: relative; padding: @xf-blockPaddingV @xf-blockPaddingH (@xf-blockPaddingV + 4); border-bottom: none; &::after { content: ''; width: auto; height: 4px; position: absolute; right: 4px; bottom: 0; left: 4px; background-color: currentColor; pointer-events: none; transform: translate3d(0,0,0) scaleY(1); transform-origin: center bottom; will-change: transform; opacity: 0; border-radius: 500px 500px 0 0; } &.is-active { &::after { opacity: 1; } } } } .block { &.block--treeEntryChooser { .block-desc { color: fade(@xf-majorHeadingTextColor, 60%); } } } .block-header { .block-desc { <xf:if is="property('dt_category_header')"> color: fade(@xf-dt_category_header--color, 70); <xf:else /> color: fade(@xf-majorHeadingTextColor, 60%); </xf:if> } } .block-tabHeader { .tabs-tab { position: relative; padding: @xf-paddingLargest @xf-blockPaddingH (@xf-paddingLargest + 4); border-bottom: none; &::after { content: ''; width: auto; height: 4px; position: absolute; right: 4px; bottom: 0; left: 4px; background-color: currentColor; pointer-events: none; transform: translate3d(0,0,0) scaleY(1); transform-origin: center bottom; will-change: transform; opacity: 0; border-radius: 500px 500px 0 0; } &.is-active { &::after { opacity: 1; } } &:hover { background: @xf-blockTabHeaderBg; &::after { opacity: 1; } } } } .block-row { &.block-row--clickable:hover { .xf-contentAltBase(); } } .inputGroup { &.inputGroup--joined { .input { &:first-child { border-top-left-radius: @xf-input--border-radius; border-bottom-left-radius: @xf-input--border-radius; } &:last-child { border-top-right-radius: @xf-input--border-radius; border-bottom-right-radius: @xf-input--border-radius; } } .inputGroup-text { &:first-child { border-top-left-radius: @xf-input--border-radius; border-bottom-left-radius: @xf-input--border-radius; } &:last-child { border-top-right-radius: @xf-input--border-radius; border-bottom-right-radius: @xf-input--border-radius; } } } } .inputNumber-button { .inputGroup.inputGroup--joined & { &:hover, &:active, &:focus { .xf-contentHighlightBase(); } } } .notice { &.notice--primary { border-color: @xf-borderColorHighlight; } &.notice--accent { border-color: @xf-borderColorAccentContent; } } .bbWrapper .bbCodeBlock--unfurl { .xf-contentAltBase(); } .overlay-container { transform: translateY(-10px); transition: cubic-bezier(0.4, 0, 0.2, 1) 0.26s transform, cubic-bezier(0.4, 0, 0.2, 1) 0.26s opacity; &.is-active { transform: translateY(0); } } .overlay { border: none; .m-dropShadow(0, 5px, 15px, 0, .2); } .overlay-titleCloser { color: @xf-overlayHeader--color; &:hover { color: inherit; } } .overlay-content { .listColumns > li { padding: 0 @xf-paddingLarge; } } .structItemContainer .structItem { background: @xf-contentAltBg; border-top: none; border-radius: @xf-blockBorderRadius; margin: @xf-paddingMedium 0; } .structItem-cell .structItem-title { font-size: @xf-fontSizeNormal; } .fr-box.bbWrapper.fr-basic { border-color: @xf-borderColor; &.is-focused, &.is-preview, &.is-preview .fr-toolbar .fr-btn-grp.rte-tab--preview { border-color: @xf-paletteAccent1; } } .menu .alert.is-unread { .xf-contentAltBase(); } .message-content .messageNotice { &::before { color: fade(@xf-contentHighlightBase--color, 65%); } &.messageNotice--highlighted { a, &::before { color: fade(@xf-contentHighlightBase--color, 65%); } } } .p-body .pollResult.pollResult--showVoters:hover { .xf-contentAltBase(); } // ################ Theme Enhancements ################ .p-nav { .p-header-logo { margin-right: 35px; margin-left: @xf-paddingLarge; } } .p-nav-list .p-navEl { position: relative; &::before { content: ''; display: block; position: absolute; background-color: @xf-publicNavSelected--color; bottom: 0; left: 4px; right: 4px; height: 4px; width: auto; border-radius: 500px 500px 0 0; opacity: 0; .m-transition(); transform: translate3d(0, 0, 0) scaleY(0); will-change: transform, opacity; transform-origin: center bottom; pointer-events: none; } &:hover, &.is-selected { &::before { opacity: 1; transform: translate3d(0, 0, 0) scaleY(1); } } } .menu-linkRow { position: relative; &::before { content: ''; display: block; height: 0; width: 3px; transition: inherit; position: absolute; left: -10px; bottom: 0; border-radius: 0 500px 500px 0; .m-transition(height); } } .block-container { &--none { box-shadow: none; } } .avatar:not(.avatar--default--dynamic) { position: relative; overflow: initial; margin: @xf-paddingSmall; img { position: relative; box-shadow: 0 0 0 3px rgb(37, 40, 54); .m-transition(); z-index: 2; } &:hover { img { box-shadow: 0 0 0 0 rgb(37, 40, 54); } } &::after { content: ''; display: block; width: calc(~'100% + 10px'); height: calc(~'100% + 10px'); background: linear-gradient(45deg,@xf-paletteColor1,@xf-paletteAccent1); position: absolute; top: -5px; border-radius: 500px; z-index: 1; left: -5px; } } .avatar.avatar--xs { &::after { display: none; } } .menu-linkRow:hover { &::before { height: 100%; background-color: @xf-menuLinkRowSelected--color; } } .button { margin: @xf-paddingMedium; &::before { content: ''; display: block; width: 15px; height: 15px; background-color: rgba(0, 0, 0, 0.15); position: absolute; bottom: 2px; right: 2px; pointer-events: none; transform: translate3d(0, 0, 0) scale(1); transform-origin: right bottom; transition: transform .2s ease-in-out, opacity .2s ease-in-out; clip-path: polygon(100% 0, 100% 100%, 0% 100%); } &::after { content: ''; display: block; top: -4px; right: -4px; bottom: -4px; left: -4px; pointer-events: none; border: 1px solid @xf-buttonTextColor; position: absolute; opacity: .15; border-radius: @xf-buttonBase--border-radius; transition: clip-path .2s ease-in-out, transform .2s ease-in-out, opacity .2s ease-in-out, -webkit-clip-path .2s ease-in-out; transform-origin: center; transform: translate3d(0, 0, 0); } &:hover { &::before { transform: translate3d(0, 0, 0) scale(1.5); } &::after { opacity: .25; clip-path: polygon(100% 0, 100% calc(100% - 25px), calc(100% - 25px) 100%, 0 100%, 0 0); } } } .button.button--link, a.button.button--link { margin: 0; &::after { display: none; } } .p-body-sidebar { .block-minorHeader { &::before { content: ''; height: 5px; width: 55px; background-color: currentColor; display: inline-block; position: absolute; bottom: 0; clip-path: polygon(0 0,calc(100% - 5px) 0,100% 100%,100% 100%,0 100%); right: 0; transform: scaleX(-1); opacity: .15; } } .block-body { padding: @xf-paddingLarge; &.block-row { margin: @xf-paddingLarge; } } .block-row { background: @xf-contentAltBg; border-radius: @xf-blockBorderRadius; margin-top: @xf-paddingMedium; } } .block-container--discussion { background: none; border: none; box-shadow: none; .block-filterBar { display: flex; flex-wrap: wrap; align-items: center; padding-left: 0; padding-right: 0; } .block-outer-opposite { margin-right: auto; } .block-body { background: @xf-contentBg; padding: @xf-paddingLarge; border-radius: @xf-blockBorderRadius; } } .p-body-content .fr-box.fr-basic .fr-toolbar.fr-top { background: @xf-contentAltBg; padding: @xf-paddingMedium; border-bottom: @xf-borderSize solid @xf-borderColor; .fr-btn-grp { background: @xf-contentBg; padding: 2px @xf-paddingMedium; border: @xf-borderSize solid @xf-borderColor; border-radius: @xf-blockBorderRadius; margin-right: @xf-paddingSmall; } } .message-userContent { background-color: rgba(0,0,0,.085); padding: @xf-paddingMedium @xf-paddingLargest @xf-paddingLargest; border-radius: @xf-blockBorderRadius; } .fr-box.bbWrapper.fr-basic.is-focused { border-color: @xf-borderColorHeavy; } .p-footer { .p-footer-linkList { display: flex; flex-wrap: wrap; justify-content: center; } .p-footer-row-main { float: none; } } .p-sectionLinks-list { z-index: 1; } ]]>
</template>
<template title="core_dt_proprties.less" type="public" addon_id="" version_id="0" version_string="">
<![CDATA[ // ########################## DOHTHEME OPTION ####################### // ######## GENERAL ######## // #### Hide Breadcrum on Forum Home #### <xf:if is="property('dt_breadbrumb_index')"> .template-forum_list .p-breadcrumbs { display: none; } .template-forum_list .p-body-inner { padding: 20px; } </xf:if> <xf:if is="property('dt_breadbrumb_index') AND !property('dt_collapsible_sidebar')"> .template-forum_list .p-breadcrumbs--container { display: none; } </xf:if> <xf:if is="property('dt_breadbrumb_index') AND property('dt_disable_sidebar')"> .template-forum_list .p-breadcrumbs--container { display: none; } </xf:if> // #### Hide Title Bar in Forum Home #### <xf:if is="property('dt_title_index')"> .template-forum_list .p-title-value { display: none; } .p-title-pageAction { margin-left: auto; } </xf:if> // #### Remove page actions from forum index #### <xf:if is="property('dt_pa_index')"> .template-forum_list .p-title-pageAction { display: none; } </xf:if> <xf:if is="property('dt_title_index') AND property('dt_pa_index')"> .template-forum_list .p-body-header { display: none; } </xf:if> // #### Avatar Shape #### <xf:if is="property('dt_avatar_shape') == 'option2'"> .avatar img, .avatar.avatar--default.avatar--default--dynamic, .avatar.avatar--default.avatar--default--text { -webkit-clip-path: circle(50% at 50% 50%); clip-path: circle(50% at 50% 50%); } .avatar.avatar--separated { border-radius: 50%; } <xf:elseif is="property('dt_avatar_shape') == 'option3'" /> .avatar img, .avatar.avatar--default.avatar--default--dynamic, .avatar.avatar--default.avatar--default--text { -webkit-clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); } <xf:elseif is="property('dt_avatar_shape') == 'option4'" /> .avatar img, .avatar.avatar--default.avatar--default--dynamic, .avatar.avatar--default.avatar--default--text { -webkit-clip-path: polygon(50% 0, 100% 38%, 80% 100%, 20% 100%, 0 38%); clip-path: polygon(50% 0, 100% 38%, 80% 100%, 20% 100%, 0 38%); } <xf:elseif is="property('dt_avatar_shape') == 'option5'" /> .avatar img, .avatar.avatar--default.avatar--default--dynamic, .avatar.avatar--default.avatar--default--text { -webkit-clip-path: polygon(50% 0, 95% 25%, 95% 75%, 50% 100%, 5% 75%, 5% 25%); clip-path: polygon(50% 0, 95% 25%, 95% 75%, 50% 100%, 5% 75%, 5% 25%); } <xf:elseif is="property('dt_avatar_shape') == 'option6'" /> .avatar img, .avatar.avatar--default.avatar--default--dynamic, .avatar.avatar--default.avatar--default--text { -webkit-clip-path: polygon(50% 0%, 90% 20%, 100% 60%, 75% 100%, 25% 100%, 0% 60%, 10% 20%); clip-path: polygon(50% 0%, 90% 20%, 100% 60%, 75% 100%, 25% 100%, 0% 60%, 10% 20%); } <xf:elseif is="property('dt_avatar_shape') == 'option7'" /> .avatar img, .avatar.avatar--default.avatar--default--dynamic, .avatar.avatar--default.avatar--default--text { -webkit-clip-path: polygon(0 50%, 15% 15%, 50% 0, 85% 15%, 100% 50%, 85% 85%, 50% 100%, 15% 85%); clip-path: polygon(0 50%, 15% 15%, 50% 0, 85% 15%, 100% 50%, 85% 85%, 50% 100%, 15% 85%); } <xf:elseif is="property('dt_avatar_shape') == 'option8'" /> .avatar img, .avatar.avatar--default.avatar--default--dynamic, .avatar.avatar--default.avatar--default--text { -webkit-clip-path: polygon(50% 0%, 83% 12%, 100% 43%, 94% 78%, 68% 100%, 32% 100%, 6% 78%, 0% 43%, 17% 12%); clip-path: polygon(50% 0%, 83% 12%, 100% 43%, 94% 78%, 68% 100%, 32% 100%, 6% 78%, 0% 43%, 17% 12%); } <xf:elseif is="property('dt_avatar_shape') == 'option9'" /> .avatar { border-radius: 0; } .avatar img, .avatar.avatar--default.avatar--default--dynamic, .avatar.avatar--default.avatar--default--text { -webkit-clip-path: polygon(20% 0%, 80% 0%, 100% 20%, 100% 80%, 80% 100%, 20% 100%, 0% 80%, 0% 20%); clip-path: polygon(20% 0%, 80% 0%, 100% 20%, 100% 80%, 80% 100%, 20% 100%, 0% 80%, 0% 20%); } <xf:elseif is="property('dt_avatar_shape') == 'option10'" /> .avatar { border-radius: 0; } .avatar img, .avatar.avatar--default.avatar--default--dynamic, .avatar.avatar--default.avatar--default--text { -webkit-clip-path: polygon(0% 15%, 15% 15%, 15% 0%, 85% 0%, 85% 15%, 100% 15%, 100% 85%, 85% 85%, 85% 100%, 15% 100%, 15% 85%, 0% 85%); clip-path: polygon(0% 15%, 15% 15%, 15% 0%, 85% 0%, 85% 15%, 100% 15%, 100% 85%, 85% 85%, 85% 100%, 15% 100%, 15% 85%, 0% 85%); } </xf:if> <xf:if is="property('dt_avatar_shape') != 'option1'"> .menu.menu--account { .avatar img, .avatar.avatar--default.avatar--default--dynamic, .avatar.avatar--default.avatar--default--text { clip-path: none; } } </xf:if> // #### Guest Message Content #### <xf:if is="property('dt_guest_message')"> .p-guest--message { .xf-dt_guest_message_css(); <xf:if is="property('dt_guest_message_index')"> display: none; .template-forum_list & { display: block; } </xf:if> &::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: fade(@xf-contentAccentBg, 30%); background-image: linear-gradient(-90deg,fade(@xf-contentAccentBg, 40%) 0%,@xf-contentAccentBg 73%); z-index: 1; } &-content { position: relative; z-index: 2; } } .p-guest--message h1 { font-size: 3.75em; -webkit-text-stroke: 2px currentColor; -webkit-text-fill-color: transparent; letter-spacing: 2px; margin-top: 0; margin-bottom: 0; } .p-guest--message p { font-size: @xf-fontSizeLarge; font-weight: 600; } </xf:if> // #### Hide Top Breadcrumb #### <xf:if is="property('dt_breadbrumb_top')"> .p-breadcrumbs:not(.p-breadcrumbs--bottom) { display: none; } .p-body-inner { padding-top: 20px; } </xf:if> <xf:if is="property('dt_breadbrumb_top') AND property('dt_collapsible_sidebar')"> .p-breadcrumbs--container:not(.p-breadcrumbs--container--side) { display: none; } </xf:if> <xf:if is="property('dt_breadbrumb_top') AND !property('dt_collapsible_sidebar')"> .p-breadcrumbs--container { display: none; } </xf:if> <xf:if is="property('dt_breadbrumb_top') AND property('dt_disable_sidebar')"> .p-breadcrumbs--container { display: none; } </xf:if> // #### Hide Bottom Breadcrumb #### <xf:if is="property('dt_breadbrumb_bottom')"> .p-breadcrumbs.p-breadcrumbs--bottom { display: none; } .p-body-inner { padding-bottom: 20px; } </xf:if> // #### Home breadcrumb as icon #### <xf:if is="property('dt_homeCrumb_icon')"> ul.p-breadcrumbs > li:first-child::before { display: none; } </xf:if> @media (min-width: @xf-responsiveWide) { @animationSpeedValue: .15s; <xf:if is="property('dt_page_animation')"> @keyframes fade { from { opacity: 0; }; to { opacity: 1; }; } .fadeAnimation(@iteration) { animation: fade @animationSpeedValue ease; animation-delay: @iteration * @animationSpeedValue; animation-fill-mode: backwards; } .p-body-sideNavContent {.fadeAnimation(1);} .notices {.fadeAnimation(2);} .p-body-header {.fadeAnimation(3);} .pre-footer {.fadeAnimation(3);} .p-footer {.fadeAnimation(4);} </xf:if> .itemAnimation(@iteration) { animation: slideUp .4s ease; animation-delay: (@iteration * .15s) + (@animationSpeedValue * 2); animation-fill-mode: backwards; } .itemLoop (@i) when (@i > 0) { &:nth-child(@{i}) { .itemAnimation(@i) } .itemLoop(@i - 1); } @keyframes slideUp { from { transform: translatey(30px); opacity: 0; }; to { transform: translatey(0px); opacity: 1; }; } <xf:if is="property('dt_node_animation')"> .block--category { .itemLoop(20); } </xf:if> <xf:if is="property('dt_discussion_animation')"> .structItemContainer .structItem { .itemLoop(20); } </xf:if> <xf:if is="property('dt_message_animation')"> .block--messages .block-body > .message--post { .itemLoop(20); } </xf:if> <xf:if is="property('dt_sidebar_widget_animation')"> @sidebarItemDelay: .1s; @keyframes scootLeft { from { transform: translatex(30px); opacity: 0; }; to { transform: translatex(0px); opacity: 1; }; } .sidebarAnimation(@iteration) { animation: scootLeft .5s ease; animation-delay: (@iteration * @sidebarItemDelay) + (@animationSpeedValue * 3); animation-fill-mode: backwards; animation-iteration-count: 1; } .sidebarLoop (@i) when (@i > 0) { &:nth-child(@{i}) { .sidebarAnimation(@i) } .sidebarLoop(@i - 1); } .p-body-sidebar .block { .sidebarLoop(15); } </xf:if> } // ######## Header and navigation ######## // #### Sticky Staff tools #### <xf:if is="property('dt_sticky_staff_tools')"> .p-staffBar { position: -webkit-sticky; position: sticky; top: 0; z-index: @zIndex-4; } <xf:if is="property('publicNavSticky') != 'none'"> .p-navSticky.p-staffSticky { top: 35px; } </xf:if> </xf:if> // #### Logo Text #### <xf:if is="property('dt_text_logo')"> .p-header-content .p-header-logo { &.p-header-logo--text { .xf-dt_text_logo_css(); } } </xf:if> // #### Hide Selected Tab Sub-Links bar #### <xf:if is="property('dt_disable_tab_links')"> .p-sectionLinks { display: none; } </xf:if> // #### Login triggers style #### <xf:if is="property('dt_triggers_style') == 'option2'"> .menu { &[data-nav-id="userLogin"] .blocks { background: @xf-menu--background-color; } .formRow > dt, .formRow > dd { display: block; width: 100%; text-align: left; } .formRow > dt:empty, .formRow > dd:empty { display: none; } .formRow { dt { padding: 0; } } .formRow.formRow--input { dt { padding: 15px 10px 15px 10px; } } .block-outer.block-outer--after { background: @xf-blockFooter--background-color; padding-bottom: 6px; } } </xf:if> // #### Condense Visitor Tabs #### <xf:if is="property('dt_condense_visito_tabs')"> .p-navgroup-link--user.badgeContainer::after { display: none; } .p-navgroup-link--user.badgeContainer.badgeContainer--highlighted::after { display: block; } @media (min-width: @xf-responsiveNarrow) { .p-navgroup-link--conversations, .p-navgroup-link--alerts { display: none; } } .menu--account .badgeContainer.badgeContainer--highlighted::after { margin-left: 6px; } <xf:else /> .p-navgroup-link--user.badgeContainer::after { display: none; } </xf:if> // #### Inline Alert Ballons #### <xf:if is="property('dt_inline_ballons')"> .p-navgroup .p-navgroup-link.badgeContainer::after { position: relative; top: -2px; left: 2px; } <xf:if is="property('dt_condense_visito_tabs')"> .p-navgroup .p-navgroup-link.p-navgroup-link--user { text-overflow: initial; } .p-navgroup .p-navgroup-link.badgeContainer::after { display: inline-block; } </xf:if> </xf:if> // #### Remove user avatar from navigation #### <xf:if is="property('dt_nav_avatar')"> @media (min-width: @xf-responsiveWide) { .p-navgroup-link.p-navgroup-link--user .avatar { display: none; } } </xf:if> // #### Remove user text from navigation #### <xf:if is="property('dt_nav_user_text') AND !property('dt_nav_avatar')"> .p-navgroup-link.p-navgroup-link--user .p-navgroup-linkText { display: none; } </xf:if> // #### Remove search tab text #### <xf:if is="property('dt_login_text')"> .p-navgroup-link--logIn, .p-navgroup-link--register { .p-navgroup-linkText { display: none; } } </xf:if> // #### Remove search tab text #### <xf:if is="property('dt_search_text')"> .p-navgroup-link--search, .p-navgroup-link--whatsnew { .p-navgroup-linkText { display: none; } } </xf:if> // ######## Forum / Node List ######## // #### Collapsible Categories #### <xf:if is="property('dt_collapsible_categories')"> .block--category { .block-header { position: relative; } .collapseTrigger:not(.button) { position: absolute; top: 50%; right: 10px; cursor: pointer; transform: translateY(-50%); &:before { content: {{ property('dt_node_on_icon') }}; width: 100%; font-size: 80%; margin: 0; } &.is-active:before { content: {{ property('dt_node_off_icon') }}; } } } .block-body.block-body--collapsible { transition: all 0.75s cubic-bezier(0.68, -0.55, 0.27, 1.55); -webkit-transition-property: all, -xf-opacity; transition-property: all, -xf-opacity; overflow-y: hidden; height: 0; -webkit-transition-property: all, -xf-height; transition-property: all, -xf-height; } </xf:if> // #### Sticky Category Strips #### <xf:if is="property('dt_sticky_catstrips')"> .block--category .block-header { position: -webkit-sticky; position: sticky; <xf:if is="property('publicNavSticky') == 'primary'"> top: (@xf-publicNavPaddingV * 2) + 22px; <xf:elseif is="property('publicNavSticky') == 'all'" /> top: (@xf-publicNavPaddingV * 2) + 53px; <xf:else /> top: 0; </xf:if> z-index: 100; } </xf:if> // #### Simplified Node Statics #### <xf:if is="property('dt_nodestat_simple')"> .node-stats { max-width: 100px; } .node-stats .pairs.pairs--rows > dd { font-size: 1.35em; } </xf:if> // #### Show Node Stats on Hover #### <xf:if is="property('dt_node_stats')"> .node-stats { opacity: 0; transform: scale(0.75); .m-transition(all, 0.3s); } .block-body .node:hover .node-stats { opacity: 1; transform: scale(1); } </xf:if> // #### Last poster avatar on the forum list #### <xf:if is="!property('dt_last_avatar_forum')"> .node-extra-icon { display: none; } </xf:if> // #### New Indicator Label #### <xf:if is="property('dt_new_indicator')"> .node--newIndicator { .xf-dt_new_indicator_css(); } .node--forum .node--newIndicator { display: none; } .node--forum.node--unread .node--newIndicator { display: inline-block; } </xf:if> // #### Alternative Node Background #### <xf:if is="property('dt_alternative_nodes')"> .block-body .node:nth-of-type(2n+2) { background: {{ property('dt_alternative_nodes') }}; } </xf:if> // #### Hover Background on Nodes #### <xf:if is="property('dt_hb_nodes')"> .block-body .node { .m-transition(all, 0.3s); } .block-body .node:hover { background: {{ property('dt_hb_nodes') }}; } </xf:if> // #### Hover Effect on Nodes #### <xf:if is="property('dt_he_nodes')"> .block-body .node { .m-transition(all, 0.3s); } .block-body .node:hover { transform: scale(1.015); } </xf:if> // #### Category Description #### <xf:if is="property('dt_cat_description') == 'option2'"> .block-header .block-desc { display: inline-block; opacity: 0; margin-left: 4px; .m-transition(all, 0.3s); } .block--category .block-container:hover .block-desc { opacity: 1; } </xf:if> // ######## Sidebar ######## // #### Disable Sidebar #### <xf:if is="property('dt_disable_sidebar')"> .p-body-main .p-body-sidebar { display: none; } .p-body-main.p-body-main--withSidebar .p-body-content { width: 100%; max-width: 100%; padding-right: 0; } </xf:if> // #### Sidebar Position #### <xf:if is="property('dt_sidebar_position') == 'option2'"> @media (min-width: @xf-responsiveWide) { .p-body-main--withSidebar .p-body-content { order: 2; padding-left: @xf-sidebarSpacer; padding-right: 0 !important; } .p-body-sidebar { order: 1; } } </xf:if> <xf:if is="property('dt_sidebar_position') == 'option3'"> @media (min-width: @xf-responsiveWide) { .p-body .p-body-main, .p-body .p-body-content { display: block; } .p-body .p-body-main--withSideNav .p-body-content, .p-body .p-body-main--withSidebar .p-body-content { padding: 0; } .p-body .p-body-sidebar { display: flex; flex-wrap: wrap; align-items: stretch; margin: 20px -5px 0; width: auto; &::after { display: block; content: ''; height: 0; margin: 0 5px; min-width: @xf-sidebarWidth; flex: 1 1 @xf-sidebarWidth; } } .p-body .p-body-sidebar > * { margin: 0 ((@xf-pageEdgeSpacer) / 2) @xf-elementSpacer; min-width: @xf-sidebarWidth; flex: 1 1 @xf-sidebarWidth; } } </xf:if> // #### Sticky Sidebar #### <xf:if is="property('dt_sticky_sidebar') && !property('dt_disable_sidebar')"> .p-body-sidebar { position: -webkit-sticky; position: sticky; top: (@xf-publicNavPaddingV * 2) + 25px; } </xf:if> // #### Collapsible Sidebar #### <xf:if is="property('dt_collapsible_sidebar') && !property('dt_disable_sidebar')"> .p-breadcrumbs--container { display: flex; align-items: center; .collapseTrigger:not(.button) { margin-left: auto; &:before { content: {{ property('dt_collpse_off_icon') }}; width: 100%; margin-left: 0; } &.is-active:before { content: {{ property('dt_collpse_on_icon') }}; } @media (max-width: @xf-responsiveWide) { display: none; } } } .p-body-content { transition: all .55s cubic-bezier(0.68, -0.55, 0.27, 1.55); } .p-body-sidebar { transition: all .45s cubic-bezier(0.68, -0.55, 0.27, 1.55); } .p-body-main--withSidebar .p-body-content:not(.is-active) { width: 100%; max-width: 100%; } .p-body-main--withSidebar .p-body-sidebar:not(.is-active) { width: 0; height: 0; transform: scale(0); opacity: 0; } </xf:if> // #### Collapsible Sidebar Block #### <xf:if is="property('dt_collapsible_sidebar_block') && !property('dt_disable_sidebar')"> .p-body-sidebar .block-minorHeader { position: relative; } .p-body-sidebar .block-minorHeader .block-control { position: absolute; top: 50%; right: 10px; font-size: 80%; cursor: pointer; transform: translateY(-50%); } </xf:if> // #### Sidebar login #### <xf:if is="property('dt_sidebar_login')"> .p-body-sidebar { .blocks.blocks--login { .formRow { > dt, > dd { width: auto; display: block; text-align: left; padding: 0px; background-color: transparent; border-width: 0; } > dt { padding: 5px 0px; } &:first-child { > dt { padding-top: 0; } } &.formSubmitRow dt { display: none; } .formSubmitRow-bar { background-color: transparent; border-width: 0; } .formSubmitRow-controls { padding-left: 0; text-align: right; margin-right: 8px; } } .block-outer--register { .xf-blockFooter(); padding: @xf-paddingLarge; margin: 0 -@xf-blockPaddingH -@xf-blockPaddingV; text-align: right; a.button { margin-left: 5px; } } } } </xf:if> // ######## Discussion List ######## // #### Discussion minor header #### <xf:if is="property('dt_disc_minor_header')"> .discu-minorHeader { display: table; table-layout: fixed; width: 100%; .xf-dt_disc_minor_header_css(); span { display: table-cell; vertical-align: middle; &.discu-minorHeader--main { padding: 10px 8px 10px 58px; } &.discu-minorHeader--stats { width: 70px; text-align: center; padding: 10px 8px; <xf:if is="property('dt_reactions_column')"> width: 75px; </xf:if> } &.discu-minorHeader--last { width: 230px; text-align: center; padding: 10px 8px; } } } .structItemContainer-group { .structItem-cell.structItem-cell--meta { width: 70px; text-align: center; @media (max-width: @xf-responsiveWide) { width: 58px; } } } .structItemContainer-group { .structItem-cell { vertical-align: middle; } } @media (max-width: @xf-responsiveWide) { .discu-minorHeader { font-size: @xf-fontSizeSmallest; } .discu-minorHeader span.discu-minorHeader--stats { width: 58px; } .discu-minorHeader span.discu-minorHeader--last { width: 180px; } } @media (max-width: @xf-responsiveMedium) { .discu-minorHeader { display: none; } .structItemContainer-group .structItem-cell.structItem-cell--meta { display: none; } .structItem-cell.structItem-cell--latest::before { display: none; } } </xf:if> // #### Collapsible sticky threads #### <xf:if is="property('dt_collaps_sticky_threads')"> .block-stickyHeader { display: flex; align-items: center; .collapseTrigger { margin-left: auto; &:before { content: {{ property('dt_node_on_icon') }}; font-size: 100%; } &.is-active:before { content: {{ property('dt_node_off_icon') }}; } } } .structItemContainer-group--sticky { opacity: 0; transition: all 0.75s cubic-bezier(0.68, -0.55, 0.27, 1.55); -webkit-transition-property: all, -xf-opacity; transition-property: all, -xf-opacity; overflow-y: hidden; height: 0; -webkit-transition-property: all, -xf-height; transition-property: all, -xf-height; &.is-active { height: auto; opacity: 1; overflow-y: visible; } } </xf:if> // #### Seperate Sticky Threads #### <xf:if is="property('dt_seperate_sticky_threads')"> .block-stickyHeader { .xf-dt_seperate_sticky_threads_css(); } </xf:if> // #### Unique background to sticky thread #### <xf:if is="property('dt_background_sticky_thread_css')"> .structItemContainer-group--sticky .structItem--thread { .xf-dt_background_sticky_thread_css(); } </xf:if> // #### Last poster avatar on the discussion list #### <xf:if is="!property('dt_last_avatar_discussion')"> .structItem-cell.structItem-cell--iconEnd { display: none; } </xf:if> // #### Locked Threads Opacity #### <xf:if is="property('dt_opacity_thread_lock')"> .structItem--thread.is-locked { opacity: 0.6; } .structItemContainer-group--sticky .structItem--thread.is-locked { opacity: 1; } </xf:if> // #### Remove Mini-me Avatar #### <xf:if is="property('dt_minime_avatar')"> .structItem-iconContainer .structItem-secondaryIcon { display: none; } </xf:if> // #### New Indicator Label #### <xf:if is="property('dt_disc_new_indicator')"> .structItem.is-unread .structItem-title a:not(.labelLink):after { content: "{{ phrase('new') }}"; .xf-dt_new_indicator_css(); margin-left: @xf-paddingMedium; } </xf:if> // #### Reactions column in meta box #### <xf:if is="property('dt_reactions_column')"> .structItem .structItem-cell { vertical-align: middle; } </xf:if> // #### Alternative Thread Background #### <xf:if is="property('dt_alternative_threads')"> .structItemContainer-group:not(.structItemContainer-group--sticky) .structItem.structItem--thread:nth-of-type(2n+1) { background: {{ property('dt_alternative_threads') }}; } </xf:if> // #### Hover Background on Threads #### <xf:if is="property('dt_hb_threads')"> .structItem.structItem--thread { .m-transition(all, 0.3s); } .structItem.structItem--thread:hover { background: {{ property('dt_hb_threads') }}; } </xf:if> // #### Hover Effect on Threads #### <xf:if is="property('dt_he_threads')"> .structItem.structItem--thread { .m-transition(all, 0.3s); } .structItem.structItem--thread:hover { transform: scale(1.015); } </xf:if> // ######## Message Layout ######## // #### Messages Layout #### <xf:if is="property('dt_messages_layout') == 'option2'"> .block--messages .message:not(.message--simple) { .message-inner { flex-direction: column; } .message-inner .message-cell.message-cell--user, .message-inner .message-cell.message-cell--action { border-right: none; border-bottom: @xf-messageUserBlock--border-width solid @xf-messageUserBlock--border-color; } .message-inner .message-cell.message-cell--user { flex: 0 0 100%; } .message-cell.message-cell--user .message-user { display: flex; align-items: center; .message-userExtras { margin-top: 0; margin-left: auto; } .message-userDetails { margin-left: 20px; } .message-avatar { margin-bottom: 0; } @media (min-width: @xf-messageSingleColumnWidth) { .message-userArrow { position: absolute; bottom: 0; left: 50px; top: initial; right: initial; .m-triangleUp(xf-default(@xf-messageUserBlock--border-color, transparent), @xf-messagePadding); &:after { position: absolute; top: 2px; right: -@xf-messagePadding + 1; content: ""; .m-triangleUp(@xf-contentBg, @xf-messagePadding - 1px); } } } } .message--quickReply { .message-cell.message-cell--user { display: none; } } } </xf:if> <xf:if is="property('dt_messages_layout') == 'option3'"> .message.is-first { .message-inner { flex-direction: column; } .message-inner .message-cell.message-cell--user, .message-inner .message-cell.message-cell--action { border-right: none; border-bottom: @xf-messageUserBlock--border-width solid @xf-messageUserBlock--border-color; } .message-inner .message-cell.message-cell--user { flex: 0 0 100%; } .message-cell.message-cell--user .message-user { display: flex; align-items: center; .message-userExtras { margin-top: 0; margin-left: auto; } .message-userDetails { margin-left: 20px; } .message-avatar { margin-bottom: 0; } @media (min-width: @xf-messageSingleColumnWidth) { .message-userArrow { position: absolute; bottom: 0; left: 50px; top: initial; right: initial; .m-triangleUp(xf-default(@xf-messageUserBlock--border-color, transparent), @xf-messagePadding); &:after { position: absolute; top: 2px; right: -@xf-messagePadding + 1; content: ""; .m-triangleUp(@xf-contentBg, @xf-messagePadding - 1px); } } } } } </xf:if> // #### Center Thread Title #### <xf:if is="property('dt_thread_title_center')"> .template-thread_view .p-body-header { text-align: center; } .template-thread_view .p-body-header .p-title-value { margin-left: auto; } </xf:if> // #### Hide Avatar Beside Editor #### <xf:if is="property('dt_editor_avatar')"> .message.message--quickReply .message-cell--user { display: none; } .message.message--quickReply .message-cell.message-cell--main { padding-left: 10px; margin-left: 0; } </xf:if> // #### Show Extra User Info On Hover #### <xf:if is="property('dt_euicss') AND !property('dt_collapsible_extras')"> .message-userExtras { max-height: 0px; opacity: 0; overflow: hidden; .m-transition(all, 0.3s); } .message-cell--user:hover .message-userExtras { max-height: 300px; opacity: 1; } </xf:if> // #### Collapsible User Extras #### <xf:if is="property('dt_collapsible_extras') && property('dt_messages_layout') == 'option1'"> .message-userExtras-body { .m-listPlain(); &.message-userExtras--collapsible { .has-no-js & { display: block; } .m-transitionFadeDown(); } } .message-cell { .collapseTrigger:not(.button) { text-align: center; padding: @xf-paddingMedium 0; &:before { content: "\f062"; background: @xf-contentAltBg; color: @xf-linkColor; width: 24px; height: 24px; line-height: 24px; font-size: @xf-fontSizeSmaller; text-align: center; border-radius: 50%; transition: ease-in transform .3s; } &.is-active:before { transform: rotate(-180deg); } &:hover { &:before { background: @xf-contentAccentBg; color: @xf-textColorAccentContent; transform: rotate(-180deg); } } &.collapseTrigger--block:before { float: none; } @media (max-width: @xf-messageSingleColumnWidth) { display: none; } } } </xf:if> // #### First Post Uniuqe Background #### <xf:if is="property('dt_firstpost_customization')"> .message--post.is-first .message-inner { .xf-dt_firstpost_customization(); } </xf:if> // #### Thread owner indicator #### <xf:if is="property('dt_thread_owner') == 'userbanner'"> .messageOwner-Indicator { font-size: 90%; background: @xf-contentHighlightBg; color: @xf-contentHighlightBase--color; padding: 1px 4px; border-radius: @xf-borderRadiusSmall; white-space: nowrap; @media (max-width: @xf-responsiveNarrow) { display: none; } } </xf:if> <xf:if is="property('dt_thread_owner') == 'icon'"> .message-avatar-owner { position: absolute; // center bottom position left: 50%; margin-left: -.615em; bottom: -.615em; width: 23px; height: 23px; line-height: 16px; background: @xf-contentAccentBg; color: @xf-textColorAccentContent; font-size: 10px; text-align: center; border: 3px solid @xf-contentBg; border-radius: 50%; z-index: 3; @media (max-width: @xf-messageSingleColumnWidth) { display: none; } } </xf:if> // #### EXTRA FOOTER #### <xf:if is="property('dt_extra_footer')"> .pre-footer { .xf-dt_extra_footer_css(); <xf:if is="property('dt_extra_footer_index')"> display: none; .template-forum_list & { display: block; } </xf:if> &-inner { width: 100%; max-width: @xf-pageWidthMax; margin: 0 auto; @media (min-width: @xf-responsiveMedium) { padding: 0 @xf-paddingLarge; } } &--container { display: flex; flex-wrap: wrap; @media (min-width: @xf-responsiveWide) { margin: 0 -15px; } } &--column { flex: 0 0 25%; max-width: 25%; @media (min-width: @xf-responsiveMedium) { padding: 0 15px; } } } .pre-footer h3 { .xf-dt_extra_footer_title_css(); &::after { content: ''; height: 5px; width: 55px; background-color: @xf-paletteColor1; display: block; clip-path: polygon(0 0, calc(100% - 5px) 0, 100% 100%, 100% 100%, 0 100%); margin-top: .75rem; } } .pre-footer--content, .pre-footer .block-container { .xf-dt_extra_footer_content_css(); } .pre-footer--links { li { list-style: none; a { display: block; .xf-dt_extra_footer_link_css(); } } } .pre-footer .contentRow-main a, .pre-footer .block-body .username { .xf-dt_extra_footer_link_css(); } .social__icons, .pre-footer--links, .pre-footer-html--content, .pre-footer .block-row { .xf-dt_extra_footer_widgcont_css(); } .pre-footer .block-footer { .xf-dt_extra_footer_widgfoot_css(); } .social__icons { li { display: inline-block; list-style: none; a { display: block; width: 35px; height: 35px; line-height: 35px; background: @xf-contentAccentBg; color: @xf-textColorAccentContent; text-align: center; border-radius: @xf-blockBorderRadius; margin-right: 4px; &.-facebook { background: #3b5998; } &.-twitter { background: #55acee; } &.-instagram { background: #d6249f; background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%, #fd5949 45%,#d6249f 60%,#285AEB 90%); } &.-youtube { background: #ff0000; } } } } @media (max-width: @xf-responsiveWide) { .pre-footer--column { flex: 0 0 50%; max-width: 50%; } } @media (max-width: @xf-responsiveMedium) { .pre-footer--column { flex: 0 0 100%; max-width: 100%; } } </xf:if> // ######## GLYPHS ######## // #### Navigation Glyphs #### <xf:if is="property('dt_navigation_glyphs')"> .p-navEl-link::before { .m-faBase(); padding-right: @xf-paddingMedium; } .p-navEl-link[data-nav-id="home"]::before { .m-faContent(@fa-var-home, 1em); } .p-navEl-link[data-nav-id="forums"]::before { .m-faContent(@fa-var-comments, 1em); } .p-navEl-link[data-nav-id="whatsNew"]::before { .m-faContent(@fa-var-bolt, 1em); } .p-navEl-link[data-nav-id="members"]::before { .m-faContent(@fa-var-users, 1em); } .p-navEl-link[data-nav-id="xfmg"]::before { .m-faContent(@fa-var-picture-o, 1em); } .p-navEl-link[data-nav-id="xfrm"]::before { .m-faContent(@fa-var-download, 1em); } </xf:if> // #### Sub-navigation Glyphs #### <xf:if is="property('dt_sub_navigation_glyphs')"> .p-sectionLinks .p-navEl-link::before { .m-faBase(); padding-right: 4px; } .p-navEl-link[data-nav-id="newPosts"]::before { .m-faContent(@fa-var-fire, 1em); } .p-navEl-link[data-nav-id="findThreads"]::before { .m-faContent(@fa-var-comment, 1em); } .p-navEl-link[data-nav-id="watched"]::before { .m-faContent(@fa-var-bell, 1em); } .p-navEl-link[data-nav-id="searchForums"]::before { .m-faContent(@fa-var-search, 1em); } .p-navEl-link[data-nav-id="markForumsRead"]::before { .m-faContent(@fa-var-eye-slash, 1em); } .p-navEl-link[data-nav-id="whatsNewPosts"]::before { .m-faContent(@fa-var-file-text-o, 1em); } .p-navEl-link[data-nav-id="xfmgWhatsNewNewMedia"]::before { .m-faContent(@fa-var-picture-o, 1em); } .p-navEl-link[data-nav-id="xfmgWhatsNewMediaComments"]::before { .m-faContent(@fa-var-comments-o, 1em); } .p-navEl-link[data-nav-id="xfrmNewResources"]::before { .m-faContent(@fa-var-download, 1em); } .p-navEl-link[data-nav-id="whatsNewProfilePosts"]::before { .m-faContent(@fa-var-pencil, 1em); } .p-navEl-link[data-nav-id="whatsNewNewsFeed"]::before { .m-faContent(@fa-var-rss, 1em); } .p-navEl-link[data-nav-id="latestActivity"]::before { .m-faContent(@fa-var-clock-o, 1em); } .p-navEl-link[data-nav-id="xfmgNewMedia"]::before { .m-faContent(@fa-var-bolt, 1em); } .p-navEl-link[data-nav-id="xfmgNewComments"]::before { .m-faContent(@fa-var-comments-o, 1em); } .p-navEl-link[data-nav-id="xfmgAddMedia"]::before { .m-faContent(@fa-var-plus-square, 1em); } .p-navEl-link[data-nav-id="xfmgYourContent"]::before { .m-faContent(@fa-var-file-image-o, 1em); } .p-navEl-link[data-nav-id="xfmgWatchedContent"]::before { .m-faContent(@fa-var-bell, 1em); } .p-navEl-link[data-nav-id="xfmgSearchMedia"]::before { .m-faContent(@fa-var-search, 1em); } .p-navEl-link[data-nav-id="xfmgMarkViewed"]::before { .m-faContent(@fa-var-eye-slash, 1em); } .p-navEl-link[data-nav-id="xfrmLatestReviews"]::before { .m-faContent(@fa-var-star, 1em); } .p-navEl-link[data-nav-id="xfrmYourResources"]::before { .m-faContent(@fa-var-cloud-download, 1em); } .p-navEl-link[data-nav-id="xfrmWatched"]::before { .m-faContent(@fa-var-bell, 1em); } .p-navEl-link[data-nav-id="xfrmSearchResources"]::before { .m-faContent(@fa-var-search, 1em); } .p-navEl-link[data-nav-id="currentVisitors"]::before { .m-faContent(@fa-var-users, 1em); } .p-navEl-link[data-nav-id="newProfilePosts"]::before { .m-faContent(@fa-var-pencil, 1em); } .p-navEl-link[data-nav-id="searchProfilePosts"]::before { .m-faContent(@fa-var-commenting, 1em); } </xf:if> // #### offCanvasMenu LinkHolders Icons #### <xf:if is="property('dt_offcanvasmenu_linkholder_glyphs')"> .offCanvasMenu-link::before { .m-faBase(); padding-right: 6px; } .offCanvasMenu-link[href*="login"]::before { .m-faContent(@fa-var-sign-in, 1em); } .offCanvasMenu-link[href*="register"]::before { .m-faContent(@fa-var-user-circle, 1em); } .offCanvasMenu-link[data-nav-id="home"]::before { .m-faContent(@fa-var-home, 1em); } .offCanvasMenu-link[data-nav-id="forums"]::before { .m-faContent(@fa-var-comments, 1em); } .offCanvasMenu-link[data-nav-id="whatsNew"]::before { .m-faContent(@fa-var-bolt, 1em); } .offCanvasMenu-link[data-nav-id="members"]::before { .m-faContent(@fa-var-users, 1em); } .offCanvasMenu-link[data-nav-id="xfmg"]::before { .m-faContent(@fa-var-picture-o, 1em); } .offCanvasMenu-link[data-nav-id="xfrm"]::before { .m-faContent(@fa-var-download, 1em); } </xf:if> // #### offCanvasMenu Links Icons #### <xf:if is="property('dt_offcanvasmenu_links_glyphs')"> .offCanvasMenu-link::before { .m-faBase(); } .offCanvasMenu-link[data-nav-id="newPosts"]::before { .m-faContent(@fa-var-fire, 2em); } .offCanvasMenu-link[data-nav-id="findThreads"]::before { .m-faContent(@fa-var-comment, 2em); } .offCanvasMenu-link[data-nav-id="yourThreads"]::before { .m-faContent(@fa-var-comments, 2em); } .offCanvasMenu-link[data-nav-id="contributedThreads"]::before { .m-faContent(@fa-var-comments-o, 2em); } .offCanvasMenu-link[data-nav-id="unansweredThreads"]::before { .m-faContent(@fa-var-comment-o, 2em); } .offCanvasMenu-link[data-nav-id="watched"]::before { .m-faContent(@fa-var-bell, 2em); } .offCanvasMenu-link[data-nav-id="watchedThreads"]::before { .m-faContent(@fa-var-globe, 2em); } .offCanvasMenu-link[data-nav-id="watchedForums"]::before { .m-faContent(@fa-var-flag, 2em); } .offCanvasMenu-link[data-nav-id="searchForums"]::before { .m-faContent(@fa-var-search, 2em); } .offCanvasMenu-link[data-nav-id="markForumsRead"]::before { .m-faContent(@fa-var-eye-slash, 2em); } .offCanvasMenu-link[data-nav-id="whatsNewPosts"]::before { .m-faContent(@fa-var-file-text-o, 2em); } .offCanvasMenu-link[data-nav-id="xfmgWhatsNewNewMedia"]::before { .m-faContent(@fa-var-picture-o, 2em); } .offCanvasMenu-link[data-nav-id="xfmgWhatsNewMediaComments"]::before { .m-faContent(@fa-var-comments-o, 2em); } .offCanvasMenu-link[data-nav-id="xfrmNewResources"]::before { .m-faContent(@fa-var-download, 2em); } .offCanvasMenu-link[data-nav-id="whatsNewProfilePosts"]::before { .m-faContent(@fa-var-pencil, 2em); } .offCanvasMenu-link[data-nav-id="whatsNewNewsFeed"]::before { .m-faContent(@fa-var-rss, 2em); } .offCanvasMenu-link[data-nav-id="latestActivity"]::before { .m-faContent(@fa-var-clock-o, 2em); } .offCanvasMenu-link[data-nav-id="xfmgNewMedia"]::before { .m-faContent(@fa-var-bolt, 2em); } .offCanvasMenu-link[data-nav-id="xfmgNewComments"]::before { .m-faContent(@fa-var-comments-o, 2em); } .offCanvasMenu-link[data-nav-id="xfmgAddMedia"]::before { .m-faContent(@fa-var-plus-square, 2em); } .offCanvasMenu-link[data-nav-id="xfmgYourContent"]::before { .m-faContent(@fa-var-file-image-o, 2em); } .offCanvasMenu-link[data-nav-id="xfmgYourMedia"]::before { .m-faContent(@fa-var-file-picture-o, 2em); } .offCanvasMenu-link[data-nav-id="xfmgYourAlbums"]::before { .m-faContent(@fa-var-file-picture-o, 2em); } .offCanvasMenu-link[data-nav-id="xfmgWatchedContent"]::before { .m-faContent(@fa-var-bell, 2em); } .offCanvasMenu-link[data-nav-id="xfmgWatchedMedia"]::before { .m-faContent(@fa-var-bell, 2em); } .offCanvasMenu-link[data-nav-id="xfmgWatchedAlbums"]::before { .m-faContent(@fa-var-globe, 2em); } .offCanvasMenu-link[data-nav-id="xfmgWatchedCategories"]::before { .m-faContent(@fa-var-flag, 2em); } .offCanvasMenu-link[data-nav-id="xfmgSearchMedia"]::before { .m-faContent(@fa-var-search, 2em); } .offCanvasMenu-link[data-nav-id="xfmgMarkViewed"]::before { .m-faContent(@fa-var-eye-slash, 2em); } .offCanvasMenu-link[data-nav-id="xfrmLatestReviews"]::before { .m-faContent(@fa-var-star, 2em); } .offCanvasMenu-link[data-nav-id="xfrmYourResources"]::before { .m-faContent(@fa-var-cloud-download, 2em); } .offCanvasMenu-link[data-nav-id="xfrmWatched"]::before { .m-faContent(@fa-var-bell, 2em); } .offCanvasMenu-link[data-nav-id="xfrmWatchedResources"]::before { .m-faContent(@fa-var-bell, 2em); } .offCanvasMenu-link[data-nav-id="xfrmWatchedCategories"]::before { .m-faContent(@fa-var-globe, 2em); } .offCanvasMenu-link[data-nav-id="xfrmSearchResources"]::before { .m-faContent(@fa-var-search, 2em); } .offCanvasMenu-link[data-nav-id="currentVisitors"]::before { .m-faContent(@fa-var-users, 2em); } .offCanvasMenu-link[data-nav-id="newProfilePosts"]::before { .m-faContent(@fa-var-pencil, 2em); } .offCanvasMenu-link[data-nav-id="searchProfilePosts"]::before { .m-faContent(@fa-var-commenting, 2em); } </xf:if> // #### Visitor Menu Icons #### <xf:if is="property('dt_visitor_menu_glyphs')"> .menu--account { .menu-linkRow::after { .m-faBase(); float: left; padding-right: 4px; } .menu-linkRow[href*="news-feed"]::after { .m-faContent(@fa-var-rss, 1em); } .menu-linkRow[href*="reactions"]::after { .m-faContent(@fa-var-thumbs-up, 1em); } .menu-linkRow[href*="search/member"]::after { .m-faContent(@fa-var-comments, 1em); } .menu-linkRow[href*="account-details"]::after { .m-faContent(@fa-var-user, 1em); } .menu-linkRow[href*="preferences"]::after { .m-faContent(@fa-var-cog, 1em); } .menu-linkRow[href*="signature"]::after { .m-faContent(@fa-var-pencil, 1em); } .menu-linkRow[href*="security"]::after { .m-faContent(@fa-var-lock, 1em); } .menu-linkRow[href*="upgrades"]::after { .m-faContent(@fa-var-star, 1em); } .menu-linkRow[href*="connected-accounts"]::after { .m-faContent(@fa-var-user-plus, 1em); } .menu-linkRow[href*="following"]::after { .m-faContent(@fa-var-users, 1em); } .menu-linkRow[href*="privacy"]::after { .m-faContent(@fa-var-user-secret, 1em); } .menu-linkRow[href*="ignored"]::after { .m-faContent(@fa-var-user-times, 1em); } .menu-linkRow[href*="logout"]::after { .m-faContent(@fa-var-sign-out, 1em); } .menu-linkRow[href*="conversations"]::after { .m-faContent(@fa-var-envelope, 1em); } .menu-linkRow[href*="alerts"]::after { .m-faContent(@fa-var-bell, 1em); } } </xf:if> // #### Sidebar Glyphs #### <xf:if is="property('dt_sidebar_glyphs')"> .p-body-sidebar .block[data-widget-id] .block-minorHeader::before { .m-faBase(); padding-right: @xf-paddingMedium; } .p-body-sidebar .block[data-widget-section="staffMembers"] .block-minorHeader::before { .m-faContent(@fa-var-user, 1em); } .p-body-sidebar .block[data-widget-section="onlineNow"] .block-minorHeader::before { .m-faContent(@fa-var-users, 1.4em); } .p-body-sidebar .block[data-widget-definition="new_threads"] .block-minorHeader::before, .p-body-sidebar .block[data-widget-definition="new_posts"] .block-minorHeader::before { .m-faContent(@fa-var-comments, 1em); } .p-body-sidebar .block[data-widget-definition="new_profile_posts"] .block-minorHeader::before { .m-faContent(@fa-var-commenting, 1em); } .p-body-sidebar .block[data-widget-definition="board_totals"] .block-minorHeader::before, .p-body-sidebar .block[data-widget-definition="online_statistics"] .block-minorHeader::before, .p-body-sidebar .block[data-widget-definition="forum_statistics"] .block-minorHeader::before, .p-body-sidebar .block[data-widget-definition="xfmg_gallery_statistics"] .block-minorHeader::before{ .m-faContent(@fa-var-bar-chart, 1em); } .p-body-sidebar .block[data-widget-definition="share_page"] .block-minorHeader::before { .m-faContent(@fa-var-share-alt, 1em); } .p-body-sidebar .block[data-widget-definition="find_member"] .block-minorHeader::before { .m-faContent(@fa-var-search, 1em); } .p-body-sidebar .block[data-widget-definition="newest_members"] .block-minorHeader::before { .m-faContent(@fa-var-user-circle-o, 1em); } .p-body-sidebar .block[data-widget-definition="xfrm_top_resources"] .block-minorHeader::before { .m-faContent(@fa-var-bolt, 1em); } .p-body-sidebar .block[data-widget-definition="xfrm_latest_reviews"] .block-minorHeader::before { .m-faContent(@fa-var-star, 1em); } .p-body-sidebar .block[data-widget-key="xfrm_overview_top_authors"] .block-minorHeader::before { .m-faContent(@fa-var-user, 1em); } .p-body-sidebar .block[data-widget-definition="xfrm_new_resources"] .block-minorHeader::before { .m-faContent(@fa-var-download, 1em); } .p-body-sidebar .block[data-widget-definition="xfmg_media_slider"] .block-minorHeader::before { .m-faContent(@fa-var-picture-o, 1em); } </xf:if> <xf:if is="property('dt_prefooter_heading_icons')"> .pre-footer--column .block[data-widget-id] .block-minorHeader::before { .m-faBase(); padding-right: 4px; } .pre-footer--column .block[data-widget-section="staffMembers"] .block-minorHeader::before { .m-faContent(@fa-var-user, 1em); } .pre-footer--column .block[data-widget-section="onlineNow"] .block-minorHeader::before { .m-faContent(@fa-var-users, 1.4em); } .pre-footer--column .block[data-widget-definition="new_threads"] .block-minorHeader::before, .pre-footer--column .block[data-widget-definition="new_posts"] .block-minorHeader::before { .m-faContent(@fa-var-comments, 1em); } .pre-footer--column .block[data-widget-definition="new_profile_posts"] .block-minorHeader::before { .m-faContent(@fa-var-commenting, 1em); } .pre-footer--column .block[data-widget-definition="board_totals"] .block-minorHeader::before, .pre-footer--column .block[data-widget-definition="online_statistics"] .block-minorHeader::before, .pre-footer--column .block[data-widget-definition="forum_statistics"] .block-minorHeader::before, .pre-footer--column .block[data-widget-definition="xfmg_gallery_statistics"] .block-minorHeader::before{ .m-faContent(@fa-var-bar-chart, 1em); } .pre-footer--column .block[data-widget-definition="share_page"] .block-minorHeader::before { .m-faContent(@fa-var-share-alt, 1em); } .pre-footer--column .block[data-widget-definition="find_member"] .block-minorHeader::before { .m-faContent(@fa-var-search, 1em); } .pre-footer--column .block[data-widget-definition="newest_members"] .block-minorHeader::before { .m-faContent(@fa-var-user-circle-o, 1em); } .pre-footer--column .block[data-widget-definition="xfrm_top_resources"] .block-minorHeader::before { .m-faContent(@fa-var-bolt, 1em); } .pre-footer--column .block[data-widget-definition="xfrm_latest_reviews"] .block-minorHeader::before { .m-faContent(@fa-var-star, 1em); } .pre-footer--column .block[data-widget-key="xfrm_overview_top_authors"] .block-minorHeader::before { .m-faContent(@fa-var-user, 1em); } .pre-footer--column .block[data-widget-definition="xfrm_new_resources"] .block-minorHeader::before { .m-faContent(@fa-var-download, 1em); } .pre-footer--column .block[data-widget-definition="xfmg_media_slider"] .block-minorHeader::before { .m-faContent(@fa-var-picture-o, 1em); } .pre-footer--content.-social h3::before { .m-faBase(); .m-faContent(@fa-var-retweet, 1em); padding-right: @xf-paddingMedium; } .pre-footer--content.-links h3::before { .m-faBase(); .m-faContent(@fa-var-link, 1em); padding-right: 4px; } </xf:if> // #### Message Glyphs #### <xf:if is="property('dt_messages_glyphs')"> .actionBar-action::before { font-weight: 300; padding-right: @xf-paddingSmall; } .actionBar-action.actionBar-action--report::before { .m-faContent("@{fa-var-exclamation-triangle}\20"); } .actionBar-action.actionBar-action--history::before { .m-faContent("@{fa-var-history}\20"); } .actionBar-action.actionBar-action--edit::before { .m-faContent("@{fa-var-pencil-square}\20"); } .actionBar-action.actionBar-action--delete::before { .m-faContent("@{fa-var-trash}\20"); } .actionBar-action.actionBar-action--spam::before { .m-faContent("@{fa-var-exclamation-circle}\20"); } .actionBar-action.actionBar-action--ip::before { .m-faContent("@{fa-var-user}\20"); } .actionBar-action.actionBar-action--warn::before { .m-faContent("@{fa-var-exclamation}\20"); } </xf:if> // #### Discussion List Icons #### <xf:if is="property('dt_discussion_glyphs')"> .structItem-parts a.username::before, .structItem-cell--latest .username::before { .m-faBase(); .m-faContent(@fa-var-user, 1em); padding-right: 2px; } .structItem-parts .structItem-startDate a::before, .structItem-cell--latest .structItem-latestDate::before { .m-faBase(); .m-faContent(@fa-var-clock-o, 1em); padding-right: 2px; } </xf:if> // #### Member Profiles Tabs Icons #### <xf:if is="property('dt_profile_tabs_glyphs')"> .block-tabHeader.block-tabHeader--memberTabs .tabs-tab::before { .m-faBase(); padding-right: 4px; } .block-tabHeader.block-tabHeader--memberTabs .tabs-tab[aria-controls="profile-posts"]::before { .m-faContent(@fa-var-comments-o, 1em); } .block-tabHeader.block-tabHeader--memberTabs .tabs-tab[id="latest-activity"]::before { .m-faContent(@fa-var-clock-o, 1em); } .block-tabHeader.block-tabHeader--memberTabs .tabs-tab[id="recent-content"]::before { .m-faContent(@fa-var-pencil-square-o, 1em); } .block-tabHeader.block-tabHeader--memberTabs .tabs-tab[id="about"]::before { .m-faContent(@fa-var-info-circle, 1em); } .block-tabHeader.block-tabHeader--memberTabs .tabs-tab[id="resources"]::before { .m-faContent(@fa-var-download, 1em); } .block-tabHeader.block-tabHeader--memberTabs .tabs-tab[id="xfmgMedia"]::before { .m-faContent(@fa-var-picture-o, 1em); } </xf:if> // #### Member Profiles Tabs Icons #### <xf:if is="property('dt_account_wrapper_glyphs')"> .template-account_details, .template-account_alerts, .template-account_reactions, .template-account_bookmarks, .template-account_security, .template-account_privacy, .template-account_preferences, .template-account_signature, .template-account_following, .template-account_ignored { .p-body-sideNav { .block-container { .blockLink::before { .m-faBase(); padding-right: 4px; } .blockLink[href*="members"]::before { .m-faContent(@fa-var-user-circle, 1em); } .blockLink[href*="alerts"]::before { .m-faContent(@fa-var-bell, 1em); } .blockLink[href*="reactions"]::before { .m-faContent(@fa-var-thumbs-up, 1em); } .blockLink[href*="bookmarks"]::before { .m-faContent(@fa-var-bookmark, 1em); } .blockLink[href*="account-details"]::before { .m-faContent(@fa-var-user, 1em); } .blockLink[href*="security"]::before { .m-faContent(@fa-var-lock, 1em); } .blockLink[href*="privacy"]::before { .m-faContent(@fa-var-user-secret, 1em); } .blockLink[href*="preferences"]::before { .m-faContent(@fa-var-cog, 1em); } .blockLink[href*="signature"]::before { .m-faContent(@fa-var-pencil, 1em); } .blockLink[href*="connected-accounts"]::before { .m-faContent(@fa-var-network-wired, 1em); } .blockLink[href*="following"]::before { .m-faContent(@fa-var-users, 1em); } .blockLink[href*="ignored"]::before { .m-faContent(@fa-var-user-times, 1em); } .blockLink[href*="logout"]::before { .m-faContent(@fa-var-sign-out, 1em); } } } } </xf:if> ]]>
</template>
<template title="core_menu.less" type="public" addon_id="XF" version_id="2020970" version_string="2.2.9">
<![CDATA[ // ###################################### MENUS ###################### @_menu-arrowSize: 8px; @_menu-edgePadding: @xf-pageEdgeSpacer; @_menu-paddingV: @xf-paddingMedium; @_menu-closePaddingH: @xf-paddingLarge; @_menu-paddingH: @xf-paddingLargest; .menuTrigger { cursor: pointer; &:after { .m-menuGadget(); } } .menuOutsideClicker { position: fixed; display: none; top: 0; right: 0; bottom: 0; left: 0; z-index: 2; // above non set stuff but below anything intentionally set &.is-active { display: block; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } } .menu { .m-transitionCubic(); position: absolute; z-index: @zIndex-2; margin: @_menu-arrowSize 0 0; min-width: 240px; max-width: 320px; border-radius: @xf-menuBorderRadius; .m-dropShadow(0, 0, 30px, 0, .12); &.menu--structural { margin-top: 0; // when menus nudge up against structure, the joined corner should not be radiused &.menu--left { border-top-left-radius: 0; } &.menu--right { border-top-right-radius: 0; } } &.menu--superWide { width: 75%; max-width: calc(~'100% - @{xf-pageEdgeSpacer}'); } &.menu--veryWide { width: 500px; max-width: calc(~'100% - @{xf-pageEdgeSpacer}'); } &.menu--wide { width: 350px; max-width: calc(~'100% - @{xf-pageEdgeSpacer}'); } &.menu--medium { width: 300px; max-width: calc(~'100% - @{xf-pageEdgeSpacer}'); } &.menu--potentialFixed { z-index: @zIndex-4; } } .menu-arrow { display: none; position: absolute; width: 0; height: 0; border: 0 solid transparent; top: -@_menu-arrowSize; -ltr-rtl-left: 50%; -ltr-rtl-margin-left: -@_menu-arrowSize; .m-triangleUp(@xf-menuFeatureBorderColor, @_menu-arrowSize); .menu--structural & { top: -@_menu-arrowSize; } .menu--up & { display: none; } } .menu-content { margin: 0; padding: 0; list-style: none; text-align: left; .xf-menu(); border-radius: @xf-menuBorderRadius; // when menus nudge up against structure, the joined corner should not be radiused .menu--structural.menu--left & { border-top-left-radius: 0; } .menu--structural.menu--right & { border-top-right-radius: 0; } // potentially fixed menus .menu--potentialFixed & { overflow: auto; max-height: 450px; max-height: 80vh; } > :last-child { border-bottom-left-radius: @xf-menuBorderRadius; border-bottom-right-radius: @xf-menuBorderRadius; } } .menu--pageJump { width: auto; min-width: 0; } .menu-header { position: relative; padding: @xf-blockPaddingV @_menu-paddingH; margin: 0; font-weight: @xf-fontWeightNormal; text-decoration: none; .xf-menuHeader(); .m-clearFix(); .m-hiddenLinks(); &.menu-header--small { font-size: @xf-fontSizeNormal; } &.menu-header--sticky { position: sticky; top: 0; } .menu-desc { color: fade(@xf-menuHeader--color, 70); .m-textColoredLinks(); } &::after { content: ''; height: 3px; width: 35px; background-color: currentColor; display: block; clip-path: polygon(0 0,calc(100% - 5px) 0,100% 100%,100% 100%,0 100%); margin-top: @xf-paddingMedium; } } .menu-desc { display: block; font-size: @xf-fontSizeSmaller; font-weight: @xf-fontWeightNormal; } .menu-tabHeader { padding: 0; margin: 0; font-weight: @xf-fontWeightNormal; text-decoration: none; .xf-menuTabHeader(); .m-tabsTogether(xf-default(@xf-menuTabHeader--font-size, @xf-fontSizeNormal)); .tabs-tab { position: relative; padding: @xf-blockPaddingV @_menu-paddingH (@xf-blockPaddingV + 5); &::after { content: ''; width: auto; height: 3px; position: absolute; right: 4px; bottom: 0; left: 4px; background-color: @xf-menuTabHeaderSelected--border-color; pointer-events: none; transform: translate3d(0,0,0) scaleY(1); transform-origin: center bottom; will-change: transform; opacity: 0; border-radius: 500px 500px 0 0; } &:hover { color: @xf-blockMinorTabHeaderSelected--color; } &.is-active { .xf-menuTabHeaderSelected(); &::after { opacity: 1; } } } .tabs-text { padding: @xf-blockPaddingV @_menu-paddingH max(0px, @xf-blockPaddingV - @xf-borderSizeFeature); border-bottom: @xf-borderSizeFeature solid transparent; } .hScroller-action { .m-hScrollerActionColorVariation( xf-default(@xf-menuTabHeader--background-color, transparent), xf-default(@xf-menuTabHeader--color, ~""), xf-default(@xf-blockMinorTabHeaderSelected--color, ~"") ); } } .menu-scroller { overflow: auto; max-height: 300px; max-height: 60vh; -webkit-overflow-scrolling: touch; .menu-row + & { border-top: @xf-borderSize solid @xf-borderColorLight; } } .menu-row { margin: 0; padding: @_menu-paddingV @_menu-paddingH; border-radius: @xf-menuBorderRadius; .m-clearFix(); &.menu-row--alt { .xf-contentAltBase(); } &.menu-row--highlighted { background: fade(@xf-contentAltBg, 50%); color: @xf-contentAltBase--color; } &.menu-row--close { padding-left: @_menu-closePaddingH; padding-right: @_menu-closePaddingH; } &.menu-row--separated { + .menu-row { border-top: @xf-borderSize solid @xf-borderColorLight; } } &.menu-row--clickable:hover { background: @xf-contentAltBg; } &:empty { padding: 0; } } .menu-linkRow { display: block; padding: @_menu-paddingV @_menu-paddingH @_menu-paddingV (@_menu-paddingH) - (@xf-borderSizeFeature); .xf-menuLinkRow(); &.menu-linkRow--alt { .xf-contentAltBase(); } &.is-selected, &:hover, &:focus { .xf-menuLinkRowSelected(); &:focus { outline: 0; } &.is-selected { border-left-color: @xf-borderColorFeature; } } &.is-hidden { display: none; } i[aria-hidden=true] { font-size: @xf-fontSizeSmall; display: inline-block; width: 23px; // about 1.75em at this font size & ~ .menu-linkRow-hint { padding-left: 23px; } } &:hover i[aria-hidden=true]:after { color: @xf-linkHoverColor; } } .menu-linkRow-hint { font-style: inherit; font-size: @xf-fontSizeSmallest; color: @xf-textColorMuted; display: block; } .menu-separator { margin: 0 (@_menu-paddingH) / 2; padding: 0; border: none; border-top: @xf-borderSize solid @xf-borderColorLight; &.menu-separator--hard { margin: 0; } & + .menu-separator, &:last-child { display: none; } } .menu-footer { padding: @xf-blockPaddingV @_menu-paddingH; .xf-menuFooter(); .m-clearFix(); &.menu-footer--close { padding-left: @_menu-closePaddingH; padding-right: @_menu-closePaddingH; } &:not(.menu-footer--split) { .menu-footer-counter { float: left; } .menu-footer-controls { float: right; } } &.menu-footer--split { display: flex; align-items: center; .menu-footer-main, .menu-footer-counter { flex-grow: 1; } .menu-footer-select:not(:last-child) { margin: 0 1em; } .menu-footer-opposite, .menu-footer-controls { margin-left: auto; } } } .menu .block { margin: 0; .block-container { color: inherit; background: none; border: none; border-radius: 0; > .block-header:first-child { display: none; } } .block-body { border-radius: 0; } } ]]>
</template>
<template title="core_pagenav.less" type="public" addon_id="XF" version_id="2020970" version_string="2.2.9">
<![CDATA[ // ####################################### PAGE NAVIGATION ######################## @_page-paddingV: xf-default(@xf-buttonBase--padding-top, 6px); @_page-paddingH: @xf-paddingLarge; @_page-paddingHSimple: 10px; .pageNavWrapper {} .m-pageNavElCore() { background: @xf-contentBg; color: @xf-linkColor; font-size: @xf-fontSizeSmall; font-weight: 700; white-space: nowrap; border: @xf-borderSize solid @xf-borderColor; &:hover, &:active { background: @xf-paletteAccent1; text-decoration: none; } } .pageNav-jump { display: inline-block; .m-pageNavElCore(); border-radius: @xf-borderRadiusSmall; padding: @_page-paddingV @_page-paddingH; &:hover { color: @xf-textColorEmphasized; } &.pageNav-jump--prev:before, &.pageNav-jump--next:after { .m-faBase('Pro', @faWeight-solid); font-size: 80%; unicode-bidi: isolate; // maintain position in RTL with LTR text } &.pageNav-jump--prev:before { .m-faContent("@{fa-var-caret-left}\00a0", false, ltr); // .61em .m-faContent("@{fa-var-caret-right}\00a0", false, rtl); // .61em } &.pageNav-jump--next:after { .m-faContent("\00a0@{fa-var-caret-right}", false, ltr); // .61em .m-faContent("\00a0@{fa-var-caret-left}", false, rtl); // .61em } } .pageNav-main { .m-listPlain(); display: inline-table; } .pageNav-page { display: table-cell; .m-pageNavElCore(); &:not(:last-child) { border-right: none; } &:not(:first-child) { border-left-color: @xf-borderColorLight; } &:first-child { .m-borderLeftRadius(@xf-borderRadiusSmall); } &:last-child { .m-borderRightRadius(@xf-borderRadiusSmall); } > a { display: block; padding: @_page-paddingV @_page-paddingH; text-decoration: none; color: inherit; } &.pageNav-page--current { background: @xf-contentHighlightBg; color: @xf-textColorEmphasized; cursor: pointer; &:hover, &:active { background: @xf-contentAccentBg; } + .pageNav-page { border-left: none; } } } // Hide relative page numbers on narrow devices when we have a skip entry as we don't necessarily have space. @media (max-width: @xf-responsiveNarrow) { .pageNav--skipStart { .pageNav-page.pageNav-page--earlier { display: none; } } .pageNav--skipEnd { .pageNav-page.pageNav-page--later { display: none; } .pageNav-page.pageNav-page--skipEnd { border-left: none; } } } // ########################### SIMPLE PAGE NAV VARIANT ######################## .pageNavSimple { display: inline-flex; } .pageNavSimple-el { display: inline-block; border-radius: @xf-borderRadiusSmall; padding: @_page-paddingV @_page-paddingHSimple; font-size: @xf-fontSizeSmall; text-align: center; white-space: nowrap; margin-right: 4px; &:last-child { margin-right: 0; } &.pageNavSimple-el--current { .xf-contentAccentBase(); &:hover, &:active { background: xf-intensify(@xf-contentAccentBg, 3%); text-decoration: none; } } &.pageNavSimple-el--prev, &.pageNavSimple-el--next { .xf-contentHighlightBase(); min-width: 75px; @media (max-width: 350px) { min-width: 0; } &:hover, &:active { background: xf-intensify(@xf-contentHighlightBg, 3%); text-decoration: none; } i:before { .m-faBase('Pro', @faWeight-solid); } } &.pageNavSimple-el--prev i:before { .m-faContent(@fa-var-caret-left, false, ltr); // , .44em .m-faContent(@fa-var-caret-right, false, rtl); // , .44em } &.pageNavSimple-el--next i:before { .m-faContent(@fa-var-caret-right, false, ltr); // , .44em .m-faContent(@fa-var-caret-left, false, rtl); // , .44em } &.pageNavSimple-el--first, &.pageNavSimple-el--last { border-color: transparent; padding-left: (@_page-paddingHSimple / 2); padding-right: (@_page-paddingHSimple / 2); color: fade(@xf-linkColor, 60%); &:hover, &:active { .xf-blockBorder(); background: xf-intensify(@xf-contentHighlightBg, 3%); color: @xf-contentHighlightBase--color; text-decoration: none; } i:before { .m-faBase('Pro', @faWeight-solid); } } &.pageNavSimple-el--first i:before { .m-faContent(@fa-var-backward, false, ltr); // 1em .m-faContent(@fa-var-forward, false, rtl); // 1em } &.pageNavSimple-el--last i:before { .m-faContent(@fa-var-forward, false, ltr); // 1em .m-faContent(@fa-var-backward, false, rtl); // 1em } &.is-disabled { border-color: transparent; background: none; color: @xf-textColorMuted; text-decoration: none; pointer-events: none; &:hover { background: none; color: @xf-textColorMuted; } } } // #################### DISPLAY VARIANTS ######################### .pageNavWrapper--simple { .pageNav { display: none; } } .pageNavWrapper--full { .pageNavSimple { display: none; } } .pageNavWrapper--mixed { .pageNavSimple { display: none; } @media (max-width: @xf-responsiveMedium) { .pageNav { display: none; } .pageNavSimple { display: inline-flex; } } } // Hide any block page nav that goes before the block as we will be wasting vertical space. @media (max-width: @xf-responsiveNarrow) { .block-outer:not(.block-outer--after) .pageNavWrapper:not(.pageNavWrapper--forceShow) { display: none; } // this is a sanity check in case .block-outer--after is forgotten .block-container + .block-outer .pageNavWrapper { display: block; } } ]]>
</template>
<template title="core_pikaday.less" type="public" addon_id="XF" version_id="2020070" version_string="2.2.0">
<![CDATA[ @pd-text-color: @xf-textColor; @pd-title-color: @xf-linkColor; @pd-title-bg: @xf-contentBg; @pd-picker-bg: @xf-contentBg; @pd-picker-border: @xf-borderColor; @pd-picker-border-radius: @xf-borderRadiusMedium; @pd-th-color: @xf-textColorDimmed; @pd-day-color: @xf-textColor; @pd-day-bg: @xf-contentAltBg; @pd-day-hover-color: @xf-textColorEmphasized; @pd-day-hover-bg: @xf-contentAccentBg; @pd-day-today-color: @xf-textColorFeature; @pd-day-selected-color: @xf-textColorEmphasized; @pd-day-selected-bg: @xf-contentHighlightBg; @pd-day-selected-shadow: transparent; @pd-day-disabled-color: @xf-textColor; @pd-week-color: @xf-textColorMuted; @pd-range-color: @xf-textColorAccentContent; @pd-range-bg: @xf-contentAccentBg; @pd-range-border: @xf-borderColorAccentContent; .pika-single { z-index: 9999; display: block; position: relative; color: @pd-text-color; background: @pd-picker-bg; border: 1px solid; border-color: @pd-picker-border; border-radius: @pd-picker-border-radius; &.is-hidden { display: none; } &.is-bound { position: absolute; .m-dropShadow(0, 5px, 10px, 0, .25); } } // clear child float (pika-lendar), using the famous micro clearfix hack // http://nicolasgallagher.com/micro-clearfix-hack/ .pika-single { *zoom: 1; &:before, &:after { content: " "; display: table; } &:after { clear: both } } .pika-lendar { float: left; width: 240px; margin: 8px; } .pika-title { position: relative; text-align: center; select { cursor: pointer; position: absolute; z-index: 9998; margin: 0; left: 0; top: 5px; filter: alpha(opacity=0); opacity: 0; } } .pika-label { display: inline-block; *display: inline; position: relative; z-index: 9999; overflow: hidden; margin: 0; padding: 5px 3px; font-size: 14px; line-height: 20px; font-weight: bold; color: @pd-title-color; background-color: @pd-title-bg; } .pika-prev, .pika-next { display: block; cursor: pointer; position: relative; outline: none; background: none; border: 0; padding: 0; width: 20px; height: 30px; white-space: nowrap; overflow: hidden; opacity: .5; font-size: 0; color: @pd-title-color; background-color: @pd-title-bg; &::before { .m-faBase(); font-size: @xf-fontSizeLarge; vertical-align: middle; display: inline-block; margin: -4px 6px -4px 0; } &:hover { opacity: 1; } &.is-disabled { cursor: default; opacity: .2; } } .pika-prev { &::before { .m-faContent(@fa-var-caret-left, .4375em, ltr); .m-faContent(@fa-var-caret-right, .4375em, rtl); } } .pika-next { &::before { .m-faContent(@fa-var-caret-right, .4375em, ltr); .m-faContent(@fa-var-caret-left, .4375em, rtl); } } .pika-prev { float: left; *left: 0; } .pika-next { float: right; *right: 0; } .pika-select { display: inline-block; *display: inline; } .pika-table { width: 100%; border-collapse: collapse; border-spacing: 0; border: 0; th, td { width: 14.285714285714286%; padding: 0; } th { color: @pd-th-color; font-size: 12px; line-height: 25px; font-weight: bold; text-align: center; } abbr { border-bottom: none; } } .pika-button { cursor: pointer; display: block; -moz-box-sizing: border-box; box-sizing: border-box; outline: none; border: 0; margin: 0; width: 100%; padding: 5px; color: @pd-day-color; font-size: 12px; line-height: 15px; text-align: right; background: @pd-day-bg; .is-today & { color: @pd-day-today-color; font-weight: bold; } .is-inrange &, .is-startrange &, .is-endrange & { color: @pd-range-color; background: @pd-range-bg; } .is-startrange & { .m-borderLeftRadius(3px); border-left: 2px solid @pd-range-border; } .is-endrange & { .m-borderRightRadius(3px); border-right: 2px solid @pd-range-border; } .is-selected & { color: @pd-day-selected-color; font-weight: bold; background: @pd-day-selected-bg; box-shadow: inset 0 1px 3px @pd-day-selected-shadow; border-radius: 3px; } .is-disabled &, .is-outside-current-month & { pointer-events: none; cursor: default; color: @pd-day-disabled-color; opacity: .3; } &:hover { color: @pd-day-hover-color; background: @pd-day-hover-bg; box-shadow: none; border-radius: 3px; } } .pika-week { font-size: 11px; color: @pd-week-color; } .pika-time-container { clear: both; } .pika-time { margin: 7px auto 7px; } ]]>
</template>
<template title="error" type="public" addon_id="XF" version_id="2021370" version_string="2.2.13">
<![CDATA[ <xf:title>{{ phrase('oops_we_ran_into_some_problems') }}</xf:title> <div style=" display: flex; flex-direction: column; justify-content: center; align-items: center; min-height: 100vh; background-color: #1a1a1a; color: #ffffff; font-family: 'Arial', sans-serif; text-align: center; padding: 40px; "> <!-- Èêîíêà èëè ýìîäçè --> <div style=" font-size: 100px; color: #ffb82b; margin-bottom: 30px; animation: pulse 2s infinite; ">&#9888;&#65039;</div> <!-- Çàãîëîâîê --> <h1 style=" font-size: 36px; color: #ffb82b; margin-bottom: 20px; ">{{ phrase('oops_we_ran_into_some_problems') }}</h1> <!-- Ñîîáùåíèå îá îøèáêå --> <div style=" font-size: 18px; color: #ddd; max-width: 600px; line-height: 1.6; "> <xf:if is="$error"> {$error|raw} <xf:else /> <ul style="list-style:none; padding:0; margin:0;"> <xf:foreach loop="$errors" value="$error"> <li>• {$error|raw}</li> </xf:foreach> </ul> </xf:if> </div> <!-- Êíîïêà âîçâðàòà --> <a href="/" style=" margin-top: 40px; padding: 14px 40px; background-color: #ffb82b; color: #1a1a1a; font-weight: bold; text-decoration: none; border-radius: 8px; font-size: 18px; transition: all 0.3s ease; " onmouseover="this.style.background='#e6a021'; this.style.transform='scale(1.05)';" onmouseout="this.style.background='#ffb82b'; this.style.transform='scale(1)';"> Âåðíóòüñÿ íà ãëàâíóþ </a> </div> <!-- Àíèìàöèÿ ïóëüñàöèè --> <style> @keyframes pulse { 0% { transform: scale(1); opacity: 0.8; } 50% { transform: scale(1.1); opacity: 1; } 100% { transform: scale(1); opacity: 0.8; } } </style> ]]>
</template>
<template title="extra.less" type="public" addon_id="XF" version_id="2021370" version_string="2.2.13">
<![CDATA[ .userBanner { color: white; text-transform: uppercase; font-size: 72%; border-radius: 10px; font-weight: 800; padding: 5.3px 7.3px; border: .6mm ridge rgba(255,255,255,0.4); background-size: 700% 700%; animation: AnimBanner 10s ease infinite; } .userBanner.userBanner--staff { border: .7mm ridge rgba(255,255,255,0.4); background-image: linear-gradient(to right, #8b008b, #00bfff, #00b9ff, #d104ff, #2800ff); background-size: 900% 900%; } /* ============================================= */ /* ÄÎÁÀÂËÅÍÈÅ ADMFORUM */ /* ============================================= */ .admforum { background-image: linear-gradient(135deg, #ff512f, #ff9f00) !important; background-size: 400% 400% !important; box-shadow: 0 0 22px rgba(255,120,0,.8) !important; animation: AnimBanner 10s ease infinite !important; border: .6mm ridge rgba(255,255,255,0.4) !important; color: white !important; text-transform: uppercase !important; font-weight: 700 !important; font-size: 72% !important; border-radius: 10px !important; padding: 5.3px 7.3px !important; display: inline-block !important; vertical-align: middle !important; position: relative !important; } /* Ãëîó ýôôåêò äëÿ Admforum */ .admforum { animation: AnimBanner 10s ease infinite, admforumGlow 3s ease-in-out infinite alternate !important; } @keyframes admforumGlow { 0% { box-shadow: 0 0 5px rgba(255,81,47,0.6); } 100% { box-shadow: 0 0 22px rgba(255,120,0,.8), 0 0 30px rgba(255,159,0,0.6); } } /* Hover ýôôåêò äëÿ Admforum */ .admforum:hover { transform: translateY(-2px) scale(1.04) !important; box-shadow: 0 0 30px rgba(255,120,0,.9), 0 0 40px rgba(255,159,0,0.8), 0 5px 25px rgba(0,0,0,0.4) !important; border-color: rgba(255, 81, 47, 0.7) !important; filter: brightness(1.1) !important; text-shadow: 0 0 8px rgba(255,255,255,0.5) !important; transition: all 0.4s ease !important; } /* Äîáàâëÿåì â ñïèñîê àíèìàöèé */ .admforum { transition: transform 0.4s ease, box-shadow 0.4s ease, border-color 0.4s ease, filter 0.4s ease !important; } @keyframes AnimBanner { 0%, 100% { background-position: 0% 50% } 50% { background-position: 100% 50% } } .razrab, .furmangroup, .kasper {background-image: linear-gradient(270deg, #f819a7, #4619f8)} .durov {background-image: linear-gradient(270deg, #a0522d, #d2691e, #8b4513)} .stadm, .sledfrac {background-image: linear-gradient(270deg, #06f, #04b)} .soskags {background-image: linear-gradient(270deg, #49cc2c, #00ced1)} .VAFELKA, .osnovatel {background-image: linear-gradient(270deg, #FFFF00, #FFA500)} .kot, .userBanner--wagnersex, .userBanner--shontakers {background-image: linear-gradient(270deg, #8b0000, #000)} .soskazgs {background-image: linear-gradient(270deg, #06f, #ba55d3)} .redadmin, .spec {background-image: linear-gradient(270deg, #b22222, #dc143c, #8b0000)} .user {background-image: linear-gradient(270deg, #bcbbbb, #515151)} .admin {background-image: linear-gradient(270deg, #6e48aa, #9d50bb, #9932cc, #9400d3)} .mlmoder {background-image: linear-gradient(270deg, #80c3df, #0da, #0a8)} .stmod {background-image: linear-gradient(270deg, #f819a7, #0859fc)} .moder {background-image: linear-gradient(270deg, #01a72c, #df841a, #468153)} .osnov, .hassle, .lider {background-image: linear-gradient(270deg, #feea10, #ff931e)} .ga {background-image: linear-gradient(270deg, #32cd32, #008000, #20b2aa)} .osnovakp {background: linear-gradient(270deg, #04b, #bb0, #a00)} .lega {background-image: url("https://media3.giphy.com/media/xThuWcaa4U4XZQDgvm/giphy.gif"); background-size: cover; background-position: center; color: transparent; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; text-shadow: none; background-image: white} .super {background-image: linear-gradient(270deg, #feea10, #ff931e, #df841a, #01a72c, #f819a7, #0859fc, #0045bb)} .kur {background-image: linear-gradient(270deg, #b0284d, #497fff)} .zablok {background-image: linear-gradient(270deg, #000)} .adm {background-image: linear-gradient(270deg, #6b8e23, #82f358, #49cc2c)} .teh {background-image: linear-gradient(270deg, #ff4500, #b50, #c00)} .grand {background-image: linear-gradient(270deg, #f4a460, #daa520, #d2691e)} .black, .respachegroup {background-image: linear-gradient(270deg, #dc143c, #b22222, #8b0000)} .sueta {background-image: linear-gradient(270deg, #808080, #c0c0c0, #8b4513)} .lunar {background-image: linear-gradient(270deg, #ff69b4, #d16aff)} .allserver { background-image: linear-gradient(270deg, #f4a460, /* grand - ïåñî÷íûé */ #daa520, /* grand - çîëîòîé äóá */ #d2691e, /* grand - øîêîëàäíûé */ #dc143c, /* black - ìàëèíîâûé */ #b22222, /* black - îãíåííî-êðàñíûé */ #8b0000, /* black - òåìíî-êðàñíûé */ #808080, /* sueta - ñåðûé */ #c0c0c0, /* sueta - ñåðåáðÿíûé */ #8b4513 /* sueta - ñåäëî-êîðè÷íåâûé */ ); } .syvorov, .project {background-image: linear-gradient(270deg, #00008b, #0000cd, #8b0000)} .test {background-image: linear-gradient(270deg, #c71585, #ff1493, #ff69b4)} .melky {background-image: linear-gradient(270deg, #9370db, #9932cc, #da70d6)} .stkot {background-image: linear-gradient(270deg, #ff5b00, #ff000d, #ffd045, #007cad, #5f1179)} .sponsor {background-image: linear-gradient(270deg, #6a5acd, #4b0082, #8a2be2)} .Gladmin, .ZGadmin {background-image: linear-gradient(270deg, #5ade21, #008000)} .rykproekta {background-image: linear-gradient(270deg, #8b006d, #f00)} .legendary {background-image: linear-gradient(270deg, blue, #000)} .iceteam {background-image: linear-gradient(270deg, #b870ff, #c6ff6b, #21ed73, #3d98ff)} .pluxury {background-image: linear-gradient(270deg, #ff6745, #ffe7ab, #feb0ff)} .furmanvip {background-image: linear-gradient(270deg, #458f51, #00de25, #7f00ff, #d60040)} .dagovsky {background-image: linear-gradient(270deg, #992572, #d304d6)} .userBanner--gosharespach {background-image: linear-gradient(210deg, #f00, #00f)} .userBanner--winstongroup {background-image: linear-gradient(210deg, #7442c8, #9400d3, #000080, #f0f)} .project {background-image: linear-gradient(270deg, #ff1493,#ff69b4, #ffb6c1, #ff1493 ) !important} .vkteam {background-image: linear-gradient(270deg, #87CEEB, #00CED1, #1E90FF)!important} .pauk {background-image: linear-gradient(270deg, #fe019a, #fe34ae, #fe67c2, #e401fe 100%);} .razrab, .durov, .stadm, .soskags, .VAFELKA, .kot, .soskazgs, .redadmin, .user, .sledfrac, .admin, .mlmoder, .stmod, .moder, .osnov, .ga, .osnovakp, .super, .lider, .kur, .zablok, .adm, .teh, .grand, .black, .sueta, .hassle, .lunar, .syvorov, .test, .melky, .project, .stkot, .sponsor, .spec, .osnovatel, .Gladmin, .ZGadmin, .rykproekta, .legendary, .iceteam, .pluxury, .furmangroup, .kasper, .furmanvip, .dagovsky, .respachegroup { box-shadow: 0 0 10px; animation: AnimBanner 10s ease infinite; background-size: 900% 900% } .vkteam {box-shadow: #87CEEB 0 0 10px} .pauk {box-shadow: #fe019a 0px 0px 10px} .razrab, .stmod, .VAFELKA, .syvorov, .rykproekta {box-shadow: #f819a7 0 0 10px} .durov {box-shadow: #a0522d 0 0 10px} .stadm, .soskazgs, .sledfrac, .osnovakp {box-shadow: #06f 0 0 10px} .soskags {box-shadow: #49cc2c 0 0 10px} .kot, .spec, .userBanner--shontakers, .userBanner--wagnersex {box-shadow: #8b0000 0 0 10px} .redadmin, .respachegroup {box-shadow: #f00 0 0 10px} .user {box-shadow: #bcbbbb 0 0 10px} .admin {box-shadow: #6e48aa 0 0 10px} .mlmoder {box-shadow: #80c3df 0 0 10px} .moder {box-shadow: #01a72c 0 0 10px} .osnov, .osnovatel, .hassle {box-shadow: #feea10 0 0 10px} .ga {box-shadow: #32cd32 0 0 10px} .super {position: relative; z-index: 1} .lider {box-shadow: #da0 0 0 10px} .kur {box-shadow: #497fff 0 0 10px} .zablok {box-shadow: #000 0 0 10px} .adm {box-shadow: #6b8e23 0 0 10px} .teh {box-shadow: #ff4500 0 0 10px} .grand {box-shadow: #f4a460 0 0 10px} .black {box-shadow: #dc143c 0 0 10px} .sueta {box-shadow: #808080 0 0 10px} .lunar {box-shadow: #ff69b4 0 0 10px} .test {box-shadow: #c71585 0 0 10px} .melky {box-shadow: #9370db 0 0 10px} .project {box-shadow: #d600c1 0 0 10px} .stkot {box-shadow: #ff5b00 0 0 10px} .sponsor {box-shadow: #6a5acd 0 0 10px} .Gladmin {box-shadow: #5ade21 0 0 10px} .ZGadmin {box-shadow: #4bb524 0 0 10px} .legendary {box-shadow: blue 0 0 10px; border-radius: 5px} .iceteam {box-shadow: #b870ff 0 0 10px} .pluxury {box-shadow: #ff6745 0 0 10px} .furmangroup {box-shadow: #e785ff 0 0 10px} .kasper {box-shadow: #ff3df9 0 0 10px} .furmanvip {box-shadow: #458f51 0 0 10px} .dagovsky {box-shadow: #992572 0 0 10px} .wag { background: linear-gradient(45deg, #f00, #c00) !important; background-size: 400% 400% !important; animation: wagnerShimmer 3s ease-in-out infinite !important; color: white !important; text-align: center !important; font-size: 14px !important; font-weight: 500 !important; border-radius: 8px !important; padding: 4px 10px !important; border: none !important; position: relative !important; overflow: visible !important; box-shadow: 0 2px 8px rgba(255,0,0,0.3) !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; margin: 2px 4px !important; text-shadow: 0 0 10px rgba(255,0,0,0.7) !important; letter-spacing: 1px !important; min-height: 22px !important; max-height: 24px !important; line-height: 1.3 !important } .wag::after { content: ''; background-image: url('https://steamuserimages-a.akamaihd.net/ugc/2017102299334556140/2850FEB3E6AA7B24685305EC7610E5BCC874983F/?imw=512&imh=619&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=true'); background-size: cover; background-repeat: no-repeat; background-position: center; width: 20px; height: 20px; display: inline-block; margin-left: 8px; vertical-align: middle; border-radius: 50%; border: 2px solid #fff; box-shadow: 0 0 12px rgba(255,255,255,0.8),0 0 18px rgba(255,0,0,0.6),0 3px 6px rgba(0,0,0,0.3); animation: wagnerPhoto 3s ease-in-out infinite; flex-shrink: 0 !important; align-self: center !important; filter: brightness(1.15) contrast(1.08) saturate(1.2) } .wag:hover { animation: wagnerPulse .5s ease-in-out !important; transform: scale(1.04) !important } .wag:hover::after { transform: scale(1.15) !important; box-shadow: 0 0 18px rgba(255,255,255,0.9),0 0 25px rgba(255,0,0,0.7),0 4px 8px rgba(0,0,0,0.4) } .userBanner--winstongroup { color: #fff; border: none; text-transform: uppercase; font-style: normal; font-size: 87%; border-radius: 30px; text-align: center; padding: 1px 10px 3px } .userBanner--wagnersex, .userBanner--shontakers, .userBanner--gosharespach { color: #fff; border: none } @keyframes wagnerShimmer { 0%, 100% { background-position: 0% 50% } 50% { background-position: 100% 50% } } @keyframes wagnerPhoto { 0%, 100% { transform: scale(1) rotate(0deg); box-shadow: 0 0 12px rgba(255,255,255,0.8),0 0 18px rgba(255,0,0,0.6),0 3px 6px rgba(0,0,0,0.3) } 50% { transform: scale(1.12) rotate(6deg); box-shadow: 0 0 18px rgba(255,255,255,0.9),0 0 25px rgba(255,0,0,0.7),0 4px 8px rgba(0,0,0,0.4) } } @keyframes wagnerPulse { 0% { transform: scale(1) } 50% { transform: scale(1.06) } 100% { transform: scale(1.04) } } /* ============================================= */ /* ÏÐÅÔÈÊÑÛ LABEL (ÒÎËÜÊÎ) */ /* ============================================= */ .label { color: #fff; text-transform: uppercase; font-weight: 650; font-size: 71%; padding: 2px 6px; text-align: center; border-radius: 4px; letter-spacing: 0.5px; background-size: 300% 300%; animation: liquidColors 6s ease-in-out infinite, glowFlow 6s ease-in-out infinite; display: inline-block; margin: 0 2px; position: relative; overflow: hidden; transition: all 0.3s ease; border: 1px solid rgba(255, 255, 255, 0.1); line-height: 1.2; vertical-align: middle; } /* Verified - Êðàñíûé */ .label.v { background-image: linear-gradient(-45deg, #ff1e1e, #ff4d4d, #cc0000, #ff3333); --glow1: #ff4d4d; --glow2: #ff0000; } /* Ðàññìîòðåíèå - Ñèíèé */ .label.ras { background-image: linear-gradient(-45deg, #0044ff, #6e84ff, #001faa, #5570ff); --glow1: #6e84ff; --glow2: #0044ff; } /* Îòêðûòî - Çåë¸íûé */ .label.otk { background-image: linear-gradient(-45deg, #00aa00, #55ee77, #007700, #33cc55); --glow1: #55ee77; --glow2: #00aa00; } /* Ðàññìîòðåíèå ìîäåðàöèè - Îðàíæåâûé */ .label.rasm { background-image: linear-gradient(-45deg, #ee7700, #ffb066, #bb5500, #ff9933); --glow1: #ffb066; --glow2: #ee7700; } /* Èíôîðìàöèÿ - Æ¸ëòûé */ .label.inf { background-image: linear-gradient(-45deg, #ffbb00, #ffe066, #d49a00, #ffcc33); --glow1: #ffe066; --glow2: #ffbb00; } /* Îáúÿâëåíèå Äæåé Äè - Ò¸ìíî-ñåðûé */ .label.ojd { background-image: linear-gradient(135deg, #1a1a1a, #3d3d3d, #262626, #4a4a4a); --glow1: #999999; --glow2: #222222; border: 1px solid #444; } /* Àíèìàöèè */ @keyframes liquidColors { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } @keyframes glowFlow { 0% { box-shadow: 0 0 2px var(--glow1), 0 0 4px var(--glow2); } 50% { box-shadow: 0 0 4px var(--glow2), 0 0 6px var(--glow1); } 100% { box-shadow: 0 0 2px var(--glow1), 0 0 4px var(--glow2); } } /* ============================================= */ /* ÂÎÑÑÒÀÍÎÂËÅÍÈÅ ÑÒÀÐÛÕ ÈÊÎÍÎÊ FONTAWESOME */ /* ============================================= */ /* Âîññòàíàâëèâàåì èêîíêè äëÿ ïîëüçîâàòåëüñêèõ êëàññîâ */ .username--style2:before { font-family: "Font Awesome 5 Pro"; content: "\f2bd"; display: inline; } .username--style3:before { font-family: "Font Awesome 5 Pro"; content: "\f0b1"; } .username--style5:before { font-family: "Font Awesome 5 Pro"; content: "\f5c0"; } .username--style175:before { font-family: "Font Awesome 5 Pro"; content: "\e3c8"; } .username--style6:before { font-family: "Font Awesome 5 Pro"; content: "\f25d"; } .username--style8:before { font-family: "Font Awesome 5 Pro"; content: "\f55f"; } .username--style9:before { font-family: "Font Awesome 5 Pro"; content: "\f6d5"; } .username--style10:before { font-family: "Font Awesome 5 Pro"; content: "\f72e"; } .username--style11:before { font-family: "Font Awesome 5 Pro"; content: "\f25d"; } .username--style12:before { font-family: "Font Awesome 5 Pro"; content: "\f25d"; } .username--style14:before { font-family: "Font Awesome 5 Pro"; content: "\f43f"; } .username--style16:before { font-family: "Font Awesome 5 Pro"; content: "\f0ad"; } .username--style17:before { font-family: "Font Awesome 5 Pro"; content: "\f25d"; } .username--style18:before { font-family: "Font Awesome 5 Pro"; content: "\f121"; } .username--style19:before { font-family: "Font Awesome 5 Pro"; content: "\f3ed"; } .username--style20:before { font-family: "Font Awesome 5 Pro"; content: "\f747"; } .username--style21:before { font-family: "Font Awesome 5 Pro"; content: "\f0fb"; } .username--style22:before { font-family: "Font Awesome 5 Pro"; content: "\f6d5"; font-weight: 500 !important; } .username--style24:before { font-family: "Font Awesome 5 Pro"; content: "\f129"; } .username--style25:before { font-family: "Font Awesome 5 Pro"; content: "\f5fd"; } .username--style26:before { font-family: "Font Awesome 5 Pro"; content: "\f11b"; } .username--style32:before { font-family: "Font Awesome 5 Pro"; content: "\f699"; } .username--style35:before { font-family: "Font Awesome 5 Pro"; content: "\f001"; } .username--style37:before { font-family: "Font Awesome 5 Pro"; content: "\f132"; } .username--style38:before { font-family: "Font Awesome 5 Pro"; content: "\f651"; } .username--style39:before { font-family: "Font Awesome 5 Pro"; content: "\f595"; } .username--style41:before, .username--style43:before { font-family: "Font Awesome 5 Pro"; content: "\f135"; } .username--style119:before { font-family: "Font Awesome 5 Pro"; content: "\f544"; } .username--style42:before { font-family: "Font Awesome 5 Pro"; content: "\f4fb"; } .username--style46:before { font-family: "Font Awesome 5 Pro"; content: "\f595"; } .username--style47:before { font-family: "Font Awesome 5 Pro"; content: "\f82b"; } .username--style48:before { font-family: "Font Awesome 5 Pro"; content: "\f072"; } .username--style50:before { font-family: "Font Awesome 5 Pro"; content: "\f521"; } /* Font Awesome inline fix for XenForo */ i.fa, i.fab, i.fal, i.far, i.fas, i.fad { display: inline; vertical-align: middle; line-height: 1; } .username--style52:before { font-family: "Font Awesome 5 Pro"; content: "\f544"; } .username--style54:before { font-family: "Font Awesome 5 Pro"; content: "\f05e"; } .username--style68:before { font-family: "Font Awesome 5 Pro"; content: "\f132"; } .username--style69:before { font-family: "Font Awesome 5 Pro"; content: "\f5ec"; } .username--style70:before { font-family: "Font Awesome 5 Pro"; content: "\f6eb"; } .username--style72:before { font-family: "Font Awesome 5 Pro"; content: "\f2bb"; } .username--style73:before { font-family: "Font Awesome 5 Pro"; content: "\f2dc"; } .username--style90:before { font-family: "Font Awesome 5 Pro"; content: "\f521"; } .username--style94:before { font-family: "Font Awesome 5 Pro"; content: "\f02e"; } .username--style95:before { font-family: "Font Awesome 5 Pro"; content: "\f02e"; } .username--style107:before { font-family: "Font Awesome 5 Pro"; content: "\f521"; } .username--style114:before { font-family: "Font Awesome 5 Pro"; content: "\f890"; } .username--style118:before { font-family: "Font Awesome 5 Pro"; content: "\f102"; } .username--style123:before { font-family: "Font Awesome 5 Pro"; content: "\f030"; } .username--style124:before { font-family: "Font Awesome 5 Pro"; content: "\f51a"; } .username--style127:before { font-family: "Font Awesome 5 Pro"; content: "\f654"; } .username--style136:before { font-family: "Font Awesome 5 Pro"; content: "\f2dc"; } .username--style138:before { font-family: "Font Awesome 5 Pro"; content: "\f0ac"; } .username--style143:before { font-family: "Font Awesome 5 Pro"; content: "\f27a"; } .username--style178:before { font-family: "Font Awesome 5 Pro"; content: "\f645"; } .username--style145:before { font-family: "Font Awesome 5 Pro"; content: "\f6be"; } .username--style148:before { font-family: "Font Awesome 5 Pro"; content: "\f4fb"; } /* Âîññòàíàâëèâàåì ïîñëå-èêîíêè */ .username--style33:after { font-family: "Font Awesome 5 Pro"; content: "\f645"; } .username--style90:after { font-family: "Font Awesome 5 Pro"; content: "\f8f6"; } .username--style55:after { font-family: "Font Awesome 5 Pro"; content: "\f336"; } .username--style100:after { font-family: "Font Awesome 5 Pro"; content: "\f645"; } .username--style116:after { font-family: "Font Awesome 5 Pro"; content: "\f645"; } /* Âîññòàíàâëèâàåì îáùèå ñòèëè äëÿ âñåõ èêîíîê */ .username--style2:before, .username--style3:before, .username--style5:before, .username--style175:before, .username--style6:before, .username--style8:before, .username--style9:before, .username--style10:before, .username--style11:before, .username--style12:before, .username--style14:before, .username--style16:before, .username--style17:before, .username--style18:before, .username--style19:before, .username--style20:before, .username--style21:before, .username--style22:before, .username--style24:before, .username--style25:before, .username--style26:before, .username--style32:before, .username--style33:before, .username--style35:before, .username--style37:before, .username--style38:before, .username--style39:before, .username--style41:before, .username--style42:before, .username--style43:before, .username--style46:before, .username--style47:before, .username--style48:before, .username--style50:before, .username--style52:before, .username--style54:before, .username--style68:before, .username--style69:before, .username--style70:before, .username--style72:before, .username--style73:before, .username--style90:before, .username--style94:before, .username--style95:before, .username--style107:before, .username--style114:before, .username--style118:before, .username--style119:before, .username--style123:before, .username--style124:before, .username--style127:before, .username--style136:before, .username--style138:before, .username--style143:before, .username--style145:before, .username--style148:before, .username--style178:before { font-weight: 600; display: inline-block; margin-right: 3px; } /* Âîññòàíàâëèâàåì îòñòóïû äëÿ êîíêðåòíûõ èêîíîê */ .username--style6:before, .username--style11:before, .username--style12:before, .username--style17:before, .username--style24:before, .username--style37:before, .username--style50:before, .username--style68:before { padding-right: 5px; } .username--style19:before, .username--style73:before, .username--style136:before { padding-right: 5px; margin-right: 5px; } .username--style3:before, .username--style8:before, .username--style10:before, .username--style20:before, .username--style21:before, .username--style22:before, .username--style32:before, .username--style35:before, .username--style38:before, .username--style39:before, .username--style41:before, .username--style43:before, .username--style72:before, .username--style90:before, .username--style94:before, .username--style95:before, .username--style118:before, .username--style124:before, .username--style138:before, .username--style143:before, .username--style178:before { padding-right: 3px; } .username--style5:before, .username--style9:before, .username--style25:before, .username--style42:before, .username--style46:before, .username--style47:before, .username--style48:before, .username--style52:before, .username--style54:before, .username--style69:before, .username--style70:before, .username--style107:before, .username--style114:before, .username--style123:before, .username--style127:before, .username--style145:before, .username--style148:before { padding-right: 1px; } /* Âîññòàíàâëèâàåì ñïåöèàëüíûå èêîíêè (ïîñëå) */ .username--style33:after, .username--style55:after, .username--style90:after, .username--style100:after, .username--style116:after { font-weight: 600; display: inline-block; margin-left: 2px; } /* Íîâûå áàííåðû - ïðîñòî äîáàâü â êîíåö */ /* Áàííåð ICE */ .userBanner--ice { background-image: linear-gradient(270deg, #00ffff, #0080ff, #00ffff); box-shadow: #00ffff 0 0 10px; animation: AnimBanner 8s ease infinite; background-size: 900% 900%; } /* Áàííåð KOLOWRAT */ .userBanner--kolowrat { background-image: linear-gradient(270deg, #ff0000, #ff4500, #ffae00, #ffff00, #ffae00, #ff4500, #ff0000); box-shadow: #ff4500 0 0 10px; animation: AnimBanner 7s ease infinite; background-size: 900% 900%; } /* Áàííåð MEGUMY */ .userBanner--megumyy { background-image: linear-gradient(270deg, #2e004f, #8a2be2, #ff00ff, #4b0082, #1a0033, #ff69b4, #9400d3); box-shadow: #8a2be2 0 0 10px; animation: AnimBanner 9s ease infinite; background-size: 900% 900%; } /* Áàííåð AMERIMA */ .userBanner--amerima { background-image: linear-gradient(270deg, #B31942, #FFFFFF, #0A3161, #FFFFFF, #B31942); box-shadow: #0A3161 0 0 10px; animation: AnimBanner 6s ease infinite; background-size: 900% 900%; } /* Áàííåð MALBORO */ .userBanner--malboro { background-image: linear-gradient(270deg, #FF0000, #FFFFFF, #FF0000, #FFFFFF); box-shadow: #FF0000 0 0 10px; animation: AnimBanner 5s ease infinite; background-size: 900% 900%; } /* Áàííåð EMPTYS */ .userBanner--emptys { background-image: linear-gradient(270deg, #000000, #2b2b2b, #5a5a5a, #9a9a9a, #5a5a5a, #2b2b2b, #000000); box-shadow: #5a5a5a 0 0 10px; animation: AnimBanner 8s ease infinite; background-size: 900% 900%; } /* Áàííåð ZRPICE */ .userBanner--zrpice { background-image: linear-gradient(135deg, #2b0000, #8b0000, #ff1a1a, #000000, #1a1a1a, #ff1a1a, #8b0000); box-shadow: #8b0000 0 0 10px; animation: AnimBanner 10s ease infinite; background-size: 400% 400%; } /* Áàííåð KOLOWRAT (âòîðîé âàðèàíò) */ .kolowrat { background-image: linear-gradient(270deg, #ff0000, #ff4500, #ffae00, #ffff00, #ffae00, #ff4500, #ff0000); box-shadow: #ff4500 0 0 10px; animation: AnimBanner 7s ease infinite; background-size: 900% 900%; } /* Áàííåð MEGUMYY (êàê êëàññ) */ .megumyy { background-image: linear-gradient(270deg, #2e004f, #8a2be2, #ff00ff, #4b0082, #1a0033, #ff69b4, #9400d3); box-shadow: #8a2be2 0 0 10px; animation: AnimBanner 9s ease infinite; background-size: 900% 900%; } /* Áàííåð AMERIMA (êàê êëàññ) */ .amerima { background-image: linear-gradient(270deg, #B31942, #FFFFFF, #0A3161, #FFFFFF, #B31942); box-shadow: #0A3161 0 0 10px; animation: AnimBanner 6s ease infinite; background-size: 900% 900%; } /* Áàííåð MALBORO (êàê êëàññ) */ .malboro { background-image: linear-gradient(270deg, #FF0000, #FFFFFF, #FF0000, #FFFFFF); box-shadow: #FF0000 0 0 10px; animation: AnimBanner 5s ease infinite; background-size: 900% 900%; } /* Áàííåð EMPTYS (êàê êëàññ) */ .emptys { background-image: linear-gradient(270deg, #000000, #2b2b2b, #5a5a5a, #9a9a9a, #5a5a5a, #2b2b2b, #000000); box-shadow: #5a5a5a 0 0 10px; animation: AnimBanner 8s ease infinite; background-size: 900% 900%; } /* Áàííåð ZRPICE (êàê êëàññ) */ .zrpice { background-image: linear-gradient(135deg, #2b0000, #8b0000, #ff1a1a, #000000, #1a1a1a, #ff1a1a, #8b0000); box-shadow: #8b0000 0 0 10px; animation: AnimBanner 10s ease infinite; background-size: 400% 400%; } /* ============================================= */ /* ÏÅÐÅËÈÂÀÞÙÈÉ ÃËÎÓ ÄËß ÂÑÅÕ ÁÀÍÍÅÐÎÂ */ /* ============================================= */ .userBanner { animation: AnimBanner 10s ease infinite, bannerGlow 3s ease-in-out infinite alternate !important; } .userBanner.userBanner--staff { animation: AnimBanner 10s ease infinite, staffGlow 2.5s ease-in-out infinite alternate !important; } /* Ïåðåëèâàþùèéñÿ ãëîó äëÿ êàæäîãî áàííåðà (ìàêñ 10px) */ .razrab, .stmod, .VAFELKA, .syvorov, .rykproekta { box-shadow: #f819a7 0 0 5px; animation: AnimBanner 10s ease infinite, razrabGlow 3s ease-in-out infinite alternate !important; } .durov { box-shadow: #a0522d 0 0 5px; animation: AnimBanner 10s ease infinite, durovGlow 4s ease-in-out infinite alternate !important; } .stadm, .soskazgs, .sledfrac, .osnovakp { box-shadow: #06f 0 0 5px; animation: AnimBanner 10s ease infinite, blueGlow 2.8s ease-in-out infinite alternate !important; } .soskags { box-shadow: #49cc2c 0 0 5px; animation: AnimBanner 10s ease infinite, greenGlow 3.2s ease-in-out infinite alternate !important; } .kot, .spec, .userBanner--shontakers, .userBanner--wagnersex { box-shadow: #8b0000 0 0 5px; animation: AnimBanner 10s ease infinite, redGlow 3s ease-in-out infinite alternate !important; } .redadmin, .respachegroup { box-shadow: #f00 0 0 5px; animation: AnimBanner 10s ease infinite, redPulse 2.5s ease-in-out infinite alternate !important; } .user { box-shadow: #bcbbbb 0 0 5px; animation: AnimBanner 10s ease infinite, grayGlow 4s ease-in-out infinite alternate !important; } .admin { box-shadow: #6e48aa 0 0 5px; animation: AnimBanner 10s ease infinite, purpleGlow 3s ease-in-out infinite alternate !important; } .mlmoder { box-shadow: #80c3df 0 0 5px; animation: AnimBanner 10s ease infinite, cyanGlow 3.5s ease-in-out infinite alternate !important; } .moder { box-shadow: #01a72c 0 0 5px; animation: AnimBanner 10s ease infinite, greenPulse 3s ease-in-out infinite alternate !important; } .osnov, .osnovatel, .hassle, .lider { box-shadow: #feea10 0 0 5px; animation: AnimBanner 10s ease infinite, goldGlow 2.8s ease-in-out infinite alternate !important; } .ga { box-shadow: #32cd32 0 0 5px; animation: AnimBanner 10s ease infinite, limeGlow 3.2s ease-in-out infinite alternate !important; } .super { box-shadow: 0 0 5px; animation: AnimBanner 10s ease infinite, superRainbow 4s ease-in-out infinite alternate !important; position: relative; z-index: 1; } .kur { box-shadow: #497fff 0 0 5px; animation: AnimBanner 10s ease infinite, kurGlow 3s ease-in-out infinite alternate !important; } .zablok { box-shadow: #000 0 0 5px; animation: AnimBanner 10s ease infinite, blackPulse 5s ease-in-out infinite alternate !important; } .adm { box-shadow: #6b8e23 0 0 5px; animation: AnimBanner 10s ease infinite, oliveGlow 3.5s ease-in-out infinite alternate !important; } .teh { box-shadow: #ff4500 0 0 5px; animation: AnimBanner 10s ease infinite, orangeGlow 2.8s ease-in-out infinite alternate !important; } .grand { box-shadow: #f4a460 0 0 5px; animation: AnimBanner 10s ease infinite, sandyGlow 3s ease-in-out infinite alternate !important; } .black { box-shadow: #dc143c 0 0 5px; animation: AnimBanner 10s ease infinite, crimsonGlow 3s ease-in-out infinite alternate !important; } .sueta { box-shadow: #808080 0 0 5px; animation: AnimBanner 10s ease infinite, silverGlow 4s ease-in-out infinite alternate !important; } .lunar { box-shadow: #ff69b4 0 0 5px; animation: AnimBanner 10s ease infinite, pinkGlow 3s ease-in-out infinite alternate !important; } .test { box-shadow: #c71585 0 0 5px; animation: AnimBanner 10s ease infinite, hotpinkGlow 3.2s ease-in-out infinite alternate !important; } .melky { box-shadow: #9370db 0 0 5px; animation: AnimBanner 10s ease infinite, violetGlow 3s ease-in-out infinite alternate !important; } .project { box-shadow: #d600c1 0 0 5px; animation: AnimBanner 10s ease infinite, magentaGlow 2.8s ease-in-out infinite alternate !important; } .stkot { box-shadow: #ff5b00 0 0 5px; animation: AnimBanner 10s ease infinite, stkotGlow 3s ease-in-out infinite alternate !important; } .sponsor { box-shadow: #6a5acd 0 0 5px; animation: AnimBanner 10s ease infinite, slateblueGlow 3.5s ease-in-out infinite alternate !important; } .Gladmin, .ZGadmin { box-shadow: #5ade21 0 0 5px; animation: AnimBanner 10s ease infinite, brightgreenGlow 3s ease-in-out infinite alternate !important; } .legendary { box-shadow: blue 0 0 5px; animation: AnimBanner 10s ease infinite, legendaryGlow 2.8s ease-in-out infinite alternate !important; } .iceteam { box-shadow: #b870ff 0 0 5px; animation: AnimBanner 10s ease infinite, iceteamGlow 3s ease-in-out infinite alternate !important; } .pluxury { box-shadow: #ff6745 0 0 5px; animation: AnimBanner 10s ease infinite, pluxuryGlow 3.2s ease-in-out infinite alternate !important; } .furmangroup { box-shadow: #e785ff 0 0 5px; animation: AnimBanner 10s ease infinite, furmangroupGlow 3s ease-in-out infinite alternate !important; } .kasper { box-shadow: #ff3df9 0 0 5px; animation: AnimBanner 10s ease infinite, kasperGlow 2.8s ease-in-out infinite alternate !important; } .furmanvip { box-shadow: #458f51 0 0 5px; animation: AnimBanner 10s ease infinite, furmanvipGlow 3s ease-in-out infinite alternate !important; } .dagovsky { box-shadow: #992572 0 0 5px; animation: AnimBanner 10s ease infinite, dagovskyGlow 3.2s ease-in-out infinite alternate !important; } .wag { box-shadow: 0 2px 8px rgba(255,0,0,0.3); animation: wagnerShimmer 3s ease-in-out infinite, wagGlow 2s ease-in-out infinite alternate !important; } .userBanner--winstongroup { box-shadow: #7442c8 0 0 5px; animation: AnimBanner 5s ease infinite, winstonGlow 3s ease-in-out infinite alternate !important; } .userBanner--gosharespach { box-shadow: #f00 0 0 5px; animation: AnimBanner 10s ease infinite, goshaGlow 2.5s ease-in-out infinite alternate !important; } /* ÀÍÈÌÀÖÈÈ ÃËÎÓ (ìàêñ 10px) */ @keyframes bannerGlow { 0% { box-shadow: 0 0 5px rgba(255,255,255,0.3); } 100% { box-shadow: 0 0 10px rgba(255,255,255,0.6), 0 0 15px rgba(255,255,255,0.3); } } @keyframes staffGlow { 0% { box-shadow: 0 0 5px rgba(139,0,139,0.4); } 100% { box-shadow: 0 0 10px rgba(139,0,139,0.7), 0 0 15px rgba(0,191,255,0.5); } } @keyframes razrabGlow { 0% { box-shadow: #f819a7 0 0 5px; } 100% { box-shadow: #f819a7 0 0 10px, #4619f8 0 0 15px; } } @keyframes durovGlow { 0% { box-shadow: #a0522d 0 0 5px; } 100% { box-shadow: #a0522d 0 0 10px, #8b4513 0 0 15px; } } @keyframes blueGlow { 0% { box-shadow: #06f 0 0 5px; } 100% { box-shadow: #06f 0 0 10px, #00f 0 0 15px; } } @keyframes greenGlow { 0% { box-shadow: #49cc2c 0 0 5px; } 100% { box-shadow: #49cc2c 0 0 10px, #00ced1 0 0 15px; } } @keyframes redGlow { 0% { box-shadow: #8b0000 0 0 5px; } 100% { box-shadow: #8b0000 0 0 10px, #ff0000 0 0 15px; } } @keyframes redPulse { 0% { box-shadow: #f00 0 0 5px; } 100% { box-shadow: #f00 0 0 10px, #ff6b6b 0 0 15px; } } @keyframes grayGlow { 0% { box-shadow: #bcbbbb 0 0 5px; } 100% { box-shadow: #bcbbbb 0 0 10px, #ffffff 0 0 15px; } } @keyframes purpleGlow { 0% { box-shadow: #6e48aa 0 0 5px; } 100% { box-shadow: #6e48aa 0 0 10px, #9d50bb 0 0 15px; } } @keyframes cyanGlow { 0% { box-shadow: #80c3df 0 0 5px; } 100% { box-shadow: #80c3df 0 0 10px, #00ffff 0 0 15px; } } @keyframes greenPulse { 0% { box-shadow: #01a72c 0 0 5px; } 100% { box-shadow: #01a72c 0 0 10px, #32cd32 0 0 15px; } } @keyframes goldGlow { 0% { box-shadow: #feea10 0 0 5px; } 100% { box-shadow: #feea10 0 0 10px, #ffd700 0 0 15px; } } @keyframes limeGlow { 0% { box-shadow: #32cd32 0 0 5px; } 100% { box-shadow: #32cd32 0 0 10px, #7fff00 0 0 15px; } } @keyframes superRainbow { 0% { box-shadow: #feea10 0 0 5px; } 25% { box-shadow: #f819a7 0 0 10px; } 50% { box-shadow: #0859fc 0 0 10px; } 75% { box-shadow: #01a72c 0 0 10px; } 100% { box-shadow: #feea10 0 0 5px; } } @keyframes kurGlow { 0% { box-shadow: #497fff 0 0 5px; } 100% { box-shadow: #497fff 0 0 10px, #b0284d 0 0 15px; } } @keyframes blackPulse { 0% { box-shadow: #000 0 0 3px; } 100% { box-shadow: #000 0 0 8px, #333 0 0 12px; } } @keyframes oliveGlow { 0% { box-shadow: #6b8e23 0 0 5px; } 100% { box-shadow: #6b8e23 0 0 10px, #9acd32 0 0 15px; } } @keyframes orangeGlow { 0% { box-shadow: #ff4500 0 0 5px; } 100% { box-shadow: #ff4500 0 0 10px, #ff8c00 0 0 15px; } } @keyframes sandyGlow { 0% { box-shadow: #f4a460 0 0 5px; } 100% { box-shadow: #f4a460 0 0 10px, #d2691e 0 0 15px; } } @keyframes crimsonGlow { 0% { box-shadow: #dc143c 0 0 5px; } 100% { box-shadow: #dc143c 0 0 10px, #ff6b6b 0 0 15px; } } @keyframes silverGlow { 0% { box-shadow: #808080 0 0 5px; } 100% { box-shadow: #808080 0 0 10px, #c0c0c0 0 0 15px; } } @keyframes pinkGlow { 0% { box-shadow: #ff69b4 0 0 5px; } 100% { box-shadow: #ff69b4 0 0 10px, #ffb6c1 0 0 15px; } } @keyframes hotpinkGlow { 0% { box-shadow: #c71585 0 0 5px; } 100% { box-shadow: #c71585 0 0 10px, #ff1493 0 0 15px; } } @keyframes violetGlow { 0% { box-shadow: #9370db 0 0 5px; } 100% { box-shadow: #9370db 0 0 10px, #9932cc 0 0 15px; } } @keyframes magentaGlow { 0% { box-shadow: #d600c1 0 0 5px; } 100% { box-shadow: #d600c1 0 0 10px, #ff00ff 0 0 15px; } } @keyframes stkotGlow { 0% { box-shadow: #ff5b00 0 0 5px; } 100% { box-shadow: #ff5b00 0 0 10px, #007cad 0 0 15px; } } @keyframes slateblueGlow { 0% { box-shadow: #6a5acd 0 0 5px; } 100% { box-shadow: #6a5acd 0 0 10px, #8a2be2 0 0 15px; } } @keyframes brightgreenGlow { 0% { box-shadow: #5ade21 0 0 5px; } 100% { box-shadow: #5ade21 0 0 10px, #00ff00 0 0 15px; } } @keyframes legendaryGlow { 0% { box-shadow: blue 0 0 5px; } 100% { box-shadow: blue 0 0 10px, #00f 0 0 15px; } } @keyframes iceteamGlow { 0% { box-shadow: #b870ff 0 0 5px; } 100% { box-shadow: #b870ff 0 0 10px, #3d98ff 0 0 15px; } } @keyframes pluxuryGlow { 0% { box-shadow: #ff6745 0 0 5px; } 100% { box-shadow: #ff6745 0 0 10px, #ffe7ab 0 0 15px; } } @keyframes furmangroupGlow { 0% { box-shadow: #e785ff 0 0 5px; } 100% { box-shadow: #e785ff 0 0 10px, #ff69b4 0 0 15px; } } @keyframes kasperGlow { 0% { box-shadow: #ff3df9 0 0 5px; } 100% { box-shadow: #ff3df9 0 0 10px, #f819a7 0 0 15px; } } @keyframes furmanvipGlow { 0% { box-shadow: #458f51 0 0 5px; } 100% { box-shadow: #458f51 0 0 10px, #7f00ff 0 0 15px; } } @keyframes dagovskyGlow { 0% { box-shadow: #992572 0 0 5px; } 100% { box-shadow: #992572 0 0 10px, #d304d6 0 0 15px; } } @keyframes wagGlow { 0% { box-shadow: 0 2px 8px rgba(255,0,0,0.3); } 100% { box-shadow: 0 2px 10px rgba(255,0,0,0.6), 0 0 15px rgba(255,0,0,0.4); } } @keyframes winstonGlow { 0% { box-shadow: #7442c8 0 0 5px; } 100% { box-shadow: #7442c8 0 0 10px, #f0f 0 0 15px; } } @keyframes goshaGlow { 0% { box-shadow: #f00 0 0 5px; } 100% { box-shadow: #f00 0 0 10px, #00f 0 0 15px; } } /* ============================================= */ /* HOVER ÝÔÔÅÊÒÛ ÄËß ÁÀÍÍÅÐÎÂ */ /* ============================================= */ /* Îáùèå ñòèëè äëÿ âñåõ áàííåðîâ */ .userBanner, .venezuela, .userBanner.userBanner--staff, .userBanner--wagnersex, .userBanner--winstongroup, .userBanner--shontakers, .userBanner--gosharespach, .wag, .razrab, .durov, .stadm, .soskags, .VAFELKA, .kot, .soskazgs, .redadmin, .user, .sledfrac, .admin, .mlmoder, .stmod, .moder, .osnov, .ga, .osnovakp, .super, .lider, .kur, .zablok, .adm, .teh, .grand, .black, .sueta, .hassle, .lunar, .syvorov, .test, .melky, .project, .stkot, .sponsor, .spec, .osnovatel, .Gladmin, .ZGadmin, .rykproekta, .legendary, .iceteam, .pluxury, .furmangroup, .kasper, .furmanvip, .dagovsky, .respachegroup { display: inline-block; vertical-align: middle; margin: 1.2px 0.2px; position: relative; transition: transform 0.4s ease, box-shadow 0.4s ease, border-color 0.4s ease, filter 0.4s ease, text-shadow 0.4s ease; } /* Îáùèé hover ýôôåêò */ .userBanner:hover, .venezuela:hover, .userBanner.userBanner--staff:hover, .userBanner--wagnersex:hover, .userBanner--winstongroup:hover, .userBanner--shontakers:hover, .userBanner--gosharespach:hover, .wag:hover, .razrab:hover, .durov:hover, .stadm:hover, .soskags:hover, .VAFELKA:hover, .kot:hover, .soskazgs:hover, .redadmin:hover, .user:hover, .sledfrac:hover, .admin:hover, .mlmoder:hover, .stmod:hover, .moder:hover, .osnov:hover, .ga:hover, .osnovakp:hover, .super:hover, .lider:hover, .kur:hover, .zablok:hover, .adm:hover, .teh:hover, .grand:hover, .black:hover, .sueta:hover, .hassle:hover, .lunar:hover, .syvorov:hover, .test:hover, .melky:hover, .project:hover, .stkot:hover, .sponsor:hover, .spec:hover, .osnovatel:hover, .Gladmin:hover, .ZGadmin:hover, .rykproekta:hover, .legendary:hover, .iceteam:hover, .pluxury:hover, .furmangroup:hover, .kasper:hover, .furmanvip:hover, .dagovsky:hover, .respachegroup:hover { transform: translateY(-2px) scale(1.05); text-shadow: 0 0 6px currentColor; filter: brightness(1.1); } /* Âíóòðåííåå ñâå÷åíèå */ .userBanner::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; border-radius: inherit; background: radial-gradient(circle at center, rgba(255,255,255,0.08) 0%, transparent 70%); pointer-events: none; z-index: -1; } /* ============================================= */ /* ÈÍÄÈÂÈÄÓÀËÜÍÛÅ ÖÂÅÒÍÛÅ HOVER */ /* ============================================= */ .razrab:hover, .stmod:hover, .VAFELKA:hover, .syvorov:hover, .rykproekta:hover { box-shadow: #f819a7 0 0 15px, #4619f8 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(248, 25, 167, 0.6); } .durov:hover { box-shadow: #a0522d 0 0 15px, #8b4513 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(160, 82, 45, 0.6); } .stadm:hover, .soskazgs:hover, .sledfrac:hover, .osnovakp:hover { box-shadow: #06f 0 0 15px, #00f 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(0, 102, 255, 0.6); } .soskags:hover { box-shadow: #49cc2c 0 0 15px, #00ced1 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(73, 204, 44, 0.6); } .kot:hover, .spec:hover { box-shadow: #8b0000 0 0 15px, #ff0000 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(139, 0, 0, 0.6); } .redadmin:hover, .respachegroup:hover { box-shadow: #f00 0 0 20px, #ff6b6b 0 0 30px, 0 5px 25px rgba(0,0,0,0.4); border-color: rgba(255, 0, 0, 0.7); } .user:hover { box-shadow: #bcbbbb 0 0 15px, #ffffff 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(255, 255, 255, 0.5); } .admin:hover { box-shadow: #6e48aa 0 0 15px, #9d50bb 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(110, 72, 170, 0.6); } .mlmoder:hover { box-shadow: #80c3df 0 0 15px, #00ffff 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(128, 195, 223, 0.6); } .moder:hover { box-shadow: #01a72c 0 0 15px, #32cd32 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(1, 167, 44, 0.6); } .osnov:hover, .osnovatel:hover, .hassle:hover, .lider:hover { box-shadow: #feea10 0 0 15px, #ffd700 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(254, 234, 16, 0.6); } .ga:hover { box-shadow: #32cd32 0 0 15px, #7fff00 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(50, 205, 50, 0.6); } .super:hover { box-shadow: #feea10 0 0 15px, #f819a7 0 0 25px, #0859fc 0 0 35px, #01a72c 0 0 45px, 0 5px 30px rgba(0,0,0,0.5); border-color: rgba(255, 255, 255, 0.8); } .wag:hover { box-shadow: 0 2px 15px rgba(255,0,0,0.8), 0 0 30px rgba(255,0,0,0.6), 0 5px 20px rgba(0,0,0,0.4); border-color: rgba(255, 0, 0, 0.8); } /* Îñòàëüíûå èíäèâèäóàëüíûå hover-öâåòà îñòàþòñÿ áåç èçìåíåíèé ïî ôîðìå */ /* ============================================= */ /* Ïëàâíûé âîçâðàò ïîñëå hover */ /* ============================================= */ .userBanner, .venezuela, .userBanner.userBanner--staff, .userBanner--wagnersex, .userBanner--winstongroup, .userBanner--shontakers, .userBanner--gosharespach, .wag, .razrab, .durov, .stadm, .soskags, .VAFELKA, .kot, .soskazgs, .redadmin, .user, .sledfrac, .admin, .mlmoder, .stmod, .moder, .osnov, .ga, .osnovakp, .super, .lider, .kur, .zablok, .adm, .teh, .grand, .black, .sueta, .hassle, .lunar, .syvorov, .test, .melky, .project, .stkot, .sponsor, .spec, .osnovatel, .Gladmin, .ZGadmin, .rykproekta, .legendary, .iceteam, .pluxury, .furmangroup, .kasper, .furmanvip, .dagovsky, .respachegroup { transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94), box-shadow 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94), border-color 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94), filter 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94), text-shadow 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94); } /* ============================================= */ /* HOVER ÝÔÔÅÊÒÛ ÄËß ÁÀÍÍÅÐÎÂ */ /* ============================================= */ /* Îáùèå ñòèëè äëÿ âñåõ áàííåðîâ */ .userBanner, .venezuela, .userBanner.userBanner--staff, .userBanner--wagnersex, .userBanner--winstongroup, .userBanner--shontakers, .userBanner--gosharespach, .wag, .razrab, .durov, .stadm, .soskags, .VAFELKA, .kot, .soskazgs, .redadmin, .user, .sledfrac, .admin, .mlmoder, .stmod, .moder, .osnov, .ga, .osnovakp, .super, .lider, .kur, .zablok, .adm, .teh, .grand, .black, .sueta, .hassle, .lunar, .syvorov, .test, .melky, .project, .stkot, .sponsor, .spec, .osnovatel, .Gladmin, .ZGadmin, .rykproekta, .legendary, .iceteam, .pluxury, .furmangroup, .kasper, .furmanvip, .dagovsky, .respachegroup { display: inline-block; vertical-align: middle; margin: 1.2px 0.2px; position: relative; transition: transform 0.4s ease, box-shadow 0.4s ease, border-color 0.4s ease, filter 0.4s ease, text-shadow 0.4s ease; } /* Îáùèé hover ýôôåêò */ .userBanner:hover, .venezuela:hover, .userBanner.userBanner--staff:hover, .userBanner--wagnersex:hover, .userBanner--winstongroup:hover, .userBanner--shontakers:hover, .userBanner--gosharespach:hover, .wag:hover, .razrab:hover, .durov:hover, .stadm:hover, .soskags:hover, .VAFELKA:hover, .kot:hover, .soskazgs:hover, .redadmin:hover, .user:hover, .sledfrac:hover, .admin:hover, .mlmoder:hover, .stmod:hover, .moder:hover, .osnov:hover, .ga:hover, .osnovakp:hover, .super:hover, .lider:hover, .kur:hover, .zablok:hover, .adm:hover, .teh:hover, .grand:hover, .black:hover, .sueta:hover, .hassle:hover, .lunar:hover, .syvorov:hover, .test:hover, .melky:hover, .project:hover, .stkot:hover, .sponsor:hover, .spec:hover, .osnovatel:hover, .Gladmin:hover, .ZGadmin:hover, .rykproekta:hover, .legendary:hover, .iceteam:hover, .pluxury:hover, .furmangroup:hover, .kasper:hover, .furmanvip:hover, .dagovsky:hover, .respachegroup:hover { transform: translateY(-2px) scale(1.05); text-shadow: 0 0 6px currentColor; filter: brightness(1.1); } /* Âíóòðåííåå ñâå÷åíèå */ .userBanner::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; border-radius: inherit; background: radial-gradient(circle at center, rgba(255,255,255,0.08) 0%, transparent 70%); pointer-events: none; z-index: -1; } /* ============================================= */ /* ÈÍÄÈÂÈÄÓÀËÜÍÛÅ ÖÂÅÒÍÛÅ HOVER */ /* ============================================= */ .razrab:hover, .stmod:hover, .VAFELKA:hover, .syvorov:hover, .rykproekta:hover { box-shadow: #f819a7 0 0 15px, #4619f8 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(248, 25, 167, 0.6); } .durov:hover { box-shadow: #a0522d 0 0 15px, #8b4513 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(160, 82, 45, 0.6); } .stadm:hover, .soskazgs:hover, .sledfrac:hover, .osnovakp:hover { box-shadow: #06f 0 0 15px, #00f 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(0, 102, 255, 0.6); } .soskags:hover { box-shadow: #49cc2c 0 0 15px, #00ced1 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(73, 204, 44, 0.6); } .kot:hover, .spec:hover { box-shadow: #8b0000 0 0 15px, #ff0000 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(139, 0, 0, 0.6); } .redadmin:hover, .respachegroup:hover { box-shadow: #f00 0 0 20px, #ff6b6b 0 0 30px, 0 5px 25px rgba(0,0,0,0.4); border-color: rgba(255, 0, 0, 0.7); } .user:hover { box-shadow: #bcbbbb 0 0 15px, #ffffff 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(255, 255, 255, 0.5); } .admin:hover { box-shadow: #6e48aa 0 0 15px, #9d50bb 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(110, 72, 170, 0.6); } .mlmoder:hover { box-shadow: #80c3df 0 0 15px, #00ffff 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(128, 195, 223, 0.6); } .moder:hover { box-shadow: #01a72c 0 0 15px, #32cd32 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(1, 167, 44, 0.6); } .osnov:hover, .osnovatel:hover, .hassle:hover, .lider:hover { box-shadow: #feea10 0 0 15px, #ffd700 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(254, 234, 16, 0.6); } .ga:hover { box-shadow: #32cd32 0 0 15px, #7fff00 0 0 25px, 0 5px 20px rgba(0,0,0,0.3); border-color: rgba(50, 205, 50, 0.6); } .super:hover { box-shadow: #feea10 0 0 15px, #f819a7 0 0 25px, #0859fc 0 0 35px, #01a72c 0 0 45px, 0 5px 30px rgba(0,0,0,0.5); border-color: rgba(255, 255, 255, 0.8); } .wag:hover { box-shadow: 0 2px 15px rgba(255,0,0,0.8), 0 0 30px rgba(255,0,0,0.6), 0 5px 20px rgba(0,0,0,0.4); border-color: rgba(255, 0, 0, 0.8); } /* Îñòàëüíûå èíäèâèäóàëüíûå hover-öâåòà îñòàþòñÿ áåç èçìåíåíèé ïî ôîðìå */ /* ============================================= */ /* Ïëàâíûé âîçâðàò ïîñëå hover */ /* ============================================= */ .userBanner, .venezuela, .userBanner.userBanner--staff, .userBanner--wagnersex, .userBanner--winstongroup, .userBanner--shontakers, .userBanner--gosharespach, .wag, .razrab, .durov, .stadm, .soskags, .VAFELKA, .kot, .soskazgs, .redadmin, .user, .sledfrac, .admin, .mlmoder, .stmod, .moder, .osnov, .ga, .osnovakp, .super, .lider, .kur, .zablok, .adm, .teh, .grand, .black, .sueta, .hassle, .lunar, .syvorov, .test, .melky, .project, .stkot, .sponsor, .spec, .osnovatel, .Gladmin, .ZGadmin, .rykproekta, .legendary, .iceteam, .pluxury, .furmangroup, .kasper, .furmanvip, .dagovsky, .respachegroup { transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94), box-shadow 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94), border-color 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94), filter 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94), text-shadow 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94); } .p-body, .p-pageWrapper { animation: xfFadeIn 0.7s ease-out; } @keyframes xfFadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } .username { position: relative; cursor: pointer; font-weight: 500; color: #e5e7eb; /* ñâåòëî-ñåðûé */ transition: color .25s ease, transform .15s ease; } /* ïîä÷¸ðêèâàíèå */ .username::after { content: ""; position: absolute; left: 0; bottom: -2px; width: 100%; height: 2px; background: linear-gradient(90deg, #C0C0C0); transform: scaleX(0); transform-origin: left; transition: transform .25s ease; border-radius: 2px; } .username:hover { color: #C0C0C0; } .username:hover::after { transform: scaleX(1); } .username:active { transform: scale(0.96); } .node.node-forum { transition: all 0.3s ease; padding: 15px; margin-bottom: 10px; } .node.node-forum:hover { box-shadow: 0 0px 12px #ffb82b; transform: translateY(-3px); } /* Aur Guilds — êîìïàêòíûé âèä â ïîñòàõ */ .message-userDetails .aur-guilds, .message-userDetails .aur-guild { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; } /* Ïëàøêè */ .message-userDetails .aur-guild .label, .message-userDetails .aur-guild .badge { display: inline-flex; align-items: center; min-height: 20px; padding: 2px 6px; font-size: 11px; line-height: 1.2; border-radius: 4px; margin: 0; white-space: nowrap; } ]]>
</template>
<template title="extra_footer" type="public" addon_id="" version_id="0" version_string="">
<![CDATA[ <div class="pre-footer"> <div class="pre-footer-inner"> <div class="pre-footer--container"> <div class="pre-footer--column"> <xf:if is="property('dt_extra_footer_first_column') == 'option1'"> <xf:widget key="forum_overview_members_online" /> <xf:elseif is="property('dt_extra_footer_first_column') == 'option2'" /> <xf:widget key="forum_overview_forum_statistics" /> <xf:elseif is="property('dt_extra_footer_first_column') == 'option3'" /> <xf:widget key="forum_overview_share_page" /> <xf:elseif is="property('dt_extra_footer_first_column') == 'option4'" /> <xf:widget key="online_list_online_statistics" /> <xf:elseif is="property('dt_extra_footer_first_column') == 'option5'" /> <xf:widget key="forum_overview_new_profile_posts" /> <xf:elseif is="property('dt_extra_footer_first_column') == 'option6'" /> <xf:widget key="forum_overview_new_posts" /> <xf:elseif is="property('dt_extra_footer_first_column') == 'option7'" /> <xf:widget key="member_wrapper_newest_members" /> <xf:elseif is="property('dt_extra_footer_first_column') == 'option8'" /> <div class="pre-footer--content -social"> <h3>{{ property('dt_extra_footer_social_title') }}</h3> <ul class="social__icons"> <xf:if is="property('dt_extra_footer_facebook')"><li><a href="https://www.facebook.com/{{ property('dt_extra_footer_facebook') }}" target="_blank" class="-facebook"><xf:fa icon="fa-facebook-f" /><i class="fab fa-facebook"></i></a></li></xf:if> <xf:if is="property('dt_extra_footer_twitter')"><li><a href="https://twitter.com/{{ property('dt_extra_footer_twitter') }}" target="_blank" class="-twitter"><i class="fab fa-twitter"></i></a></li></xf:if> <xf:if is="property('dt_extra_footer_instagram')"><li><a href="https://instagram.com/{{ property('dt_extra_footer_instagram') }}" target="_blank" class="-instagram"><i class="fab fa-instagram"></i></a></li></xf:if> <xf:if is="property('dt_extra_footer_youtube')"><li><a href="http://www.youtube.com/c/{{ property('dt_extra_footer_youtube') }}" target="_blank" class="-youtube"><i class="fab fa-youtube"></i></a></li></xf:if> </ul> </div> <xf:elseif is="property('dt_extra_footer_first_column') == 'option9'" /> <div class="pre-footer--content"> <h3>{{ property('dt_extra_footer_custom_html_title') }}</h3> <div class="pre-footer-html--content"> {{ property('dt_extra_footer_custom_html') }} </div> </div> <xf:elseif is="property('dt_extra_footer_first_column') == 'option10'" /> <div class="pre-footer--content -links"> <h3>{{ property('dt_extra_footer_link_1_title') }}</h3> <ul class="pre-footer--links"> {{ property('dt_extra_footer_link_1') }} </ul> </div> <xf:elseif is="property('dt_extra_footer_first_column') == 'option11'" /> <div class="pre-footer--content -links"> <h3>{{ property('dt_extra_footer_link_2_title') }}</h3> <ul class="pre-footer--links"> {{ property('dt_extra_footer_link_2') }} </ul> </div> </xf:if> </div> <div class="pre-footer--column"> <xf:if is="property('dt_extra_footer_second_column') == 'option1'"> <xf:widget key="forum_overview_members_online" /> <xf:elseif is="property('dt_extra_footer_second_column') == 'option2'" /> <xf:widget key="forum_overview_forum_statistics" /> <xf:elseif is="property('dt_extra_footer_second_column') == 'option3'" /> <xf:widget key="forum_overview_share_page" /> <xf:elseif is="property('dt_extra_footer_second_column') == 'option4'" /> <xf:widget key="online_list_online_statistics" /> <xf:elseif is="property('dt_extra_footer_second_column') == 'option5'" /> <xf:widget key="forum_overview_new_profile_posts" /> <xf:elseif is="property('dt_extra_footer_second_column') == 'option6'" /> <xf:widget key="forum_overview_new_posts" /> <xf:elseif is="property('dt_extra_footer_second_column') == 'option7'" /> <xf:widget key="member_wrapper_newest_members" /> <xf:elseif is="property('dt_extra_footer_second_column') == 'option8'" /> <div class="pre-footer--content -social"> <h3>{{ property('dt_extra_footer_social_title') }}</h3> <ul class="social__icons"> <xf:if is="property('dt_extra_footer_facebook')"><li><a href="https://www.facebook.com/{{ property('dt_extra_footer_facebook') }}" target="_blank" class="-facebook"><i class="fab fa-facebook-f"></i></a></li></xf:if> <xf:if is="property('dt_extra_footer_twitter')"><li><a href="https://twitter.com/{{ property('dt_extra_footer_twitter') }}" target="_blank" class="-twitter"><i class="fab fa-twitter"></i></a></li></xf:if> <xf:if is="property('dt_extra_footer_instagram')"><li><a href="https://instagram.com/{{ property('dt_extra_footer_instagram') }}" target="_blank" class="-instagram"><i class="fab fa-instagram"></i></a></li></xf:if> <xf:if is="property('dt_extra_footer_youtube')"><li><a href="http://www.youtube.com/c/{{ property('dt_extra_footer_youtube') }}" target="_blank" class="-youtube"><i class="fab fa-youtube"></i></a></li></xf:if> </ul> </div> <xf:elseif is="property('dt_extra_footer_second_column') == 'option9'" /> <div class="pre-footer--content"> <h3>{{ property('dt_extra_footer_custom_html_title') }}</h3> <div class="pre-footer-html--content"> {{ property('dt_extra_footer_custom_html') }} </div> </div> <xf:elseif is="property('dt_extra_footer_second_column') == 'option10'" /> <div class="pre-footer--content -links"> <h3>{{ property('dt_extra_footer_link_1_title') }}</h3> <ul class="pre-footer--links"> {{ property('dt_extra_footer_link_1') }} </ul> </div> <xf:elseif is="property('dt_extra_footer_second_column') == 'option11'" /> <div class="pre-footer--content -links"> <h3>{{ property('dt_extra_footer_link_2_title') }}</h3> <ul class="pre-footer--links"> {{ property('dt_extra_footer_link_2') }} </ul> </div> </xf:if> </div> <div class="pre-footer--column"> <xf:if is="property('dt_extra_footer_third_column') == 'option1'"> <xf:widget key="forum_overview_members_online" /> <xf:elseif is="property('dt_extra_footer_third_column') == 'option2'" /> <xf:widget key="forum_overview_forum_statistics" /> <xf:elseif is="property('dt_extra_footer_third_column') == 'option3'" /> <xf:widget key="forum_overview_share_page" /> <xf:elseif is="property('dt_extra_footer_third_column') == 'option4'" /> <xf:widget key="online_list_online_statistics" /> <xf:elseif is="property('dt_extra_footer_third_column') == 'option5'" /> <xf:widget key="forum_overview_new_profile_posts" /> <xf:elseif is="property('dt_extra_footer_third_column') == 'option6'" /> <xf:widget key="forum_overview_new_posts" /> <xf:elseif is="property('dt_extra_footer_third_column') == 'option7'" /> <xf:widget key="member_wrapper_newest_members" /> <xf:elseif is="property('dt_extra_footer_third_column') == 'option8'" /> <div class="pre-footer--content -social"> <h3>{{ property('dt_extra_footer_social_title') }}</h3> <ul class="social__icons"> <xf:if is="property('dt_extra_footer_facebook')"><li><a href="https://www.facebook.com/{{ property('dt_extra_footer_facebook') }}" target="_blank" class="-facebook"><i class="fab fa-facebook-f"></i></a></li></xf:if> <xf:if is="property('dt_extra_footer_twitter')"><li><a href="https://twitter.com/{{ property('dt_extra_footer_twitter') }}" target="_blank" class="-twitter"><i class="fab fa-twitter"></i></a></li></xf:if> <xf:if is="property('dt_extra_footer_instagram')"><li><a href="https://instagram.com/{{ property('dt_extra_footer_instagram') }}" target="_blank" class="-instagram"><i class="fab fa-instagram"></i></a></li></xf:if> <xf:if is="property('dt_extra_footer_youtube')"><li><a href="http://www.youtube.com/c/{{ property('dt_extra_footer_youtube') }}" target="_blank" class="-youtube"><i class="fab fa-youtube"></i></a></li></xf:if> </ul> </div> <xf:elseif is="property('dt_extra_footer_third_column') == 'option9'" /> <div class="pre-footer--content"> <h3>{{ property('dt_extra_footer_custom_html_title') }}</h3> <div class="pre-footer-html--content"> {{ property('dt_extra_footer_custom_html') }} </div> </div> <xf:elseif is="property('dt_extra_footer_third_column') == 'option10'" /> <div class="pre-footer--content -links"> <h3>{{ property('dt_extra_footer_link_1_title') }}</h3> <ul class="pre-footer--links"> {{ property('dt_extra_footer_link_1') }} </ul> </div> <xf:elseif is="property('dt_extra_footer_third_column') == 'option11'" /> <div class="pre-footer--content -links"> <h3>{{ property('dt_extra_footer_link_2_title') }}</h3> <ul class="pre-footer--links"> {{ property('dt_extra_footer_link_2') }} </ul> </div> </xf:if> </div> <div class="pre-footer--column"> <xf:if is="property('dt_extra_footer_fourth_column') == 'option1'"> <xf:widget key="forum_overview_members_online" /> <xf:elseif is="property('dt_extra_footer_fourth_column') == 'option2'" /> <xf:widget key="forum_overview_forum_statistics" /> <xf:elseif is="property('dt_extra_footer_fourth_column') == 'option3'" /> <xf:widget key="forum_overview_share_page" /> <xf:elseif is="property('dt_extra_footer_fourth_column') == 'option4'" /> <xf:widget key="online_list_online_statistics" /> <xf:elseif is="property('dt_extra_footer_fourth_column') == 'option5'" /> <xf:widget key="forum_overview_new_profile_posts" /> <xf:elseif is="property('dt_extra_footer_fourth_column') == 'option6'" /> <xf:widget key="forum_overview_new_posts" /> <xf:elseif is="property('dt_extra_footer_fourth_column') == 'option7'" /> <xf:widget key="member_wrapper_newest_members" /> <xf:elseif is="property('dt_extra_footer_fourth_column') == 'option8'" /> <div class="pre-footer--content -social"> <h3>{{ property('dt_extra_footer_social_title') }}</h3> <ul class="social__icons"> <xf:if is="property('dt_extra_footer_facebook')"><li><a href="https://www.facebook.com/{{ property('dt_extra_footer_facebook') }}" target="_blank" class="-facebook"><i class="fab fa-facebook-f"></i></a></li></xf:if> <xf:if is="property('dt_extra_footer_twitter')"><li><a href="https://twitter.com/{{ property('dt_extra_footer_twitter') }}" target="_blank" class="-twitter"><i class="fab fa-twitter"></i></a></li></xf:if> <xf:if is="property('dt_extra_footer_instagram')"><li><a href="https://instagram.com/{{ property('dt_extra_footer_instagram') }}" target="_blank" class="-instagram"><i class="fab fa-instagram"></i></a></li></xf:if> <xf:if is="property('dt_extra_footer_youtube')"><li><a href="http://www.youtube.com/c/{{ property('dt_extra_footer_youtube') }}" target="_blank" class="-youtube"><i class="fab fa-youtube"></i></a></li></xf:if> </ul> </div> <xf:elseif is="property('dt_extra_footer_fourth_column') == 'option9'" /> <div class="pre-footer--content"> <h3>{{ property('dt_extra_footer_custom_html_title') }}</h3> <div class="pre-footer-html--content"> {{ property('dt_extra_footer_custom_html') }} </div> </div> <xf:elseif is="property('dt_extra_footer_fourth_column') == 'option10'" /> <div class="pre-footer--content -links"> <h3>{{ property('dt_extra_footer_link_1_title') }}</h3> <ul class="pre-footer--links"> {{ property('dt_extra_footer_link_1') }} </ul> </div> <xf:elseif is="property('dt_extra_footer_fourth_column') == 'option11'" /> <div class="pre-footer--content -links"> <h3>{{ property('dt_extra_footer_link_2_title') }}</h3> <ul class="pre-footer--links"> {{ property('dt_extra_footer_link_2') }} </ul> </div> </xf:if> </div> </div> </div> </div> ]]>
</template>
<template title="forum_view" type="public" addon_id="XF" version_id="2021370" version_string="2.2.13">
<![CDATA[ <xf:title page="{$page}">{$forum.Node.title}</xf:title> <xf:description>{$forum.Node.description|raw}</xf:description> <xf:css src="structured_list.less" /> <xf:if is="!$forum.isSearchEngineIndexable()"> <xf:head option="metaNoindex"><meta name="robots" content="noindex" /></xf:head> </xf:if> <xf:macro template="metadata_macros" name="canonical_url" arg-canonicalUrl="{{ link('canonical:forums', $forum, $canonicalFilters + {'page': $page}) }}" /> <xf:head option="rss_forum"><link rel="alternate" type="application/rss+xml" title="{{ phrase('rss_feed_for_x', {'title': $forum.title})|for_attr }}" href="{{ link('forums/index.rss', $forum) }}" /></xf:head> <xf:macro template="forum_macros" name="forum_page_options" arg-forum="{$forum}" /> <xf:breadcrumb source="$forum.getBreadcrumbs(false)" /> <xf:pageaction if="$forum.canCreateThread() OR $forum.canCreateThreadPreReg()"> <xf:button href="{{ link('forums/post-thread', $forum) }}" class="button--cta" icon="write" rel="nofollow"> {{ phrase('post_thread') }} </xf:button> </xf:pageaction> <xf:if is="$pendingApproval"> <div class="blockMessage blockMessage--important">{{ phrase('content_submitted_displayed_pending_approval') }}</div> </xf:if> <xf:extension name="above_node_list"></xf:extension> <xf:if is="$nodeTree"> <xf:ad position="forum_view_above_node_list" arg-forum="{$forum}" /> <div class="block"> <div class="block-container"> <div class="block-body"> <xf:macro template="forum_list" name="node_list" arg-children="{$nodeTree}" arg-extras="{$nodeExtras}" arg-depth="2" /> </div> </div> </div> <xf:ad position="forum_view_below_node_list" arg-forum="{$forum}" /> </xf:if> <xf:if is="$canInlineMod"> <xf:js src="xf/inline_mod.js" min="1" /> </xf:if> <xf:extension name="above_thread_list"></xf:extension> <xf:ad position="forum_view_above_thread_list" arg-forum="{$forum}" /> <xf:extension name="thread_list_block_classes" value="" /> <div class="block {{ extension_value('thread_list_block_classes') }}" data-xf-init="{{ $canInlineMod ? 'inline-mod' : '' }}" data-type="thread" data-href="{{ link('inline-mod') }}"> <div class="block-outer"><xf:trim> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$total}" link="forums" data="{$forum}" params="{$filters}" wrapperclass="block-outer-main" /> </xf:trim></div> <div class="block-container block-container--discussion"> <xf:extension name="thread_list_header"> <div class="block-filterBar"> <xf:if contentcheck="true"> <div class="block-outer-opposite"> <div class="buttonGroup"> <xf:contentcheck> <xf:if is="$canInlineMod"> <xf:macro template="inline_mod_macros" name="button" /> </xf:if> <xf:if is="$xf.visitor.user_id"> <xf:button href="{{ link('forums/mark-read', $forum, {'date': $xf.time}) }}" class="button--link" overlay="true"> {{ phrase('mark_read') }} </xf:button> </xf:if> <xf:if is="$forum.canWatch()"> <xf:button href="{{ link('forums/watch', $forum) }}" class="button--link" data-xf-click="switch-overlay" data-sk-watch="{{ phrase('watch') }}" data-sk-unwatch="{{ phrase('unwatch') }}"> <xf:if is="{$forum.Watch.{$xf.visitor.user_id}}">{{ phrase('unwatch') }}<xf:else />{{ phrase('watch') }}</xf:if> </xf:button> </xf:if> </xf:contentcheck> </div> </div> </xf:if> <div class="filterBar"> <xf:if contentcheck="true"> <ul class="filterBar-filters"> <xf:contentcheck> <xf:extension name="filters"> <xf:macro name="filters" arg-forum="{$forum}" arg-filters="{$filters}" arg-starterFilter="{$starterFilter}" arg-threadTypeFilter="{$threadTypeFilter}" /> </xf:extension> </xf:contentcheck> </ul> </xf:if> <a class="filterBar-menuTrigger" data-xf-click="menu" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">{{ phrase('filters') }}</a> <div class="menu menu--wide" data-menu="menu" aria-hidden="true" data-href="{{ link('forums/filters', $forum, $filters) }}" data-load-target=".js-filterMenuBody"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('show_only:') }}</h4> <div class="js-filterMenuBody"> <div class="menu-row">{{ phrase('loading...') }}</div> </div> </div> </div> </div> </div> </xf:extension> <xf:set var="$qtPos">{{ ($sortInfo.order == 'last_post_date' && $sortInfo.direction == 'asc') ? 'bottom' : 'top' }}</xf:set> <div class="block-body"> <xf:extension name="thread_list"> <div class="structItemContainer"> <xf:macro name="{{ $templateOverrides.quick_thread_macro ?: 'thread_list_macros::quick_thread' }}" arg-forum="{$forum}" arg-page="{$page}" arg-order="{$sortInfo.order}" arg-direction="{$sortInfo.direction}" arg-prefixes="{$quickThreadPrefixes}" args="{$templateOverrides.quick_thread_macro_args}" /> <xf:if is="property('dt_disc_minor_header')"> <div class="discu-minorHeader"> <span class="discu-minorHeader--main">{{ phrase('title') }}</span> <span class="discu-minorHeader--stats">{{ phrase('replies') }}</span> <span class="discu-minorHeader--stats">{{ phrase('views') }}</span> <xf:if is="property('dt_reactions_column')"> <span class="discu-minorHeader--stats">{{ phrase('reactions') }}</span> </xf:if> <span class="discu-minorHeader--last">{{ phrase('latest') }}</span> </div> </xf:if> <xf:if is="$stickyThreads is not empty OR $threads is not empty"> <xf:if is="$stickyThreads is not empty"> <div class="stickyItemContainer stickyItemContainer-sticky"> <xf:if is="{{ property('dt_seperate_sticky_threads') }}"> <h3 class="block-minorHeader block-stickyHeader"> {{ phrase('sticky') }} <xf:if is="{{ property('dt_collaps_sticky_threads') }}"> <span id="collapse-{$forum.node_id}" class="collapseTrigger {{ !is_toggled('_dtstthr-' . $forum.node_id) ? ' is-active' : '' }}" title="Toggle Visibilty" data-xf-click="toggle" data-xf-init="toggle-storage" data-storage-type="cookie" data-target=".structItemContainer-group--sticky" data-storage-key="_dtstthr-{$forum.node_id}"> </span> </xf:if> </h3> </xf:if> <div class="structItemContainer-group structItemContainer-group--sticky {{ !is_toggled('_dtstthr-' . $forum.node_id) ? ' is-active' : '' }}"> <xf:foreach loop="$stickyThreads" value="$thread"> <xf:macro template="thread_list_macros" name="item" arg-thread="{$thread}" arg-forum="{$forum}" /> </xf:foreach> </div> </div> <xf:if is="property('dt_seperate_sticky_threads')"> <xf:if is="{$stickyThreads}"> <h3 class="block-minorHeader block-stickyHeader"> {{ phrase('threads') }} </h3> </xf:if> </xf:if> <xf:ad position="forum_view_below_stickies" arg-forum="{$forum}" /> </xf:if> <div class="structItemContainer-group js-threadList"> <xf:if is="$threads is not empty"> <xf:foreach loop="$threads" value="$thread"> <xf:macro name="{{ $templateOverrides.thread_list_macro ?: 'thread_list_macros::item' }}" arg-thread="{$thread}" arg-forum="{$forum}" args="{$templateOverrides.thread_list_macro_args}" /> </xf:foreach> <xf:if is="$showDateLimitDisabler"> <xf:macro name="date_limit_disabler" arg-forum="{$forum}" arg-page="{$page}" arg-filters="{$filters}" /> </xf:if> </xf:if> </div> <xf:elseif is="$filters" /> <div class="structItemContainer-group js-threadList"> <div class="structItem js-emptyThreadList"> <div class="structItem-cell">{{ phrase('there_no_threads_matching_your_filters') }}</div> </div> <xf:if is="$showDateLimitDisabler"> <xf:macro name="date_limit_disabler" arg-forum="{$forum}" arg-page="{$page}" arg-filters="{$filters}" /> </xf:if> </div> <xf:else /> <div class="structItemContainer-group js-threadList"> <xf:if is="$showDateLimitDisabler"> <div class="structItem js-emptyThreadList"> <div class="structItem-cell">{{ phrase('there_no_threads_to_display') }}</div> </div> <xf:macro name="date_limit_disabler" arg-forum="{$forum}" arg-page="{$page}" arg-filters="{$filters}" /> <xf:else /> <div class="structItem js-emptyThreadList"> <div class="structItem-cell">{{ phrase('there_no_threads_in_this_forum') }}</div> </div> </xf:if> </div> </xf:if> </div> </xf:extension> </div> </div> <div class="block-outer block-outer--after"> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$total}" link="forums" data="{$forum}" params="{$filters}" wrapperclass="block-outer-main" /> <xf:showignored wrapperclass="block-outer-opposite" /> <xf:if is="!$forum.canCreateThread() AND !$forum.canCreateThreadPreReg()"> <div class="block-outer-opposite"> <xf:if is="$xf.visitor.user_id"> <span class="button button--wrap is-disabled"> {{ phrase('no_permission_to_post') }} <!-- this is not interactive so shouldn't be a button element --> </span> <xf:else /> <xf:button href="{{ link('login') }}" class="button--link button--wrap" overlay="true"> {{ phrase('log_in_or_register_to_post') }} </xf:button> </xf:if> </div> </xf:if> </div> </div> <xf:ad position="forum_view_below_thread_list" arg-forum="{$forum}" /> <xf:extension name="below_thread_list"></xf:extension> <xf:widgetpos id="forum_view_sidebar" context-forum="{$forum}" position="sidebar" /> <xf:macro name="filters" arg-forum="!" arg-filters="!" arg-starterFilter="{{ null }}" arg-threadTypeFilter="{{ null }}"> <xf:set var="$dateLimits" value="{{ { '-1': phrase('any_time'), '7': phrase('x_days', {'days': '7'}), '14': phrase('x_days', {'days': '14'}), '30': phrase('x_days', {'days': '30'}), '60': phrase('x_months', {'months': '2'}), '90': phrase('x_months', {'months': '3'}), '182': phrase('x_months', {'months': '6'}), '365': phrase('1_year') } }}" /> <xf:extension name="start"></xf:extension> <xf:extension name="prefix_id"> <xf:if is="$filters.prefix_id"> <li><a href="{{ link('forums', $forum, $filters|replace('prefix_id', null)) }}" class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}"> <span class="filterBar-filterToggle-label">{{ phrase('prefix:') }}</span> {{ prefix_title('thread', $filters.prefix_id) }}</a></li> </xf:if> </xf:extension> <xf:extension name="starter_id"> <xf:if is="$filters.starter_id AND $starterFilter"> <li><a href="{{ link('forums', $forum, $filters|replace('starter_id', null)) }}" class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}"> <span class="filterBar-filterToggle-label">{{ phrase('started_by:') }}</span> {$starterFilter.username}</a></li> </xf:if> </xf:extension> <xf:extension name="thread_type"> <xf:if is="$filters.thread_type && $threadTypeFilter"> <li><a href="{{ link('forums', $forum, $filters|replace('thread_type', null)) }}" class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}"> <span class="filterBar-filterToggle-label">{{ phrase('thread_type_filter:') }}</span> {{ $threadTypeFilter.getTypeTitle() }}</a></li> </xf:if> </xf:extension> <xf:extension name="last_days"> <xf:if is="$filters.last_days AND {$dateLimits.{$filters.last_days}}"> <li><a href="{{ link('forums', $forum, $filters|replace('last_days', null)) }}" class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('remove_this_filter')|for_attr }}"> <span class="filterBar-filterToggle-label">{{ phrase('last_updated:') }}</span> {$dateLimits.{$filters.last_days}}</a></li> </xf:if> </xf:extension> <xf:extension name="order"> <xf:if is="$filters.order"> <li><a href="{{ link('forums', $forum, $filters|replace({'order': null, 'direction': null})) }}" class="filterBar-filterToggle" data-xf-init="tooltip" title="{{ phrase('return_to_default_order')|for_attr }}"> <span class="filterBar-filterToggle-label">{{ phrase('sort_by:') }}</span> {{ phrase_dynamic('forum_sort.' . $filters.order) }} <xf:fa icon="{{ $filters.direction == 'asc' ? 'fa-angle-up' : 'fa-angle-down' }}" /> <span class="u-srOnly"><xf:if is="$filters.direction == 'asc'">{{ phrase('ascending') }}<xf:else />{{ phrase('descending') }}</xf:if></span> </a></li> </xf:if> </xf:extension> <xf:extension name="end"></xf:extension> </xf:macro> <xf:macro name="date_limit_disabler" arg-forum="!" arg-page="!" arg-filters="!"> <div class="structItem structItem--note"> <div class="structItem-cell"> <a href="{{ link('forums', $forum, {'page': $page, 'no_date_limit': 1} + $filters) }}"> {{ phrase('show_older_items') }} </a> </div> </div> </xf:macro> ]]>
</template>
<template title="help_index" type="public" addon_id="XF" version_id="2021370" version_string="2.2.13">
<![CDATA[ <xf:title>{{ phrase('help') }}</xf:title> <xf:macro template="metadata_macros" name="canonical_url" arg-canonicalUrl="{{ link('canonical:help') }}" /> <xf:wrap template="help_wrapper" /> <xf:if is="$pages is not empty"> <div class="block"> <div class="block-container"> <div class="block-body"> <xf:foreach loop="$pages" value="$page"> <xf:if is="($page.page_id == 'trophies' AND $xf.options.enableTrophies) OR $page.page_id != 'trophies'"> <div class="block-row block-row--separated"> <h3 class="block-textHeader"> <a href="{$page.public_url}">{$page.title}</a> </h3> {$page.description} </div> </xf:if> </xf:foreach> </div> </div> </div> <xf:else /> <div class="blockMessage">{{ phrase('no_items_have_been_created_yet') }}</div> </xf:if> ]]>
</template>
<template title="helper_js_global" type="public" addon_id="XF" version_id="2021270" version_string="2.2.12">
<![CDATA[ <xf:macro name="head" arg-app="!"> <xf:set var="$cssUrls" value="{{ ['public:normalize.css', 'public:fa.css', 'public:core.less', $app . ':app.less'] }}" /> <xf:include template="font_awesome_setup" /> <link rel="stylesheet" href="{{ css_url($cssUrls) }}" /> <xf:if is="property('dt_google_font')"> <link rel="preconnect" href="https://fonts.gstatic.com"> <link href="https://fonts.googleapis.com/css2?family={{ property('dt_google_font') }}&display=swap" rel="stylesheet"> </xf:if> <!--XF:CSS--> <xf:if is="$xf.fullJs"> <script src="{{ js_url('xf/preamble.js') }}"></script> <xf:else /> <script src="{{ js_url('xf/preamble.min.js') }}"></script> </xf:if> </xf:macro> <xf:macro name="body" arg-app="!" arg-jsState="{{ null }}"> <xf:corejs /> <!--XF:JS--> <script> jQuery.extend(true, XF.config, { // <!--[XF:js_global:xf_extend_start]--> userId: {$xf.visitor.user_id}, enablePush: {{ $xf.options.enablePush ? 'true' : 'false' }}, pushAppServerKey: '{$xf.options.pushKeysVAPID.publicKey}', url: { fullBase: '{{ base_url(null, true)|escape("js") }}', basePath: '{{ base_url(null, false)|escape("js") }}', css: '{{ css_url(["__SENTINEL__"], false)|escape("js") }}', keepAlive: '{{ link_type($app, "login/keep-alive")|escape("js") }}' }, cookie: { path: '{{ $xf.cookie.path|escape("js") }}', domain: '{{ $xf.cookie.domain|escape("js") }}', prefix: '{{ $xf.cookie.prefix|escape("js") }}', secure: {{ $xf.cookie.secure ? 'true' : 'false' }}, consentMode: '{{ $xf.cookieConsent.getMode() }}', consented: {{ $xf.cookieConsent.getConsentedGroups()|json|raw }} }, cacheKey: '{{ cache_key()|escape("js") }}', csrf: '{{ csrf_token()|escape("js") }}', js: {'<!--XF:JS:JSON-->'}, css: {'<!--XF:CSS:JSON-->'}, time: { now: {$xf.time}, today: {$xf.timeDetails.today}, todayDow: {$xf.timeDetails.todayDow}, tomorrow: {$xf.timeDetails.tomorrow}, yesterday: {$xf.timeDetails.yesterday}, week: {$xf.timeDetails.week} }, borderSizeFeature: '{{ property('borderSizeFeature') }}', fontAwesomeWeight: '{{ fa_weight() }}', enableRtnProtect: {{ $xf.enableRtnProtect ? 'true' : 'false' }}, <xf:if is="$xf.serviceWorkerPath !== null"> serviceWorkerPath: '{{ $xf.serviceWorkerPath|escape("js") }}', </xf:if> enableFormSubmitSticky: {{ property('formSubmitSticky') ? 'true' : 'false' }}, uploadMaxFilesize: {$xf.uploadMaxFilesize}, allowedVideoExtensions: {$xf.allowedVideoExtensions|json|raw}, allowedAudioExtensions: {$xf.allowedAudioExtensions|json|raw}, shortcodeToEmoji: {{ $xf.options.shortcodeToEmoji ? 'true' : 'false' }}, visitorCounts: { conversations_unread: '{$xf.visitor.conversations_unread|number}', alerts_unviewed: '{$xf.visitor.alerts_unviewed|number}', total_unread: '{{ ($xf.visitor.conversations_unread + $xf.visitor.alerts_unviewed)|number }}', title_count: {{ in_array($xf.options.displayVisitorCount, ['title_count', 'title_and_icon']) ? 'true' : 'false' }}, icon_indicator: {{ in_array($xf.options.displayVisitorCount, ['icon_indicator', 'title_and_icon']) ? 'true' : 'false' }} }, jsState: {{ $jsState ? $jsState|json|raw : '{}' }}, publicMetadataLogoUrl: '{{ property('publicMetadataLogoUrl') ? base_url(property('publicMetadataLogoUrl'), true) : '' }}', publicPushBadgeUrl: '{{ property('publicPushBadgeUrl') ? base_url(property('publicPushBadgeUrl'), true) : '' }}' }); jQuery.extend(XF.phrases, { // <!--[XF:js_global:xf_phrase_start]--> date_x_at_time_y: "{{ phrase('date_x_at_time_y')|escape('js') }}", day_x_at_time_y: "{{ phrase('day_x_at_time_y')|escape('js') }}", yesterday_at_x: "{{ phrase('yesterday_at_x')|escape('js') }}", x_minutes_ago: "{{ phrase('x_minutes_ago')|escape('js') }}", one_minute_ago: "{{ phrase('one_minute_ago')|escape('js') }}", a_moment_ago: "{{ phrase('a_moment_ago')|escape('js') }}", today_at_x: "{{ phrase('today_at_x')|escape('js') }}", in_a_moment: "{{ phrase('in_a_moment')|escape('js') }}", in_a_minute: "{{ phrase('in_a_minute')|escape('js') }}", in_x_minutes: "{{ phrase('in_x_minutes')|escape('js') }}", later_today_at_x: "{{ phrase('later_today_at_x')|escape('js') }}", tomorrow_at_x: "{{ phrase('tomorrow_at_x')|escape('js') }}", day0: "{{ phrase('day_sunday')|escape('js') }}", day1: "{{ phrase('day_monday')|escape('js') }}", day2: "{{ phrase('day_tuesday')|escape('js') }}", day3: "{{ phrase('day_wednesday')|escape('js') }}", day4: "{{ phrase('day_thursday')|escape('js') }}", day5: "{{ phrase('day_friday')|escape('js') }}", day6: "{{ phrase('day_saturday')|escape('js') }}", dayShort0: "{{ phrase('day_sunday_short')|escape('js') }}", dayShort1: "{{ phrase('day_monday_short')|escape('js') }}", dayShort2: "{{ phrase('day_tuesday_short')|escape('js') }}", dayShort3: "{{ phrase('day_wednesday_short')|escape('js') }}", dayShort4: "{{ phrase('day_thursday_short')|escape('js') }}", dayShort5: "{{ phrase('day_friday_short')|escape('js') }}", dayShort6: "{{ phrase('day_saturday_short')|escape('js') }}", month0: "{{ phrase('month_1')|escape('js') }}", month1: "{{ phrase('month_2')|escape('js') }}", month2: "{{ phrase('month_3')|escape('js') }}", month3: "{{ phrase('month_4')|escape('js') }}", month4: "{{ phrase('month_5')|escape('js') }}", month5: "{{ phrase('month_6')|escape('js') }}", month6: "{{ phrase('month_7')|escape('js') }}", month7: "{{ phrase('month_8')|escape('js') }}", month8: "{{ phrase('month_9')|escape('js') }}", month9: "{{ phrase('month_10')|escape('js') }}", month10: "{{ phrase('month_11')|escape('js') }}", month11: "{{ phrase('month_12')|escape('js') }}", active_user_changed_reload_page: "{{ phrase('active_user_changed_reload_page')|escape('js') }}", server_did_not_respond_in_time_try_again: "{{ phrase('server_did_not_respond_in_time_try_again')|escape('js') }}", oops_we_ran_into_some_problems: "{{ phrase('oops_we_ran_into_some_problems')|escape('js') }}", oops_we_ran_into_some_problems_more_details_console: "{{ phrase('oops_we_ran_into_some_problems_more_details_console')|escape('js') }}", file_too_large_to_upload: "{{ phrase('file_too_large_to_upload')|escape('js') }}", uploaded_file_is_too_large_for_server_to_process: "{{ phrase('uploaded_file_is_too_large_for_server_to_process')|escape('js') }}", files_being_uploaded_are_you_sure: "{{ phrase('files_being_uploaded_are_you_sure')|escape('js') }}", attach: "{{ phrase('button.attach')|escape('js') }}", rich_text_box: "{{ phrase('rich_text_box')|escape('js') }}", close: "{{ phrase('close')|escape('js') }}", link_copied_to_clipboard: "{{ phrase('link_copied_to_clipboard')|escape('js') }}", text_copied_to_clipboard: "{{ phrase('text_copied_to_clipboard')|escape('js') }}", loading: "{{ phrase('loading...')|escape('js') }}", you_have_exceeded_maximum_number_of_selectable_items: "{{ phrase('you_have_exceeded_maximum_number_of_selectable_items')|escape('js') }}", processing: "{{ phrase('processing')|escape('js') }}", 'processing...': "{{ phrase('processing...')|escape('js') }}", showing_x_of_y_items: "{{ phrase('showing_x_of_y_items')|escape('js') }}", showing_all_items: "{{ phrase('showing_all_items')|escape('js') }}", no_items_to_display: "{{ phrase('no_items_to_display')|escape('js') }}", number_button_up: "{{ phrase('number_button_up')|escape('js') }}", number_button_down: "{{ phrase('number_button_down')|escape('js') }}", push_enable_notification_title: "{{ phrase('push_enable_notification_title', {'boardTitle': $xf.options.boardTitle})|escape('js') }}", push_enable_notification_body: "{{ phrase('push_enable_notification_body')|escape('js') }}" }); </script> <form style="display:none" hidden="hidden"> <input type="text" name="_xfClientLoadTime" value="" id="_xfClientLoadTime" title="_xfClientLoadTime" tabindex="-1" /> </form> <xf:if is="$xf.visitor.canSearch() && $xf.request.getFullRequestUri() === link('full:index')"> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "WebSite", "url": "{{ link('canonical:index')|escape('js') }}", "potentialAction": { "@type": "SearchAction", "target": "{{ link('canonical:search/search')|escape('js') . ($xf.options.useFriendlyUrls ? '?' : '&') . 'keywords={search_keywords}' }}", "query-input": "required name=search_keywords" } } </script> </xf:if> <xf:if is="property('dt_collapsible_sidebar_block') && !property('dt_disable_sidebar')"> <script> var sidebarRowCollapse = '<span class="block-control fas fa-chevron-up"></span>'; $('.p-body-sidebar .block-container .block-minorHeader').append(sidebarRowCollapse); $('.block-control').click(function () { if ($(this).parents('.block-container').children('.block-body').hasClass('active')){ $(this).parents('.block-container').children('.block-body').removeClass('active').slideDown('400'); $(this).removeClass('fa-chevron-down').addClass('fa-chevron-up'); }else { $(this).parents('.block-container').children('.block-body').addClass('active').slideUp('400'); $(this).addClass('fa-chevron-down').removeClass('fa-chevron-up'); } }); </script> </xf:if> </xf:macro> ]]>
</template>
<template title="member_tooltip" type="public" addon_id="XF" version_id="2021370" version_string="2.2.13">
<![CDATA[ <xf:css src="member_tooltip.less" /> <div class="tooltip-content-inner"> <div class="memberTooltip {{ $user.Profile.banner_date ? 'memberTooltip--withBanner' : '' }}"> <xf:profilebanner user="$user" size="m" class="memberTooltip-header" toggle="memberTooltip--withBanner"> <span class="memberTooltip-avatar"> <xf:avatar user="{$user}" size="m" notooltip="true" /> </span> <div class="memberTooltip-headerInfo"> <xf:if contentcheck="true"> <div class="memberTooltip-headerAction"> <xf:contentcheck> <!--[XF:header_action_start]--> <xf:if contentcheck="true"> <xf:button class="button--link button--small menuTrigger" data-xf-click="menu" aria-label="{{ phrase('more_options') }}" aria-expanded="false" aria-haspopup="true"> <xf:fa icon="fa-cog" /> </xf:button> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h3 class="menu-header">{{ phrase('moderator_tools') }}</h3> <xf:contentcheck> <xf:macro template="member_macros" name="moderator_menu_actions" arg-user="{$user}" arg-context="tooltip" /> </xf:contentcheck> </div> </div> </xf:if> <!--[XF:header_action_end]--> </xf:contentcheck> </div> </xf:if> <h4 class="memberTooltip-name"> <span class="memberTooltip-nameWrapper"> <xf:username user="$user" rich="true" notooltip="true" /> </span> <xf:if is="$user.hasViewableUsernameHistory()"> <a class="memberTooltip-nameChangeIndicator" data-xf-click="menu" data-xf-init="tooltip" title="{{ phrase('username_changed')|for_attr }}" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true" aria-label="{{ phrase('username_changed')|for_attr }}"><xf:fa icon="fa-history" /></a> <div class="menu" data-menu="menu" aria-hidden="true" data-href="{{ link('members/username-history', $user, {'menu': 1}) }}" data-load-target=".js-usernameHistoryBody"> <div class="menu-content"> <h3 class="menu-header">{{ phrase('previous_usernames') }}</h3> <div class="js-usernameHistoryBody"> <div class="menu-row"> {{ phrase('loading...') }} </div> </div> </div> </div> </xf:if> </h4> <xf:if contentcheck="true"> <div class="memberTooltip-banners"> <xf:contentcheck><xf:userbanners user="$user" /></xf:contentcheck> </div> </xf:if> <div class="memberTooltip-blurbContainer"> <xf:if contentcheck="true"> <div class="memberTooltip-blurb"> <xf:contentcheck> <xf:userblurb user="$user" tag="div" /> </xf:contentcheck> </div> </xf:if> <div class="memberTooltip-blurb"> <dl class="pairs pairs--inline"> <dt>{{ phrase('joined') }}</dt> <dd><xf:date time="$user.register_date" /></dd> </dl> </div> <xf:if contentcheck="true"> <div class="memberTooltip-blurb"> <dl class="pairs pairs--inline"> <dt>{{ phrase('last_seen') }}</dt> <dd dir="auto"> <xf:contentcheck><xf:useractivity user="$user" class="pairs--plainLabel" /></xf:contentcheck> </dd> </dl> </div> </xf:if> </div> </div> </xf:profilebanner> <div class="memberTooltip-info"> <div class="memberTooltip-stats"> <div class="pairJustifier"> <xf:macro template="member_macros" name="member_stat_pairs" arg-user="{$user}" arg-context="tooltip" /> </div> </div> </div> <xf:if contentcheck="true"> <hr class="memberTooltip-separator" /> <div class="memberTooltip-actions"> <xf:contentcheck> <xf:macro template="member_macros" name="member_action_buttons" arg-user="{$user}" arg-context="tooltip" /> </xf:contentcheck> </div> </xf:if> </div> </div> ]]>
</template>
<template title="member_tooltip.less" type="public" addon_id="XF" version_id="2021370" version_string="2.2.13">
<![CDATA[ @_memberTooltip-padding: @xf-paddingMedium; @_memberTooltip-avatarSize: @avatar-m; .memberTooltip-header { display: table; table-layout: fixed; width: 100%; padding: @_memberTooltip-padding; .xf-memberTooltipHeader(); } .memberTooltip-avatar { display: table-cell; width: ((@_memberTooltip-padding) * 2 + (@_memberTooltip-avatarSize)); vertical-align: top; } .memberTooltip-headerInfo { display: table-cell; vertical-align: top; } .memberTooltip-name { margin: 0; margin-top: -.15em; padding: 0; font-weight: @xf-fontWeightNormal; line-height: .8 * (@xf-lineHeightDefault); .xf-memberTooltipName(); .m-hiddenLinks(); .memberTooltip-nameChangeIndicator { color: @xf-textColorMuted; font-size: 75%; &:hover { color: @xf-textColorMuted; } } .memberTooltip--withBanner & { .xf-memberTooltipNameBanner(); .memberTooltip-nameChangeIndicator { color: darken(xf-default(@xf-memberTooltipNameBanner--color, white), 20%); &:hover { color: darken(xf-default(@xf-memberTooltipNameBanner--color, white), 20%); } } } } // See XF-197998 @_memberTooltip-textStroke: 0 #000; .memberTooltip-textStroke() { text-shadow: -1px -1px @_memberTooltip-textStroke, 1px -1px @_memberTooltip-textStroke, -1px 1px @_memberTooltip-textStroke, 1px 1px @_memberTooltip-textStroke; } .memberTooltip--withBanner { .memberTooltip-nameWrapper { .username:hover { text-decoration: none; } } .username { .memberTooltip-textStroke(); } .memberTooltip-nameChangeIndicator .fa-history { .memberTooltip-textStroke(); } } .memberTooltip-headerAction { float: right; } .memberTooltip-blurbContainer { .memberTooltip--withBanner & { .xf-memberTooltipBlurbContainerBanner(); .memberTooltip-blurb { &:first-child { margin-top: 0; } .pairs dt, a { color: darken(xf-default(@xf-memberTooltipBlurbContainerBanner--color, white), 20%); } } } } .memberTooltip-banners, .memberTooltip-blurb { margin-top: .25em; } .memberTooltip-blurb { font-size: @xf-fontSizeSmall; } .memberTooltip-stats { font-size: @xf-fontSizeSmall; dl.pairs.pairs--rows > dt { font-size: @xf-fontSizeSmaller; } } .memberTooltip-info, .memberTooltip-actions { padding: @_memberTooltip-padding; } .memberTooltip-separator { margin: -@xf-borderSize @_memberTooltip-padding 0; border: none; border-top: @xf-borderSize solid @xf-borderColorLight; } @media (max-width: @xf-responsiveNarrow) { .memberTooltip-avatar { width: ((@_memberTooltip-padding) * 2 + (@_memberTooltip-avatarSize * 2 / 3)); .avatar { .m-avatarSize(@_memberTooltip-avatarSize * 2 / 3); } } } ]]>
</template>
<template title="member_view" type="public" addon_id="XF" version_id="2021370" version_string="2.2.13">
<![CDATA[ <xf:title page="{$page}">{$user.username}</xf:title> <xf:h1 hidden="true" /> <xf:if is="!$user.isSearchEngineIndexable()"> <xf:head option="metaNoindex"><meta name="robots" content="noindex" /></xf:head> </xf:if> <xf:macro template="metadata_macros" name="metadata" arg-shareUrl="{{ link('canonical:members', $user) }}" arg-canonicalUrl="{{ link('canonical:members', $user, {'page': $page}) }}" arg-imageUrl="{$user.getAvatarUrl('o', null, true)}" /> <xf:page option="ldJsonHtml"> <script type="application/ld+json"> {{ $user.getLdStructuredData()|json(true)|raw }} </script> </xf:page> <xf:css src="member.less" /> <div class="block"> <div class="block-container"> <div class="block-body"> <div class="memberHeader {{ $user.Profile.banner_date ? 'memberHeader--withBanner' : '' }}"> <xf:profilebanner user="$user" size="l" class="memberHeader-main" toggle="memberHeader--withBanner"> <div class="memberHeader-mainContent"> <span class="memberHeader-avatar"> <span class="avatarWrapper"> <xf:avatar user="{$user}" size="l" href="{{ $user.getAvatarUrl('o') ?: '' }}" /> <xf:if is="$user.user_id == $xf.visitor.user_id && $xf.visitor.canUploadAvatar()"> <a class="avatarWrapper-update" href="{{ link('account/avatar') }}" data-xf-click="overlay"><span>{{ phrase('edit') }}</span></a> </xf:if> </span> </span> <div class="memberHeader-content memberHeader-content--info"> <xf:if contentcheck="true"> <div class="memberHeader-actionTop"> <xf:contentcheck> <!--[XF:action_top_start]--> <xf:if contentcheck="true"> <div class="buttonGroup"> <xf:contentcheck> <xf:if is="$user.canBeReported()"> <xf:button href="{{ link('members/report', $user) }}" class="button--link" overlay="true"> {{ phrase('report_verb') }} </xf:button> </xf:if> <xf:button class="button--link copyOrange" data-copy-text="{{ link('canonical:members', $user) }}"> Ñêîïèðîâàòü ññûëêó íà ïðîôèëü </xf:button> <xf:button class="button--link copyOrange" data-copy-text="{$user.username}"> Ñêîïèðîâàòü íèê </xf:button> <xf:if is="$user.user_id == $xf.visitor.user_id && $xf.visitor.canUploadProfileBanner()"> <xf:button href="{{ link('account/banner') }}" class="button--link" overlay="true"> {{ phrase('edit_profile_banner') }} </xf:button> </xf:if> <xf:if contentcheck="true"> <div class="buttonGroup-buttonWrapper"> <xf:button class="button--link menuTrigger" data-xf-click="menu" aria-expanded="false" aria-haspopup="true">{{ phrase('moderator_tools') }}</xf:button> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h3 class="menu-header">{{ phrase('moderator_tools') }}</h3> <xf:contentcheck> <xf:macro template="member_macros" name="moderator_menu_actions" arg-user="{$user}" arg-context="profile" /> </xf:contentcheck> </div> </div> </div> </xf:if> </xf:contentcheck> </div> </xf:if> <!--[XF:action_top_end]--> </xf:contentcheck> </div> </xf:if> <h1 class="memberHeader-name"> <span class="memberHeader-nameWrapper"> <xf:username user="{$user}" rich="true" href="" /> </span> <xf:if is="$user.hasViewableUsernameHistory()"> <a class="memberHeader-nameChangeIndicator" data-xf-click="menu" data-xf-init="tooltip" title="{{ phrase('username_changed')|for_attr }}" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true" aria-label="{{ phrase('username_changed')|for_attr }}"><xf:fa icon="fa-history" /></a> <div class="menu" data-menu="menu" aria-hidden="true" data-href="{{ link('members/username-history', $user, {'menu': 1}) }}" data-load-target=".js-usernameHistoryBody"> <div class="menu-content"> <h3 class="menu-header">{{ phrase('previous_usernames') }}</h3> <div class="js-usernameHistoryBody"> <div class="menu-row"> {{ phrase('loading...') }} </div> </div> </div> </div> </xf:if> </h1> <xf:if contentcheck="true"> <div class="memberHeader-banners"> <xf:contentcheck><xf:userbanners user="$user" /></xf:contentcheck> </div> </xf:if> <div class="memberHeader-blurbContainer"> <xf:userblurb user="$user" tag="div" class="memberHeader-blurb" /> <div class="memberHeader-blurb"> <dl class="pairs pairs--inline"> <dt>{{ phrase('joined') }}</dt> <dd><xf:date time="$user.register_date" /></dd> </dl> </div> <xf:if contentcheck="true"> <div class="memberHeader-blurb"> <dl class="pairs pairs--inline"> <dt>{{ phrase('last_seen') }}</dt> <dd dir="auto"> <xf:contentcheck><xf:useractivity user="$user" class="pairs--plainLabel" /></xf:contentcheck> </dd> </dl> </div> </xf:if> </div> </div> </div> </xf:profilebanner> <div class="memberHeader-content"> <div class="memberHeader-stats"> <div class="pairJustifier"> <xf:macro template="member_macros" name="member_stat_pairs" arg-user="{$user}" arg-context="profile" /> </div> </div> <xf:if contentcheck="true"> <hr class="memberHeader-separator" /> <div class="memberHeader-buttons"> <xf:contentcheck> <xf:macro template="member_macros" name="member_action_buttons" arg-user="{$user}" arg-context="profile" /> </xf:contentcheck> </div> </xf:if> </div> </div> </div> <h2 class="block-tabHeader block-tabHeader--memberTabs tabs hScroller" data-xf-init="tabs h-scroller" data-panes=".js-memberTabPanes" data-state="replace" role="tablist"> <span class="hScroller-scroll"> <!--[XF:tabs:start]--> <xf:if is="$user.canViewPostsOnProfile()"> <a href="{{ link('members', $user) }}" class="tabs-tab is-active" role="tab" aria-controls="profile-posts">{{ phrase('profile_posts') }}</a> </xf:if> <xf:if is="$user.canViewLatestActivity()"> <xf:if is="!$user.canViewPostsOnProfile()"> <a href="{{ link('members', $user) }}" class="tabs-tab is-active" role="tab" aria-controls="latest-activity">{{ phrase('latest_activity') }}</a> <xf:else /> <a href="{{ link('members/latest-activity', $user) }}" rel="nofollow" class="tabs-tab" id="latest-activity" role="tab">{{ phrase('latest_activity') }}</a> </xf:if> </xf:if> <a href="{{ link('members/recent-content', $user) }}" rel="nofollow" class="tabs-tab" id="recent-content" role="tab">{{ phrase('postings') }}</a> <!--[XF:tabs:after_recent_content]--> <a href="{{ link('members/about', $user) }}" class="tabs-tab" id="about" role="tab">{{ phrase('about') }}</a> <xf:if is="$xf.visitor.canViewWarnings() && $user.warning_count"> <a href="{{ link('members/warnings', $user) }}" class="tabs-tab" id="warnings" role="tab">{{ phrase('warnings') }}</a> </xf:if> <!--[XF:tabs:end]--> </span> </h2> </div> </div> <xf:ad position="member_view_below_tabs" arg-user="{$user}" /> <ul class="tabPanes js-memberTabPanes"> <!--[XF:tab_panes:start]--> <xf:if is="$user.canViewPostsOnProfile()"> <li class="is-active" role="tabpanel" id="profile-posts"> <xf:js src="xf/inline_mod.js" min="1" /> <xf:macro template="lightbox_macros" name="setup" arg-canViewAttachments="{$canViewAttachments}" /> <div class="block block--messages" data-xf-init="lightbox inline-mod" data-type="profile_post" data-href="{{ link('inline-mod') }}"> <div class="block-container"> <div class="block-body js-replyNewMessageContainer"> <xf:if is="$user.canPostOnProfile()"> <xf:set var="$firstProfilePost" value="{$profilePosts|first}" /> <xf:macro template="profile_post_macros" name="quick_post" arg-user="{$user}" arg-lastDate="{{ $firstProfilePost.post_date ?: 0 }}" arg-containerSelector="< .js-replyNewMessageContainer" arg-attachmentData="{$attachmentData}" /> </xf:if> <xf:if is="$profilePosts is not empty"> <xf:foreach loop="$profilePosts" value="$profilePost"> <xf:macro template="profile_post_macros" name="{{ $profilePost.message_state == 'deleted' ? 'profile_post_deleted' : 'profile_post' }}" arg-attachmentData="{$profilePostAttachData.{$profilePost.profile_post_id}}" arg-profilePost="{$profilePost}" /> </xf:foreach> <xf:else /> <div class="block-row js-replyNoMessages">{{ phrase('there_no_messages_on_xs_profile_yet', {'name': $user.username}) }}</div> </xf:if> </div> </div> <div class="block-outer block-outer--after"> <xf:pagenav page="{$page}" perpage="{$perPage}" total="{$total}" link="members" data="{$user}" wrapperclass="block-outer-main" /> <div class="block-outer-opposite"> <xf:showignored /> <xf:if is="$canInlineMod"> <xf:macro template="inline_mod_macros" name="button" /> </xf:if> </div> </div> </div> </li> </xf:if> <xf:if is="$user.canViewLatestActivity()"> <xf:if is="!$user.canViewPostsOnProfile()"> <li class="is-active" role="tabpanel" id="latest-activity"> <div class="block"> <div class="block-container"> <xf:if is="$newsFeedItems is not empty"> <ul class="block-body js-newsFeedTarget"> <xf:foreach loop="$newsFeedItems" value="$item"> <xf:macro template="news_feed_macros" name="feed_row" arg-item="{$item}" /> </xf:foreach> </ul> <div class="block-footer js-newsFeedLoadMore"> <span class="block-footer-controls"><xf:button href="{{ link('members/latest-activity', $user, {'before_id': $newsFeedOldestItemId}) }}" data-xf-click="inserter" data-append=".js-newsFeedTarget" data-replace=".js-newsFeedLoadMore"> {{ phrase('show_older_items') }} </xf:button></span> </div> <xf:else /> <div class="block-body js-newsFeedTarget"> <div class="block-row">{{ phrase('news_feed_is_currently_empty') }}</div> </div> </xf:if> </div> <div class="block-outer block-outer--after"> <div class="block-outer-opposite"> <xf:showignored /> </div> </div> </div> </li> <xf:else /> <li data-href="{{ link('members/latest-activity', $user) }}" role="tabpanel" aria-labelledby="latest-activity"> <div class="blockMessage">{{ phrase('loading...') }}</div> </li> </xf:if> </xf:if> <li data-href="{{ link('members/recent-content', $user) }}" role="tabpanel" aria-labelledby="recent-content"> <div class="blockMessage">{{ phrase('loading...') }}</div> </li> <!--[XF:tab_panes:after_recent_content]--> <li data-href="{{ link('members/about', $user) }}" role="tabpanel" aria-labelledby="about"> <div class="blockMessage">{{ phrase('loading...') }}</div> </li> <xf:if is="$xf.visitor.canViewWarnings() && $user.warning_count"> <li data-href="{{ link('members/warnings', $user) }}" role="tabpanel" aria-labelledby="warnings"> <div class="blockMessage">{{ phrase('loading...') }}</div> </li> </xf:if> <!--[XF:tab_panes:end]--> </ul> <xf:widgetpos id="member_view_sidebar" context-user="{$user}" position="sidebar" /> <xf:js> document.querySelectorAll('.copyOrange').forEach(btn => { btn.addEventListener('click', () => { const text = btn.dataset.copyText; navigator.clipboard.writeText(text).then(() => { // Àíèìàöèÿ êíîïêè btn.classList.add('copyFlash'); setTimeout(() => btn.classList.remove('copyFlash'), 600); // Ñîçäàíèå óâåäîìëåíèÿ let toast = document.createElement('div'); toast.className = 'copyToast'; toast.textContent = 'Ñêîïèðîâàíî!'; document.body.appendChild(toast); setTimeout(() => toast.classList.add('copyToast--show'), 20); setTimeout(() => { toast.classList.remove('copyToast--show'); setTimeout(() => toast.remove(), 300); }, 1500); }); }); }); </xf:js> <xf:js> /* --- Êîíôåòòè äëÿ êíîïîê --- */ function createConfetti(x, y) { for (let i = 0; i < 25; i++) { const particle = document.createElement('div'); particle.className = 'confetti'; particle.style.left = `${x}px`; particle.style.top = `${y}px`; particle.style.backgroundColor = `hsl(${Math.random()*360}, 100%, 50%)`; particle.style.width = `${Math.random()*6 + 4}px`; particle.style.height = particle.style.width; particle.style.transform = `rotate(${Math.random()*360}deg)`; document.body.appendChild(particle); setTimeout(() => particle.remove(), 1200); } } /* --- Êíîïêè êîïèðîâàíèÿ --- */ document.querySelectorAll('.copyOrange').forEach(btn => { btn.addEventListener('click', () => { const text = btn.dataset.copyText; navigator.clipboard.writeText(text).then(() => { btn.classList.add('copyFlash'); setTimeout(() => btn.classList.remove('copyFlash'), 600); const rect = btn.getBoundingClientRect(); createConfetti(rect.left + rect.width/2, rect.top + rect.height/2); }); }); btn.addEventListener('mouseenter', () => btn.style.transform = 'scale(1.05)'); btn.addEventListener('mouseleave', () => btn.style.transform = 'scale(1)'); }); /* --- Ïëàâíàÿ ñìåíà âêëàäîê --- */ document.querySelectorAll('.block-tabHeader .tabs-tab').forEach(tab => { tab.addEventListener('click', e => { e.preventDefault(); document.querySelectorAll('.tabs-tab').forEach(t => t.classList.remove('is-active')); tab.classList.add('is-active'); const tabId = tab.getAttribute('aria-controls') || tab.getAttribute('id'); document.querySelectorAll('.js-memberTabPanes > li').forEach(pane => { pane.classList.remove('is-active'); if(pane.id === tabId) pane.classList.add('is-active'); }); }); }); </xf:js> <style> /* --- Glow êíîïêè --- */ .copyFlash { animation: glow 0.6s ease-out; } @keyframes glow { 0% { box-shadow: 0 0 0px rgba(255,165,0,0.7); } 50% { box-shadow: 0 0 20px rgba(255,165,0,1); } 100% { box-shadow: 0 0 0px rgba(255,165,0,0); } } .copyOrange { transition: transform 0.2s ease; } /* --- Êîíôåòòè --- */ .confetti { position: fixed; pointer-events: none; z-index: 9999; animation: confetti-fall 1.2s forwards; } @keyframes confetti-fall { 0% { transform: translateY(0) rotate(0deg); opacity: 1; } 100% { transform: translateY(100px) rotate(720deg); opacity: 0; } } /* --- Àâàòàð --- */ /* --- Áàííåð --- */ .memberHeader--withBanner .memberHeader-main { position: relative; overflow: hidden; } .memberHeader--withBanner .memberHeader-main::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.5)); pointer-events: none; } /* --- Èìÿ ïîëüçîâàòåëÿ --- */ .memberHeader-nameWrapper { text-shadow: 1px 1px 4px rgba(0,0,0,0.5); transition: transform 0.3s ease, text-shadow 0.3s ease; } .memberHeader-nameWrapper:hover { transform: scale(1.05); text-shadow: 2px 2px 8px rgba(255,200,0,0.9); } /* --- Ñòàòèñòèêà --- */ .memberHeader-stats .pairJustifier > dl { background: rgba(255,255,255,0.05); padding: 8px 12px; border-radius: 8px; margin-right: 6px; transition: background 0.3s ease, transform 0.3s ease; } .memberHeader-stats .pairJustifier > dl:hover { background: rgba(255,200,0,0.1); transform: scale(1.05); } /* --- Âêëàäêè --- */ .block-tabHeader .tabs-tab { transition: all 0.3s ease; } .block-tabHeader .tabs-tab.is-active { color: #ffa500; border-bottom: 2px solid #ffa500; } .js-memberTabPanes > li { transition: opacity 0.4s ease, transform 0.4s ease; } .js-memberTabPanes > li:not(.is-active) { display: none; opacity: 0; transform: translateY(10px); } .js-memberTabPanes > li.is-active { display: block; opacity: 1; transform: translateY(0); } </style> <xf:js> /* ============================== ÊÎÍÔÅÒÒÈ È ÏÐÈÊÎËÜÍÛÅ ÝÔÔÅÊÒÛ ============================== */ /* Êîíôåòòè äëÿ êíîïîê è àâàòàðà */ function createConfetti(x, y) { for (let i = 0; i < 25; i++) { const particle = document.createElement('div'); particle.className = 'confetti'; particle.style.left = `${x}px`; particle.style.top = `${y}px`; particle.style.width = `${Math.random()*6 + 4}px`; particle.style.height = particle.style.width; particle.style.backgroundColor = `hsl(${Math.random()*360}, 100%, 50%)`; particle.style.transform = `rotate(${Math.random()*360}deg)`; document.body.appendChild(particle); setTimeout(() => particle.remove(), 1200); } } /* Êíîïêè êîïèðîâàíèÿ */ document.querySelectorAll('.copyOrange').forEach(btn => { btn.addEventListener('click', () => { const text = btn.dataset.copyText; navigator.clipboard.writeText(text).then(() => { // Glow + scale btn.classList.add('copyFlash'); setTimeout(() => btn.classList.remove('copyFlash'), 600); // Êîíôåòòè const rect = btn.getBoundingClientRect(); createConfetti(rect.left + rect.width/2, rect.top + rect.height/2); }); }); btn.addEventListener('mouseenter', () => btn.style.transform = 'scale(1.07)'); btn.addEventListener('mouseleave', () => btn.style.transform = 'scale(1)'); }); /* Âêëàäêè ïðîôèëÿ ñ ïëàâíîé àíèìàöèåé */ document.querySelectorAll('.block-tabHeader .tabs-tab').forEach(tab => { tab.addEventListener('click', e => { e.preventDefault(); document.querySelectorAll('.tabs-tab').forEach(t => t.classList.remove('is-active')); tab.classList.add('is-active'); const tabId = tab.getAttribute('aria-controls') || tab.getAttribute('id'); document.querySelectorAll('.js-memberTabPanes > li').forEach(pane => { if(pane.id === tabId) { pane.classList.add('is-active'); pane.style.opacity = 0; pane.style.transform = 'translateY(10px)'; setTimeout(() => { pane.style.opacity = 1; pane.style.transform = 'translateY(0)'; }, 20); } else { pane.classList.remove('is-active'); } }); }); }); /* Êîíôåòòè îäèí ðàç ïðè çàãðóçêå íà àâàòàð */ window.addEventListener('load', () => { const avatar = document.querySelector('.memberHeader-avatar .avatarWrapper img'); if(avatar) { const rect = avatar.getBoundingClientRect(); createConfetti(rect.left + rect.width/2, rect.top + rect.height/2); } }); </xf:js> <style> /* ============================== ÃËÀÂÍÛÅ ÑÒÈËÈ ÏÐÎÊÀ×ÀÍÍÎÃÎ ÏÐÎÔÈËß ============================== */ /* Glow êíîïêè */ .copyFlash { animation: glow 0.6s ease-out; } @keyframes glow { 0% { box-shadow: 0 0 0px rgba(255,165,0,0.7); } 50% { box-shadow: 0 0 20px rgba(255,165,0,1); } 100% { box-shadow: 0 0 0px rgba(255,165,0,0); } } .copyOrange { transition: transform 0.2s ease, box-shadow 0.2s ease; } /* Êîíôåòòè */ .confetti { position: fixed; pointer-events: none; z-index: 9999; animation: confetti-fall 1.2s forwards; } @keyframes confetti-fall { 0% { transform: translateY(0) rotate(0deg); opacity: 1; } 100% { transform: translateY(100px) rotate(720deg); opacity: 0; } } .memberHeader-avatar { margin-top: -18px; /* ðàññòîÿíèå ñâåðõó */ float: left; margin-left: -3px; /* ðàññòîÿíèå sleva */ } @media (max-width: 768px) { /* ýêðàí &#8804; 768px — îáû÷íî ïëàíøåòû è òåëåôîíû */ .memberHeader-avatar { margin-top: -4px; /* íàïðèìåð, ìåíüøå ïîäíèìàåì */ margin-left: 0px; /* öåíòðèðóåì èëè óáèðàåì îòðèöàòåëüíûé îòñòóï */ float: none; /* ìîæíî óáðàòü float íà ìîáèëüíûõ */ } } /* Áàííåð */ .memberHeader--withBanner .memberHeader-main { position: relative; overflow: hidden; } .memberHeader--withBanner .memberHeader-main::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to bottom, rgba(0,0,0,0.15), rgba(0,0,0,0.4)); pointer-events: none; transition: background 1.5s ease-in-out; } /* Èìÿ ïîëüçîâàòåëÿ */ .memberHeader-nameWrapper { text-shadow: 1px 1px 4px rgba(0,0,0,0.5); transition: transform 0.3s ease, text-shadow 0.3s ease; } .memberHeader-nameWrapper:hover { transform: scale(1.06); text-shadow: 2px 2px 10px rgba(255,200,0,0.9); } /* Ñòàòèñòèêà */ .memberHeader-stats .pairJustifier > dl { background: rgba(255,255,255,0.05); padding: 8px 12px; border-radius: 10px; margin-right: 6px; transition: background 0.3s ease, transform 0.3s ease; } .memberHeader-stats .pairJustifier > dl:hover { background: rgba(255,200,0,0.08); transform: translateY(-3px); } /* Âêëàäêè */ .block-tabHeader .tabs-tab { transition: all 0.3s ease; } .block-tabHeader .tabs-tab.is-active { border-bottom: 2px solid #ffa500; /* îñòàâëÿåì êàê subtle glow, íå òðîãàåì òåêñò */ } .js-memberTabPanes > li { transition: opacity 0.4s ease, transform 0.4s ease; } .js-memberTabPanes > li:not(.is-active) { display: none; opacity: 0; transform: translateY(10px); } .js-memberTabPanes > li.is-active { display: block; opacity: 1; transform: translateY(0); } /* Çíà÷îê ñìåíû èìåíè ïîëüçîâàòåëÿ */ .memberHeader-nameChangeIndicator { display: inline-block; position: relative; transition: transform 0.3s ease, box-shadow 0.3s ease; cursor: pointer; } .memberHeader-nameChangeIndicator:hover { transform: scale(1.3); box-shadow: 0 0 12px rgba(255,200,0,0.8); animation: pulse 1s infinite; } /* Ìÿãêàÿ ïóëüñàöèÿ */ @keyframes pulse { 0% { transform: scale(1.3); box-shadow: 0 0 12px rgba(255,200,0,0.8); } 50% { transform: scale(1.4); box-shadow: 0 0 20px rgba(255,200,0,1); } 100% { transform: scale(1.3); box-shadow: 0 0 12px rgba(255,200,0,0.8); } } .memberHeader--withBanner .memberHeader-main::after { display: none !important; } @keyframes fadeInLabel { 0% { opacity: 0; transform: translateX(-50%) translateY(-5px); } 100% { opacity: 1; transform: translateX(-50%) translateY(0); } } </style> ]]>
</template>
<template title="message.less" type="public" addon_id="XF" version_id="2021171" version_string="2.2.11">
<![CDATA[ @_message-actionColumnWidth: 40px; @_messageSimple-userColumnWidth: 70px; .message { + .message, &.message--bordered { border-top: @xf-borderSize solid @xf-borderColor; } } .message, .block--messages .message { &.is-mod-selected { background: @xf-inlineModHighlightColor; .message-cell--user, .message-cell--vote { background: @xf-inlineModHighlightColor; } .message-userArrow:after { border-right-color: @xf-inlineModHighlightColor; } } } .message-inner { display: flex; padding: @xf-paddingLargest; & + .message-inner { border-top: @xf-borderSize solid @xf-borderColor; } } .message-cell { display: block; vertical-align: top; padding: @xf-messagePadding; .message--quickReply & { //padding-bottom: 35px; // for the submit row > .formRow:last-child { > dd { padding-bottom: 0; } } } &.message-cell--closer { padding: @xf-messagePaddingSmall; &.message-cell--user { .m-fixedWidthFlex((@xf-messageUserBlockWidth) + 2 * (@xf-messagePaddingSmall)); .message--simple & { .m-fixedWidthFlex(@_messageSimple-userColumnWidth + 2 * (@xf-messagePaddingSmall)); } } &.message-cell--action { .m-fixedWidthFlex((@_message-actionColumnWidth) + 2 * (@xf-messagePaddingSmall)); } } &.message-cell--user, &.message-cell--action { position: relative; .xf-messageUserBlock(no-border); min-width: 0; } &.message-cell--vote { position: relative; .xf-messageUserBlock(no-border); border-left: @xf-messageUserBlock--border-width solid @xf-messageUserBlock--border-color; border-right: 0; padding-top: 0; padding-bottom: 0; .message--solution & { background: @xf-successBg; } .solutionIcon { margin-top: @xf-paddingMedium; } } &.message-cell--user { .m-fixedWidthFlex((@xf-messageUserBlockWidth) + 2 * (@xf-messagePadding)); .message--simple & { .m-fixedWidthFlex(@_messageSimple-userColumnWidth + 2 * @xf-messagePaddingSmall); } } &.message-cell--action { .m-fixedWidthFlex((@_message-actionColumnWidth) + 2 * (@xf-messagePadding)); } &.message-cell--main { flex: 1 1 auto; width: 100%; min-width: 0; &.is-editing { padding: 0; } // should really only happen when editing .block { margin: 0; } .block-container { margin: 0; border: none; } } &.message-cell--alert { font-size: @xf-fontSizeSmall; flex: 1 1 auto; width: 100%; min-width: 0; .xf-contentAccentBase(); a { .xf-contentAccentLink(); } } &.message-cell--extra { .m-fixedWidthFlex(180 + 2 * (@xf-messagePadding)); border-left: @xf-messageUserBlock--border-width solid @xf-messageUserBlock--border-color; background: @xf-contentAltBg; .formRow-explain { margin: @xf-paddingMedium 0 0; .xf-formExplain(); .m-textColoredLinks(); font-size: 80%; } } &.message-cell--header, &.message-cell--solutionHeader { flex: 1 1 auto; width: 100%; min-width: 0; padding: @xf-blockPaddingV @xf-blockPaddingH; margin: 0; } &.message-cell--header { font-weight: @xf-fontWeightNormal; text-decoration: none; .xf-blockHeader(); border-bottom: none; .m-hiddenLinks(); } &.message-cell--solutionHeader { color: @xf-successColor; font-size: @xf-fontSizeLarge; background: @xf-successBg; border-left: @xf-borderSizeFeature solid @xf-successFeatureColor; } } .message-main { height: 100%; display: flex; flex-direction: column; } .message-content { flex: 1 1 auto; // IE11 flex bug min-height: 1px; } .message-footer { margin-top: auto; } .message-expandWrapper { position: relative; overflow: hidden; .m-transition(-xf-height, height); .message-expandContent { max-height: 250px; overflow: hidden; } .message-expandContent--small { max-height: 160px; } &.is-expandable { .message-expandLink { display: block; } } &.is-expanded { .message-expandContent { max-height: none; } .message-expandLink { display: none; } } } .message-column { display: flex; flex-direction: column; align-items: center; } .message-expandLink { display: none; position: absolute; top: 60%; bottom: 0; left: 0; right: 0; cursor: pointer; z-index: @zIndex-1; .m-gradient( fade(@xf-contentBase--background-color, 0%), xf-default(@xf-contentBase--background-color, transparent), transparent, 0%, 70% ); &:empty { cursor: auto; .m-gradient( fade(@xf-contentBase--background-color, 0%), xf-default(@xf-contentBase--background-color, transparent), transparent, 0%, 100% ); } a { position: absolute; bottom: @xf-messagePadding; left: 0; right: 0; text-align: center; font-size: @xf-fontSizeSmall; color: @xf-textColorAttention; text-decoration: none; } } @media (max-width: @xf-messageSingleColumnWidth) { .message:not(.message--forceColumns) { .message-inner { display: block; padding: @xf-paddingSmall; } .message-cell { display: block; .m-clearFix(); &.message-cell--user { width: auto; border-right: none; border-bottom: @xf-messageUserBlock--border-width solid @xf-messageUserBlock--border-color; } &.message-cell--vote { width: auto; border-left: none; border-top: @xf-messageUserBlock--border-width solid @xf-messageUserBlock--border-color; .solutionIcon { margin-top: 0; } } &.message-cell--main { padding-left: @xf-messagePadding; } &.message-cell--extra { width: auto; border-left: none; border-top: @xf-messageUserBlock--border-width solid @xf-messageUserBlock--border-color; } } .message-column { flex-direction: row; justify-content: space-evenly; } } .message--simple:not(.message--forceColumns), .message--quickReply:not(.message--forceColumns) { .message-cell.message-cell--user { display: none; } } } // ######################## USER COLUMN ######################### .message-userArrow { display: none; position: absolute; top: (@xf-messagePadding) * 2; right: -1px; .m-triangleLeft(xf-default(@xf-messageUserBlock--border-color, transparent), @xf-messagePadding); &:after { position: absolute; top: -(@xf-messagePadding - 1px); right: -@xf-messagePadding; content: ""; .m-triangleLeft(@xf-contentBg, @xf-messagePadding - 1px); } } .message-avatar { text-align: center; .avatar:not(.avatar--default--dynamic) { vertical-align: bottom; &::after { content: ''; width: calc(~'100% + 12px'); height: calc(~'100% + 12px'); top: -6px; z-index: 1; left: -6px; } } } .message-avatar-wrapper { position: relative; display: inline-block; vertical-align: bottom; margin-bottom: .5em; .message-avatar-online<xf:if is="property('dt_offline_indicator')">, .message-avatar-offline </xf:if> { position: absolute; top: 8px; left: 4px; width: 14px; height: 14px; background: #80d3ab; border: #222531 solid 3px; border-radius: 50%; z-index: 3; @media (max-width: @xf-messageSingleColumnWidth) { top: 0; left: 0; border-color: @xf-contentBg; } } <xf:if is="property('dt_offline_indicator')"> .message-avatar-offline { background: #f27777; } </xf:if> } .message-name { font-weight: @xf-fontWeightHeavy; font-size: inherit; text-align: center; margin: 0; } .message-userTitle { font-size: @xf-fontSizeSmaller; font-weight: normal; text-align: center; margin: 0; } .message-userBanner.userBanner { display: block; margin-top: 3px; } .message-userExtras { margin-top: 3px; font-size: @xf-fontSizeSmaller; } .message--deleted { .message-userDetails { display: none; } .message-avatar .avatar { .m-avatarSize(@avatar-s); } } @media (max-width: @xf-messageSingleColumnWidth) { .message:not(.message--forceColumns) { .message-userArrow { top: auto; right: auto; bottom: -1px; left: ((@avatar-s) / 2); border: none; .m-triangleUp(xf-default(@xf-messageUserBlock--border-color, transparent), @xf-messagePadding); &:after { top: auto; right: auto; left: -(@xf-messagePadding - 1px); bottom: -@xf-messagePadding; border: none; .m-triangleUp(@xf-contentBg, @xf-messagePadding - 1px); } } &.is-mod-selected { .message-userArrow:after { border-color: transparent; border-bottom-color: @xf-inlineModHighlightColor; } } .message-user { display: flex; } .message-avatar { margin-bottom: 0; .avatar { .m-avatarSize(@avatar-s); } } .message-userDetails { flex: 1; min-width: 0; padding-left: @xf-messagePadding; } .message-userName { justify-content: flex-start; } .message-name { text-align: left; } .message-userTitle, .message-userBanner.userBanner { display: inline-block; text-align: left; margin: 0; } .message-userExtras { display: none; } .message--deleted { .message-userDetails { display: block; } } } } // ####################### MAIN COLUMN #################### .message-content { position: relative; .js-selectToQuoteEnd { height: 0; font-size: 0; overflow: hidden; } .message--multiQuoteList & { min-height: 80px; max-height: 120px; overflow: hidden; .message-body { pointer-events: none; } } } .message-attribution { color: @xf-textColorMuted; font-size: @xf-fontSizeSmaller; padding-bottom: @xf-paddingLargest; .m-clearFix(); &.message-attribution--plain { border-bottom: none; font-size: inherit; padding-bottom: 0; } &.message-attribution--split { display: flex; align-items: flex-end; flex-wrap: wrap; .message-attribution-opposite { margin-left: auto; } } } .message-attribution-main { float: left; } .message-attribution-opposite { float: right; &.message-attribution-opposite--list { display: flex; .m-listPlain(); > li { margin-left: 14px; &:first-child { margin-left: 0; } } } a { color: inherit; &:hover { text-decoration: none; color: @xf-linkHoverColor; } } } .message-attribution-gadget { display: inline-block; margin: -3px -7px; padding: 3px 7px; } .message-attribution-source { font-size: @xf-fontSizeSmaller; margin-bottom: @xf-paddingSmall; } .message-attribution-user { font-weight: @xf-fontWeightHeavy; .avatar { display: none; } .attribution { display: inline; font-size: inherit; font-weight: inherit; margin: 0; } } .message-newIndicator, a.message-newIndicator { .xf-messageNewIndicator(); white-space: nowrap; } a.message-newIndicator:hover { color: @xf-messageNewIndicator--color; } .message-minorHighlight { font-size: @xf-fontSizeSmall; color: @xf-textColorFeature; } .message-fields { margin: @xf-messagePadding 0; .message--simple & { margin-top: @xf-messagePaddingSmall; margin-bottom: @xf-messagePaddingSmall; } &:last-child { margin-bottom: 0; } } .message-body { margin: @xf-messagePadding 0; font-family: @xf-fontFamilyBody; .m-clearFix(); .message--simple & { margin-top: @xf-messagePaddingSmall; margin-bottom: @xf-messagePaddingSmall; } &:last-child { margin-bottom: 0; } .message-title { // basically replicates .structItem-title font-size: @xf-fontSizeLarge; font-weight: @xf-fontWeightNormal; margin: 0 0 @xf-messagePadding 0; padding: 0; } } .message-attachments { margin: .5em 0; } .message-attachments-list { .m-listPlain(); } .message-lastEdit { margin-top: .5em; color: @xf-textColorMuted; font-size: @xf-fontSizeSmallest; text-align: right; } .message-signature { margin-top: @xf-messagePadding; .xf-messageSignature(); } .message-actionBar .actionBar-set { margin-top: @xf-messagePadding; font-size: @xf-fontSizeSmall; .message--simple & { margin-top: @xf-messagePaddingSmall; } } .message .likesBar { margin-top: @xf-messagePadding; padding: @xf-messagePaddingSmall; } .message .reactionsBar { margin-top: @xf-messagePadding; padding: @xf-messagePaddingSmall; } .message-historyTarget { margin-top: @xf-messagePadding; } .message-gradient { position: absolute; bottom: 0; left: 0; right: 0; height: 60px; .m-gradient(fade(@xf-contentBg, 0%), @xf-contentBg, @xf-contentBg, 0%, 90%); } .message-responses { margin-top: @xf-messagePaddingSmall; font-size: @xf-fontSizeSmall; .editorPlaceholder { .input { font-size: inherit; } } } .message-responseRow { margin-top: -@xf-minorBlockContent--border-width; .xf-minorBlockContent(); padding: @xf-messagePaddingSmall; // note that border radiuses are very difficult to do here due to a lot of dynamic showing/hiding &.message-responseRow--likes, &.message-responseRow--reactions { .m-transitionFadeDown(); } } @media (max-width: @xf-messageSingleColumnWidth) { .message:not(.message--forceColumns) { .message-attribution-user .avatar { display: inline-flex; .m-avatarSize((@xf-fontSizeNormal) * (@xf-lineHeightDefault)); } .message-content { // this is 1px to workaround an IE11 issue - see #139187 min-height: 1px; } } } @media (max-width: @xf-responsiveNarrow) { .message-signature { display: none; } } // MESSAGE MENU .message-menuGroup { display: inline-block; } .message-menuTrigger { display: inline-block; &:after { .m-menuGadget(); // 1em text-align: right; } &:hover:after { color: black; } } .message-menu-section { &--editDelete { .menu-linkRow { font-weight: @xf-fontWeightHeavy; font-size: @xf-fontSizeNormal; } } } .message-menu-link { &--delete i:after { .m-faContent(@fa-var-trash-alt); } &--edit i:after { .m-faContent(@fa-var-edit); } &--report i:after { .m-faContent(@fa-var-frown); } &--warn i:after { .m-faContent(@fa-var-exclamation-triangle); } &--spam i:after { .m-faContent(@fa-var-ban); } &--ip i:after { .m-faContent(@fa-var-sitemap); } &--history i:after { .m-faContent(@fa-var-history); } &--follow i:after { .m-faContent(@fa-var-user-plus); } &--ignore i:after { .m-faContent(@fa-var-user-times); } &--share i:after { .m-faContent(@fa-var-share-alt); } } // ############################# CUSTOM FOR MESSAGE VARIANTS ############## .message-articleUserInfo { .xf-messageUserBlock(no-border); border-top: @xf-messageUserBlock--border-width solid @xf-messageUserBlock--border-color; &:last-child { .m-borderBottomRadius(@block-borderRadius-inner); } .contentRow-figure { width: @xf-messageUserBlockWidth; text-align: center; } .contentRow-main { padding-left: 2 * (@xf-messagePadding); text-align: left; } @media (max-width: @xf-messageSingleColumnWidth) { .contentRow-figure { width: auto; } .contentRow-main { padding-left: @xf-paddingLarge; } } } .message-articleWrittenBy { color: @xf-textColorMuted; font-size: @xf-fontSizeSmall; } .message-articleUserName { font-weight: @xf-fontWeightHeavy; font-size: @xf-fontSizeLarger; margin: 0; display: inline; } .message-articleUserBlurb, .message-articleUserBlurb div { font-size: @xf-fontSizeSmall; display: inline; } .message-articleUserAbout { font-size: @xf-fontSizeSmall; margin: .5em 0; } .message-articleUserBanners .userBanner { margin-bottom: 3px; } .message-articleUserStats { font-size: @xf-fontSizeSmall; color: @xf-textColorMuted; } @media (max-width: @xf-responsiveNarrow) { .message-articleUserStats { display: none; } } // ############################# COMMENTS ############### .comment { } .comment-inner { display: table; table-layout: fixed; width: 100%; } .comment-avatar { display: table-cell; width: 24px; vertical-align: top; .avatar, img { vertical-align: bottom; } } .comment-main { display: table-cell; padding-left: @xf-messagePadding; vertical-align: top; } .comment-contentWrapper { margin-bottom: @xf-messagePaddingSmall; } .comment-user { font-weight: @xf-fontWeightHeavy; } .comment-body { display: inline; } .comment-note { color: @xf-textColorMuted; font-size: @xf-fontSizeSmallest; } .comment-input { display: block; height: 2.34em; margin-bottom: @xf-messagePaddingSmall; } .comment-actionBar .actionBar-set { margin-top: @xf-messagePaddingSmall; color: @xf-textColorMuted; } .comment-likes, .comment-reactions { .m-transitionFadeDown(); margin-top: @xf-messagePaddingSmall; font-size: @xf-fontSizeSmaller; } // ################################## MESSAGE QUICK REPLY ADDITIONS ############# .formSubmitRow.formSubmitRow--messageQr { .formSubmitRow-controls { text-align: center; padding-left: 0; padding-right: 0; margin-left: @xf-messagePadding; margin-right: @xf-messagePadding; @media (max-width: @xf-formResponsive) { text-align: right; } } } // ################################## MESSAGE NOTICES ############################# .messageNotice { margin: @xf-messagePaddingSmall 0; padding: @xf-messagePaddingSmall @xf-messagePadding; .xf-contentAccentBase(); font-size: @xf-fontSizeSmaller; border-left: @xf-borderSizeMinorFeature solid @xf-borderColorHighlight; border-radius: @xf-blockBorderRadius; &.messageNotice--nested { border-left-width: @xf-borderSize; } &:not(.messageNotice--highlighted) { a, a:hover { .xf-contentAccentLink(); font-weight: bold; } } &:before { display: inline-block; .m-faBase(); padding-right: .2em; font-size: 125%; color: fade(@xf-textColorAccentContent, 70%); } &.messageNotice--highlighted { .xf-contentHighlightBase(); border-left-color: @xf-borderColorFeature; &:before { color: @xf-contentHighlightBase--color; } } &.messageNotice--deleted:before { .m-faContent(@fa-var-trash-alt); } // , .88em &.messageNotice--moderated:before { .m-faContent(@fa-var-shield); } // , 1em &.messageNotice--warning:before { .m-faContent(@fa-var-exclamation-triangle); } // , 1em &.messageNotice--ignored:before { .m-faContent(@fa-var-microphone-slash); } // , 1.25em } // ##################### MESSAGE VARIANTS/RESPONSIVE ################## @media (min-width: @xf-responsiveEdgeSpacerRemoval) { .block:not(.block--messages) { @{block-noStripSel} > .block-body:first-child > .message:first-child, .block-topRadiusContent.message, .block-topRadiusContent > .message:first-child { .message-inner:first-of-type .message-cell { &:first-child { border-top-left-radius: @block-borderRadius-inner; } &:last-child { border-top-right-radius: @block-borderRadius-inner; } } } @{block-noStripSel} > .block-body:last-child > .message:last-child, .block-bottomRadiusContent.message, .block-bottomRadiusContent > .message:last-child { .message-inner:last-of-type .message-cell { &:first-child { border-bottom-left-radius: @block-borderRadius-inner; } &:last-child { border-bottom-right-radius: @block-borderRadius-inner; } } } } } .block--messages { .block-container { background: none; border: none; } .message, .block-row { .xf-contentBase(); border: @xf-borderSize solid #292D3D; border-radius: @xf-blockBorderRadius; box-shadow: 0px 0px 20px 0px rgba(27, 26, 35, .3); + .message, + .block-row { margin-top: @xf-paddingLargest; } } .block-filterBar { .xf-blockBorder(); border-radius: @xf-blockBorderRadius; margin-bottom: @xf-blockPaddingV; } .message-spacer { + .message, + .block-row { margin-top: @xf-blockPaddingV; } } .message-inner .message-cell { border-radius: 0; } .message-inner:first-of-type .message-cell { &:first-child { border-top-left-radius: @block-borderRadius-inner; } &:last-child { border-top-right-radius: @block-borderRadius-inner; } } .message-inner:last-of-type .message-cell { &:first-child { border-bottom-left-radius: @block-borderRadius-inner; } &:last-child { border-bottom-right-radius: @block-borderRadius-inner; } } @media (max-width: @xf-messageSingleColumnWidth) { .message-inner { .message-cell { border-radius: 0; } &:first-of-type .message-cell:first-child { border-top-left-radius: @block-borderRadius-inner; border-top-right-radius: @block-borderRadius-inner; } &:last-of-type .message-cell:last-child { border-bottom-left-radius: @block-borderRadius-inner; border-bottom-right-radius: @block-borderRadius-inner; } } .message--simple .message-cell--user + .message-cell { border-radius: 0; border-top-left-radius: @block-borderRadius-inner; border-top-right-radius: @block-borderRadius-inner; } } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .message .message-inner .message-cell { border-radius: 0; &:first-child, &:last-child { border-radius: 0; } } .message--simple .message-cell--user + .message-cell { border-radius: 0; } } } .message--article { &.is-moderated { background: @xf-contentHighlightBg; } &.is-deleted { opacity: .65; } } // article preview view for thread list .message--articlePreview { display: flex; flex-direction: column; min-width: 0; margin-bottom: @xf-paddingLarge; &:last-child { margin-bottom: 0; } .articlePreview-main { display: flex; flex-direction: column; flex: 1 1 auto; } .articlePreview-image { flex: 0 0 auto; align-self: center; width: 100%; max-width: 750px; background: center / cover @xf-contentAltBg no-repeat; text-decoration: none; &:after { content: ''; display: block; padding-bottom: 75%; } & + .articlePreview-text { .bbImageWrapper, .bbImage { display: none; } } } .articlePreview-text { flex: 1 1 auto; display: flex; min-width: 0; flex-direction: column; padding: @xf-messagePadding; .bbWrapper { .m-fadeOutLines(8, @xf-contentBg); } } .articlePreview-title { margin: 0; font-size: @xf-fontSizeLarge; } .articlePreview-content { flex: 1 1 auto; } .articlePreview-links { text-align: right; padding-top: @xf-blockPaddingV; } .articlePreview-statuses { float: left; display: flex; list-style: none; margin: 0; padding: 0; > li { margin-right: 8px; } .message-newIndicator { font-size: @xf-fontSizeSmall; } } .articlePreview-footer { padding: 0 @xf-blockPaddingH; } .articlePreview-meta { display: flex; align-items: center; border-top: solid 1px @xf-borderColor; padding: @xf-blockPaddingV 0; color: @xf-textColorMuted; font-size: @xf-fontSizeSmall; > li { margin-right: @xf-blockPaddingH; &:last-child { margin-right: 0; } } } .articlePreview-replies { white-space: nowrap; } .articlePreview-by, .articlePreview-repliesLabel { display: none; } } .block--articles.block--messages.block--expanded { .article-title { // from .p-title-value margin: 0 0 5px; font-size: @xf-fontSizeLargest; font-weight: @xf-fontWeightNormal; } .message-snippet-link { margin-top: .5em; text-align: center; } .message + .message { margin-top: @xf-paddingLargest; } } // expanded article grid behavior @supports (display: grid) { @media (min-width: @xf-responsiveMedium) { .block--previews .block-body { display: grid; gap: @xf-paddingLarge; grid-template-rows: auto; grid-template-columns: repeat(2, 1fr); grid-template-areas: "a a"; > .message:first-of-type:last-of-type { grid-area: a; } > .message--articlePreview { margin-bottom: 0; // first five &:nth-of-type(-n+5) { .articlePreview-title { font-size: @xf-fontSizeLarger; } .articlePreview-image { max-width: none; &:after { padding-bottom: 60%; } } .articlePreview-meta { .articlePreview-by { display: block; } } } // first &:first-of-type { grid-area: a; .articlePreview-title { font-size: @xf-fontSizeLargest; } .articlePreview-meta { border-top: none; } .articlePreview-main { flex-direction: row-reverse; } .articlePreview-image { width: 50%; } } } } } // max width multi-columns .m-maxPreviewColumns() { .block--previews .block-body { grid-template-columns: repeat(4, 1fr); grid-template-areas: "a a a a" "b_1 b_1 b_2 b_2" "b_3 b_3 b_4 b_4"; > .message:first-of-type:last-of-type { grid-area: a; } > .message--articlePreview { &:nth-of-type(1) { grid-area: a; } &:nth-of-type(2) { grid-area: b_1; } &:nth-of-type(3) { grid-area: b_2; } &:nth-of-type(4) { grid-area: b_3; } &:nth-of-type(5) { grid-area: b_4; } } } } .p-body-main:not(.p-body-main--withSidebar) { @media (min-width: @xf-responsiveWide) { .m-maxPreviewColumns(); } } .p-body-main--withSidebar { @media (min-width: (@xf-responsiveWide + @xf-sidebarWidth)) { .m-maxPreviewColumns(); } } } ]]>
</template>
<template title="message_macros" type="public" addon_id="XF" version_id="2020970" version_string="2.2.9">
<![CDATA[ <xf:macro name="user_info" arg-user="!" arg-fallbackName=""> <section itemscope itemtype="https://schema.org/Person" class="message-user"> <div class="message-avatar {{ ($xf.options.showMessageOnlineStatus && $user && $user.isOnline()) ? 'message-avatar--online' : '' }}"> <div class="message-avatar-wrapper"> <xf:avatar user="$user" size="m" defaultname="{$fallbackName}" itemprop="image" /> <xf:if is="$xf.options.showMessageOnlineStatus && $user"> <xf:if is="$user.isOnline()"> <span class="message-avatar-online" tabindex="0" data-xf-init="tooltip" data-trigger="auto" title="{{ phrase('online_now')|for_attr }}"></span> <xf:elseif is="property('dt_offline_indicator')" /> <span class="message-avatar-offline" tabindex="0" data-xf-init="tooltip" data-trigger="auto" title="Offline"></span> </xf:if> </xf:if> <xf:if is="{$__globals.thread.user_id} == {$user.user_id} && (property('dt_thread_owner') != 'none')"> <xf:if is="property('dt_thread_owner') == 'icon'"> <div class="message-avatar-owner" data-xf-init="tooltip" title="Thread Owner"> <i class="fas fa-star"></i> </div> </xf:if> </xf:if> </div> </div> <div class="message-userDetails"> <div class="message-userName"> <h4 class="message-name"><xf:username user="$user" rich="true" defaultname="{$fallbackName}" itemprop="name" /></h4> </div> <xf:usertitle user="$user" tag="h5" class="message-userTitle" banner="true" itemprop="jobTitle" /> <xf:userbanners user="$user" tag="div" class="message-userBanner" itemprop="jobTitle" /> </div> <xf:if is="$user.user_id"> <xf:set var="$extras" value="{{ property('messageUserElements') }}" /> <xf:if contentcheck="true"> <div class="message-userExtras{{ (property('dt_collapsible_extras') AND property('dt_messages_layout') == 'option1') ? ' message-userExtras-body message-userExtras--collapsible' : '' }}"> <xf:contentcheck> <xf:if is="$extras.register_date"> <dl class="pairs pairs--justified"> <dt>{{ phrase('joined') }}</dt> <dd>{{ date($user.register_date) }}</dd> </dl> </xf:if> <xf:if is="$extras.message_count"> <dl class="pairs pairs--justified"> <dt>{{ phrase('messages') }}</dt> <dd>{$user.message_count|number}</dd> </dl> </xf:if> <xf:if is="$extras.solutions AND $user.question_solution_count"> <dl class="pairs pairs--justified"> <dt>{{ phrase('solutions') }}</dt> <dd>{$user.question_solution_count|number}</dd> </dl> </xf:if> <xf:if is="$extras.reaction_score"> <dl class="pairs pairs--justified"> <dt>{{ phrase('reaction_score') }}</dt> <dd>{$user.reaction_score|number}</dd> </dl> </xf:if> <xf:if is="$extras.trophy_points && $xf.options.enableTrophies"> <dl class="pairs pairs--justified"> <dt>{{ phrase('points') }}</dt> <dd>{$user.trophy_points|number}</dd> </dl> </xf:if> <xf:if is="$extras.age && $user.Profile.age"> <dl class="pairs pairs--justified"> <dt>{{ phrase('age') }}</dt> <dd>{$user.Profile.age}</dd> </dl> </xf:if> <xf:if is="$extras.location && $user.Profile.location"> <dl class="pairs pairs--justified"> <dt>{{ phrase('location') }}</dt> <dd> <xf:if is="$xf.options.geoLocationUrl"> <a href="{{ link('misc/location-info', '', {'location': $user.Profile.location}) }}" rel="nofollow noreferrer" target="_blank" class="u-concealed">{$user.Profile.location}</a> <xf:else /> {$user.Profile.location} </xf:if> </dd> </dl> </xf:if> <xf:if is="$extras.website && $user.Profile.website"> <dl class="pairs pairs--justified"> <dt>{{ phrase('website') }}</dt> <dd><a href="{$user.Profile.website}" rel="nofollow" target="_blank">{$user.Profile.website|url('host', phrase('visit_site'))}</a></dd> </dl> </xf:if> <xf:if is="$extras.custom_fields"> <xf:macro template="custom_fields_macros" name="custom_fields_values" arg-type="users" arg-group="personal" arg-set="{$user.Profile.custom_fields}" arg-additionalFilters="{{ ['message'] }}" arg-valueClass="pairs pairs--justified" /> <xf:if is="$user.canViewIdentities()"> <xf:macro template="custom_fields_macros" name="custom_fields_view" arg-type="users" arg-group="contact" arg-set="{$user.Profile.custom_fields}" arg-additionalFilters="{{ ['message'] }}" arg-valueClass="pairs pairs--justified" /> </xf:if> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:if> <span class="message-userArrow"></span> </section> </xf:macro> <xf:macro name="user_info_simple" arg-user="!" arg-fallbackName=""> <header itemscope itemtype="https://schema.org/Person" class="message-user"> <meta itemprop="name" content="{{ $user.username ?: $fallbackName }}"> <div class="message-avatar"> <div class="message-avatar-wrapper"> <xf:avatar user="$user" size="s" defaultname="{$fallbackName}" itemprop="image" /> </div> </div> <span class="message-userArrow"></span> </header> </xf:macro> <xf:macro name="attachments" arg-attachments="!" arg-message="!" arg-canView="!"> <xf:if contentcheck="true"> <xf:css src="attachments.less" /> <section class="message-attachments"> <h4 class="block-textHeader">{{ phrase('attachments') }}</h4> <ul class="attachmentList"> <xf:contentcheck> <xf:foreach loop="$attachments" value="$attachment" if="!$message.isAttachmentEmbedded($attachment)"> <xf:macro template="attachment_macros" name="attachment_list_item" arg-attachment="{$attachment}" arg-canView="{$canView}" /> </xf:foreach> </xf:contentcheck> </ul> </section> </xf:if> </xf:macro> <xf:macro name="signature" arg-user="!"> <xf:if is="$xf.visitor.Option.content_show_signature AND $user.Profile.signature"> <xf:if contentcheck="true"> <aside class="message-signature"> <xf:contentcheck> {{ bb_code($user.Profile.signature, 'user:signature', $user) }} </xf:contentcheck> </aside> </xf:if> </xf:if> </xf:macro> ]]>
</template>
<template title="mubi_user_ban_macros" type="public" addon_id="MMO/UserBanInfo" version_id="2010370" version_string="2.1.3">
<![CDATA[ <xf:macro name="banInfo" arg-user="!"> <div style="background: linear-gradient(135deg, #2a2a2a 0%, #1f1f1f 100%); border-radius: 8px; padding: 15px; margin: 10px 0;"> <p style="color: #ff8c00; font-size: 18px; text-align: center; padding: 10px; border-bottom: 1px solid #444; margin-bottom: 10px;"> <strong><xf:fa icon="fa-user-times" style="color: #ff8c00;" title="Ïîëüçîâàòåëü: {$user.username} áûë çàáëîêèðîâàí çà íàðóøåíèå ïðàâèë" /> Ïîëüçîâàòåëü: <xf:username user="{$user}" style="color: grey; text-shadow: black 1px 1px 10px; text-decoration: none;" /> áûë çàáëîêèðîâàí çà <a href="https://forum.crmp.online/pages/forum-rules/" target="_blank" style="color: #ff8c00; text-decoration: underline;">íàðóøåíèå ïðàâèë</a> </strong> </p> <p style="color: #ffa500; background: linear-gradient(90deg, #3a3a3a 0%, #444 100%); padding: 12px; border-radius: 6px; border-left: 3px solid #ffa500; margin: 10px 0;"> <xf:fa icon="fa-exclamation-triangle" style="margin-right: 8px;" /> Èíôîðìàöèÿ î áëîêèðîâêå ïîëüçîâàòåëÿ </p> <div style="color: #cccccc; padding: 10px;"> <div style="display: flex; align-items: center; margin-bottom: 6px; padding: 4px 0;"> <xf:fa icon="fa-user-circle" style="color: #ff8c00; margin-right: 15px; font-size: 16px; min-width: 24px; text-align: center;" title="Çàáëîêèðîâàë" /> <strong style="min-width: 140px;">Çàáëîêèðîâàë:</strong> <xf:username user="{$user.Ban.BanUser}" rich="true" notooltip="true" style="color: inherit; text-decoration: none;" /> </div> <div style="display: flex; align-items: center; margin-bottom: 6px; padding: 4px 0;"> <xf:fa icon="fa-calendar" style="color: #ff8c00; margin-right: 15px; font-size: 16px; min-width: 24px; text-align: center;" title="Äàòà íà÷àëà áëîêèðîâêè" /> <strong style="min-width: 140px;">Äàòà íà÷àëà:</strong> {{ date($user.Ban.ban_date) }} </div> <div style="display: flex; align-items: center; margin-bottom: 6px; padding: 4px 0;"> <xf:fa icon="fa-flag" style="color: #ff8c00; margin-right: 15px; font-size: 16px; min-width: 24px; text-align: center;" title="Äàòà îêîí÷àíèÿ áëîêèðîâêè"/> <strong style="min-width: 140px;">Äàòà îêîí÷àíèÿ:</strong> {{ $user.Ban.end_date ? date($user.Ban.end_date) : phrase('never') }} </div> <div style="display: flex; align-items: center; margin-bottom: 6px; padding: 4px 0;"> <xf:fa icon="fa-comment" style="color: #ff8c00; margin-right: 15px; font-size: 16px; min-width: 24px; text-align: center;" title="Ïðè÷èíà áëîêèðîâêè"/> <strong style="min-width: 140px;">Ïðè÷èíà:</strong> {{ $user.Ban.user_reason ? structured_text($user.Ban.user_reason) : phrase('n_a') }} </div> <div style="display: flex; align-items: center; padding: 4px 0;"> <xf:fa icon="fa-fire" style="color: #ff8c00; margin-right: 15px; font-size: 16px; min-width: 24px; text-align: center;" title="Àâòîìàòè÷åñêè àêòèâèðîâàíî" /> <strong style="min-width: 140px;">Àâòîìàòè÷åñêè çàáëîêèðîâàí:</strong> {{ $user.Ban.triggered ? phrase('yes') : phrase('no') }} </div> </div> <div style="text-align: center; margin-top: 15px; padding-top: 10px; border-top: 1px solid #444;"> <xf:fa icon="fa-lock" style="color: #ff8c00; font-size: 24px;" /> </div> </div> </xf:macro> <xf:macro name="messageInfo" arg-user=""> <div style="background: linear-gradient(135deg, #2a2a2a 0%, #1f1f1f 100%); color: #ffa500; border-radius: 8px; padding: 20px; text-align: center; margin: 10px 0;"> <xf:fa icon="fa-shield-alt" style="font-size: 32px; margin-bottom: 10px; display: block; color: #ff8c00;" /> <strong style="font-size: 16px;"> <xf:if is="$user"> <a href="{{ link('members', $user) }}" style="color: inherit; text-decoration: none; cursor: pointer;"> Äàííûé ïîëüçîâàòåëü çàáëîêèðîâàí </a> <xf:else /> Äàííûé ïîëüçîâàòåëü çàáëîêèðîâàí </xf:if> </strong> <div style="margin-top: 10px; font-size: 14px; color: #cccccc;"> Ìû íå ñîâåòóåì ïðîâîäèòü ñ íèì êàêèå ëèáî ñäåëêè </div> </div> </xf:macro> ]]>
</template>
<template title="node_list.less" type="public" addon_id="XF" version_id="2021171" version_string="2.2.11">
<![CDATA[ @_nodeList-statsCellBreakpoint: 1000px; .block.block--category { .block-container { background: none; border: none; box-shadow: none; } .block-header { .block-desc { color: fade(@xf-textColorEmphasized, 80%); } } } .node { position: relative; &::before { content: ''; display: block; position: absolute; top: 8px; right: 8px; clip-path: polygon(85% 15%, 15% 15%, 0 0, 100% 0, 100% 100%, 85% 85%); background-color: currentColor; opacity: .1; width: 25px; height: 25px; pointer-events: none; } & + .node { margin-top: @xf-paddingLarge; } } .node-body { display: table; table-layout: fixed; width: 100%; background: @xf-contentBg; padding-left: @xf-paddingLarge; border-radius: @xf-blockBorderRadius; box-shadow: 0px 0px 20px 0px rgba(27, 26, 35, .3); } .node-icon { display: table-cell; vertical-align: middle; text-align: center; width: 80px; padding: @xf-paddingLarge 0 @xf-paddingLarge @xf-paddingLarge; i { display: block; width: 70px; height: 70px; line-height: 70px; background: fade(@xf-nodeIconReadColor, 15%); color: @xf-nodeIconReadColor; font-size: 28px; border-radius: 50%; .node--unread & { background: fade(@xf-nodeIconUnreadColor, 80%); color: @xf-textColorEmphasized; } &:before { .m-faBase(); font-weight: 700; } .node--category &:before { .m-faContent(@fa-var-comments); } .node--forum &:before { .m-faContent(@fa-var-{{ property('dt_node_icon') }}); } .node--search &::before { .m-faContent(@fa-var-search); } .node--page &:before { .m-faContent(@fa-var-{{ property('dt_page_node_icon') }}, .86em); } .node--link &:before { .m-faContent(@fa-var-{{ property('dt_link_node_icon') }}, .93em); } } } .node-img { display: table-cell; vertical-align: middle; width: 80px; height: 70px; padding: @xf-paddingLargest 0 @xf-paddingLargest @xf-paddingLarge; i { display: block; width: 100%; height: 70px; background-color: @xf-nodeIconReadColor; background-repeat: no-repeat; background-position: center; background-size: cover; border-radius: 50%; } } .node-main { display: table-cell; vertical-align: middle; padding: @xf-paddingLarge @xf-paddingLargest @xf-paddingLarge @xf-elementSpacer; } .node-info { display: table-cell; width: 300px; padding: @xf-paddingLarge; } .node-stats { padding: @xf-paddingLarge 0; overflow: hidden; > dl.pairs.pairs--rows { width: 50%; float: left; margin: 0; padding: 0 @xf-paddingMedium/2; &:first-child { padding-left: 0; } &:last-child { padding-right: 0; } > dt { color: @xf-textColor; font-size: 90%; font-weight: 500; text-transform: uppercase; } > dd { color: @xf-linkColor; font-size: @xf-fontSizeLargest; font-weight: 500; } } &.node-stats--single { width: 100px; > dl.pairs.pairs--rows { width: 100%; float: none; } } &.node-stats--triple { width: 240px; > dl.pairs.pairs--rows { width: 33.333%; } } @media (max-width: @_nodeList-statsCellBreakpoint) { display: none; } } @_nodeExtra-avatarSize: 19px; .node-extra { display: block; padding: @xf-paddingLarge 0; font-size: @xf-fontSizeSmall; border-top: @xf-borderSize solid @xf-borderColor; } .node-extra-row { .m-overflowEllipsis(); color: @xf-textColorMuted; &:last-child { padding-top: @xf-paddingMedium; } } .node-extra-icon { padding-right: @xf-paddingLarge; .avatar { .m-avatarSize(@_nodeExtra-avatarSize); } } .node-title { margin: 0; padding: 0; font-size: @xf-fontSizeLarger; font-weight: 500; .node--unread & { font-weight: @xf-fontWeightHeavy; } } .node-description { font-size: @xf-fontSizeSmall; color: @xf-textColorDimmed; padding-top: @xf-paddingSmall; &.node-description--tooltip { .has-js:not(.has-touchevents) & { display: none; } } } .node-meta { font-size: @xf-fontSizeSmall; } .node-statsMeta { display: none; @media (max-width: @_nodeList-statsCellBreakpoint) { display: inline; } } .node-bonus { font-size: @xf-fontSizeSmall; color: @xf-textColorMuted; text-align: right; } .node-subNodesFlat { font-size: @xf-fontSizeSmall; margin-top: .3em; .node-subNodesLabel { display: none; } } .node-subNodeMenu { display: inline; .menuTrigger { color: @xf-textColorMuted; } } @media (max-width: @xf-responsiveWide) { .node-extra { border-top: none; } } @media (max-width: @xf-responsiveMedium) { .node-main { display: block; width: auto; .node--link &, .node--page & { // #168882: we only display the title for these types // so keep these as table-cells for vertical alignment display: table-cell; } } .node-info { display: block; width: auto; // this gives an equivalent of medium padding between main and extra, with main still having large margin-top: (@xf-paddingMedium - @xf-paddingLarge); padding-top: 0; padding-left: 20px; } .node-extra { padding: @xf-paddingMedium 0; } .node-extra-row { display: inline-block; vertical-align: bottom; max-width: 100%; } .node-extra-icon { display: none; } .node-description, .node-stats, .node-subNodesFlat { display: none; } } @media (max-width: @xf-responsiveNarrow) { .node-subNodeMenu { display: none; } } .subNodeLink { &:before, .subNodeLink-icon { display: inline-block; width: 1.28571429em; margin-right: .3em; text-decoration: none; text-align: center; color: rgba(255, 255, 255, 0.45); } &:before { .m-faBase(); } &:hover:before { &:before, .subNodeLink-icon { text-decoration: none; } } &.subNodeLink--unread { font-weight: @xf-fontWeightHeavy; &:before, .subNodeLink-icon { color: @xf-nodeIconUnreadColor; } } &.subNodeLink--category:before { .m-faContent(@fa-var-comments); } &.subNodeLink--page:before { .m-faContent(@fa-var-file-alt); } &.subNodeLink--link:before { .m-faContent(@fa-var-link); } &.subNodeLink--search::before { .m-faContent(@fa-var-search); } } .node-subNodeFlatList { .m-listPlain(); .m-clearFix(); > li { display: inline-block; margin-right: 1em; &:last-child { margin-right: 0; } } ol, ul, .node-subNodes { display: none; } } .subNodeMenu { .m-listPlain(); ol, ul { .m-listPlain(); } .subNodeLink { display: block; padding: @xf-blockPaddingV @xf-blockPaddingH; color: @xf-menuLinkRow--color; text-decoration: none; cursor: pointer; &:hover { .xf-menuLinkRowSelected(); } } li li .subNodeLink { padding-left: 1.5em; } li li li .subNodeLink { padding-left: 3em; } li li li li .subNodeLink { padding-left: 4.5em; } li li li li li .subNodeLink { padding-left: 6em; } li li li li li li .subNodeLink { padding-left: 7.5em; } } ]]>
</template>
<template title="node_list_category" type="public" addon_id="XF" version_id="2020970" version_string="2.2.9">
<![CDATA[ <xf:macro name="depth1" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <div class="block block--category block--category{$node.node_id}"> <span class="u-anchorTarget" id="{$node.Data.getCategoryAnchor()}"></span> <div class="block-container"> <h2 class="block-header"> <xf:if is="property('dt_cat_description') == 'option3' && {$node.description}"> <a href="{{ link('categories', $node) }}" data-xf-init="tooltip" title="{$node.description|raw}">{$node.title}</a> <xf:else /> <a href="{{ link('categories', $node) }}">{$node.title}</a> </xf:if> <xf:if is="property('dt_cat_description') != 'option3' && {$node.description}"><span class="block-desc">{$node.description|raw}</span></xf:if> <xf:if is="property('dt_collapsible_categories')"> <span id="collapse-{$node.node_id}" class="collapseTrigger collapseTrigger--block {{ !is_toggled('_node-' . $node.node_id) ? ' is-active' : '' }}" title="Toggle Visibilty" data-xf-click="toggle" data-xf-init="toggle-storage" data-storage-type="cookie" data-target=".block--category{$node.node_id} .block-body" data-storage-key="_node-{$node.node_id}"></span> </xf:if> </h2> <xf:if is="property('dt_collapsible_categories')"> <div class="block-body block-body--collapsible {{ !is_toggled('_node-' . $node.node_id) ? ' is-active' : '' }}"> <xf:else /> <div class="block-body"> </xf:if> <xf:macro template="forum_list" name="node_list" arg-children="{$children}" arg-extras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </div> </div> </div> </xf:macro> <xf:macro name="depth2" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <div class="node node--id{$node.node_id} node--depth{$depth} node--category {{ $extras.hasNew ? 'node--unread' : 'node--read' }}"> <div class="node-body"> <span class="node-icon" aria-hidden="true"><i></i></span> <div class="node-main js-nodeMain"> <xf:set var="$descriptionDisplay" value="{{ property('nodeListDescriptionDisplay') }}" /> <h3 class="node-title"> <a href="{{ link('categories', $node) }}" data-xf-init="{{ $descriptionDisplay == 'tooltip' ? 'element-tooltip' : '' }}" data-shortcut="node-description">{$node.title}</a> </h3> <xf:if is="$descriptionDisplay != 'none' && $node.description"> <div class="node-description {{ $descriptionDisplay == 'tooltip' ? 'node-description--tooltip js-nodeDescTooltip' : '' }}">{$node.description|raw}</div> </xf:if> <div class="node-meta"> <xf:if is="!{$extras.privateInfo}"> <div class="node-statsMeta"> <dl class="pairs pairs--inline"> <dt>{{ phrase('threads') }}</dt> <dd>{$extras.discussion_count|number_short(1)}</dd> </dl> <dl class="pairs pairs--inline"> <dt>{{ phrase('messages') }}</dt> <dd>{$extras.message_count|number_short(1)}</dd> </dl> </div> </xf:if> <xf:if is="$depth == 2 AND property('nodeListSubDisplay') == 'menu'"> <xf:macro template="forum_list" name="sub_nodes_menu" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:if> </div> <xf:if is="$depth == 2 AND property('nodeListSubDisplay') == 'flat'"> <xf:macro template="forum_list" name="sub_nodes_flat" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:if> </div> <xf:if is="!{$extras.privateInfo}"> <div class="node-stats"> <dl class="pairs pairs--rows"> <dt>{{ phrase('threads') }}</dt> <dd>{$extras.discussion_count|number_short(1)}</dd> </dl> <dl class="pairs pairs--rows"> <dt>{{ phrase('messages') }}</dt> <dd>{$extras.message_count|number_short(1)}</dd> </dl> </div> </xf:if> <div class="node-extra"> <xf:if is="{$extras.privateInfo}"> <span class="node-extra-placeholder">{{ phrase('private') }}</span> <xf:elseif is="{$extras.LastThread}" /> <div class="node-extra-icon"> <xf:if is="$xf.visitor.isIgnoring($extras.last_post_user_id)"> <xf:avatar user="{{ null }}" size="xs" /> <xf:else /> <xf:avatar user="{$extras.LastPostUser}" defaultname="{$extras.last_post_username}" size="xs" /> </xf:if> </div> <div class="node-extra-row"> <xf:if is="$extras.LastThread.isUnread()"> <a href="{{ link('threads/unread', $extras.LastThread) }}" class="node-extra-title" title="{$extras.LastThread.title}">{{ prefix('thread', $extras.LastThread) }}{$extras.LastThread.title}</a> <xf:else /> <a href="{{ link('threads/post', $extras.LastThread, {'post_id': $extras.last_post_id}) }}" class="node-extra-title" title="{$extras.LastThread.title}">{{ prefix('thread', $extras.LastThread) }}{$extras.LastThread.title}</a> </xf:if> </div> <div class="node-extra-row"> <ul class="listInline listInline--bullet"> <li class="node-extra-date"><xf:date time="{$extras.last_post_date}" /></li> <xf:if is="$xf.visitor.isIgnoring($extras.last_post_user_id)"> <li class="node-extra-user">{{ phrase('ignored_member') }}</li> <xf:else /> <li class="node-extra-user"><xf:username user="{$extras.LastPostUser}" defaultname="{$extras.last_post_username}" /></li> </xf:if> </ul> </div> <xf:else /> <span class="node-extra-placeholder">{{ phrase('none') }}</span> </xf:if> </div> </div> </div> </xf:macro> <xf:macro name="depthN" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <li> <a href="{{ link('categories', $node) }}" class="subNodeLink subNodeLink--category {{ $extras.hasNew ? 'subNodeLink--unread' : '' }}">{$node.title}</a> <xf:macro template="forum_list" name="sub_node_list" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </li> </xf:macro> ]]>
</template>
<template title="node_list_forum" type="public" addon_id="XF" version_id="2020970" version_string="2.2.9">
<![CDATA[ <xf:macro name="depth1" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <div class="block"> <div class="block-container"> <div class="block-body"> <xf:macro name="forum" arg-node="{$node}" arg-extras="{$extras}" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{$depth}" /> </div> </div> </div> </xf:macro> <xf:macro name="depth2" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <xf:macro name="forum" arg-node="{$node}" arg-extras="{$extras}" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{$depth}" /> </xf:macro> <xf:macro name="depthN" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <li> <a href="{{ link('forums', $node) }}" class="subNodeLink subNodeLink--forum {{ $extras.hasNew ? 'subNodeLink--unread' : '' }}"> <xf:fa icon="{{ $node.Data.TypeHandler.getTypeIconClass() ?: 'fa-comments' }}" class="subNodeLink-icon" />{$node.title} </a> <xf:macro template="forum_list" name="sub_node_list" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </li> </xf:macro> <xf:macro name="forum" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="!" arg-chooseName="" arg-bonusInfo=""> <div class="node node--id{$node.node_id} node--depth{$depth} node--forum {{ $extras.hasNew ? 'node--unread' : 'node--read' }}"> <div class="node-body"> <xf:if is="property('dt_node_background') AND $node.node_background"> <span class="node-img"><i style="background-image: url('{$node.node_background}')"></i></span> <xf:else /> <span class="node-icon" aria-hidden="true"> <xf:fa icon="{{ $node.Data.TypeHandler.getTypeIconClass() ?: 'fa-comments' }}" /> </span> </xf:if> <div class="node-main js-nodeMain"> <xf:if is="$chooseName"> <xf:checkbox standalone="true"> <xf:option labelclass="u-pullRight" class="js-chooseItem" name="{$chooseName}[]" value="{$node.node_id}" /> </xf:checkbox> </xf:if> <xf:set var="$descriptionDisplay" value="{{ property('nodeListDescriptionDisplay') }}" /> <h3 class="node-title"> <a href="{{ link('forums', $node) }}" data-xf-init="{{ $descriptionDisplay == 'tooltip' ? 'element-tooltip' : '' }}" data-shortcut="node-description">{$node.title}</a> <xf:if is="property('dt_new_indicator')"><span class="node--newIndicator">{{ phrase('new') }}</span></xf:if> </h3> <xf:if is="$descriptionDisplay != 'none' && $node.description"> <div class="node-description {{ $descriptionDisplay == 'tooltip' ? 'node-description--tooltip js-nodeDescTooltip' : '' }}">{$node.description|raw}</div> </xf:if> <div class="node-meta"> <xf:if is="!{$extras.privateInfo}"> <div class="node-statsMeta"> <xf:if is="property('dt_nodestat_simple')"> <dl class="pairs pairs--inline"> <dt>{{ phrase('threads') }}</dt> <dd>{$extras.discussion_count|number_short(1)}</dd> </dl> <xf:else /> <dl class="pairs pairs--inline"> <dt>{{ phrase('threads') }}</dt> <dd>{$extras.discussion_count|number_short(1)}</dd> </dl> <dl class="pairs pairs--inline"> <dt>{{ phrase('messages') }}</dt> <dd>{$extras.message_count|number_short(1)}</dd> </dl> </xf:if> </div> </xf:if> <xf:if is="$depth == 2 AND property('nodeListSubDisplay') == 'menu'"> <xf:macro template="forum_list" name="sub_nodes_menu" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:if> </div> <xf:if is="$depth == 2 AND property('nodeListSubDisplay') == 'flat'"> <xf:macro template="forum_list" name="sub_nodes_flat" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:if> <xf:if is="$bonusInfo is not empty"> <div class="node-bonus">{$bonusInfo}</div> </xf:if> </div> <div class="node-info"> <xf:if is="!{$extras.privateInfo}"> <div class="node-stats"> <xf:if is="property('dt_nodestat_simple')"> <dl class="pairs pairs--rows"> <dd>{$extras.discussion_count|number_short(1)}</dd> <dt>{{ phrase('threads') }}</dt> </dl> <xf:else /> <dl class="pairs pairs--rows"> <dt>{{ phrase('threads') }}</dt> <dd>{$extras.discussion_count|number_short(1)}</dd> </dl> <dl class="pairs pairs--rows"> <dt>{{ phrase('messages') }}</dt> <dd>{$extras.message_count|number_short(1)}</dd> </dl> </xf:if> </div> </xf:if> <div class="node-extra"> <xf:if is="{$extras.privateInfo}"> <span class="node-extra-placeholder">{{ phrase('private') }}</span> <xf:elseif is="{$extras.LastThread}" /> <div class="node-extra-row"> <xf:if is="$extras.LastThread.isUnread()"> <a href="{{ link('threads/unread', $extras.LastThread) }}" class="node-extra-title" title="{$extras.LastThread.title}">{{ prefix('thread', $extras.LastThread) }}{$extras.LastThread.title}</a> <xf:else /> <a href="{{ link('threads/post', $extras.LastThread, {'post_id': $extras.last_post_id}) }}" class="node-extra-title" title="{$extras.LastThread.title}">{{ prefix('thread', $extras.LastThread) }}{$extras.LastThread.title}</a> </xf:if> </div> <div class="node-extra-row"> <ul class="listInline listInline--bullet"> <li class="node-extra-icon"> <xf:if is="$xf.visitor.isIgnoring($extras.last_post_user_id)"> <xf:avatar user="{{ null }}" size="xs" /> <xf:else /> <xf:avatar user="{$extras.LastPostUser}" defaultname="{$extras.last_post_username}" size="xs" /> </xf:if> </li> <li><xf:date time="{$extras.last_post_date}" class="node-extra-date" /></li> <xf:if is="$xf.visitor.isIgnoring($extras.last_post_user_id)"> <li class="node-extra-user">{{ phrase('ignored_member') }}</li> <xf:else /> <li class="node-extra-user"><xf:username user="{$extras.LastPostUser}" defaultname="{$extras.last_post_username}" /></li> </xf:if> </ul> </div> <xf:else /> <span class="node-extra-placeholder">{{ phrase('none') }}</span> </xf:if> </div> </div> </div> </div> <xf:if is="{$depth} == 1"> <xf:macro template="forum_list" name="node_list" arg-children="{$children}" arg-extras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:if> </xf:macro> ]]>
</template>
<template title="node_list_search_forum" type="public" addon_id="XF" version_id="2020970" version_string="2.2.9">
<![CDATA[ <xf:macro name="depth1" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <div class="block"> <div class="block-container"> <div class="block-body"> <xf:macro name="search_forum" arg-node="{$node}" arg-extras="{$extras}" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{$depth}" /> </div> </div> </div> </xf:macro> <xf:macro name="depth2" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <xf:macro name="search_forum" arg-node="{$node}" arg-extras="{$extras}" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{$depth}" /> </xf:macro> <xf:macro name="depthN" arg-node="!" arg-extras="!" arg-children="!" arg-childExtras="!" arg-depth="1"> <li> <a href="{{ link('search-forums', $node) }}" class="subNodeLink subNodeLink--search">{$node.title}</a> <xf:macro template="forum_list" name="sub_node_list" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </li> </xf:macro> <xf:macro name="search_forum" arg-node="!" arg-extras="!" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="!"> <div class="node node--id{$node.node_id} node--depth{$depth} node--search"> <div class="node-body"> <span class="node-icon" aria-hidden="true"><i></i></span> <div class="node-main js-nodeMain"> <xf:set var="$descriptionDisplay" value="{{ property('nodeListDescriptionDisplay') }}" /> <h3 class="node-title"> <a href="{{ link('search-forums', $node) }}" data-xf-init="{{ $descriptionDisplay == 'tooltip' ? 'element-tooltip' : '' }}" data-shortcut="node-description"> {$node.title} </a> </h3> <xf:if is="$descriptionDisplay != 'none' && $node.description"> <div class="node-description {{ $descriptionDisplay == 'tooltip' ? 'node-description--tooltip js-nodeDescTooltip' : '' }}"> {$node.description|raw} </div> </xf:if> <div class="node-meta"> <div class="node-statsMeta"> <dl class="pairs pairs--inline"> <dt>{{ phrase('threads') }}</dt> <dd>{$extras.discussion_count|number_short(1)}{{ $extras.discussion_count == $extras.max_results ? '+' : ''}}</dd> </dl> <dl class="pairs pairs--inline"> <dt>{{ phrase('messages') }}</dt> <dd>{$extras.message_count|number_short(1)}</dd> </dl> </div> <xf:if is="$depth == 2 && property('nodeListSubDisplay') == 'menu'"> <xf:macro template="forum_list" name="sub_nodes_menu" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:if> </div> <xf:if is="$depth == 2 && property('nodeListSubDisplay') == 'flat'"> <xf:macro template="forum_list" name="sub_nodes_flat" arg-children="{$children}" arg-childExtras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:if> </div> <div class="node-info"> <div class="node-stats"> <dl class="pairs pairs--rows"> <dt>{{ phrase('threads') }}</dt> <dd>{$extras.discussion_count|number_short(1)}{{ $extras.discussion_count == $extras.max_results ? '+' : ''}}</dd> </dl> <dl class="pairs pairs--rows"> <dt>{{ phrase('messages') }}</dt> <dd>{$extras.message_count|number_short(1)}</dd> </dl> </div> <div class="node-extra"> <xf:if is="$extras.discussion_count"> <xf:if is="$extras.LastThread"> <div class="node-extra-icon"> <xf:if is="$xf.visitor.isIgnoring($extras.last_post_user_id)"> <xf:avatar user="{{ null }}" size="xs" /> <xf:else /> <xf:avatar user="{$extras.LastPostUser}" defaultname="{$extras.last_post_username}" size="xs" /> </xf:if> </div> <div class="node-extra-row"> <xf:if is="$extras.LastThread.isUnread()"> <a href="{{ link('threads/unread', $extras.LastThread) }}" class="node-extra-title" title="{$extras.LastThread.title}"> {{ prefix('thread', $extras.LastThread) }}{$extras.LastThread.title} </a> <xf:else /> <a href="{{ link('threads/post', $extras.LastThread, {'post_id': $extras.last_post_id}) }}" class="node-extra-title" title="{$extras.LastThread.title}"> {{ prefix('thread', $extras.LastThread) }}{$extras.LastThread.title} </a> </xf:if> </div> <div class="node-extra-row"> <ul class="listInline listInline--bullet"> <li><xf:date time="{$extras.last_post_date}" class="node-extra-date" /></li> <xf:if is="$xf.visitor.isIgnoring($extras.last_post_user_id)"> <li class="node-extra-user">{{ phrase('ignored_member') }}</li> <xf:else /> <li class="node-extra-user"><xf:username user="{$extras.LastPostUser}" defaultname="{$extras.last_post_username}" /></li> </xf:if> </ul> </div> <xf:else /> <span class="node-extra-placeholder">{{ phrase('private') }}</span> </xf:if> <xf:else /> <span class="node-extra-placeholder">{{ phrase('none') }}</span> </xf:if> </div> </div> </div> </div> <xf:if is="{$depth} == 1"> <xf:macro template="forum_list" name="node_list" arg-children="{$children}" arg-extras="{$childExtras}" arg-depth="{{ $depth + 1 }}" /> </xf:if> </xf:macro> ]]>
</template>
<template title="post_macros" type="public" addon_id="XF" version_id="2021370" version_string="2.2.13">
<![CDATA[ <xf:macro name="post" arg-post="!" arg-thread="!" arg-highlightedPosts="{{ [] }}"> <xf:css src="message.less" /> <xf:extension name="before"></xf:extension> <xf:extension name="extra_classes" value="message--post" /> <article class="message {{ extension_value('extra_classes') }} js-post js-inlineModContainer {{ $post.position % $xf.options.messagesPerPage == 0 ? 'is-first' : '' }} {{ $post.isIgnored() ? 'is-ignored' : '' }} {{ $post.isUnread() ? ' is-unread' : '' }}" data-author="{{ $post.User.username ?: $post.username }}" data-content="post-{$post.post_id}" id="js-post-{$post.post_id}"> <span class="u-anchorTarget" id="post-{$post.post_id}"></span> <xf:extension name="full_body"> <div class="message-inner"> <xf:extension name="user_cell"> <div class="message-cell message-cell--user"> <xf:macro template="message_macros" name="user_info" arg-user="{$post.User}" arg-fallbackName="{$post.username}"/> <xf:if is="property('dt_collapsible_extras') && property('dt_messages_layout') == 'option1'"><span id="collapse-{$post.post_id}" class="collapseTrigger collapseTrigger--block" data-xf-click="toggle" data-target="#js-post-{$post.post_id} .message-userExtras"></span></xf:if> </div> </xf:extension> <xf:extension name="main_cell"> <div class="message-cell message-cell--main <xf:include template="xf_post_highligh"/>"> <xf:extension name="main_cell_inner"> <div class="message-main js-quickEditTarget"> <xf:extension name="attribution"> <xf:macro name="post_attribution" arg-post="{$post}" arg-thread="{$thread}" /> </xf:extension> <div class="message-content js-messageContent"> <xf:extension name="content"> <xf:extension name="notices"> <xf:macro name="post_notices" arg-post="{$post}" arg-thread="{$thread}" /> </xf:extension> <xf:extension name="user_content"> <xf:macro name="post_user_content" arg-post="{$post}" arg-thread="{$thread}" /> </xf:extension> <xf:extension name="after_content"> <xf:macro name="post_last_edit" arg-post="{$post}" /> </xf:extension> <xf:extension name="signature"> <xf:macro template="message_macros" name="signature" arg-user="{$post.User}" /> </xf:extension> </xf:extension> </div> <xf:extension name="footer"> <xf:macro name="post_footer" arg-post="{$post}" arg-thread="{$thread}" /> </xf:extension> </div> </xf:extension> </div> </xf:extension> </div> </xf:extension> </article> <xf:extension name="after"></xf:extension> <xf:ad position="post_below_container" arg-post="{$post}" /> </xf:macro> <xf:macro name="post_attribution" arg-post="!" arg-thread="!" arg-showPosition="{{ true }}" arg-showUser="{{ false }}" arg-showThreadUnreadIndicator="{{ false }}" arg-showReplyCount="{{ false }}" arg-repliesPhrase="{{ phrase('replies:') }}" arg-showThreadStateIcons="{{ false }}" arg-mainClass="" arg-oppositeClass=""> <header class="message-attribution message-attribution--split"> <ul class="message-attribution-main listInline {$mainClass}"> <xf:if is="$showThreadStateIcons"> <xf:if is="{$xf.visitor.user_id} AND {$thread.Watch.{$xf.visitor.user_id}}"> <li> <xf:fa icon="fa-bell" title="{{ phrase('thread_watched')|for_attr }}" /> <span class="u-srOnly">{{ phrase('thread_watched') }}</span> </li> </xf:if> <xf:if is="$thread.sticky"> <li> <xf:fa icon="fa-thumbtack" title="{{ phrase('sticky')|for_attr }}" /> <span class="u-srOnly">{{ phrase('sticky') }}</span> </li> </xf:if> </xf:if> <xf:if is="$showUser"> <xf:set var="$username"><xf:username user="{$post.User}" defaultname="{$post.username}" /></xf:set> <li class="u-concealed message-attribution-user--top">{{ phrase('by_user_x', {'name':$username}) }}</li> </xf:if> <li class="u-concealed"> <a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" rel="nofollow"> <xf:date time="{$post.post_date}" itemprop="datePublished" /> </a> </li> <xf:if is="$showReplyCount && $thread.reply_count"> <li class="u-concealed"> <a href="{{ link('threads', $thread) }}#posts"> <xf:fa icon="fa-comment" class="u-spaceAfter" />{$repliesPhrase|raw} {$thread.reply_count|number} </a> </li> </xf:if> </ul> <ul class="message-attribution-opposite message-attribution-opposite--list {$oppositeClass}"> <xf:if is="$post.user_id == $thread.user_id && (property('dt_thread_owner') != 'none')"> <xf:if is="property('dt_thread_owner') == 'userbanner'"> <li class="messageOwner-Indicator">Thread Owner</li> </xf:if> </xf:if> <xf:if is="$post.isUnread()"> <li><span class="message-newIndicator">{{ phrase('new') }}</span></li> <xf:elseif is="$thread.isUnread() && $showThreadUnreadIndicator" /> <li><span class="message-newIndicator" title="{{ phrase('new_replies')|for_attr }}">{{ phrase('new') }}</span></li> </xf:if> <li> <a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" class="message-attribution-gadget" data-xf-init="share-tooltip" data-href="{{ link('posts/share', $post) }}" aria-label="{{ phrase('share')|for_attr }}" rel="nofollow"> <xf:fa icon="fa-share-alt"/> </a> </li> <xf:if contentcheck="true"> <li> <xf:contentcheck> <xf:macro template="bookmark_macros" name="link" arg-content="{$post}" arg-class="message-attribution-gadget bookmarkLink--highlightable" arg-confirmUrl="{{ link('posts/bookmark', $post) }}" arg-showText="{{ false }}"/> </xf:contentcheck> </li> </xf:if> <xf:if is="$showPosition"> <li> <a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" rel="nofollow"> #{{ number($post.position + 1) }} </a> </li> </xf:if> </ul> </header> </xf:macro> <xf:macro name="post_notices" arg-post="!" arg-thread="!"> <xf:if is="$post.message_state == 'deleted'"> <div class="messageNotice messageNotice--deleted"> <xf:macro template="deletion_macros" name="notice" arg-log="{$post.DeletionLog}" /> </div> <xf:elseif is="$post.message_state == 'moderated'" /> <div class="messageNotice messageNotice--moderated"> {{ phrase('this_message_is_awaiting_moderator_approval_and_is_invisible_to_normal') }} </div> </xf:if> <xf:if is="$post.warning_message"> <div class="messageNotice messageNotice--warning"> {$post.warning_message} </div> </xf:if> <xf:if is="$post.isIgnored()"> <div class="messageNotice messageNotice--ignored"> {{ phrase('you_are_ignoring_content_by_this_member') }} <xf:showignored /> </div> </xf:if> </xf:macro> <xf:macro name="post_user_content" arg-post="!" arg-thread="!" arg-snippet="{{ false }}" arg-displayAds="{{ true }}"> <div class="message-userContent lbContainer js-lbContainer {{ $post.isIgnored() ? 'is-ignored' : '' }}" data-lb-id="post-{$post.post_id}" data-lb-caption-desc="{{ $post.User ? $post.User.username : $post.username }} &middot; {{ date_time($post.post_date) }}"> <xf:if is="$post.isFirstPost()"> <xf:macro template="custom_fields_macros" name="custom_fields_view" arg-type="threads" arg-group="before" arg-onlyInclude="{$thread.Forum.field_cache}" arg-set="{$thread.custom_fields}" arg-wrapperClass="message-fields message-fields--before" /> </xf:if> <article class="message-body js-selectToQuote"> <xf:if is="$displayAds"> <xf:ad position="post_above_content" arg-post="{$post}" /> </xf:if> <xf:if is="$snippet"> {{ bb_code_snippet($post.message, 'post', $post, $snippet) }} <xf:else /> {{ bb_code($post.message, 'post', $post) }} </xf:if> <div class="js-selectToQuoteEnd">&nbsp;</div> <xf:if is="$displayAds"> <xf:ad position="post_below_content" arg-post="{$post}" /> </xf:if> </article> <xf:if is="$post.isFirstPost()"> <xf:macro template="custom_fields_macros" name="custom_fields_view" arg-type="threads" arg-group="after" arg-onlyInclude="{$thread.Forum.field_cache}" arg-set="{$thread.custom_fields}" arg-wrapperClass="message-fields message-fields--after" /> </xf:if> <xf:if is="$post.attach_count"> <xf:macro template="message_macros" name="attachments" arg-attachments="{$post.Attachments}" arg-message="{$post}" arg-canView="{{ $thread.canViewAttachments() }}" /> </xf:if> </div> </xf:macro> <xf:macro name="post_last_edit" arg-post="!"> <xf:if is="$post.last_edit_date"> <div class="message-lastEdit"> <xf:if is="$post.user_id == $post.last_edit_user_id"> {{ phrase('last_edited:') }} <xf:date time="{$post.last_edit_date}" itemprop="dateModified" /> <xf:else /> {{ phrase('last_edited_by_moderator:') }} <xf:date time="{$post.last_edit_date}" itemprop="dateModified" /> </xf:if> </div> </xf:if> </xf:macro> <xf:macro name="post_footer" arg-post="!" arg-thread="!"> <footer class="message-footer"> <xf:if contentcheck="true"> <div class="message-actionBar actionBar"> <xf:contentcheck> <xf:macro name="post_action_bar" arg-post="{$post}" arg-thread="{$thread}" /> </xf:contentcheck> </div> </xf:if> <div class="reactionsBar js-reactionsList {{ $post.reactions ? 'is-active' : '' }}"> <xf:reactions content="{$post}" link="posts/reactions" /> </div> <div class="js-historyTarget message-historyTarget toggleTarget" data-href="trigger-href"></div> </footer> </xf:macro> <xf:macro name="post_action_bar" arg-post="!" arg-thread="!"> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--external"> <xf:contentcheck> <xf:react content="{$post}" link="posts/react" list="< .js-post | .js-reactionsList" /> <xf:if is="$thread.canReply() OR $thread.canReplyPreReg()"> <xf:set var="$quoteLink">{{ link('threads/reply', $thread, {'quote': $post.post_id}) }}</xf:set> <xf:if is="$xf.options.multiQuote AND $xf.visitor.user_id"> <a href="{$quoteLink}" class="actionBar-action actionBar-action--mq u-jsOnly js-multiQuote" title="{{ phrase('toggle_multi_quote_tooltip')|for_attr }}" rel="nofollow" data-message-id="{$post.post_id}" data-mq-action="add">{{ phrase('quote') }}</a> </xf:if> <a href="{$quoteLink}" class="actionBar-action actionBar-action--reply" title="{{ phrase('reply_quoting_this_message')|for_attr }}" rel="nofollow" data-xf-click="quote" data-quote-href="{{ link('posts/quote', $post) }}">{{ phrase('reply') }}</a> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="actionBar-set actionBar-set--internal"> <xf:contentcheck> <xf:if is="$post.canUseInlineModeration()"> <span class="actionBar-action actionBar-action--inlineMod"> <xf:checkbox standalone="true"> <xf:option value="{$post.post_id}" class="js-inlineModToggle" data-xf-init="tooltip" title="{{ phrase('select_for_moderation') }}" label="{{ phrase('select_for_moderation') }}" hiddenlabel="true" /> </xf:checkbox> </span> </xf:if> <xf:if is="$post.canReport()"> <a href="{{ link('posts/report', $post) }}" class="actionBar-action actionBar-action--report" data-xf-click="overlay">{{ phrase('report_verb') }}</a> </xf:if> <xf:set var="$hasActionBarMenu" value="{{ false }}" /> <xf:if is="$post.canEdit()"> <xf:js src="xf/message.js" min="1" /> <a href="{{ link('posts/edit', $post) }}" class="actionBar-action actionBar-action--edit actionBar-action--menuItem" data-xf-click="quick-edit" data-editor-target="#js-post-{$post.post_id} .js-quickEditTarget" data-menu-closer="true">{{ phrase('edit') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.edit_count && $post.canViewHistory()"> <a href="{{ link('posts/history', $post) }}" class="actionBar-action actionBar-action--history actionBar-action--menuItem" data-xf-click="toggle" data-target="#js-post-{$post.post_id} .js-historyTarget" data-menu-closer="true">{{ phrase('history') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.canDelete('soft')"> <a href="{{ link('posts/delete', $post) }}" class="actionBar-action actionBar-action--delete actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('delete') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.message_state == 'deleted' AND $post.canUndelete()"> <a href="{{ link('posts/undelete', $post) }}" class="actionBar-action actionBar-action--undelete actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('undelete') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.canCleanSpam()"> <a href="{{ link('spam-cleaner', $post) }}" class="actionBar-action actionBar-action--spam actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('spam') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$xf.visitor.canViewIps() && $post.ip_id"> <a href="{{ link('posts/ip', $post) }}" class="actionBar-action actionBar-action--ip actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('ip') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$post.canWarn()"> <a href="{{ link('posts/warn', $post) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem">{{ phrase('warn') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> <xf:elseif is="$post.warning_id && $xf.visitor.canViewWarnings()" /> <a href="{{ link('warnings', {'warning_id': $post.warning_id}) }}" class="actionBar-action actionBar-action--warn actionBar-action--menuItem" data-xf-click="overlay">{{ phrase('view_warning') }}</a> <xf:set var="$hasActionBarMenu" value="{{ true }}" /> </xf:if> <xf:if is="$hasActionBarMenu"> <a class="actionBar-action actionBar-action--menuTrigger" data-xf-click="menu" title="{{ phrase('more_options')|for_attr }}" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">&#8226;&#8226;&#8226;</a> <div class="menu" data-menu="menu" aria-hidden="true" data-menu-builder="actionBar"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('more_options') }}</h4> <div class="js-menuBuilderTarget"></div> </div> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:macro> <xf:macro name="post_deleted" arg-post="!" arg-thread="!"> <xf:css src="message.less" /> <div class="message message--deleted message--post{{ $post.isIgnored() ? ' is-ignored' : '' }}{{ $post.isUnread() ? ' is-unread' : '' }} js-post js-inlineModContainer" data-author="{{ $post.User.username ?: $post.username }}" data-content="post-{$post.post_id}"> <span class="u-anchorTarget" id="post-{$post.post_id}"></span> <div class="message-inner"> <div class="message-cell message-cell--user"> <xf:macro template="message_macros" name="user_info_simple" arg-user="{$post.User}" arg-fallbackName="{$post.username}" /> </div> <div class="message-cell message-cell--main"> <div class="message-attribution"> <ul class="listInline listInline--bullet message-attribution-main"> <li><a href="{{ link('threads/post', $thread, {'post_id': $post.post_id}) }}" class="u-concealed" rel="nofollow"><xf:date time="{$post.post_date}" /></a></li> <li><xf:username user="{$post.User}" defaultname="{$post.username}" class="u-concealed" /></li> </ul> </div> <div class="messageNotice messageNotice--deleted"> <xf:macro template="deletion_macros" name="notice" arg-log="{$post.DeletionLog}" /> <a href="{{ link('posts/show', $post) }}" class="u-jsOnly" data-xf-click="inserter" data-replace="[data-content=post-{$post.post_id}]">{{ phrase('show...') }}</a> <xf:if is="$post.canUseInlineModeration()"> <span style="display: none"> <!-- this can be actioned on the full post --> <xf:checkbox standalone="true"> <xf:option value="{$post.post_id}" class="js-inlineModToggle" hiddenlabel="true" /> </xf:checkbox> </span> </xf:if> </div> </div> </div> </div> <xf:ad position="post_below_container" arg-post="{$post}" /> </xf:macro> ]]>
</template>
<template title="setup.less" type="public" addon_id="XF" version_id="2020970" version_string="2.2.9">
<![CDATA[ // Note that this file should never output any CSS directly. It should contain variables and mixins only. // Output should go into core.less. // ################################ VARIABLES ############################### // BLOCKS @block-borderRadius-inner: max(@xf-blockBorderRadius - 1px, 0px); @block-noStripSel: ~'.block-container:not(.block-container--noStripRadius)'; // HELPERS @zIndex-1: 1 * (@xf-zIndexMultiplier); @zIndex-2: 2 * (@xf-zIndexMultiplier); @zIndex-3: 3 * (@xf-zIndexMultiplier); @zIndex-4: 4 * (@xf-zIndexMultiplier); @zIndex-5: 5 * (@xf-zIndexMultiplier); @zIndex-6: 6 * (@xf-zIndexMultiplier); @zIndex-7: 7 * (@xf-zIndexMultiplier); @zIndex-8: 8 * (@xf-zIndexMultiplier); @zIndex-9: 9 * (@xf-zIndexMultiplier); // AVATARS @_avatarBaseSize: 96px; @avatar-xxs: (@_avatarBaseSize) / 4; @avatar-xs: (@_avatarBaseSize) / 3; @avatar-s: (@_avatarBaseSize) / 2; @avatar-m: (@_avatarBaseSize); @avatar-l: (@_avatarBaseSize) * 2; @avatar-o: (@_avatarBaseSize) * 4; @rtl: xf-isRtl; @ltr: xf-isLtr; // DEFAULT FONTAWESOME TYPE @faType: 'Pro'; // FONTAWESOME WEIGHT VALUES @faWeight-light: 300; @faWeight-regular: 400; @faWeight-solid: 900; {{ include('setup_fa.less') }} // TABLES @tablePadding: @xf-paddingSmall; // ####################################### MIXINS ################################## .m-clearFix() { &:before, &:after { content: " "; display: table; } &:after { clear: both; } } .m-hideText() { text-indent: 100%; overflow: hidden; white-space: nowrap; word-wrap: normal; } .m-hyphens(@hyphens: none) { hyphens: @hyphens; -moz-hyphens: @hyphens; -ms-hyphens: @hyphens; -webkit-hyphens: @hyphens; } .m-fadeOutLines(@lines, @bgColor, @lineHeight: @xf-lineHeightDefault) { position: relative; max-height: unit(@lines * @lineHeight, em); overflow: hidden; &:after { content: ''; position: absolute; bottom: 0; right: 0; text-align: right; width: 75%; height: unit(@lineHeight, em); & when(@ltr) { background: linear-gradient(to right, fade(@bgColor, 0%), fade(@bgColor, 100%)); } & when(@rtl) { background: linear-gradient(to left, fade(@bgColor, 0%), fade(@bgColor, 100%)); } } } .m-overflowEllipsis() { overflow: hidden; white-space: nowrap; word-wrap: normal; text-overflow: ellipsis; } .m-appendColon() { &:after { content: "{$xf.language.label_separator}"; } &.is-sentence:after { content: ""; } } .m-tooltipArrow(@color, @size, @variation: ~'', @fillColor: false) { @{variation}.tooltip--top & { bottom: 0; left: 50%; margin-left: -@size; .m-triangleDown(@color, @size); } @{variation}.tooltip--bottom & { top: 0; left: 50%; margin-left: -@size; .m-triangleUp(@color, @size); } @{variation}.tooltip--right & { top: 50%; left: 0; margin-top: -@size; .m-triangleLeft(@color, @size); } @{variation}.tooltip--left & { top: 50%; right: 0; margin-top: -@size; .m-triangleRight(@color, @size); } & when (iscolor(@fillColor)) { @{variation} &:after { position: absolute; content: ''; } @{variation}.tooltip--top &:after { bottom: 1px; left: -@size + 1px; .m-triangleDown(@fillColor, @size - 1px); } @{variation}.tooltip--bottom &:after { top: 1px; left: -@size + 1px; .m-triangleUp(@fillColor, @size - 1px); } @{variation}.tooltip--right &:after { left: 1px; bottom: -@size + 1px; .m-triangleLeft(@fillColor, @size - 1px); } @{variation}.tooltip--left &:after { right: 1px; bottom: -@size + 1px; .m-triangleRight(@fillColor, @size - 1px); } } } .m-triangleUp(@color; @size) { border: @size solid transparent; border-top-width: 0; border-bottom-color: @color; } .m-triangleDown(@color; @size) { border: @size solid transparent; border-bottom-width: 0; border-top-color: @color; } .m-triangleLeft(@color; @size) { border: @size solid transparent; border-left-width: 0; border-right-color: @color; } .m-triangleRight(@color; @size) { border: @size solid transparent; border-right-width: 0; border-left-color: @color; } .m-dropShadow(@x: 1px; @y: 2px; @blur: 2px; @spread: 0; @alpha: 0.25) { box-shadow: @x @y @blur @spread rgba(0, 0, 0, @alpha); } .m-textOutline(@fillColor: white; @strokeColor: black; @width: 1px;) { -webkit-text-fill-color: @fillColor; -webkit-text-stroke-color: @strokeColor; -webkit-text-stroke-width: @width; } .m-gradient(@startColor; @stopColor; @fallback; @startPos: 0%; @endPos: 100%) { background: @fallback; background: linear-gradient(to bottom, @startColor @startPos, @stopColor @endPos); } .m-gradientHorizontal(@startColor; @stopColor; @fallback; @startPos: 0%; @endPos: 100%) { background: @fallback; & when(@ltr) { background: linear-gradient(to right, @startColor @startPos, @stopColor @endPos); } & when(@rtl) { background: linear-gradient(to left, @startColor @startPos, @stopColor @endPos); } } .m-tabSize(@size: 4) { -moz-tab-size: @size; tab-size: @size; } .m-transition(@props: all; @duration: @xf-animationSpeed; @timing: ease; @delay: 0; @raw-input: false) { // adapted from https://stackoverflow.com/a/20810461 @ScottS .output() when (@raw-input = false) { @propsLength: length(@props); @durationLength: length(@duration); @timingLength: length(@timing); @delayLength: length(@delay); .buildString(@i, @s: ~'') when (@i <= @propsLength) { @prop: extract(@props, @i); .setDuration() when (@i <= @durationLength) { @dur: extract(@duration, @i); } .setDuration() when (@i > @durationLength) { @dur: extract(@duration, @durationLength); } .setDuration(); .setEasing() when (@i <= @timingLength) { @time: extract(@timing, @i); } .setEasing() when (@i > @timingLength) { @time: extract(@timing, @timingLength); } .setEasing(); .setDelay() when (@i <= @delayLength) { @del: extract(@delay, @i); } .setDelay() when (@i > @delayLength) { @del: extract(@delay, @delayLength); } .setDelay(); .setDivider() when (@i > 1) { @divider: ~'@{s},'; } .setDivider() when (@i = 1) { @divider: ~''; } .setDivider(); .buildString((@i + 1), @divider @prop @dur @time); } .buildString(1); .buildString(@i, @s: ~'') when (@i > @propsLength) { .compact(@s); } } .output() when not (@raw-input = false) { .compact(@raw-input); } .compact(@string) { -webkit-transition: @string; //-moz-transition: @string; //-ms-transition: @string; //-o-transition: @string; transition: @string; } .output(); } .m-transitionProperty(@props) { -webkit-transition-property: @props; transition-property: @props; } .m-animation(@props) { -webkit-animation: @props; animation: @props; } .m-transform(@props) { -webkit-transform: @props; -ms-transform: @props; transform: @props; } .m-keyframes(@name, @rules) { @-webkit-keyframes @name { @rules(); } @keyframes @name { @rules(); } } .m-columns(@count; @breakWidth: 0; @gap: 1em) { -moz-column-count: @count; -webkit-column-count: @count; column-count: @count; -moz-column-gap: @gap; -webkit-column-gap: @gap; column-gap: @gap; & when(@breakWidth > 0) { @media (max-width: @breakWidth) { -moz-column-count: 1; -webkit-column-count: 1; column-count: 1; } } } .m-columnBreakAvoid() { -webkit-column-break-inside: avoid; break-inside: avoid-column; page-break-inside: avoid; } .m-borderLeftRadius(@radius) { border-top-left-radius: @radius; border-bottom-left-radius: @radius; } .m-borderRightRadius(@radius) { border-top-right-radius: @radius; border-bottom-right-radius: @radius; } .m-borderTopRadius(@radius) { border-top-left-radius: @radius; border-top-right-radius: @radius; } .m-borderBottomRadius(@radius) { border-bottom-left-radius: @radius; border-bottom-right-radius: @radius; } .m-hiddenLinks() { a { color: inherit; text-decoration: none; &:hover { text-decoration: underline; } } } .m-textColoredLinks() { a { color: inherit; text-decoration: underline; } } .m-placeholder(@rules) { &::-webkit-input-placeholder { @rules(); } &::-moz-placeholder { @rules(); } &:-moz-placeholder { @rules(); } &:-ms-input-placeholder { @rules(); } } .m-autoCompleteList(@wide: false) { .m-listPlain(); cursor: default; .xf-menu(); min-width: 180px; & when(@wide = true) { min-width: 250px; } max-width: 95%; border: @xf-borderSize solid @xf-borderColor; .m-dropShadow(0, 3px, 5px, 0, .3); li { padding: @xf-paddingMedium; line-height: 24px; .m-clearFix(); &.is-selected { background: @xf-contentHighlightBg; } .autoCompleteList-icon { float: left; margin-right: @xf-paddingMedium; width: 24px; height: 24px; } } } .m-listPlain() { list-style: none; margin: 0; padding: 0; } // makes direct children display: inline-block, removing white-space between elements (mostly used on ul > li) .m-inlineBlocks(@fontSize: @xf-fontSizeNormal) { font-size: 0; > * { display: inline-block; font-size: @fontSize; } } .m-tabsTogether(@fontSize: @xf-fontSizeNormal) { font-size: 0; .tabs-tab, .tabs-text, .tabs-extra, .hScroller-action { font-size: @fontSize; } } .m-hiddenEl(@transition: true) { display: none; &.is-active { display: block; } & when(@transition = true) { .m-transitionFadeDown(); } } .m-transitionCubic(@speed: @xf-animationSpeed) { display: none; opacity: 0; transform: translateY(30px) rotate3d(1,1,0,30deg); .m-transition(all, -xf-opacity; @speed); &.is-active { display: block; opacity: 1; transform: translateY(0); transform-origin: 0 0; } &.is-transitioning { display: block; } } .m-transitionFade(@speed: @xf-animationSpeed) { display: none; opacity: 0; .m-transition(all, -xf-opacity; @speed); &.is-active { display: block; opacity: 1; } &.is-transitioning { display: block; } } .m-transitionFadeDown(@speed: @xf-animationSpeed) { .m-transitionFade(@speed); overflow-y: hidden; height: 0; .m-transitionProperty(all, -xf-height;); &.is-active { height: auto; overflow-y: visible; } &.is-transitioning { overflow-y: hidden; } } .m-visuallyHidden() { position: absolute; height: 1px; width: 1px; margin: -1px; padding: 0; border: 0; clip: rect(0 0 0 0); overflow: hidden; } .m-faBase(@type: @faType; @weight: @xf-fontAwesomeWeight) { .m-defaultFaWeight() when (@type = 'Brands') { @weight: @faWeight-regular; } // else use given @weight .m-defaultFaWeight(); font-family: 'Font Awesome 5 @{type}'; font-size: inherit; font-style: normal; font-weight: @weight; text-rendering: auto; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .m-faContent(@content, @width: false, @direction: false) { & when (@direction = false) { content: @content; } & when (@direction = ltr) { -ltr-content: @content; } & when (@direction = rtl) { -rtl-content: @content; } & when (isnumber(@width)) { width: @width; } & when (@width = false) { width: 1.28571429em; } display: inline-block; text-align: center; } .m-faBefore(@icon, @width: false) { &:before { .m-faContent(@icon, @width); } } .m-faAfter(@icon, @width: false) { &:after { .m-faContent(@icon, @width); } } .m-iconicIcon(@setPosition: true) { display: inline-block; min-width: 1em; height: .9em;// prevents some zoom-related issues -ltr-rtl-text-align: left; &:before, &:after { .m-faBase('Pro'; inherit); //.m-transition(opacity, color; @xf-animationSpeed, @xf-animationSpeed / 2); position: absolute; & when (@setPosition = true) { left: 0; top: 0; } opacity: 1; } } .m-menuGadget(@separate: false, @faWidth: 1.2em, @faWeight: @faWeight-solid) { .m-faBase(); .m-faContent("@{fa-var-chevron-down}", @faWidth); font-weight: @faWeight; font-size: 75%; & when (@separate = true) { margin-left: .2em; } & when (isnumber(@separate)) { margin-left: @separate; } unicode-bidi: isolate; // this is needed to ensure correct positioning in RTL with LTR text } .m-content(@content, @direction: false, @separateDirection: false, @separateWidth: false) { & when (@direction = false) { content: @content; } & when (@direction = ltr) { -ltr-content: @content; } & when (@direction = rtl) { -rtl-content: @content; } & when (@separateDirection = left) { & when (isnumber(@separateWidth)) { margin-right: @separateWidth; } & when not(isnumber(@separateWidth)) { margin-right: .2em; } } & when (@separateDirection = right) { & when (isnumber(@separateWidth)) { margin-left: @separateWidth; } & when not(isnumber(@separateWidth)) { margin-left: .2em; } } } .m-buttonIcon(@icon, @width: false) { & > .button-text { .m-faBefore(@icon, @width); } } .m-avatarSize(@avatarSize) { width: @avatarSize; height: @avatarSize; font-size: round((@avatarSize) * (@xf-avatarDynamicTextPercent / 100)); } .m-buttonBase() { display: inline-block; // maintain this just in case for old browsers display: inline-flex; align-items: center; justify-content: center; text-decoration: none; cursor: pointer; white-space: nowrap; .m-transition(background-color border-color color, (@xf-animationSpeed / 2)); .xf-buttonBase(); } .m-buttonColorVariation(@bgColor; @textColor) { color: @textColor; background-color: @bgColor; .m-buttonBorderColorVariation(@bgColor); &:hover, &:active, &:focus { background-color: xf-intensify(@bgColor, 8%); } } .m-buttonBlockColorVariationSimple(@color) { .m-buttonBorderColorVariation(@color); &:not(.button--splitTrigger), &.button--splitTrigger > .button-text, &.button--splitTrigger > .button-menu { &:hover, &:focus, &:active { background-color: xf-intensify(@color, 8%); } } } .m-buttonBorderColorVariation(@borderColor) { border-color: xf-diminish(@borderColor, 5%) xf-intensify(@borderColor, 5%) xf-intensify(@borderColor, 5%) xf-diminish(@borderColor, 5%); &.button--splitTrigger { > .button-text { border-right-color: xf-intensify(@borderColor, 5%); } > .button-menu { border-left-color: xf-diminish(@borderColor, 5%); } } } // this will be replaced by the CSS renderer with the correct background-image rule .m-selectGadgetColor(@color: black) { -xf-select-gadget: @color; } .m-hScrollerActionColorVariation(@background, @text, @textHover) { color: @text; &:hover { color: @textHover; } &.hScroller-action--start { .m-gradientHorizontal(@background, fade(@background, 0%), @background, 66%, 100%); } &.hScroller-action--end { .m-gradientHorizontal(fade(@background, 0%), @background, @background, 0%, 33%); } } // Fix for iOS zoom on input focus. .m-inputZoomFix() { @media (max-width: 568px) { font-size: 16px; } } .m-checkboxAligner() { vertical-align: -2px; } .m-highResolution(@rules) { @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 144dpi) { @rules(); } } .m-fixedWidthFlex(@width) { flex: 0 0 @width; } .m-labelVariation(@color; @bg; @border: false) { color: @color; background: @bg; border-color: xf-intensify(@bg, 10%); & when (iscolor(@border)) { border-color: @border; } a&:hover, a:hover & { background: xf-intensify(@bg, 4%); border-color: xf-intensify(@bg, 14%); & when (iscolor(@border)) { border-color: xf-intensify(@border, 4%); } } } .m-tableBase() { > table { border: none; border-collapse: collapse; empty-cells: show; max-width: 100%; > thead, > tbody { > tr { > th { background: fade(@xf-paletteColor1, 94%); color: @xf-textColorEmphasized; border: @xf-borderSize solid @xf-borderColor; border-bottom-color: @xf-borderColorFeature; border-bottom-width: @xf-borderSizeMinorFeature; padding: @tablePadding; } > td { background: @xf-contentBg; border: @xf-borderSize solid @xf-borderColor; padding: @tablePadding; } } } } } .m-backdropFilter(@filter, @filterBg: none, @fallbackBg: none) { @supports (-webkit-backdrop-filter: none) or (backdrop-filter: none) { --backdrop-filter: @filter; -webkit-backdrop-filter: var(--backdrop-filter); backdrop-filter: var(--backdrop-filter); & when not (@filterBg = none) { background: @filterBg; } } @supports not ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) { & when (@fallbackBg = none) { background: @filterBg; } & when not (@fallbackBg = none) { background: @fallbackBg; } } } .m-blockAligner() { // we want this to still be a block element but to inherit the alignment a user has set - this approximates that [style="text-align: center"] & { margin-left: auto; margin-right: auto; } [style="text-align: left"] & { -ltr-rtl-margin-left: 0; -ltr-rtl-margin-right: auto; } [style="text-align: right"] & { -ltr-rtl-margin-left: auto; -ltr-rtl-margin-right: 0; } } // STICKY HEADER STUFF // Note that to access the height and offset, you need to call the mixin and use the variables locally. @header-navHeight: 2 * (@xf-publicNavPaddingV) + (xf-default(@xf-publicNav--font-size, @xf-fontSizeNormal) * (@xf-lineHeightDefault)); @header-subNavHeight: 2 * (@xf-publicSubNavPaddingV) + (xf-default(@xf-publicSubNav--font-size, @xf-fontSizeNormal) * (@xf-lineHeightDefault)) + xf-default(@xf-publicSubNav--border-top-width, 0) + xf-default(@xf-publicSubNav--border-bottom-width, 0); .m-stickyHeaderConfig(@type) { @_stickyHeader-offset: 10px; @_stickyHeader-height: 0; } .m-stickyHeaderConfig(@type) when(@type = primary) { @_stickyHeader-height: @header-navHeight; } .m-stickyHeaderConfig(@type) when(@type = all) { @_stickyHeader-height: @header-navHeight + @header-subNavHeight; } .m-loadingSpinner() { .is-loading & { opacity: 1; .fa--xf { animation-name: spin; } } .fa--xf { position: absolute; left: ~"calc(50% - 0.5em)"; top: ~"calc(50% - 0.5em)"; animation-duration: 1000ms; animation-iteration-count: infinite; } } {{ include('setup_custom.less') }} ]]>
</template>
<template title="svg_countdownnewyear.less" type="public" addon_id="SVG/CountdownNewYear" version_id="2010673" version_string="2.1.6.3">
<![CDATA[ .santaclaus-hohoho { display: block; background-color: #e57373; width: 250px; height: auto; font-family: 'Fira Sans Condensed', sans-serif; padding: 20px auto; margin: 0 auto; text-align: center; } .santaclaus-hohoho ul { display: table; list-style: none; margin: 0 auto; max-width: 250px; padding: 0; } .santaclaus-hohoho ul li { display: inline-block; float: left; } .santaclaus-hohoho .santaclaus { display: block; margin: 0 auto; max-width: 250px; } .santaclaus-hohoho .santaclaus > div { margin: 0 auto; max-width: 200px; } .santaclaus-hohoho .santaclaus .chapeu { display: block; position: relative; width: 155px; z-index: 99; } .santaclaus-hohoho .santaclaus .chapeu .cone-1 { border-left: 25px solid transparent; border-right: 10px solid transparent; border-bottom: 35px solid #D32F2F; } .santaclaus-hohoho .santaclaus .chapeu .cone-2 { background-color: #D32F2F; border-top: 0px solid transparent; border-right: 170px solid #D32F2F; border-bottom: 50px solid transparent; border-color: transparent; position: relative; left: -28px; top: 24px; box-shadow: -25px 15px 30px -5px rgba(1, 1, 1, 0.3); transform: rotate(-15deg); border-radius: 30% 100% 0 100%; } .santaclaus-hohoho .santaclaus .chapeu:after, .santaclaus-hohoho .santaclaus .chapeu:before { background-color: #fff; content: " "; display: block; } .santaclaus-hohoho .santaclaus .chapeu:after { height: 40px; margin-left: -7px; position: relative; width: 170px; border-radius: 0.8em; } .santaclaus-hohoho .santaclaus .chapeu:before { height: 40px; left: -60px; position: absolute; top: 40px; width: 40px; z-index: 111; border-radius: 50%; box-shadow: 20px 20px 40px -5px rgba(1, 1, 1, 0.3); } .santaclaus-hohoho .santaclaus .face { background-color: #ffccbc; content: " "; display: block; height: 60px; position: relative; top: -5px; width: 150px; box-shadow: 0px 0px 30px 5px rgba(1, 1, 1, 0.3); z-index: 1; } .santaclaus-hohoho .santaclaus > .orelhas { background-color: #eea2ad; display: block; height: 30px; margin: 0 auto; position: relative; top: -60px; width: 170px; z-index: 0; box-shadow: 0px 0px 30px 5px rgba(1, 1, 1, 0.3); border-radius: 1em 1em 2em 2em; } .santaclaus-hohoho .santaclaus .face > .eyes { display: inline-block; height: 0px; margin: 10px auto 0; max-width: 80px; width: 100%; } .santaclaus-hohoho .santaclaus .face > .eyes:before, .santaclaus-hohoho .santaclaus .face > .eyes:after { background-color: #111; content: " "; display: inline-block; float: left; height: 15px; width: 15px; border-radius: 50%; } .santaclaus-hohoho .santaclaus .face > .eyes:after { float: right; } .santaclaus-hohoho .santaclaus .face > .nariz { background-color: #EEA2AD; height: 25px; margin: 0 auto; position: relative; width: 35px; z-index: 111; border-radius: 50%; } .santaclaus-hohoho .santaclaus .face > .barba { background-color: #ecf0f1; height: 120px; margin: 0 auto; position: relative; top: -15px; width: 170px; left: -10px; transform: rotate(-20deg); border-radius: 0% 100% 70% 100%; box-shadow: -10px 10px 10px -5px rgba(1, 1, 1, 0.3); animation: animaBarba 1.6s ease-in-out infinite alternate; } .santaclaus-hohoho .santaclaus .face > .barba > .boca { height: 25px; left: 15px; margin: 0 auto; position: relative; top: 10px; width: 30px; border-radius: 50%; animation: hoho 1.6s ease-in-out infinite alternate; } /*Movimenta barba*/ @keyframes animaBarba { to { transform: rotate(-10deg); } } /*Hoho no movimento da boca*/ @keyframes hoho { 0% { background-color: #ecf0f1; box-shadow: 0px 10px 0 0 #111; height: 20px; width: 30px; } 60% { background-color: #ecf0f1; box-shadow: 0px 30px 0 0 #111; height: 30px; width: 15px; } 80% { background-color: #ecf0f1; box-shadow: 0px 30px 0 0 #111; height: 25px; width: 20px; } 100% { background-color: #ecf0f1; box-shadow: 0px 30px 0 0 #111; height: 30px; width: 15px; } } .santaclaus-hohoho .countdown { display: block; position: relative; width: 90%; height: 100%; color: #fff; text-transform: uppercase; margin: 70px auto 20px; } .santaclaus-hohoho .countdown .text { font-size: 1.2em; font-weight: 400; } .santaclaus-hohoho .countdown #timer { font-size: 2.5em; font-weight: 500; } .santaclaus-hohoho .countdown #timer div { display: inline-block; width: 25%; } .santaclaus-hohoho .countdown #timer div span { display: block; font-size: .35em; font-weight: 300; } ]]>
</template>
<template title="thholidays_macros" type="public" addon_id="ThemeHouse/Holidays" version_id="2010370" version_string="2.1.3">
<![CDATA[ <xf:macro name="setup" arg-holiday="!"> <xf:if is="$holiday.active"> <xf:foreach loop="$holiday.effect_data" key="$effect" value="$effectOptions"> <xf:macro name="effect_setup_{$effect}" arg-options="{$effectOptions}" /> </xf:foreach> <xf:css src="{$holiday.style_template}" /> </xf:if> </xf:macro> <xf:macro name="effect_setup_hearts" arg-options="{{ [] }}"> <script class="js-thHolidaysHeartsOptions" type="application/json"> {$options|json|raw} </script> <xf:js src="themehouse/holidays/hearts.js" addon="ThemeHouse/Holidays" /> <canvas class="js-thHolidaysHeartsCanvas" data-xf-init="th-holidays-hearts"></canvas> <xf:css src="thholidays_hearts.less" /> </xf:macro> <xf:macro name="effect_setup_snowstorm" arg-options="{{ [] }}"> <script class="js-thHolidaysSnowstormOptions" type="application/json"> {$options|json|raw} </script> <xf:js src="themehouse/holidays/snowstorm.js" addon="ThemeHouse/Holidays" /> <canvas class="js-thHolidaysSnowstormCanvas" data-xf-init="th-holidays-snowstorm"></canvas> <xf:css src="thholidays_snowstorm.less" /> </xf:macro> <xf:macro name="effect_setup_fireworks" arg-options="{{ [] }}"> <script class="js-thHolidaysFireworksOptions" type="application/json"> {$options|json|raw} </script> <xf:js src="themehouse/holidays/fireworks.js" addon="ThemeHouse/Holidays" /> <canvas class="js-thHolidaysFireworksCanvas" data-xf-init="th-holidays-fireworks"></canvas> <xf:css src="thholidays_fireworks.less" /> </xf:macro> <xf:macro name="effect_setup_confetti" arg-options="{{ [] }}"> <script class="js-thHolidaysConfettiOptions" type="application/json"> {$options|json|raw} </script> <xf:js src="themehouse/holidays/confetti.js" addon="ThemeHouse/Holidays" /> <canvas class="js-thHolidaysConfettiCanvas" data-xf-init="th-holidays-confetti"></canvas> <xf:css src="thholidays_confetti.less" /> </xf:macro> <xf:macro name="effect_setup_bats" arg-options="{{ [] }}"> <script class="js-thHolidaysBatsOptions" type="application/json"> {$options|json|raw} </script> <xf:js src="themehouse/holidays/bats.js" addon="ThemeHouse/Holidays" /> <div class="js-thHolidaysBatContainer" data-xf-init="th-holidays-bats"></div> <xf:css src="thholidays_bats.less" /> </xf:macro> <xf:macro name="effect_setup_leaves" arg-options="{{ [] }}"> <xf:css src="thholidays_leaves.less" /> <div class="js-thHolidaysLeaves"> <i></i> <i></i> <i></i> <i></i> <i></i> <i></i> <i></i> <i></i> <i></i> <i></i> <i></i> <i></i> <i></i> <i></i> <i></i> </div> </xf:macro> ]]>
</template>
<template title="thholidays_snowstorm.less" type="public" addon_id="ThemeHouse/Holidays" version_id="2010370" version_string="2.1.3">
<![CDATA[ .js-thHolidaysSnowstormCanvas { position: fixed; top: 0; left: 0; z-index: 100000; } ]]>
</template>
<template title="thholidays_widget_current_holiday" type="public" addon_id="ThemeHouse/Holidays" version_id="2010370" version_string="2.1.3">
<![CDATA[ <div class="block"{{ widget_data($widget) }}> <div class="block-container"> <h3 class="block-minorHeader">{{ phrase('thholidays_happy_x_holiday', {'holiday': $holiday.title}) }}</h3> <div class="block-body block-row"> <img style="display:block;max-width:50%;max-height:150px;margin:0 auto;" src="{{ contains($holiday.widget_image, '://') ? $holiday.widget_image : base_url('styles/themehouse/holidays/' . $holiday.widget_image) }}" /> </div> </div> </div> ]]>
</template>
<template title="thread_list_macros" type="public" addon_id="XF" version_id="2021270" version_string="2.2.12">
<![CDATA[ <xf:macro name="item" arg-thread="!" arg-forum="" arg-forceRead="{{ false }}" arg-showWatched="{{ true }}" arg-allowInlineMod="{{ true }}" arg-chooseName="" arg-extraInfo="" arg-allowEdit="{{ true }}"> <xf:css src="structured_list.less" /> <div class="structItem structItem--thread{{ !$thread.discussion_open ? ' is-locked' : '' }}{{ $thread.prefix_id ? ' is-prefix' . $thread.prefix_id : '' }}{{ $thread.isIgnored() ? ' is-ignored' : '' }}{{ ($thread.isUnread() AND !$forceRead) ? ' is-unread' : '' }}{{ $thread.discussion_state == 'moderated' ? ' is-moderated' : '' }}{{ $thread.discussion_state == 'deleted' ? ' is-deleted' : '' }} js-inlineModContainer js-threadListItem-{$thread.thread_id}" data-author="{{ $thread.User.username ?: $thread.username }}"> <xf:extension name="icon_cell"> <div class="structItem-cell structItem-cell--icon"> <div class="structItem-iconContainer"> <xf:avatar user="$thread.User" size="s" defaultname="{$thread.username}" /> <xf:if is="$thread.getUserPostCount()"> <xf:avatar user="$xf.visitor" size="s" href="" class="avatar--separated structItem-secondaryIcon" tabindex="0" data-xf-init="tooltip" data-trigger="auto" title="{{ phrase('you_have_posted_x_messages_in_this_thread', {'count': $thread.getUserPostCount() }) }}" /> </xf:if> </div> </div> </xf:extension> <xf:extension name="main_cell"> <div class="structItem-cell structItem-cell--main" data-xf-init="touch-proxy"> <xf:if contentcheck="true"> <ul class="structItem-statuses"> <xf:contentcheck> <xf:extension name="statuses"> <xf:if is="property('reactionSummaryOnLists') == 'status' && $thread.first_post_reactions"> <li><xf:reactions summary="true" reactions="{$thread.first_post_reactions}" /></li> </xf:if> <xf:extension name="before_status_state"></xf:extension> <xf:if is="$thread.discussion_state == 'moderated'"> <li> <xf:set var="$moderatedStatus"> <i class="structItem-status structItem-status--moderated" aria-hidden="true" title="{{ phrase('awaiting_approval')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('awaiting_approval') }}</span> </xf:set> <xf:if is="$thread.canCleanSpam()"> <a href="{{ link('spam-cleaner', $thread) }}" data-xf-click="overlay">{$moderatedStatus}</a> <xf:else /> {$moderatedStatus} </xf:if> </li> </xf:if> <xf:if is="$thread.discussion_state == 'deleted'"> <li> <i class="structItem-status structItem-status--deleted" aria-hidden="true" title="{{ phrase('deleted')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('deleted') }}</span> </li> </xf:if> <xf:if is="!$thread.discussion_open"> <li> <i class="structItem-status structItem-status--locked" aria-hidden="true" title="{{ phrase('locked')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('locked') }}</span> </li> </xf:if> <xf:extension name="status_sticky"> <xf:if is="$thread.sticky"> <li> <i class="structItem-status structItem-status--sticky" aria-hidden="true" title="{{ phrase('sticky')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('sticky') }}</span> </li> </xf:if> </xf:extension> <xf:extension name="before_status_watch"></xf:extension> <xf:if is="{$showWatched} AND {$xf.visitor.user_id}"> <xf:if is="{$thread.Watch.{$xf.visitor.user_id}}"> <li> <i class="structItem-status structItem-status--watched" aria-hidden="true" title="{{ phrase('thread_watched')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('thread_watched') }}</span> </li> <xf:elseif is="!$forum AND {$thread.Forum.Watch.{$xf.visitor.user_id}}" /> <li> <i class="structItem-status structItem-status--watched" aria-hidden="true" title="{{ phrase('forum_watched')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('forum_watched') }}</span> </li> </xf:if> </xf:if> <xf:extension name="before_status_type"></xf:extension> <xf:if is="$thread.discussion_type == 'redirect'"> <xf:extension name="thread_type_redirect"> <li> <i class="structItem-status structItem-status--redirect" aria-hidden="true" title="{{ phrase('redirect')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('redirect') }}</span> </li> </xf:extension> <xf:elseif is="$thread.discussion_type == 'question' && $thread.type_data.solution_post_id" /> <xf:extension name="thread_type_question_solved"> <li> <i class="structItem-status structItem-status--solved" aria-hidden="true" title="{{ phrase('solved')|for_attr }}"></i> <span class="u-srOnly">{{ phrase('solved') }}</span> </li> </xf:extension> <xf:elseif is="!$forum || $forum.forum_type_id == 'discussion'" /> <xf:extension name="thread_type_icon"> <xf:if is="$thread.discussion_type != 'discussion'"> <xf:set var="$threadTypeHandler" value="{{ $thread.getTypeHandler() }}" /> <xf:if is="$threadTypeHandler.getTypeIconClass()"> <li> <xf:set var="$threadTypePhrase" value="{{ $threadTypeHandler.getTypeTitle() }}" /> <xf:fa class="structItem-status" icon="{{ $threadTypeHandler.getTypeIconClass() }}" title="{$threadTypePhrase|for_attr}" /> <span class="u-srOnly">{$threadTypePhrase}</span> </li> </xf:if> </xf:if> </xf:extension> </xf:if> </xf:extension> </xf:contentcheck> </ul> </xf:if> <div class="structItem-title"> <xf:set var="$canPreview" value="{{ $thread.canPreview() }}" /> <xf:if is="$thread.prefix_id"> <xf:if is="$forum"> <a href="{{ link('forums', $forum, {'prefix_id': $thread.prefix_id}) }}" class="labelLink" rel="nofollow">{{ prefix('thread', $thread, 'html', '') }}</a> <xf:else /> {{ prefix('thread', $thread, 'html', '') }} </xf:if> </xf:if> <a href="{{ link('threads' . (($thread.isUnread() AND !$forceRead) ? '/unread' : ''), $thread) }}" class="" data-tp-primary="on" data-xf-init="{{ $canPreview ? 'preview-tooltip' : '' }}" data-preview-url="{{ $canPreview ? link('threads/preview', $thread) : '' }}">{$thread.title}</a> </div> <div class="structItem-minor"> <xf:if contentcheck="true"> <ul class="structItem-extraInfo"> <xf:contentcheck> <xf:if is="property('reactionSummaryOnLists') == 'minor_opposite' && $thread.first_post_reactions"> <li><xf:reactions summary="true" reactions="{$thread.first_post_reactions}" /></li> </xf:if> <xf:if is="{$extraInfo}"> <li>{$extraInfo}</li> <xf:elseif is="$allowEdit AND $thread.canEdit() AND $thread.canUseInlineModeration()" /> <xf:if is="!$allowInlineMod OR !$forum"> <xf:set var="$editParams" value="{{ { '_xfNoInlineMod': !$allowInlineMod ? 1 : null, '_xfForumName': !$forum ? 1 : 0 } }}" /> <xf:else /> <xf:set var="$editParams" value="{{ [] }}" /> </xf:if> <xf:if is="$thread.discussion_type != 'redirect'"> <li class="structItem-extraInfoMinor"> <a href="{{ link('threads/edit', $thread) }}" data-xf-click="overlay" data-cache="false" data-href="{{ link('threads/edit', $thread, $editParams) }}"> {{ phrase('edit') }} </a> </li> </xf:if> </xf:if> <xf:if is="$chooseName"> <li><xf:checkbox standalone="true"> <xf:option name="{$chooseName}[]" value="{$thread.thread_id}" class="js-chooseItem" /> </xf:checkbox></li> <xf:elseif is="$allowInlineMod AND $thread.canUseInlineModeration()" /> <li><xf:checkbox standalone="true"> <xf:option value="{$thread.thread_id}" class="js-inlineModToggle" data-xf-init="tooltip" title="{{ phrase('select_for_moderation') }}" label="{{ phrase('select_for_moderation') }}" hiddenlabel="true" /> </xf:checkbox></li> </xf:if> </xf:contentcheck> </ul> </xf:if> <xf:if is="$thread.discussion_state == 'deleted'"> <xf:if is="{$extraInfo}"><span class="structItem-extraInfo">{$extraInfo}</span></xf:if> <xf:macro template="deletion_macros" name="notice" arg-log="{$thread.DeletionLog}" /> <xf:else /> <ul class="structItem-parts"> <li><xf:username user="$thread.User" defaultname="{$thread.username}" /></li> <li class="structItem-startDate"><a href="{{ link('threads', $thread) }}" rel="nofollow"><xf:date time="{$thread.post_date}" /></a></li> <xf:if is="!$forum"> <li><a href="{{ link('forums', $thread.Forum) }}">{$thread.Forum.title}</a></li> </xf:if> </ul> <xf:if is="$thread.discussion_type != 'redirect' && $thread.reply_count >= $xf.options.messagesPerPage && $xf.options.lastPageLinks"> <span class="structItem-pageJump"> <xf:foreach loop="{{ last_pages($thread.reply_count + 1, $xf.options.messagesPerPage, $xf.options.lastPageLinks) }}" value="$p"> <a href="{{ link('threads', $thread, {'page': $p}) }}">{$p}</a> </xf:foreach> </span> </xf:if> </xf:if> </div> </div> </xf:extension> <xf:extension name="meta_cell"> <xf:if is="property('dt_disc_minor_header')"> <div class="structItem-cell structItem-cell--meta" title="{{ phrase('first_message_reaction_score:')|for_attr }} {$thread.first_post_reaction_score|number}"> <span class="pairs pairs--justified"> {{ $thread.discussion_type == 'redirect' ? '&ndash;' : $thread.reply_count|number_short }} </span> </div> <div class="structItem-cell structItem-cell--meta" title="{{ phrase('first_message_reaction_score:')|for_attr }} {$thread.first_post_reaction_score|number}"> <span class="pairs pairs--justified"> {{ $thread.discussion_type == 'redirect' ? '&ndash;' : ($thread.view_count > $thread.reply_count ? $thread.view_count|number_short : number_short($thread.reply_count+1)) }} </span> </div> <xf:if is="property('dt_reactions_column')"> <div class="structItem-cell structItem-cell--meta" title="{{ phrase('first_message_reaction_score:')|for_attr }} {$thread.first_post_reaction_score|number}"> <span class="pairs pairs--justified"> {$thread.first_post_reaction_score|number} </span> </div> </xf:if> <xf:else /> <div class="structItem-cell structItem-cell--meta" title="{{ phrase('first_message_reaction_score:')|for_attr }} {$thread.first_post_reaction_score|number}"> <dl class="pairs pairs--justified"> <dt>{{ phrase('replies') }}</dt> <dd>{{ $thread.discussion_type == 'redirect' ? '&ndash;' : $thread.reply_count|number_short }}</dd> </dl> <dl class="pairs pairs--justified structItem-minor"> <dt>{{ phrase('views') }}</dt> <dd>{{ $thread.discussion_type == 'redirect' ? '&ndash;' : ($thread.view_count > $thread.reply_count ? $thread.view_count|number_short : number_short($thread.reply_count+1)) }}</dd> </dl> <xf:if is="property('dt_reactions_column')"> <dl class="pairs pairs--justified structItem-minor"> <dt>{{ phrase('reactions') }}</dt> <dd>{$thread.first_post_reaction_score|number}</dd> </dl> </xf:if> </div> </xf:if> </xf:extension> <xf:extension name="latest_cell"> <div class="structItem-cell structItem-cell--latest"> <xf:if is="$thread.discussion_type == 'redirect'"> {{ phrase('n_a') }} <xf:else /> <a href="{{ link('threads/latest', $thread) }}" rel="nofollow"><xf:date time="{$thread.last_post_date}" class="structItem-latestDate" /></a> <div class="structItem-minor"> <xf:if is="$xf.visitor.isIgnoring($thread.last_post_user_id)"> {{ phrase('ignored_member') }} <xf:else /> <xf:username user="{$thread.LastPoster}" defaultname="{$thread.last_post_username}" /> </xf:if> </div> </xf:if> </div> </xf:extension> <xf:extension name="icon_end_cell"> <div class="structItem-cell structItem-cell--icon structItem-cell--iconEnd"> <div class="structItem-iconContainer"> <xf:if is="$xf.visitor.isIgnoring($thread.last_post_user_id) OR $thread.discussion_type == 'redirect'"> <xf:avatar user="{{ null }}" size="xxs" /> <xf:else /> <xf:avatar user="{$thread.LastPoster}" defaultname="{$thread.last_post_username}" size="xxs" /> </xf:if> </div> </div> </xf:extension> </div> </xf:macro> <xf:macro name="item_new_posts" arg-thread="!"> <div class="contentRow"> <div class="contentRow-figure"> <xf:avatar user="$thread.LastPoster" size="xxs" defaultname="{$thread.last_post_username}" /> </div> <div class="contentRow-main contentRow-main--close"> <xf:if is="$thread.isUnread()"> <a href="{{ link('threads/unread', $thread) }}">{{ prefix('thread', $thread) }}{$thread.title}</a> <xf:else /> <a href="{{ link('threads/post', $thread, {'post_id': $thread.last_post_id}) }}">{{ prefix('thread', $thread) }}{$thread.title}</a> </xf:if> <div class="contentRow-minor contentRow-minor--hideLinks"> <ul class="listInline listInline--bullet"> <li>{{ phrase('latest_x', {'name': $thread.last_post_cache.username}) }}</li> <li><xf:date time="{$thread.last_post_date}" /></li> </ul> </div> <div class="contentRow-minor contentRow-minor--hideLinks"> <a href="{{ link('forums', $thread.Forum) }}">{$thread.Forum.title}</a> </div> </div> </div> </xf:macro> <xf:macro name="item_new_threads" arg-thread="!"> <div class="contentRow"> <div class="contentRow-figure"> <xf:avatar user="$thread.User" size="xxs" defaultname="{$thread.username}" /> </div> <div class="contentRow-main contentRow-main--close"> <a href="{{ link('threads', $thread) }}">{{ prefix('thread', $thread) }}{$thread.title}</a> <div class="contentRow-minor contentRow-minor--hideLinks"> <ul class="listInline listInline--bullet"> <li>{{ phrase('started_by_x', {'name': $thread.username}) }}</li> <li><xf:date time="{$thread.post_date}" /></li> <li>{{ phrase('replies:') }} {$thread.reply_count|number_short}</li> </ul> </div> <div class="contentRow-minor contentRow-minor--hideLinks"> <a href="{{ link('forums', $thread.Forum) }}">{$thread.Forum.title}</a> </div> </div> </div> </xf:macro> <xf:macro name="quick_thread" arg-forum="!" arg-page="1" arg-order="last_post_date" arg-direction="desc" arg-prefixes="{{ [] }}"> <xf:css src="structured_list.less" /> <xf:if is="$xf.cookieConsent.isCaptchaConsented() && ($forum.canCreateThread() OR $forum.canCreateThreadPreReg())"> <xf:js src="xf/thread.js" min="1" /> <xf:set var="$inlineMode" value="{{ ($page == 1 && $order == 'last_post_date' && $direction == 'desc') ? true : false }}" /> <xf:form action="{{ link('forums/post-thread', $forum, {'inline-mode': $inlineMode}) }}" ajax="true" class="structItem structItem--quickCreate" draft="{{ link('forums/draft', $forum) }}" data-xf-init="quick-thread" data-focus-activate=".js-titleInput" data-focus-activate-href="{{ link('forums/post-thread', $forum, {'inline-mode': true}) }}" data-focus-activate-target=".js-quickThreadFields" data-insert-target=".js-threadList" data-replace-target=".js-emptyThreadList"> <xf:extension name="icon_cell"> <div class="structItem-cell structItem-cell--icon"> <div class="structItem-iconContainer"> <xf:avatar user="$xf.visitor" size="s" /> </div> </div> </xf:extension> <xf:extension name="main_cell"> <div class="structItem-cell structItem-cell--newThread js-prefixListenContainer"> <xf:formrow rowtype="noGutter noLabel fullWidth noPadding mergeNext" label="{{ phrase('title') }}"> <xf:prefixinput maxlength="{{ max_length('XF:Thread', 'title') }}" placeholder="{$forum.thread_prompt}" title="{{ phrase('post_new_thread_in_this_forum') }}" prefix-value="{$forum.default_prefix_id}" type="thread" prefixes="{$prefixes}" data-xf-init="tooltip" rows="1" help-href="{{ link('forums/prefix-help', $forum) }}" help-skip-initial="{{ true }}" /> <!--[XF:qt_title_after]--> </xf:formrow> <div class="js-quickThreadFields inserter-container is-hidden"><!--{{ phrase('loading...') }}--></div> </div> </xf:extension> </xf:form> </xf:if> </xf:macro> ]]>
</template>
<template title="widget_members_online" type="public" addon_id="XF" version_id="2021370" version_string="2.2.13">
<![CDATA[ <xf:if is="$options.staffOnline"> <xf:if contentcheck="true"> <div class="block" data-widget-section="staffMembers"{{ widget_data($widget) }}> <div class="block-container"> <h3 class="block-minorHeader"><a href="{{ link('members', null, {'key': 'staff_members'}) }}">{{ phrase('staff_online') }}</a></h3> <ul class="block-body"> <xf:contentcheck> <xf:foreach loop="$online.users" value="$user"> <xf:if is="$user.is_staff"> <li class="block-row"> <div class="contentRow"> <div class="contentRow-figure"> <xf:avatar user="$user" size="xs" /> </div> <div class="contentRow-main contentRow-main--close"> <xf:username user="$user" rich="true" /> <div class="contentRow-minor"> <xf:usertitle user="$user" /> </div> </div> </div> </li> </xf:if> </xf:foreach> </xf:contentcheck> </ul> </div> </div> </xf:if> </xf:if> <div class="block" data-widget-section="onlineNow"{{ widget_data($widget) }}> <div class="block-container"> <h3 class="block-minorHeader"><a href="{{ link('online') }}">{$title}</a></h3> <div class="block-body"> <xf:if contentcheck="true"> <div class="block-row block-row--minor"> <h4 class="block-textHeader block-textHeader--scaled"> {{ phrase('people_you_follow') }} </h4> <ul class="listHeap"> <xf:contentcheck> <xf:if is="$options.followedOnline"> <xf:foreach loop="$online.users" value="$user"> <xf:if is="in_array($user.user_id, $xf.visitor.Profile.following)"> <li> <xf:avatar user="$user" size="xxs" img="true" /> </li> </xf:if> </xf:foreach> </xf:if> </xf:contentcheck> </ul> </div> <div class="block-row block-row--minor"> <h4 class="block-textHeader block-textHeader--scaled"> {{ phrase('members') }} </h4> <xf:else /> <div class="block-row block-row--minor"> </xf:if> <xf:if is="$online.users is not empty"> <ul class="listInline listInline--comma"> <xf:foreach loop="$online.users" value="$user"><xf:trim> <li><xf:username user="$user" rich="true" class="{{ !$user.visible ? 'username--invisible' : '' }}" /></li> </xf:trim></xf:foreach> </ul> <xf:if is="$online.counts.unseen"> <a href="{{ link('online') }}">{{ phrase('ellipsis_and_x_more', {'count': $online.counts.unseen}) }}</a> </xf:if> <xf:else /> {{ phrase('no_members_online_now') }} </xf:if> </div> </div> <div class="block-footer"> <span class="block-footer-counter">{{ phrase('online_now_x_members_y_guests_z',{ 'total': number($online.counts.total), 'members': number($online.counts.members), 'guests': number($online.counts.guests)}) }}</span> </div> </div> </div> </style> ]]>
</template>
<template title="xentr_avatar_frames.less" type="public" addon_id="XENTR/AvatarFrame" version_id="1000170" version_string="1.0.1">
<![CDATA[ <xf:foreach loop="$displayStyles" key="$id" value="$style" if="$style.avatar_frame_enable"> .xentr-avatar-frame--style{$id} { border: @xf-borderSizeMinorFeature solid {$style.frame_color|raw}; box-shadow: 50% {$style.frame_border_color|raw}, 50% {$style.frame_border_color|raw}, 50%{$style.frame_border_color|raw}, 50% {$style.frame_border_color|raw}, 50% {$style.frame_border_color|raw}, 50% {$style.frame_border_color|raw}; } .avatar { img:not(.cropImage) { border-radius: 50%; } } </xf:foreach> .p-navgroup-link.p-navgroup-link--user .avatar { border: none; box-shadow: none; } ]]>
</template>
<template title="xf_post_highligh" type="public" addon_id="" version_id="0" version_string="">
<![CDATA[ <xf:if is=" (({$post.User.user_group_id}==22) OR in_array(3, {$post.User.secondary_group_ids}))">admin_highlight </xf:if> ]]>
</template>
</templates>
<properties>
<group group_name="dohthemebasic" title="[DohTheme] --> Basic options" description="General settings that control the theme overall." display_order="10" addon_id=""/>
<group group_name="dohthemeheader" title="[DohTheme] --> Header and navigation" description="Generic header specific settings." display_order="20" addon_id=""/>
<group group_name="dohthemeforum" title="[DohTheme] --> Node/forum list" description="Controls the display and properties of the categories and other node types." display_order="30" addon_id=""/>
<group group_name="sidebaroptions" title="[DohTheme] --> Sidebar" description="Properties for sidebar collapse, icons, etc." display_order="40" addon_id=""/>
<group group_name="dohthemeds" title="[DohTheme] --> Discussion List" description="Control on the appearance of the list of discussions within a forum." display_order="50" addon_id=""/>
<group group_name="threadoptions" title="[DohTheme] --> Messages" description="Thread list styling, post styles, and post settings." display_order="60" addon_id=""/>
<group group_name="dohthemefooter" title="[DohTheme] --> Pre-Footer" description="Show footer columns and also general footer settings." display_order="70" addon_id=""/>
<group group_name="dohthemeglyphs" title="[DohTheme] --> Icons" description="Settings for the main icon font for the theme." display_order="80" addon_id=""/>
<property property_name="acpBlockBorder" group_name="AdminCPStyle" title="Block Border" description="" property_type="value" value_type="color" depends_on="" value_group="" display_order="32" addon_id="DCom/AdminCPStyle">
<value_parameters>Value</value_parameters>
<value>"#1b1b1b"</value>
</property>
<property property_name="acpBlockContBg" group_name="AdminCPStyle" title="Block Container Background" description="" property_type="value" value_type="color" depends_on="" value_group="" display_order="33" addon_id="DCom/AdminCPStyle">
<value_parameters>Value</value_parameters>
<value>"#1b1b1b"</value>
</property>
<property property_name="acpBlockFooterBg" group_name="AdminCPStyle" title="Block Footer Background" description="" property_type="value" value_type="color" depends_on="" value_group="" display_order="34" addon_id="DCom/AdminCPStyle">
<value_parameters>Value</value_parameters>
<value>"#1b1b1b"</value>
</property>
<property property_name="acpBlockHeadBg" group_name="AdminCPStyle" title="Block Header Background" description="" property_type="value" value_type="color" depends_on="" value_group="" display_order="31" addon_id="DCom/AdminCPStyle">
<value_parameters>Value</value_parameters>
<value>"#1b1b1b"</value>
</property>
<property property_name="acpHeaderBackground" group_name="AdminCPStyle" title="Header Background" description="" property_type="value" value_type="color" depends_on="" value_group="" display_order="10" addon_id="DCom/AdminCPStyle">
<value_parameters>Value</value_parameters>
<value>"#1b1b1b"</value>
</property>
<property property_name="acpNavBg" group_name="AdminCPStyle" title="Nav Background" description="" property_type="value" value_type="color" depends_on="" value_group="" display_order="20" addon_id="DCom/AdminCPStyle">
<value_parameters>Value</value_parameters>
<value>"#1b1b1b"</value>
</property>
<property property_name="acpPageBg" group_name="AdminCPStyle" title="Page Background" description="" property_type="value" value_type="color" depends_on="" value_group="" display_order="9" addon_id="DCom/AdminCPStyle">
<value_parameters>Value</value_parameters>
<value>"#1b1b1b"</value>
</property>
<property property_name="acp_code_style" group_name="AdminCPCodeEditor" title="Òåìà îôîðìëåíèÿ" description="" property_type="value" value_type="select" depends_on="" value_group="" display_order="1" addon_id="DCom/AdminCPStyle">
<value_parameters>darcula=darcula ambiance=ambiance base16-ocean-dark=base16-ocean-dark cobalt=cobalt dracula=dracula material=material monokai-spacegray-eighties=monokai-spacegray-eighties monokai=monokai one-dark=one-dark railscasts=railscasts</value_parameters>
<value>"monokai"</value>
</property>
<property property_name="aur_guilds_tag_container" group_name="aur_guilds" title="Guild tag container (button)" description="" property_type="css" value_type="" depends_on="" value_group="" display_order="40" css_components="background,border,border_radius,padding,extra" addon_id="AUR/Guilds">
<value>{ "background-color": "#2b2b2b", "border-color": "#393939", "border-radius": "6px", "padding-top": "2px", "padding-right": "4px", "padding-bottom": "2px", "padding-left": "4px", "extra": "min-width: max-content;\n align-items: center;\n display: inline-flex;\n min-height: 22px;\n padding: 2px 6px;\nflex-shrink: 0; /* \u043d\u0435 \u0441\u0436\u0438\u043c\u0430\u0442\u044c\u0441\u044f */\n min-width: max-content; \n\n line-height: 1.2;\n font-size: 12px;\n box-sizing: border-box;\n\n background-color: #1e1e1e;\n color: #e6e6e6;\n\n border: 1px solid #333;\n border-radius: 4px;\n margin: 0; /* \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u043b\u044e\u0431\u044b\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u044b */\n white-space: nowrap;\n\n transition:\n background-color 0.12s ease,\n border-color 0.12s ease;\n}\n\n.element:hover {\n background-color: #252525;\n border-color: #444;\n}\n\n.element:focus {\n outline: none;\n border-color: #4c8dff;" }</value>
</property>
<property property_name="avatarDefaultImage" group_name="avatar" title="Default avatar image URL" description="The image URL specified here will be used as the image within the default avatar. Only applies if the "Image" type is selected above." property_type="value" value_type="string" depends_on="" value_group="" display_order="800" addon_id="XF">
<value_parameters>asset=default_avatars</value_parameters>
<value>"data/assets/default_avatars/1000055408.png"</value>
</property>
<property property_name="avatarDefaultType" group_name="avatar" title="Default avatar type" description="Controls whether the default avatar is text or image based. Unless disabled in the options, default avatars will be dynamically generated based on the user's name." property_type="value" value_type="radio" depends_on="" value_group="" display_order="600" addon_id="XF">
<value_parameters>text={{ phrase('text') }} image={{ phrase('image') }}</value_parameters>
<value>"image"</value>
</property>
<property property_name="badge" group_name="misc" title="Badge" description="Badges appear to indicate a number if items requiring attention, such as unread messages in your inbox" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,background,border,border_radius,extra" addon_id="XF">
<value>{ "color": "@xf-paletteColor1", "background-color": "@xf-paletteColor5", "border-radius": "50%" }</value>
</property>
<property property_name="badgeHighlighted" group_name="misc" title="Badge - highlighted" description="Highlighted badges grab the viewer's attention more and tend to indicate new items to be reviewed" property_type="css" value_type="" depends_on="" value_group="" display_order="20100" css_components="text,background,border,extra" addon_id="XF">
<value>{ "color": "@xf-textColorEmphasized", "background-color": "@xf-contentAccentBg" }</value>
</property>
<property property_name="bbCodeBlock" group_name="bbCode" title="BB code blocks" description="All BB code blocks within messages make use of these styling rules" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,background,border,border_radius,extra" addon_id="XF">
<value>{ "background-color": "@xf-contentAltBg", "border-width": "@xf-borderSize", "border-color": "@xf-borderColor", "border-radius": "@xf-blockBorderRadius", "border-left-width": "@xf-borderSizeFeature", "border-left-color": "@xf-paletteAccent1" }</value>
</property>
<property property_name="bbCodeBlockTitle" group_name="bbCode" title="BB code blocks - title" description="Styles the title section of BB code blocks within messages" property_type="css" value_type="" depends_on="" value_group="" display_order="20100" css_components="text,background,border,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-linkColor", "background-color": "xf-diminish(@xf-contentAltBg, 2%)", "extra": "font-weight: 600;\ntext-transform: uppercase;\npadding-top: @xf-paddingLarge;\npadding-bottom: @xf-paddingLarge;" }</value>
</property>
<property property_name="blockBorder" group_name="block" title="Block border framework" description="Virtually all blocks have their borders styled with these settings" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="border,extra" addon_id="XF">
<value>{ "border-width": "@xf-borderSize", "border-color": "rgb(41, 45, 61)", "extra": "box-shadow: 0px 0px 20px 0px rgba(27, 26, 35, .3);" }</value>
</property>
<property property_name="blockBorderRadius" group_name="block" title="Block border radius" description="Controls the size of the curve on block border corners" property_type="value" value_type="unit" depends_on="" value_group="borderRadius" display_order="1000" addon_id="XF">
<value>"8px"</value>
</property>
<property property_name="blockFilterBar" group_name="block" title="Block filter bar" description="When the content of a block can be filtered, the controls to do so are styled here" property_type="css" value_type="" depends_on="" value_group="" display_order="20800" css_components="text,background,border,extra" addon_id="XF">
<value>{ "color": "@xf-textColorEmphasized", "font-weight": "@xf-fontWeightHeavy", "background-color": "@xf-pageBg", "extra": "padding: @xf-paddingLarge;" }</value>
</property>
<property property_name="blockFooter" group_name="block" title="Block footer" description="When information needs to be conveyed in a footer element for a block, its style is controlled here" property_type="css" value_type="" depends_on="" value_group="" display_order="21200" css_components="text,background,border,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeSmaller", "color": "@xf-blockFooterTextColor", "background-color": "@xf-blockFooterBg", "border-top-width": "@xf-borderSize", "border-top-color": "@xf-borderColor" }</value>
</property>
<property property_name="blockHeader" group_name="block" title="Block header" description="Blocks often have title bars at their tops, which are styled here" property_type="css" value_type="" depends_on="" value_group="" display_order="20100" css_components="text,background,border,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeLarger", "color": "@xf-majorHeadingTextColor", "background-color": "@xf-majorHeadingBg" }</value>
</property>
<property property_name="blockLinkSelected" group_name="misc" title="Block link - selected" description="Styling for block-type links when in their selected state" property_type="css" value_type="" depends_on="" value_group="" display_order="21000" css_components="text,background,border_width_simple,border_color_simple,extra" addon_id="XF">
<value>{ "background-color": "@xf-contentAltBg", "border-width": "@xf-borderSizeFeature", "border-color": "@xf-borderColorAccentContent" }</value>
</property>
<property property_name="blockMinorHeader" group_name="block" title="Block minor header" description="Sub-headings in blocks use these settings" property_type="css" value_type="" depends_on="" value_group="" display_order="20400" css_components="text,background,border,extra" addon_id="XF">
<value>{ "font-size": "18px", "color": "@xf-minorHeadingTextColor", "font-weight": "@xf-fontWeightHeavy", "border-bottom-width": "@xf-borderSize", "border-bottom-color": "@xf-borderColor", "extra": "padding: @xf-paddingLargest @xf-elementSpacer;" }</value>
</property>
<property property_name="blockTabHeader" group_name="block" title="Block tab header" description="Occasionally, blocks will have multi-part, tab headers, styled with these settings" property_type="css" value_type="" depends_on="" value_group="" display_order="20200" css_components="text,background,border,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeSmaller", "color": "@xf-blockTabHeaderTextColor", "background-color": "@xf-blockTabHeaderBg", "border-bottom-width": "@xf-borderSize", "border-bottom-color": "@xf-borderColor", "extra": "font-weight: 600;\ntext-transform: uppercase;\npadding-left: @xf-paddingLarge;\npadding-right: @xf-paddingLarge;" }</value>
</property>
<property property_name="blockTabHeaderBg" group_name="color" title="Block tab header background color" description="" property_type="value" value_type="color" depends_on="" value_group="blockTabHeader" display_order="6500" addon_id="XF">
<value>"#1b1b1b"</value>
</property>
<property property_name="blockTabHeaderSelected" group_name="block" title="Block tab header - selected tab" description="The selected tab in multi-part headers takes additional styling from here" property_type="css" value_type="" depends_on="" value_group="" display_order="20300" css_components="text,background,border_color_simple,extra" addon_id="XF">
<value>{ "color": "@xf-contentHighlightBg", "border-color": "@xf-borderColorHighlight" }</value>
</property>
<property property_name="blockTabHeaderTextColor" group_name="color" title="Block tab header text color" description="" property_type="value" value_type="color" depends_on="" value_group="blockTabHeader" display_order="6600" addon_id="XF">
<value>"@xf-textColor"</value>
</property>
<property property_name="borderColor" group_name="color" title="Border color" description="Structural borders around blocks of content generally use this color" property_type="value" value_type="color" depends_on="" value_group="borderBasic" display_order="4000" addon_id="XF">
<value>"@xf-paletteColor4"</value>
</property>
<property property_name="borderColorAccentContent" group_name="color" title="Accent content border color" description="" property_type="value" value_type="color" depends_on="" value_group="borderOther" display_order="5200" addon_id="XF">
<value>"@xf-contentAccentBg"</value>
</property>
<property property_name="borderColorAttention" group_name="color" title="Attention-grabbing border color" description="" property_type="value" value_type="color" depends_on="" value_group="borderOther" display_order="5300" addon_id="XF">
<value>"@xf-paletteAccent1"</value>
</property>
<property property_name="borderColorFeature" group_name="color" title="Feature border color" description="" property_type="value" value_type="color" depends_on="" value_group="borderOther" display_order="5100" addon_id="XF">
<value>"@xf-paletteColor1"</value>
</property>
<property property_name="borderColorHeavy" group_name="color" title="Heavy border color" description="" property_type="value" value_type="color" depends_on="" value_group="borderBasic" display_order="4300" addon_id="XF">
<value>"rgba(255, 255, 255, .12)"</value>
</property>
<property property_name="borderColorHighlight" group_name="color" title="Highlight border color" description="" property_type="value" value_type="color" depends_on="" value_group="borderOther" display_order="5000" addon_id="XF">
<value>"@xf-contentHighlightBg"</value>
</property>
<property property_name="buttonBase" group_name="button" title="Button base" description="Defines the styling for the basic elements that are common to all text-based buttons" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,border_radius,padding,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeSmall", "font-weight": "@xf-fontWeightHeavy", "border-radius": "@xf-borderRadiusLarge", "padding-top": "@xf-paddingLarge", "padding-right": "@xf-paddingLargest", "padding-bottom": "@xf-paddingLarge", "padding-left": "@xf-paddingLargest", "extra": "position: relative;\ntext-align: center;\ntext-transform: uppercase;\nborder: none;" }</value>
</property>
<property property_name="buttonBg" group_name="color" title="Default button background color" description="" property_type="value" value_type="color" depends_on="" value_group="buttons" display_order="8200" addon_id="XF">
<value>"rgb(255, 255, 255)"</value>
</property>
<property property_name="buttonCta" group_name="button" title="Button - call to action" description="Call to action buttons sit alone and invite the user to do something, like post a new thread" property_type="css" value_type="" depends_on="" value_group="" display_order="20300" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-textColorEmphasized", "background-color": "@xf-buttonCtaBg" }</value>
</property>
<property property_name="buttonCtaBg" group_name="color" title="Call-to-action button background" description="" property_type="value" value_type="color" depends_on="" value_group="buttons" display_order="8400" addon_id="XF">
<value>"@xf-paletteAccent1"</value>
</property>
<property property_name="buttonDefault" group_name="button" title="Button - default" description="Most buttons use this styling, except for primary form submit buttons" property_type="css" value_type="" depends_on="" value_group="" display_order="20100" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-buttonCtaBg", "background-color": "@xf-buttonBg" }</value>
</property>
<property property_name="buttonPrimary" group_name="button" title="Button - primary" description="These rules are used mostly for the main submit button for forms" property_type="css" value_type="" depends_on="" value_group="" display_order="20200" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-textColorEmphasized", "background-color": "@xf-buttonPrimaryBg", "extra": "min-width: 80px;" }</value>
</property>
<property property_name="buttonPrimaryBg" group_name="color" title="Primary button background color" description="" property_type="value" value_type="color" depends_on="" value_group="buttons" display_order="8300" addon_id="XF">
<value>"@xf-paletteColor1"</value>
</property>
<property property_name="buttonTextColor" group_name="color" title="Default button text color" description="" property_type="value" value_type="color" depends_on="" value_group="buttons" display_order="8100" addon_id="XF">
<value>"@xf-textColorEmphasized"</value>
</property>
<property property_name="chipHover" group_name="misc" title="Chips - hovered" description="Chip styling is adjusted using these settings when they are hovered" property_type="css" value_type="" depends_on="" value_group="" display_order="20300" css_components="text,background,border_color_simple,extra" addon_id="XF">
<value>{ "color": "@xf-linkColor", "background-color": "@xf-contentBg" }</value>
</property>
<property property_name="chromeBg" group_name="color" title="Page chrome background color" description="" property_type="value" value_type="color" depends_on="" value_group="chrome" display_order="6000" addon_id="XF">
<value>"@xf-paletteColor1"</value>
</property>
<property property_name="chromeTextColor" group_name="color" title="Page chrome text color" description="" property_type="value" value_type="color" depends_on="" value_group="chrome" display_order="6050" addon_id="XF">
<value>"@xf-textColorEmphasized"</value>
</property>
<property property_name="contentAccentLink" group_name="content" title="Accented content area links" description="Links within accented content will be styled with these settings" property_type="css" value_type="" depends_on="" value_group="" display_order="20400" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-textColorAccentContent" }</value>
</property>
<property property_name="contentAltBase" group_name="content" title="Alternate content area base" description="When an alternative background needs to be presented along side the main content background, this will be employed" property_type="css" value_type="" depends_on="" value_group="" display_order="20100" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-textColorDimmed", "background-color": "@xf-contentAltBg" }</value>
</property>
<property property_name="contentAltBg" group_name="color" title="Alternate content background color" description="In order to differentiate it, some content will be presented on this alternative background" property_type="value" value_type="color" depends_on="" value_group="contentBackground" display_order="2200" addon_id="XF">
<value>"@xf-paletteColor5"</value>
</property>
<property property_name="contentBg" group_name="color" title="Content background color" description="Most normal content will sit on this background" property_type="value" value_type="color" depends_on="" value_group="contentBackground" display_order="2000" addon_id="XF">
<value>"rgb(23, 23, 23)"</value>
</property>
<property property_name="contentHighlightBase" group_name="content" title="Highlighted content area base" description="If an area of content is selected, for example a row in a table, its normal background will be substituted with this" property_type="css" value_type="" depends_on="" value_group="" display_order="20200" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-textColorEmphasized", "background-color": "@xf-contentHighlightBg" }</value>
</property>
<property property_name="contentHighlightBg" group_name="color" title="Highlighted content background color" description="When the standard background color is highlighted or selected, it will use this color" property_type="value" value_type="color" depends_on="" value_group="contentBackground" display_order="2300" addon_id="XF">
<value>"@xf-linkHoverColor"</value>
</property>
<property property_name="dataListFooter" group_name="dataList" title="Data list footer" description="When data lists have a terminating element at their foot, it is styled here" property_type="css" value_type="" depends_on="" value_group="" display_order="20200" css_components="text,background,border,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeSmaller", "color": "@xf-blockFooterTextColor", "background-color": "@xf-blockFooterBg", "border-top-width": "@xf-borderSize", "border-top-color": "@xf-borderColor" }</value>
</property>
<property property_name="dt_account_wrapper_glyphs" group_name="dohthemeglyphs" title="Account Wrapper Icons" description="Adds icons to tabs in account wrapper page when enabled." property_type="value" value_type="boolean" depends_on="" value_group="" display_order="100" addon_id="">
<value>0</value>
</property>
<property property_name="dt_alternative_nodes" group_name="dohthemeforum" title="Alternative Node Background" description="Sets the background color of even node items." property_type="value" value_type="color" depends_on="" value_group="Forum" display_order="50" addon_id="">
<value>""</value>
</property>
<property property_name="dt_alternative_threads" group_name="dohthemeds" title="Alternative Thread Background" description="Set the background color of even discussion list items." property_type="value" value_type="color" depends_on="" value_group="General" display_order="30" addon_id="">
<value>""</value>
</property>
<property property_name="dt_avatar_shape" group_name="dohthemebasic" title="Avatar Shape" description="Change small avatars around the forum to visually crop into a specific shape." property_type="value" value_type="select" depends_on="" value_group="Global" display_order="20" addon_id="">
<value_parameters>option1=Default option2=Circle option3=Rhombus option4=Pentagon option5=Hexagon option6=Heptagon option7=Octagon option8=Nonagon option9=Bevel option10=Rabbet</value_parameters>
<value>"option1"</value>
</property>
<property property_name="dt_background_sticky_thread_css" group_name="dohthemeds" title="Sticky Threads" description="Styles the individual sticky threads." property_type="css" value_type="" depends_on="" value_group="" display_order="11" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>[]</value>
</property>
<property property_name="dt_breadbrumb_bottom" group_name="dohthemebasic" title="Remove Bottom Breadcrumb" description="Removes the breadcrumb at the bottom of the page." property_type="value" value_type="boolean" depends_on="" value_group="Global" display_order="50" addon_id="">
<value>1</value>
</property>
<property property_name="dt_breadbrumb_index" group_name="dohthemebasic" title="Remove Breadcrumb on Forum Index" description="This removes the breadcrumb for the forum list index page." property_type="value" value_type="boolean" depends_on="" value_group="ForumHome" display_order="100" addon_id="">
<value>1</value>
</property>
<property property_name="dt_breadbrumb_top" group_name="dohthemebasic" title="Remove Top Breadcrumb" description="Removes the breadcrumb at the top of the page." property_type="value" value_type="boolean" depends_on="" value_group="Global" display_order="40" addon_id="">
<value>1</value>
</property>
<property property_name="dt_cat_description" group_name="dohthemeforum" title="Category Description" description="Sets the tooltip display type." property_type="value" value_type="select" depends_on="" value_group="Forum" display_order="40" addon_id="">
<value_parameters>option1=Default option2=Hover Only option3=Tooltip</value_parameters>
<value>"option3"</value>
</property>
<property property_name="dt_category_header" group_name="dohthemeforum" title="Category block header" description="Categories often have title bars at their tops, which are styled here." property_type="css" value_type="" depends_on="" value_group="" display_order="10" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>{ "font-size": "@xf-fontSizeLarger", "background-color": "@xf-paletteColor1", "background-image": "linear-gradient(to right, @xf-paletteColor1, @xf-paletteAccent1)", "extra": "-webkit-background-clip: text;\n-webkit-text-fill-color: transparent;\nfont-weight: 600;\ntext-transform: uppercase;" }</value>
</property>
<property property_name="dt_collaps_sticky_threads" group_name="dohthemeds" title="Collapsible sticky threads" description="It allows the users to collapse sticky threads. Requires Separate Sticky Threads." property_type="value" value_type="boolean" depends_on="dt_seperate_sticky_threads" value_group="General" display_order="15" addon_id="">
<value>1</value>
</property>
<property property_name="dt_collapsible_categories" group_name="dohthemeforum" title="Enable collapsible category nodes" description="It allows the user to collapse whole categories in the node list." property_type="value" value_type="boolean" depends_on="" value_group="Forum" display_order="10" addon_id="">
<value>1</value>
</property>
<property property_name="dt_collapsible_extras" group_name="threadoptions" title="Collapsible user extras" description="Adds a trigger to toggle the Postbit extra information open and closed (such as joined, messages, trophies, etc..)." property_type="value" value_type="boolean" depends_on="" value_group="MessageLayout" display_order="30" addon_id="">
<value>0</value>
</property>
<property property_name="dt_collapsible_sidebar" group_name="sidebaroptions" title="Collapsible sidebar" description="It allows you to collapse and expand the sidebar if it is enabled." property_type="value" value_type="boolean" depends_on="" value_group="Sidebar" display_order="30" addon_id="">
<value>1</value>
</property>
<property property_name="dt_collapsible_sidebar_block" group_name="sidebaroptions" title="Collapsible sidebar widget" description="It allows you to collapse and expand sidebar widgets if it is enabled." property_type="value" value_type="boolean" depends_on="" value_group="Sidebar" display_order="40" addon_id="">
<value>0</value>
</property>
<property property_name="dt_collpse_off_icon" group_name="dohthemeglyphs" title="Sidebar Toggle-Off" description="Unicode of the Icon." property_type="value" value_type="string" depends_on="dt_collapsible_sidebar" value_group="Sidebar" display_order="25" addon_id="">
<value>"\"\\f204\""</value>
</property>
<property property_name="dt_collpse_on_icon" group_name="dohthemeglyphs" title="Sidebar Toggle-On" description="Unicode of the Icon." property_type="value" value_type="string" depends_on="dt_collapsible_sidebar" value_group="Sidebar" display_order="20" addon_id="">
<value>"\"\\f205\""</value>
</property>
<property property_name="dt_condense_visito_tabs" group_name="dohthemeheader" title="Condense visitor tabs" description="It allows you to condense the visitor tabs. Links for the Alerts and Conversations are added to the user drop-down menu." property_type="value" value_type="boolean" depends_on="" value_group="Navigation" display_order="40" addon_id="">
<value>0</value>
</property>
<property property_name="dt_disable_sidebar" group_name="sidebaroptions" title="Disable sidebar" description="Tick in this checked box if you want to disable the sidebar at the forum." property_type="value" value_type="boolean" depends_on="" value_group="Sidebar" display_order="10" addon_id="">
<value>0</value>
</property>
<property property_name="dt_disable_tab_links" group_name="dohthemeheader" title="Remove Sub-navigation row" description="It allows you to remove the selected navigation sub-links." property_type="value" value_type="boolean" depends_on="" value_group="Navigation" display_order="100" addon_id="">
<value>1</value>
</property>
<property property_name="dt_disc_minor_header" group_name="dohthemeds" title="Discussion minor header" description="Displays a minor header above the thread list with thread info." property_type="value" value_type="boolean" depends_on="" value_group="General" display_order="8" addon_id="">
<value>0</value>
</property>
<property property_name="dt_disc_minor_header_css" group_name="dohthemeds" title="Discussion minor header" description="Styles the discussion minor header if enabled." property_type="css" value_type="" depends_on="" value_group="" display_order="10" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-textColorDimmed", "background-color": "@xf-contentAltBg", "padding": "@xf-paddingLarge" }</value>
</property>
<property property_name="dt_disc_new_indicator" group_name="dohthemeds" title="New indicator on unread posts" description="Displays a "new" indicator next to the node title if there is new content." property_type="value" value_type="boolean" depends_on="" value_group="General" display_order="80" addon_id="">
<value>1</value>
</property>
<property property_name="dt_discussion_animation" group_name="dohthemeds" title="Discussion list animation" description="Adds animation to discussion list items on page load." property_type="value" value_type="boolean" depends_on="" value_group="General" display_order="45" addon_id="">
<value>0</value>
</property>
<property property_name="dt_discussion_glyphs" group_name="dohthemeglyphs" title="Discussion List Icons" description="Adds icons next to username and date text." property_type="value" value_type="boolean" depends_on="" value_group="" display_order="80" addon_id="">
<value>0</value>
</property>
<property property_name="dt_editor_avatar" group_name="threadoptions" title="Remove text editor's avatar" description="This removes the user's avatar from the Rich text editor." property_type="value" value_type="boolean" depends_on="" value_group="MessageLayout" display_order="50" addon_id="">
<value>0</value>
</property>
<property property_name="dt_euicss" group_name="threadoptions" title="Show user extras on hover" description="As opposed to on click, hovering over the Postbit extra information will trigger the sliding effect." property_type="value" value_type="boolean" depends_on="" value_group="MessageLayout" display_order="40" addon_id="">
<value>0</value>
</property>
<property property_name="dt_extra_footer" group_name="dohthemefooter" title="Enable Pre-Footer" description="" property_type="value" value_type="boolean" depends_on="" value_group="" display_order="10" addon_id="">
<value>0</value>
</property>
<property property_name="dt_extra_footer_content_css" group_name="dohthemefooter" title="Pre-Footer widget" description="Styles the widget block." property_type="css" value_type="" depends_on="" value_group="" display_order="100" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>{ "color": "@xf-publicFooter--color", "extra": "background: none;\nborder: none;\nbox-shadow: none;" }</value>
</property>
<property property_name="dt_extra_footer_css" group_name="dohthemefooter" title="Pre-Footer body" description="Styles the body of the footer widgets." property_type="css" value_type="" depends_on="" value_group="" display_order="90" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>{ "color": "@xf-publicFooter--color", "background-color": "@xf-publicFooter--background-color", "border-top-width": "@xf-borderSize", "border-top-color": "rgb(41, 45, 61)", "padding-top": "30px", "padding-right": "@xf-paddingLarge", "padding-bottom": "30px", "padding-left": "@xf-paddingLarge" }</value>
</property>
<property property_name="dt_extra_footer_custom_html" group_name="dohthemefooter" title="Custom HTML Content" description="" property_type="value" value_type="string" depends_on="dt_extra_footer" value_group="Custom_HTML" display_order="30" addon_id="">
<value_parameters>rows=4</value_parameters>
<value>"<p>\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur egestas ex id lacus porttitor congue. Nam tristique massa quis eleifend ornare. Sed mattis est at ipsum tristique egestas curabitur.\n</p>"</value>
</property>
<property property_name="dt_extra_footer_custom_html_title" group_name="dohthemefooter" title="Custom HTML Title" description="" property_type="value" value_type="string" depends_on="dt_extra_footer" value_group="Custom_HTML" display_order="25" addon_id="">
<value>"About Us"</value>
</property>
<property property_name="dt_extra_footer_facebook" group_name="dohthemefooter" title="Facebook URL" description="" property_type="value" value_type="string" depends_on="dt_extra_footer" value_group="Footer_Social" display_order="56" addon_id="">
<value>"dohtheme"</value>
</property>
<property property_name="dt_extra_footer_first_column" group_name="dohthemefooter" title="First Column Content" description="" property_type="value" value_type="select" depends_on="dt_extra_footer" value_group="" display_order="20" addon_id="">
<value_parameters>option1=Members online option2=Forum statistics option3=Share this page option4=Online statistics option5=New profile posts option6=New posts option7=Newest members option8=Social Links option9=Custom HTML option10=Links Column 1 option11=Links Column 2</value_parameters>
<value>"option4"</value>
</property>
<property property_name="dt_extra_footer_fourth_column" group_name="dohthemefooter" title="Fourth Column Content" description="" property_type="value" value_type="select" depends_on="dt_extra_footer" value_group="" display_order="23" addon_id="">
<value_parameters>option1=Members online option2=Forum statistics option3=Share this page option4=Online statistics option5=New profile posts option6=New posts option7=Newest members option8=Social Links option9=Custom HTML option10=Links Column 1 option11=Links Column 2</value_parameters>
<value>"option8"</value>
</property>
<property property_name="dt_extra_footer_index" group_name="dohthemefooter" title="Enable Pre-Footer on Forum Index Only" description="" property_type="value" value_type="boolean" depends_on="dt_extra_footer" value_group="" display_order="15" addon_id="">
<value>0</value>
</property>
<property property_name="dt_extra_footer_instagram" group_name="dohthemefooter" title="Instagram URL" description="" property_type="value" value_type="string" depends_on="dt_extra_footer" value_group="Footer_Social" display_order="58" addon_id="">
<value>"dohtheme"</value>
</property>
<property property_name="dt_extra_footer_link_1" group_name="dohthemefooter" title="Links Column 1" description="" property_type="value" value_type="string" depends_on="dt_extra_footer" value_group="Footer_Links" display_order="40" addon_id="">
<value_parameters>rows=4</value_parameters>
<value>"<li><a href=\"#\">Link Title</a></li>\n<li><a href=\"#\">Link Title</a></li>\n<li><a href=\"#\">Link Title</a></li>\n<li><a href=\"#\">Link Title</a></li>"</value>
</property>
<property property_name="dt_extra_footer_link_1_title" group_name="dohthemefooter" title="Links Column 1 Title" description="" property_type="value" value_type="string" depends_on="dt_extra_footer" value_group="Footer_Links" display_order="35" addon_id="">
<value>"Title Here"</value>
</property>
<property property_name="dt_extra_footer_link_2" group_name="dohthemefooter" title="Links Column 2" description="" property_type="value" value_type="string" depends_on="dt_extra_footer" value_group="Footer_Links" display_order="50" addon_id="">
<value_parameters>rows=4</value_parameters>
<value>"<li><a href=\"#\">Link Title</a></li>\n<li><a href=\"#\">Link Title</a></li>\n<li><a href=\"#\">Link Title</a></li>\n<li><a href=\"#\">Link Title</a></li>"</value>
</property>
<property property_name="dt_extra_footer_link_2_title" group_name="dohthemefooter" title="Links Column 2 Title" description="" property_type="value" value_type="string" depends_on="dt_extra_footer" value_group="Footer_Links" display_order="45" addon_id="">
<value>"Title Here"</value>
</property>
<property property_name="dt_extra_footer_link_css" group_name="dohthemefooter" title="Pre-Footer links" description="Controls styling for individual links within the links columns." property_type="css" value_type="" depends_on="" value_group="" display_order="130" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>{ "color": "@xf-publicFooterLink--color", "padding-top": "2px", "padding-bottom": "2px" }</value>
</property>
<property property_name="dt_extra_footer_second_column" group_name="dohthemefooter" title="Second Column Content" description="" property_type="value" value_type="select" depends_on="dt_extra_footer" value_group="" display_order="21" addon_id="">
<value_parameters>option1=Members online option2=Forum statistics option3=Share this page option4=Online statistics option5=New profile posts option6=New posts option7=Newest members option8=Social Links option9=Custom HTML option10=Links Column 1 option11=Links Column 2</value_parameters>
<value>"option6"</value>
</property>
<property property_name="dt_extra_footer_social_title" group_name="dohthemefooter" title="Social Widget Title" description="" property_type="value" value_type="string" depends_on="dt_extra_footer" value_group="Footer_Social" display_order="55" addon_id="">
<value>"Stay Connected"</value>
</property>
<property property_name="dt_extra_footer_third_column" group_name="dohthemefooter" title="Third Column Content" description="" property_type="value" value_type="select" depends_on="dt_extra_footer" value_group="" display_order="22" addon_id="">
<value_parameters>option1=Members online option2=Forum statistics option3=Share this page option4=Online statistics option5=New profile posts option6=New posts option7=Newest members option8=Social Links option9=Custom HTML option10=Links Column 1 option11=Links Column 2</value_parameters>
<value>"option7"</value>
</property>
<property property_name="dt_extra_footer_title_css" group_name="dohthemefooter" title="Pre-Footer widget header" description="Styles the heading block in footer widgets." property_type="css" value_type="" depends_on="" value_group="" display_order="120" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>{ "color": "@xf-textColorEmphasized", "padding-top": "@xf-paddingMedium", "padding-right": "@xf-paddingLarge", "padding-bottom": "@xf-elementSpacer", "padding-left": "@xf-paddingLarge", "extra": "border: none;\nmargin: 0;\nmargin-bottom: @xf-paddingLarge;" }</value>
</property>
<property property_name="dt_extra_footer_twitter" group_name="dohthemefooter" title="Twitter URL" description="" property_type="value" value_type="string" depends_on="dt_extra_footer" value_group="Footer_Social" display_order="57" addon_id="">
<value>"dohtheme"</value>
</property>
<property property_name="dt_extra_footer_widgcont_css" group_name="dohthemefooter" title="Pre-Footer widget content" description="Styles the content block in footer widgets." property_type="css" value_type="" depends_on="" value_group="" display_order="125" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>{ "padding-top": "@xf-paddingMedium", "padding-right": "@xf-paddingLarge", "padding-bottom": "@xf-paddingMedium", "padding-left": "@xf-paddingLarge", "extra": "margin: 0;" }</value>
</property>
<property property_name="dt_extra_footer_widgfoot_css" group_name="dohthemefooter" title="Pre-Footer widget footer" description="Styles the content block-footer in footer widgets." property_type="css" value_type="" depends_on="" value_group="" display_order="127" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>[]</value>
</property>
<property property_name="dt_extra_footer_youtube" group_name="dohthemefooter" title="Youtube URL" description="" property_type="value" value_type="string" depends_on="dt_extra_footer" value_group="Footer_Social" display_order="59" addon_id="">
<value>"dohtheme"</value>
</property>
<property property_name="dt_firstpost_customization" group_name="threadoptions" title="First Post" description="Styles first post in the thread." property_type="css" value_type="" depends_on="" value_group="" display_order="50" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>{ "background-color": "rgba(0,0,0,.085)" }</value>
</property>
<property property_name="dt_google_font" group_name="dohthemebasic" title="Google Font" description="Choose which fonts you wanted to be loaded from the Google Fonts API." property_type="value" value_type="string" depends_on="" value_group="Global" display_order="10" addon_id="">
<value>"Barlow:wght@400;500;600;700"</value>
</property>
<property property_name="dt_guest_message" group_name="dohthemebasic" title="Enable Guest Message" description="Shows a welcome section to your visitors." property_type="value" value_type="boolean" depends_on="" value_group="GuestMessage" display_order="70" addon_id="">
<value>0</value>
</property>
<property property_name="dt_guest_message_content" group_name="dohthemebasic" title="Guest Message Content" description="" property_type="value" value_type="string" depends_on="dt_guest_message" value_group="GuestMessage" display_order="90" addon_id="">
<value_parameters>rows=4</value_parameters>
<value>"<h1>Welcome!</h1>\n<p>By registering with us, you'll be able to discuss, share and private message with other members of our community.</p>\n<a href=\"index.php?register\" class=\"button button--icon button--icon--write\"><span class=\"button-text\">\nSignUp Now!\n</span></a>"</value>
</property>
<property property_name="dt_guest_message_css" group_name="dohthemebasic" title="Guest Message" description="Styles the wrapper around the guest's message." property_type="css" value_type="" depends_on="" value_group="" display_order="52" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>{ "color": "@xf-textColorAccentContent", "background-color": "fade(@xf-contentAccentBg, 30%)", "background-image": "%ASSET:dt_theme_files%/img/guest.jpg", "border-radius": "@xf-blockBorderRadius", "padding": "3%" }</value>
</property>
<property property_name="dt_guest_message_index" group_name="dohthemebasic" title="Enable Guest Message on Forum Index Only" description="Enabling this setting shows the guest's message only in the forum list." property_type="value" value_type="boolean" depends_on="dt_guest_message" value_group="GuestMessage" display_order="80" addon_id="">
<value>0</value>
</property>
<property property_name="dt_hb_nodes" group_name="dohthemeforum" title="Hover Background on Nodes" description="Sets the background color of node items on hover." property_type="value" value_type="color" depends_on="" value_group="Forum" display_order="60" addon_id="">
<value>""</value>
</property>
<property property_name="dt_hb_threads" group_name="dohthemeds" title="Hover Background on Threads" description="Set the background color of discussion list items on hover." property_type="value" value_type="color" depends_on="" value_group="General" display_order="40" addon_id="">
<value>""</value>
</property>
<property property_name="dt_he_nodes" group_name="dohthemeforum" title="Hover effect on nodes" description="This will enable a hover effect for nodes." property_type="value" value_type="boolean" depends_on="" value_group="Forum" display_order="70" addon_id="">
<value>0</value>
</property>
<property property_name="dt_he_threads" group_name="dohthemeds" title="Hover effect on threads" description="This will enable a hover effect for discussion list threads." property_type="value" value_type="boolean" depends_on="" value_group="General" display_order="50" addon_id="">
<value>0</value>
</property>
<property property_name="dt_header_background" group_name="dohthemeheader" title="Header Background" description="" property_type="value" value_type="string" depends_on="" value_group="Header" display_order="25" addon_id="">
<value_parameters>asset=headimg</value_parameters>
<value>""</value>
</property>
<property property_name="dt_homeCrumb_icon" group_name="dohthemebasic" title="Home breadcrumb as icon" description="Swaps out the "home" text in the breadcrumb for the home icon." property_type="value" value_type="boolean" depends_on="" value_group="Global" display_order="60" addon_id="">
<value>1</value>
</property>
<property property_name="dt_inline_ballons" group_name="dohthemeheader" title="Inline navigation alert badge" description="Instead of displaying like a balloon, alerts will display inline with the text." property_type="value" value_type="boolean" depends_on="" value_group="Navigation" display_order="50" addon_id="">
<value>0</value>
</property>
<property property_name="dt_last_avatar_discussion" group_name="dohthemeds" title="Last poster avatar on the discussion list" description="Shows avatar in the last post block in thread list items." property_type="value" value_type="boolean" depends_on="" value_group="General" display_order="100" addon_id="">
<value>1</value>
</property>
<property property_name="dt_last_avatar_forum" group_name="dohthemeforum" title="Last poster avatar on the forum list" description="Shows avatar in the last post section." property_type="value" value_type="boolean" depends_on="" value_group="Forum" display_order="100" addon_id="">
<value>1</value>
</property>
<property property_name="dt_link_node_icon" group_name="dohthemeglyphs" title="Link Node Icon" description="Name of Fontawesome Icon." property_type="value" value_type="string" depends_on="" value_group="Node" display_order="38" addon_id="">
<value>"link"</value>
</property>
<property property_name="dt_login_text" group_name="dohthemeheader" title="Remove register/login text" description="This setting allows you to remove the login/registration tab text." property_type="value" value_type="boolean" depends_on="" value_group="Navigation" display_order="80" addon_id="">
<value>0</value>
</property>
<property property_name="dt_message_animation" group_name="threadoptions" title="Message animation" description="Adds animation to messages on page load." property_type="value" value_type="boolean" depends_on="" value_group="MessageLayout" display_order="15" addon_id="">
<value>0</value>
</property>
<property property_name="dt_messages_glyphs" group_name="dohthemeglyphs" title="Message Action Bar Icons" description="Adds icons next to the Action Bar text (such as Report, Edit, Delete, etc..)." property_type="value" value_type="boolean" depends_on="" value_group="" display_order="70" addon_id="">
<value>1</value>
</property>
<property property_name="dt_messages_layout" group_name="threadoptions" title="Messages Layout" description="Specify what message layout you would like to use." property_type="value" value_type="select" depends_on="" value_group="MessageLayout" display_order="20" addon_id="">
<value_parameters>option1=Vertical option2=Horizontal option3=First Post Horizontal</value_parameters>
<value>"option1"</value>
</property>
<property property_name="dt_minime_avatar" group_name="dohthemeds" title="Remove Mini-me Avatar" description="Mini-Me is the small avatar of the current visitor that shows up on discussions." property_type="value" value_type="boolean" depends_on="" value_group="General" display_order="70" addon_id="">
<value>1</value>
</property>
<property property_name="dt_nav_avatar" group_name="dohthemeheader" title="Remove user avatar from navigation" description="This removes the account tab avatar next to the username." property_type="value" value_type="boolean" depends_on="" value_group="Navigation" display_order="60" addon_id="">
<value>0</value>
</property>
<property property_name="dt_nav_user_text" group_name="dohthemeheader" title="Remove user text from navigation" description="This removes the account tab username." property_type="value" value_type="boolean" depends_on="" value_group="Navigation" display_order="70" addon_id="">
<value>1</value>
</property>
<property property_name="dt_navigation_glyphs" group_name="dohthemeglyphs" title="Navigation Icons" description="Adds icons next to the navigation text on the navigation bar." property_type="value" value_type="boolean" depends_on="" value_group="Navigation" display_order="10" addon_id="">
<value>0</value>
</property>
<property property_name="dt_new_indicator" group_name="dohthemeforum" title="New indicator label" description="Displays a new indicator next to the node title if there is new content." property_type="value" value_type="boolean" depends_on="" value_group="Forum" display_order="110" addon_id="">
<value>1</value>
</property>
<property property_name="dt_new_indicator_css" group_name="dohthemeforum" title="New Indicator Label" description="Styles the new node indicator if enabled." property_type="css" value_type="" depends_on="" value_group="" display_order="20" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>{ "font-size": "@xf-fontSizeSmallest", "color": "@xf-textColorAccentContent", "background-color": "@xf-contentAccentBg", "padding-top": "1px", "padding-right": "7px", "padding-bottom": "2px", "padding-left": "4px", "extra": "font-style: italic;\nfont-weight: 600;\ntext-transform: uppercase;\nclip-path: polygon(calc(0% + 10px) 0%,100% 0%,calc(100% - 10px) 100%,0% 100%);" }</value>
</property>
<property property_name="dt_node_animation" group_name="dohthemeforum" title="Node animation" description="Adds animation to nodes on page load." property_type="value" value_type="boolean" depends_on="" value_group="Forum" display_order="5" addon_id="">
<value>0</value>
</property>
<property property_name="dt_node_background" group_name="dohthemeforum" title="Node Background" description="Use images for nodes instead of glyph icons." property_type="value" value_type="boolean" depends_on="" value_group="Forum" display_order="75" addon_id="DohTheme/Core">
<value>1</value>
</property>
<property property_name="dt_node_icon" group_name="dohthemeglyphs" title="Node Icon" description="Name of Fontawesome Icon." property_type="value" value_type="string" depends_on="" value_group="Node" display_order="36" addon_id="">
<value>"gamepad-alt"</value>
</property>
<property property_name="dt_node_off_icon" group_name="dohthemeglyphs" title="Node Toggle-Off" description="Unicode of the Icon." property_type="value" value_type="string" depends_on="dt_collapsible_categories" value_group="Node" display_order="35" addon_id="">
<value>"\"\\f077\""</value>
</property>
<property property_name="dt_node_on_icon" group_name="dohthemeglyphs" title="Node Toggle-On" description="Unicode of the Icon." property_type="value" value_type="string" depends_on="dt_collapsible_categories" value_group="Node" display_order="30" addon_id="">
<value>"\"\\f053\""</value>
</property>
<property property_name="dt_node_stats" group_name="dohthemeforum" title="Show node stats on hover" description="Hides the node stats and displays them only when hovering over the node." property_type="value" value_type="boolean" depends_on="" value_group="Forum" display_order="90" addon_id="">
<value>0</value>
</property>
<property property_name="dt_nodestat_simple" group_name="dohthemeforum" title="Simplified node statics" description="It only shows the number of threads inside the node." property_type="value" value_type="boolean" depends_on="" value_group="Forum" display_order="80" addon_id="">
<value>0</value>
</property>
<property property_name="dt_offcanvasmenu_linkholder_glyphs" group_name="dohthemeglyphs" title="offCanvasMenu linkHolder Icons" description="Adds icons next to the off-canvas menu header." property_type="value" value_type="boolean" depends_on="" value_group="Navigation" display_order="16" addon_id="">
<value>0</value>
</property>
<property property_name="dt_offcanvasmenu_links_glyphs" group_name="dohthemeglyphs" title="offCanvasMenu Links Icons" description="Adds icons next to the off-canvas menu links." property_type="value" value_type="boolean" depends_on="" value_group="Navigation" display_order="17" addon_id="">
<value>0</value>
</property>
<property property_name="dt_offline_indicator" group_name="threadoptions" title="Offline status indicator" description="This is an extension of the status indicator to display Online/Offline depending on the user's status." property_type="value" value_type="boolean" depends_on="" value_group="MessageElements" display_order="60" addon_id="">
<value>1</value>
</property>
<property property_name="dt_opacity_thread_lock" group_name="dohthemeds" title="Locked threads opacity" description="This will gives transparency to locked threads." property_type="value" value_type="boolean" depends_on="" value_group="General" display_order="60" addon_id="">
<value>1</value>
</property>
<property property_name="dt_pa_index" group_name="dohthemebasic" title="Remove page actions from forum index" description="Enabling this setting removes the page actions from the forum list. By default, these are New Posts and Post New Thread." property_type="value" value_type="boolean" depends_on="" value_group="ForumHome" display_order="120" addon_id="">
<value>1</value>
</property>
<property property_name="dt_page_animation" group_name="dohthemebasic" title="Page animations" description="Adds animations to main components (header, sidebars, main content, footer) on page load." property_type="value" value_type="boolean" depends_on="" value_group="Global" display_order="30" addon_id="">
<value>1</value>
</property>
<property property_name="dt_page_node_icon" group_name="dohthemeglyphs" title="Page Node Icon" description="Name of Fontawesome Icon." property_type="value" value_type="string" depends_on="" value_group="Node" display_order="37" addon_id="">
<value>"file-text"</value>
</property>
<property property_name="dt_prefooter_heading_icons" group_name="dohthemeglyphs" title="Pre-Footer widget header Icons" description="Adds icons to the pre-footer widget headings when enabled." property_type="value" value_type="boolean" depends_on="" value_group="" display_order="65" addon_id="">
<value>0</value>
</property>
<property property_name="dt_profile_tabs_glyphs" group_name="dohthemeglyphs" title="Member Profiles Tabs Icons" description="Adds icons to tabs in member profile page when enabled." property_type="value" value_type="boolean" depends_on="" value_group="" display_order="90" addon_id="">
<value>0</value>
</property>
<property property_name="dt_reactions_column" group_name="dohthemeds" title="Reactions column in meta box" description="If enabled, will add the Reactions statics In thread statics box." property_type="value" value_type="boolean" depends_on="" value_group="General" display_order="90" addon_id="">
<value>0</value>
</property>
<property property_name="dt_removecopy" group_name="dohthemebasic" title="Remove Copyright" description="If you have purchased branding free for this style, add the username to disable our copyright." property_type="value" value_type="string" depends_on="" value_group="version" display_order="400" addon_id="">
<value>""</value>
</property>
<property property_name="dt_search_node_icon" group_name="dohthemeglyphs" title="Search Node Icon" description="" property_type="value" value_type="string" depends_on="" value_group="Node" display_order="39" addon_id="">
<value>"search"</value>
</property>
<property property_name="dt_search_text" group_name="dohthemeheader" title="Remove search tab text" description="This setting allows you to remove the search tab text." property_type="value" value_type="boolean" depends_on="" value_group="Navigation" display_order="90" addon_id="">
<value>1</value>
</property>
<property property_name="dt_seperate_sticky_threads" group_name="dohthemeds" title="Separate sticky threads" description="This will add headings above sticky threads and above normal threads to clearly differentiate the two types of threads." property_type="value" value_type="boolean" depends_on="" value_group="General" display_order="10" addon_id="">
<value>0</value>
</property>
<property property_name="dt_seperate_sticky_threads_css" group_name="dohthemeds" title="Sticky Threads Separator" description="Styles the sticky threads separator if enabled." property_type="css" value_type="" depends_on="" value_group="" display_order="12" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>{ "background-color": "@xf-contentAltBg", "extra": "margin: 0;" }</value>
</property>
<property property_name="dt_sidebar_glyphs" group_name="dohthemeglyphs" title="Sidebar Heading Icons" description="Adds icons to the sidebar headings when enabled." property_type="value" value_type="boolean" depends_on="" value_group="Sidebar" display_order="26" addon_id="">
<value>0</value>
</property>
<property property_name="dt_sidebar_login" group_name="sidebaroptions" title="Sidebar login" description="Enables a login box; users can quickly login/register on the sidebar." property_type="value" value_type="boolean" depends_on="" value_group="Sidebar" display_order="50" addon_id="">
<value>1</value>
</property>
<property property_name="dt_sidebar_position" group_name="sidebaroptions" title="Sidebar Position" description="Set whether the sidebar is on the left, right, or below the main content." property_type="value" value_type="select" depends_on="" value_group="Sidebar" display_order="20" addon_id="">
<value_parameters>option1=Right option2=Left option3=Below content</value_parameters>
<value>"option1"</value>
</property>
<property property_name="dt_sidebar_styling" group_name="sidebaroptions" title="Sidebar" description="Styles the general sidebar block." property_type="css" value_type="" depends_on="" value_group="" display_order="10" css_components="text,background,border,border_radius_simple,padding,extra" addon_id="">
<value>[]</value>
</property>
<property property_name="dt_sidebar_widget_animation" group_name="sidebaroptions" title="Sidebar widget animation" description="Adds animation to sidebar widgets on page load." property_type="value" value_type="boolean" depends_on="" value_group="Sidebar" display_order="35" addon_id="">
<value>0</value>
</property>
<property property_name="dt_sticky_catstrips" group_name="dohthemeforum" title="Sticky category strips" description="Enables category strips to stick to the top of the page for the category that is currently in view." property_type="value" value_type="boolean" depends_on="" value_group="Forum" display_order="20" addon_id="">
<value>0</value>
</property>
<property property_name="dt_sticky_sidebar" group_name="sidebaroptions" title="Sticky sidebar" description="Makes the sidebar component sticky. The sticky functionality is being added purely with CSS. This means that it has no performance drawbacks. However, it is not supported in older browsers." property_type="value" value_type="boolean" depends_on="" value_group="Sidebar" display_order="25" addon_id="">
<value>1</value>
</property>
<property property_name="dt_sticky_staff_tools" group_name="dohthemeheader" title="Sticky Staff tools" description="If you intend for staff tools to stick to the top of the page when it is scrolled." property_type="value" value_type="boolean" depends_on="" value_group="Header" display_order="10" addon_id="">
<value>0</value>
</property>
<property property_name="dt_sub_navigation_glyphs" group_name="dohthemeglyphs" title="Sub-navigation row Icons" description="Adds icons next to the sub-navigation text on the sub-navigation bar." property_type="value" value_type="boolean" depends_on="" value_group="Navigation" display_order="15" addon_id="">
<value>0</value>
</property>
<property property_name="dt_text_logo" group_name="dohthemeheader" title="Logo Text" description="Set the text value to replace the logo image." property_type="value" value_type="string" depends_on="" value_group="Header" display_order="20" addon_id="">
<value>""</value>
</property>
<property property_name="dt_text_logo_css" group_name="dohthemeheader" title="Logo Text" description="Styles the Logo Text if enabled." property_type="css" value_type="" depends_on="" value_group="" display_order="110" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>{ "font-size": "@xf-fontSizeLargest" }</value>
</property>
<property property_name="dt_thread_owner" group_name="threadoptions" title="Thread owner indicator" description="Add an indicator in the user post bit for thread owner." property_type="value" value_type="select" depends_on="" value_group="MessageElements" display_order="70" addon_id="">
<value_parameters>userbanner=User banner icon=Icon none=Disabled</value_parameters>
<value>"icon"</value>
</property>
<property property_name="dt_thread_title_center" group_name="threadoptions" title="Center thread title" description="This small modification will allow you to center thread message titles." property_type="value" value_type="boolean" depends_on="" value_group="MessageLayout" display_order="10" addon_id="">
<value>0</value>
</property>
<property property_name="dt_title_index" group_name="dohthemebasic" title="Remove Title from Forum Index" description="Removes the page title from the forum index." property_type="value" value_type="boolean" depends_on="" value_group="ForumHome" display_order="110" addon_id="">
<value>1</value>
</property>
<property property_name="dt_triggers_style" group_name="dohthemeheader" title="Login triggers style" description="The method by which the login form displays once the trigger is activated." property_type="value" value_type="select" depends_on="" value_group="Navigation" display_order="30" addon_id="">
<value_parameters>option1=Overlay option2=Dropdown</value_parameters>
<value>"option1"</value>
</property>
<property property_name="dt_version" group_name="dohthemebasic" title="Re-Me version" description="This is for development only and should not ever be changed." property_type="value" value_type="string" depends_on="" value_group="version" display_order="500" addon_id="">
<value>"2.2.9.2"</value>
</property>
<property property_name="dt_visitor_menu_glyphs" group_name="dohthemeglyphs" title="Visitor Menu Icons" description="Adds icons next to the user's visitor menu links." property_type="value" value_type="boolean" depends_on="" value_group="Navigation" display_order="18" addon_id="">
<value>0</value>
</property>
<property property_name="dt_widget_header" group_name="sidebaroptions" title="Widget minor header" description="Widgets often have title bars at their tops, which are styled here" property_type="css" value_type="" depends_on="" value_group="" display_order="20" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>{ "extra": "position: relative;" }</value>
</property>
<property property_name="dt_widget_wrapper" group_name="sidebaroptions" title="Widget wrapper" description="Styles the side widget block-container" property_type="css" value_type="" depends_on="" value_group="" display_order="15" css_components="text,background,border,border_radius,padding,extra" addon_id="">
<value>[]</value>
</property>
<property property_name="editorBg" group_name="rte" title="Editor background" description="The background for the editor before it is activated" property_type="value" value_type="color" depends_on="" value_group="" display_order="1001" addon_id="XF">
<value>"@xf-contentBg"</value>
</property>
<property property_name="editorButtonActiveColor" group_name="rte" title="Editor button active color" description="Color for icons when active, such as the 'B' when the cursor is on bold text" property_type="value" value_type="color" depends_on="" value_group="buttons" display_order="2102" addon_id="XF">
<value>"@xf-paletteAccent1"</value>
</property>
<property property_name="editorFocusBg" group_name="rte" title="Editor background when focused" description="Background color for the editor when activated" property_type="value" value_type="color" depends_on="" value_group="" display_order="1003" addon_id="XF">
<value>"mix(@xf-contentBg, @xf-pageBg)"</value>
</property>
<property property_name="editorSelectionBg" group_name="rte" title="Editor selection background" description="Background color for text that has been selected in the editor" property_type="value" value_type="color" depends_on="" value_group="selectedContent" display_order="1101" addon_id="XF">
<value>"@xf-contentAltBg"</value>
</property>
<property property_name="editorSelectionColor" group_name="rte" title="Editor selection text color" description="When text is selected within the text editor, it will use this color" property_type="value" value_type="color" depends_on="" value_group="selectedContent" display_order="1102" addon_id="XF">
<value>"@xf-textColorDimmed"</value>
</property>
<property property_name="editorToolsFocusBg" group_name="rte" title="Editor toolbar background when focused" description="The background of the toolbar when the editor is focused" property_type="value" value_type="string" depends_on="" value_group="toolbar" display_order="1502" addon_id="XF">
<value>"transparent"</value>
</property>
<property property_name="fontFamilyBody" group_name="fonts" title="Body Text Font" description="This font is used for the text of messages etc." property_type="value" value_type="string" depends_on="" value_group="font" display_order="200" addon_id="XF">
<value>"'Barlow', 'Helvetica Neue', Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', sans-serif"</value>
</property>
<property property_name="fontFamilyUi" group_name="fonts" title="User Interface Font" description="The font list for your main text" property_type="value" value_type="string" depends_on="" value_group="font" display_order="100" addon_id="XF">
<value>"'Barlow', 'Helvetica Neue', Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', sans-serif"</value>
</property>
<property property_name="formLabel" group_name="form" title="Form label column" description="In full-width forms, the left column contains labels for the controls in the right column" property_type="css" value_type="" depends_on="" value_group="" display_order="20100" css_components="text,background,border_color_simple,extra" addon_id="XF">
<value>{ "background-color": "@xf-contentAltBg", "border-color": "@xf-borderColor", "extra": "text-align: right;" }</value>
</property>
<property property_name="formSectionHeader" group_name="form" title="Form section header" description="Occasionally, forms are long enough to warrant being divided into sections, with each section headed by an element using these style rules" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,background,border,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeLarge", "color": "@xf-minorHeadingTextColor", "border-top-width": "@xf-borderSize", "border-top-color": "@xf-borderColor", "border-bottom-width": "@xf-borderSize", "border-bottom-color": "@xf-borderColor", "extra": "padding: @xf-paddingLarge;" }</value>
</property>
<property property_name="formSubmitRow" group_name="form" title="Form submit row" description="At the bottom of most forms is a bar containing the submit button etc." property_type="css" value_type="" depends_on="" value_group="" display_order="20400" css_components="background,border,extra" addon_id="XF">
<value>{ "background-color": "@xf-contentBg", "border-top-width": "@xf-borderSize", "border-top-color": "@xf-borderColorHeavy" }</value>
</property>
<property property_name="globalActionColor" group_name="misc" title="Global action indicator color" description="This is the base color of the gadgets that display when an action is being processed in the background." property_type="value" value_type="color" depends_on="" value_group="" display_order="400" addon_id="XF">
<value>"@xf-paletteAccent1"</value>
</property>
<property property_name="inlineModBar" group_name="inlineMod" title="Inline moderation bar" description="A bar containing controls appears when content is selected for inline moderation. Its appearance is controlled here" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,background,border,padding,extra" addon_id="XF">
<value>{ "color": "@xf-textColorEmphasized", "background-color": "mix(@xf-contentBg, @xf-pageBg)", "padding-top": "@xf-paddingSmall", "padding-bottom": "@xf-paddingSmall" }</value>
</property>
<property property_name="inlineModHighlightColor" group_name="color" title="Inline moderation highlight color" description="When content is selected for inline moderation, its background color will be replaced with this" property_type="value" value_type="color" depends_on="" value_group="contentBackground" display_order="2500" addon_id="XF">
<value>"@xf-textColor"</value>
</property>
<property property_name="input" group_name="input" title="Form input" description="Controls the style of most text-input boxes" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,background,border,border_radius,padding,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeNormal", "color": "@xf-inputTextColor", "background-color": "@xf-inputBgColor", "border-width": "@xf-borderSize", "border-color": "@xf-borderColor", "border-radius": "@xf-blockBorderRadius", "padding": "@xf-paddingMedium" }</value>
</property>
<property property_name="inputBgColor" group_name="color" title="Text input box background color" description="" property_type="value" value_type="color" depends_on="" value_group="input" display_order="8500" addon_id="XF">
<value>"rgba(255,255,255,.07)"</value>
</property>
<property property_name="inputDisabled" group_name="input" title="Form input - disabled" description="When text boxes are disabled, these rules are applied" property_type="css" value_type="" depends_on="" value_group="" display_order="20200" css_components="text,background,border,extra" addon_id="XF">
<value>{ "color": "@xf-textColorMuted", "background-color": "xf-intensify(@xf-paletteNeutral1, 6%)", "border-color": "xf-intensify(@xf-paletteNeutral1, 6%)" }</value>
</property>
<property property_name="inputFocus" group_name="input" title="Form input - focused" description="These rules are applied to text boxes when they are selected for input" property_type="css" value_type="" depends_on="" value_group="" display_order="20100" css_components="text,background,border,extra" addon_id="XF">
<value>{ "background-color": "rgb(43, 47, 64)", "extra": "border-color: @xf-paletteColor1;" }</value>
</property>
<property property_name="inputFocusBgColor" group_name="color" title="Focused text box background color" description="" property_type="value" value_type="color" depends_on="" value_group="input" display_order="8600" addon_id="XF">
<value>"rgba(255,255,255,.07)"</value>
</property>
<property property_name="linkColor" group_name="color" title="Link color" description="Basic hyperlinks on standard background colors will use this style" property_type="value" value_type="color" depends_on="" value_group="links" display_order="1000" addon_id="XF">
<value>"rgb(255, 255, 255)"</value>
</property>
<property property_name="linkHover" group_name="page" title="Links - hovered" description="When basic links are hovered, they use this set of rules for their styling" property_type="css" value_type="" depends_on="" value_group="" display_order="20100" css_components="text,extra" addon_id="XF">
<value>{ "color": "@xf-linkHoverColor", "font-style": "italic" }</value>
</property>
<property property_name="linkHoverColor" group_name="color" title="Link hover color" description="Basic hyperlinks will turn this color when hovered" property_type="value" value_type="color" depends_on="" value_group="links" display_order="1100" addon_id="XF">
<value>"@xf-paletteColor1"</value>
</property>
<property property_name="majorHeadingBg" group_name="color" title="Major heading background color" description="" property_type="value" value_type="color" depends_on="" value_group="heading" display_order="6100" addon_id="XF">
<value>"#1b1b1b"</value>
</property>
<property property_name="memberHeader" group_name="member" title="Member profile header" description="The member profile page's content header is styled with these settings" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,background,border,extra" addon_id="XF">
<value>{ "background-color": "@xf-contentAltBg", "border-bottom-width": "@xf-borderSize", "border-bottom-color": "@xf-borderColorLight" }</value>
</property>
<property property_name="memberHeaderName" group_name="member" title="Member profile header - name" description="The styling of the name of the member whose page is being viewed is controlled here" property_type="css" value_type="" depends_on="" value_group="" display_order="20100" css_components="text,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeLargest", "color": "@xf-linkColor", "extra": "font-weight: 500;" }</value>
</property>
<property property_name="memberTooltipHeader" group_name="member" title="Member tooltip header" description="The member tooltip, which appears when hovering over user names, is styled with these controls" property_type="css" value_type="" depends_on="" value_group="" display_order="20300" css_components="text,background,border,extra" addon_id="XF">
<value>{ "background-color": "@xf-contentAltBg", "border-bottom-width": "@xf-borderSize", "border-bottom-color": "@xf-borderColorLight", "extra": "padding: @xf-paddingLarge;" }</value>
</property>
<property property_name="memberTooltipName" group_name="member" title="Member tooltip header - name" description="Styling for the name of the user whose tooltip is being displayed" property_type="css" value_type="" depends_on="" value_group="" display_order="20400" css_components="text,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeLargest", "color": "@xf-linkColor", "extra": "font-weight: 500;" }</value>
</property>
<property property_name="menu" group_name="menu" title="Menu" description="Controls the main block of all popup menus" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,background,border_width_simple,border_color_simple,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-textColor", "background-color": "fade(@xf-publicNav--background-color, 97%)", "extra": "padding: @xf-paddingLarge;" }</value>
</property>
<property property_name="menuBorderRadius" group_name="menu" title="Menu border radius" description="Controls the size of the border radius for all menus" property_type="value" value_type="unit" depends_on="" value_group="" display_order="200" addon_id="XF">
<value>"@xf-blockBorderRadius"</value>
</property>
<property property_name="menuFeatureBorderColor" group_name="menu" title="Menu feature border color" description="Popup menus have a thick feature border on their upper edge, the styling of which is controlled here" property_type="value" value_type="color" depends_on="" value_group="" display_order="100" addon_id="XF">
<value>"@xf-paletteColor1"</value>
</property>
<property property_name="menuFooter" group_name="menu" title="Menu footer" description="When a popup menu has a bottom, footer element, it will use these settings" property_type="css" value_type="" depends_on="" value_group="" display_order="20600" css_components="text,background,border,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeSmaller", "color": "@xf-textColorDimmed", "background-color": "@xf-contentAltBg", "extra": "border-radius: @xf-menuBorderRadius;" }</value>
</property>
<property property_name="menuHeader" group_name="menu" title="Menu header" description="Most menus identify themselves with a header just underneath their top border" property_type="css" value_type="" depends_on="" value_group="" display_order="20100" css_components="text,background,border,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeLarge", "color": "@xf-linkColor", "border-bottom-width": "2px", "border-bottom-color": "@xf-borderColor", "extra": "text-transform: uppercase;\nmargin-bottom: @xf-paddingSmall;" }</value>
</property>
<property property_name="menuLinkRow" group_name="menu" title="Menu link row" description="Styling for link rows within popup menus" property_type="css" value_type="" depends_on="" value_group="" display_order="20400" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-linkColor", "font-weight": "@xf-fontWeightHeavy", "text-decoration": "none", "extra": "text-transform: uppercase;" }</value>
</property>
<property property_name="menuLinkRowSelected" group_name="menu" title="Menu link row - selected" description="Styling for link rows in menus, when selected or hovered" property_type="css" value_type="" depends_on="" value_group="" display_order="20500" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-paletteAccent1", "text-decoration": "none" }</value>
</property>
<property property_name="menuTabHeader" group_name="menu" title="Menu tab header" description="Multi-part, tabbed menu headers use these settings" property_type="css" value_type="" depends_on="" value_group="" display_order="20200" css_components="text,background,border,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-textColor", "border-bottom-width": "@xf-borderSize", "border-bottom-color": "@xf-borderColor", "extra": "letter-spacing: 3px;\ntext-transform: uppercase;\nmargin: 0 -@xf-paddingLarge @xf-paddingMedium;" }</value>
</property>
<property property_name="menuTabHeaderSelected" group_name="menu" title="Menu tab header - selected tab" description="Controls the selected tab in multi-part menu headers" property_type="css" value_type="" depends_on="" value_group="" display_order="20300" css_components="text,background,border_color_simple,extra" addon_id="XF">
<value>{ "color": "@xf-contentHighlightBg", "border-color": "@xf-borderColorHighlight" }</value>
</property>
<property property_name="messageNewIndicator" group_name="message" title="New message indicator" description="Usually a small token attached to the message block, the indicator that a message is new/unread is controlled here" property_type="css" value_type="" depends_on="" value_group="" display_order="20100" css_components="text,background,border,border_radius,padding,extra" addon_id="XF">
<value>{ "font-size": "80%", "color": "@xf-textColorAccentContent", "font-weight": "@xf-fontWeightHeavy", "background-color": "@xf-contentAccentBg", "padding-top": "1px", "padding-right": "6px", "padding-bottom": "1px", "padding-left": "5px", "extra": "font-style: italic;\nfont-weight: 600;\ntext-transform: uppercase;\nclip-path: polygon(calc(0% + 10px) 0%,100% 0%,calc(100% - 10px) 100%,0% 100%);" }</value>
</property>
<property property_name="messageUserBlock" group_name="message" title="Message user info block" description="Apart from its width, the (left) message user info column is styled here" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,background,border_width_simple,border_color_simple,extra" addon_id="XF">
<value>{ "border-width": "@xf-borderSize", "border-color": "@xf-contentBg" }</value>
</property>
<property property_name="messageUserBlockWidth" group_name="message" title="Message user info block width" description="Controls the width of the (left) user info column on the full size message block" property_type="value" value_type="unit" depends_on="" value_group="user" display_order="500" addon_id="XF">
<value>"150px"</value>
</property>
<property property_name="messageUserElements" group_name="message" title="Message user info elements" description="The elements selected here will be displayed in the message user info block. It will not be displayed below the single column width." property_type="value" value_type="template" depends_on="" value_group="user" display_order="600" addon_id="XF">
<value_parameters>template=style_property_template_messageUserElements type=array</value_parameters>
<value>{ "register_date": "1", "message_count": "1" }</value>
</property>
<property property_name="metaThemeColor" group_name="misc" title="Meta theme color" description="This sets the theme color used for PWA installations, as well as the address bar color on Chrome for Android." property_type="value" value_type="color" depends_on="" value_group="" display_order="900" addon_id="XF">
<value>"@xf-paletteColor1"</value>
</property>
<property property_name="minorHeadingTextColor" group_name="color" title="Minor heading text color" description="" property_type="value" value_type="color" depends_on="" value_group="heading" display_order="6400" addon_id="XF">
<value>"@xf-textColorEmphasized"</value>
</property>
<property property_name="nodeIconReadColor" group_name="nodeList" title="Read node icon color" description="When the content within a node has been read, its icon will revert to a less attention-grabbing color, defined here" property_type="value" value_type="color" depends_on="" value_group="" display_order="200" addon_id="XF">
<value>""</value>
</property>
<property property_name="nodeIconUnreadColor" group_name="nodeList" title="Unread node icon color" description="Node icons give an at-a-glance indication of whether or not the content housed within the node has been read. The unread icon color should stand out from its background for quick identification" property_type="value" value_type="color" depends_on="" value_group="" display_order="100" addon_id="XF">
<value>""</value>
</property>
<property property_name="nodeListDescriptionDisplay" group_name="nodeList" title="Description display style" description="To save vertical space, it is possible to hide node descriptions until the node title is hovered, at which point they are displayed in a tooltip" property_type="value" value_type="radio" depends_on="" value_group="" display_order="400" addon_id="XF">
<value_parameters>tooltip={{ phrase('tooltip') }} inline={{ phrase('inline') }} none={{ phrase('none') }}</value_parameters>
<value>"inline"</value>
</property>
<property property_name="overlayHeader" group_name="overlay" title="Overlay header" description="Overlays use a header element to identify their contents, styled here" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,background,border,padding,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeLarger", "color": "@xf-textColorEmphasized", "font-weight": "@xf-fontWeightHeavy", "background-color": "@xf-paletteAccent1", "padding-top": "@xf-paddingLarge", "padding-right": "@xf-paddingLargest", "padding-bottom": "@xf-paddingLarge", "padding-left": "@xf-paddingLargest", "extra": "text-transform: uppercase;" }</value>
</property>
<property property_name="pageBackground" group_name="page" title="Page background" description="The page background, behind all block elements, uses the styling rules defined here" property_type="css" value_type="" depends_on="" value_group="" display_order="20200" css_components="background,extra" addon_id="XF">
<value>{ "background-color": "@xf-pageBg" }</value>
</property>
<property property_name="pageBg" group_name="color" title="Page background color" description="The background of the page itself, on which all other content rests" property_type="value" value_type="color" depends_on="" value_group="contentBackground" display_order="2100" addon_id="XF">
<value>"rgb(16, 16, 16)"</value>
</property>
<property property_name="paletteAccent1" group_name="palette" title="Accent 1" description="" property_type="value" value_type="color" depends_on="" value_group="accent" display_order="2000" addon_id="XF">
<value_parameters>hidePalette=true</value_parameters>
<value>"#ff8e00"</value>
</property>
<property property_name="paletteColor1" group_name="palette" title="Color 1" description="" property_type="value" value_type="color" depends_on="" value_group="primary" display_order="1000" addon_id="XF">
<value_parameters>hidePalette=true</value_parameters>
<value>"#ffb82b"</value>
</property>
<property property_name="paletteColor4" group_name="palette" title="Color 4" description="" property_type="value" value_type="color" depends_on="" value_group="primary" display_order="1300" addon_id="XF">
<value_parameters>hidePalette=true</value_parameters>
<value>"rgba(255, 255, 255, .045)"</value>
</property>
<property property_name="paletteColor5" group_name="palette" title="Color 5" description="" property_type="value" value_type="color" depends_on="" value_group="primary" display_order="1400" addon_id="XF">
<value_parameters>hidePalette=true</value_parameters>
<value>"rgba(242, 244, 255, 0.04)"</value>
</property>
<property property_name="paletteNeutral1" group_name="palette" title="Neutral 1" description="" property_type="value" value_type="color" depends_on="" value_group="neutral" display_order="3000" addon_id="XF">
<value_parameters>hidePalette=true</value_parameters>
<value>"#272525"</value>
</property>
<property property_name="paletteNeutral2" group_name="palette" title="Neutral 2" description="" property_type="value" value_type="color" depends_on="" value_group="neutral" display_order="3100" addon_id="XF">
<value_parameters>hidePalette=true</value_parameters>
<value>"rgb(191, 192, 196)"</value>
</property>
<property property_name="paletteNeutral3" group_name="palette" title="Neutral 3" description="" property_type="value" value_type="color" depends_on="" value_group="neutral" display_order="3200" addon_id="XF">
<value_parameters>hidePalette=true</value_parameters>
<value>"rgb(207, 211, 218)"</value>
</property>
<property property_name="progressBarColor" group_name="misc" title="Progress bar color" description="The progress bar appears at the top of the window when the system is waiting for a response from the server" property_type="value" value_type="color" depends_on="" value_group="" display_order="300" addon_id="XF">
<value>"@xf-paletteAccent1"</value>
</property>
<property property_name="publicFaviconUrl" group_name="basic" title="Favicon URL (32x32)" description="Path to the small logo that is associated with bookmarks pointing to your site. This is expected to be a 32x32 PNG image." property_type="value" value_type="string" depends_on="" value_group="logo" display_order="400" addon_id="XF">
<value_parameters>asset=logo</value_parameters>
<value>"https://i.postimg.cc/2ykZP7cF/crmp_logo.png"</value>
</property>
<property property_name="publicFooter" group_name="footer" title="Footer" description="The footer is the primary element that sits below the main content on all public pages" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,background,border,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-textColorMuted", "background-color": "rgb(28, 26, 35)" }</value>
</property>
<property property_name="publicHeader" group_name="headerNav" title="Header/logo row" description="The header row contains your logo and sits at the top of every public page" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-chromeTextColor", "background-color": "#1b1b1b" }</value>
</property>
<property property_name="publicHeaderAdjustColor" group_name="headerNav" title="Header adjustment color" description="The color of the header background is adjusted to be used as the background for the inbox and alerts area in the header" property_type="value" value_type="color" depends_on="" value_group="header" display_order="100" addon_id="XF">
<value>"#1b1b1b"</value>
</property>
<property property_name="publicIconUrl" group_name="basic" title="Icon URL (192x192)" description="The path to your icon image. This should be a 192x192 image and usually a PNG." property_type="value" value_type="string" depends_on="" value_group="logo" display_order="210" addon_id="XF">
<value_parameters>asset=logo</value_parameters>
<value>"https://i.postimg.cc/2ykZP7cF/crmp_logo.png"</value>
</property>
<property property_name="publicIconUrlLarge" group_name="basic" title="Icon URL (512x512)" description="The path to your large icon image. This should be a 512x512 image and usually a PNG." property_type="value" value_type="string" depends_on="" value_group="logo" display_order="220" addon_id="XF">
<value_parameters>asset=logo</value_parameters>
<value>"https://i.postimg.cc/2ykZP7cF/crmp_logo.png"</value>
</property>
<property property_name="publicIconsMaskable" group_name="basic" title="Icons are maskable" description="If enabled, you are indicating that the icons above respect the <a href="https://web.dev/maskable-icon/" target="_blank">minimum safe zone</a> and can be cropped to the appropriate icon size for various devices." property_type="value" value_type="boolean" depends_on="" value_group="logo" display_order="230" addon_id="XF">
<value>1</value>
</property>
<property property_name="publicLogoUrl" group_name="basic" title="Logo URL" description="The web path from your site's XenForo installation directory to your logo image. If you specify an SVG image here, you should set <b>Emails &gt; Email logo URL</b> to point to a PNG image, or similar, for increased compatibility." property_type="value" value_type="string" depends_on="" value_group="logo" display_order="101" addon_id="XF">
<value_parameters>asset=logo</value_parameters>
<value>"data/assets/logo/1000028432.png"</value>
</property>
<property property_name="publicLogoUrl2x" group_name="basic" title="2x logo URL" description="The path to a double-resolution / retina version of your logo image" property_type="value" value_type="string" depends_on="" value_group="logo" display_order="200" addon_id="XF">
<value_parameters>asset=logo</value_parameters>
<value>"data/assets/logo/1000028432.png"</value>
</property>
<property property_name="publicLogoWidth" group_name="basic" title="Public logo width" description="If you specify the width of your logo here, you can avoid a costly re-flow of your page layout once the logo loads." property_type="value" value_type="number" depends_on="" value_group="logo" display_order="115" addon_id="XF">
<value>"100"</value>
</property>
<property property_name="publicMetadataLogoUrl" group_name="basic" title="Metadata logo URL" description="Path to the metadata / OpenGraph logo used by your site on social media" property_type="value" value_type="string" depends_on="" value_group="logo" display_order="300" addon_id="XF">
<value_parameters>asset=logo</value_parameters>
<value>"https://i.postimg.cc/2ykZP7cF/crmp_logo.png"</value>
</property>
<property property_name="publicNav" group_name="headerNav" title="Navigation row" description="The navigation row sits below the header and contains the primary site navigation tabs and menus" property_type="css" value_type="" depends_on="" value_group="" display_order="20100" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-chromeTextColor", "background-color": "#1b1b1b", "extra": "border-bottom: @xf-borderSize solid #292734;" }</value>
</property>
<property property_name="publicNavCollapseWidth" group_name="headerNav" title="Navigation collapse width" description="Below this page width, the navigation system will collapse down into an off canvas menu" property_type="value" value_type="unit" depends_on="" value_group="navigation" display_order="1300" addon_id="XF">
<value>"768px"</value>
</property>
<property property_name="publicNavPaddingV" group_name="headerNav" title="Navigation padding vertical" description="This value defines the amount of padding applied to the main navigational tabs in the header" property_type="value" value_type="unit" depends_on="" value_group="navPad" display_order="4000" addon_id="XF">
<value>"32px"</value>
</property>
<property property_name="publicNavSelected" group_name="headerNav" title="Navigation row - selected tab" description="Additional styling to apply to navigation tabs when they are selected" property_type="css" value_type="" depends_on="" value_group="" display_order="20300" css_components="text,background,border,border_radius,extra" addon_id="XF">
<value>{ "color": "@xf-paletteAccent1" }</value>
</property>
<property property_name="publicNavSticky" group_name="headerNav" title="Sticky navigation element" description="If you intend for some or all of your header to stick to the top of the page when it is scrolled, choose which elements should stick" property_type="value" value_type="radio" depends_on="" value_group="navigation" display_order="1200" addon_id="XF">
<value_parameters>primary={{ phrase('primary_navigation_row_only') }} all={{ phrase('primary_and_sub_navigation_rows') }} none={{ phrase('none') }}</value_parameters>
<value>"primary"</value>
</property>
<property property_name="publicNavTab" group_name="headerNav" title="Navigation row - tab" description="Controls the styling of individual tab elements within the navigation row" property_type="css" value_type="" depends_on="" value_group="" display_order="20200" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-chromeTextColor", "font-weight": "@xf-fontWeightHeavy", "text-decoration": "none", "extra": "text-transform: uppercase;" }</value>
</property>
<property property_name="publicNavTabHover" group_name="headerNav" title="Navigation row - hovered tab" description="Additional styling to apply to navigation tabs when the pointer hovers over them" property_type="css" value_type="" depends_on="" value_group="" display_order="20400" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-paletteAccent1", "text-decoration": "none" }</value>
</property>
<property property_name="publicNavTabMenuOpen" group_name="headerNav" title="Navigation row - menu open" description="Styling applied when the popup menu for the current tab is visible" property_type="css" value_type="" depends_on="" value_group="" display_order="20450" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-paletteAccent1", "text-decoration": "none" }</value>
</property>
<property property_name="publicPushBadgeUrl" group_name="basic" title="Push notification badge URL" description="If you provide the URL to a single color/alpha channel logo/icon here, this will be used in place of the browser's default icon." property_type="value" value_type="string" depends_on="" value_group="logo" display_order="500" addon_id="XF">
<value_parameters>asset=logo</value_parameters>
<value>"https://i.postimg.cc/2ykZP7cF/crmp_logo.png"</value>
</property>
<property property_name="publicStaffBar" group_name="headerNav" title="Staff tools bar" description="Visible only to staff, the staff tools bar sits above the header and contains items such as reported content, the moderation queue..." property_type="css" value_type="" depends_on="" value_group="" display_order="20700" css_components="text,background,border,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-chromeTextColor", "background-color": "#1b1b1b", "border-bottom-width": "@xf-borderSize", "border-bottom-color": "@xf-borderColor" }</value>
</property>
<property property_name="publicSubNav" group_name="headerNav" title="Sub-navigation row" description="Below the main navigation row, this row shows content associated with the selected main navigation tab" property_type="css" value_type="" depends_on="" value_group="" display_order="20500" css_components="text,background,border,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-subNavTextColor", "background-color": "@xf-subNavBg", "extra": "font-weight: 500;\ntext-align: center;" }</value>
</property>
<property property_name="publicSubNavElHover" group_name="headerNav" title="Sub-navigation row - hovered element" description="Additional styling applied to sub-navigation tabs when the pointer hovers over them" property_type="css" value_type="" depends_on="" value_group="" display_order="20600" css_components="text,extra" addon_id="XF">
<value>{ "color": "@xf-paletteAccent1" }</value>
</property>
<property property_name="publicSubNavElMenuOpen" group_name="headerNav" title="Sub-navigation row - menu-open element" description="Styles sub-navigation elements whose popup menu is currently open" property_type="css" value_type="" depends_on="" value_group="" display_order="20650" css_components="text,background,extra" addon_id="XF">
<value>{ "color": "@xf-paletteAccent1", "text-decoration": "none" }</value>
</property>
<property property_name="publicSubNavPaddingV" group_name="headerNav" title="Sub-navigation padding vertical" description="Defines the amount of vertical padding applied to each item in the sub-navigation bar in the header" property_type="value" value_type="unit" depends_on="" value_group="subNavPad" display_order="5000" addon_id="XF">
<value>"6px"</value>
</property>
<property property_name="scrollJumpButtons" group_name="page" title="Display page jump buttons on scroll" description="If enabled, floating buttons will be displayed shortly after the page is scrolled which allow you to jump to the top or bottom of the page. If this is only triggered when scrolling up, only a jump to top button will be displayed." property_type="value" value_type="radio" depends_on="" value_group="" display_order="3000" addon_id="XF">
<value_parameters>={{ phrase('scroll_buttons_do_not_display') }} up={{ phrase('scroll_buttons_when_scrolling_up') }} both={{ phrase('scroll_buttons_when_scrolling_up_or_down') }}</value_parameters>
<value>"up"</value>
</property>
<property property_name="sidebarSpacer" group_name="page" title="Sidebar and side navigation spacer" description="Distance between the main content and the sidebar" property_type="value" value_type="unit" depends_on="" value_group="sidebar" display_order="1000" addon_id="XF">
<value>"20px"</value>
</property>
<property property_name="sidebarWidth" group_name="page" title="Sidebar and side navigation width" description="Width of any elements that make up the sidebar" property_type="value" value_type="unit" depends_on="" value_group="sidebar" display_order="1100" addon_id="XF">
<value>"286px"</value>
</property>
<property property_name="standaloneTab" group_name="tab" title="Standalone tabs" description="Tabs that are not part of block headers are styled here" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,background,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeSmall", "color": "@xf-linkColor", "background-color": "@xf-pageBg", "extra": "text-transform: uppercase;\nletter-spacing: 3px;\nborder: none;\nborder-bottom: @xf-borderSize solid @xf-borderColor;" }</value>
</property>
<property property_name="standaloneTabSelected" group_name="tab" title="Standalone tabs - selected tab" description="The selected tab in groups that are not part of block headers" property_type="css" value_type="" depends_on="" value_group="" display_order="20100" css_components="text,background,border_color_simple,extra" addon_id="XF">
<value>{ "color": "@xf-contentHighlightBg", "border-color": "@xf-borderColorHighlight" }</value>
</property>
<property property_name="starEmptyColor" group_name="misc" title="Empty rating star color" description="This is the color of the empty portion of each rating star." property_type="value" value_type="color" depends_on="" value_group="" display_order="700" addon_id="XF">
<value>"@xf-borderColorHeavy"</value>
</property>
<property property_name="starFullColor" group_name="misc" title="Full rating star color" description="This is the color of the full portion of each rating star." property_type="value" value_type="color" depends_on="" value_group="" display_order="800" addon_id="XF">
<value>"rgb(249, 196, 121)"</value>
</property>
<property property_name="styleType" group_name="palette" title="Style type" description="This defines the general type of style in use based on whether the content is placed on a light or dark background. This may change how colors are selected in certain scenarios." property_type="value" value_type="radio" depends_on="" value_group="setup" display_order="100" addon_id="XF">
<value_parameters>light={{ phrase('light') }} dark={{ phrase('dark') }}</value_parameters>
<value>"dark"</value>
</property>
<property property_name="textColorAccentContent" group_name="color" title="Accented content text color" description="" property_type="value" value_type="color" depends_on="" value_group="textOther" display_order="3200" addon_id="XF">
<value>"rgb(254, 254, 254)"</value>
</property>
<property property_name="textColorAttention" group_name="color" title="Attention-grabbing text color" description="" property_type="value" value_type="color" depends_on="" value_group="textOther" display_order="3300" addon_id="XF">
<value>"@xf-contentAccentBg"</value>
</property>
<property property_name="textColorEmphasized" group_name="color" title="Emphasized text color" description="" property_type="value" value_type="color" depends_on="" value_group="textOther" display_order="3100" addon_id="XF">
<value>"rgb(254, 254, 254)"</value>
</property>
<property property_name="textColorFeature" group_name="color" title="Feature text color" description="" property_type="value" value_type="color" depends_on="" value_group="textOther" display_order="3000" addon_id="XF">
<value>"@xf-paletteColor1"</value>
</property>
<property property_name="th_avatarStyling_winter_holidays" group_name="th_winter_holidays" title="Avatar styling" description="" property_type="css" value_type="" depends_on="" value_group="" display_order="1" css_components="background,extra" addon_id="ThemeHouse/Holidays">
<value>{ "background-image": "styles/themehouse/holidays/winter/snow-03.png", "extra": "position: absolute;\ntop: -5px;\nbackground-size: contain;\nleft: 0;\nright: 0;\nbottom: 0;\n\n\nbackground-repeat: no-repeat;" }</value>
</property>
<property property_name="tooltip" group_name="tooltip" title="Tooltip" description="Certain elements have special floating tooltips, which are controlled here" property_type="css" value_type="" depends_on="" value_group="" display_order="20000" css_components="text,background,border_radius,padding,extra" addon_id="XF">
<value>{ "font-size": "@xf-fontSizeSmaller", "color": "@xf-textColorEmphasized", "background-color": "fade(@xf-publicNav--background-color, 97%)", "border-radius": "25px", "padding-top": "@xf-paddingLarge", "padding-right": "@xf-paddingLargest", "padding-bottom": "@xf-paddingLarge", "padding-left": "@xf-paddingLargest" }</value>