Skip to content

Theme/kunairo#419

Open
mangucoin wants to merge 46 commits intorathena:masterfrom
mangucoin:theme/kunairo
Open

Theme/kunairo#419
mangucoin wants to merge 46 commits intorathena:masterfrom
mangucoin:theme/kunairo

Conversation

@mangucoin
Copy link
Copy Markdown

Fixes # .

Changes proposed in this Pull Request:

  • ?
  • ?
  • ?

bogeyrd and others added 30 commits March 25, 2026 15:48
- Create kunairo theme with inheritance from default via manifest.php
- Add .gitignore exception for themes/kunairo
- Register kunairo as primary theme in config/application.php
- Rewrite header.php with modern markup (navbar, sidebar, flexbox layout)
- Rewrite footer.php with premium footer (glow, branding, selectors)
- Create hero section in main/index.php with animated CSS background
- Build complete visual system in kunairo.css (~700 lines):
  - CSS custom properties (palette, tokens, spacing, typography)
  - Navbar, sidebar, buttons, badges, cards, alerts, tables
  - Hero with 5 animated background layers (energy, smoke, embers)
  - Responsive breakpoints (1024, 768, 480px)
- Add 14 translation keys to en_us.php and es_es.php
- Include preview.html for standalone visual testing
- Default theme remains completely untouched

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace sidebar with horizontal navbar navigation on homepage
- Conditional layout: full-width homepage vs sidebar on internal pages
- Hero v2: 8-layer animated background (fire, smoke, sparks, scanlines)
- Animated title glow, stronger contrast, bottom fade transition
- News section with differentiated background and depth
- Cards with accent bars, featured variant, hover animations
- Footer redesigned as 4-column grid with gradient border
- Responsive: collapsible mobile nav with hamburger animation
- Internal pages retain sidebar with modern styling
- All navigation uses Flux::message() translation keys

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…d btn

- Add stats bar: players, WoE status, uptime, rates (4 horizontal cards)
- Add "Why KunaiRO" section: 4-column grid with icons (balanced, no-P2W,
  economy, competition)
- Featured news: first news item rendered larger with accent bar, badge,
  and CTA button; remaining news in secondary grid
