/* Miami University Theme CSS */ /* Color Palette: Primary Red: #C41230 Light Tan: #EDECE2 Medium Tan: #CCC9B8 Corn Yellow (tertiary): #EFDB72 White: #FFFFFF Black: #000000 */ :root { --miami-red: #C41230; --miami-light-tan: #EDECE2; --miami-medium-tan: #CCC9B8; --miami-yellow: #EFDB72; --miami-white: #FFFFFF; --miami-black: #000000; --miami-dark-red: #9E0F28; } /* Body and base styling */ body { background-color: var(--miami-light-tan); font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; color: var(--miami-black); } /* Header styling */ .app-header { background: linear-gradient(135deg, var(--miami-red) 0%, var(--miami-dark-red) 100%); color: var(--miami-white); padding: 20px 30px; margin: -15px -15px 20px -15px; border-radius: 0; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); } .app-header h1 { margin: 0 0 5px 0; font-size: 1.8em; font-weight: 600; letter-spacing: 0.5px; } .app-header .subtitle { font-size: 0.9em; opacity: 0.9; margin: 0; } .header-content { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 20px; } .header-left { flex: 1; min-width: 300px; } .header-right { text-align: right; } .header-right p { margin: 3px 0; font-size: 0.85em; } /* Logo container styling */ .logo-container { display: flex; align-items: center; gap: 20px; background-color: var(--miami-white); padding: 15px 20px; border-radius: 8px; margin-bottom: 20px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); } .logo-container img { height: 50px; width: auto; object-fit: contain; } .logo-divider { width: 1px; height: 40px; background-color: var(--miami-medium-tan); } /* Title Panel Override */ .shiny-title-panel { display: none; } /* Well panels */ .well { background-color: var(--miami-white); border: 1px solid var(--miami-medium-tan); border-radius: 8px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); padding: 20px; } /* Sidebar styling */ .sidebar-panel { background-color: var(--miami-white); border: 1px solid var(--miami-medium-tan); border-radius: 8px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); } /* Main panel styling */ .main-panel { background-color: transparent; } /* Card-like sections */ .info-card { background-color: var(--miami-white); border: 1px solid var(--miami-medium-tan); border-radius: 8px; padding: 20px; margin-bottom: 20px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); } .info-card h4 { color: var(--miami-red); margin-top: 0; padding-bottom: 10px; border-bottom: 2px solid var(--miami-light-tan); font-weight: 600; } /* How to use section */ .how-to-use { background-color: var(--miami-white); border-left: 4px solid var(--miami-red); border-radius: 0 8px 8px 0; padding: 20px; margin-bottom: 25px; } .how-to-use h4 { color: var(--miami-red); margin-top: 0; font-weight: 600; } .how-to-use ol { padding-left: 20px; } .how-to-use li { margin-bottom: 8px; line-height: 1.5; } /* Video tutorial button */ .btn-video-tutorial { background-color: var(--miami-medium-tan); color: var(--miami-black); border: none; border-radius: 6px; padding: 8px 16px; font-weight: 500; cursor: pointer; transition: all 0.2s; } .btn-video-tutorial:hover { background-color: var(--miami-yellow); color: var(--miami-black); } /* Video modal */ .video-modal { display: none; position: fixed; z-index: 9999; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.8); justify-content: center; align-items: center; } .video-modal-content { background-color: var(--miami-white); border-radius: 12px; padding: 25px; width: 90%; max-width: 900px; position: relative; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); } .video-modal-close { position: absolute; top: 10px; right: 18px; font-size: 32px; font-weight: bold; color: var(--miami-medium-tan); cursor: pointer; transition: color 0.2s; line-height: 1; } .video-modal-close:hover { color: var(--miami-red); } .video-modal-wrapper { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; border-radius: 8px; background-color: #000; } .video-modal-wrapper iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; } /* Form controls */ .form-control { border: 1px solid var(--miami-medium-tan); border-radius: 6px; transition: border-color 0.2s, box-shadow 0.2s; } .form-control:focus { border-color: var(--miami-red); box-shadow: 0 0 0 3px rgba(196, 18, 48, 0.15); outline: none; } /* Text area styling */ textarea.form-control { resize: vertical; min-height: 150px; } /* Labels */ .control-label { font-weight: 600; color: var(--miami-black); margin-bottom: 5px; } /* Buttons */ .btn { border-radius: 6px; font-weight: 500; padding: 10px 20px; transition: all 0.2s; border: none; margin-right: 10px; margin-top: 10px; } .btn-primary { background-color: var(--miami-red); color: var(--miami-white); } .btn-primary:hover, .btn-primary:focus { background-color: var(--miami-dark-red); color: var(--miami-white); box-shadow: 0 4px 12px rgba(196, 18, 48, 0.3); } .btn-info { background-color: var(--miami-medium-tan); color: var(--miami-black); } .btn-info:hover, .btn-info:focus { background-color: var(--miami-yellow); color: var(--miami-black); } /* Table styling */ .table { background-color: var(--miami-white); border-radius: 8px; overflow: hidden; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); } .table > thead > tr > th { background-color: var(--miami-red); color: var(--miami-white); font-weight: 600; border: none; padding: 12px 15px; } .table > tbody > tr > td { padding: 12px 15px; border-color: var(--miami-light-tan); vertical-align: middle; } .table > tbody > tr:nth-child(odd) { background-color: var(--miami-light-tan); } .table > tbody > tr:nth-child(even) { background-color: var(--miami-white); } .table > tbody > tr:hover { background-color: rgba(239, 219, 114, 0.3); } /* Horizontal rules */ hr { border-color: var(--miami-medium-tan); margin: 15px 0; } /* Help text */ .help-block { color: #666; font-size: 0.85em; font-style: italic; } /* Tips section */ .tips-section { background-color: rgba(239, 219, 114, 0.2); border: 1px solid var(--miami-yellow); border-radius: 8px; padding: 20px; margin-top: 20px; } .tips-section h4 { color: var(--miami-black); margin-top: 0; font-weight: 600; } .tips-section ul { padding-left: 20px; margin-bottom: 0; } .tips-section li { margin-bottom: 6px; line-height: 1.5; } /* Note section */ .note-section { background-color: var(--miami-white); border: 1px solid var(--miami-medium-tan); border-radius: 8px; padding: 15px 20px; margin-top: 20px; } .note-section h4 { color: var(--miami-red); margin-top: 0; margin-bottom: 10px; font-weight: 600; } /* Section headings in main panel */ .section-heading { color: var(--miami-red); font-weight: 600; padding-bottom: 10px; border-bottom: 2px solid var(--miami-light-tan); margin-bottom: 15px; } /* Results placeholder */ .results-placeholder { color: #888; font-style: italic; padding: 20px; text-align: center; background-color: var(--miami-light-tan); border-radius: 6px; } /* Field separator styling */ .field-separator { border-color: var(--miami-light-tan); margin: 20px 0; } /* Notification styling overrides */ .shiny-notification { border-radius: 8px; border: none; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); } .shiny-notification-message { background-color: var(--miami-red); color: var(--miami-white); } .shiny-notification-error { background-color: #d32f2f; color: var(--miami-white); } /* Footer styling */ .app-footer { text-align: center; padding: 15px; margin-top: 30px; color: #666; font-size: 0.85em; border-top: 1px solid var(--miami-medium-tan); } /* Input tabs styling */ .input-tabs-container { margin-bottom: 15px; } .input-tabs { display: flex; gap: 5px; margin-bottom: 5px; } .input-tab { flex: 1; padding: 10px 15px; border: 1px solid var(--miami-medium-tan); background-color: var(--miami-light-tan); color: var(--miami-black); border-radius: 6px 6px 0 0; cursor: pointer; font-weight: 500; font-size: 0.9em; transition: all 0.2s; } .input-tab:hover { background-color: var(--miami-medium-tan); } .input-tab.active { background-color: var(--miami-red); color: var(--miami-white); border-color: var(--miami-red); } .input-panel { border: 1px solid var(--miami-medium-tan); border-top: none; border-radius: 0 0 6px 6px; padding: 15px; background-color: var(--miami-white); margin-top: -1px; } /* PDF preview styling */ .pdf-preview { margin-top: 15px; padding: 10px; background-color: var(--miami-light-tan); border-radius: 6px; max-height: 200px; overflow-y: auto; } .pdf-preview pre { margin: 5px 0 0 0; white-space: pre-wrap; word-wrap: break-word; font-size: 0.85em; max-height: 150px; overflow-y: auto; } /* File input styling */ .input-panel .form-group { margin-bottom: 0; } .input-panel .shiny-input-container { width: 100%; } /* File input browse button - make it red */ .input-panel .btn-file { background-color: var(--miami-red); color: var(--miami-white); border: none; border-radius: 6px; font-weight: 500; } .input-panel .btn-file:hover, .input-panel .btn-file:focus { background-color: var(--miami-dark-red); color: var(--miami-white); } /* Image limit note */ .image-limit-note { background-color: rgba(239, 219, 114, 0.3); border: 1px solid var(--miami-yellow); border-radius: 4px; padding: 8px 12px; margin-top: 10px; font-size: 0.85em; color: #666; } /* File format note */ .file-format-note { background-color: var(--miami-light-tan); border-radius: 4px; padding: 10px 12px; margin-top: 10px; font-size: 0.9em; } .file-format-note ul { color: #666; } /* Image preview grid */ .image-preview-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); gap: 8px; margin-top: 10px; } .image-preview-item { border: 1px solid var(--miami-medium-tan); border-radius: 4px; overflow: hidden; aspect-ratio: 1; } .image-preview-item img { width: 100%; height: 100%; object-fit: cover; } .image-preview-count { text-align: center; font-size: 0.85em; color: #666; margin-top: 8px; } /* Responsive adjustments */ @media (max-width: 768px) { .header-content { flex-direction: column; text-align: center; } .header-right { text-align: center; } .logo-container { flex-wrap: wrap; justify-content: center; } .logo-divider { display: none; } .input-tabs { flex-direction: row; } .input-tab { border-radius: 6px; font-size: 0.8em; padding: 8px 10px; } .input-tab i { display: none; } }