ui <- function() { bslib::page( fillable = FALSE, theme = bslib::bs_theme(version = 5, primary = "#f59e0b"), lang = "de", title = "Beekeeper", shiny::tags$style(shiny::HTML(" body { background: #fafaf9; } .bk-header { background: #78350f; color: white; position: sticky; top: 0; z-index: 100; padding: .75rem 1rem; box-shadow: 0 2px 8px rgba(0,0,0,.3); min-height: 56px; } .bk-header h5 { color: white; margin: 0; font-size: 1.05rem; font-weight: 600; } .bk-header h4 { color: white; margin: 0; font-size: 1.2rem; font-weight: 700; letter-spacing: -.01em; } .bk-header .btn-link { color: rgba(255,255,255,.9) !important; text-decoration: none; } .bk-header-icon { padding: .35rem .45rem; border-radius: .4rem; line-height: 1; flex-shrink: 0; } .bk-header-icon:hover { background: rgba(255,255,255,.18) !important; color: white !important; } .collapse-toggle { cursor: pointer; user-select: none; } .collapse-toggle .collapse-chevron { transition: transform .2s ease; } .collapse-toggle:not(.collapsed) .collapse-chevron { transform: rotate(180deg); } .bk-content { max-width: 680px; margin: 0 auto; padding: 1rem 1rem 4rem; } .tap-card { cursor: pointer; transition: box-shadow .15s; } .tap-card:hover { box-shadow: 0 0 0 3px #f59e0b44; } .tap-card:active { box-shadow: 0 0 0 3px #f59e0b; } .action-btn { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 80px; gap: .35rem; font-size: .82rem; font-weight: 600; border-radius: 12px; } .action-btn .fa, .action-btn .fas, .action-btn .far { font-size: 1.4rem; } .stepper-val { min-width: 2.8rem; display: inline-block; text-align: center; font-size: 1.3rem; font-weight: 700; } .bk-check .form-check { margin: 0; } .bk-check .form-check-input { width: 3em; height: 1.5em; margin-top: 0; cursor: pointer; } .add-dashed { border: 2px dashed #ccc; background: transparent; border-radius: 8px; cursor: pointer; width: 100%; min-height: 100px; color: #888; display: flex; align-items: center; justify-content: center; gap: .5rem; flex-direction: column; font-weight: 600; } .add-dashed:hover { border-color: #f59e0b; color: #f59e0b; background: #fffbeb; } .leaflet-container { border-radius: 8px; } .leaflet-top, .leaflet-bottom { z-index: 50 !important; } #ss-connect-dialog, .shiny-disconnected-overlay { display: none !important; } ")), shiny::tags$script(shiny::HTML(" $(document).on('shown.bs.modal', function() { setTimeout(function() { window.dispatchEvent(new Event('resize')); }, 150); }); history.pushState({bk: true}, ''); window.addEventListener('popstate', function() { history.pushState({bk: true}, ''); if (window.Shiny) Shiny.setInputValue('nav_back', Date.now(), {priority: 'event'}); }); setInterval(function() { if (window.Shiny && Shiny.shinyapp && Shiny.shinyapp.isConnected()) Shiny.setInputValue('keepalive_ping', Date.now()); }, 25000); ")), shiny::uiOutput("nav_header"), shiny::div(class = "bk-content", shiny::uiOutput("screen_content") ) ) }