diff --git a/.gitignore b/.gitignore index d917b432c..0c3ace360 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ !/themes/default !/themes/bootstrap !/themes/installer +!/themes/kunairo # Import Configs /config/import diff --git a/config/application.php b/config/application.php index 4ff69e220..0320218e4 100644 --- a/config/application.php +++ b/config/application.php @@ -10,9 +10,9 @@ // WARNING: This will be mostly IGNORED on non-POSIX-compliant OSes (e.g. Windows). 'DefaultLoginGroup' => null, 'DefaultCharMapServer' => null, - 'DefaultLanguage' => 'en_us', // Specify the default control panel language (see FLUX_ROOT/lang/ directory for available languages.) + 'DefaultLanguage' => 'es_es', // Spanish only. Change to 'en_us' for English. 'SiteTitle' => 'Flux Control Panel', // This value is only used if the theme decides to use it. - 'ThemeName' => array('default', 'bootstrap'), // Names of the themes you would like list for use in the footer. Themes are in FLUX_ROOT/themes. + 'ThemeName' => array('kunairo'), // Only kunairo theme available. Add 'default','bootstrap' to re-enable selector. 'ScriptTimeLimit' => 0, // Script execution time limit. Specifies (in seconds) how long a page should run before timing out. (0 means forever) 'MissingEmblemBMP' => 'empty.bmp', // 'ItemIconNameFormat' => '%d.png', // The filename format for item icons (defaults to {itemid}.png). diff --git a/config/servers.php b/config/servers.php index 8ea3e7518..9526a2425 100644 --- a/config/servers.php +++ b/config/servers.php @@ -61,15 +61,15 @@ 'CharMapServers' => array( array( 'ServerName' => 'FluxRO', - 'Renewal' => true, + 'Renewal' => false, 'MaxCharSlots' => 9, 'DateTimezone' => null, // Specifies game server's timezone for this char/map pair. (See: http://php.net/timezones) //'ResetDenyMaps' => 'sec_pri', // Defaults to 'sec_pri'. This value can be an array of map names. //'Database' => 'ragnarok', // Defaults to DbConfig.Database 'ExpRates' => array( - 'Base' => 100, // Rate at which (base) exp is given - 'Job' => 100, // Rate at which job exp is given - 'Mvp' => 100 // MVP bonus exp rate + 'Base' => 250, // Rate at which (base) exp is given + 'Job' => 250, // Rate at which job exp is given + 'Mvp' => 250 // MVP bonus exp rate ), 'DropRates' => array( // If drop rate was below this amount and bonus is applied to it, the bonus can't make it exceed this amount. diff --git a/lang/en_us.php b/lang/en_us.php index 44737a395..4e9b07582 100755 --- a/lang/en_us.php +++ b/lang/en_us.php @@ -836,5 +836,82 @@ // Module: webcommands 'WCTitleLabel' => 'Web Commands', + // KunaiRO Theme + 'KunaiROHeroTitle' => 'KunaiRO', + 'KunaiROHeroTagline' => 'Where War Matters', + 'KunaiROHeroDescription' => 'Competitive Pre-Renewal server with a living economy and real progression.', + 'KunaiROBadgePreRenewal' => 'Pre-Renewal', + 'KunaiROBadgeRates' => '250x / 250x / 50x', + 'KunaiROBadgeNoPTW' => 'No Pay-to-Win', + 'KunaiROBtnPlay' => 'Download', + 'KunaiROBtnRegister' => 'Create Account', + 'KunaiROBtnDiscord' => 'Discord', + 'KunaiROFooterTagline' => 'Where War Matters', + 'KunaiROFooterCopyright' => 'All rights reserved.', + 'KunaiROFooterNavDownload' => 'Download', + 'KunaiROFooterNavSupport' => 'Support', + + // KunaiRO — Stats bar + 'KunaiROStatsPlayersLabel' => 'Active Players', + 'KunaiROStatsWoELabel' => 'WoE Status', + 'KunaiROStatsWoEActive' => 'Active', + 'KunaiROStatsUptimeLabel' => 'Uptime', + 'KunaiROStatsRatesLabel' => 'Rates', + 'KunaiROStatsRatesValue' => '250x / 250x / 50x', + + // KunaiRO — Why section + 'KunaiROWhyHeading' => 'Why KunaiRO', + 'KunaiROWhyBalancedTitle' => 'Balanced Pre-Renewal', + 'KunaiROWhyBalancedDesc' => 'Classes tuned for competitive PvP and WoE. No broken builds, no exploits.', + 'KunaiROWhyNoPTWTitle' => 'Zero Pay-to-Win', + 'KunaiROWhyNoPTWDesc' => 'Every advantage is earned in-game. No cash shop shortcuts.', + 'KunaiROWhyEconomyTitle' => 'Living Economy', + 'KunaiROWhyEconomyDesc' => 'Player-driven market with real supply and demand. Vending matters.', + 'KunaiROWhyCompetitionTitle' => 'Real Competition', + 'KunaiROWhyCompetitionDesc' => 'Weekly WoE, ranked PvP seasons, and guild rivalries that define the server.', + + // KunaiRO — News section + 'KunaiRONewsHeading' => 'Latest News', + 'KunaiRONewsEmpty' => 'No news yet. Stay tuned for updates.', + 'KunaiROLabelLanguage' => 'Language', + + // KunaiRO — Submenu translations (account module) + 'KunaiROSubLogin' => 'Login', + 'KunaiROSubRegister' => 'Register', + 'KunaiROSubResetPass' => 'Reset Password', + 'KunaiROSubResend' => 'Resend E-mail Confirmation', + 'KunaiROSubChangePass' => 'Change Password', + 'KunaiROSubChangeMail' => 'Change E-mail', + 'KunaiROSubChangeGender' => 'Change Gender', + 'KunaiROSubViewAccount' => 'View Account', + 'KunaiROSubTransfer' => 'Transfer Credits', + 'KunaiROSubXferLog' => 'Credit Transfer History', + 'KunaiROSubCart' => 'Go to Shopping Cart', + 'KunaiROSubListAccounts' => 'List Accounts', + + // KunaiRO — Purchase/Donate submenu + 'KunaiROSubShop' => 'Shop', + 'KunaiROSubGoToCart' => 'Go to Cart', + 'KunaiROSubCheckout' => 'Checkout', + 'KunaiROSubEmptyCart' => 'Empty Cart', + 'KunaiROSubPending' => 'Pending Redemption', + 'KunaiROSubDonate' => 'Make a Donation', + 'KunaiROSubDonateHistory' => 'Donation History', + 'KunaiROSubTrustedPaypal' => 'Trusted PayPal E-mails', + + // KunaiRO — Day names + 'KunaiRODaySunday' => 'Sunday', + 'KunaiRODayMonday' => 'Monday', + 'KunaiRODayTuesday' => 'Tuesday', + 'KunaiRODayWednesday' => 'Wednesday', + 'KunaiRODayThursday' => 'Thursday', + 'KunaiRODayFriday' => 'Friday', + 'KunaiRODaySaturday' => 'Saturday', + + // KunaiRO — Stats + 'KunaiROStatsWoEInactive' => 'Inactive', + 'KunaiROStatsOnline' => 'Online', + 'KunaiROStatsOffline' => 'Offline', + ); ?> diff --git a/lang/es_es.php b/lang/es_es.php index 7a1c8e315..9c777c7df 100755 --- a/lang/es_es.php +++ b/lang/es_es.php @@ -844,5 +844,82 @@ 'SDGroup3' => 'Administration', 'SDLinkOpenNew' => 'Open a new ticket', + // KunaiRO Theme + 'KunaiROHeroTitle' => 'KunaiRO', + 'KunaiROHeroTagline' => 'Donde la guerra sí importa', + 'KunaiROHeroDescription' => 'Servidor Pre-Renewal competitivo con economía viva y progreso real.', + 'KunaiROBadgePreRenewal' => 'Pre-Renewal', + 'KunaiROBadgeRates' => '250x / 250x / 50x', + 'KunaiROBadgeNoPTW' => 'Sin Pay-to-Win', + 'KunaiROBtnPlay' => 'Descargar', + 'KunaiROBtnRegister' => 'Crear cuenta', + 'KunaiROBtnDiscord' => 'Discord', + 'KunaiROFooterTagline' => 'Donde la guerra sí importa', + 'KunaiROFooterCopyright' => 'Todos los derechos reservados.', + 'KunaiROFooterNavDownload' => 'Descargar', + 'KunaiROFooterNavSupport' => 'Soporte', + + // KunaiRO — Stats bar + 'KunaiROStatsPlayersLabel' => 'Jugadores activos', + 'KunaiROStatsWoELabel' => 'Estado WoE', + 'KunaiROStatsWoEActive' => 'Activo', + 'KunaiROStatsUptimeLabel' => 'Uptime', + 'KunaiROStatsRatesLabel' => 'Rates', + 'KunaiROStatsRatesValue' => '250x / 250x / 50x', + + // KunaiRO — Why section + 'KunaiROWhyHeading' => 'Por qué KunaiRO', + 'KunaiROWhyBalancedTitle' => 'Pre-Renewal balanceado', + 'KunaiROWhyBalancedDesc' => 'Clases ajustadas para PvP y WoE competitivo. Sin builds rotos ni exploits.', + 'KunaiROWhyNoPTWTitle' => 'Sin Pay-to-Win', + 'KunaiROWhyNoPTWDesc' => 'Cada ventaja se gana jugando. Sin atajos de cash shop.', + 'KunaiROWhyEconomyTitle' => 'Economía viva', + 'KunaiROWhyEconomyDesc' => 'Mercado impulsado por jugadores con oferta y demanda real. El vending importa.', + 'KunaiROWhyCompetitionTitle' => 'Competencia real', + 'KunaiROWhyCompetitionDesc' => 'WoE semanal, temporadas PvP rankeadas y rivalidades de guild que definen el servidor.', + + // KunaiRO — News section + 'KunaiRONewsHeading' => 'Últimas noticias', + 'KunaiRONewsEmpty' => 'Sin noticias por ahora. Pronto habrá novedades.', + 'KunaiROLabelLanguage' => 'Idioma', + + // KunaiRO — Submenu translations (account module) + 'KunaiROSubLogin' => 'Iniciar sesión', + 'KunaiROSubRegister' => 'Registrarse', + 'KunaiROSubResetPass' => 'Restablecer contraseña', + 'KunaiROSubResend' => 'Reenviar confirmación de e-mail', + 'KunaiROSubChangePass' => 'Cambiar contraseña', + 'KunaiROSubChangeMail' => 'Cambiar e-mail', + 'KunaiROSubChangeGender' => 'Cambiar género', + 'KunaiROSubViewAccount' => 'Ver cuenta', + 'KunaiROSubTransfer' => 'Transferir créditos', + 'KunaiROSubXferLog' => 'Historial de transferencias', + 'KunaiROSubCart' => 'Ir al carrito de compras', + 'KunaiROSubListAccounts' => 'Listar cuentas', + + // KunaiRO — Purchase/Donate submenu + 'KunaiROSubShop' => 'Tienda', + 'KunaiROSubGoToCart' => 'Ir al carrito', + 'KunaiROSubCheckout' => 'Pagar', + 'KunaiROSubEmptyCart' => 'Vaciar carrito', + 'KunaiROSubPending' => 'Pendientes de canjear', + 'KunaiROSubDonate' => 'Hacer una donación', + 'KunaiROSubDonateHistory' => 'Historial de donaciones', + 'KunaiROSubTrustedPaypal' => 'Emails de PayPal confiables', + + // KunaiRO — Day names + 'KunaiRODaySunday' => 'Domingo', + 'KunaiRODayMonday' => 'Lunes', + 'KunaiRODayTuesday' => 'Martes', + 'KunaiRODayWednesday' => 'Miércoles', + 'KunaiRODayThursday' => 'Jueves', + 'KunaiRODayFriday' => 'Viernes', + 'KunaiRODaySaturday' => 'Sábado', + + // KunaiRO — Stats + 'KunaiROStatsWoEInactive' => 'Inactivo', + 'KunaiROStatsOnline' => 'Online', + 'KunaiROStatsOffline' => 'Offline', + ); ?> diff --git a/modules/purchase/cart.php b/modules/purchase/cart.php index f2ae777cc..8bf400470 100644 --- a/modules/purchase/cart.php +++ b/modules/purchase/cart.php @@ -4,11 +4,11 @@ $this->loginRequired(); if ($server->cart->isEmpty()) { - $session->setMessageData('Your cart is currently empty.'); + $session->setMessageData('Tu carrito está vacío.'); $this->redirect($this->url('purchase')); } -$title = 'Shopping Cart'; +$title = 'Carrito de compras'; require_once 'Flux/ItemShop.php'; $items = $server->cart->getCartItems(); diff --git a/modules/purchase/checkout.php b/modules/purchase/checkout.php index 2a8345733..dba8fa090 100644 --- a/modules/purchase/checkout.php +++ b/modules/purchase/checkout.php @@ -3,14 +3,14 @@ $this->loginRequired(); -$title = 'Checkout Area'; +$title = 'Pagar'; if ($server->cart->isEmpty()) { - $session->setMessageData('Your cart is currently empty.'); + $session->setMessageData('Tu carrito está vacío.'); $this->redirect($this->url('purchase')); } elseif (!$server->cart->hasFunds()) { - $session->setMessageData('You do not have sufficient funds to make this purchase!'); + $session->setMessageData('No tienes suficientes créditos para esta compra.'); $this->redirect($this->url('purchase')); } @@ -51,19 +51,19 @@ if ($res) { if (!$deduct) { $server->cart->clear(); - $session->setMessageData('Failed to purchase all of the items in your cart!'); + $session->setMessageData('No se pudieron comprar los items de tu carrito.'); } elseif ($deduct != $server->cart->getTotal()) { $server->cart->clear(); - $session->setMessageData('Items have been purchased, however, some failed (your credits are still there.)'); + $session->setMessageData('Items comprados, pero algunos fallaron (tus créditos siguen ahí).'); } else { $server->cart->clear(); - $session->setMessageData('Items have been purchased. You may redeem them from the Redemption NPC.'); + $session->setMessageData('Items comprados exitosamente. Puedes canjearlos en el NPC de Canjeo.'); } } else { - $session->setMessageData('Purchase went bad, contact an admin!'); + $session->setMessageData('Error en la compra, contacta a un administrador.'); } $this->redirect(); diff --git a/modules/purchase/clear.php b/modules/purchase/clear.php index 099e88821..f3ad877b8 100644 --- a/modules/purchase/clear.php +++ b/modules/purchase/clear.php @@ -6,10 +6,10 @@ require_once 'Flux/ItemShop.php'; if ($server->cart && $server->cart->clear()) { - $session->setMessageData("Your cart has been emptied."); + $session->setMessageData("Tu carrito ha sido vaciado."); } else { - $session->setMessageData("Couldn't empty your cart, maybe it's already empty."); + $session->setMessageData("No se pudo vaciar tu carrito, puede que ya esté vacío."); } $this->redirect($this->url('purchase')); diff --git a/modules/purchase/remove.php b/modules/purchase/remove.php index 9da7c6266..f76bc133d 100644 --- a/modules/purchase/remove.php +++ b/modules/purchase/remove.php @@ -12,20 +12,20 @@ $nRemoved = $server->cart->deleteByItemNum($num); if ($nRemoved) { if (!$server->cart->isEmpty()) { - $session->setMessageData("Removed $nRemoved item(s) from your cart."); + $session->setMessageData("Se eliminaron $nRemoved item(s) de tu carrito."); $this->redirect($this->url('purchase', 'cart')); } else { - $session->setMessageData("Removed $nRemoved item(s) from your cart. Your cart is now empty."); + $session->setMessageData("Se eliminaron $nRemoved item(s) de tu carrito. Tu carrito ahora está vacío."); } } else { - $session->setMessageData("There were no items to remove from your cart."); + $session->setMessageData("No había items para eliminar de tu carrito."); } - + $this->redirect($this->url('purchase')); } -$session->setMessageData('No items were removed from your cart because none were selected.'); +$session->setMessageData('No se eliminaron items porque no seleccionaste ninguno.'); $this->redirect($this->url('purchase', 'cart')); ?> diff --git a/modules/woe/custom.php b/modules/woe/custom.php index d277a4a07..050798299 100644 --- a/modules/woe/custom.php +++ b/modules/woe/custom.php @@ -6,7 +6,15 @@ $col = "sday.value AS sday, eday.value AS eday, "; $col .= "stime.value AS stime, etime.value AS etime"; -$dayNames = array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'); +$dayNames = array( + Flux::message('KunaiRODaySunday'), + Flux::message('KunaiRODayMonday'), + Flux::message('KunaiRODayTuesday'), + Flux::message('KunaiRODayWednesday'), + Flux::message('KunaiRODayThursday'), + Flux::message('KunaiRODayFriday'), + Flux::message('KunaiRODaySaturday') +); $woeTimes = array(); foreach ($session->loginAthenaGroup->athenaServers as $athenaServer) { $sql = "SELECT $col FROM {$athenaServer->charMapDatabase}.mapreg AS sday "; diff --git a/modules/woe/index.php b/modules/woe/index.php index 3c5ef80fe..84dfd9bf2 100644 --- a/modules/woe/index.php +++ b/modules/woe/index.php @@ -2,7 +2,15 @@ if (!defined('FLUX_ROOT')) exit; $title = Flux::message('WoeTitle'); -$dayNames = array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"); +$dayNames = array( + Flux::message('KunaiRODaySunday'), + Flux::message('KunaiRODayMonday'), + Flux::message('KunaiRODayTuesday'), + Flux::message('KunaiRODayWednesday'), + Flux::message('KunaiRODayThursday'), + Flux::message('KunaiRODayFriday'), + Flux::message('KunaiRODaySaturday') +); $woeTimes = array(); foreach ($session->loginAthenaGroup->athenaServers as $athenaServer) { diff --git a/themes/kunairo/account/create.php b/themes/kunairo/account/create.php new file mode 100644 index 000000000..cb9903c66 --- /dev/null +++ b/themes/kunairo/account/create.php @@ -0,0 +1,120 @@ + +
+url('service', 'tos').'">'.Flux::message('AccountCreateTerms').'') ?>
+ +Note:
+ +Note:
+ 0): ?> +Note:
+ + 0): ?> +Note:
+ + 0): ?> +Note:
+ + 0): ?> +Note:
+ + +Note:
+ + + + + diff --git a/themes/kunairo/account/login.php b/themes/kunairo/account/login.php new file mode 100644 index 000000000..1ba223fae --- /dev/null +++ b/themes/kunairo/account/login.php @@ -0,0 +1,61 @@ + + + + + + +actionAllowed('account', 'create')): ?> +url('account', 'create')); ?>
+ + + + diff --git a/themes/kunairo/css/flux.css b/themes/kunairo/css/flux.css new file mode 100644 index 000000000..9c0ae08b3 --- /dev/null +++ b/themes/kunairo/css/flux.css @@ -0,0 +1,1152 @@ + /********************************************* + ** KunaiRO dark theme override of flux.css ** + ** Based on default FluxCP stylesheet. ** + *********************************************/ + +.loginbox-admin-menu { + padding-top: 5px; + color: #C9A45C; +} + +body { + margin: 0 0 20px 0; + padding: 0; + font-family: "Lucida Grande", "Lucida Sans", Verdana, Tahoma, sans-serif; + font-size: 9pt; + color: #EDE6D6; + background-color: #07070B; +} + +table { + font-family: "Lucida Grande", "Lucida Sans", Verdana, Tahoma, sans-serif; + font-size: 9pt; +} + +tr, td, th { + vertical-align: top; +} + +.horizontal-table tr, .vertical-table tr, .generic-form-table tr, +.horizontal-table td, .vertical-table td, .generic-form-table td { + vertical-align: middle; +} + +.horizontal-table th, .vertical-table th, .generic-form-table th { + vertical-align: top; +} + +h2 { + color: #EDE6D6; + letter-spacing: 0; +} + +h3 { + font-weight: normal; + font-size: 120%; + color: #EDE6D6; + border-bottom: 1px dotted rgba(201,164,92,0.2); + text-transform: uppercase; +} + +h3:first-letter { + font-weight: bold; +} + +p { + margin: 4px 0 8px 0; + padding: 0; + color: rgba(237,230,214,0.65); +} + +a img { + border: 0; +} + +a { + color: #C9A45C; + text-decoration: none; +} + +input[type=text], input[type=password], input[type=file], textarea { + font-family: "Lucida Grande", "Lucida Sans", Verdana, Tahoma, sans-serif; + padding: 4px; + font-size: 10pt; + color: #EDE6D6; + background-color: #151822; + border: 1px solid rgba(201,164,92,0.15); + outline-width: 0; +} + +label:hover { + cursor: pointer; + color: #EDE6D6; +} + +.module-name { + font-weight: bold; + font-size: 12pt; +} + +.message { + display: block; + padding: 10px; + font-weight: bold; + font-size: 120%; + color: #C9A45C; + background-color: rgba(201,164,92,0.08); + border: 1px solid rgba(201,164,92,0.2); + border-radius: 6px; +} + +.notice { + display: block; + padding: 10px; + font-weight: normal; + font-size: 120%; + color: #FF7A1A; + background-color: rgba(255,122,26,0.06); + border: 1px solid rgba(255,122,26,0.2); + border-radius: 6px; +} + +.center { + text-align: center; +} + +#admin_sidebar, #sidebar { + margin-bottom: 10px; + border-collapse: collapse; + border-spacing: 0; +} + +#admin_sidebar img, #sidebar img { + display: block; +} + +#admin_sidebar td, #sidebar td { + padding: 0; +} + +#admin_sidebar td.menuitem, #admin_sidebar th.menuitem { + display: block; + font-size: 10pt; + border-width: 0 13px 0 11px; + border-style: solid; + border-color: #1C1F2E; +} + +#admin_sidebar th.menuitem { + background-color: #151822; +} + +#admin_sidebar th.menuitem strong { + display: block; + margin: 0 12px; + padding: 10px 0 2px 0; + font-size: 100%; + text-align: center; + color: #C9A45C; + border-bottom: 1px solid rgba(201,164,92,0.15); +} + +#admin_sidebar td.menuitem a { + margin: 0 auto; + display: block; + padding: 2px 5px 4px 18px; + color: rgba(237,230,214,0.65); + background-color: #151822; + text-align: left; + text-shadow: none; + text-decoration: none; +} + +#admin_sidebar td.menuitem a:hover { + color: #EDE6D6; + background-color: #1C1F2E; + text-shadow: none; +} + +#admin_sidebar td.menuitem a span { +} + +#sidebar td.sidebar-left, #sidebar td.sidebar-right { + background-color: #0F1118; +} + +#sidebar td.menuitem, #sidebar th.menuitem { + display: block; + font-size: 10pt; + border-width: 0 13px 0 11px; + border-style: solid; + border-color: #1C1F2E; +} + +#sidebar th.menuitem { + background-color: #151822; +} + +#sidebar th.menuitem strong { + display: block; + margin: 0 12px; + padding: 10px 0 2px 0; + font-size: 100%; + text-align: center; + color: #C9A45C; + border-bottom: 1px solid rgba(201,164,92,0.15); +} + +#sidebar td.menuitem a { + margin: 0 auto; + display: block; + padding: 2px 5px 4px 18px; + color: rgba(237,230,214,0.65); + background-color: #151822; + text-align: left; + text-shadow: none; + text-decoration: none; +} + +#sidebar td.menuitem a:hover { + color: #EDE6D6; + background-color: #1C1F2E; + text-shadow: none; +} + +#sidebar td.menuitem a span { + display: block; +} + +.request, .fs-path { + display: inline-block; + padding: 2px; + font-family: Monaco, "Lucida Console", "Bitsteam Vera Sans Mono", monospace; + font-size: 8pt; + background-color: #151822; + border: 1px solid rgba(201,164,92,0.1); +} + +.keyword { + color: #ffba00; + font-style: italic; +} + +.red { + display: block; + padding: 10px; + font-weight: bold; + font-size: 120%; + color: #E85A3E; + background-color: rgba(217,72,43,0.08); + border-left: 3px solid #D9482B; + border-radius: 4px; +} + +.green { + display: block; + padding: 10px; + font-weight: bold; + font-size: 120%; + color: #5cb85c; + background-color: rgba(92,184,92,0.08); + border-left: 3px solid #5cb85c; + border-radius: 4px; +} + +.note { + padding: 5px; + color: rgba(237,230,214,0.65); + background-color: rgba(201,164,92,0.04); + font-style: italic; + border-radius: 4px; +} + +.up { + font-weight: bold; + color: #5cb85c; + text-transform: uppercase; +} + +.down { + color: #D9482B; + text-transform: uppercase; +} + +.submit_button { + display: block; + margin: 10px; + padding: 5px; + background-color: #151822; + border: 1px solid rgba(201,164,92,0.15); + border-radius: 4px; +} + +.submit_button:hover { + color: #EDE6D6; + background-color: #1C1F2E; + border: 1px solid rgba(201,164,92,0.25); + cursor: pointer; +} + +.install_table th, .install_table td { + padding: 5px 10px; + border: 1px solid rgba(201,164,92,0.1); +} + +.install_table th { + background-color: #1A0D12; +} + +.install_table td { + width: 180px; + text-align: center; +} + +.created { + color: #5cb85c; + width: 80px; +} + +.missing { + color: #D9482B; + width: 80px; +} + +.pages { + margin-top: 20px; + padding-top: 10px; + color: rgba(237,230,214,0.4); + text-align: center; + border-top: 1px solid rgba(201,164,92,0.1); +} + +.pages .page-prev, .pages .page-next { + color: #C9A45C; +} + +.pages .page-num { + padding: 0 5px; +} + +.pages .current-page { + color: #EDE6D6; + font-weight: bold; +} + +.horizontal-table { + border-spacing: 0; + border-collapse: collapse; + width: 100%; +} + +.horizontal-table th { + padding: 5px 10px; + background-color: #1A0D12; + color: #C9A45C; +} + +.horizontal-table td { + padding: 5px 10px; + background-color: #0F1118; +} + +.horizontal-table th, .horizontal-table td { + font-size: 9pt; + border: 1px solid rgba(201,164,92,0.1); +} + +.vertical-table { + border-spacing: 0; + border-collapse: collapse; +} + +.vertical-table th { + padding: 5px 10px; + background-color: #1A0D12; + color: #C9A45C; +} + +.vertical-table td { + padding: 5px 12px; + background-color: #0F1118; +} + +.vertical-table th, .vertical-table td { + font-size: 9pt; + border: 1px solid rgba(201,164,92,0.1); +} + +.vertical-table label { + display: block; + padding: 5px; +} + +.current-sub-menu { + font-weight: bold; +} + +.td-checkbox { + text-align: center; +} + +.td-action { + color: rgba(237,230,214,0.4); + text-align: center; +} + +.vertical-table .td-action { + text-align: right; +} + +.vertical-table form { + margin: 0; + padding: 0; +} + +.not-applicable { + font-style: italic; + color: rgba(237,230,214,0.35); +} + +.state-pending { + color: #FF7A1A; +} + +.state-banned { + color: #D9482B; +} + +.state-permanently-banned { + font-weight: bold; + color: #D9482B; +} + +.raw-txn-log { + padding: 10px; + font-family: "Monaco", "Lucida Console", "Courier New", monospace; + background-color: #151822; + border: 1px solid rgba(201,164,92,0.1); + width: 96%; + overflow: scroll; +} + +.online { + color: #5cb85c; +} + +.offline { + color: rgba(237,230,214,0.35); +} + +.info-text-total { + font-weight: bold; +} + +.info-text-results { + font-weight: bold; +} + +.info-text { + margin-bottom: 6px; + padding: 5px; + color: rgba(237,230,214,0.65); + background-color: #0F1118; + border: 1px solid rgba(201,164,92,0.1); + text-align: center; + border-radius: 4px; +} + +.toggler { + font-weight: bold; + font-style: italic; +} + +.toggler a { + color: #C9A45C; +} + +.search-form, search-form2 { + display: none; + margin: 0 0 10px 0; + padding: 0; + border-top: 1px solid rgba(201,164,92,0.1); +} + +.search-form p, .search-form2 p { + margin: 0; + padding: 5px; + color: rgba(237,230,214,0.5); + text-align: left; + border-bottom: 1px solid rgba(201,164,92,0.08); +} + +.search-form label, .search-form2 label { + display: inline-block; + margin: 0 0 3px 0; + font-size: 8pt; + font-style: italic; + color: rgba(237,230,214,0.65); +} + +.search-form input[type=text], .search-form2 input[type=text] { + display: inline-block; + margin: 0 0 2px 0; + padding: 2px; + font-size: 8pt; + width: 80px; +} + +.search-form input[type=submit], .search-form2 input[type=submit] { + display: inline-block; + margin: 0 0 2px 0; + font-size: 8pt; + font-weight: bold; +} + +.search-form input[type=button], .search-form input[type=reset], +.search-form2 input[type=button], .search-form2 input[type=reset] { + display: inline-block; + margin: 0 0 2px 0; + font-size: 8pt; +} + +.search-form input[type=checkbox], .search-form2 input[type=checkbox] { + display: inline-block; + margin: 0 0 2px 0; +} + +.search-form select, .search-form2 select { + display: inline-block; + margin: 2px 0; +} + +#submenu { + color: rgba(237,230,214,0.4); +} + +#pagemenu { + margin-top: 5px; + padding: 5px 0; + font-size: 8pt; + color: rgba(237,230,214,0.4); + border-width: 1px 0; + border-style: dotted; + border-color: rgba(201,164,92,0.1); +} + +#pagemenu a { + color: #C9A45C; + text-decoration: underline; +} + +#pagemenu a:hover { + color: #D4B472; +} + +#loginbox { + margin-bottom: 10px; + color: rgba(237,230,214,0.65); +} + +#content { + color: rgba(237,230,214,0.65); +} + +#register_form table td, #login_form table td { + padding: 1px; +} + +#register_form table th label, #login_form table th label { + display: block; + padding: 5px; + text-align: center; +} + +#register_form input[type=text], #register_form input[type=password], #login_form input[type=text], #login_form input[type=password] { + width: 140px; +} + +#register_form select, #login_form select { + width: 147px; +} + +#server_status th, #server_status td { + padding: 8px 12px 8px 12px; + text-align: left; + border-bottom: 1px solid rgba(201,164,92,0.1); +} + +#server_status { + border-spacing: 0; + border-collapse: collapse; + background-color: #0F1118; + border: 1px solid rgba(201,164,92,0.1); + border-radius: 6px; +} + +#server_status .server { + color: #EDE6D6; +} + +#server_status .status { + text-align: center; +} + +#copyright p { + margin-top: 5px; + margin-bottom: 0px; + font-style: italic; + font-size: 8pt; + color: rgba(237,230,214,0.3); + text-align: right; +} + +#info p { + margin-top: 5px; + margin-bottom: 0px; + font-style: italic; + font-size: 8pt; + color: rgba(237,230,214,0.3); + text-align: right; +} + +.sortable { + color: #C9A45C; + text-decoration: underline; +} + +.sortable:hover { + color: #D4B472; +} + +.character-stats { + border-spacing: 0; + border-collapse: collapse; + color: rgba(237,230,214,0.5); +} + +.character-stats td { + padding: 0px 10px 5px 0; + border: 0; + text-align: center; +} + +.character-stats .stat-name { + color: rgba(237,230,214,0.5); +} + +.character-stats .stat-value { + color: #EDE6D6; +} + +.credit-balance { + float: right; + display: inline-block; + padding: 10px; + color: #C9A45C; + background-color: rgba(201,164,92,0.04); + border: 1px solid rgba(201,164,92,0.15); + border-radius: 6px; +} + +.credit-balance .balance-text { + display: inline-block; + margin-right: 5px; + color: rgba(237,230,214,0.4); + text-transform: uppercase; +} + +.credit-balance .balance-amount { + font-weight: bold; +} + +.emblem-server { + margin: 0 0 2px 0; + padding: 0 0 2px 0; + font-size: 120%; + border-bottom: 1px solid rgba(201,164,92,0.1); +} + +.emblem-server label { + display: block; +} + +.emblem-server label:hover { + cursor: pointer; +} + +.block { + display: block; + width: 80%; + height: 40px; +} + +.script-line { + font-family: Monaco, "Lucida Console", monospace; +} + +.script-line-num { + display: inline-block; + margin: 0; + padding: 5px; + background-color: #1A0D12; + border-right: 1px solid rgba(201,164,92,0.1); +} + +.script-line-code { + display: inline-block; + margin: 0; + padding: 5px; +} + +.shop-table { + width: 100%; + color: #EDE6D6; + border-spacing: 0 10px; + border-collapse: separate; +} + +.shop-table td { + padding: 10px; + background-color: #0F1118; + border: 1px solid rgba(201,164,92,0.1); +} + +.shop-item-image { + width: 75px; + height: 100px; + text-align: center; +} + +.shop-item-name { + margin: 0 0 5px 0; + padding: 0 0 2px 0; + font-size: 140%; + color: #EDE6D6; + border-bottom: 1px solid rgba(201,164,92,0.1); +} + +.shop-item-cost-qty { + width: 150px; + color: rgba(237,230,214,0.5); + text-align: center; +} + +.cost { + color: #C9A45C; + font-size: 120%; + font-weight: bold; + text-transform: uppercase; +} + +.qty { + color: rgba(237,230,214,0.65); +} + +.shop-item-action { + color: rgba(201,164,92,0.3); +} + +.shop-item-action a { + color: #C9A45C; + border-bottom: 1px solid rgba(201,164,92,0.15); +} + +.shop-item-action a:hover { + border-bottom: 1px solid #C9A45C; +} + +.short { + width: 40px; +} + +.shop-server-name { + color: #EDE6D6; +} + +.shop-item-info { + text-align: justify; +} + +textarea { + width: 100%; + max-width: 320px; + height: 120px; +} + +.cart-items-text { + margin: 0 0 5px 0; + padding: 5px; + color: rgba(237,230,214,0.65); + background-color: #1A0D12; + border: 5px solid #151822; +} + +.cart-info-text { + margin: 0 0 5px 0; + padding: 0; +} + +.cart-total-text { + margin: 0; + padding: 0; +} + +.cart-item-name { + color: #EDE6D6; + border-bottom: 1px dotted rgba(201,164,92,0.2); +} + +.cart-item-count { + font-size: 120%; + font-weight: bold; + color: #C9A45C; +} + +.cart-sub-total { + color: #EDE6D6; +} + +.cart { + width: 100%; +} + +.cart label { + display: block; +} + +.cart h4 { + margin: 10px 0 2px 0; + font-size: 140%; +} + +.remove-from-cart { + width: 100%; + text-align: right; +} + +.checkout-text { + font-size: 120%; + font-weight: bold; +} + +.checkout-text a { + border-bottom: 1px dotted rgba(201,164,92,0.2); +} + +.checkout-text a:hover { + color: #D4B472; + border-bottom: 1px solid #C9A45C; +} + +.enter-donation-amount { + margin: 0; + padding: 0 0 5px 0; + font-size: 120%; +} + +.donation-amount-text { + margin: 0; + padding: 0; + font-size: 120%; + text-align: center; +} + +.credit-amount-text { + font-size: 8pt; + text-transform: uppercase; + color: rgba(237,230,214,0.4); + text-align: center; + letter-spacing: 1px; +} + +.donation-amount { + font-weight: bold; + color: #C9A45C; +} + +.credit-amount { + color: rgba(237,230,214,0.65); +} + +.reset-amount-text { + margin: 0; + padding: 0; + font-size: 8pt; + text-align: center; +} + +.checkout-info-text { + margin: 0 0 5px 0; + padding: 0; +} + +.remaining-balance { + color: #C9A45C; +} + +.exchange-rate { + font-size: 120%; + font-weight: bold; + color: #EDE6D6; +} + +.important { + font-size: 120%; + color: #FF7A1A; +} + +.important .server-name { + font-weight: bold; +} + +.generic-form { + padding: 10px; + background-color: transparent; + border: none; + width: auto; +} + +.generic-form-div { + padding: 10px; + background-color: transparent; + border: none; + width: auto; +} +.generic-form-table th label { + display: block; + padding: 6px; +} + +.generic-form-table td div { + display: block; + padding: 6px 0; +} + +.generic-form-table th { + text-align: right; +} + +.generic-form-table td input[type=checkbox] { + display: inline-block; + margin-top: 6px; +} + +.generic-form-table td p { + margin: 6px 5px; + color: rgba(237,230,214,0.5); +} + +.security-code { + margin: 5px 0; + text-align: left; + width: 145px; + height: 50px; +} + +.action { + color: rgba(201,164,92,0.3); +} + +.action a, .action span.anchor { + color: #C9A45C; + border-bottom: 1px solid rgba(201,164,92,0.15); + cursor: pointer; +} + +.block-link { + display: block; + padding: 3px; + color: #C9A45C; + border-bottom: 1px solid rgba(201,164,92,0.1); +} + +.button-action { + padding: 5px 0; + text-align: left; +} + +.woe-table { + border-spacing: 0; + border-collapse: collapse; + background-color: #0F1118; + border: 1px solid rgba(201,164,92,0.1); + border-radius: 6px; +} + +.woe-table th, .woe-table td { + padding: 5px 10px; +} + +.woe-table th { + font-weight: normal; + border-bottom: 1px solid rgba(201,164,92,0.1); + color: #C9A45C; +} + +.woe-table td { + font-size: 120%; +} + +.woe-table .server { + font-weight: bold; + color: #EDE6D6; +} + +.woe-table .time { + font-style: italic; + color: rgba(237,230,214,0.65); +} + +.script { + width: 98%; +} + +.multi-select { + width: 100%; +} + +.jump-to-page { + margin-top: 8px; + font-size: 8pt; + text-align: center; +} + +.jump-to-page input { + padding: 2px; + font-size: 8pt; +} + +.top-ranked td { + font-weight: bold; + color: #C9A45C; + background-color: rgba(201,164,92,0.06); +} + +.top-ranked a { + color: #C9A45C; + border-bottom: 1px dotted rgba(201,164,92,0.3); +} + +.empty-row { + display: none; +} + +.item-drop-mvp td { + color: #E85A3E; + background-color: rgba(217,72,43,0.06); +} + +.item-drop-card td { + color: #C9A45C; + background-color: rgba(201,164,92,0.04); +} + +.mvp { + font-size: xx-small; + font-weight: bold; + color: #D9482B; + vertical-align: top; +} + +.monster-mode { + margin: 0; + padding: 0; + list-style: square inside; +} + +.monster-mode li { + padding: 1px; + border-bottom: 1px dotted rgba(201,164,92,0.08); +} + +.equipped td { + background-color: rgba(201,164,92,0.04); +} + +.job-classes { + border-spacing: 0; +} + +.job-classes td { + padding-right: 10px; + border-right: 1px solid rgba(201,164,92,0.1); +} + +.current-shop-category { + font-weight: bold; +} + +.normalslotted .equipped { + color: rgba(237,230,214,0.65); +} + +.overslotted1 { + color: #32cd32; +} + +.overslotted2 { + color: #00bfff; +} + +.overslotted3 { + color: #ffa500; +} + +.overslotted4 { + color: #9932cc; +} + +.hold-hours { + color: #ffba00; + font-style: italic; +} + +/* ===== News classes (missing from original flux.css) ===== */ +.newsDiv { + margin-bottom: 10px; +} + +.newsCont { + padding: 10px 0; + border-bottom: 1px solid rgba(201,164,92,0.08); + color: rgba(237,230,214,0.65); +} + +.newsDate { + color: rgba(237,230,214,0.35); +} + +.news_link { + color: #D9482B; +} +.news_link:hover { + color: #FF7A1A; +} + +.clear { + clear: both; +} + +/* ===== Item status classes ===== */ +.refineable.yes, .for-sale.yes, .identified.yes { + color: #5cb85c; +} +.refineable.no, .for-sale.no, .identified.no { + color: rgba(237,230,214,0.35); +} +.broken.yes { + color: #D9482B; +} +.broken.no { + color: rgba(237,230,214,0.35); +} +.item_name { + color: #EDE6D6; +} + +/* ===== Select element dark theme ===== */ +select { + background-color: #151822; + color: #EDE6D6; + border: 1px solid rgba(201,164,92,0.15); +} diff --git a/themes/kunairo/css/kunairo.css b/themes/kunairo/css/kunairo.css new file mode 100644 index 000000000..70f7565d7 --- /dev/null +++ b/themes/kunairo/css/kunairo.css @@ -0,0 +1,2428 @@ +/* ========================================================================== + KunaiRO Theme — Complete Visual System v2 + Dark premium MMORPG theme — aggressive, competitive, AAA feel + ========================================================================== */ + +/* -------------------------------------------------------------------------- + 1. CUSTOM PROPERTIES + -------------------------------------------------------------------------- */ +:root { + /* Core palette */ + --kr-black: #0A0A0F; + --kr-dark: #0F1118; + --kr-dark-warm: #1A0D12; + --kr-dark-elevated: #151822; + --kr-dark-surface: #1C1F2E; + --kr-red: #D9482B; + --kr-red-light: #E85A3E; + --kr-red-dark: #A83520; + --kr-orange: #FF7A1A; + --kr-orange-light: #FF9344; + --kr-gold: #C9A45C; + --kr-gold-light: #D4B472; + --kr-gold-pale: #E8D5A8; + --kr-cream: #EDE6D6; + --kr-white: #F5F0E6; + + /* Backgrounds */ + --kr-bg-body: #07070B; + --kr-bg-primary: #0A0A0F; + --kr-bg-secondary: #0F1118; + --kr-bg-elevated: #151822; + --kr-bg-surface: #1C1F2E; + + /* Text */ + --kr-text-primary: #EDE6D6; + --kr-text-secondary: rgba(237, 230, 214, 0.65); + --kr-text-muted: rgba(237, 230, 214, 0.35); + --kr-text-inverse: #0A0A0F; + + /* Borders */ + --kr-border-subtle: rgba(201, 164, 92, 0.08); + --kr-border-default: rgba(201, 164, 92, 0.15); + --kr-border-strong: rgba(201, 164, 92, 0.3); + --kr-border-red: rgba(217, 72, 43, 0.3); + --kr-border-red-strong: rgba(217, 72, 43, 0.6); + + /* Shadows */ + --kr-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.4); + --kr-shadow-md: 0 4px 20px rgba(0, 0, 0, 0.5); + --kr-shadow-lg: 0 8px 40px rgba(0, 0, 0, 0.6); + --kr-shadow-xl: 0 16px 64px rgba(0, 0, 0, 0.7); + --kr-shadow-inner: inset 0 2px 8px rgba(0, 0, 0, 0.3); + --kr-shadow-card: 0 4px 24px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(201, 164, 92, 0.06); + + /* Glows */ + --kr-glow-red: 0 0 30px rgba(217, 72, 43, 0.4); + --kr-glow-red-strong: 0 0 50px rgba(217, 72, 43, 0.5), 0 0 100px rgba(217, 72, 43, 0.2); + --kr-glow-red-text: 0 0 40px rgba(217, 72, 43, 0.6), 0 0 80px rgba(217, 72, 43, 0.3); + --kr-glow-orange: 0 0 25px rgba(255, 122, 26, 0.35); + --kr-glow-gold: 0 0 20px rgba(201, 164, 92, 0.3); + --kr-glow-gold-text: 0 0 12px rgba(201, 164, 92, 0.5); + + /* Spacing */ + --kr-space-xs: 0.25rem; + --kr-space-sm: 0.5rem; + --kr-space-md: 1rem; + --kr-space-lg: 1.5rem; + --kr-space-xl: 2rem; + --kr-space-2xl: 3rem; + --kr-space-3xl: 4rem; + --kr-space-4xl: 6rem; + --kr-space-5xl: 8rem; + + /* Radius */ + --kr-radius-sm: 4px; + --kr-radius-md: 6px; + --kr-radius-lg: 10px; + --kr-radius-xl: 16px; + --kr-radius-full: 9999px; + + /* Typography */ + --kr-font-display: 'Cinzel', serif; + --kr-font-heading: 'Rajdhani', sans-serif; + --kr-font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; + + /* Transitions */ + --kr-ease: 0.25s ease; + --kr-ease-fast: 0.15s ease; + --kr-ease-slow: 0.4s ease; +} + +/* -------------------------------------------------------------------------- + 2. RESET & BASE + -------------------------------------------------------------------------- */ +*, *::before, *::after { box-sizing: border-box; } + +html { + font-size: 16px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + scroll-behavior: smooth; + overflow-x: hidden; +} + +body.kr-body { + margin: 0; + padding: 0; + background: var(--kr-bg-body); + color: var(--kr-text-primary); + font-family: var(--kr-font-body); + font-size: 0.9375rem; + line-height: 1.6; + min-height: 100vh; + display: flex; + flex-direction: column; + overflow-x: hidden; + width: 100%; +} + +a { + color: var(--kr-gold); + text-decoration: none; + transition: color var(--kr-ease-fast); +} +a:hover { color: var(--kr-gold-light); } + +h1, h2, h3, h4, h5, h6 { + font-family: var(--kr-font-heading); + font-weight: 600; + color: var(--kr-text-primary); + margin: 0 0 var(--kr-space-md); + line-height: 1.2; +} + +img { max-width: 100%; height: auto; } +body.kr-body table { border-collapse: collapse; } +body.kr-body td, body.kr-body th { padding: 0; } + +.kr-container { + max-width: 1200px; + margin: 0 auto; + padding: 0 var(--kr-space-xl); +} + +/* -------------------------------------------------------------------------- + 3. NAVBAR — Premium horizontal + -------------------------------------------------------------------------- */ +.kr-navbar { + position: sticky; + top: 0; + z-index: 1000; + background: rgba(7, 7, 11, 0.85); + backdrop-filter: blur(20px) saturate(1.2); + -webkit-backdrop-filter: blur(20px) saturate(1.2); + border-bottom: 1px solid var(--kr-border-subtle); + height: 64px; +} + +.kr-navbar__inner { + max-width: 1200px; + margin: 0 auto; + padding: 0 var(--kr-space-xl); + display: flex; + align-items: center; + height: 100%; + gap: var(--kr-space-xl); +} + +/* Brand */ +.kr-navbar__brand { + font-family: var(--kr-font-display); + font-size: 1.5rem; + font-weight: 700; + letter-spacing: 0.05em; + color: var(--kr-cream) !important; + flex-shrink: 0; +} +.kr-navbar__logo-accent { + color: var(--kr-red); + text-shadow: 0 0 20px rgba(217, 72, 43, 0.5); +} + +/* Horizontal nav */ +.kr-navbar__nav { + display: flex; + align-items: center; + gap: var(--kr-space-xs); + flex: 1; +} + +.kr-navbar__link { + padding: 0.375rem 0.75rem; + font-family: var(--kr-font-heading); + font-size: 0.8125rem; + font-weight: 500; + letter-spacing: 0.05em; + text-transform: uppercase; + color: var(--kr-text-secondary) !important; + border-radius: var(--kr-radius-sm); + transition: all var(--kr-ease-fast); + white-space: nowrap; +} +.kr-navbar__link:hover { + color: var(--kr-cream) !important; + background: rgba(237, 230, 214, 0.06); + box-shadow: inset 0 -2px 0 var(--kr-red); +} +.kr-navbar__link--active { + color: var(--kr-gold) !important; + background: rgba(201, 164, 92, 0.08); + box-shadow: inset 0 -2px 0 var(--kr-gold); +} + +/* Actions */ +.kr-navbar__actions { + display: flex; + align-items: center; + gap: var(--kr-space-sm); + flex-shrink: 0; +} + +.kr-navbar__user-link { + color: var(--kr-gold) !important; + font-weight: 500; + font-size: 0.875rem; +} + +/* Mobile nav toggle */ +.kr-nav-toggle { + display: none; + flex-direction: column; + justify-content: center; + gap: 5px; + background: none; + border: 1px solid var(--kr-border-default); + border-radius: var(--kr-radius-sm); + cursor: pointer; + padding: 8px; + margin-left: var(--kr-space-sm); +} +.kr-nav-toggle span { + display: block; + width: 18px; + height: 2px; + background: var(--kr-cream); + border-radius: 2px; + transition: var(--kr-ease); +} +.kr-nav-toggle--active span:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); } +.kr-nav-toggle--active span:nth-child(2) { opacity: 0; } +.kr-nav-toggle--active span:nth-child(3) { transform: rotate(-45deg) translate(5px, -5px); } + +/* -------------------------------------------------------------------------- + 4. USER BAR + -------------------------------------------------------------------------- */ +.kr-userbar { + background: var(--kr-dark-warm); + border-bottom: 1px solid var(--kr-border-subtle); + padding: var(--kr-space-xs) 0; + font-size: 0.8125rem; +} +.kr-userbar__inner { + max-width: 1200px; + margin: 0 auto; + padding: 0 var(--kr-space-xl); + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + gap: var(--kr-space-sm); +} +.kr-userbar__info { color: var(--kr-text-secondary); } +.kr-userbar__admin { display: flex; gap: var(--kr-space-sm); flex-wrap: wrap; } +.kr-userbar__admin-link { + color: var(--kr-orange) !important; + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.05em; +} +.kr-userbar__admin-link:hover { color: var(--kr-orange-light) !important; } + +/* -------------------------------------------------------------------------- + 5. PAGE LAYOUT + -------------------------------------------------------------------------- */ + +/* Homepage: full-width, no sidebar */ +.kr-page--home { + flex: 1; +} +.kr-main--full { + width: 100%; +} + +/* Internal pages: sidebar + content */ +.kr-page--internal { + display: flex; + max-width: 1200px; + margin: 0 auto; + padding: var(--kr-space-2xl) var(--kr-space-xl); + gap: var(--kr-space-2xl); + flex: 1; + width: 100%; +} +.kr-main--with-sidebar { + flex: 1; + min-width: 0; +} + +/* Sidebar toggle for internal pages mobile */ +.kr-page--internal > .kr-sidebar-toggle { + display: none; + position: fixed; + bottom: var(--kr-space-lg); + right: var(--kr-space-lg); + z-index: 1001; + width: 48px; + height: 48px; + background: linear-gradient(135deg, var(--kr-red), var(--kr-orange)); + border: none; + border-radius: 50%; + cursor: pointer; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 4px; + box-shadow: var(--kr-glow-red), var(--kr-shadow-lg); +} +.kr-page--internal > .kr-sidebar-toggle span { + display: block; + width: 18px; + height: 2px; + background: white; + border-radius: 2px; +} + +/* -------------------------------------------------------------------------- + 6. SIDEBAR — Premium redesign + -------------------------------------------------------------------------- */ +.kr-sidebar { + width: 230px; + flex-shrink: 0; + position: sticky; + top: 80px; + max-height: calc(100vh - 100px); + overflow-y: auto; + scrollbar-width: thin; + scrollbar-color: var(--kr-border-default) transparent; +} +.kr-sidebar::-webkit-scrollbar { width: 4px; } +.kr-sidebar::-webkit-scrollbar-track { background: transparent; } +.kr-sidebar::-webkit-scrollbar-thumb { background: var(--kr-border-default); border-radius: 4px; } + +.kr-sidebar__section { + margin-bottom: var(--kr-space-md); + background: var(--kr-bg-secondary); + border: 1px solid var(--kr-border-subtle); + border-radius: var(--kr-radius-lg); + overflow: hidden; + transition: border-color var(--kr-ease); +} +.kr-sidebar__section:hover { + border-color: var(--kr-border-default); +} + +.kr-sidebar__heading { + font-family: var(--kr-font-heading); + font-size: 0.625rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.14em; + color: var(--kr-gold); + padding: var(--kr-space-sm) var(--kr-space-md); + margin: 0; + background: linear-gradient(135deg, var(--kr-bg-elevated), rgba(26, 13, 18, 0.4)); + border-bottom: 1px solid var(--kr-border-subtle); + position: relative; +} +.kr-sidebar__heading::after { + content: ''; + position: absolute; + bottom: -1px; + left: var(--kr-space-md); + width: 24px; + height: 1px; + background: var(--kr-red); + box-shadow: 0 0 6px rgba(217, 72, 43, 0.4); +} + +.kr-sidebar__menu { + list-style: none; + margin: 0; + padding: var(--kr-space-xs) 0; +} +.kr-sidebar__menu li a { + display: flex; + align-items: center; + padding: 0.4rem var(--kr-space-md); + color: var(--kr-text-secondary); + font-size: 0.8125rem; + font-weight: 400; + border-left: 2px solid transparent; + transition: all var(--kr-ease-fast); + position: relative; +} +.kr-sidebar__menu li a:hover { + color: var(--kr-cream); + background: rgba(201, 164, 92, 0.04); + border-left-color: var(--kr-red); + padding-left: calc(var(--kr-space-md) + 4px); +} +.kr-sidebar__menu li a:active { + background: rgba(217, 72, 43, 0.06); +} + +/* -------------------------------------------------------------------------- + 7. BUTTONS + -------------------------------------------------------------------------- */ +.kr-btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: var(--kr-space-xs); + padding: 0.5rem 1.25rem; + font-family: var(--kr-font-heading); + font-size: 0.875rem; + font-weight: 600; + letter-spacing: 0.05em; + text-transform: uppercase; + text-decoration: none !important; + border: 1px solid transparent; + border-radius: var(--kr-radius-md); + cursor: pointer; + transition: all var(--kr-ease); + position: relative; + overflow: hidden; +} +.kr-btn:focus-visible { + outline: 2px solid var(--kr-gold); + outline-offset: 2px; +} + +/* Primary — fire */ +.kr-btn--primary { + background: linear-gradient(135deg, var(--kr-red) 0%, var(--kr-red-light) 50%, var(--kr-orange) 100%); + color: var(--kr-white) !important; + box-shadow: var(--kr-shadow-md), inset 0 1px 0 rgba(255,255,255,0.15); + text-shadow: 0 1px 2px rgba(0,0,0,0.3); +} +.kr-btn--primary:hover { + box-shadow: var(--kr-glow-red), var(--kr-shadow-lg); + transform: translateY(-2px); + color: var(--kr-white) !important; + filter: brightness(1.1); +} +.kr-btn--primary:active { transform: translateY(0); } + +/* Secondary — gold outline */ +.kr-btn--secondary { + background: transparent; + color: var(--kr-gold) !important; + border-color: var(--kr-gold); + box-shadow: inset 0 0 0 0 rgba(201, 164, 92, 0.1); +} +.kr-btn--secondary:hover { + background: rgba(201, 164, 92, 0.1); + box-shadow: var(--kr-glow-gold), inset 0 0 20px rgba(201, 164, 92, 0.05); + color: var(--kr-gold-light) !important; + transform: translateY(-2px); +} + +/* Ghost */ +.kr-btn--ghost { + background: rgba(237, 230, 214, 0.04); + color: var(--kr-text-secondary) !important; + border-color: rgba(237, 230, 214, 0.12); +} +.kr-btn--ghost:hover { + background: rgba(237, 230, 214, 0.08); + color: var(--kr-cream) !important; + border-color: rgba(237, 230, 214, 0.25); + transform: translateY(-1px); +} + +/* Discord */ +.kr-btn--discord { + background: rgba(88, 101, 242, 0.12); + color: #8B9EFF !important; + border-color: rgba(88, 101, 242, 0.35); +} +.kr-btn--discord:hover { + background: rgba(88, 101, 242, 0.2); + color: #A8B6FF !important; + border-color: rgba(88, 101, 242, 0.5); + box-shadow: 0 0 20px rgba(88, 101, 242, 0.2); + transform: translateY(-2px); +} +.kr-btn__icon { + display: inline-block; + vertical-align: middle; + flex-shrink: 0; +} + +/* Sizes */ +.kr-btn--sm { padding: 0.3rem 0.75rem; font-size: 0.75rem; } +.kr-btn--lg { padding: 0.75rem 2rem; font-size: 0.9375rem; } +.kr-btn--xl { padding: 0.875rem 2.5rem; font-size: 1.0625rem; letter-spacing: 0.08em; } + +/* Glow pulse */ +.kr-btn--glow::before { + content: ''; + position: absolute; + inset: -3px; + border-radius: inherit; + background: linear-gradient(135deg, var(--kr-red), var(--kr-orange)); + z-index: -1; + opacity: 0.4; + filter: blur(16px); + animation: kr-btn-pulse 2s ease-in-out infinite alternate; +} +@keyframes kr-btn-pulse { + 0% { opacity: 0.3; filter: blur(14px); } + 100% { opacity: 0.6; filter: blur(20px); } +} + +/* -------------------------------------------------------------------------- + 8. BADGES + -------------------------------------------------------------------------- */ +.kr-badge { + display: inline-flex; + align-items: center; + padding: 0.3rem 1rem; + font-family: var(--kr-font-heading); + font-size: 0.75rem; + font-weight: 600; + letter-spacing: 0.1em; + text-transform: uppercase; + border-radius: var(--kr-radius-full); + border: 1px solid; + backdrop-filter: blur(4px); +} +.kr-badge--fire { + color: var(--kr-orange); + border-color: rgba(255, 122, 26, 0.5); + background: rgba(255, 122, 26, 0.1); + text-shadow: 0 0 8px rgba(255, 122, 26, 0.4); + box-shadow: 0 0 12px rgba(255, 122, 26, 0.1); +} +.kr-badge--gold { + color: var(--kr-gold-light); + border-color: rgba(201, 164, 92, 0.5); + background: rgba(201, 164, 92, 0.1); + box-shadow: 0 0 12px rgba(201, 164, 92, 0.1); +} +.kr-badge--steel { + color: var(--kr-cream); + border-color: rgba(237, 230, 214, 0.3); + background: rgba(237, 230, 214, 0.06); +} +.kr-badge--red { + color: var(--kr-red-light); + border-color: rgba(217, 72, 43, 0.5); + background: rgba(217, 72, 43, 0.12); +} + +/* -------------------------------------------------------------------------- + 9. HERO — AAA Level + -------------------------------------------------------------------------- */ +.kr-hero { + position: relative; + min-height: 600px; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; +} + +/* === Hero background system — 8 layers === */ +.kr-hero__bg { + position: absolute; + inset: 0; + z-index: 0; +} + +/* Layer 1: Deep dark base with warm undertone */ +.kr-hero__bg-deep { + position: absolute; + inset: 0; + background: + radial-gradient(ellipse 120% 80% at 50% -10%, rgba(26, 13, 18, 0.6) 0%, transparent 50%), + var(--kr-bg-body); +} + +/* Layer 2: Fire — bottom eruption (stronger) */ +.kr-hero__bg-fire { + position: absolute; + inset: 0; + background: + radial-gradient(ellipse 100% 50% at 50% 110%, rgba(217, 72, 43, 0.35) 0%, rgba(217, 72, 43, 0.12) 30%, transparent 55%), + radial-gradient(ellipse 60% 35% at 25% 105%, rgba(255, 122, 26, 0.25) 0%, transparent 50%), + radial-gradient(ellipse 60% 35% at 75% 105%, rgba(217, 72, 43, 0.25) 0%, transparent 50%), + radial-gradient(ellipse 30% 20% at 50% 95%, rgba(255, 147, 68, 0.15) 0%, transparent 50%); + animation: kr-fire-flicker 3s ease-in-out infinite alternate; +} + +/* Layer 3: Energy — wider ambient glow */ +.kr-hero__bg-energy { + position: absolute; + inset: 0; + background: + radial-gradient(ellipse 55% 45% at 50% 55%, rgba(217, 72, 43, 0.10) 0%, transparent 65%), + radial-gradient(ellipse 80% 60% at 50% 80%, rgba(255, 122, 26, 0.05) 0%, transparent 60%); + animation: kr-energy-pulse 5s ease-in-out infinite alternate; +} + +/* Layer 4: Smoke — drifting fog */ +.kr-hero__bg-smoke { + position: absolute; + inset: 0; + background: + radial-gradient(ellipse 50% 35% at 25% 75%, rgba(26, 13, 18, 0.7) 0%, transparent 70%), + radial-gradient(ellipse 50% 35% at 75% 65%, rgba(15, 17, 24, 0.6) 0%, transparent 70%), + radial-gradient(ellipse 80% 40% at 50% 90%, rgba(10, 10, 15, 0.5) 0%, transparent 60%); + animation: kr-smoke-drift 10s ease-in-out infinite alternate; +} + +/* Layer 5: Sparks / embers — particle dots */ +.kr-hero__bg-sparks { + position: absolute; + inset: 0; + background-image: + radial-gradient(1.5px 1.5px at 15% 55%, rgba(255, 147, 68, 0.8) 0%, transparent 100%), + radial-gradient(1px 1px at 25% 70%, rgba(217, 72, 43, 0.7) 0%, transparent 100%), + radial-gradient(2px 2px at 35% 45%, rgba(255, 122, 26, 0.6) 0%, transparent 100%), + radial-gradient(1px 1px at 55% 65%, rgba(201, 164, 92, 0.5) 0%, transparent 100%), + radial-gradient(1.5px 1.5px at 65% 35%, rgba(255, 122, 26, 0.5) 0%, transparent 100%), + radial-gradient(1px 1px at 75% 55%, rgba(217, 72, 43, 0.6) 0%, transparent 100%), + radial-gradient(2px 2px at 85% 75%, rgba(255, 147, 68, 0.5) 0%, transparent 100%), + radial-gradient(1px 1px at 45% 30%, rgba(201, 164, 92, 0.4) 0%, transparent 100%), + radial-gradient(1.5px 1.5px at 10% 80%, rgba(255, 122, 26, 0.7) 0%, transparent 100%), + radial-gradient(1px 1px at 90% 20%, rgba(217, 72, 43, 0.4) 0%, transparent 100%); + animation: kr-sparks-float 7s ease-in-out infinite alternate; +} + +/* Layer 6: Radial light — central focus (stronger) */ +.kr-hero__bg-radial { + position: absolute; + inset: 0; + background: + radial-gradient(ellipse 50% 40% at 50% 45%, rgba(217, 72, 43, 0.09) 0%, transparent 65%), + radial-gradient(ellipse 100% 70% at 50% 100%, rgba(26, 13, 18, 0.4) 0%, transparent 50%); +} + +/* Layer 7: Scanlines + grain texture */ +.kr-hero__bg-scanlines { + position: absolute; + inset: 0; + background: + repeating-linear-gradient( + 0deg, + transparent, + transparent 2px, + rgba(0, 0, 0, 0.035) 2px, + rgba(0, 0, 0, 0.035) 4px + ); + pointer-events: none; +} +.kr-hero__bg-scanlines::after { + content: ''; + position: absolute; + inset: 0; + opacity: 0.035; + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); + background-size: 200px 200px; + pointer-events: none; +} + +/* Layer 8: Vignette — stronger edges */ +.kr-hero__bg-vignette { + position: absolute; + inset: 0; + background: + radial-gradient(ellipse 60% 50% at 50% 45%, transparent 15%, rgba(7, 7, 11, 0.75) 100%), + linear-gradient(to bottom, rgba(7, 7, 11, 0.3) 0%, transparent 15%); +} + +/* Hero bottom fade */ +.kr-hero__fade { + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 120px; + background: linear-gradient(to bottom, transparent, var(--kr-bg-body)); + z-index: 1; +} + +/* Hero content */ +.kr-hero__content { + position: relative; + z-index: 2; + text-align: center; + padding: var(--kr-space-5xl) var(--kr-space-xl) var(--kr-space-4xl); + max-width: 760px; +} + +/* Badges row */ +.kr-hero__badges { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: var(--kr-space-sm); + margin-bottom: var(--kr-space-2xl); +} + +/* Title */ +.kr-hero__title { + font-family: var(--kr-font-display); + font-size: clamp(3.5rem, 10vw, 6rem); + font-weight: 900; + letter-spacing: 0.08em; + line-height: 1; + margin: 0 0 var(--kr-space-lg); +} +.kr-hero__title-kunai { + color: var(--kr-cream); + text-shadow: + 0 0 60px rgba(237, 230, 214, 0.15), + 0 4px 8px rgba(0, 0, 0, 0.5); +} +.kr-hero__title-ro { + color: var(--kr-red); + text-shadow: var(--kr-glow-red-text); + animation: kr-title-glow 3s ease-in-out infinite alternate; +} + +/* Tagline */ +.kr-hero__tagline { + font-family: var(--kr-font-heading); + font-size: clamp(1.2rem, 3.5vw, 1.75rem); + font-weight: 500; + letter-spacing: 0.2em; + text-transform: uppercase; + color: var(--kr-gold); + text-shadow: var(--kr-glow-gold-text); + margin: 0 0 var(--kr-space-xl); +} + +/* Decorative divider — angular wings */ +.kr-hero__divider { + display: flex; + align-items: center; + justify-content: center; + gap: var(--kr-space-sm); + margin-bottom: var(--kr-space-xl); +} +.kr-hero__divider-wing { + display: block; + width: 80px; + height: 1px; +} +.kr-hero__divider-wing--left { + background: linear-gradient(90deg, transparent, var(--kr-gold)); +} +.kr-hero__divider-wing--right { + background: linear-gradient(90deg, var(--kr-gold), transparent); +} +.kr-hero__divider-diamond { + display: block; + width: 10px; + height: 10px; + background: var(--kr-gold); + transform: rotate(45deg); + box-shadow: 0 0 12px rgba(201, 164, 92, 0.6), 0 0 24px rgba(201, 164, 92, 0.2); +} + +/* Description */ +.kr-hero__description { + font-size: 1.0625rem; + color: var(--kr-text-secondary); + line-height: 1.8; + margin: 0 auto var(--kr-space-2xl); + max-width: 520px; +} + +/* CTA buttons */ +.kr-hero__actions { + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: var(--kr-space-md); +} + +/* -------------------------------------------------------------------------- + 10. SECTIONS — Differentiated backgrounds + -------------------------------------------------------------------------- */ +.kr-section { + position: relative; +} + +.kr-section--news { + background: var(--kr-bg-secondary); + padding: var(--kr-space-4xl) 0; + border-top: 1px solid var(--kr-border-subtle); + border-bottom: 1px solid var(--kr-border-subtle); +} +/* Subtle top glow on news section */ +.kr-section--news::before { + content: ''; + position: absolute; + top: 0; + left: 50%; + transform: translateX(-50%); + width: 80%; + max-width: 400px; + height: 1px; + background: linear-gradient(90deg, transparent, var(--kr-red), transparent); + box-shadow: 0 0 30px rgba(217, 72, 43, 0.2); +} + +/* Section heading */ +.kr-section__heading { + font-family: var(--kr-font-heading); + font-size: 1.5rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--kr-cream); + margin-bottom: var(--kr-space-2xl); + text-align: center; +} +.kr-section__heading-icon { + display: inline-block; + color: var(--kr-red); + margin-right: var(--kr-space-sm); + font-size: 1.3em; + text-shadow: var(--kr-glow-red); +} + +/* -------------------------------------------------------------------------- + 11. CARDS — with depth + -------------------------------------------------------------------------- */ +.kr-card { + background: var(--kr-bg-elevated); + border: 1px solid var(--kr-border-subtle); + border-radius: var(--kr-radius-lg); + overflow: hidden; + transition: all var(--kr-ease); + box-shadow: var(--kr-shadow-card); + position: relative; +} +.kr-card:hover { + border-color: var(--kr-border-default); + box-shadow: var(--kr-shadow-lg), 0 0 0 1px rgba(201, 164, 92, 0.1); + transform: translateY(-3px); +} + +/* Accent bar on left */ +.kr-card__accent { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 3px; + background: linear-gradient(180deg, var(--kr-red), var(--kr-orange)); + opacity: 0.6; + transition: opacity var(--kr-ease); +} +.kr-card:hover .kr-card__accent { opacity: 1; } + +.kr-card__inner { + padding-left: 3px; /* offset for accent bar */ +} + +.kr-card__header { + padding: var(--kr-space-lg) var(--kr-space-xl); + border-bottom: 1px solid var(--kr-border-subtle); +} + +.kr-card__title { + font-family: var(--kr-font-heading); + font-size: 1.15rem; + font-weight: 600; + color: var(--kr-cream); + margin: 0 0 var(--kr-space-xs); +} + +.kr-card__meta { + font-size: 0.75rem; + color: var(--kr-text-muted); + font-weight: 500; +} + +.kr-card__body { + padding: var(--kr-space-lg) var(--kr-space-xl); + color: var(--kr-text-secondary); + font-size: 0.875rem; + line-height: 1.7; +} + +.kr-card__footer { + padding: var(--kr-space-sm) var(--kr-space-xl); + border-top: 1px solid var(--kr-border-subtle); + color: var(--kr-text-muted); +} + +.kr-card__link { + display: block; + padding: var(--kr-space-sm) var(--kr-space-xl); + border-top: 1px solid var(--kr-border-subtle); + font-family: var(--kr-font-heading); + font-size: 0.8125rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--kr-red) !important; + transition: all var(--kr-ease-fast); +} +.kr-card__link:hover { + color: var(--kr-orange) !important; + background: rgba(217, 72, 43, 0.04); + padding-left: calc(var(--kr-space-xl) + 4px); +} + +/* Featured card */ +.kr-card--featured { + border-color: var(--kr-border-red); + box-shadow: var(--kr-shadow-card), 0 0 20px rgba(217, 72, 43, 0.08); +} +.kr-card--featured .kr-card__accent { + opacity: 1; + width: 4px; + box-shadow: 0 0 8px rgba(217, 72, 43, 0.4); +} +.kr-card--featured .kr-card__inner { padding-left: 4px; } + +/* News grid */ +.kr-news-grid { + display: grid; + gap: var(--kr-space-lg); +} + +/* -------------------------------------------------------------------------- + 12. ALERTS + -------------------------------------------------------------------------- */ +.kr-alert { + padding: var(--kr-space-md) var(--kr-space-xl); + border-radius: var(--kr-radius-md); + font-size: 0.875rem; + margin-bottom: var(--kr-space-lg); + border: 1px solid; + box-shadow: var(--kr-shadow-sm); +} +.kr-alert--info { + background: rgba(201, 164, 92, 0.06); + border-color: rgba(201, 164, 92, 0.2); + color: var(--kr-gold); +} +.kr-alert--warning { + background: rgba(255, 122, 26, 0.06); + border-color: rgba(255, 122, 26, 0.2); + color: var(--kr-orange); +} + +/* -------------------------------------------------------------------------- + 13. SUBMENUS & PAGEMENUS + -------------------------------------------------------------------------- */ +.kr-submenu { + display: flex; + flex-wrap: wrap; + gap: var(--kr-space-xs); + margin-bottom: var(--kr-space-lg); + padding: var(--kr-space-sm); + background: var(--kr-bg-secondary); + border-radius: var(--kr-radius-md); + border: 1px solid var(--kr-border-subtle); +} +.kr-submenu__item { + padding: var(--kr-space-xs) var(--kr-space-md); + font-size: 0.8125rem; + font-weight: 500; + color: var(--kr-text-secondary) !important; + border-radius: var(--kr-radius-sm); + transition: all var(--kr-ease-fast); +} +.kr-submenu__item:hover { + background: rgba(201, 164, 92, 0.08); + color: var(--kr-cream) !important; +} +.kr-submenu__item--active { + background: rgba(217, 72, 43, 0.12) !important; + color: var(--kr-red) !important; + font-weight: 600; +} + +.kr-pagemenu { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: var(--kr-space-sm); + margin-bottom: var(--kr-space-lg); + font-size: 0.8125rem; +} +.kr-pagemenu__label { + color: var(--kr-text-muted); + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.05em; + font-size: 0.75rem; +} +.kr-pagemenu__item { color: var(--kr-gold) !important; } + +/* -------------------------------------------------------------------------- + 14. BALANCE + -------------------------------------------------------------------------- */ +.kr-balance { + display: inline-flex; + align-items: center; + gap: var(--kr-space-sm); + padding: var(--kr-space-sm) var(--kr-space-lg); + background: rgba(201, 164, 92, 0.04); + border: 1px solid var(--kr-border-default); + border-radius: var(--kr-radius-md); + margin-bottom: var(--kr-space-lg); +} +.kr-balance__label { + font-size: 0.75rem; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--kr-text-muted); + font-weight: 600; +} +.kr-balance__amount { + font-family: var(--kr-font-heading); + font-size: 1.125rem; + font-weight: 700; + color: var(--kr-gold); + text-shadow: var(--kr-glow-gold-text); +} + +/* -------------------------------------------------------------------------- + 15. CUSTOM SELECTS (theme-specific) + -------------------------------------------------------------------------- */ +.kr-select { + background: var(--kr-bg-elevated); + color: var(--kr-text-primary); + border: 1px solid var(--kr-border-default); + border-radius: var(--kr-radius-sm); + padding: 0.3rem 0.5rem; + font-family: var(--kr-font-body); + font-size: 0.8125rem; + cursor: pointer; + transition: border-color var(--kr-ease-fast); +} +.kr-select:hover { border-color: var(--kr-border-strong); } +.kr-select:focus { outline: none; border-color: var(--kr-gold); box-shadow: 0 0 0 2px rgba(201, 164, 92, 0.12); } +.kr-select--sm { font-size: 0.75rem; padding: 0.2rem 0.4rem; } +.kr-select--inline { margin-left: var(--kr-space-xs); } + +/* -------------------------------------------------------------------------- + 16. TABLES (inherited module views) + -------------------------------------------------------------------------- */ + +body.kr-body .kr-main--with-sidebar table, +body.kr-body .kr-main--full table:not(.kr-hero table) { + width: 100%; + border-collapse: collapse; + background: var(--kr-bg-elevated); + border: 1px solid var(--kr-border-subtle); + border-radius: var(--kr-radius-md); + overflow: hidden; + font-size: 0.875rem; + box-shadow: var(--kr-shadow-sm); +} +body.kr-body .kr-main--with-sidebar th, +body.kr-body .kr-main--full th { + background: var(--kr-dark-warm); + color: var(--kr-gold); + font-family: var(--kr-font-heading); + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; + font-size: 0.75rem; + padding: 0.75rem 1rem; + text-align: left; + border-bottom: 2px solid var(--kr-border-red); +} +body.kr-body .kr-main--with-sidebar td, +body.kr-body .kr-main--full td { + padding: 0.625rem 1rem; + border-bottom: 1px solid var(--kr-border-subtle); + color: var(--kr-text-secondary); +} +body.kr-body .kr-main--with-sidebar tr:hover td, +body.kr-body .kr-main--full tr:hover td { + background: rgba(217, 72, 43, 0.03); +} + + +/* -------------------------------------------------------------------------- + 17. FOOTER — Premium multi-column + -------------------------------------------------------------------------- */ +.kr-footer { + position: relative; + background: var(--kr-bg-primary); + margin-top: auto; + border-top: 1px solid var(--kr-border-subtle); +} + +/* Top decorative border — stronger */ +.kr-footer__border { + height: 3px; + background: linear-gradient(90deg, transparent 2%, var(--kr-red-dark), var(--kr-red), var(--kr-orange), var(--kr-red), var(--kr-red-dark), transparent 98%); + box-shadow: 0 0 20px rgba(217, 72, 43, 0.15), 0 0 40px rgba(217, 72, 43, 0.05); +} + +/* Background — stronger glow */ +.kr-footer__bg { + position: absolute; + inset: 0; + background: + radial-gradient(ellipse 70% 50% at 50% 0%, rgba(217, 72, 43, 0.06) 0%, transparent 60%), + radial-gradient(ellipse 40% 30% at 20% 10%, rgba(26, 13, 18, 0.3) 0%, transparent 60%), + radial-gradient(ellipse 40% 30% at 80% 10%, rgba(26, 13, 18, 0.3) 0%, transparent 60%); + pointer-events: none; +} + +.kr-footer__inner { + position: relative; + max-width: 1200px; + margin: 0 auto; + padding: var(--kr-space-3xl) var(--kr-space-xl) var(--kr-space-2xl); + display: grid; + grid-template-columns: 1.5fr 1fr 1fr 1fr; + gap: var(--kr-space-2xl); +} + +.kr-footer__col-title { + font-family: var(--kr-font-heading); + font-size: 0.6875rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.12em; + color: var(--kr-gold); + margin-bottom: var(--kr-space-md); + padding-bottom: var(--kr-space-sm); + border-bottom: 1px solid var(--kr-border-subtle); +} + +.kr-footer__nav { + display: flex; + flex-direction: column; + gap: var(--kr-space-sm); +} +.kr-footer__nav a { + color: var(--kr-text-secondary) !important; + font-size: 0.8125rem; + transition: color var(--kr-ease-fast), padding-left var(--kr-ease-fast); +} +.kr-footer__nav a:hover { + color: var(--kr-cream) !important; + padding-left: 4px; +} + +/* Brand column */ +.kr-footer__col--brand { + display: flex; + flex-direction: column; +} +.kr-footer__logo-wrap { margin-bottom: var(--kr-space-sm); } +.kr-footer__logo { + font-family: var(--kr-font-display); + font-size: 1.75rem; + font-weight: 700; + color: var(--kr-cream); + letter-spacing: 0.05em; +} +.kr-footer__logo-accent { + color: var(--kr-red); + text-shadow: 0 0 15px rgba(217, 72, 43, 0.4); +} +.kr-footer__tagline { + font-family: var(--kr-font-heading); + font-size: 0.8125rem; + letter-spacing: 0.1em; + text-transform: uppercase; + color: var(--kr-text-muted); +} + +.kr-footer__selectors { + display: flex; + flex-direction: column; + gap: var(--kr-space-md); +} +.kr-footer__selector { + display: flex; + flex-direction: column; + gap: var(--kr-space-xs); +} +.kr-footer__selector label { + font-family: var(--kr-font-heading); + font-size: 0.6875rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--kr-text-muted); +} + +/* Bottom bar */ +.kr-footer__bottom { + border-top: 1px solid var(--kr-border-subtle); + background: rgba(0, 0, 0, 0.2); +} +.kr-footer__bottom-inner { + max-width: 1200px; + margin: 0 auto; + padding: var(--kr-space-md) var(--kr-space-xl); + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: var(--kr-space-sm); +} +.kr-footer__copyright { + font-size: 0.75rem; + color: var(--kr-text-muted); +} +.kr-footer__copyright a { + color: var(--kr-text-secondary) !important; +} +.kr-footer__copyright a:hover { color: var(--kr-gold) !important; } +.kr-footer__meta { + font-size: 0.6875rem; + color: var(--kr-text-muted); +} + +/* -------------------------------------------------------------------------- + 18. STATS BAR + -------------------------------------------------------------------------- */ +.kr-stats { + position: relative; + background: var(--kr-bg-primary); + padding: var(--kr-space-3xl) 0; + border-bottom: 1px solid var(--kr-border-subtle); + margin-top: -1px; +} +.kr-stats::before { + content: ''; + position: absolute; + top: 0; + left: 50%; + transform: translateX(-50%); + width: 80%; + max-width: 600px; + height: 1px; + background: linear-gradient(90deg, transparent, rgba(201, 164, 92, 0.2), transparent); +} + +.kr-stats__grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: var(--kr-space-lg); +} + +.kr-stats__item { + display: flex; + align-items: center; + gap: var(--kr-space-md); + padding: var(--kr-space-lg) var(--kr-space-xl); + background: var(--kr-bg-secondary); + border: 1px solid var(--kr-border-subtle); + border-radius: var(--kr-radius-lg); + transition: all var(--kr-ease); + box-shadow: var(--kr-shadow-sm); +} +.kr-stats__item:hover { + border-color: var(--kr-border-default); + box-shadow: var(--kr-shadow-md), 0 0 20px rgba(201, 164, 92, 0.06); + transform: translateY(-3px); +} +.kr-stats__item:hover .kr-stats__icon { + transform: scale(1.15); +} + +.kr-stats__icon { + font-size: 1.75rem; + color: var(--kr-gold); + text-shadow: var(--kr-glow-gold-text); + line-height: 1; + flex-shrink: 0; + width: 44px; + height: 44px; + display: flex; + align-items: center; + justify-content: center; + background: rgba(201, 164, 92, 0.06); + border-radius: var(--kr-radius-md); + border: 1px solid rgba(201, 164, 92, 0.1); + transition: transform var(--kr-ease); +} +.kr-stats__item--woe .kr-stats__icon { + color: var(--kr-red); + text-shadow: 0 0 12px rgba(217, 72, 43, 0.5); + background: rgba(217, 72, 43, 0.06); + border-color: rgba(217, 72, 43, 0.15); +} + +.kr-stats__data { + display: flex; + flex-direction: column; + gap: 2px; +} + +.kr-stats__value { + font-family: var(--kr-font-heading); + font-size: 1.25rem; + font-weight: 700; + color: var(--kr-cream); + letter-spacing: 0.02em; +} + +.kr-stats__label { + font-size: 0.6875rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--kr-text-muted); +} + +/* -------------------------------------------------------------------------- + 19. WHY KUNAIRO SECTION + -------------------------------------------------------------------------- */ +.kr-section--why { + background: var(--kr-bg-body); + padding: var(--kr-space-4xl) 0; + position: relative; +} +.kr-section--why::before { + content: ''; + position: absolute; + top: 0; + left: 50%; + transform: translateX(-50%); + width: 60%; + max-width: 300px; + height: 1px; + background: linear-gradient(90deg, transparent, var(--kr-gold), transparent); + box-shadow: 0 0 20px rgba(201, 164, 92, 0.15); +} + +.kr-why__grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: var(--kr-space-xl); +} + +.kr-why__card { + text-align: center; + padding: var(--kr-space-2xl) var(--kr-space-lg); + background: var(--kr-bg-secondary); + border: 1px solid var(--kr-border-subtle); + border-radius: var(--kr-radius-lg); + transition: all var(--kr-ease); + box-shadow: var(--kr-shadow-sm); + position: relative; + overflow: hidden; +} +.kr-why__card::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 2px; + background: linear-gradient(90deg, transparent, var(--kr-gold), transparent); + opacity: 0; + transition: opacity var(--kr-ease); +} +.kr-why__card:hover { + border-color: var(--kr-border-strong); + box-shadow: var(--kr-shadow-lg), 0 0 30px rgba(201, 164, 92, 0.06), 0 0 0 1px rgba(201, 164, 92, 0.08); + transform: translateY(-6px); + background: var(--kr-bg-elevated); +} +.kr-why__card:hover::after { opacity: 1; } +.kr-why__card:hover .kr-why__icon-wrap { + transform: scale(1.1); + box-shadow: 0 0 16px rgba(201, 164, 92, 0.15); +} +.kr-why__card:hover .kr-why__icon-wrap--red { + box-shadow: 0 0 16px rgba(217, 72, 43, 0.2); +} +.kr-why__card:hover .kr-why__icon-wrap--orange { + box-shadow: 0 0 16px rgba(255, 122, 26, 0.2); +} +.kr-why__card:hover .kr-why__icon-wrap--fire { + box-shadow: 0 0 20px rgba(217, 72, 43, 0.3); +} + +.kr-why__icon-wrap { + display: inline-flex; + align-items: center; + justify-content: center; + width: 56px; + height: 56px; + transition: transform var(--kr-ease), box-shadow var(--kr-ease); + border-radius: var(--kr-radius-lg); + background: rgba(201, 164, 92, 0.08); + border: 1px solid rgba(201, 164, 92, 0.2); + margin-bottom: var(--kr-space-lg); +} +.kr-why__icon-wrap--red { + background: rgba(217, 72, 43, 0.08); + border-color: rgba(217, 72, 43, 0.25); +} +.kr-why__icon-wrap--orange { + background: rgba(255, 122, 26, 0.08); + border-color: rgba(255, 122, 26, 0.25); +} +.kr-why__icon-wrap--fire { + background: rgba(217, 72, 43, 0.1); + border-color: rgba(217, 72, 43, 0.3); + box-shadow: 0 0 15px rgba(217, 72, 43, 0.1); +} + +.kr-why__icon { + font-size: 1.5rem; + color: var(--kr-gold); + line-height: 1; +} +.kr-why__icon-wrap--red .kr-why__icon { color: var(--kr-red); } +.kr-why__icon-wrap--orange .kr-why__icon { color: var(--kr-orange); } +.kr-why__icon-wrap--fire .kr-why__icon { color: var(--kr-red-light); text-shadow: 0 0 8px rgba(217, 72, 43, 0.4); } + +.kr-why__title { + font-family: var(--kr-font-heading); + font-size: 1.0625rem; + font-weight: 700; + color: var(--kr-cream); + margin-bottom: var(--kr-space-sm); + text-transform: uppercase; + letter-spacing: 0.04em; +} + +.kr-why__desc { + font-size: 0.8125rem; + color: var(--kr-text-secondary); + line-height: 1.7; + margin: 0; +} + +/* -------------------------------------------------------------------------- + 20. FEATURED NEWS CARD + -------------------------------------------------------------------------- */ +.kr-featured { + position: relative; + background: var(--kr-bg-elevated); + border: 1px solid var(--kr-border-red); + border-radius: var(--kr-radius-lg); + overflow: hidden; + margin-bottom: var(--kr-space-xl); + box-shadow: var(--kr-shadow-lg), 0 0 30px rgba(217, 72, 43, 0.06); + transition: all var(--kr-ease); +} +.kr-featured:hover { + box-shadow: var(--kr-shadow-xl), 0 0 40px rgba(217, 72, 43, 0.1); + transform: translateY(-2px); +} + +.kr-featured__accent { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 4px; + background: linear-gradient(180deg, var(--kr-red), var(--kr-orange), var(--kr-red)); + box-shadow: 0 0 12px rgba(217, 72, 43, 0.4); +} + +.kr-featured__inner { + padding: var(--kr-space-2xl) var(--kr-space-2xl) var(--kr-space-2xl) calc(var(--kr-space-2xl) + 4px); +} + +.kr-featured__badge { + display: inline-block; + padding: 0.2rem 0.75rem; + font-family: var(--kr-font-heading); + font-size: 0.6875rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--kr-red); + background: rgba(217, 72, 43, 0.1); + border: 1px solid rgba(217, 72, 43, 0.3); + border-radius: var(--kr-radius-full); + margin-bottom: var(--kr-space-md); +} + +.kr-featured__title { + font-family: var(--kr-font-heading); + font-size: 1.5rem; + font-weight: 700; + color: var(--kr-cream); + margin: 0 0 var(--kr-space-sm); + line-height: 1.3; +} + +.kr-featured__meta { + display: block; + font-size: 0.75rem; + color: var(--kr-text-muted); + font-weight: 500; + margin-bottom: var(--kr-space-lg); +} + +.kr-featured__body { + color: var(--kr-text-secondary); + font-size: 0.9375rem; + line-height: 1.8; + margin-bottom: var(--kr-space-lg); +} + +/* -------------------------------------------------------------------------- + 21. SECTION SEPARATORS — improved + -------------------------------------------------------------------------- */ +.kr-section--news { + border-top: none; +} +.kr-section--news::before { + width: 80%; + max-width: 500px; +} + +/* -------------------------------------------------------------------------- + 22. EMPTY STATE + -------------------------------------------------------------------------- */ +.kr-empty { + text-align: center; + padding: var(--kr-space-3xl) var(--kr-space-xl); + background: var(--kr-bg-elevated); + border: 1px dashed var(--kr-border-default); + border-radius: var(--kr-radius-lg); +} +.kr-empty__icon { + display: block; + font-size: 2.5rem; + color: var(--kr-text-muted); + margin-bottom: var(--kr-space-md); + opacity: 0.5; +} +.kr-empty__text { + font-size: 0.9375rem; + color: var(--kr-text-muted); + margin: 0; + font-style: italic; +} + +/* -------------------------------------------------------------------------- + 23. FORMS — Table alignment fix + premium styling + -------------------------------------------------------------------------- */ + +/* --- Form container --- */ +body.kr-body .generic-form, +body.kr-body .generic-form-div { + max-width: 600px; +} + +/* --- Table structure --- */ +body.kr-body .generic-form-table { + width: 100% !important; + border-collapse: separate !important; + border-spacing: 0 !important; + background: var(--kr-bg-secondary) !important; + border: 1px solid var(--kr-border-subtle) !important; + border-radius: var(--kr-radius-lg) !important; + overflow: hidden; + box-shadow: var(--kr-shadow-md) !important; +} + +body.kr-body .generic-form-table tr { + display: table-row !important; +} + +/* --- Label column (th) --- */ +body.kr-body .generic-form-table th { + width: 180px !important; + min-width: 180px !important; + text-align: right !important; + vertical-align: middle !important; + background: transparent !important; + border: none !important; + border-bottom: 1px solid var(--kr-border-subtle) !important; + color: var(--kr-text-secondary) !important; + font-family: var(--kr-font-heading) !important; + font-size: 0.75rem !important; + font-weight: 600 !important; + text-transform: uppercase; + letter-spacing: 0.06em; + padding: 0.75rem 1rem 0.75rem 1.25rem !important; + white-space: nowrap; +} + +/* --- Input column (td) --- */ +body.kr-body .generic-form-table td { + width: 100% !important; + background: transparent !important; + border: none !important; + border-bottom: 1px solid var(--kr-border-subtle) !important; + padding: 0.75rem 1.25rem 0.75rem 0.75rem !important; + vertical-align: middle !important; +} + +/* Last row — no border */ +body.kr-body .generic-form-table tr:last-child th, +body.kr-body .generic-form-table tr:last-child td { + border-bottom: none !important; +} + +/* --- Force input consistency --- */ +body.kr-body .generic-form-table input[type="text"], +body.kr-body .generic-form-table input[type="password"], +body.kr-body .generic-form-table input[type="email"], +body.kr-body .generic-form-table input[type="number"], +body.kr-body .generic-form-table textarea { + width: 100% !important; + max-width: 100% !important; + box-sizing: border-box !important; + display: block !important; +} + +body.kr-body .generic-form-table select { + width: 100% !important; + max-width: 100% !important; + box-sizing: border-box !important; + display: block !important; +} + +/* --- Multi-field rows (date selects, inline fields) --- */ +body.kr-body .generic-form-table td > select + select, +body.kr-body .generic-form-table td .datefields select { + display: inline-block !important; + width: auto !important; + min-width: 70px !important; + margin-right: 4px; +} + +/* Radio buttons inline */ +body.kr-body .generic-form-table td p:has(input[type="radio"]), +body.kr-body .generic-form-table td label:has(input[type="radio"]) { + display: inline-flex; + align-items: center; + gap: 4px; + margin-right: var(--kr-space-md); +} +body.kr-body .generic-form-table input[type="radio"] { + width: auto !important; + display: inline-block !important; + accent-color: var(--kr-red); +} + +/* --- Button alignment --- */ +body.kr-body .generic-form-table td input[type="submit"], +body.kr-body .generic-form-table td button { + display: inline-block !important; + width: auto !important; + margin-top: 4px; +} + +/* --- Fix dark theme text colors (override flux.css defaults) --- */ +body.kr-body .generic-form-table td p { + color: var(--kr-text-secondary) !important; + margin: 4px 0 !important; +} +body.kr-body .generic-form-table td div { + color: var(--kr-text-secondary) !important; +} +body.kr-body #content { + color: var(--kr-text-primary) !important; +} +body.kr-body p { + color: var(--kr-text-secondary); +} +body.kr-body h2 { + color: var(--kr-cream) !important; +} +body.kr-body label { + color: var(--kr-text-secondary); +} +body.kr-body strong { + color: var(--kr-text-primary); +} +body.kr-body .action a { + color: var(--kr-gold) !important; + font-size: 0.8125rem; +} + +/* --- Security code / captcha --- */ +body.kr-body .generic-form-table .security-code { + background: var(--kr-bg-elevated); + border: 1px solid var(--kr-border-default); + border-radius: var(--kr-radius-md); + padding: var(--kr-space-sm); + display: inline-block; + margin-bottom: var(--kr-space-sm); +} +body.kr-body .generic-form-table .security-code img { + display: block; + border-radius: var(--kr-radius-sm); +} + +/* --- Search forms --- */ +body.kr-body .search-form, +body.kr-body .search-form2 { + background: var(--kr-bg-secondary); + border: 1px solid var(--kr-border-subtle); + border-radius: var(--kr-radius-lg); + padding: var(--kr-space-lg) var(--kr-space-xl); + box-shadow: var(--kr-shadow-sm); + margin-bottom: var(--kr-space-lg); +} + +body.kr-body .search-form p, +body.kr-body .search-form2 p { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); + gap: 10px; + align-items: end; + margin: 0 0 var(--kr-space-md); +} + +body.kr-body .search-form label, +body.kr-body .search-form2 label { + font-family: var(--kr-font-heading); + font-size: 0.6875rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--kr-text-secondary); + display: block; + margin-bottom: 4px; +} + +body.kr-body .search-form input[type="text"], +body.kr-body .search-form2 input[type="text"], +body.kr-body .search-form select, +body.kr-body .search-form2 select { + width: 100% !important; + box-sizing: border-box !important; +} + +body.kr-body .search-form input[type="submit"], +body.kr-body .search-form input[type="button"], +body.kr-body .search-form input[type="reset"], +body.kr-body .search-form2 input[type="submit"], +body.kr-body .search-form2 input[type="button"], +body.kr-body .search-form2 input[type="reset"] { + width: auto !important; +} + +body.kr-body .search-form input[type="checkbox"], +body.kr-body .search-form2 input[type="checkbox"] { + width: auto !important; + display: inline-block !important; + accent-color: var(--kr-red); +} + +/* Content headings for internal pages */ +body.kr-body .kr-main--with-sidebar h2 { + font-family: var(--kr-font-heading); + font-size: 1.375rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.05em; + color: var(--kr-cream); + padding-bottom: var(--kr-space-sm); + margin-bottom: var(--kr-space-lg); + border-bottom: 2px solid var(--kr-border-subtle); + position: relative; +} +body.kr-body .kr-main--with-sidebar h2::after { + content: ''; + position: absolute; + bottom: -2px; + left: 0; + width: 40px; + height: 2px; + background: linear-gradient(90deg, var(--kr-red), var(--kr-orange)); +} + +/* FluxCP legacy class overrides */ +body.kr-body .red { + color: var(--kr-red-light) !important; + background: rgba(217, 72, 43, 0.08); + padding: var(--kr-space-sm) var(--kr-space-md); + border-radius: var(--kr-radius-sm); + border-left: 3px solid var(--kr-red); +} +body.kr-body .green { + color: #5cb85c !important; + background: rgba(92, 184, 92, 0.08); + padding: var(--kr-space-sm) var(--kr-space-md); + border-radius: var(--kr-radius-sm); + border-left: 3px solid #5cb85c; +} +body.kr-body .important { + color: var(--kr-orange) !important; +} +body.kr-body .message { + background: rgba(201, 164, 92, 0.08); + border: 1px solid rgba(201, 164, 92, 0.2); + color: var(--kr-gold); + padding: var(--kr-space-md) var(--kr-space-lg); + border-radius: var(--kr-radius-md); + margin-bottom: var(--kr-space-lg); +} +body.kr-body .notice { + background: rgba(255, 122, 26, 0.06); + border: 1px solid rgba(255, 122, 26, 0.2); + color: var(--kr-orange); + padding: var(--kr-space-md) var(--kr-space-lg); + border-radius: var(--kr-radius-md); + margin-bottom: var(--kr-space-lg); +} + +/* Horizontal/vertical tables (rankings, item DB, etc.) */ +body.kr-body .horizontal-table, +body.kr-body .vertical-table { + background: var(--kr-bg-secondary) !important; + border: 1px solid var(--kr-border-subtle) !important; + border-radius: var(--kr-radius-md) !important; + overflow: hidden; + box-shadow: var(--kr-shadow-sm); +} +body.kr-body .horizontal-table th, +body.kr-body .vertical-table th { + background: var(--kr-dark-warm) !important; + color: var(--kr-gold) !important; + font-family: var(--kr-font-heading) !important; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; + font-size: 0.75rem !important; + padding: 0.75rem 1rem !important; + border-bottom: 2px solid var(--kr-border-red) !important; + border-right: none !important; +} +body.kr-body .horizontal-table td, +body.kr-body .vertical-table td { + padding: 0.625rem 1rem !important; + border-bottom: 1px solid var(--kr-border-subtle) !important; + border-right: none !important; + color: var(--kr-text-secondary) !important; +} +body.kr-body .horizontal-table tr:hover td, +body.kr-body .vertical-table tr:hover td { + background: rgba(201, 164, 92, 0.03) !important; +} + +/* -------------------------------------------------------------------------- + 24. ENHANCED INPUTS + -------------------------------------------------------------------------- */ +body.kr-body input[type="text"], +body.kr-body input[type="password"], +body.kr-body input[type="email"], +body.kr-body input[type="number"], +body.kr-body input[type="file"], +body.kr-body textarea, +body.kr-body select { + background: var(--kr-bg-elevated); + color: var(--kr-text-primary); + border: 1px solid var(--kr-border-default); + border-radius: var(--kr-radius-md); + padding: 0.625rem 0.875rem; + font-family: var(--kr-font-body); + font-size: 0.875rem; + transition: all var(--kr-ease); + outline: none; +} +body.kr-body input[type="text"]:hover, +body.kr-body input[type="password"]:hover, +body.kr-body input[type="email"]:hover, +body.kr-body select:hover, +body.kr-body textarea:hover { + border-color: var(--kr-border-strong); +} +body.kr-body input:focus, +body.kr-body textarea:focus, +body.kr-body select:focus, +body.kr-body .kr-input--focused { + border-color: var(--kr-gold) !important; + box-shadow: 0 0 0 3px rgba(201, 164, 92, 0.1), 0 0 16px rgba(201, 164, 92, 0.06) !important; + background-color: var(--kr-bg-surface) !important; + color: var(--kr-cream) !important; +} + +body.kr-body input[type="submit"], +body.kr-body input[type="button"], +body.kr-body button:not(.kr-nav-toggle):not(.kr-sidebar-toggle) { + background: linear-gradient(135deg, var(--kr-red), var(--kr-orange)); + color: var(--kr-white); + border: none; + border-radius: var(--kr-radius-md); + padding: 0.625rem 1.5rem; + font-family: var(--kr-font-heading); + font-size: 0.875rem; + font-weight: 600; + letter-spacing: 0.05em; + text-transform: uppercase; + cursor: pointer; + transition: all var(--kr-ease); + box-shadow: var(--kr-shadow-sm), inset 0 1px 0 rgba(255,255,255,0.1); + position: relative; + overflow: hidden; +} +body.kr-body input[type="submit"]:hover, +body.kr-body input[type="button"]:hover, +body.kr-body button:not(.kr-nav-toggle):not(.kr-sidebar-toggle):hover { + box-shadow: var(--kr-glow-red), var(--kr-shadow-md); + transform: translateY(-2px); + filter: brightness(1.05); +} +body.kr-body input[type="submit"]:active, +body.kr-body input[type="button"]:active, +body.kr-body button:not(.kr-nav-toggle):not(.kr-sidebar-toggle):active { + transform: translateY(0); + filter: brightness(0.95); +} + +/* -------------------------------------------------------------------------- + 25. GAMING IDENTITY DETAILS + -------------------------------------------------------------------------- */ + +/* Section divider glow lines */ +.kr-section--why::after { + content: ''; + position: absolute; + bottom: 0; + left: 50%; + transform: translateX(-50%); + width: 200px; + height: 1px; + background: linear-gradient(90deg, transparent, rgba(217, 72, 43, 0.3), transparent); +} + +/* Decorative corner accents on featured card */ +.kr-featured::before { + content: ''; + position: absolute; + top: 0; + right: 0; + width: 60px; + height: 60px; + background: linear-gradient(135deg, transparent 50%, rgba(217, 72, 43, 0.04) 50%); + pointer-events: none; +} + +/* Gaming-style glow on section headings */ +.kr-section__heading-icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + background: rgba(217, 72, 43, 0.08); + border: 1px solid rgba(217, 72, 43, 0.2); + border-radius: var(--kr-radius-sm); + margin-right: var(--kr-space-sm); + font-size: 1rem; + color: var(--kr-red); + text-shadow: 0 0 8px rgba(217, 72, 43, 0.4); + vertical-align: middle; +} + +/* Pulsing dot for stats (alive indicator) */ +.kr-stats__item--woe .kr-stats__value::before { + content: ''; + display: inline-block; + width: 8px; + height: 8px; + background: var(--kr-red); + border-radius: 50%; + margin-right: var(--kr-space-sm); + box-shadow: 0 0 8px rgba(217, 72, 43, 0.6); + animation: kr-pulse-dot 2s ease-in-out infinite; + vertical-align: middle; +} + +@keyframes kr-pulse-dot { + 0%, 100% { opacity: 1; box-shadow: 0 0 8px rgba(217, 72, 43, 0.6); } + 50% { opacity: 0.5; box-shadow: 0 0 4px rgba(217, 72, 43, 0.3); } +} + +/* Subtle glow behind why cards on hover */ +.kr-why__card::before { + content: ''; + position: absolute; + inset: -1px; + border-radius: inherit; + background: linear-gradient(135deg, rgba(201, 164, 92, 0.08), transparent, rgba(217, 72, 43, 0.06)); + opacity: 0; + transition: opacity var(--kr-ease); + z-index: -1; +} +.kr-why__card:hover::before { opacity: 1; } + +/* Internal page content links */ +body.kr-body .kr-main--with-sidebar a:not(.kr-btn):not(.kr-submenu__item):not(.kr-pagemenu__item) { + transition: color var(--kr-ease-fast), text-shadow var(--kr-ease-fast); +} +body.kr-body .kr-main--with-sidebar a:not(.kr-btn):not(.kr-submenu__item):not(.kr-pagemenu__item):hover { + text-shadow: 0 0 8px rgba(201, 164, 92, 0.2); +} + +/* Smooth page transitions */ +.kr-main--with-sidebar, +.kr-main--full { + animation: kr-fade-in 0.3s ease; +} +@keyframes kr-fade-in { + from { opacity: 0; transform: translateY(6px); } + to { opacity: 1; transform: translateY(0); } +} + +/* -------------------------------------------------------------------------- + 26. FORM CARD SYSTEM (modern account pages) + -------------------------------------------------------------------------- */ +.kr-form-card { + max-width: 560px; + margin: 0 auto; + background: var(--kr-bg-secondary); + border: 1px solid var(--kr-border-subtle); + border-radius: var(--kr-radius-xl); + overflow: hidden; + box-shadow: var(--kr-shadow-lg); + position: relative; +} +.kr-form-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 3px; + background: linear-gradient(90deg, var(--kr-red), var(--kr-orange), var(--kr-red)); +} + +.kr-form-card__header { + padding: var(--kr-space-2xl) var(--kr-space-2xl) var(--kr-space-lg); + text-align: center; + border-bottom: 1px solid var(--kr-border-subtle); + background: linear-gradient(180deg, rgba(26, 13, 18, 0.3), transparent); +} + +.kr-form-card__title { + font-family: var(--kr-font-heading); + font-size: 1.5rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--kr-cream); + margin: 0 0 var(--kr-space-sm); +} + +.kr-form-card__subtitle { + font-size: 0.8125rem; + color: var(--kr-text-secondary); + margin: 0; + line-height: 1.6; +} +.kr-form-card__subtitle a { + color: var(--kr-gold); +} + +.kr-form-card__error { + background: rgba(217, 72, 43, 0.08); + border: 1px solid rgba(217, 72, 43, 0.25); + color: var(--kr-red-light); + padding: var(--kr-space-md) var(--kr-space-2xl); + font-size: 0.875rem; + font-weight: 500; +} + +.kr-form-card__notices { + padding: var(--kr-space-md) var(--kr-space-2xl); + border-bottom: 1px solid var(--kr-border-subtle); + background: rgba(201, 164, 92, 0.02); +} + +.kr-form-notice { + font-size: 0.75rem; + color: var(--kr-text-muted); + padding: 2px 0; + padding-left: var(--kr-space-md); + position: relative; +} +.kr-form-notice::before { + content: '\2022'; + position: absolute; + left: 0; + color: var(--kr-gold); +} + +.kr-form-card__body { + padding: var(--kr-space-xl) var(--kr-space-2xl); +} + +.kr-form-card__footer { + padding: var(--kr-space-lg) var(--kr-space-2xl) var(--kr-space-2xl); + border-top: 1px solid var(--kr-border-subtle); + background: rgba(0, 0, 0, 0.15); +} + +.kr-form-card__terms { + font-size: 0.75rem; + color: var(--kr-text-muted); + margin: 0 0 var(--kr-space-md); + text-align: center; +} +.kr-form-card__terms a { + color: var(--kr-gold); +} + +/* Form group */ +.kr-form-group { + margin-bottom: var(--kr-space-lg); + flex: 1; + min-width: 0; +} +.kr-form-group:last-child { + margin-bottom: 0; +} + +.kr-form-label { + display: block; + font-family: var(--kr-font-heading); + font-size: 0.6875rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--kr-text-secondary); + margin-bottom: var(--kr-space-xs); +} + +.kr-form-input { + display: block; + width: 100%; + background: var(--kr-bg-elevated) !important; + color: var(--kr-text-primary) !important; + border: 1px solid var(--kr-border-default) !important; + border-radius: var(--kr-radius-md) !important; + padding: 0.625rem 0.875rem !important; + font-family: var(--kr-font-body) !important; + font-size: 0.875rem !important; + transition: all var(--kr-ease) !important; + outline: none !important; +} +.kr-form-input:hover { + border-color: var(--kr-border-strong) !important; +} +.kr-form-input:focus { + border-color: var(--kr-gold) !important; + box-shadow: 0 0 0 3px rgba(201, 164, 92, 0.1), 0 0 16px rgba(201, 164, 92, 0.06) !important; + background-color: var(--kr-bg-surface) !important; +} + +/* Two-column row */ +.kr-form-row { + display: flex; + gap: var(--kr-space-lg); +} + +/* Radio group */ +.kr-form-radio-group { + display: flex; + gap: var(--kr-space-md); + padding-top: var(--kr-space-xs); +} +.kr-form-radio { + display: inline-flex; + align-items: center; + gap: var(--kr-space-xs); + cursor: pointer; + font-size: 0.875rem; + color: var(--kr-text-secondary); + padding: var(--kr-space-xs) var(--kr-space-md); + border: 1px solid var(--kr-border-subtle); + border-radius: var(--kr-radius-md); + transition: all var(--kr-ease-fast); +} +.kr-form-radio:hover { + border-color: var(--kr-border-default); + background: rgba(201, 164, 92, 0.04); +} +.kr-form-radio input[type="radio"] { + accent-color: var(--kr-red); +} +.kr-form-radio input[type="radio"]:checked + span { + color: var(--kr-cream); +} + +/* Date field (inherits FluxCP dateField output) */ +.kr-form-date select { + margin-right: var(--kr-space-xs); +} + +/* Captcha */ +.kr-captcha { + display: flex; + flex-direction: column; + gap: var(--kr-space-sm); +} +.kr-captcha__image { + background: var(--kr-bg-elevated); + border: 1px solid var(--kr-border-default); + border-radius: var(--kr-radius-md); + padding: var(--kr-space-sm); + display: inline-block; +} +.kr-captcha__image img { + display: block; + border-radius: var(--kr-radius-sm); +} +.kr-captcha__refresh { + font-size: 0.75rem; + font-weight: 600; + color: var(--kr-gold) !important; +} + +/* Block button */ +.kr-btn--block { + display: block; + width: 100%; + text-align: center; +} + +/* -------------------------------------------------------------------------- + 27. UTILITIES + -------------------------------------------------------------------------- */ +.kr-text-muted { color: var(--kr-text-muted); } +.kr-text-gold { color: var(--kr-gold); } +.kr-text-red { color: var(--kr-red); } + +/* -------------------------------------------------------------------------- + 19. ANIMATIONS + -------------------------------------------------------------------------- */ +@keyframes kr-fire-flicker { + 0% { opacity: 0.7; transform: scaleY(1); } + 50% { opacity: 1; } + 100% { opacity: 0.85; transform: scaleY(1.03); } +} + +@keyframes kr-energy-pulse { + 0% { opacity: 0.3; transform: scale(1); } + 100% { opacity: 0.8; transform: scale(1.1); } +} + +@keyframes kr-smoke-drift { + 0% { opacity: 0.5; transform: translateX(-8px) translateY(0); } + 100% { opacity: 0.8; transform: translateX(8px) translateY(-4px); } +} + +@keyframes kr-sparks-float { + 0% { opacity: 0.3; transform: translateY(0) scale(1); } + 100% { opacity: 0.9; transform: translateY(-15px) scale(1.1); } +} + +@keyframes kr-title-glow { + 0% { text-shadow: 0 0 30px rgba(217, 72, 43, 0.4), 0 0 60px rgba(217, 72, 43, 0.2); } + 100% { text-shadow: 0 0 50px rgba(217, 72, 43, 0.7), 0 0 100px rgba(217, 72, 43, 0.3), 0 0 150px rgba(217, 72, 43, 0.1); } +} + +/* -------------------------------------------------------------------------- + 20. RESPONSIVE + -------------------------------------------------------------------------- */ +@media (max-width: 1024px) { + .kr-stats__grid { grid-template-columns: repeat(2, 1fr); } + .kr-why__grid { grid-template-columns: repeat(2, 1fr); } + .kr-footer__inner { grid-template-columns: 1fr 1fr; } +} + +@media (max-width: 768px) { + /* Navbar mobile */ + .kr-nav-toggle { display: flex; } + + .kr-navbar__nav { + display: none; + position: absolute; + top: 64px; + left: 0; + right: 0; + flex-direction: column; + background: rgba(7, 7, 11, 0.97); + backdrop-filter: blur(20px); + border-bottom: 1px solid var(--kr-border-subtle); + padding: var(--kr-space-md); + gap: 0; + } + .kr-navbar__nav--open { display: flex; } + .kr-navbar__link { + padding: var(--kr-space-sm) var(--kr-space-md); + font-size: 0.875rem; + border-bottom: 1px solid var(--kr-border-subtle); + } + .kr-navbar__link:last-child { border-bottom: none; } + + /* Hero */ + .kr-hero { + min-height: 480px; + } + .kr-hero__content { + padding: var(--kr-space-3xl) var(--kr-space-md) var(--kr-space-2xl); + } + .kr-hero__actions { + flex-direction: column; + align-items: center; + } + .kr-hero__actions .kr-btn { + width: 100%; + max-width: 280px; + } + + /* Stats & Why mobile */ + .kr-stats__grid { grid-template-columns: 1fr 1fr; } + .kr-why__grid { grid-template-columns: 1fr; } + .kr-why__card { text-align: left; display: flex; gap: var(--kr-space-lg); align-items: flex-start; padding: var(--kr-space-lg); } + .kr-why__icon-wrap { margin-bottom: 0; flex-shrink: 0; } + + /* Form cards mobile */ + .kr-form-row { flex-direction: column; gap: 0; } + .kr-form-card__header, + .kr-form-card__body, + .kr-form-card__footer, + .kr-form-card__notices { padding-left: var(--kr-space-lg); padding-right: var(--kr-space-lg); } + + /* Form tables — stack label above input on mobile */ + body.kr-body .generic-form-table th { + min-width: 0 !important; + width: auto !important; + display: block !important; + text-align: left !important; + padding: 0.5rem 1rem 0.2rem !important; + } + body.kr-body .generic-form-table td { + display: block !important; + padding: 0.2rem 1rem 0.75rem !important; + } + body.kr-body .generic-form { max-width: 100%; } + + /* Containers — reduce horizontal padding */ + .kr-container { padding: 0 var(--kr-space-md); } + .kr-stats { padding: var(--kr-space-xl) 0; } + .kr-section--why { padding: var(--kr-space-2xl) 0; } + .kr-section--news { padding: var(--kr-space-2xl) 0; } + + /* Sidebar mobile */ + .kr-page--internal > .kr-sidebar-toggle { display: flex; } + .kr-sidebar { + position: fixed; + top: 64px; + left: 0; + bottom: 0; + width: 280px; + background: var(--kr-bg-secondary); + border-right: 1px solid var(--kr-border-subtle); + z-index: 999; + overflow-y: auto; + transform: translateX(-100%); + transition: transform var(--kr-ease); + padding: var(--kr-space-lg); + } + .kr-sidebar--open { + transform: translateX(0); + box-shadow: var(--kr-shadow-xl); + } + + /* Internal layout */ + .kr-page--internal { + flex-direction: column; + padding: var(--kr-space-lg); + } + + /* Footer */ + .kr-footer__inner { + grid-template-columns: 1fr; + gap: var(--kr-space-xl); + padding: var(--kr-space-2xl) var(--kr-space-lg) var(--kr-space-xl); + } + .kr-footer__bottom-inner { + flex-direction: column; + text-align: center; + } + + /* Userbar */ + .kr-userbar__inner { + flex-direction: column; + align-items: flex-start; + } +} + +@media (max-width: 480px) { + .kr-navbar { height: 56px; } + .kr-navbar__nav { top: 56px; } + .kr-sidebar { top: 56px; } + .kr-navbar__brand { font-size: 1.25rem; } + + .kr-hero { min-height: 400px; } + .kr-hero__title { font-size: clamp(2.5rem, 12vw, 3.5rem); } + .kr-hero__tagline { letter-spacing: 0.12em; } + + .kr-badge { font-size: 0.6875rem; padding: 0.2rem 0.75rem; } + .kr-btn--lg { padding: 0.625rem 1.5rem; font-size: 0.875rem; } + .kr-btn--xl { padding: 0.75rem 1.75rem; font-size: 0.9375rem; } + + .kr-stats__grid { grid-template-columns: 1fr; } + .kr-stats__item { padding: var(--kr-space-md) var(--kr-space-lg); } + + .kr-featured__inner { padding: var(--kr-space-md) var(--kr-space-md) var(--kr-space-md) calc(var(--kr-space-md) + 4px); } + .kr-featured__title { font-size: 1.125rem; } + + /* Kill any remaining overflow sources */ + .kr-container { padding: 0 var(--kr-space-sm); } + .kr-hero__content { padding: var(--kr-space-2xl) var(--kr-space-sm) var(--kr-space-xl); } + .kr-hero__actions .kr-btn { max-width: 100%; } + .kr-footer__inner { padding: var(--kr-space-xl) var(--kr-space-md) var(--kr-space-md); } + .kr-page--internal { padding: var(--kr-space-md); } + .kr-navbar { padding: 0 var(--kr-space-sm); } + .kr-navbar__inner { padding: 0 var(--kr-space-sm); } +} diff --git a/themes/kunairo/docs/download-page-content.html b/themes/kunairo/docs/download-page-content.html new file mode 100644 index 000000000..7b0de376f --- /dev/null +++ b/themes/kunairo/docs/download-page-content.html @@ -0,0 +1,73 @@ + + ++Todo lo que necesitas para unirte a KunaiRO. Descarga el cliente completo e instala el launcher para mantener tu juego actualizado. +
+ + +Incluye kRO + archivos base del servidor. Requerido para jugar.
++ Tamaño: ~2.5 GB · + Formato: ZIP +
+Actualizador automático. Colócalo en la carpeta del cliente.
++ Tamaño: ~75 MB · + Formato: EXE (Portable) +
+| Sistema Operativo | Windows 7 / 8 / 10 / 11 |
| Procesador | Pentium 4 o superior |
| Memoria RAM | 512 MB mínimo |
| Espacio en disco | 4 GB disponibles |
| Conexión | Internet (para actualizaciones) |
+Al jugar en KunaiRO aceptas cumplir con las siguientes reglas. El incumplimiento puede resultar en sanciones temporales o permanentes. +
++El equipo de administración se reserva el derecho de modificar estas reglas en cualquier momento. +
+ + +| Falta de respeto / spam | +Mute 1-24h | +
| Acoso / discriminación | +Ban 3-7 días | +
| Multiclient en WoE | +Ban 7 días + pérdida de castillo | +
| Bug abuse | +Ban permanente | +
| Bots / hacks / cheats | +Ban permanente | +
| RMT / venta de cuentas | +Ban permanente (todas las cuentas) | +
+ ¿Tienes dudas sobre las reglas? Contáctanos en Discord o abre un ticket de soporte en el panel. +
+Tu transacción ha sido procesada y deberías recibir tus créditos en breve.
+ + ++ Nota: Existe un sistema de retención de cuentas activo. Si es tu primera vez donando con la cuenta + y email de PayPal seleccionados, no recibirás tus créditos por horas. +
+ +Además, se te ha enviado un email con los detalles de tu transacción.
+También puedes revisar el historial desde tu cuenta de PayPal.
+ +¡Gracias por tu generosa donación!
+— loginAthenaGroup->serverName) ?>
diff --git a/themes/kunairo/donate/history.php b/themes/kunairo/donate/history.php new file mode 100644 index 000000000..a3d7388ff --- /dev/null +++ b/themes/kunairo/donate/history.php @@ -0,0 +1,88 @@ + +Tienes transacción(es) completada(s).
+| Transacción | +Fecha de pago | +Monto | +Moneda | +Créditos | +|
|---|---|---|---|---|---|
| txn_id) ?> | +formatDateTime($txn->payment_date) ?> | +payer_email) ?> | +mc_gross) ?> | +mc_currency) ?> | +credits) ?> | +
No tienes transacciones completadas.
+ + +Tienes transacción(es) retenida(s).
+| Transacción | +Fecha de pago | +Monto | +Moneda | +Créditos | +|
|---|---|---|---|---|---|
| txn_id) ?> | +formatDateTime($txn->payment_date) ?> | +payer_email) ?> | +mc_gross) ?> | +mc_currency) ?> | +credits) ?> | +
| + ↳ Retenida hasta: + formatDateTime($txn->hold_until) ?> + | +|||||
No tienes transacciones retenidas.
+ + +Tienes transacción(es) fallida(s).
+| Transacción | +Fecha de pago | +Monto | +Moneda | +Créditos | +|
|---|---|---|---|---|---|
| txn_id) ?> | +formatDateTime($txn->payment_date) ?> | +payer_email) ?> | +mc_gross) ?> | +mc_currency) ?> | +credits) ?> | +
No tienes transacciones fallidas.
+ diff --git a/themes/kunairo/donate/index.php b/themes/kunairo/donate/index.php new file mode 100644 index 000000000..35b18ed6f --- /dev/null +++ b/themes/kunairo/donate/index.php @@ -0,0 +1,91 @@ + +Al donar, estás apoyando los costos de mantener este servidor y operarlo. A cambio, recibirás créditos de donación que puedes usar para comprar items en nuestra tienda.
+Todas las donaciones se reciben a través de PayPal. Si no tienes cuenta de PayPal, puedes usar tu tarjeta de crédito igualmente.
+ + + + +Para prevenir pagos fraudulentos, el servidor retiene los créditos por + horas + después de la donación.
+Esta retención se aplica solo una vez por email de PayPal y cuenta RO.
+ + +| + | formatCurrency($dollarAmount) ?> + = crédito(s). |
+
|---|---|
| + | formatCurrency(Flux::config('MinDonationAmount')) ?> |
+
Cuando estés listo para donar, haz click en el botón "Donar" para proceder con tu transacción. + (Puedes donar desde tu saldo de PayPal o usar tu tarjeta de crédito).
+ ++ — + créditos + — +
+ +Monto: + + formatCurrency($donationAmount) ?> + + +
+ +donateButton($donationAmount) ?>
+ + + + diff --git a/themes/kunairo/donate/trusted.php b/themes/kunairo/donate/trusted.php new file mode 100644 index 000000000..6925ba8f0 --- /dev/null +++ b/themes/kunairo/donate/trusted.php @@ -0,0 +1,23 @@ + +A continuación se muestra la lista de tus emails de PayPal confiables.
+Los emails confiables no pasan por el proceso de retención, por lo que las donaciones realizadas desde ellos te otorgan créditos instantáneamente.
+| Fecha de registro | +|
|---|---|
| email) ?> | +formatDateTime($email->create_date) ?> | +
No tienes emails de PayPal confiables registrados.
+ +Esto se debe a que el sistema de retención de créditos no está activo, lo que significa que las donaciones desde cualquier email se acreditan inmediatamente.
+ + diff --git a/themes/kunairo/footer.php b/themes/kunairo/footer.php new file mode 100644 index 000000000..d6d948c90 --- /dev/null +++ b/themes/kunairo/footer.php @@ -0,0 +1,89 @@ + + + + + + + +