new design

This commit is contained in:
Radek Davidek 2026-03-25 14:35:30 +01:00
parent 2208f8cd67
commit 898f9988c9
12 changed files with 509 additions and 65 deletions

View File

@ -165,7 +165,7 @@ public final class Pages {
? "<tr><td class='alt2' style='padding:0'>"
+ "<table cellpadding='0' cellspacing='6' border='0' width='100%'><tbody><tr>"
+ "<td valign='middle' nowrap='nowrap'><img src='/process/showimage?userIcon=yes&uid=" + message.getAuthorId() + "' width='80'/></td>"
+ "<td valign='middle' nowrap='nowrap'><div style='color: blue; font-weight:bold'><a href='#'>" + escapeHtml(message.getAuthor()) + "</a></div></td>"
+ "<td valign='middle' nowrap='nowrap'><div class='fc-accent-text'><a href='#'>" + escapeHtml(message.getAuthor()) + "</a></div></td>"
+ "<td width='100%'>&nbsp;</td>"
+ "<td valign='top' nowrap='nowrap'><div class='smallfont'>"
+ "<div>Join Date: " + escapeHtml(message.getAuthorJoinDate()) + "</div>"
@ -556,7 +556,7 @@ public final class Pages {
.append("<tr><td class='alt2' style='padding:0'>")
.append("<table cellpadding='0' cellspacing='6' border='0' width='100%'><tbody><tr>")
.append("<td valign='middle' nowrap='nowrap'><img src='/process/showimage?userIcon=yes&uid=").append(result.getCreatedBy()).append("' width='80'/></td>")
.append("<td valign='middle' nowrap='nowrap'><div style='color: blue; font-weight:bold'><a href='#'>")
.append("<td valign='middle' nowrap='nowrap'><div class='fc-accent-text'><a href='#'>")
.append(escapeHtml(result.getUsername())).append("</a></div></td>")
.append("<td width='100%'>&nbsp;</td>")
.append("<td valign='top' nowrap='nowrap'><div class='smallfont'>")
@ -663,7 +663,7 @@ public final class Pages {
+ "<link rel='stylesheet' type='text/css' href='/css/all.css'/>"
+ "<title>kAmMa's Forum MySQL Client</title>"
+ "</head><body>"
+ "<div class='page' style='width:100%; text-align:left'><div style='padding:0 25px 0 25px'>"
+ "<div class='page fc-page'><div class='fc-shell'>"
+ "<br/>"
+ renderCommonHeader(username, "MySQL Client", true, pmStats)
+ "<br/>"
@ -710,51 +710,113 @@ public final class Pages {
String sectionPart = sectionHtml.isBlank()
? ""
: ("New thread".equalsIgnoreCase(sectionHtml) && authenticated
? " - <a href='/newthread'>" + sectionHtml + "</a>"
: " - " + sectionHtml);
? "<span class='fc-header-sep'>/</span><a class='fc-header-section-link' href='/newthread'>" + sectionHtml + "</a>"
: "<span class='fc-header-sep'>/</span><span class='fc-header-section-label'>" + sectionHtml + "</span>");
int unread = pmStats == null ? 0 : Math.max(0, pmStats.getUnread());
int total = pmStats == null ? 0 : Math.max(0, pmStats.getTotal());
boolean mysqlAdmin = authenticated && "kamma".equalsIgnoreCase(valueOrDefault(username, ""));
boolean onForum = sectionHtml.isBlank() || "New thread".equalsIgnoreCase(sectionHtml);
boolean onChat = "Chat".equalsIgnoreCase(sectionHtml);
boolean onPrivate = "Private messages".equalsIgnoreCase(sectionHtml);
String newPmBanner = unread > 0
? "<span id='newPM'><strong><a href='/private'><img src='/images/pm.gif'/> You have unread Private Message</a></strong></span>"
: "<span id='newPM'>&nbsp;</span>";
String mysqlLink = mysqlAdmin ? " | <a href='/mysqlc'>MySQL Client</a>" : "";
String rightBlock = authenticated
? "<td class='alt2' nowrap='nowrap' style='vertical-align:top; padding:6px'>"
+ "<img src='/process/showimage?userIcon=yes' width='80' alt='User image'/>"
+ "</td>"
+ "<td class='alt2' nowrap='nowrap' style='vertical-align:top; padding:6px'>"
+ "<div style='color: green; font-weight: bold; text-align: left' id='currenttime'></div><br/>"
+ "<div class='smallfont'><strong>Welcome, <a href='/member' style='padding-left:0; padding-right:0'>" + welcomeName + "</a>.</strong><br/>"
+ "You last visited: <span class='time' id='lastvisited'>N/A</span></div>"
? "<a id='newPM' class='fc-pm-pill fc-pm-pill-alert' href='/private'><img src='/images/pm.gif' alt='PM'/>"
+ "<span>You have <strong>" + unread + "</strong> unread private message(s)</span></a>"
: "<span id='newPM' class='fc-pm-pill'>No unread private messages</span>";
String navLinks = authenticated
? navItem("/forum", "Forum", onForum)
+ navItem("/chat", "Chat", onChat)
+ navItem("/private", "Private", onPrivate)
+ (mysqlAdmin ? navItem("/mysqlc", "MySQL Client", false) : "")
+ "<a class='fc-nav-link fc-nav-link-logout' href='/process/logout' "
+ "onclick=\"event.preventDefault(); document.getElementById('logout-form').submit();\">Logout</a>"
: navItem("/login", "Login", false);
String accountBlock = authenticated
? "<div class='fc-account'>"
+ "<img class='fc-avatar' src='/process/showimage?userIcon=yes' width='80' alt='User image'/>"
+ "<div class='fc-account-meta'>"
+ "<div class='fc-clock-wrap'><span class='fc-clock' id='currenttime'></span></div>"
+ "<div class='smallfont'><strong>Welcome, <a href='/member'>" + welcomeName + "</a>.</strong></div>"
+ "<div class='smallfont'>Last visited: <span class='time' id='lastvisited'>N/A</span></div>"
+ "<div class='smallfont'><a href='/private'>Private Messages</a>: Unread " + unread + ", Total " + total + ".</div>"
+ "<div class='smallfont'><strong><a href='/forum'>Forum</a> | <a href='/chat'>Chat</a> | "
+ "<a href='/process/logout' onclick=\"event.preventDefault(); document.getElementById('logout-form').submit();\">Logout</a>"
+ mysqlLink + "</strong></div>"
+ "<form id='logout-form' method='post' action='/process/logout' style='display:none'></form>"
+ "</td>"
: "<td class='alt2' nowrap='nowrap' style='vertical-align:top; padding:6px'>"
+ "<div style='color: green; font-weight: bold; text-align: left' id='currenttime'></div><br/>"
+ "</div></div>"
: "<div class='fc-account fc-account-guest'>"
+ "<div class='fc-account-meta'>"
+ "<div class='fc-clock-wrap'><span class='fc-clock' id='currenttime'></span></div>"
+ "<div class='smallfont'><strong>Welcome, " + welcomeName + ".</strong></div>"
+ "<div class='smallfont'><strong><a href='/login'>Login</a></strong></div>"
+ "</td>";
return "<table class='tborder' cellpadding='6' cellspacing='1' border='0' width='100%' align='center'>"
+ "</div></div>";
return "<style type='text/css'>"
+ ".fc-header-shell{border-radius:10px;overflow:hidden;box-shadow:0 2px 10px var(--fc-shadow-soft, rgba(0,0,0,.10));}"
+ ".fc-header-wrap{background:linear-gradient(180deg,var(--fc-header-top,#fffce1) 0%,var(--fc-header-bottom,#fff5b5) 100%);padding:10px 12px;}"
+ ".fc-header-top{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;}"
+ ".fc-brand{display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:var(--fc-header-title,#311313);font-weight:bold;font-size:16px;line-height:1.3;}"
+ ".fc-brand a{color:var(--fc-header-title,#311313);text-decoration:none;}"
+ ".fc-brand a:hover{text-decoration:underline;}"
+ ".fc-header-sep{color:var(--fc-header-sep,#7d5a30);font-weight:bold;}"
+ ".fc-header-section-link,.fc-header-section-label{font-size:13px;color:var(--fc-header-section,#5a2b2b);}"
+ ".fc-pm-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--fc-pill-bg,#fff8dc);border:1px solid var(--fc-pill-border,#d7c57a);color:var(--fc-pill-fg,#6c5b24);font-size:11px;}"
+ ".fc-pm-pill-alert{background:var(--fc-pill-alert-bg,#fff1e0);border-color:var(--fc-pill-alert-border,#cd7f32);color:var(--fc-pill-alert-fg,#7f2f00);}"
+ ".fc-pm-pill img{display:block;}"
+ ".fc-header-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;}"
+ ".fc-theme-toggle{padding:4px 10px;border-radius:999px;border:1px solid var(--fc-nav-border,#7d5a30);background:var(--fc-nav-bg,#f6edd0);color:var(--fc-nav-fg,#4d2a2a);font-size:11px;font-weight:bold;cursor:pointer;}"
+ ".fc-theme-toggle:hover{background:var(--fc-nav-hover-bg,#fff8dc);}"
+ ".fc-header-main{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}"
+ ".fc-account{display:flex;align-items:flex-start;gap:10px;min-width:260px;background:var(--fc-account-bg,#ffffef);border:1px solid var(--fc-account-border,#d9cc93);border-radius:8px;padding:8px 10px;}"
+ ".fc-account-guest{min-width:220px;}"
+ ".fc-avatar{width:56px;height:56px;border:1px solid var(--fc-avatar-border,#b9a96f);border-radius:8px;object-fit:cover;}"
+ ".fc-account-meta{display:flex;flex-direction:column;gap:2px;}"
+ ".fc-clock-wrap{margin-bottom:2px;}"
+ ".fc-clock{color:var(--fc-clock,#1b7c2c);font-weight:bold;font-size:12px;}"
+ ".fc-nav{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px;max-width:700px;}"
+ ".fc-nav-link{display:inline-block;padding:5px 10px;border-radius:6px;border:1px solid var(--fc-nav-border,#7d5a30);background:var(--fc-nav-bg,#f6edd0);color:var(--fc-nav-fg,#4d2a2a) !important;font-size:11px;font-weight:bold;text-decoration:none;}"
+ ".fc-nav-link:hover{background:var(--fc-nav-hover-bg,#fff8dc);text-decoration:none;}"
+ ".fc-nav-link-active{background:var(--fc-nav-active-bg,#663333);color:var(--fc-nav-active-fg,#fff8e1) !important;border-color:var(--fc-nav-active-border,#4d2525);}"
+ ".fc-nav-link-logout{background:var(--fc-nav-logout-bg,#f1d6c0);border-color:var(--fc-nav-logout-border,#a76435);color:var(--fc-nav-logout-fg,#5f1c00) !important;}"
+ "@media (max-width: 820px){"
+ ".fc-header-wrap{padding:9px;}"
+ ".fc-header-main{flex-direction:column;align-items:stretch;}"
+ ".fc-nav{justify-content:flex-start;}"
+ ".fc-account{min-width:0;width:100%;}"
+ "}"
+ "</style>"
+ "<table class='tborder fc-header-shell' cellpadding='0' cellspacing='0' border='0' width='100%' align='center'>"
+ "<tbody><tr><td class='alt1' width='100%'>"
+ "<table cellpadding='0' cellspacing='0' border='0' width='100%'><tbody><tr valign='bottom'>"
+ "<td width='100%'><span class='navbar'><strong><a href='/forum'>kAmMa's Forum</a>"
+ sectionPart
+ "</strong></span></td><td nowrap='nowrap'>" + newPmBanner + "</td>"
+ rightBlock
+ "</tr></tbody></table>"
+ "<div class='fc-header-wrap'>"
+ "<div class='fc-header-top'>"
+ "<div class='fc-brand'><a href='/forum'>kAmMa's Forum</a>" + sectionPart + "</div>"
+ "<div class='fc-header-right'>"
+ newPmBanner
+ "<button id='fc-theme-toggle' class='fc-theme-toggle' type='button' aria-label='Toggle dark and light mode'>Dark mode</button>"
+ "</div>"
+ "</div>"
+ "<div class='fc-header-main'>"
+ accountBlock
+ "<div class='fc-nav'>" + navLinks + "</div>"
+ "</div>"
+ "</div>"
+ "</td></tr></tbody></table>"
+ "<form id='logout-form' method='post' action='/process/logout' style='display:none'></form>"
+ "<script type='text/javascript'>"
+ "function setTheme(mode){var root=document.documentElement;if(mode==='dark'||mode==='light'){root.setAttribute('data-theme',mode);}else{root.removeAttribute('data-theme');}}"
+ "function getStoredTheme(){try{return localStorage.getItem('fc_theme');}catch(e){return null;}}"
+ "function storeTheme(mode){try{if(mode){localStorage.setItem('fc_theme',mode);}else{localStorage.removeItem('fc_theme');}}catch(e){}}"
+ "function getPreferredTheme(){return window.matchMedia&&window.matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light';}"
+ "function currentTheme(){var forced=document.documentElement.getAttribute('data-theme');return forced||getPreferredTheme();}"
+ "function updateThemeButton(){var btn=document.getElementById('fc-theme-toggle');if(!btn){return;}var th=currentTheme();var next=th==='dark'?'light':'dark';btn.textContent=next==='dark'?'Dark mode':'Light mode';btn.setAttribute('aria-label','Switch to '+next+' mode');}"
+ "function initThemeToggle(){var stored=getStoredTheme();if(stored==='dark'||stored==='light'){setTheme(stored);}updateThemeButton();var btn=document.getElementById('fc-theme-toggle');if(btn){btn.addEventListener('click',function(){var th=currentTheme();var next=th==='dark'?'light':'dark';setTheme(next);storeTheme(next);updateThemeButton();});}"
+ "if(window.matchMedia){var mq=window.matchMedia('(prefers-color-scheme: dark)');if(mq.addEventListener){mq.addEventListener('change',function(){if(!getStoredTheme()){updateThemeButton();}});}else if(mq.addListener){mq.addListener(function(){if(!getStoredTheme()){updateThemeButton();}});}}}"
+ "function pad(v){return v<10?'0'+v:''+v;}"
+ "function clock(){var now=new Date();var text=pad(now.getDate())+'.'+pad(now.getMonth()+1)+'.'+now.getFullYear()+' '+pad(now.getHours())+':'+pad(now.getMinutes())+':'+pad(now.getSeconds());"
+ "var el=document.getElementById('currenttime');if(el){el.textContent=text;}var lv=document.getElementById('lastvisited');if(lv){lv.textContent=text.substring(0,16);}}"
+ "initThemeToggle();"
+ "clock();setInterval(clock,1000);"
+ "</script>";
}
private static String navItem(String href, String label, boolean active) {
String css = active ? "fc-nav-link fc-nav-link-active" : "fc-nav-link";
return "<a class='" + css + "' href='" + href + "'>" + escapeHtml(label) + "</a>";
}
private static String renderCommonFooter(int loggedUsersCount, List<String> loggedUsers) {
String loggedUsersHtml = (loggedUsers == null || loggedUsers.isEmpty())
? "<span class='smallfont'>-</span>"
@ -771,7 +833,7 @@ public final class Pages {
+ loggedUsersHtml
+ "</div></div></td></tr></tbody></table><br/>"
+ "<div align='center'><div class='smallfont' align='center'>"
+ "kAmMa's Forum System Version 2.43<br/>Copyright &copy;2006-2021"
+ "kAmMa's Forum System Version 3.0<br/>Copyright &copy;2006-2026"
+ "</div></div>"
+ "<script type='text/javascript'>"
+ "(function(){"

View File

@ -9,8 +9,8 @@
<title>kAmMa's Forum</title>
</head>
<body>
<div class='page' style='width:100%; text-align:left'>
<div style='padding:0 25px 0 25px'>
<div class='page fc-page'>
<div class='fc-shell'>
<br/>
{{COMMON_HEADER}}
<br/>

View File

@ -450,4 +450,386 @@ ul.menu ul ul {left:-230px; top:-1px}
ul.menu .menulink {border:1px solid #aaa; padding:5px 5px 5px 5px; font-weight:bold; background:url(/images/header.gif); width:230px}
ul.menu .menulink:hover, ul.menu .menuhover {background:url(/images/header_over.gif)}
ul.menu .sub {background:#fff url(/images/arrow.gif) 4px no-repeat}
ul.menu .topline {border-top:1px solid #aaa}
ul.menu .topline {border-top:1px solid #aaa}
/* Fabkova refresh: shared visual system for all pages */
:root
{
color-scheme: light dark;
--fc-bg-page: radial-gradient(circle at top, #fffce8 0%, #fff4c6 38%, #f2e2b1 100%);
--fc-fg-main: #24110b;
--fc-link: #0e3fba;
--fc-link-hover: #643127;
--fc-surface: #fffdf0;
--fc-shadow-strong: rgba(51, 28, 12, 0.18);
--fc-shadow-soft: rgba(0,0,0,.10);
--fc-border: #866232;
--fc-thead-top: #7d4a2a;
--fc-thead-bottom: #633119;
--fc-thead-fg: #fff6df;
--fc-tcat-top: #f6e7bc;
--fc-tcat-bottom: #f2dca0;
--fc-tcat-fg: #2f1608;
--fc-alt1: #fff7dc;
--fc-alt2: #fff2cb;
--fc-panel-surround: #fff2c9;
--fc-panel-bg: #fffdef;
--fc-panel-border: #dec68c;
--fc-input-bg: #fffdf2;
--fc-input-border: #b89b67;
--fc-button-top: #fff4d1;
--fc-button-bottom: #edd9aa;
--fc-button-hover-top: #fff9e4;
--fc-button-hover-bottom: #f1e0ba;
--fc-button-border: #9d7944;
--fc-vbmenu-top: #7a4627;
--fc-vbmenu-bottom: #5f2f19;
--fc-vbmenu-fg: #fff8e6;
--fc-header-top: #fffce1;
--fc-header-bottom: #fff5b5;
--fc-header-title: #311313;
--fc-header-sep: #7d5a30;
--fc-header-section: #5a2b2b;
--fc-pill-bg: #fff8dc;
--fc-pill-border: #d7c57a;
--fc-pill-fg: #6c5b24;
--fc-pill-alert-bg: #fff1e0;
--fc-pill-alert-border: #cd7f32;
--fc-pill-alert-fg: #7f2f00;
--fc-account-bg: #ffffef;
--fc-account-border: #d9cc93;
--fc-avatar-border: #b9a96f;
--fc-clock: #1b7c2c;
--fc-nav-bg: #f6edd0;
--fc-nav-border: #7d5a30;
--fc-nav-fg: #4d2a2a;
--fc-nav-hover-bg: #fff8dc;
--fc-nav-active-bg: #663333;
--fc-nav-active-fg: #fff8e1;
--fc-nav-active-border: #4d2525;
--fc-nav-logout-bg: #f1d6c0;
--fc-nav-logout-border: #a76435;
--fc-nav-logout-fg: #5f1c00;
}
:root[data-theme='dark']
{
--fc-bg-page: radial-gradient(circle at top, #1f2025 0%, #18191d 45%, #121317 100%);
--fc-fg-main: #eae4d8;
--fc-link: #9dc0ff;
--fc-link-hover: #e4b89f;
--fc-surface: #1d1f24;
--fc-shadow-strong: rgba(0, 0, 0, 0.45);
--fc-shadow-soft: rgba(0,0,0,.35);
--fc-border: #3f4148;
--fc-thead-top: #4b2d22;
--fc-thead-bottom: #3b2219;
--fc-thead-fg: #f2e9d7;
--fc-tcat-top: #2d3139;
--fc-tcat-bottom: #242830;
--fc-tcat-fg: #ddd6c8;
--fc-alt1: #23262d;
--fc-alt2: #2a2e36;
--fc-panel-surround: #252932;
--fc-panel-bg: #20242b;
--fc-panel-border: #3d424b;
--fc-input-bg: #171b22;
--fc-input-border: #525866;
--fc-button-top: #3c3322;
--fc-button-bottom: #2f281c;
--fc-button-hover-top: #4a3f2b;
--fc-button-hover-bottom: #383024;
--fc-button-border: #6f6040;
--fc-vbmenu-top: #4a2b20;
--fc-vbmenu-bottom: #3c2219;
--fc-vbmenu-fg: #f0e7d7;
--fc-header-top: #262b34;
--fc-header-bottom: #1f242c;
--fc-header-title: #ece8df;
--fc-header-sep: #a99376;
--fc-header-section: #d8cab3;
--fc-pill-bg: #2b313a;
--fc-pill-border: #4b5563;
--fc-pill-fg: #ddd9cf;
--fc-pill-alert-bg: #3f2a20;
--fc-pill-alert-border: #7b4a32;
--fc-pill-alert-fg: #f5d7c8;
--fc-account-bg: #20252e;
--fc-account-border: #434b58;
--fc-avatar-border: #5c6878;
--fc-clock: #85d99a;
--fc-nav-bg: #2a3038;
--fc-nav-border: #576174;
--fc-nav-fg: #e6dfd0;
--fc-nav-hover-bg: #343b45;
--fc-nav-active-bg: #6f3f2a;
--fc-nav-active-fg: #fff0da;
--fc-nav-active-border: #945137;
--fc-nav-logout-bg: #4a2f24;
--fc-nav-logout-border: #8f5135;
--fc-nav-logout-fg: #ffd8c4;
}
@media (prefers-color-scheme: dark)
{
:root:not([data-theme='light'])
{
--fc-bg-page: radial-gradient(circle at top, #1f2025 0%, #18191d 45%, #121317 100%);
--fc-fg-main: #eae4d8;
--fc-link: #9dc0ff;
--fc-link-hover: #e4b89f;
--fc-surface: #1d1f24;
--fc-shadow-strong: rgba(0, 0, 0, 0.45);
--fc-shadow-soft: rgba(0,0,0,.35);
--fc-border: #3f4148;
--fc-thead-top: #4b2d22;
--fc-thead-bottom: #3b2219;
--fc-thead-fg: #f2e9d7;
--fc-tcat-top: #2d3139;
--fc-tcat-bottom: #242830;
--fc-tcat-fg: #ddd6c8;
--fc-alt1: #23262d;
--fc-alt2: #2a2e36;
--fc-panel-surround: #252932;
--fc-panel-bg: #20242b;
--fc-panel-border: #3d424b;
--fc-input-bg: #171b22;
--fc-input-border: #525866;
--fc-button-top: #3c3322;
--fc-button-bottom: #2f281c;
--fc-button-hover-top: #4a3f2b;
--fc-button-hover-bottom: #383024;
--fc-button-border: #6f6040;
--fc-vbmenu-top: #4a2b20;
--fc-vbmenu-bottom: #3c2219;
--fc-vbmenu-fg: #f0e7d7;
--fc-header-top: #262b34;
--fc-header-bottom: #1f242c;
--fc-header-title: #ece8df;
--fc-header-sep: #a99376;
--fc-header-section: #d8cab3;
--fc-pill-bg: #2b313a;
--fc-pill-border: #4b5563;
--fc-pill-fg: #ddd9cf;
--fc-pill-alert-bg: #3f2a20;
--fc-pill-alert-border: #7b4a32;
--fc-pill-alert-fg: #f5d7c8;
--fc-account-bg: #20252e;
--fc-account-border: #434b58;
--fc-avatar-border: #5c6878;
--fc-clock: #85d99a;
--fc-nav-bg: #2a3038;
--fc-nav-border: #576174;
--fc-nav-fg: #e6dfd0;
--fc-nav-hover-bg: #343b45;
--fc-nav-active-bg: #6f3f2a;
--fc-nav-active-fg: #fff0da;
--fc-nav-active-border: #945137;
--fc-nav-logout-bg: #4a2f24;
--fc-nav-logout-border: #8f5135;
--fc-nav-logout-fg: #ffd8c4;
}
}
body
{
background: var(--fc-bg-page);
color: var(--fc-fg-main);
margin: 0;
padding: 12px;
}
a:link, a:visited, .page a:link, .page a:visited
{
color: var(--fc-link);
}
a:hover, a:active, .page a:hover, .page a:active
{
color: var(--fc-link-hover);
}
.page.fc-page
{
max-width: 1280px;
margin: 0 auto;
background: var(--fc-surface);
border-radius: 14px;
box-shadow: 0 10px 32px var(--fc-shadow-strong);
}
.fc-shell
{
padding: 12px 18px 18px 18px;
}
.fc-toolbar
{
display: flex;
justify-content: flex-end;
align-items: center;
}
.tborder
{
border: 1px solid var(--fc-border);
border-radius: 10px;
overflow: hidden;
box-shadow: 0 3px 12px var(--fc-shadow-soft);
}
.thead
{
background: linear-gradient(180deg, var(--fc-thead-top) 0%, var(--fc-thead-bottom) 100%);
color: var(--fc-thead-fg);
}
.tcat
{
background: linear-gradient(180deg, var(--fc-tcat-top) 0%, var(--fc-tcat-bottom) 100%);
color: var(--fc-tcat-fg);
}
.alt1, .alt1Active
{
background: var(--fc-alt1);
}
.alt2, .alt2Active
{
background: var(--fc-alt2);
}
.panelsurround
{
background: var(--fc-panel-surround);
}
.panel
{
background: var(--fc-panel-bg);
border: 1px solid var(--fc-panel-border);
border-radius: 10px;
padding: 12px;
}
textarea, .bginput, select
{
background: var(--fc-input-bg);
color: var(--fc-fg-main);
border: 1px solid var(--fc-input-border);
border-radius: 6px;
padding: 5px 6px;
}
.button
{
background: linear-gradient(180deg, var(--fc-button-top) 0%, var(--fc-button-bottom) 100%);
color: var(--fc-fg-main);
border: 1px solid var(--fc-button-border);
border-radius: 7px;
padding: 4px 10px;
font-weight: bold;
}
.button:hover
{
background: linear-gradient(180deg, var(--fc-button-hover-top) 0%, var(--fc-button-hover-bottom) 100%);
}
.vbmenu_control
{
background: linear-gradient(180deg, var(--fc-vbmenu-top) 0%, var(--fc-vbmenu-bottom) 100%);
color: var(--fc-vbmenu-fg);
border-radius: 8px;
}
.fc-toolbar-table
{
border-radius: 8px;
}
img
{
max-width: 100%;
height: auto;
}
input[type='text'], input[type='password'], input[type='file'], textarea, select
{
max-width: 100%;
box-sizing: border-box;
}
@media (max-width: 820px)
{
body
{
padding: 4px;
}
.fc-shell
{
padding: 8px;
overflow-x: auto;
}
.page.fc-page
{
border-radius: 10px;
}
.vbmenu_control form
{
display: flex;
flex-wrap: wrap;
gap: 6px;
align-items: center;
}
.vbmenu_control form input[type='text'],
.vbmenu_control form select
{
min-width: 140px;
}
}
/* Contrast fixes for both themes */
.smallfont,
.time,
td, th, p, li
{
color: var(--fc-fg-main);
}
.fc-accent-text
{
color: var(--fc-link);
font-weight: bold;
}
.navbar
{
color: var(--fc-link);
}
.tcat a:link, .tcat_alink,
.tcat a:visited, .tcat_avisited,
.tcat a:hover, .tcat a:active, .tcat_ahover
{
color: var(--fc-link);
}
.thead a:link, .thead_alink,
.thead a:visited, .thead_avisited,
.thead a:hover, .thead a:active, .thead_ahover
{
color: var(--fc-thead-fg);
}
.tfoot a:link, .tfoot_alink,
.tfoot a:visited, .tfoot_avisited,
.tfoot a:hover, .tfoot a:active, .tfoot_ahover
{
color: var(--fc-thead-fg);
}

View File

@ -8,13 +8,13 @@
<title>kAmMa's Forum</title>
</head>
<body>
<div class='page' style='width:100%; text-align:left'>
<div style='padding:0 25px 0 25px'>
<div class='page fc-page'>
<div class='fc-shell'>
<br/>
{{COMMON_HEADER}}
<br/>
<div align='right'>
<table class='tborder' cellpadding='3' cellspacing='1' border='0'>
<div class='fc-toolbar'>
<table class='tborder fc-toolbar-table' cellpadding='3' cellspacing='1' border='0'>
<tbody><tr>
<td class='vbmenu_control' style='font-weight:normal'>
<form action='/search' method='get'>

View File

@ -8,8 +8,8 @@
<title>kAmMa's Forum - {{FORUM_NAME}}</title>
</head>
<body>
<div class='page' style='width:100%; text-align:left'>
<div style='padding:0 25px 0 25px'>
<div class='page fc-page'>
<div class='fc-shell'>
<br/>
{{COMMON_HEADER}}
<br/>
@ -74,8 +74,8 @@
<br/>
{{COUNTDOWN_BLOCK}}
<div align='right'>
<table class='tborder' cellpadding='3' cellspacing='1' border='0'>
<div class='fc-toolbar'>
<table class='tborder fc-toolbar-table' cellpadding='3' cellspacing='1' border='0'>
<tbody><tr>
<td class='vbmenu_control' style='font-weight:normal'>
<form method='get' action='/forumdisplay' style='display:inline'>

View File

@ -9,8 +9,8 @@
</head>
<body>
<div align='center'>
<div class='page' style='width:100%; text-align:left'>
<div style='padding:0 25px 0 25px' align='left'>
<div class='page fc-page'>
<div class='fc-shell'>
<br/>
{{COMMON_HEADER}}
<br/>

View File

@ -9,8 +9,8 @@
<title>kAmMa's Forum - Member</title>
</head>
<body>
<div class='page' style='width:100%; text-align:left'>
<div style='padding:0 25px 0 25px' align='left'>
<div class='page fc-page'>
<div class='fc-shell'>
<br/>
{{COMMON_HEADER}}
<br/>

View File

@ -9,8 +9,8 @@
<title>kAmMa's Forum</title>
</head>
<body>
<div class='page' style='width:100%; text-align:left'>
<div style='padding:0 25px 0 25px' align='left'>
<div class='page fc-page'>
<div class='fc-shell'>
<br/>
{{COMMON_HEADER}}
<br/>
@ -18,7 +18,7 @@
<table class='tborder' cellpadding='6' cellspacing='1' border='0' width='100%' align='center'>
<thead>
<tr><td class='tcat'>Reply to <span style='color:blue;font-weight:bold'>{{TO_USERNAME}}</span></td></tr>
<tr><td class='tcat'>Reply to <span class='fc-accent-text'>{{TO_USERNAME}}</span></td></tr>
</thead>
<tbody>
<tr>
@ -56,8 +56,8 @@
<table class='tborder' cellpadding='6' cellspacing='1' border='0' width='100%' align='center' style='border-bottom-width:0'>
<tbody><tr><td class='tcat'><div class='normal' style='float:right'>&nbsp;</div>Private Messages<span class='normal'>: {{THREAD_TITLE}}</span></td></tr></tbody>
</table>
<div align='right'>
<table class='tborder' cellpadding='3' cellspacing='1' border='0'>
<div class='fc-toolbar'>
<table class='tborder fc-toolbar-table' cellpadding='3' cellspacing='1' border='0'>
<tbody><tr>
<td class='vbmenu_control' style='font-weight:normal'>
<form method='get' action='/message' style='display:inline'>

View File

@ -9,8 +9,8 @@
<title>kAmMa's Forum</title>
</head>
<body>
<div class='page' style='width:100%; text-align:left'>
<div style='padding:0 25px 0 25px' align='left'>
<div class='page fc-page'>
<div class='fc-shell'>
<br/>
{{COMMON_HEADER}}
<br/>

View File

@ -9,8 +9,8 @@
<title>kAmMa's Forum - New Thread</title>
</head>
<body>
<div class='page' style='width:100%; text-align:left'>
<div style='padding:0 25px 0 25px' align='left'>
<div class='page fc-page'>
<div class='fc-shell'>
<br/>
{{COMMON_HEADER}}
<br/>

View File

@ -9,13 +9,13 @@
<title>kAmMa's Forum</title>
</head>
<body>
<div class='page' style='width:100%; text-align:left'>
<div style='padding:0 25px 0 25px' align='left'>
<div class='page fc-page'>
<div class='fc-shell'>
<br/>
{{COMMON_HEADER}}
<br/>
<div align='right'>
<table class='tborder' cellpadding='3' cellspacing='1' border='0'>
<div class='fc-toolbar'>
<table class='tborder fc-toolbar-table' cellpadding='3' cellspacing='1' border='0'>
<tbody><tr>
<td class='vbmenu_control' style='font-weight:normal'>
<form method='get' action='/private' style='display:inline'>

View File

@ -8,14 +8,14 @@
<title>kAmMa's Forum - Search Results</title>
</head>
<body>
<div class='page' style='width:100%; text-align:left'>
<div style='padding:0 25px 0 25px'>
<div class='page fc-page'>
<div class='fc-shell'>
<br/>
{{COMMON_HEADER}}
<br/>
<div align='right'>
<table class='tborder' cellpadding='3' cellspacing='1' border='0'>
<div class='fc-toolbar'>
<table class='tborder fc-toolbar-table' cellpadding='3' cellspacing='1' border='0'>
<tbody><tr>
<td class='vbmenu_control' style='font-weight:normal'>
<form method='get' action='/search' style='display:inline'>