diff --git a/src/systems/features/plotProgression.js b/src/systems/features/plotProgression.js index 2c49dc2..0fbf158 100644 --- a/src/systems/features/plotProgression.js +++ b/src/systems/features/plotProgression.js @@ -33,10 +33,9 @@ export function setupPlotButtons(handlePlotClick, handleEncounterClick) { border-radius: 4px; font-size: 13px; cursor: pointer; - margin: 0 4px; - display: inline-block; + margin: 0 2px; " tabindex="0" role="button"> - Randomized Plot + Randomized Plot `; diff --git a/src/systems/ui/layout.js b/src/systems/ui/layout.js index 91b1624..b19d3de 100644 --- a/src/systems/ui/layout.js +++ b/src/systems/ui/layout.js @@ -232,35 +232,76 @@ export function updatePanelVisibility() { */ export function updateSectionVisibility() { // Show/hide sections based on settings - $userStatsContainer.toggle(extensionSettings.showUserStats); - $infoBoxContainer.toggle(extensionSettings.showInfoBox); - $thoughtsContainer.toggle(extensionSettings.showCharacterThoughts); - if ($inventoryContainer) { - $inventoryContainer.toggle(extensionSettings.showInventory); + // Use explicit .show()/.hide() instead of .toggle() to ensure proper state on reload + if (extensionSettings.showUserStats) { + $userStatsContainer.show(); + } else { + $userStatsContainer.hide(); } + + if (extensionSettings.showInfoBox) { + $infoBoxContainer.show(); + } else { + $infoBoxContainer.hide(); + } + + if (extensionSettings.showCharacterThoughts) { + $thoughtsContainer.show(); + } else { + $thoughtsContainer.hide(); + } + + if ($inventoryContainer) { + if (extensionSettings.showInventory) { + $inventoryContainer.show(); + } else { + $inventoryContainer.hide(); + } + } + if ($questsContainer) { - $questsContainer.toggle(extensionSettings.showQuests); + if (extensionSettings.showQuests) { + $questsContainer.show(); + } else { + $questsContainer.hide(); + } } // Show/hide dividers intelligently // Divider after User Stats: shown if User Stats is visible AND at least one section after it is visible const showDividerAfterStats = extensionSettings.showUserStats && (extensionSettings.showInfoBox || extensionSettings.showCharacterThoughts || extensionSettings.showInventory || extensionSettings.showQuests); - $('#rpg-divider-stats').toggle(showDividerAfterStats); + if (showDividerAfterStats) { + $('#rpg-divider-stats').show(); + } else { + $('#rpg-divider-stats').hide(); + } // Divider after Info Box: shown if Info Box is visible AND at least one section after it is visible const showDividerAfterInfo = extensionSettings.showInfoBox && (extensionSettings.showCharacterThoughts || extensionSettings.showInventory || extensionSettings.showQuests); - $('#rpg-divider-info').toggle(showDividerAfterInfo); + if (showDividerAfterInfo) { + $('#rpg-divider-info').show(); + } else { + $('#rpg-divider-info').hide(); + } // Divider after Thoughts: shown if Thoughts is visible AND at least one section after it is visible const showDividerAfterThoughts = extensionSettings.showCharacterThoughts && (extensionSettings.showInventory || extensionSettings.showQuests); - $('#rpg-divider-thoughts').toggle(showDividerAfterThoughts); + if (showDividerAfterThoughts) { + $('#rpg-divider-thoughts').show(); + } else { + $('#rpg-divider-thoughts').hide(); + } // Divider after Inventory: shown if Inventory is visible AND Quests is visible const showDividerAfterInventory = extensionSettings.showInventory && extensionSettings.showQuests; - $('#rpg-divider-inventory').toggle(showDividerAfterInventory); + if (showDividerAfterInventory) { + $('#rpg-divider-inventory').show(); + } else { + $('#rpg-divider-inventory').hide(); + } } /** diff --git a/style.css b/style.css index 738ca5a..315dc74 100644 --- a/style.css +++ b/style.css @@ -8164,3 +8164,107 @@ body:has(.rpg-panel.rpg-position-left) #sheld { .rpg-encounter-status:hover { transform: scale(1.2); } + +/* ============================================ + PLOT BUTTONS - RESPONSIVE LAYOUT + ============================================ */ + +/* Base styles for plot buttons container */ +#rpg-plot-buttons { + display: flex !important; + flex-wrap: wrap; + justify-content: center; + gap: 4px; + align-items: center; +} + +/* Base button styles - ensure consistent sizing */ +#rpg-plot-random, +#rpg-plot-natural, +#rpg-encounter-button { + flex: 0 1 auto; + white-space: nowrap; + min-width: 0; +} + +/* Tablet and smaller screens - adjust button sizing */ +@media (max-width: 768px) { + #rpg-plot-buttons { + gap: 3px; + } + + #rpg-plot-random, + #rpg-plot-natural, + #rpg-encounter-button { + padding: 6px 10px !important; + font-size: 12px !important; + } +} + +/* Small mobile screens - more compact buttons */ +@media (max-width: 600px) { + #rpg-plot-buttons { + gap: 2px; + } + + #rpg-plot-random, + #rpg-plot-natural, + #rpg-encounter-button { + padding: 5px 8px !important; + font-size: 11px !important; + } +} + +/* Very small screens - stack buttons vertically or use icons only */ +@media (max-width: 480px) { + #rpg-plot-buttons { + gap: 4px; + } + + /* Option 1: Stack vertically (uncomment if preferred) + #rpg-plot-buttons { + flex-direction: column; + width: 100%; + } + + #rpg-plot-random, + #rpg-plot-natural, + #rpg-encounter-button { + width: 100%; + padding: 8px !important; + font-size: 13px !important; + } + */ + + /* Option 2: Keep horizontal but more compact (default) */ + #rpg-plot-random, + #rpg-plot-natural, + #rpg-encounter-button { + padding: 6px 8px !important; + font-size: 11px !important; + } +} + +/* Extra small screens - icon-only mode */ +@media (max-width: 400px) { + #rpg-plot-random, + #rpg-plot-natural, + #rpg-encounter-button { + padding: 6px !important; + } + + /* Hide button text, keep icons */ + #rpg-plot-random .rpg-btn-text, + #rpg-plot-natural .rpg-btn-text, + #rpg-encounter-button .rpg-btn-text { + display: none; + } + + /* Ensure icons are visible */ + #rpg-plot-random i, + #rpg-plot-natural i, + #rpg-encounter-button i { + margin: 0 !important; + font-size: 14px; + } +}