- Discord button: purple branded style with SVG icon
- Navbar hover: bottom red indicator line on hover, gold on active
- Add 17 new translation keys to en_us.php and es_es.php
- Responsive: stats stack 2→1 cols, why cards go horizontal on mobile
- Default theme untouched

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Guard $server->serverName with isset() check (could be false/null)
- Fix wrong language keys: LogoutLabel→LogoutTitle, AccountLoginLabel→LoginTitle,
  CreateAccountLabel→AccountCreateHeading (these keys don't exist in FluxCP)
- Simplify $isHomepage detection to avoid in_array with null
- Remove redundant $isHomepage check inside else branch
- All 13 Flux::message() keys in header/footer verified to exist in en_us.php

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… footer

- Hero: add grain texture overlay (SVG noise), stronger fire gradients,
  wider ambient energy glow, deeper vignette with top darkening
- Stats bar: icons in styled containers with background/border, scale
  animation on hover, top separator glow line, more padding
- Why KunaiRO cards: premium hover with glow per icon color, scale(1.1)
  on icon, background elevation change, stronger border on hover
- Footer: thicker gradient border (3px) with glow shadow, stronger
  radial background, added border-top for separation
- News empty state: elegant placeholder with icon + italic text instead
  of raw technical message; new key KunaiRONewsEmpty
- Default theme untouched

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Sidebar: sticky positioning, custom scrollbar, gradient heading with
  red accent line, hover indent animation, section border hover
- Forms: generic-form-table styled as premium card with shadow, uppercase
  labels, full-width inputs, proper spacing per row
- Inputs: hover border change, enhanced focus glow (3px ring + 16px
  ambient), rounded radius-md, smooth transitions
- Buttons: inset highlight, active press state, brightness filter on hover
- Tables: horizontal-table/vertical-table overrides matching theme
- Legacy classes: .red, .green, .message, .notice, .important styled
- Content headings: red/orange gradient underline accent
- Gaming identity: section heading icons in styled containers, pulsing
  red dot on WoE stat, corner accent on featured card, glow behind
  why-cards on hover, link hover glow, page fade-in animation
- Section dividers: bottom glow on why section
- Removed duplicate form styles (consolidated into sections 23-25)
- Default theme untouched

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Create kunairo/account/login.php: div-based form card with header,
  body (stacked form-groups), and footer with full-width submit button
- Create kunairo/account/create.php: div-based form card with notices
  section (bulleted), two-column rows for password/email/gender/birthdate,
  radio buttons styled as selectable pills, captcha support
- Add kr-form-card CSS system: card container with top gradient accent,
  warm header background, structured body/footer, error state
- Add kr-form-group, kr-form-label, kr-form-input, kr-form-row,
  kr-form-radio, kr-form-date, kr-captcha, kr-btn--block components
- Responsive: form rows stack vertically on mobile, padding reduces
- All form names, IDs, and POST values preserved for FluxCP compatibility
- All text uses Flux::message() translation keys
- Default theme untouched — views override via theme inheritance

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- generic-form-table: fixed width th (180px right-aligned), full-width
  td, border-collapse separate, consistent row padding
- Force all text/password/email inputs and selects to width:100% +
  box-sizing:border-box inside form tables
- Multi-field rows: date selects and inline selects revert to
  inline-block + width:auto to prevent breaking side-by-side layout
- Radio buttons: inline-flex alignment with accent-color
- Submit buttons: inline-block + width:auto, no full-stretch
- Captcha: styled container with dark background and border
- Search forms: card container with grid layout for fields,
  auto-fit columns minmax(160px, 1fr), labels styled uppercase
- Default theme untouched, no PHP changes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…alignment

- Replace custom kr-form-card markup with standard table.generic-form-table
  structure in both login.php and create.php
- Now matches the same layout pattern used by resetpass, resend, and all
  other FluxCP account pages: th label left, td input right, uniform rows
- CSS section 23 already styles generic-form-table correctly — no CSS changes
- All form names, IDs, POST actions, captcha logic, and validation preserved
- Flux::message() used for all visible text
- Default theme untouched

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Problem 1 — White background/border on forms:
- Override .generic-form and .generic-form-div to transparent bg, no
  border, no shadow (flux.css sets #fff bg and #ddd border)

Problem 2 — Black/dark text illegible on dark theme:
- Override .generic-form-table td p { color: #000 } from flux.css
- Override #content { color: #555 } from flux.css
- Force p, h2, label, strong to use KunaiRO cream/secondary colors

Problem 3 — SubMenu tabs hardcoded in English:
- Add 12 submenu translation keys to en_us.php and es_es.php
  (KunaiROSubLogin, KunaiROSubRegister, KunaiROSubResetPass, etc.)
- Add translation map in kunairo header.php that maps English config
  strings to Flux::message() keys with trim() fallback
- Config/application.php untouched — default theme unaffected

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…nd black text

- Add !important to ALL input/select/textarea styles in section 24
  (background, color, border, border-radius, padding, font)
- Duplicate dark theme styles inside generic-form-table input overrides
  to guarantee specificity over flux.css defaults
- Override [bgcolor] attribute globally to prevent HTML attribute leaks
- Override #content background to transparent
- Add h2 letter-spacing reset (flux.css sets -1px)
- Add label:hover color brightening
- Add third-column text styling for resetpass/resend description fields
- Force !important on submit button bg, color, border

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…e bust

- Add inline <style> block in header.php after kunairo.css to guarantee
  .generic-form bg:transparent and input dark styles override flux.css
- Add cache-bust query param (?v=timestamp) to kunairo.css link to
  prevent browser/CDN cache from serving stale CSS
- This ensures the white background/border from flux.css .generic-form
  is killed regardless of specificity or cache state

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ource

Instead of fighting specificity with !important overrides, copy flux.css
into themes/kunairo/css/ and fix the problems at the source:

- .generic-form: background-color #fff -> transparent, border #ddd -> none
- .generic-form-div: same fix
- .generic-form-table td p: color #000 -> inherit

FluxCP theme inheritance loads kunairo/css/flux.css instead of
default/css/flux.css, so these fixes apply cleanly with zero
specificity issues. Removed redundant !important overrides from
kunairo.css. Default theme untouched.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…fixed

Comprehensive rewrite of kunairo/css/flux.css replacing every light-theme
color with KunaiRO dark palette values:

- ALL white backgrounds (#fff, #eee, #F0FFFF, #FFF8DC, #F8F8FF, #f1ffff)
  converted to dark equivalents (#07070B, #0F1118, #151822, #1A0D12)
- ALL black/dark text (#000, rathena#222, rathena#333, #444, #555) converted to cream
  (#EDE6D6) or secondary (rgba(237,230,214,0.65))
- ALL light borders (#ddd, #eee, #ccc) converted to rgba(201,164,92,0.1)
- Accent colors: gold (#C9A45C), red (#D9482B), orange (#FF7A1A)
- Fixed: .generic-form, .horizontal-table, .vertical-table, #server_status,
  .woe-table, .shop-table, .credit-balance, .top-ranked, .item-drop-mvp,
  .item-drop-card, .equipped, .character-stats, .search-form, #sidebar,
  #content, #loginbox, .message, .notice, .red, .green, .note, .sortable,
  .pages, .important, .online/.offline, and 40+ more selectors
- Added missing classes: .newsDiv, .newsCont, .newsDate, .news_link,
  .clear, .refineable, .for-sale, .identified, .broken, .item_name
- Added dark theme select element styling
- Default theme completely untouched

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Root causes found and fixed:
- html/body: added overflow-x:hidden and width:100%
- .generic-form-table th: min-width:180px forced label column too wide
  on mobile — now stacks label above input (display:block) at 768px
- textarea: fixed width:320px in flux.css → width:100% max-width:320px
- .kr-container: padding reduced to space-md at 768px, space-sm at 480px
- .kr-hero__content: padding reduced at 480px
- .kr-navbar__inner: padding reduced at 480px
- .kr-footer__inner: padding reduced at 480px
- .kr-page--internal: padding reduced at 480px
- .kr-featured__inner: padding reduced at 480px
- .kr-hero__actions .kr-btn: max-width:100% at 480px
- Added section padding reductions for stats/why/news at 768px
- Default theme untouched

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Updated in en_us.php, es_es.php (badge + stats keys) and preview.html.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Renewal was set to true, causing FluxCP to look for item_db_re and
  mob_db_re tables (which are empty/missing for Pre-Renewal servers)
- Changed to Renewal => false so it uses item_db and mob_db instead
- Updated ExpRates Base/Job/Mvp from 100 to 250 to match server config
- This fixes empty item/monster database pages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add overflow-x:auto to kr-main containers so wide tables (item_db,
  mob_db) scroll horizontally instead of breaking the page layout
- Add min-width:600px to tables to prevent column crushing
- Compact table headers: smaller font, less padding, nowrap
- Compact table cells: smaller font, tighter padding
- Default theme untouched

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Instead of horizontal scroll (ugly), created kunairo overrides for
item and monster views with fewer columns:

Items (was 16 cols → now 9):
  Kept: ID, Icon, Name, Type, Buy, Weight, ATK, DEF, Slots
  Removed: SubType, EquipLoc, NPC Sell, Range, Refineable, ForSale, Custom

Monsters (was 11 cols → now 9):
  Kept: ID, Name, Level, HP, Size, Race, Element, BaseEXP, JobEXP
  Removed: kRO Name (duplicate of iRO), Custom

Also reverted the overflow-x:auto scroll approach from previous commit.
Simplified search forms. Default theme untouched.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add logo-hero.png and favicon.png to themes/kunairo/img/
- Replace favicon.ico with KunaiRO branded icon
- Navbar: text logo replaced with logo image (40px height, glow)
- Hero: text title + tagline + divider replaced with logo image
  (480px max, animated glow)
- Footer: text logo replaced with logo image (60px height)
- Added CSS for kr-navbar__logo-img, kr-hero__logo-img,
  kr-footer__logo-img with drop-shadow and animations
- PNG favicon added as primary, ICO as fallback
- Default theme untouched

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Navbar: reverted to text 'KunaiRO' (image was too large/breaking layout)
- Hero logo: reduced to 380px max-width, 70% width, centered with display:block
- Footer logo: reduced to 50px height
- Removed unused kr-navbar__logo-img CSS

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Changed decorative glow lines from fixed px to percentage widths:
- 600px → 80% max-width:600px
- 500px → 80% max-width:500px
- 400px → 80% max-width:400px
- 300px → 60% max-width:300px

These absolute-positioned pseudo-elements were causing horizontal
scroll on mobile viewports smaller than their fixed width.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
bogeyrd and others added 16 commits March 25, 2026 22:54
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- themes/kunairo/service/tos.php: full Terms of Service with 8 sections
  (acceptance, accounts, conduct, virtual property, sanctions,
  availability, donations, privacy) styled with KunaiRO palette
- docs/download-page-content.html: CMS paste-ready download page
  with client + launcher cards, install instructions, system requirements
- docs/rules-page-content.html: CMS paste-ready rules page with
  6 sections + sanctions table

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- DefaultLanguage: en_us → es_es
- Language selector hidden when only 1 language available
- System still uses Flux::message() — add more langs to re-enable

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- kunairo/purchase/index.php: full Spanish translation of item shop
- kunairo/donate/index.php: full Spanish translation of donate page
- Added 8 submenu translation keys for purchase/donate tabs
  (Shop, Go to Cart, Checkout, Empty Cart, Pending Redemption,
  Make a Donation, Donation History, Trusted PayPal E-mails)
- Updated header.php submenu map with new keys
- Default theme untouched

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Purchase module (5 files):
- index.php: shop listing, cart info, add to cart, no items message
- cart.php: view cart, quantities, remove/add items, empty cart
- checkout.php: purchase info, remaining balance, confirm button
- pending.php: pending redemption table headers and messages
- (add.php, clear.php, remove.php are stubs — inherited from default)

Donate module (4 files):
- index.php: donate info, exchange rate, amount form, confirm
- complete.php: donation success message, hold notice, thank you
- history.php: completed/held/failed transaction tables
- trusted.php: trusted PayPal emails list

All hardcoded English text replaced with Spanish equivalents.
Default theme completely untouched.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- balance.php: 'Donation Credits' → 'Créditos de donación'
- WoE days: Sunday-Saturday → Flux::message() keys in both modules
- WoE template: PHP date 'l' format translated via day map
- purchase/cart.php: all messages translated
- purchase/clear.php: all messages translated
- purchase/remove.php: all messages translated
- purchase/checkout.php: all messages + title translated
- Added 7 day name keys to en_us.php and es_es.php
- All translations use Flux::message() — zero hardcoded text

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Stats bar now shows real data from FluxCP:
- Players online: SQL query to char table (COUNT WHERE online > 0)
- WoE status: real check via $athena->isWoe() (Active/Inactive)
- Server time: real server time via $server->getServerTime()
  with translated day name via Flux::message()
- WoE schedule: reads woeDayTimes from servers.php config,
  displays translated day names + times below stats grid
- Removed fake "99.9% uptime" stat — replaced with server time
- Added 5 new lang keys (ServerTime, WoEInactive, WoESchedule,
  Online, Offline) to en_us.php and es_es.php
- Zero hardcoded text — all via Flux::message()

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Players online: real SQL count from char table
- WoE status: real check via isWoe() — Active/Inactive
- Server status: real login server check — Online/Offline
- Rates: from Flux::message() (already correct)
- All text via Flux::message(), zero hardcoded strings
- Simple implementation, no layout changes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Lost during revert — re-added to both en_us.php and es_es.php.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Elegant horizontal strip showing server clock + day + date
- WoE schedule pills read from servers.php config with translated days
- Separator line between time and WoE schedule
- Responsive: stacks vertically on mobile
- All text via Flux::message(), zero hardcoded strings

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Merged server info strip + stats bar into one premium 6-card grid:
1. Players online (real SQL count)
2. Server time (real, JS ticking clock)
3. Server status (real login server check)
4. WoE status (real isWoe() — glow pulse when active)
5. WoE schedule (from servers.php config, translated days)
6. Rates (from lang system)

- Removed separate server info strip (no more loose text)
- Added WoE active state with red glow animation
- Added JS clock that ticks every second from server time
- Grid: 3 cols desktop, 2 cols tablet, responsive
- Added 4 new lang keys (ServerTimeLabel, ServerStatus,
  WoEScheduleLabel, WoENow)
- Zero hardcoded text

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Reorganized stats to balanced 3x2 grid:
Row 1: Players | Server Status | Server Time (JS clock)
Row 2: WoE Status (glow if active) | WoE Schedule (day+time rows) | Rates

- WoE schedule card shows each day on its own line with time range
- WoE active card has red glow pulse + icon scale animation
- Removed old --6 grid and server-strip CSS
- Grid: 3 cols desktop, 2 cols tablet/mobile
- Zero hardcoded text, all via Flux::message()

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants