.ab_about-page {
  max-width: 800px;
  margin: 0 auto;
  padding: 20px;
  font-family: Arial, sans-serif;
}

.ab_page-title {
  text-align: center;
  color: #2c3e50;
  font-size: 2.5em;
  margin-bottom: 20px;
}

.ab_intro-section {
  text-align: center;
  margin-bottom: 40px;
}

.ab_intro-section p {
  font-size: 1.2em;
  color: #34495e;
  line-height: 1.6;
}

.ab_faq-section h2 {
  font-size: 1.8em;
  color: #2c3e50;
  margin-bottom: 20px;
  text-align: center;
}

.ab_faq-item {
  margin-bottom: 20px;
  padding: 15px;
  background-color: #f9f9f9;
  border-radius: 8px;
}

.ab_faq-item h3 {
  font-size: 1.4em;
  color: #2980b9;
  margin-bottom: 10px;
}

.ab_faq-item p {
  font-size: 1em;
  color: #34495e;
  line-height: 1.5;
}

.ab_cta-section {
  text-align: center;
  margin-top: 40px;
}

.ab_cta-section p {
  font-size: 1.2em;
  color: #2c3e50;
}

.ab_blue-button {
  display: inline-block;
  padding: 10px 20px;
  background-color: #3498db;
  color: white;
  text-decoration: none;
  border-radius: 5px;
  margin: 0 10px;
}

.ab_blue-button:hover {
  background-color: #2980b9;
}

@media (max-width: 800px) {
  .ab_page-title {
    font-size: 2.0em;
  }
}
/* app/assets/stylesheets/admin.css */
/* Flash message styling */
.flash {
  padding: 10px;
  margin-bottom: 15px;
  border-radius: 4px;
  font-size: 15pt;
}

.clsAdminContainer {
  text-align: center;
  padding: 1px;
  border-radius: 10px;
  margin: 20px auto;
  box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}

  .clsAdminMenuBar {
    text-align: center;
  }

  /* Smaller text + tighter row spacing so the admin nav buttons wrap to two
     rows instead of three on typical widths. */
  .clsAdminMenuBar .clsButton {
    font-size: 0.85em;
    padding: 8px 12px;
    margin: 4px;
  }

  /* Explicit gap between the emoji icon and the button label — relying on
     the whitespace in the .erb source isn't reliable once the button is a
     flex container (.clsRoundButton). */
  .clsAdminMenuBar .clsButton .icon {
    margin-right: 6px;
  }

.flash.alert {
  background-color: #d81b60;
  color: white;
  border: 1px solid #a11245;
}

table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 10px;
}

th, td {
  border: 1px solid #ddd;
  padding: 8px;
  text-align: left;
}

.clsStatsContainer {
  text-align: center;
  margin: 20px 0;
}

.clsStatsGrid {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 15px;
  margin: 0 auto;
}

.clsStatsGrid p {
  margin: 0;
  font-size: 1.1em;
  line-height: 1.5;
}

.clsHighlight {
  background-color: #e3f2fd;
  padding: 1px 6px;
  border-radius: 5px;
  color: #6a1b9a; /* Bold purple */
  font-size: 1.4em; /* Larger than row */
  font-weight: bold;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  transition: transform 0.2s ease;
}

.clsHighlight:hover {
  transform: scale(1.05);
}

.clsStatEmoji {
  font-size: 1.4em;
  vertical-align: middle;
}

.admin_clsField {
  margin: 15px 0;
}

/* Admin home ("Working Pages") — was a single narrow column of links down
   the left edge no matter how wide the browser was. Grid of section cards
   lets it actually use a wide/full-screen browser instead of leaving most
   of it blank. */
.ah_clsHomeContainer {
  margin: 20px 3vw;
  padding: 20px;
}

.ah_clsPagesGrid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
  text-align: left;
}

.ah_clsSection {
  background-color: #ffffff;
  border: 1px solid #bfe3ff;
  border-radius: 8px;
  padding: 14px 18px;
}

.ah_clsSectionTitle {
  margin: 0 0 10px;
  font-size: 1.1em;
  color: #007bff;
  border-bottom: 1px solid #e3f2fd;
  padding-bottom: 6px;
}

.ah_clsSectionList {
  list-style: none;
  margin: 0;
  padding: 0;
}

.ah_clsSectionList li {
  display: flex;
  align-items: flex-start;
  margin-bottom: 8px;
  font-size: 15pt;
}

/* Fixed-width icon column + a separate text column, rather than a text-indent
   hanging-indent guess — a wrapped second line lines up exactly under the
   first line's text (not the emoji) regardless of how wide any given emoji
   glyph actually renders. */
.ah_clsLinkIcon {
  flex-shrink: 0;
  width: 1.6em;
}

.ah_clsLinkText {
  flex: 1;
  min-width: 0;
}



/* app/assets/stylesheets/admin_answers.css */

/* This whole page is admin-only (Admin::AnswersController#edit requires
   admin), so the container carries the site's red admin-only shading/border
   instead of the default blue .clsBlueContainer look. */
.aa_clsAdminAnswerPage.clsBlueContainer {
  background-color: #fdecea;
  border: 2px solid #c0392b;
}

/* This whole page is admin-only (Admin::AnswersController#new requires
   admin), so it gets the same red admin-only shading/border. */
.aa_clsAdminNewAnswerPage.clsBlueContainer {
  background-color: #fdecea;
  border: 2px solid #c0392b;
}

/* .clsActions (application.css) sets align-items: center but never sets
   display: flex, so it does nothing — the submit <input> and the Cancel <a>
   fall back to default inline baseline alignment, which sits them at
   different heights. Scoped to this page only. */
.aa_clsAdminAnswerPage .clsActions {
  display: flex;
  justify-content: center;
}

/* Delete-answer confirmation page — the question being deleted is the whole
   point of the page, so it needs to actually be readable at a glance instead
   of buried in a small "Question: ..." line next to Category/Answer. */
.da_question-category {
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: 0.9em;
  font-weight: bold;
  color: #6b6b6b;
  margin-bottom: 0.25rem;
}
.da_question-text {
  text-align: center;
  font-size: 1.8em;
  font-weight: bold;
  color: #1b1b1b;
  margin: 0 0 1.5rem;
  line-height: 1.3;
}

.aa_admin-answers select,
.aa_admin-answers input[type="text"],
.aa_admin-answers input[type="password"] {
  padding: 8px;
  border-radius: 5px;
  border: 1px solid #ccc;
  width: fit-content;
}
.clsAdminTable .row-even {
  background-color: #F5F5F5; /* Light gray for even rows */
}

.clsAdminTable .row-odd {
  background-color: #FFFFFF; /* White for odd rows */
}

.clsAdminTable .matching-answer {
  background-color: #90EE90; /* Green for matching answers */
}

.clsAdminTable .non-matching-answer {
  background-color: #FFB6C1; /* Red for non-matching or one unanswered */
}

.clsAdminTable .unanswered-both {
  background-color: #FFFACD; /* Yellow for both unanswered */
}
.clsFormGroup {
  text-align: center;
  margin-bottom: 20px;
}

.clsTable {
  width: 100%;
  border-collapse: collapse;
  margin-top: 20px;
}

.clsTable th,
.clsTable td {
  padding: 10px;
  border: 1px solid #ddd;
  text-align: left;
}

.clsTable th {
  background-color: #007bff;
  color: white;
}

.clsTable tr:nth-child(even) {
  background-color: #f2f2f2;
}


.form-input {
  padding: 8px;
  border-radius: 5px;
  border: 1px solid #ddd;
}
.clsNotificationsContainer {
  padding: 20px;
}

.clsNotificationsTable {
  width: 100%;
  border-collapse: collapse;
}

.clsNotificationsTable th, .clsNotificationsTable td {
  border: 1px solid #ccc;
  padding: 8px;
  text-align: left;
}

.alert-success, .alert-danger {
  padding: 10px;
  margin-bottom: 15px;
}

.alert-success {
  background-color: #d4edda;
  color: #155724;
}

.alert-danger {
  background-color: #f8d7da;
  color: #721c24;
}
/* Admin "Review Question Request" page (admin/question_requests/show.html.erb) —
   scoped to .admin-qr-review-page so this never bleeds into other pages that
   reuse the generic .clsAdminContainer/.clsFormGroup classes. */

.admin-qr-review-page {
  background: linear-gradient(135deg, #eef7ff, #f5f0ff);
  border: 2px solid #7c4dff;
  border-radius: 16px;
  padding-top: 20px;
  padding-bottom: 20px;
  box-shadow: 0 6px 16px rgba(124, 77, 255, 0.2);
}

/* .clsFormGroupCentered is a flex row with no gap sitewide — scoped here only,
   so label and control aren't jammed right up against each other. */
.admin-qr-review-page .clsFormGroupCentered {
  gap: 10px;
}

.admin-qr-card {
  background: #ffffff;
  border: 1px solid #d8c9ff;
  border-radius: 12px;
  padding: 14px 20px;
  margin: 0 auto 20px;
  max-width: 600px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}

/* Combined with .clsButton for higher specificity — question_request.css's
   own generic .clsButton { background-color: #007bff } compiles in later in
   the sitewide asset bundle and would otherwise win the tie. */
.clsButton.admin-qr-approve-btn {
  background-color: #28a745;
}

.clsButton.admin-qr-approve-btn:hover {
  background-color: #1e7e34;
}
/* app/assets/stylesheets/admin_question_users.css */
/* background was `var(--aa-bg)`, a variable that's never defined anywhere in
   the app — it resolved to transparent, so scrolled table rows showed
   through behind the sticky question text. Solid white fixes that without
   changing the box's height. */
.qu_sticky{position:sticky;top:0;background:#fff;padding:1rem;border-bottom:2px solid #333;z-index:10;}
.qu_header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  font-size: 2rem;
  font-weight: 800;
}
.qu_table_wrap{overflow-x:auto;margin-top:1rem;}

/* Admin-only page — red-shaded background + bold red border instead of the
   site-wide blue .clsBlueContainer, same "this is admin-only" red convention
   as .clsAdminOnlyBox/.clsAdminOnlyBadge elsewhere. */
.qu_admin_container{
  background-color:#fdecea;
  border:2px solid #c0392b;
  border-radius:5px;
  padding:10px 20px;
}

.qu_table{width:100%;border-collapse:collapse;}
.qu_table th,.qu_table td{padding:0.8rem;text-align:left;border-bottom:1px solid #555;cursor:pointer;}
.qu_table th:hover{background:#333;}
.qu_table tbody tr:hover{background:#8b1a1a;}
.qu_table tbody tr:hover td{color:#fff !important;}
/* The Name column's <a> keeps its own default link color instead of
   inheriting the td's — without this, it stays dark-blue-on-navy on hover
   and is unreadable. */
.qu_table tbody tr:hover td a{color:#fff !important;}
.qu_search_row th{cursor:default;background:#f4f4f4;}
.qu_search_row th:hover{background:#f4f4f4;}
.qu_search_input{
  width:100%;
  box-sizing:border-box;
  padding:0.4rem 0.6rem;
  font-size:0.9rem;
  font-weight:normal;
  border:1px solid #ccc;
  border-radius:4px;
}
.qu_search_actions_cell{white-space:nowrap;}
.qu_search_btn_small{
  padding:0.3rem 0.5rem;
  font-size:0.9rem;
  border:1px solid #ccc;
  border-radius:4px;
  background:#fff;
  cursor:pointer;
  margin-right:4px;
}
.qu_search_btn_small:hover{background:#eee;}

.qu_btn{padding:0.4rem 0.8rem;font-size: 1rem;margin:0.2rem;border-radius:16px;display:inline-block;}
.qu_edit{background:#0066cc;color:white;}
.qu_add{background:#00aa00;color:white;}

/* Narrower browser windows (not just full mobile card view below) — let the
   Email column wrap onto two lines instead of forcing the whole table wider
   than the viewport. */
@media(max-width:900px){
  .qu_table td:nth-child(3){
    max-width:140px;
    white-space:normal;
    word-break:break-word;
  }
}

@media(max-width:640px){
  .qu_table thead{display:none;}
  .qu_table tbody tr{display:grid;grid-template-columns:1fr;gap:0.5rem;padding:1rem;background:#111;}
  .qu_table td:before{content:attr(data-label);font-weight:bold;display:block;}
  .qu_table td[data-label]:before{content:attr(data-label) ": ";}
}
.aq_error-container {
  background-color: #ffcccc;
  padding: 10px;
}

/* .clsButton's fixed height (40px) doesn't vertically center a <button>,
   <a>, and <input type="submit"> identically across browsers — flexbox
   guarantees the label sits centered top-to-bottom in every button on this
   page, without changing the shared .clsButton used site-wide. */
#aq_edit_container .clsButton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* Let the Edit Question page use more of a wide browser window (the shared
   .clsBlueContainer used site-wide has a fixed 20px margin; this page-only
   id widens it here without touching any other page that uses that class). */
#aq_edit_container,
#aq_new_container {
  max-width: min(1400px, 96vw);
  margin-left: auto;
  margin-right: auto;
}

/* Admin-only page — red-shaded background + bold red border instead of the
   site-wide blue .clsBlueContainer, same "this is admin-only" red convention
   used elsewhere (e.g. .clsAdminOnlyBox). Edit only, not the New Question
   page (#aq_new_container), which wasn't asked for. */
#aq_edit_container.clsBlueContainer {
  background-color: #fdecea;
  border: 2px solid #c0392b;
}

/* Wide-screen field layout for the Edit Question form: fields sit side by
   side when there's room, and stack to one column on narrow screens. Text
   areas, the tags picker, image, location header, and parent-question row
   are marked .aq_full-width so they always span the whole row. */
.aq_field-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 4px 32px;
  align-items: start;
}
.aq_field-grid > p {
  margin: 0 0 16px 0;
  min-width: 0;
}
.aq_field-grid > p.aq_full-width {
  grid-column: 1 / -1;
}

/* Parent Question + Trigger Answer, combined into one grid item that spans 2
   of the grid's own auto-fit columns (so it takes up the same width as two
   normal fields side by side, at any screen width where 2+ columns fit),
   with the pair laid out side-by-side inside via flex — they no longer
   depend on the grid happening to place them in adjacent columns on its own,
   which is what let them land in separate columns/lines before. */
.aq_field-grid > .aq_parent-trigger-row {
  grid-column: span 2;
  margin: 0 0 16px 0;
  display: flex;
  flex-wrap: wrap;
  gap: 4px 32px;
  align-items: flex-start;
}
.aq_parent-trigger-row > .aq_parent-question-picker,
.aq_parent-trigger-row > .aq_trigger-answer-field {
  margin: 0;
  min-width: 0;
}
/* The site-wide `p { padding-left: 10px; padding-right: 10px; }` rule
   (application.css) is what actually indents every other field's label/input
   — .aq_trigger-answer-field already gets it for free since it's still a
   <p>, but .aq_parent-question-picker is a <div> (has to be, since it
   contains other divs — see the phantom-empty-<p> fix), so it needs the same
   padding set explicitly to line up with every sibling field. */
.aq_parent-trigger-row > .aq_parent-question-picker {
  padding-left: 10px;
  padding-right: 10px;
}
/* application.css has a site-wide `select { width: fit-content; }` rule, so
   every select sizes to its own option text by default — Category/Question
   Type just have long enough option text that this isn't obvious, but
   Trigger Answer's short options ("Yes"/"No"/"Skip"/"Pick a Parent Question
   first") made it visibly narrower than every text-input field (which fill
   100% via .au_clsFormInput). Same fix applied to Question Type + Category
   on both pages, since they have the identical underlying issue — scoped to
   just these fields rather than overriding the global select rule, which
   may be intentional elsewhere on the site. an_clsFormSelect only exists on
   the New page's Question Type/Category; the Edit page has no shared class
   for those two, so they're targeted by their (Rails-default/explicit) ids. */
#aq_trigger_answer_select,
.an_clsFormSelect,
#question_type_select,
#question_f_CategoryID {
  width: 100%;
}
/* Equal split — each field then gets the same width as a single normal grid
   column (the row spans 2 columns total), instead of Parent Question's text
   input stretching wider than fields like Country/State/County. */
.aq_parent-trigger-row > .aq_parent-question-picker,
.aq_parent-trigger-row > .aq_trigger-answer-field {
  flex: 1 1 0;
}

/* Guard against phone-width overflow: several fields use HTML `size`/`cols`
   attributes (size="30", size="40", size="60x4") which set an intrinsic
   character width that can be wider than a phone screen once the container's
   padding/margin is subtracted. Force them to respect the grid column
   instead of pushing the page into horizontal scroll. */
.aq_field-grid input[type="text"],
.aq_field-grid input[type="number"],
.aq_field-grid input[type="datetime-local"],
.aq_field-grid select,
.aq_field-grid textarea {
  box-sizing: border-box;
  max-width: 100%;
}

/* Floating Save button, always visible in the bottom-right of the viewport,
   in addition to (not instead of) the normal in-form Save button. */
.aq_fixed-save {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 1000;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
}

/* The whole grid goes single-column here, not just Parent Question/Trigger
   Answer — that pair just happens to need it earliest (they were cutting
   off text under ~670px), but every field should stack together at this
   width, not just those two. */
@media (max-width: 670px) {
  .aq_field-grid {
    grid-template-columns: 1fr;
    gap: 0;
  }
  /* Only 1 column exists now — span 2 would force the grid to add an extra
     column just to satisfy it, breaking the single-column layout. */
  .aq_field-grid > .aq_parent-trigger-row {
    grid-column: 1 / -1;
    flex-direction: column;
    /* align-items controls the *cross* axis — once flex-direction is column
       that's horizontal, so the row's default flex-start was shrinking both
       fields to their content width instead of the full row width every
       other stacked field gets. */
    align-items: stretch;
    /* The row's own gap (4px 32px) only gives 4px between the two stacked
       fields — every other stacked field gets 16px via its own margin-bottom
       (.aq_field-grid > p). Match that here since these two don't have that
       margin (it's zeroed out so they can sit side-by-side above 670px). */
    gap: 16px;
  }
}

@media (max-width: 480px) {
  #aq_edit_container,
  #aq_new_container {
    max-width: 100%;
  }
  .aq_fixed-save {
    right: 12px;
    bottom: 12px;
    padding: 10px 18px;
  }
}

/* Daily Question Schedule table: on a phone-width screen, a 4-column table
   forces either sideways scrolling or squished, hard-to-read text. Instead,
   each row becomes its own stacked card — the column header is shown as a
   label in front of each value, one field per line, everything wraps. */
@media (max-width: 600px) {
  .aq_dq-table thead {
    display: none;
  }
  .aq_dq-table, .aq_dq-table tbody, .aq_dq-table tr, .aq_dq-table td {
    display: block;
    width: 100%;
  }
  .aq_dq-table tr {
    margin-bottom: 12px;
    border: 1px solid #ddd;
    border-radius: 6px;
    padding: 4px 0;
  }
  .aq_dq-table td {
    white-space: normal !important;
    padding: 6px 10px !important;
  }
  .aq_dq-table td::before {
    content: attr(data-label);
    display: block;
    font-size: 0.8em;
    font-weight: bold;
    color: #666;
    margin-bottom: 2px;
  }
  .aq_dq-table td[data-label="Actions"] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
  }
  .aq_dq-table td[data-label="Actions"]::before {
    width: 100%;
  }
}
.aq_answer-options-section {
  margin-top: 20px;
  padding: 10px;
}
.aq_answer-option {
  display: flex;
  gap: 10px;
  align-items: center;
  margin-bottom: 10px;
  border: 1px solid #ccc;
  padding: 5px;
  background-color: #fff;
}

/* app/assets/stylesheets/admin_questions.css */
.aq_admin-questions-stats {
  padding: 20px;
}

form input[type="text"] {
  margin-right: 5px;
}
.aq_question-table {
  width: 100%;
  border-collapse: collapse;
  background-color: #f0f8ff;
  border-radius: 8px;
  overflow: hidden;
}
.aq_question-table th, .aq_question-table td {
  text-align: left;
  border-bottom: 1px solid #ddd;
}
.aq_question-table th {
  background-color: #0288d1;
  color: white;
  text-align: center;
}

/* Per-column search row (search_id, search_category, search_question, etc.)
   at the top of the table — one small text input per searchable column,
   plus a Search/Clear pair in the Edit column's slot. */
.aq_clsColumnSearchRow th {
  background-color: #ffffff;
  padding: 4px 6px;
}

.aq_clsColumnSearchInput {
  width: 100%;
  min-width: 60px;
  box-sizing: border-box;
  padding: 5px 6px;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 0.85em;
  color: #222;
}

.clsButton.aq_clsColumnSearchBtn {
  display: block;
  width: 100%;
  height: auto;
  margin: 0 0 4px 0;
  padding: 4px 6px;
  font-size: 0.8em;
}

.clsButton.aq_clsColumnSearchBtn:last-child {
  margin-bottom: 0;
}
.aq_question-table tr:hover {
  background-color: #e0f0ff;
}
#idDebugInfo {
  background-color: #fff3cd;
  padding: 10px;
  border-radius: 5px;
  margin: 10px 0;
  text-align: left;
}
.q_clsSearchForm {
  margin: 15px 0;
  display: flex;
  gap: 10px;
  justify-content: center;
  align-items: center;
}


.sort-link {
  color: white;
  text-decoration: none;
}
.sort-link:hover {
  color: #e0f0ff;
  text-decoration: underline;
}

.clsAdminContainer {
  margin: 20px auto;
  padding: 20px;
}


.q_clsSearchForm {
  display: flex !important;
  gap: 10px;
  flex-wrap: wrap;
  align-items: center;
  margin-bottom: 15px;
}

/* Expired questions – grey background */
.aq_question-table tr.expired {
  background-color: #8b8686 !important;
}

/* Optional: slightly darker on hover so it still feels interactive */
.aq_question-table tr.expired:hover {
  background-color: #4e4141 !important;
}

/* Show/hide expired toggle chip (defaults to hidden) */
.aq_question-table.hide-expired tr.expired {
  display: none;
}

.aq_chip {
  display: inline-block;
  margin-left: 10px;
  padding: 6px 14px;
  border: 1px solid #1976d2;
  border-radius: 16px;
  background: #fff;
  color: #1976d2;
  font-size: 15pt;
  line-height: 1.2;
  cursor: pointer;
}

.aq_chip[data-shown="true"] {
  background: #1976d2;
  color: #fff;
}

/* Parent Question type-ahead picker (Admin Add/Edit Question). */
.aq_parent-question-picker {
  position: relative;
}

/* position:fixed with top/left/width set in JS from the search input's own
   getBoundingClientRect() (see the script at the bottom of edit.html.erb) —
   this used to be position:absolute anchored to .aq_parent-question-picker,
   which rendered the list up near the top of the page instead of under the
   search box (likely the grid/ancestor layout on this page not giving it the
   containing block it needed). Fixed positioning computed directly from the
   input's real screen location sidesteps that entirely. */
.aq_parent-question-suggestions {
  position: fixed;
  z-index: 1000;
  background: #fff;
  border: 1px solid #ccc;
  border-radius: 6px;
  max-height: 220px;
  overflow-y: auto;
  box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}

.aq_parent-question-suggestion {
  padding: 8px 12px;
  cursor: pointer;
  border-bottom: 1px solid #eee;
  font-size: 0.95em;
}

.aq_parent-question-suggestion:last-child {
  border-bottom: none;
}

.aq_parent-question-suggestion:hover {
  background-color: #e3f2fd;
}

.aq_parent-question-suggestion-empty {
  color: #888;
  cursor: default;
}

.aq_parent-question-suggestion-empty:hover {
  background-color: transparent;
}

.aq_parent-question-selected {
  margin-top: 6px;
  padding: 8px 12px;
  background-color: #e3f2fd;
  border: 1px solid #90caf9;
  border-radius: 6px;
  font-size: 0.9em;
}

.aq_parent-question-clear {
  margin-left: 8px;
  border: none;
  background: none;
  color: #c0392b;
  cursor: pointer;
  font-size: 0.9em;
}
/* admin_user_events.css – styles for user_events page */
.admin-events-table {
  width: 100%;
  border-collapse: collapse;
  margin: 1.5rem 0;
}

.admin-events-table th {
  background: #333 !important;
  color: #fff !important;
  font-weight: bold;
  text-shadow: 0 1px 1px rgba(0,0,0,0.4);
}

.admin-events-table th:hover {
  background: #444 !important;
}


.admin-events-table td {
  border: 1px solid #ddd;
  padding: 10px;
  text-align: left;
}

.admin-events-table th {
  background: #f4f4f4;
  font-weight: bold;
}


.answered { background: #e8f5e9; }
.unanswered { background: #fff3e0; }

.clsSmallButton {
  padding: 6px 12px;
  font-size: 1em;
}
/* app/assets/stylesheets/admin_user_notifications.css */

.admin-notifications-table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 1.5rem;
}

.admin-notifications-table th,
.admin-notifications-table td {
  padding: 10px;
  border: 1px solid #ddd;
  text-align: left;
}

.admin-notifications-table th {
  background-color: #f2f2f2;
  font-weight: bold;
  color: #000;          /* black text for headings */
}

.admin-notifications-table tr:nth-child(even) {
  background-color: #f9f9f9;
}
.sort-link {
  text-decoration: none;
  color: inherit;
}

.sort-link:hover {
  text-decoration: underline;
}
.sort-link {
  text-decoration: none;
  color: inherit;
  display: block;
}

.sort-link:hover {
  text-decoration: underline;
  color: #0066cc;
}
/* app/assets/stylesheets/admin_users.css */

.au_clsEditLayout {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 24px;
  align-items: start;
}

.au_clsEditMain {
  min-width: 0;
}

.au_clsEditSidebar {
}

.au_clsGpsSection {
  display: flex;
  flex-direction: column;
  border: 1px solid #dee2e6;
  border-radius: 6px;
  padding: 0 12px 12px;
  background-color: #f8f9fa;
}
/* This div also carries the site-wide .clsFormRow class, which sets
   gap: 20px (application.css) — that pushed the title away from the map
   below it. .au_clsGpsTitle's own margin-bottom already gives the title
   its intended spacing, so the flex gap here should be 0. Element+class
   selector (not just .au_clsGpsSection) so this reliably beats .clsFormRow's
   gap regardless of which file Sprockets happens to bundle last. */
div.au_clsGpsSection {
  gap: 0;
}

.au_clsGpsTitle {
  margin: 0 0 10px;
  font-size: 15pt;
}

.au_clsGpsBody {
  display: flex;
  flex-direction: column;
  gap: 16px;
  align-items: center;
}

.au_clsGpsControls {
  display: flex;
  flex-direction: column;
  gap: 12px;
  flex-shrink: 0;
  width: 100%;
  max-width: 480px;
}

.au_clsGpsControls > div {
  flex-grow: 0;
  flex-shrink: 0;
}

.au_clsGpsLatLngRow {
  display: flex;
  gap: 12px;
}

.au_clsGpsLatLngRow .app_clsFormField {
  flex: 1;
  min-width: 0;
}

.au_clsGpsSearchRow {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-top: auto;
  padding-top: 12px;
}

.au_clsLocationSearch {
  flex: 1;
  min-width: 0;
  padding: 6px 10px;
  border: 1px solid #ced4da;
  border-radius: 4px;
  font-size: 15pt;
}

.au_clsEditMap {
  flex-shrink: 0;
  width: 480px;
  height: 480px;
  border-radius: 4px;
  border: 1px solid #dee2e6;
}

.au_clsMapSection {
  margin-bottom: 4px;
  padding: 8px 15px;
}

/* The Hide/Show Map button is a .clsButton, which carries its own
   margin: 10px globally (application.css) — same issue as the New User
   button elsewhere on this page: that margin still pads out the header
   row even though the row itself and this container are already tight. */
#au_map_toggle {
  margin: 0;
}

.au_clsMapHeaderRow {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 4px;
}

/* .clsBlueContainer carries a 20px margin globally — collapses fine against
   the page background, but stacked back-to-back on this page it leaves an
   oversized gap above the users table. Tighten just that gap here.
   (Uses ~ rather than + — a <script> tag sits between the two containers
   in the DOM, so the immediate-sibling + selector never actually matched.) */
.au_clsMapSection ~ .clsBlueContainer {
  margin-top: 4px;
}

.au_clsMap {
  height: 260px;
  width: 100%;
  max-width: 650px;
  border-radius: 6px;
  border: 1px solid #dee2e6;
}

.au_clsMapCount {
  margin-top: 6px;
  font-size: 15pt;
  color: #6c757d;
}
.toast.alert {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 1050;
  background-color: #f8d7da;
  color: #721c24;
  border: 1px solid #f5c6cb;
  padding: 15px;
  border-radius: 5px;
}

.clsAlert {
  background-color: #f8d7da;
  color: #721c24;
  border: 1px solid #f5c6cb;
  padding: 15px;
  border-radius: 5px;
  margin-bottom: 15px;
}

.clsForm {
  margin: 0 auto;
}

.clsFormRow {
  margin-bottom: 15px;
}

.app_clsFormField input[type="text"],
.app_clsFormField input[type="number"],
.app_clsFormField input[type="password"],
.app_clsFormField input[type="datetime-local"],
.app_clsFormField textarea {
  border-radius: 6px;
  border: 1px solid #ced4da;
  padding: 6px 10px;
}

.clsFormLabel {
  font-weight: bold;
}

.au_clsFormInput {
  width: 100%;
  padding: 8px;
  border: 1px solid #ced4da;
  border-radius: 4px;
  background-color: #fff;
}

.au_clsFormSelect {
  width: 100%;
  padding: 8px;
  border: 1px solid #ced4da;
  border-radius: 4px;
  background-color: #fff;
}

.clsFormCheckbox {
  margin-left: 5px;
}

.tags-container {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.tag-checkbox {
  display: flex;
  align-items: center;
  gap: 5px;
}

.au_clstags-input-container {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  align-items: center;
}

#id_tag-input {
  width: 100% !important;
  max-width: 300px;
  border-radius: 6px;
  border: 1px solid #ced4da;
  padding: 6px 10px;
}

.au_clstags-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-bottom: 5px;
  width: 100%;
}

.au_clstag-chip {
  background-color: #6c757d;
  color: white;
  padding: 5px 10px;
  border-radius: 15px;
  font-size: 15pt;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.au_clsremove-tag {
  cursor: pointer;
  color: #dc3545;
  font-weight: bold;
}

.au_form-control {
  width: 100%;
  max-width: 400px;
}

.badge.bg-secondary {
  background-color: #6c757d;
  color: white;
  padding: 0.25rem 0.5rem;
  border-radius: 0.25rem;
}

.au_clstag-suggestions {
  position: absolute;
  background-color: white;
  max-height: 200px;
  overflow-y: auto;
  z-index: 1000;
  width: 100%;
  max-width: 300px;
  margin-top: 5px;
}

.au_clstag-suggestion {
  padding: 8px 12px;
  cursor: pointer;
  font-size: 15pt;
}

.au_clstag-suggestion:hover {
  background-color: #e9ecef;
}

.au_deceased-user {
  background-color: #f8d7da;
}

.clsBlueContainer {
  padding: 15px;
  box-sizing: border-box;
}

.clsSearchActions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  margin-bottom: 15px;
}

.au_clsPageTitle {
  font-size: 1.3em;
  margin-top: 4px;
  margin-bottom: 6px;
}

.au_clsToolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: 12px;
  margin: 0;
}

/* The New User button is a .clsButton, which carries its own margin: 10px
   globally (application.css) — that's extra space the flex container above
   still has to make room for even though the container's own margin is 0. */
.au_clsToolbar .clsButton {
  margin: 0;
}

.au_clsToolbar p {
  margin: 0;
}

/* application.css has its own unrelated .clsSearchForm rule (margin: 15px 0;
   display: inline-block;) used for a different search form elsewhere on the
   site. Its own rules always compile in LAST (require_self loads after
   require_tree), so at equal specificity it was silently winning here and
   adding a 15px gap above this table. Scope to this page's wrapper so it
   can't be re-overridden the same way again. */
.clsUserTableWrapper .clsSearchForm {
  width: 100%;
  display: block;
  margin: 0;
}

.au_clsSearchInput {
  width: 100%;
  box-sizing: border-box;
  padding: 6px;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 0.85em;
}

/* Search/Clear buttons in the table header — without this they inherit the
   base .clsButton size (12px 24px padding, 15pt font) and bloat the whole
   header row (every cell in a table row is forced to the height of the
   tallest cell), which reads as a big blank gap under the toolbar above it.
   Keep them side by side rather than stacked so the cell — and therefore
   the whole row — stays as short as the plain search-input cells next to it. */
/* .clsButton (below, and its global copy in application.css) sets its own
   padding: 12px 24px, font-size: 15pt, height: 40px and margin: 10px —
   at equal specificity those load later and silently win over a plain
   .au_clsSearchBtn rule, which is why these kept rendering oversized.
   Combine the class names here so this always wins regardless of source
   order, and size them to just fit the label instead of the base button size. */
/* .clsSearchForm .clsButton (below) sets display: block; margin: 0 auto —
   meant for some other button, but it also matches Search/Clear since
   they're inside .clsSearchForm too, and at equal specificity it loads
   later and wins, stretching the button to fill the whole cell width.
   Scope this selector the same way so it wins regardless of order. */
.clsSearchForm .clsButton.au_clsSearchBtn {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 20px;
  width: 100%;
  padding: 0;
  font-size: 0.7em;
  margin: 0 0 3px 0;
  box-sizing: border-box;
  border: 1px solid #0056b3;
}

.clsSearchForm .clsButton {
  margin: 0 auto;
  display: block;
}

.clsButton {
  padding: 12px 24px;
  font-size: 15pt;
  border-radius: 4px;
  touch-action: manipulation;
  background-color: #007bff;
  color: white;
  border: none;
  cursor: pointer;
}

.clsButton.clsBlueButton {
  background-color: #007bff;
}

.clsButton.au_clsRedButton {
  background-color: #dc3545;
}

/* The table sizes its own columns by content (table-layout: auto) so it
   naturally shrinks and grows with the browser width. On narrow screens this
   wrapper scrolls horizontally rather than crushing every column down to an
   unreadable fixed pixel width; below 768px the table switches to stacked
   cards instead (see the mobile media query below) so scrolling isn't
   needed there at all. */
/* Bounding the height here (instead of letting the wrapper grow to fit every
   row) keeps its horizontal scrollbar right below the visible rows, near the
   top of the page — without this, the scrollbar sits at the very bottom of
   the full table, which could be many rows down, forcing a scroll all the
   way down just to reach it. */
.clsUserTableWrapper {
  overflow-x: auto;
  overflow-y: auto;
  max-height: 65vh;
  width: 100%;
  margin-top: 0;
}

.clsUserTable thead th {
  position: sticky;
  top: 0;
  z-index: 1;
}

/* table-layout: fixed + the <colgroup> below give every column an actual
   percentage of the table's width, so each one visibly shrinks together as
   the browser narrows (with table-layout: auto the browser mostly sizes
   columns by content instead, which doesn't shrink predictably). Text wraps
   onto extra lines as its column gets smaller. */
.clsUserTable {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  font-size: 0.95em;
}

.au_colTags       { width: 10%; }
.au_colUserName   { width: 14%; }
/* Matches the Delete column's width — Search/Clear stack vertically in the
   search row (see .clsSearchForm .clsButton.au_clsSearchBtn) so this column
   can stay narrow instead of needing room for two buttons side by side. */
.au_colEdit       { width: 68px; }
.au_colPassword   { width: 10%; }
.au_colEmail      { width: 13%; }
.au_colCreatedAt  { width: 11%; }
.au_colActivatedAt{ width: 11%; }
.au_colLastLogin  { width: 11%; }
.au_colAdminNotes { width: 12%; }
.au_colDelete     { width: 72px; }

.clsUserTable th,
.clsUserTable td {
  padding: 6px 8px;
  text-align: left;
  border-bottom: 1px solid #dee2e6;
  box-sizing: border-box;
  white-space: normal;
  overflow-wrap: break-word;
}

.clsUserTable th {
  background-color: #f8f9fa;
  font-weight: bold;
}

/* Compact, fixed-size columns for the action buttons — these two shouldn't
   grow just because the browser window does. */
/* Column width for Edit/Delete now comes from the <colgroup> (au_colEdit /
   au_colDelete) — this class just keeps their button labels from wrapping. */
.clsActionsCol {
  white-space: nowrap;
}

.clsUserTable .clsActions .clsButton,
.clsUserTable td.clsActionsCol .clsButton {
  width: auto;
  max-width: 100%;
  height: 30px;
  padding: 0 6px;
  font-size: 0.8em;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.clsAdminYes {
  color: #28a745;
  font-weight: bold;
}

.clsSortLink {
  color: #007bff;
  text-decoration: none;
}

.clsSortLink:hover {
  text-decoration: underline;
}

.clsSortAsc::after {
  content: " ↑";
  color: #28a745;
}

.clsSortDesc::after {
  content: " ↓";
  color: #dc3545;
}

/* Half-screen (600-960px): a bit more compact, but columns still size
   themselves by content instead of fighting fixed pixel widths. */
@media (min-width: 600px) and (max-width: 960px) {
  .clsUserTable th,
  .clsUserTable td {
    padding: 4px 6px;
  }

  .clsUserTable {
    font-size: 0.85em;
  }

  .au_clsSearchInput {
    padding: 3px;
    color: #dc3545;
  }
}

/* Narrow screens (below 600px): every column stays visible — nothing is
   hidden and the table never switches to a stacked-card layout. Columns
   just shrink further and wrap their text onto extra lines; there's no
   min-width forcing a wider table than the screen, so this should rarely
   need horizontal scrolling at all — .clsUserTableWrapper's overflow-x:
   auto is still there as a fallback for extreme cases. */
@media (max-width: 599px) {
  .clsUserTable th,
  .clsUserTable td {
    padding: 4px 6px;
  }

  .clsUserTable {
    font-size: 0.8em;
  }

  .au_clsSearchInput {
    color: #dc3545;
  }

  .au_clsRedText {
    color: #dc3545;
  }
}
/* Base styles */
.as_search-page {
  max-width: 100%;
  margin: 0 auto;
  padding: 16px;
  font-family: Arial, sans-serif;
}

.as_clsAdvancedSearchDivSearchContainer {
  display: flex;
  gap: 16px;
  flex-direction: column;
}

.as_clsDivSearchMain {
  flex: 3;
}

.as_clsDivListSavedSearches {
  flex: 1;
}

.as_clsCriterion {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 12px;
}

.s_clsCriterionIcon {
  display: inline-block;
  margin-right: 4px;
  font-size: 1.2em;
  vertical-align: middle;
}

.s_clsDeleteChip {
  display: inline-block;
  vertical-align: middle;
  margin-left: 0;
  padding: 3px 10px;
  background-color: #dc3545;
  color: white;
  font-size: 0.75em;
  font-weight: bold;
  text-decoration: none;
  border-radius: 999px;
  transition: background 0.15s;
}

.s_clsDeleteChip:visited {
  color: white;
}

.s_clsDeleteChip:hover {
  background-color: #b02a37;
  color: white;
}

.s_clsAdminEditAnswerChip {
  display: inline-block;
  vertical-align: middle;
  margin-left: 8px;
  padding: 2px 9px;
  background-color: #fdecea;
  border: 2px solid #c0392b;
  border-radius: 999px;
  color: #c0392b;
  font-size: 0.75em;
  font-weight: bold;
  text-decoration: none;
}

.s_clsAdminEditAnswerChip:hover {
  background-color: #c0392b;
  color: white;
}

.as_clsCboCategoryID,
.as_clsCboAnswer,
.as_clsCboQuestionID,
.as_clsCboPriority {
  padding: 8px;
  border: 1px solid #ccc;
  border-radius: 4px;
  width: 100%;
  max-width: 200px;
  box-sizing: border-box;
}

.as_clsDivLinks {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin: 12px 0;
}

.as_clsDivFormActions {
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: flex-start;
}

.as_clsDivFormActions label {
  font-weight: bold;
}

.as_clsDivFormActions input[type="text"] {
  padding: 8px;
  border: 1px solid #ccc;
  border-radius: 4px;
  width: 100%;
  max-width: 300px;
}



.as_clsUserResult {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 16px;
}

.as_clsUserResult ul {
  list-style-type: disc;
  margin-top: 8px;
  padding-left: 20px;
}

.answer-matched {
  color: green;
}

.answer-unmatched {
  color: red;
}

.answer-unanswered {
  color: #ff8300;
}
.answer-no {
  color: red;
}

hr {
  border: 0;
  border-top: 1px solid #ccc;
  margin: 16px 0;
}

/* Mobile-specific styles */
@media (max-width: 768px) {
  .as_search-page {
    padding: 12px;
  }

  .as_clsAdvancedSearchDivSearchContainer {
    flex-direction: column;
  }

  .as_clsDivSearchMain,
  .as_clsDivListSavedSearches {
    flex: none;
    width: 100%;
  }

  .as_clsCriterion {
    flex-direction: column;
    align-items: stretch;
  }

  .as_clsCboCategoryID,
  .as_clsCboAnswer,
  .as_clsCboQuestionID,
  .as_clsCboPriority {
    max-width: 100%;
  }

  .as_clsDivLinks {
    flex-direction: column;
    align-items: flex-start;
  }

  .as_clsDivFormActions {
    align-items: stretch;
  }

  h1 {
    font-size: 1.5rem;
  }

  h2 {
    font-size: 1.25rem;
  }

  h3 {
    font-size: 1rem;
  }
}

@media (max-width: 480px) {
  .as_search-page {
    padding: 8px;
  }

  h1 {
    font-size: 1.25rem;
  }

  h2 {
    font-size: 1rem;
  }

  h3 {
    font-size: 1rem;
  }

  .as_clsUserResult ul {
    padding-left: 15px;
  }
}

.as_search-page .s_clsCriterion {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}

.as_search-page .s_clsCboCategoryID,
.as_search-page .s_clsCboAnswer,
.as_search-page .s_clsCboPriority {
  margin-right: 0;
  max-width: 130px;
}

.as_search-page .s_clsDeleteChip {
  margin-left: 0;
}

.as_search-page .s_clsCboQuestionID {
    /* Tightened from 300px so the full row (category/question/answer/priority
       + delete chip) fits on one line at narrower browser widths. */
    max-width: 220px;
}

/* Limit opened dropdown height to ~5-6 items and add scroll */
.s_clsCboQuestionID::-webkit-select-list,
.s_clsCboQuestionID option {
    max-height: 200px; /* Adjust to fit ~5 options (typically 35-40px per option) */
    overflow-y: auto;
}

/* Firefox support */
.s_clsCboQuestionID {
    scrollbar-width: thin;
}
#s_idSearchButton,
#s_idSaveSearchButton {
  height: 48px;
  padding: 12px 22px;
  font-size: 1.05em;
}

.as_current-search-title {
  font-size: 2rem; /* Adjust as needed for "big" */
  font-weight: bold;
  text-align: center;
  margin: 2rem 0 1rem;
  color: #d8cc29; /* Optional: blue to match your theme */
  text-shadow: 1px 1px 2px rgba(0,0,0,0.1); /* Optional subtle shadow for emphasis */
}
@media (max-width: 768px) {
  .clsBlueContainer .as_clsCriterion {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }

  .clsBlueContainer select,
  .clsBlueContainer input[type="text"],
  .clsBlueContainer .clsButton {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    font-size: 15pt;
  }

  .clsBlueContainer .s_clsDivFormActions .clsButton {
    width: 100%;
  }
}
/* app/assets/stylesheets/answers.css – FULL & FINAL */

/* Your original styles */
.an_clsEditAnswerContainer {
  text-align: center;
  padding: 20px;
  border-radius: 10px;
  box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}

.question-text {
  font-size: 1.7em;
  font-weight: bold;
  margin-bottom: 1rem;
  color: #0288d1;
}

select {
  padding: 8px;
  border-radius: 5px;
  border: 1px solid #ccc;
}

/* No background-color override here — .clsBlueContainer's site-wide #e3f2fd
   (application.css) should apply so this matches every other page's
   "blue container" shade instead of its own lighter #f0f8ff. */
.clsEditAnswerContainer.clsBlueContainer {
  padding: 20px;
  border-radius: 5px;
}

.an_clsFormGroup {
  margin-bottom: 15px;
}

.an_clsNewAnswerPage {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-height: 70vh;
  text-align: center;
}

.an_clsNewAnswerPage-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  flex: 1;
  width: 100%;
}

.an_clsAnswerCardContainer.clsBlueContainer {
  position: relative;
  background-color: #ffffff;
  border: 2px solid var(--an-accent, #29b6f6);
  border-radius: 24px;
  padding-top: 30px;
  padding-bottom: 30px;
  max-width: 700px;
  width: 100%;
  box-sizing: border-box;
  animation: an_glow-pulse 2.5s ease-in-out infinite;
  /* The shared .clsBlueContainer sets overflow-x: hidden with no overflow-y,
     which browsers treat as overflow-y: auto by default when the two axes
     differ — since the corner sparkles (.an_clsSparkle) sit at negative
     offsets bleeding outside this box, that auto behavior both clipped them
     and produced an unwanted internal scrollbar. Overriding to fully visible
     here (higher specificity than the base class, so it always wins). */
  overflow: visible;
}

@keyframes an_glow-pulse {
  0%, 100% { box-shadow: 0 0 10px var(--an-accent, #29b6f6), 0 6px 16px rgba(0, 0, 0, 0.1); }
  50%      { box-shadow: 0 0 26px var(--an-accent, #29b6f6), 0 6px 16px rgba(0, 0, 0, 0.1); }
}

.an_clsAnswerCardContainer .question-text {
  color: var(--an-font, #0288d1);
}

/* Pull the page title and the "Your Answer" label into the same per-question
   theme color as the question text, instead of a black title + always-blue
   label + always-blue button clashing against each other. */
.an_clsNewAnswerPage > h1,
.questions-container > h1 {
  color: var(--an-font, #0288d1);
}

.an_clsAnswerCardContainer label,
.an_clsAnswerCardContainer .category {
  color: var(--an-font, #0288d1);
}

/* Fun color theme, picked per-question so every question gets a different
   sparkly border + font color instead of always the same blue. */
.an_theme-1 { --an-accent: #ff6ec7; --an-font: #d6009c; }
.an_theme-2 { --an-accent: #29b6f6; --an-font: #0288d1; }
.an_theme-3 { --an-accent: #66bb6a; --an-font: #2e7d32; }
.an_theme-4 { --an-accent: #ffa726; --an-font: #e65100; }
.an_theme-5 { --an-accent: #ab47bc; --an-font: #6a1b9a; }

.an_clsSparkle {
  position: absolute;
  font-size: 1.5em;
  pointer-events: none;
  animation: an_twinkle 1.8s ease-in-out infinite;
}

.an_clsSparkle-tl { top: -14px; left: -14px; }
.an_clsSparkle-tr { top: -14px; right: -14px; animation-delay: 0.4s; }
.an_clsSparkle-bl { bottom: -14px; left: -14px; animation-delay: 0.8s; }
.an_clsSparkle-br { bottom: -14px; right: -14px; animation-delay: 1.2s; }

@keyframes an_twinkle {
  0%, 100% { opacity: 0.35; transform: scale(0.8) rotate(0deg); }
  50%      { opacity: 1;    transform: scale(1.25) rotate(20deg); }
}

.an_clsNewAnswerPage .clsActions {
  margin-top: 20px;
}

.an_clsYesNoButtons {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 15px;
  margin-top: 10px;
}

.an_clsYesNoButtons form {
  display: inline;
}

.skip-form {
  margin-top: 15px;
}

/* NEW: left-aligned match list */
.match-list {
  text-align: left;
  margin: 2rem auto;
  max-width: 600px;
  padding-left: 2rem;
  font-size: 1.1rem;
}

.match-list li {
  margin: 0.8rem 0;
}

/* Hide the shared question */
.shared-question {
  display: none;
}
.clsBlueButton.small {
  font-size: 1rem;
  padding: 4px 8px;
  margin-left: 10px;
}

/* The action buttons (Update Answer / Cancel / Delete My Answer) at the
   default .clsButton size (height: 40px) look squished with longer labels
   like "Delete My Answer" — give them a bit more room. */
.clsActions .clsButton {
  height: 46px;
  padding: 10px 20px;
  font-size: 1.05em;
}
em { color: #2e7d32; font-weight: 600; }

.match-list + p em {
  color: #1976d2;
  font-weight: 600;
  font-style: normal;
}

/* ===== "More fun" visual pass for the Update Your Answer page only — colors/
   shadows/icons, no data or text removed. Everything below is scoped under
   .an_clsEditPage (only on this page's container) or an_-prefixed classes so
   none of it leaks onto the other pages that share .clsFormGroup /
   .clsEditAnswerContainer (admin's answer pages, daily_question, etc).
   Revert by restoring the pre-pass copies of this file and
   app/views/answers/edit.html.erb (ask Claude — it kept backups). ===== */

.an_clsEditPage.clsBlueContainer {
  box-shadow: 0 4px 14px rgba(2, 136, 209, 0.18);
}

/* One single card holding the question, notes, answer field, and buttons —
   instead of three separate boxed .clsFormGroup panels stacked on top of
   each other. */
.an_clsAnswerCard {
  background: #f5f9fc;
  border-radius: 12px;
  padding: 20px;
  box-shadow: 0 1px 4px rgba(0,0,0,0.08);
}

.an_clsAnswerCard .question-text {
  margin-bottom: 16px;
}

.an_clsAnswerCard-notes {
  margin-bottom: 16px;
  background: #fff;
  border: 1px solid #d8e8f5;
  border-radius: 10px;
  padding: 12px 16px;
}

.an_clsAnswerCard-notes-label {
  margin: 0 0 6px;
  font-size: 0.8em;
  font-weight: bold;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #5b7a94;
}

.an_clsAnswerCard-notes p {
  margin: 0;
}

.an_clsAnswerCard-field {
  margin-bottom: 16px;
}

.an_clsAnswerCard select,
.an_clsAnswerCard textarea {
  font-size: 1.05em;
  padding: 10px;
  border: 2px solid #90caf9;
  border-radius: 8px;
  transition: border-color 0.2s, box-shadow 0.2s;
}

.an_clsAnswerCard select:focus,
.an_clsAnswerCard textarea:focus {
  outline: none;
  border-color: #0288d1;
  box-shadow: 0 0 0 3px rgba(2, 136, 209, 0.15);
}

/* The two match sections — distinct accent colors so they don't both read
   as the same flat blue-bordered box (same base treatment used for the
   dashboard's Today/Yesterday QOTD cards). */
.an_clsMatchSection {
  border-radius: 12px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}

.an_clsMatchSection-same {
  border: 2px solid #26a69a !important;
  background-color: #e0f2f1;
}

.an_clsMatchSection-top {
  border: 2px solid #f5a623 !important;
  background-color: #fff8ec;
}

.an_clsSectionIcon {
  margin-right: 4px;
}

.an_clsEditPage .match-list li {
  background: rgba(255,255,255,0.6);
  border-radius: 8px;
  padding: 8px 12px;
}

.beta-container {

  margin: 20px auto;
  background: #f9f9f9;
  padding: 20px;
  border-radius: 10px;
  font-size: 20px; /* Increased base font size */
}

/* Become a Beta Tester Heading */
h1 {
  text-align: center;
  font-size: 50px; /* Larger heading */
}

.beta-duties {
  list-style: none;
  padding: 0;
}

.beta-duties li {
  margin: 10px 0;
  font-size: 20px; /* Larger list items */
}

.question {
  text-align: center;
  margin: 28px 0;
}


#submit-btn {
  background: #FFC107; /* Vibrant yellow for 'heck yeah!' */
}

#submit-btn:hover {
  background: #FFB300; /* Slightly darker yellow on hover */
}

button:hover {
  background: #009ACD;
}


.hidden {
  display: none;
}

.form-group {
  margin: 15px 0;
}

input {
  padding: 10px; /* Slightly larger padding for inputs */
  border: 1px solid #ddd;
  border-radius: 4px;
 
}
/* .clsButton's base height:40px fights the browser's own vertical-align on
   <input type="submit">/<button> text, the same issue fixed on Update
   Settings/Update User elsewhere on the site — height:auto + line-height
   lets padding alone center the label top-to-bottom instead. Applies to
   every button on this page, small or full-size. */
.checkin-page .clsButton {
  height: auto;
  line-height: normal;
}

.checkin-page {
  /* Was a fixed 700px, so it stayed narrow no matter how wide the browser
     was. Now it grows with the viewport, capped so it doesn't stretch too
     far on an ultra-wide monitor. */
  width: 100%;
  max-width: 1400px;
  margin: 0 auto;
  padding: 20px;
  box-sizing: border-box;
}

.checkin-main-layout {
  display: flex;
  gap: 24px;
  align-items: flex-start;
  flex-wrap: wrap;
}

.checkin-main-column {
  flex: 1 1 420px;
  min-width: 0;
}

.checkin-sidebar-column {
  flex: 1 1 380px;
  min-width: 0;
}

.checkin-page h1 {
  text-align: center;
  margin-bottom: 4px;
}

.checkin-tagline {
  text-align: center;
  color: #666;
  font-style: italic;
  margin-top: 0;
  margin-bottom: 24px;
}

.checkin-card {
  background: #fff;
  border: 1px solid #bfe3ff;
  border-radius: 10px;
  padding: 16px 20px;
  margin-bottom: 20px;
}

.checkin-card h2 {
  margin-top: 0;
}

.checkin-pending-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid #eef5fb;
}

.checkin-pending-row:last-child {
  border-bottom: none;
}

.checkin-deadline {
  color: #666;
  font-size: 0.85em;
  margin-left: 8px;
}

.checkin-confirm-btn {
  flex-shrink: 0;
}

.checkin-history-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.checkin-history-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid #eef5fb;
}

.checkin-history-row:last-child {
  border-bottom: none;
}

.checkin-history-time {
  color: #666;
  font-size: 0.85em;
  margin-left: 8px;
}

.checkin-history-nolocation {
  color: #999;
  font-size: 0.85em;
  font-style: italic;
}

.checkin-status {
  font-weight: bold;
  padding: 8px 12px;
  border-radius: 6px;
  margin-bottom: 14px;
  display: inline-block;
}

.checkin-status--active {
  background: #d4edda;
  color: #1a5c2a;
}

.checkin-status--paused {
  background: #fff3cd;
  color: #856404;
}

.checkin-status--unsaved {
  background: #eef5fb;
  color: #555;
  font-weight: normal;
}

.checkin-field {
  margin-bottom: 12px;
}

.checkin-field label {
  display: block;
  margin-bottom: 4px;
}

.checkin-inline-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-right: 16px;
}

.checkin-quota {
  font-size: 0.7em;
  color: #888;
  font-weight: normal;
}

.checkin-upsell {
  color: #666;
}

.checkin-hint {
  font-size: 0.85em;
  color: #777;
}

.checkin-contacts-list {
  list-style: none;
  padding: 0;
  margin: 0 0 16px;
}

.checkin-contact-row {
  border-bottom: 1px solid #eef5fb;
  padding: 8px 0;
}

.checkin-contact-row:last-child {
  border-bottom: none;
}

.checkin-contact-view {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}

.checkin-contact-info {
  display: flex;
  flex-direction: column;
}

.checkin-contact-email {
  font-size: 0.8em;
  color: #777;
}

.checkin-contact-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}

/* clsRoundButton flex-centers text top-to-bottom already; this just makes
   these particular buttons smaller so a row of them fits without crowding. */
.checkin-small-btn {
  height: auto;
  padding: 6px 14px;
  font-size: 0.85em;
}

.checkin-cancel-btn {
  background: #e9ecef;
  color: #444;
}

.checkin-contact-edit-form {
  display: flex;
  align-items: flex-end;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 10px;
}

.checkin-contact-edit-form .checkin-field {
  margin-bottom: 0;
}

.checkin-note {
  text-align: center;
  color: #888;
  font-size: 0.85em;
}
/* app/assets/stylesheets/contact.css */
.contact-container {
  max-width: 800px;
  margin: 60px auto;
  padding: 40px;
  background: linear-gradient(135deg, #007bff, #00ddeb);
  border-radius: 12px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  text-align: center;
}

.contact-container h1 {
  font-size: 36px;
  color: #fff;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
  margin-bottom: 20px;
}

.contact-container p {
  font-size: 15pt;
  color: #f0f8ff;
  margin-bottom: 20px;
}

.field {
  margin-bottom: 20px;
}

.field label {
  display: block;
  font-size: 15pt;
  color: #fff;
  margin-bottom: 5px;
}

.field input[type="text"],
.field input[type="email"],
.field textarea {
  width: 100%;
  padding: 10px;
  font-size: 15pt;
  border: 1px solid #fff;
  border-radius: 8px;
  box-sizing: border-box;
}

.field input[type="text"]::placeholder,
.field input[type="email"]::placeholder,
.field textarea::placeholder {
  color: #aaaaaa;
}

.field input[type="text"]:focus,
.field input[type="email"]:focus,
.field textarea:focus {
  outline: none;
  border-color: #ffeb3b;
  box-shadow: 0 0 5px rgba(255, 235, 59, 0.3);
}

.clsBlueButton {
  background-color: #ff6f61;
  color: white;
  padding: 12px 24px;
  border: none;
  border-radius: 8px;
  font-size: 15pt;
  cursor: pointer;
  transition: background-color 0.3s;
}

.clsBlueButton:hover {
  background-color: #e55a4e;
}

.clsCancelButton {
  background-color: #6c757d;
}

.clsCancelButton:hover {
  background-color: #5a6268;
}

.clsFlash.notice {
  background-color: #d4edda;
  color: #28a745;
  font-size: 15pt;
  text-align: center;
  padding: 10px;
  margin-bottom: 20px;
  border-radius: 4px;
}

.clsFlash.alert {
  background-color: #f8d7da;
  color: #dc3545;
  font-size: 15pt;
  text-align: center;
  padding: 10px;
  margin-bottom: 20px;
  border-radius: 4px;
}

.c_clsGreyedOutField {
  background-color: #f0f0f0;
  color: #666666;
  cursor: not-allowed;
}
.dq_clsContainer {
  max-width: min(760px, 92vw); /* uses more of the screen on wide browsers */
  margin: 10px auto;
  padding: 20px;
  display: flex;
  flex-direction: column;
  align-items: center; /* Centers all content horizontally */
  justify-content: center; /* Centers content vertically if needed */
}
.dq_clsTitle {
  font-size: 24px;
  color: #0288d1;
  margin-bottom: 10px; /* Reduced margin to move header higher */
}
.dq_clsQuestionBox {
  width: 100%; /* Ensures box spans container width */
  max-width: 100%; /* Prevents overflow */
  text-align: center; /* Centers text and inline elements */
  border-radius: 14px;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.18);
  padding: 24px 20px;
}

.dq_clsQuestionText {
  font-size: 26px; /* Increased font size */
  font-weight: bold;
  margin-bottom: 15px;
}
.dq_clsForm {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.dq_clsInput {
  width: 100%;
  max-width: 300px; /* Limits dropdown width */
  min-height: 40px; /* Reduced height for dropdown, not textarea */
  padding: 10px;
  font-size: 15pt;
  border: 1px solid #ccc;
  border-radius: 10px;
  resize: vertical;
}

.dq_clsYesNoButtons {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 20px;
  margin: 10px 0;
}

.dq_clsFormGroup {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}

.dq_clsActions {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 20px;
  margin-top: 10px;
}

.dq_clsButton {
  background: #007bff;
  color: white;
  padding: 12px 28px;
  border: none;
  border-radius: 25px;
  font-size: 15pt;
  cursor: pointer;
  transition: transform 0.2s, background 0.2s;
}

.dq_clsSubmit {
  width: 100%;
  max-width: 150px; /* Limits submit button width */
  margin: 0 auto; /* Centers button */
}

.dq_clsButton:hover {
  background: #0056b3;
  transform: scale(1.05);
}

.dq_clsButtonActive {
  background: #ffe066; /* house "highlight" yellow, see docs/design.md */
  color: #4d3800;
  font-weight: bold;
  box-shadow: inset 0 0 0 3px #d4a017;
}

.dq_clsButtonActive:hover {
  background: #ffd633;
  color: #4d3800;
}

.dq_clsButtonInactive {
  background: #dfe3e8;
  color: #8a9099;
}

.dq_clsButtonInactive:hover {
  background: #cdd2d9;
  color: #6c757d;
  transform: none;
}

.dq_clsExistingAnswer {
  display: flex;
  align-items: center;
  gap: 10px;
  text-align: left;
  background: #dcefe0;
  color: #1a7f37;
  border: 1px solid #1a7f37;
  border-radius: 10px;
  padding: 12px 16px;
  margin: 0 0 16px;
  font-size: 0.95em;
}

.dq_clsExistingAnswerCheck {
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #1a7f37;
  color: white;
  font-weight: bold;
  display: flex;
  align-items: center;
  justify-content: center;
}

.dq_clsExistingAnswerValue {
  font-size: 1.3em;
}

.dq_clsExistingAnswerHint {
  color: #3f7a52;
  font-size: 0.9em;
}

.dq_clsSaveNotice {
  display: flex;
  align-items: center;
  gap: 10px;
  text-align: left;
  background: #fff8e1;
  color: #5f4b00;
  border: 1px solid #e6c268;
  border-radius: 10px;
  padding: 12px 16px;
  margin: 0 0 16px;
  font-size: 0.95em;
}

.dq_clsSaveNoticeIcon {
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #e6c268;
  color: #5f4b00;
  font-weight: bold;
  display: flex;
  align-items: center;
  justify-content: center;
}

.dq_clsSaveNoticeHint {
  color: #7a6420;
  font-size: 0.9em;
}

.dq_clsViewResults {
  background: #1a7f37;
  width: 100%;
  max-width: 320px;
  padding: 16px 28px;
  font-size: 17pt;
  font-weight: bold;
}

.dq_clsViewResults:hover {
  background: #145c29;
}

.dq_clsSignUp {
  background: #6c757d;
}

.dq_clsSignUp:hover {
  background: #5a6268;
}

.dq_clsError {
  color: #dc3545;
  font-size: 15pt;
}

.dq_clsBreakdownTable {
  width: 100%;
  border-collapse: collapse;
  margin: 16px 0;
  text-align: center;
}

.dq_clsBreakdownTable thead th {
  padding: 8px;
  font-size: 0.9em;
  color: #555;
  border-bottom: 2px solid #0288d1;
}

.dq_clsBreakdownTable tbody th {
  padding: 10px 8px;
  text-align: left;
  font-weight: bold;
  color: #333;
  border-top: 1px solid #d8dee5;
  white-space: nowrap;
}

.dq_clsBreakdownTable tbody td {
  padding: 10px 8px;
  border-top: 1px solid #d8dee5;
  color: #333;
}

.dq_clsBreakdownTotalCol {
  font-weight: bold;
  color: #0288d1;
}

.dq_clsMeter {
  height: 6px;
  border-radius: 3px;
  background: #e9edf1;
  overflow: hidden;
  margin: 0 auto 4px;
}

.dq_clsMeterFill {
  height: 100%;
  background: #0288d1;
  border-radius: 3px;
}

.dq_clsMeterFillWinner {
  background: #1a7f37;
}

.dq_clsBreakdownWinnerRow th {
  color: #1a7f37;
}

.dq_clsBreakdownWinnerCell {
  color: #1a7f37 !important;
}

.dq_clsRoomPromo {
  background: #f5f5f5;
  border-radius: 12px;
  padding: 16px;
  margin: 16px 0;
  text-align: center;
}

.dq_clsRoomPromoText {
  margin: 0 0 10px;
  color: #333;
}

.dq_clsRoomButton {
  background: #0288d1; /* brand blue, see docs/design.md palette */
}

.dq_clsRoomButton:hover {
  background: #026ba3;
}

.dq_clsRoomPeek {
  background: #5aa9d6;
}

.dq_clsRoomPeek:hover {
  background: #0288d1;
}

.dq_clsRoomPromoHint {
  margin: 10px 0 0;
  font-size: 0.85em;
  color: #777;
}

/* Red border/tint = "admin-only" everywhere on the site (this panel is
   always admin-gated, so it always gets the treatment). */
.dq_clsAdminDebug {
  max-width: 600px;
  margin: 20px auto 0;
  padding: 8px 12px;
  font-size: 0.85em;
  color: #555;
  background: #fdecea;
  border: 1px dashed #e57373;
  border-radius: 8px;
}

.dq_clsAdminDebug summary {
  cursor: pointer;
  font-weight: bold;
  color: #6c757d;
}

.dq_clsAdminDebug div {
  margin-top: 6px;
  font-family: monospace;
}
/* assets/stylesheets/dashboard.css */
.db_dashboard-page {
  margin: 0 auto;
  padding: 6px 20px 20px;
  width: 100%;
  box-sizing: border-box;
}

.db_dashboard-page h1 {
  color: #007bff;
  text-align: center;
  margin-top: 0;
  margin-bottom: 6px;
  font-size: 1.8em;
}

section {
  margin-bottom: 30px;
  padding: 15px;
  border: 1px solid #007bff;
  border-radius: 5px;
}

section h2 {
  color: #00b7eb;
  font-size: 1.5em;
  margin-bottom: 10px;
}

ul {
  list-style: none;
  padding: 0;
}

ul li {
  margin-bottom: 10px;
  font-size: 15pt;
}

/* Existing styles */
.db_match-teaser {
  margin-top: 1rem;
  font-style: italic;
  color: #007bff;
  text-align: center;
}

/* A festive gradient card in place of the mismatched blue .clsBlueContainer
   that used to sit inside this already-green-themed section — see
   .db_dash-events below for the section's own green border/heading color. */
.db_events-container {
  background: linear-gradient(135deg, #f3fff8, #e6f9f0);
  border-radius: 10px;
  padding: 10px;
  box-shadow: 0 2px 6px rgba(40, 167, 69, 0.15);
}

.db_events-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 15pt;
  border-radius: 10px;
  overflow: hidden;
}



.db_events-table td {
  padding: 12px;
  text-align: left;
  border-bottom: 1px solid #ddd;
}

.db_events-table th {
  background: linear-gradient(135deg, #28a745, #1e7e34);
  border-bottom: 1px solid #ddd;
  color: white;
  font-weight: bold;
  padding: 12px;
  text-align: left;
}


.db_events-table tr:nth-child(even) {
  background-color: #f8f9fa;
}

.db_events-table tr:hover {
  background-color: #e6f9f0;
}

.db_events-icon {
  margin-right: 4px;
}

.db_events-name-link {
  display: block;
  color: #1e7e34;
  font-weight: bold;
  text-decoration: none;
}

.db_events-name-link:hover {
  text-decoration: underline;
}

.db_events-interested-badge {
  display: inline-block;
  background: linear-gradient(135deg, #d4f7e2, #b7ecc9);
  color: #1e7e34;
  font-weight: bold;
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 0.85em;
}

/* Admin-only — red-shaded background + bold red border, same "this is
   admin-only" convention as .clsAdminOnlyBadge, sized down to sit as a
   small chip next to the public interested-count badge above. */
.db_events-admin-chip {
  display: inline-block;
  margin-left: 6px;
  background-color: #fdecea;
  border: 1px solid #c0392b;
  color: #c0392b;
  font-weight: bold;
  padding: 1px 7px;
  border-radius: 10px;
  font-size: 0.7em;
  white-space: nowrap;
}

/* :not(.db_events-name-link) — this used to blanket-style every <a> in the
   table as a blue button (originally just "More Info"/"Edit"); once the
   event name itself became a plain link it started rendering as a big blue
   button too, which is not the intent. */
.db_events-table td a:not(.db_events-name-link):not(.db_events-admin-chip) {
  padding: 8px 16px;
  font-size: 15pt;
  background-color: #007bff;
  color: white;
  border-radius: 4px;
  text-decoration: none;
  display: inline-block;
  touch-action: manipulation; /* Improve touch responsiveness */
}

/* Mobile styles */
@media (max-width: 768px) {
  .db_dashboard-page {
    padding: 10px;
  }

  section {
    padding: 10px;
    margin-bottom: 20px;
  }

  section h2 {
    font-size: 1.3em;
  }

  ul li {
    font-size: 15pt;
    padding: 8px 0;
  }

  .db_events-table {
    font-size: 15pt;
  }

  .db_events-table thead {
    display: none; /* Hide header on mobile */
  }

  .db_events-table tr {
    display: block;
    margin-bottom: 15px;
    border: 1px solid #dee2e6;
    border-radius: 4px;
    padding: 10px;
    background-color: #fff;
  }

  .db_events-table tr:nth-child(odd) {
    background-color: #f9f9f9; /* Light gray for odd rows */
  }

  .db_events-table tr:nth-child(even) {
    background-color: #ffffff; /* White for even rows */
  }

  .db_events-table td {
    display: block;
    text-align: left;
    padding: 8px 10px;
    border: none;
    font-size: 15pt;
    background-color: #f9f9f9; /* Light gray for data fields */
    margin-bottom: 5px;
    border-radius: 4px;
  }

  .db_events-table td::before {
    content: attr(data-label);
    font-weight: bold;
    display: block;
    margin-bottom: 4px;
    color: #004085; /* Dark blue for label contrast */
    background-color: #cce5ff; /* Light blue background for labels */
    padding: 2px 8px;
    border-radius: 3px;
  }

  /* Show only critical columns on mobile */
  .db_events-table td:nth-child(1), /* Event Date */
  .db_events-table td:nth-child(2) { /* Event Name (now also the edit-answer link) */
    display: block;
  }

  .db_events-table td:nth-child(3), /* # of People Interested */
  .db_events-table td:nth-child(4) { /* Notes */
    display: none; /* Hide less critical columns */
  }

  .db_events-table td a:not(.db_events-name-link):not(.db_events-admin-chip) {
    width: 100%;
    padding: 10px;
    font-size: 15pt;
    margin: 5px 0;
  }

  .clsBlueContainer {
    padding: 10px;
  }

  .db_match-teaser {
    font-size: 15pt;
  }

  .db_dash-actions .clsBlueButton {
    display: block;
    width: 100%;
    max-width: 200px;
    margin: 10px auto;
    padding: 10px;
    font-size: 15pt;
    text-align: center;
  }
}
.db_dash-random p {
  font-size: 1.5em;
  font-weight: bold;
  color: #007bff;
  margin-bottom: 15px;
}

@media (max-width: 768px) {
  .db_dash-random p {
    font-size: 1.3em;
  }
}

.db_qotd-today, .db_qotd-yesterday {
  background: #f9f9f9;
  padding: 15px;
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  margin-bottom: 20px;
  text-align: center;
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
}

.db_qotd-today h2, .db_qotd-yesterday h2 {
  color: #007bff;
  margin-bottom: 10px;
}

.db_qotd-today p, .db_qotd-yesterday p {
  font-size: 15pt;
  margin-bottom: 10px;
}

.db_qotd-percent {
  font-size: 1rem;
  color: #555;
  margin-top: 4px;
}

/* Responsive QOTD Row */
.db_checkin-row {
  width: 100%;
  box-sizing: border-box;
  margin-bottom: 8px;
}

.db_checkin-group {
  border: 2px solid #e8590c;
  background-color: #fff3e8;
  padding-top: 6px;
  margin-top: 0;
}

.db_checkin-group h2 {
  margin-top: 0;
}

.db_checkin-header-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
}

.db_checkin-header-row h2 {
  margin-bottom: 0;
  white-space: nowrap;
}

.db_checkin-status {
  flex: 1;
  color: #555;
}

.db_checkin-title-link {
  color: inherit;
  text-decoration: none;
}

.db_checkin-title-link:hover {
  text-decoration: underline;
}

.db_qotd-row {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  justify-content: center;
  margin-bottom: 8px;
  width: 100%;
  box-sizing: border-box;
}

.db_dash-events {
  margin-top: 0;
  padding-top: 6px;
}

.db_dash-events h2 {
  margin-top: 0;
}

.db_qotd-row section {
  flex: 1;
  min-width: 280px;
  max-width: 600px;
  width: 100%;
  box-sizing: border-box;
}

.db_qotd-percent {
  font-size: 15pt;
  color: #555;
  margin-top: 4px;
}

/* Today = warm accent, Yesterday = cooler/muted accent — makes the two
   cards visually distinct from each other at a glance. */
.db_qotd-today_group {
  border: 2px solid #f5a623;
  background-color: #fff8ec;
  padding-top: 6px;
}

.db_qotd-yesterday_group {
  border: 2px solid #6c757d;
  background-color: #f4f5f6;
  padding-top: 6px;
}

.db_qotd-today_group h2,
.db_qotd-yesterday_group h2 {
  margin-top: 0;
}

.db_qotd-icon {
  margin-right: 4px;
}

.db_qotd-bars {
  margin-top: 10px;
}

.db_qotd-bar-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}

.db_qotd-bar-label {
  /* Was a fixed 70px, which clipped longer options (e.g. "Sometimes") with
     an ellipsis even when there was plenty of room in the row — size to
     content instead, with 70px only as a floor for short labels like "Yes". */
  min-width: 70px;
  flex-shrink: 0;
  font-size: 0.85em;
  color: #444;
  white-space: nowrap;
}

.db_qotd-bar-track {
  flex: 1;
  height: 10px;
  background-color: #e9ecef;
  border-radius: 5px;
  overflow: hidden;
}

.db_qotd-bar-fill {
  display: block;
  height: 100%;
  border-radius: 5px;
}

.db_qotd-bar-fill-today {
  background-color: #f5a623;
}

.db_qotd-bar-fill-yesterday {
  background-color: #6c757d;
}

/* Mobile: stack + full width */
@media (max-width: 768px) {
  .db_qotd-row {
    flex-direction: column;
    align-items: stretch;
    padding: 0 10px;
  }
  
  .db_qotd-row section {
    min-width: 0;
    max-width: 100%;
    width: 100%;
  }
   .db_dash-row-flex {
    flex-direction: column;
  }
  .db_dash-row-flex > section {
    flex: 1 1 auto;
    min-width: 0;
  }

}
/* Flex row for Saved Searches & Trending Questions */
.db_dash-row-flex {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  margin-bottom: 30px;
}
.db_dash-row-flex > section {
  flex: 1 1 300px;   /* grow, shrink, min 300px */
  min-width: 280px;
}

.db_dash-searches h2,
.db_dash-trending h2,
.db_dash-notifications h2,
.db_dash-random h2,
.db_dash-due h2 {
  margin-top: 0;
}

.db_qotd-not-answered {
  color: #a67c00;
  background: #fffbe0;
  border: 1px solid #d4ac0d;
  border-radius: 6px;
  padding: 6px 10px;
  font-weight: bold;
  display: inline-block;
}

.db_dash-count-badge {
  font-size: 0.6em;
  color: #666;
  font-weight: normal;
}

.db_notification-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.db_notification-card {
  margin-bottom: 0;
}

.db_notification-link {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 10px 14px;
  background: linear-gradient(135deg, #fff0f6, #ffe0ec);
  border: 1px solid #f8bbd0;
  border-radius: 12px;
  text-decoration: none;
  color: #333;
  transition: transform 0.15s, box-shadow 0.15s;
}

.db_notification-link:not(.db_notification-static):hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 10px rgba(232, 62, 140, 0.2);
}

.db_notification-static {
  cursor: default;
}

.db_notification-icon {
  font-size: 1.4em;
  line-height: 1.2;
}

.db_notification-text {
  display: flex;
  flex-direction: column;
  gap: 3px;
  flex: 1;
}

.db_notification-text strong {
  color: #b3236f;
}

.db_notification-meta {
  font-size: 0.75em;
  color: #888;
}

.db_notification-msg {
  font-size: 0.9em;
  color: #555;
}

.db_notification-count {
  align-self: flex-start;
  background: #e83e8c;
  color: white;
  font-size: 0.75em;
  font-weight: bold;
  padding: 2px 8px;
  border-radius: 10px;
}

.db_dash-searches-trending-container {
  background: #eaf6ff;
  border: 1px solid #007bff;
  border-radius: 10px;
  padding: 20px;
}

/* Fun distinct color per dashboard container, so each section is easy to
   tell apart at a glance instead of every box being the same blue. */
.db_dash-events {
  background: #e6f9f0;
  border-color: #28a745;
}
.db_dash-events h2 {
  color: #1e7e34;
}

.db_dash-matches {
  background: #f3e8ff;
  border-color: #8e44ad;
}
.db_dash-matches h2 {
  color: #6c3483;
}

.db_dash-searches.db_dash-searches-trending-container {
  background: #e0f7fa;
  border-color: #17a2b8;
}
.db_dash-searches h2 {
  color: #117a8b;
}

.db_dash-trending.db_dash-searches-trending-container {
  background: #fff4e0;
  border-color: #fd7e14;
}
.db_dash-trending h2 {
  color: #c05e00;
}

.db_dash-rooms.db_dash-searches-trending-container {
  background: #ffece6;
  border-color: #e8590c;
  margin: 16px 0;
}
.db_dash-rooms h2 {
  color: #bf400c;
}
.db_room-teaser-heading {
  color: #bf400c;
  font-size: 1em;
  margin: 14px 0 8px;
}
.db_room-teaser-heading:first-of-type {
  margin-top: 4px;
}
.db_room-teaser-link {
  background: linear-gradient(135deg, #ffece6, #ffd3bd);
  border-color: #ff9662;
  color: #bf400c;
}
.db_room-teaser-link:hover {
  box-shadow: 0 4px 12px rgba(232, 89, 12, 0.3);
}
.db_room-teaser-stat {
  font-size: 0.85em;
  opacity: 0.85;
  white-space: nowrap;
}

.db_dash-notifications {
  background: #ffe8f0;
  border-color: #e83e8c;
}
.db_dash-notifications h2 {
  color: #b3236f;
}

.db_dash-random {
  background: #eef0ff;
  border-color: #6f42c1;
}
.db_dash-random h2 {
  color: #4b2e83;
}

.db_dash-due {
  background: #fffbe0;
  border-color: #d4ac0d;
  text-align: center;
}
.db_dash-due h2 {
  color: #a67c00;
}

.db_dash-due-question {
  font-size: 1.5em;
  font-weight: bold;
  color: #a67c00;
  margin-bottom: 15px;
}

.db_dash-random {
  text-align: center;
}

.db_dash-notifications-title {
  text-align: center;
}

.db_saved-search-name {
  text-decoration: none;
}

.db_saved-search-name:hover {
  text-decoration: underline;
}

.db_trending-range {
  font-size: 0.8em;
  color: #a5651e;
  margin-top: -6px;
  margin-bottom: 12px;
}

.db_trending-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.db_trending-card {
  margin-bottom: 0;
}

.db_trending-link {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: linear-gradient(135deg, #fff4e0, #ffe4c4);
  border: 1px solid #ffb877;
  border-radius: 12px;
  text-decoration: none;
  color: #c05e00;
  font-weight: bold;
  transition: transform 0.15s, box-shadow 0.15s;
}

.db_trending-link:hover {
  transform: translateY(-2px) scale(1.01);
  box-shadow: 0 4px 12px rgba(253, 126, 20, 0.3);
}

.db_trending-rank {
  font-size: 0.85em;
  color: #fd7e14;
  min-width: 22px;
}

.db_trending-icon {
  font-size: 1.3em;
}

.db_trending-name {
  flex: 1;
}

.db_trending-flame {
  font-size: 1.1em;
  animation: db_flame-flicker 1.4s infinite ease-in-out;
}

@keyframes db_flame-flicker {
  0%, 100% { transform: scale(1) rotate(0deg); opacity: 1; }
  50% { transform: scale(1.15) rotate(-4deg); opacity: 0.85; }
}

.db_saved-search-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.db_saved-search-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 0;
  padding: 10px 14px;
  background: linear-gradient(135deg, #eef7ff, #e0f3ff);
  border: 1px solid #bfe3ff;
  border-radius: 12px;
  transition: transform 0.15s, box-shadow 0.15s;
}

.db_saved-search-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 10px rgba(0, 123, 255, 0.15);
}

.db_saved-search-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.db_saved-search-name {
  font-weight: bold;
  color: #0288d1;
}

.db_saved-search-date {
  font-size: 0.75em;
  color: #666;
}

/* Small inline variant of .clsAdminOnlyBadge, sized to sit next to the
   "(X answered)" QOTD stat instead of the default badge padding/size. */
/* Extra-specific selector (not just .db_qotd-admin-chip) so this reliably
   wins over .clsAdminOnlyBadge's own padding/border/radius regardless of
   which file Sprockets' require_tree happens to concatenate last. */
.db_qotd-percent .db_qotd-admin-chip {
  margin-left: 8px;
  padding: 1px 7px;
  font-size: 0.65em;
  font-weight: bold;
  border-width: 1px;
  border-radius: 10px;
  vertical-align: middle;
  text-decoration: none;
  white-space: nowrap;
}

/* Red = "admin-only" everywhere on the site. */
.db_clsAdminOnlyBox {
  margin: 0.5rem 0 1.5rem;
  padding: 12px;
  border: 2px solid #dc3545;
  border-radius: 6px;
  background-color: #fdecea;
}

.db_clsAdminOnly {
  background-color: #dc3545;
}

/* app/assets/stylesheets/events.css */
/* also, uses events_phone.css */

.ev_response {
  font-size: 15pt;
  margin: 0;
  color: #2e7d32;
}
.ev_form {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-top: 12px;
}
.ev_select {
  padding: 6px;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 15pt;
}
.ev_submit {
  padding: 6px 12px;
}

.ev_login-blurb {
  background-color: #e3f2fd;
  border: 1px solid #bbdefb;
  border-radius: 8px;
  padding: 16px;
  margin: 20px 0;
  font-size: 15pt;
  color: #1565c0;
  text-align: center;
}
.ev_login-blurb p {
  margin: 0;
}

.ev_events-table {
width: 100%;
margin: 20px 0;
}

.ev_events-table td {
  padding: 12px;

}

.ev_events-table th {
  
  font-weight: bold;
  padding: 12px;
  text-align: left;

}

  .ev_events-table tr.today {
background-color: #b8e1ff; /* light blue */
}

.ev_events-table tr.tomorrow {
    background-color: #bae1ba; /* light green */
}
.ev_events-table tr.past {
  background-color: #dddddd; /* grey */
}

/* Fun touches — icon per event, colorful "Today"/"Tomorrow" badges, a
   playful interest-count pill, and a little row hover lift. Nothing here
   removes or replaces content, just dresses it up. */
.ev_events-table tbody tr {
  transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.ev_events-table tbody tr:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 6px rgba(0,0,0,0.15);
}

.ev_event-icon {
  font-size: 1.3em;
  vertical-align: middle;
  margin-right: 4px;
}

.ev_event-name-link {
  color: #0d47a1;
  text-decoration: underline;
  font-weight: bold;
}
.ev_event-name-link:hover {
  color: #08306b;
}

.ev_when-badge {
  display: inline-block;
  font-weight: bold;
  font-size: 0.8em;
  padding: 2px 10px;
  border-radius: 999px;
  margin-bottom: 4px;
  color: #fff;
}
.ev_when-today {
  background: linear-gradient(135deg, #ff7e5f, #feb47b);
}
.ev_when-tomorrow {
  background: linear-gradient(135deg, #43cea2, #185a9d);
}

.ev_interest-badge {
  display: inline-block;
  background: #fff3cd;
  color: #856404;
  border: 1px solid #ffe066;
  border-radius: 999px;
  padding: 2px 10px;
  font-weight: bold;
}
@media (max-width: 768px) {
  .ev_events-table thead { display: none; }

  .ev_events-table,
  .ev_events-table tbody,
  .ev_events-table tr,
  .ev_events-table td {
    display: block;
    width: 100%;
    box-sizing: border-box;
  }

  .ev_events-table tr {
    margin-bottom: 16px;
    border: 1px solid #ddd;
    border-radius: 8px;
    padding: 8px;
    background-color: white;
  }

  /* Mobile today/tomorrow colors - match your main events.css */
  .ev_events-table tr.today {
    background-color: #b8e1ff !important;  /* light blue */
  }
  .ev_events-table tr.tomorrow {
    background-color: #bae1ba !important;  /* light green */
  }
  .ev_events-table tr.today td,
  .ev_events-table tr.tomorrow td {
    background-color: inherit !important;
  }

  .ev_events-table td { border: hidden; }

  .ev_events-table td::before {
    content: attr(data-label);
    display: block;
    font-weight: bold;
    color: #1a5fb4;
    margin-bottom: 4px;
    font-size: 15pt;
  }

  .ev_events-table td.ev_rsvp-cell {
    display: flex;
    align-items: center;
    gap: 6px;
  }

  .ev_events-table td.ev_rsvp-cell::before {
    display: inline;
    margin-bottom: 0;
  }

  .ev_combined-field {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 20px;
    align-items: center;
    padding: 8px 0 12px !important;
  }

  .ev_label {
    font-weight: bold;
    color: #1a5fb4;
    margin-right: 4px;
  }

  .ev_value { flex: 1; min-width: 80px; }

  .ev_value a.clsBlueLink {
    color: #1a5fb4;
    text-decoration: underline;
  }

  @media (max-width: 480px) {
    .ev_combined-field {
      flex-direction: column;
      align-items: flex-start;
      gap: 8px;
    }
    .ev_label { margin-right: 0; }
  }
}
/* app/assets/stylesheets/faqs.css */
.faqs-container {
  max-width: 800px;
  margin: 60px auto;
  padding: 40px;
  background: linear-gradient(135deg, #007bff, #00ddeb);
  border-radius: 12px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  text-align: center;
}

.faqs-container h1 {
  font-size: 36px;
  color: #fff;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
  margin-bottom: 20px;
}

.faqs-container h2 {
  font-size: 24px;
  color: #fff;
  margin: 20px 0 10px;
  text-align: left;
}

.faqs-container p {
  font-size: 15pt;
  color: #f0f8ff;
  margin-bottom: 15px;
  text-align: left;
}

.actions {
  display: flex;
  justify-content: center;
  margin-top: 20px;
}


.clsFlash.notice {
  background-color: #d4edda;
  color: #28a745;
  font-size: 15pt;
  text-align: center;
  padding: 10px;
  margin-bottom: 20px;
  border-radius: 4px;
}

.clsFlash.alert {
  background-color: #f8d7da;
  color: #dc3545;
  font-size: 15pt;
  text-align: center;
  padding: 10px;
  margin-bottom: 20px;
  border-radius: 4px;
}
/* app/assets/stylesheets/feedback.css */
.feedback-container {
  max-width: 800px;
  margin: 60px auto;
  padding: 40px;
  background: linear-gradient(135deg, #007bff, #00ddeb);
  border-radius: 12px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  text-align: center;
}

.feedback-container h1 {
  font-size: 36px;
  color: #fff;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
  margin-bottom: 20px;
}

.feedback-container p {
  font-size: 15pt;
  color: #f0f8ff;
  margin-bottom: 20px;
}

.field {
  margin-bottom: 20px;
}

.field label {
  display: block;
  font-size: 15pt;
  color: #fff;
  margin-bottom: 5px;
}

.field select,
.field textarea {
  width: 100%;
  padding: 10px;
  font-size: 15pt;
  border: 1px solid #fff;
  border-radius: 8px;
  box-sizing: border-box;
}

.field select option,
.field textarea::placeholder {
  color: #aaaaaa;
}

.field select:focus,
.field textarea:focus {
  outline: none;
  border-color: #ffeb3b;
  box-shadow: 0 0 5px rgba(255, 235, 59, 0.3);
}

.actions {
  display: flex;
  justify-content: center;
  gap: 20px;
}

.clsBlueButton {
  background-color: #ff6f61;
  color: white;
  padding: 12px 24px;
  border: none;
  border-radius: 8px;
  font-size: 15pt;
  cursor: pointer;
  transition: background-color 0.3s;
}

.clsBlueButton:hover {
  background-color: #e55a4e;
}

.clsCancelButton {
  background-color: #6c757d;
}

.clsCancelButton:hover {
  background-color: #5a6268;
}

.clsFlash.notice {
  background-color: #d4edda;
  color: #28a745;
  font-size: 15pt;
  text-align: center;
  padding: 10px;
  margin-bottom: 20px;
  border-radius: 4px;
}

.clsFlash.alert {
  background-color: #f8d7da;
  color: #dc3545;
  font-size: 15pt;
  text-align: center;
  padding: 10px;
  margin-bottom: 20px;
  border-radius: 4px;
}

.f_site-footer {
  background-color: #007bff;
  color: #fff;
  padding: 2px 0;
  text-align: center;
  margin-top: 40px;
}

.f_footer-container {
  max-width: 800px;
  margin: 0 auto;
  padding: 0 20px;
}

.f_footer-container p {
  font-size: 15pt;
  margin: 6px 0;
}

.f_clsWordmark {
  font-family: 'Baloo 2', sans-serif;
  font-weight: 700;
  font-size: 18pt;
}

.f_clsFooterLink {
  color: #ffeb3b; 
  text-decoration: none;
  margin: 0 10px;
}

.f_clsFooterLink:hover {
  color: #ffd700; /* Slightly darker yellow on hover */
  text-decoration: underline;
}
.gs_guided-search-page {
  margin: 0 auto;
  padding: 20px;
  max-width: 1200px;
}
.s_clsGuidedDivSearchContainer {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.s_clsDivSearchMain {
  padding: 15px;
}
.s_clsDivListSavedSearches {
  padding: 15px;
  border-top: 1px solid #ccc;
}
.s_clsDivListSavedSearches h3 {
  margin-top: 0;
}
.s_clsDivListSavedSearches ul {
  list-style-type: none;
  padding: 0;
}
.s_clsDivListSavedSearches li {
  margin-bottom: 10px;
}
.s_clsDivListSavedSearches a {
  text-decoration: none;
 
}
.s_clsDivListSavedSearches a:hover {
  text-decoration: underline;
}
@media (min-width: 768px) {
  .s_clsGuidedDivSearchContainer {
    flex-direction: row;
  }
  .s_clsDivSearchMain {
    flex: 3;
    order: 1;
  }
  .s_clsDivListSavedSearches {
    flex: 1;
    order: 2;
    border-top: none;
    border-left: 1px solid #ccc;
  }
}
/* app/assets/stylesheets/home.css */
.home-container.clsBlueContainer {
  background: linear-gradient(135deg, #007bff, #00ddeb);
  border-radius: 12px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  text-align: center;
  padding: 20px;
}

.home-container h1 {
  font-size: 36px;
  color: #fff;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
  margin-bottom: 20px;
}

.home-container h2 {
  font-size: 28px;
  color: #fff;
  margin-bottom: 20px;
}

.home-container h3 {
  font-size: 24px;
  color: #fff;
  margin-bottom: 15px;
  margin-top: 0;
}

.home-container h4 {
  font-size: 20px;
  color: #f0f8ff;
  margin-bottom: 10px;
}

.home-container p {
  font-size: 15pt;
  color: #f0f8ff;
  margin-bottom: 15px;
}

.hero-image {
  margin: 20px 0;
  border-radius: 10px;
  background: linear-gradient(45deg, #007bff, #00bcd4);
  height: 400px;
  color: #fff;
  line-height: 200px;
  font-size: 15pt;
}

.value-prop,
.features,
.social-proof {
  margin: 30px 0;
}

.feature-box {
  display: inline-block;
  width: 30%;
  margin: 10px;
  vertical-align: top;
  padding: 15px;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 8px;
}



.social-proof em {
  font-style: italic;
  color: #e0e7ff;
}


@media (max-width: 800px) {
  .home-container h1 {
    font-size: 26px;
  }

  .home-container h2 {
    font-size: 24px;
  }

  .home-container h3 {
    font-size: 22px;
  }

  .home-container h4 {
    font-size: 15pt;
  }

  .home-container p {
    font-size: 15pt;
  }

  .hero-image {
    height: 150px;
  }

  .feature-box {
    width: auto;
  }
}
.inv_page {
  max-width: 60rem;
  margin: 0 auto;
  padding: 1.5rem;
  font-family: system-ui, -apple-system, sans-serif;
}

.inv_hero_image {
  width: 100%;
  height: 250px;
  object-fit: cover;
}

.inv_header h1 {
  font-size: 2rem;
  color: #007bff;
  margin: 1rem 0;
  text-align: center;
}

.inv_pitch p {
  font-size: 1.1rem;
  line-height: 1.5;
  margin-bottom: 1rem;
}

.inv_form h2 {
  font-size: 1.5rem;
  color: #007bff;
  margin-bottom: 1rem;
}

.inv_link_box, .inv_message_box, .inv_qr_box {
  margin-bottom: 1.5rem;
}

.inv_link_box input {
  width: 100%;
  padding: 0.5rem;
  font-size: 1rem;
  margin-bottom: 0.5rem;
}

.inv_message_box textarea {
  width: 100%;
  height: 100px;
  padding: 0.5rem;
  font-size: 1rem;
  margin-bottom: 0.5rem;
}

.inv_qr_box img {
  max-width: 200px;
}

.inv_reward h2 {
  font-size: 1.5rem;
  color: #007bff;
  margin-bottom: 1rem;
}

.inv_footer {
  text-align: center;
  margin-top: 2rem;
}

.clsBlueButton {
  background-color: #007bff;
  color: white;
  padding: 0.5rem 1rem;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  font-size: 1rem;
  margin: 0.5rem;
}

.clsBlueButton:hover {
  background-color: #0056b3;
}

@media (max-width: 720px) {
  .inv_header h1 {
    font-size: 1.5rem;
  }

  .inv_form h2, .inv_reward h2 {
    font-size: 1.25rem;
  }
}
/* app/assets/stylesheets/referral.scss (or wherever you keep component styles) */

.inv_form.coming-soon {
  position: relative;
  opacity: 0.55;
  pointer-events: none;           /* prevents clicking anything */
  user-select: none;
}

.inv_form.coming-soon .coming-soon-overlay {
  position: absolute;
  inset: 0;
  background: rgba(240, 240, 245, 0.75);
  backdrop-filter: blur(2px);
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
}

.inv_form.coming-soon .coming-soon-content {
  text-align: center;
  padding: 2rem;
  background: white;
  border-radius: 12px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.15);
  max-width: 90%;
}

.inv_form.coming-soon .coming-soon-content h3 {
  margin: 0 0 1rem;
  color: #e74c3c;
  font-size: 1.6rem;
}

.inv_form.coming-soon input,
.inv_form.coming-soon textarea {
  background: #f8f9fa;
  color: #777;
}

.inv_form.coming-soon button {
  opacity: 0.6;
}

/* Optional: make QR code look faded too */
.inv_form.coming-soon .inv_qr_image {
  filter: grayscale(80%) opacity(75%);
}


.clsAnswersContainer {

  margin: 0 auto;
  padding: 20px;
  text-align: center;
}


.clsAnswersTable {
  width: 100%;
  border-collapse: collapse;
  margin-top: 20px;
  user-select: none; /* Prevent text selection */
}

.clsAnswersTable td {
  border: 1px solid #ddd;
  padding: 10px;
  text-align: left;
}

.search-form .field {
  margin-bottom: 15px;
}

.clsNoAnswer {
  font-style: italic;
  color: #6c757d;
}

.clsEmoji {
  font-size: 1.2em;
}

/* Search / Clear / Answer More Questions felt squished at the base .clsButton
   size — give them a bit more room. Combined with .clsButton for higher
   specificity: application.css's own .clsButton rule compiles in last
   (require_self runs after require_tree) and would otherwise win the
   height/padding/font-size tie at equal specificity. */
.clsButton.lu_clsBigButton {
  height: 48px;
  padding: 10px 24px;
  font-size: 1.1em;
}
.cursor-pointer { cursor: pointer; }
.card:hover { border-color: var(--primary); transition: border-color 0.2s; }
.form-group { margin-bottom: 1.5rem; }
.btn-block { display: block; width: 100%; }
.shadow-sm { box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
.alert { padding: 1rem; border-radius: 0.5rem; margin-bottom: 1rem; }
.alert-danger { background: #ffebee; color: #c62828; border: 1px solid #ef9a9a; }
.text-center { text-align: center; }
.text-secondary { color: #666; }
.text-danger { color: #d32f2f; }
.mt-1 { margin-top: 0.25rem; }
.mt-3 { margin-top: 0.75rem; }
.mt-5 { margin-top: 1.25rem; }
.mb-4 { margin-bottom: 1rem; }
.py-3 { padding: 0.75rem 0; }
.p-4 { padding: 1.5rem; }
.w-100 { width: 100%; }
/* FROM CODE */
.li_day-sky-login.clsBlueContainer {
  margin: 30px auto;
  padding: 20px;
  background: linear-gradient(135deg, #007bff, #00ddeb);
  border-radius: 12px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  text-align: center;
  max-width: 500px;
}

  .li_clsSignupPrompt {
    font-size: 15pt !important;
    margin-top: 15px;
  }

.li_-login h1 {
  font-size: 36px;
  color: #fff;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
  margin-bottom: 20px;
}

.li_day-sky-login h2 {
  font-size: 28px;
  color: #fff;
  margin-bottom: 20px;
}

.li_day-sky-login p {
  font-size: 15pt;
  color: #f0f8ff;
  margin-bottom: 15px;
}

.li_day-sky-login.clsBlueContainer,
.li_sign-up-page.clsBlueContainer {
  margin: 30px auto;
  padding: 20px;
  background: linear-gradient(135deg, #007bff, #00ddeb);
  border-radius: 12px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  text-align: center;
  max-width: 500px;
}

.li_day-sky-login h1,
.li_sign-up-page h1 {
  font-size: 36px;
  color: #fff;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
  margin-bottom: 20px;
}

.li_day-sky-login h2,
.li_sign-up-page h2 {
  font-size: 28px;
  color: #fff;
  margin-bottom: 20px;
}

.li_day-sky-login p,
.li_sign-up-page p {
  font-size: 15pt;
  color: #f0f8ff;
  margin-bottom: 15px;
}


.li_action-box {
  margin: 20px 0;
  padding: 20px;
  background: rgba(255, 255, 255, 0.15);
  border: 2px solid #fff;
  border-radius: 10px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.li_action-box p {
  font-size: 15pt;
  color: #fff;
  margin-bottom: 15px;
}
.li_action-box.li_clsSkyGlow {
  margin: 20px 0;
  padding: 20px;
  background: rgba(255, 255, 255, 0.15);
  border: 2px solid #fff;
  border-radius: 10px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  transition: box-shadow 0.3s ease-in-out;
}

.li_action-box.li_clsSkyGlow:hover {
  box-shadow: 0 0 15px rgba(255, 255, 255, 0.5);
}

.li_clsField {
  margin: 15px 0;
  text-align: left;
}

.li_clsInputGlow input {
  border: 2px solid #deb887;
  border-radius: 5px;
  padding: 10px;
  width: 100%;
  box-sizing: border-box;
  transition: border-color 0.3s, box-shadow 0.3s;
}

.li_clsInputGlow input:focus {
  border-color: #f4a460;
  box-shadow: 0 0 10px rgba(244, 164, 96, 0.5);
  outline: none;
}

.li_clsLabel {
  color: #f0d804;
}

.li_clsVibrantLabel {
  color: #FEBE10;
  font-weight: bold;
  text-align: left;
}

.clsPulseButton {
  background: #4682b4;
  border: none;
  padding: 12px 24px;
  font-size: 1.1em;
  border-radius: 25px;
  cursor: pointer;
  transition: transform 0.2s, background 0.2s;
  color: white;
  animation: pulse 1.5s infinite;
}

.clsPulseButton:hover {
  background: #f4a460;
  transform: scale(1.05);
}

@keyframes pulse {
  0% { transform: scale(1); }
  50% { transform: scale(1.1); }
  100% { transform: scale(1); }
}

.li_clsSignupPrompt {
  margin-top: 20px;
  color: #f0f8ff;
  font-size: 15pt;
}

.clsDesertLink {
  color: #1a3c5e; /* Navy blue for readability, matching li_clsVibrantLabel */
  text-decoration: none;
  font-weight: bold;
  position: relative;
}

.clsDesertLink:hover {
  color: #deb887; /* Burlywood tan on hover */
}

.clsDesertLink:hover::after {
  content: "✨";
  position: absolute;
  right: -20px;
  animation: sparkle 0.5s;
}

@keyframes sparkle {
  0% { opacity: 0; transform: translateY(0); }
  100% { opacity: 1; transform: translateY(-5px); }
}

.clsAlert {
  color: #ff4d4d;
  background: rgba(255, 255, 255, 0.2);
  padding: 10px;
  border-radius: 5px;
  margin-bottom: 20px;
}

.clsAlert ul {
  list-style: none;
  padding: 0;
}

.clsAlert li {
  font-size: 15pt;
  margin: 5px 0;
}

@media (max-width: 580px) {
  .clsPulseButton {
    min-width: 240px;
    padding: 14px 20px;
    font-size: 1.2em;
  }

  .loginButton {
    margin: 0 !important;
    font-size: 15pt !important;
  }
}
@media (max-width: 600px) {
  .li_day-sky-login h1 {
    font-size: 15pt;     /* Much smaller than 36px */
    margin: 15px 0 10px;
  }
  


  .li_day-sky-login h2 {
    font-size: 15pt;     /* Much smaller than 28px */
    margin: 10px 0;
  }
  
  .li_day-sky-login p,
  .li_action-box p,
  .li_clsSignupPrompt {
    font-size: 15pt;       /* Down from 18px */
    margin: 8px 0;
    line-height: 1.4;
  }
  
  .li_action-box {
    padding: 15px;        /* Reduce padding to save vertical space */
    margin: 15px 0;
  }
  
  .li_day-sky-login.clsBlueContainer {
    margin: 20px auto;    /* Less top/bottom margin */
    padding: 10px;        /* Less internal padding */
    max-width: 90%;       /* Slightly wider on small screens for better fit */
  }
  
  .clsPulseButton {
    font-size: 1.1em;
    padding: 12px 20px;
  }
}
/* File: app/assets/stylesheets/match_quest.css */

.match-quest-container {
  max-width: 800px;
  margin: 0 auto;
  padding: 20px;
}

.match-quest-form {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.mq_clsMe {
  background-color: #ffd54f;
  border-radius: 8px;
  padding: 15px;
}

.mq_clsYou {
  background-color: #80cbc4;
  border-radius: 8px;
  padding: 15px;
}

.yes-no-options {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  justify-content: center;
  margin-top: 10px;
}

.priority-options {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  justify-content: center;
  margin-top: 10px;
}

/* Radio labels: radio button BEFORE the text */
.yes-no-options label,
.priority-options label {
  font-size: 15pt;
  cursor: pointer;
}

/* Ensure radio button comes before text */
.yes-no-options input[type="radio"],
.priority-options input[type="radio"] {
  order: -1;
  margin: 0;
  transform: scale(1.3); /* larger radio buttons for easier touch */
}

.form-input-radio:disabled + label {
  color: #888;
  cursor: not-allowed;
}

.clsGreenContainer {
  background-color: #a7e1b8;
  padding: 20px;
  border-radius: 8px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.clsGrayContainer {
  background-color: #f5f5f5;
  padding: 20px;
  border-radius: 8px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.clsYellowContainer {
  background-color: #fffde7;
  padding: 20px;
  border-radius: 8px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.clsCenteredBlueText {
  color: #0288d1;
  text-align: center;
  font-size: 15pt;
  margin-top: 10px;
}

.clsTheirAnswerContainer,
.clsPriorityContainer {
  text-align: center;
}

/* Section labels ("Their Answer" and "Your Priority") */
.clsTheirAnswerContainer label,
.clsPriorityContainer label {
  font-size: 15pt;
  font-weight: bold;
  margin-bottom: 12px;
}

.clsCenteredButton {
  display: block;
  margin: 20px auto 0;
  padding: 12px 24px;
  font-size: 15pt;
}

/* Mobile-specific adjustments */
@media (max-width: 768px) {
  .match-quest-container {
    padding: 15px;
  }

  h1, h2 {
    font-size: 1.5rem;
  }

  .yes-no-options,
  .priority-options {
    flex-direction: column;
    align-items: center;
    gap: 18px;
  }

  .yes-no-options label,
  .priority-options label {
    justify-content: center;
    width: 100%;
    font-size: 15pt;
  }

  .form-input,
  select.form-input {
    width: 100%;
    padding: 10px;
    font-size: 15pt;
  }

  .clsGreenContainer {
    padding: 15px;
  }

  .mq_clsMe,
  .mq_clsYou {
    padding: 12px;
  }

  .clsCenteredButton {
    width: 100%;
    max-width: 300px;
  }
}

.clsPulseAnimation {
  animation: pulse 2s infinite;
}

@keyframes pulse {
  0% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.4); }
  70% { box-shadow: 0 0 0 12px rgba(34, 197, 94, 0); }
  100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0); }
}
/* Existing base styles (keep these) */
/* .clsBlueContainer's own 20px margin + the browser's default <h1> top margin
   stack up into a noticeable gap above the title — scoped to this page only,
   since .clsBlueContainer is shared site-wide. */
.notifications-page.clsBlueContainer {
  margin-top: 8px;
}
.notifications-page h1 {
  margin-top: 4px;
}

/* Wrapper clips the table's corners into a rounded rectangle — border-radius
   on the table itself doesn't render cleanly with border-collapse: collapse. */
.notifications-table-wrap {
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.12);
}

.notifications-page .notifications-table {
  width: 100%;
  border-collapse: collapse;
}

.notifications-page th,
.notifications-page td {
  border: 1px solid #ccc;
  padding: 10px;
  text-align: left;
}

.notifications-page .notifications-table tbody tr {
  background-color: #ffffff;
  transition: background-color 0.15s;
}

.notifications-page .notifications-table tbody tr:nth-child(even) {
  background-color: #f5faff;
}

.notifications-page .notifications-table tbody tr:hover {
  background-color: #e3f2fd;
}

.notif-type-badge {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 20px;
  font-size: 0.85em;
  font-weight: bold;
  white-space: nowrap;
}

.notif-type-match {
  background: #f3e8ff;
  color: #6f42c1;
}

.notif-type-quest {
  background: #fff4e0;
  color: #c05e00;
}

.notif-type-question {
  background: #e0f7fa;
  color: #117a8b;
}

.notif-type-general {
  background: #eef0f2;
  color: #555;
}

.clsBlueButton {
  background-color: #007bff;
  color: white;
  padding: 5px 10px;
  text-decoration: none;
  border-radius: 3px;
  margin-right: 10px;
  display: inline-block;
  white-space: nowrap;
}

.notifications-page td:last-child {
  white-space: nowrap;
}

a.clsDeleteButton.clsDeleteButton {
  background-color: #dc3545;
  padding: 3px 8px;
  font-size: 0.85em;
}
a.clsDeleteButton.clsDeleteButton:hover {
  background-color: #b02a37;
}
/* Mobile-responsive design */
@media (max-width: 768px) {
  /* Each row becomes its own card below with its own shadow/radius — the
     desktop wrapper's overflow:hidden would clip those at the edges. */
  .notifications-table-wrap {
    border-radius: 0;
    overflow: visible;
    box-shadow: none;
  }

  .notifications-page .notifications-table,
  .notifications-page .notifications-table thead,
  .notifications-page .notifications-table tbody,
  .notifications-page .notifications-table tr,
  .notifications-page .notifications-table th,
  .notifications-page .notifications-table td {
    display: block;
    width: 100%;
  }

  /* Hide table header on mobile */
  .notifications-page .notifications-table thead tr {
    position: absolute;
    top: -9999px;
    left: -9999px;
  }

  /* Each notification as a card */
  .notifications-page .notifications-table tr {
    border: 1px solid #ccc;
    margin-bottom: 20px;
    padding: 15px;
    background: #f9f9f9;
    border-radius: 8px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
    box-sizing: border-box; /* Ensures padding doesn't cause overflow */
  }

  /* Each cell: label + value on same line */
  .notifications-page .notifications-table td {
    border: none;
    padding: 10px 0;
    text-align: left;
    position: relative;
  }

  /* Label (bold) + value on same line */
  .notifications-page .notifications-table td::before {
    content: attr(data-label) ": ";
    font-weight: bold;
    color: #333;
    display: inline;
  }

  /* Make the message text larger */
  .notifications-page .notifications-table td[data-label="Message (Count)"] {
    font-size: 1.2em; /* Bigger than other text */
    font-weight: 500;
    line-height: 1.4;
  }

  /* No label for Actions column */
  .notifications-page .notifications-table td[data-label="Actions"]::before {
    content: "";
  }

  /* Ensure buttons stay inside container */
  .clsBlueButton {
    display: block;
    width: 100%;
    margin: 10px 0;
    text-align: center;
    padding: 14px;
    font-size: 15pt;
    box-sizing: border-box; /* Critical: includes padding in width */
    border-radius: 6px;
  }
}
/* "Potential Match" details page (match.html.erb) */
.match-page {
  text-align: center;
}

.match-with {
  font-size: 1.2em;
  margin-bottom: 4px;
}

.match-waiting-note {
  color: #888;
  font-style: italic;
}

.match-sent-date {
  color: #888;
  font-size: 0.85em;
  margin-top: 0;
  margin-bottom: 20px;
}

.match-section {
  text-align: left;
  margin: 20px 0;
  padding: 15px;
  border-radius: 10px;
}

.match-section-matched {
  background: #e6f9f0;
  border: 1px solid #28a745;
}

.match-section-unmatched {
  background: #f5f5f5;
  border: 1px solid #ccc;
}

.match-section h2 {
  font-size: 1.2em;
  margin-top: 0;
}

.match-actions {
  margin: 25px 0;
}

.match-already-sent {
  color: #2e7d32;
  font-weight: bold;
}

.match-suggest-section {
  margin-top: 30px;
  padding-top: 20px;
  border-top: 1px solid #ddd;
}

.match-suggested-list {
  list-style: none;
  padding: 0;
  text-align: left;
}

.match-suggested-list li {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding: 10px;
  margin-bottom: 8px;
  background: #f0f8ff;
  border-radius: 8px;
  flex-wrap: wrap;
}

.match-q-text {
  flex: 1;
  min-width: 150px;
}

.match-q-actions {
  display: flex;
  gap: 8px;
  flex-shrink: 0;
}

.match-back-link {
  margin-top: 30px;
}
/* app/assets/stylesheets/others_quests.css */

.quests-clsQuestsContainer {
  text-align: center;
  padding: 20px;
  background-color: #e3f2fd;
  border-radius: 10px;
  margin: 20px auto;
  box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}

.highlight {
  color: #d81b60;
  font-weight: bold;
  font-size: 1.2em;
}
/* app/assets/stylesheets/others_quests_percentage.css */

.clsScrollContainer {
  display: flex;
  overflow-x: auto;
  gap: 15px;
  padding: 20px 10px;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
}

.clsQuestBox {
  background-color: #ffffff;
  border: 2px solid #007bff;
  border-radius: 12px;
  padding: 25px;
  width: 320px;
  min-width: 320px;
  text-align: center;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
  scroll-snap-align: start;
}

.clsHighlight {
  font-size: 2.5em;
  font-weight: bold;
  color: #ffffff;
  background-color: #007bff;
  border-radius: 8px;
  padding: 10px;
  display: block;
  margin-bottom: 15px;
}

.clsQuestBox p {
  margin: 8px 0;
  font-size: 1.4em;
  line-height: 1.4;
}

.clsQuestBox .gsp_category {
  color: #333333;
  font-size: 1em;
}

.clsQuestBox .gsp_question {
  font-size: 2em;
  font-weight: bold;
}

/* Mobile adjustments */
@media (max-width: 768px) {
  .clsQuestBox {
    width: 280px;
    min-width: 280px;
    padding: 20px;
  }

  .clsHighlight {
    font-size: 2.2em;
    padding: 8px;
  }

  .clsQuestBox p {
    font-size: 1.3em;
  }

  .clsQuestBox strong {
    font-size: 1.4em;
  }

  .clsScrollContainer {
    gap: 10px;
    padding: 15px 5px;
  }

  .clsQuestsContainer {
    padding: 10px;
  }

  h1 {
    font-size: 1.8em;
  }

  h2 {
    font-size: 1.5em;
  }

  h3 {
    font-size: 1.3em;
  }
}
/* app/assets/stylesheets/page_view.css */

.pv_container {
  max-width: 100%;
  overflow-x: auto;
  padding: 1rem;
  background: #e3f2fd;
  border-radius: 5px;
  margin: 10px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

  .pv_pagination_top {
  margin-bottom: 20px;
}

.pv_search_wrapper {
  margin: 15px 0;
  background: #f8f9fa;
  padding: 10px;
  border-radius: 6px;
  border: 1px solid #dee2e6;
}

.pv_title {
  color: #0288d1;
  margin-bottom: .5rem;
}

.pv_filters {
  display: flex;
  gap: .5rem;
  flex-wrap: wrap;
  margin-bottom: 1rem;
  align-items: center;
}

.pv_date_range {
  display: flex;
  gap: .3rem;
  align-items: center;
}

.pv_btn {
  padding: .4rem .8rem;
  border-radius: 5px;
  font-weight: bold;
  text-decoration: none;
  font-size: .9rem;
  cursor: pointer;
  border: none;
}

.pv_btn_filter, .pv_btn_search {
  background: #0288d1;
  color: white;
}

.pv_btn_filter:hover, .pv_btn_search:hover {
  background: #01579b;
}

.pv_btn_danger {
  background: #d81b60;
  color: white;
}

.pv_btn_danger:hover {
  background: #a11245;
}

.pv_btn_delete {
  background: #d81b60;
  color: white;
  font-size: .8rem;
  padding: .3rem .6rem;
}

.pv_table {
  border-collapse: collapse;
  margin-top: 1rem;
  font-size: .9rem;
  background: white;
  border-radius: 5px;
  overflow: hidden;
  table-layout: fixed;
  width: 100%;
}

.pv_table th {
  background: #0288d1;
  color: white;
  font-weight: bold;
  padding: .5rem;
  text-align: left;
  white-space: nowrap;
}

.pv_table td {
  padding: .4rem .6rem;
  border-bottom: 1px solid #ddd;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pv_table tr:hover {
  background: #e0f0ff;
}

.pv_th_sortable {
  cursor: pointer;
  user-select: none;
}

.pv_th_sortable:hover {
  background: #01579b;
}

.pv_search_input {
  width: 100%;
  box-sizing: border-box;
  font-size: 1rem;
  padding: 0.3rem; /* Reduced from 10px → 0.3rem */
  border: 1px solid #ddd;
  border-radius: 5px;
}

.pv_search_input:focus {
  outline: none;
  border-color: #0288d1;
  box-shadow: 0 0 5px rgba(2,136,209,0.3);
}

.pv_session_header {
  background: #e2e3e5;
  font-weight: bold;
  cursor: pointer;
}

.pv_collapse_icon {
  float: right;
  font-weight: bold;
}

.pv_link {
  color: #0288d1;
  text-decoration: underline;
}

.pv_link:hover {
  color: #01579b;
}

.pv_pagination {
  margin-top: 1rem;
  text-align: center;
}

.pv_spinner {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: rgba(0,0,0,.7);
  color: white;
  padding: 1rem 2rem;
  border-radius: 5px;
  z-index: 9999;
}

/* ============================================================= */
/* PER-COLUMN STYLING CLASSES — FOR DATA CELLS (<td>)            */
/* ============================================================= */
.pv_col_mono td {
  font-family: 'Courier New', monospace;
}

.pv_col_wrap td {
  white-space: normal;
  word-wrap: break-word;
}

.pv_col_truncate td {
  max-width: 150px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ============================================================= */
/* SEARCH INPUTS — INDIVIDUAL COLUMN STYLING (NEW!)              */
/* ============================================================= */
.searchcolumn1 input { 
width: 20px;  
 } 

.searchcolumn2 input { /* Viewed At */
padding: 0.3rem !important;     /* Match .pv_search_input */
  margin: 0 !important;           /* Remove any accidental margin */
  border-width: 1px !important;   /* Consistent border */
  font-size: 1rem !important;
}

.searchcolumn3 input { /* User */
  max-width: 130px;
  font-size: 1rem;
  color: #1976d2;
  background: #e3f2fd;
  border: 1px solid #bbdefb;
}

.searchcolumn4 input { /* Page Path */
  max-width: 160px;
  font-size: 1rem;
  color: #388e3c;
  background: #e8f5e8;
  border: 1px solid #c8e6c9;
}

.searchcolumn5 input { /* Session ID */
  max-width: 90px;
  font-family: 'Courier New', monospace;
  font-size: 1rem;
  color: #7b1fa2;
  background: #f3e5f5;
  border: 1px solid #e1bee7;
}

.searchcolumn6 input { /* IP Address */
  max-width: 90px;
  font-family: 'Courier New', monospace;
  font-size: 1rem;
  color: #f57c00;
  background: #fff3e0;
  border: 1px solid #ffe0b2;
}

.searchcolumn7 input { /* User Agent */
  max-width: 160px;
  font-size: 1rem;
  color: #5d4037;
  background: #efebe9;
  border: 1px solid #d7ccc8;
}

.searchcolumn8 input { /* Referrer */
  max-width: 160px;
  font-size: 1rem;
  color: #6a1b9a;
  background: #f3e5f5;
  border: 1px solid #e1bee7;
}

.searchcolumn9 input { /* Query String */
  max-width: 90px;
  font-size: 1rem;
  color: #c2185b;
  background: #fce4ec;
  border: 1px solid #f8bbd0;
}

.searchcolumn10 button { /* Search button */
  font-size: 1rem;
  padding: 0.4rem 0.8rem;
  min-width: 70px;
  font-weight: bold;
}

/* ============================================================= */
/* COLUMN WIDTHS — SEARCH ROW                                    */
/* ============================================================= */
.searchcolumn1 { width: 20px; }                    /* Checkbox */
.searchcolumn2 { width: 100%; max-width: 190px; }  /* Viewed At */
.searchcolumn3 { width: 100%; max-width: 180px; }  /* User */
.searchcolumn4 { width: 100%; max-width: 180px; }  /* Path */
.searchcolumn5 { width: 100%; max-width: 90px; }   /* Session ID */
.searchcolumn6 { width: 100%; max-width: 100px; }   /* IP address*/
.searchcolumn7 { width: 100%; max-width: 160px; }  /* User Agent */
.searchcolumn8 { width: 100%; max-width: 160px; }  /* Referrer */
.searchcolumn9 { width: 100%; max-width: 90px; }   /* Query String */
.searchcolumn10 { width: 80px; }                   /* Search button */

/* ============================================================= */
/* COLUMN WIDTHS — DATA ROWS                                     */
/* ============================================================= */
.column1 { width: 30px; }                  /* Checkbox */
.column2 { width: 190px; }                 /* Viewed At */
.column3 { width: 180px; }                 /* User */
.column4 { width: 180px; }                 /* Path */
.column5 { width: 100px; }                 /* Session ID */
.column6 { width: 120px; }                  /* IP address */
.column7 { width: 180px; }                 /* User Agent */
.column8 { width: 180px; }                 /* Referrer */
.column9 { width: 175px; }                 /* Query String */
.column10 { width: 80px; }                 /* Delete */

/* ============================================================= */
/* RESPONSIVE: shrink columns, wrap on small screens             */
/* ============================================================= */
@media (max-width: 900px) {
  .pv_table {
    font-size: .8rem;
  }
  .pv_table th, .pv_table td {
    padding: .3rem .4rem;
  }

  /* Search inputs */
  
  .searchcolumn2 input { max-width: 190px; } /* Viewed at */
  .searchcolumn3 input { max-width: 110px; }
  .searchcolumn4 input { max-width: 140px; }
  .searchcolumn5 input { max-width: 70px; }
  .searchcolumn6 input { max-width: 80px; }
  .searchcolumn7 input { max-width: 130px; }
  .searchcolumn8 input { max-width: 150px; }
  .searchcolumn9 input { max-width: 120px; }

  /* Data columns */
  .column1 { width: 40px; }
  .column2 { width: 190px; }
  .column3 { width: 130px; }
  .column4 { width: 170px; }
  .column5 { width: 90px; }
  .column6 { width: 100px; }
  .column7 { width: 160px; }
  .column8 { width: 160px; }
  .column9 { width: 160px; }
}

@media (max-width: 600px) {
  .pv_table thead {
    display: none;
  }
  .pv_table tr {
    display: block;
    margin-bottom: 1rem;
    border: 1px solid #ddd;
    border-radius: 5px;
    background: white;
  }
  .pv_table td {
    display: block;
    text-align: right;
    position: relative;
    padding-left: 50%;
    white-space: normal;
  }
  .pv_table td::before {
    content: attr(data-label);
    position: absolute;
    left: 0;
    width: 45%;
    font-weight: bold;
    color: #0288d1;
  }

  /* Hide search row on mobile */
  .pv_search_row {
    display: none;
  }

}
.plans-page {
  /* Was a fixed 1100px, so the container stayed the same width no matter how
     wide the browser was. Now it grows with the viewport (still capped so it
     doesn't stretch absurdly wide on an ultra-wide monitor). */
  width: 100%;
  max-width: 1800px;
  margin: 0 auto;
  padding: 20px;
  box-sizing: border-box;
}

.plans-page h1 {
  text-align: center;
  margin-bottom: 6px;
}

.plans-tagline {
  text-align: center;
  color: #666;
  font-style: italic;
  margin-top: 0;
  margin-bottom: 24px;
}

.plans-admin-banner {
  background: #fff3cd;
  border: 1px solid #ffc107;
  color: #856404;
  border-radius: 8px;
  padding: 14px 20px;
  text-align: center;
  margin-bottom: 28px;
  font-size: 1.05em;
}

.plans-staff-banner {
  background: #e8f4fd;
  border: 1px solid #5ba4cf;
  color: #1a4a6e;
  border-radius: 8px;
  padding: 14px 20px;
  text-align: center;
  margin-bottom: 28px;
  font-size: 1.05em;
}

.plans-beta-banner {
  background: #d4edda;
  border: 1px solid #a3d9a5;
  color: #1a5c2a;
  border-radius: 8px;
  padding: 14px 20px;
  text-align: center;
  margin-bottom: 28px;
  font-size: 1.05em;
}

.plans-grid-wrap {
  position: relative;
}

.plans-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 20px;
  margin-bottom: 28px;
}

/* Shown via JS (see the inline script below the grid) only when the cards
   actually wrap to a second row — e.g. a half-width browser — so it's
   obvious there's more to see instead of it silently scrolling off. */
/* Kept fully inside .plans-grid-wrap's own box (never translated past its
   right edge) — the shared .clsBlueContainer this page sits in clips
   horizontal overflow (overflow-x: hidden), so anything positioned outside
   its bounds was getting silently cut off. */
.plans-more-hint {
  display: none;
  position: absolute;
  top: -34px;
  right: 4px;
  z-index: 2;
  flex-direction: row;
  align-items: center;
  gap: 4px;
  font-size: 0.85em;
  font-weight: bold;
  color: #007bff;
  line-height: 1.2;
  text-align: center;
  white-space: nowrap;
  animation: plans-more-hint-bounce 1.4s ease-in-out infinite;
}

.plans-more-arrow {
  font-size: 1.3em;
  line-height: 1;
}

@keyframes plans-more-hint-bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(5px); }
}

.plans-card {
  background: #fff;
  border: 2px solid #dde3ee;
  border-top: 6px solid var(--tier-accent, #dde3ee);
  border-radius: 12px;
  padding: 24px 20px;
  display: flex;
  flex-direction: column;
  transition: transform 0.15s, box-shadow 0.15s;
}

.plans-card:not(.plans-card--coming-soon):hover {
  transform: translateY(-4px);
  box-shadow: 0 6px 16px rgba(0, 123, 255, 0.15);
}

/* Whole card is clickable once Stripe is live (not just the small button
   inside it) — clicking anywhere on the card starts checkout. */
.plans-card--clickable {
  cursor: pointer;
}

.plans-card--clickable:focus-visible {
  outline: 3px solid #007bff;
  outline-offset: 2px;
}

.plans-card--current {
  background: #e6f9f0;
  border-color: #28a745;
  box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.15);
}

.plans-card--beta.plans-card--current {
  background: #e6f9f0;
  border-color: #28a745;
  box-shadow: 0 0 0 3px rgba(40, 167, 69, 0.15);
}

.plans-card--coming-soon {
  opacity: 0.9;
  position: relative;
  overflow: hidden;
}

.plans-card--coming-soon::before {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  width: 90px;
  height: 90px;
  background: repeating-linear-gradient(
    45deg,
    #ffe066 0 10px,
    #333 10px 20px
  );
  opacity: 0.15;
  clip-path: polygon(100% 0, 0 0, 100% 100%);
  pointer-events: none;
}

.plans-card-header {
  margin-bottom: 18px;
  text-align: center;
}

.plans-icon-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: var(--tier-accent, #007bff);
  font-size: 1.6em;
  margin-bottom: 10px;
  transition: transform 0.2s;
}

.plans-card:hover .plans-icon-badge {
  transform: scale(1.12) rotate(-6deg);
}

.plans-card-header h2 {
  margin: 0 0 6px;
  font-size: 1.3em;
}

.plans-card-subtitle {
  margin: 0 0 10px;
  font-size: 0.85em;
  color: #777;
  font-style: italic;
}

.plans-price {
  font-size: 1.6em;
  font-weight: bold;
  color: var(--tier-accent, #1a1a2e);
}

.plans-price span {
  font-size: 1em;
  font-weight: normal;
  color: #666;
}

.plans-features {
  list-style: none;
  padding: 0;
  margin: 0 0 20px;
  flex: 1;
}

.plans-features li {
  padding: 5px 0;
  padding-left: 20px;
  position: relative;
  color: #333;
  font-size: 1em;
}

.plans-features li::before {
  content: '✓';
  position: absolute;
  left: 0;
  color: #28a745;
  font-weight: bold;
}

.plans-card--coming-soon .plans-features li::before {
  color: #aaa;
}

.plans-cta {
  margin-top: auto;
  text-align: center;
}

.plans-current-label {
  display: inline-block;
  background: #007bff;
  color: #fff;
  border-radius: 20px;
  padding: 6px 16px;
  font-size: 1em;
  font-weight: bold;
}

.plans-card--beta .plans-current-label {
  background: #6f42c1;
}

.plans-coming-soon-label {
  display: inline-block;
  background: linear-gradient(135deg, #ffd166, #f5a623);
  color: #7a4a00;
  border-radius: 20px;
  padding: 6px 16px;
  font-size: 1em;
  font-weight: bold;
  box-shadow: 0 2px 6px rgba(245, 166, 35, 0.35);
}

.plans-coming-soon-emoji {
  display: inline-block;
  animation: plans-wobble 1.6s ease-in-out infinite;
}

@keyframes plans-wobble {
  0%, 100% { transform: rotate(0deg); }
  25% { transform: rotate(-12deg); }
  75% { transform: rotate(12deg); }
}

.plans-coming-soon-caption {
  margin: 8px 0 0;
  font-size: 0.85em;
  color: #888;
  font-style: italic;
}

.plans-invite-note {
  display: block;
  font-size: 1em;
  color: #666;
  font-style: italic;
}

.plans-note {
  text-align: center;
  color: #888;
  font-size: 1em;
}
/* app/assets/stylesheets/privacy.css */
.privacy-container {
  max-width: 800px;
  margin: 60px auto;
  padding: 40px;
  background: linear-gradient(135deg, #007bff, #00ddeb);
  border-radius: 12px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  text-align: center;
}

.privacy-container h1 {
  font-size: 36px;
  color: #fff;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
  margin-bottom: 20px;
}

.privacy-container h2 {
  font-size: 24px;
  color: #fff;
  margin: 20px 0 10px;
}

.privacy-container p {
  font-size: 15pt;
  color: #f0f8ff;
  margin-bottom: 15px;
}

.privacy-container ul {
  list-style: none;
  padding: 0;
  margin-bottom: 20px;
  text-align: left;
}

.privacy-container ul li {
  font-size: 15pt;
  color: #f0f8ff;
  margin-bottom: 10px;
  padding-left: 20px;
  position: relative;
}

.privacy-container ul li:before {
  content: "🌟";
  position: absolute;
  left: 0;
  color: #ffeb3b;
}

.actions {
  display: flex;
  justify-content: center;
  margin-top: 20px;
}


.clsFlash.notice {
  background-color: #d4edda;
  color: #28a745;
  font-size: 15pt;
  text-align: center;
  padding: 10px;
  margin-bottom: 20px;
  border-radius: 4px;
}

.clsFlash.alert {
  background-color: #f8d7da;
  color: #dc3545;
  font-size: 15pt;
  text-align: center;
  padding: 10px;
  margin-bottom: 20px;
  border-radius: 4px;
}
.quest-cross-table {
  width: 100%;
  border-collapse: collapse;
  text-align: left;
}
.quest-cross-table th,
.quest-cross-table td {
  padding: 10px;
  border: 1px solid #ddd;
  vertical-align: top;
  min-width: 120px;
  box-sizing: border-box;
}

.quest-cross-table td small {
  display: block;
}
p.summary {
  margin: 10px 0;
  padding: 10px;
  background-color: #e8f4f8;
  border-left: 4px solid #007bff;
  font-size: 15pt;
}
/* app/assets/stylesheets/question_request.css */
.question-request-container {
  max-width: 800px;
  margin: 60px auto;
  padding: 40px;
  background: linear-gradient(135deg, #007bff, #00ddeb);
  border-radius: 12px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  text-align: center;
}

.question-request-container h1 {
  font-size: 36px;
  color: #fff;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
  margin-bottom: 20px;
}

.question-request-container p {
  font-size: 15pt;   /* ~20px — the intro/lead paragraph on these pages */
  color: #f0f8ff;
  margin-bottom: 20px;
}

.field {
  margin-bottom: 20px;
}

.field label {
  display: block;
  font-size: 15pt;
  color: #fff;
  margin-bottom: 5px;
}

.field input[type="text"],
.field select,
.field textarea {
  width: 100%;
  padding: 10px;
  font-size: 15pt;
  border: 1px solid #fff;
  border-radius: 8px;
  box-sizing: border-box;
}

.field input[type="text"]::placeholder,
.field select option,
.field textarea::placeholder {
  color: #aaaaaa;
}

.field input[type="text"]:focus,
.field select:focus,
.field textarea:focus {
  outline: none;
  border-color: #ffeb3b;
  box-shadow: 0 0 5px rgba(255, 235, 59, 0.3);
}

.actions {
  display: flex;
  justify-content: center;
  gap: 20px;
}

.clsBlueButton {
  background-color: #ff6f61;
  color: white;
  padding: 12px 24px;
  border: none;
  border-radius: 8px;
  font-size: 15pt;
  cursor: pointer;
  transition: background-color 0.3s;
}

.clsBlueButton:hover {
  background-color: #e55a4e;
}

.clsCancelButton {
  background-color: #6c757d;
}

.clsCancelButton:hover {
  background-color: #5a6268;
}

.clsFlash.notice {
  background-color: #d4edda;
  color: #28a745;
  font-size: 15pt;
  text-align: center;
  padding: 10px;
  margin-bottom: 20px;
  border-radius: 4px;
}

.clsFlash.alert {
  background-color: #f8d7da;
  color: #dc3545;
  font-size: 15pt;
  text-align: center;
  padding: 10px;
  margin-bottom: 20px;
  border-radius: 4px;
}

/* assets/stylesheets/questions.css */

.category {
  font-size: 1.1em;
  font-weight: bold;
  margin-bottom: 10px;
}

.completion-popup {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  color: white;
  padding: 2rem;
  border-radius: 16px;
  text-align: center;
  box-shadow: 0 10px 30px rgba(0,0,0,0.3);
  max-width: 500px;
  margin: 2rem auto;
  font-family: 'Segoe UI', sans-serif;
}

.completion THESE h2 {
  margin: 0 0 1rem 0;
  font-size: 2.2rem;
}

.completion-popup p {
  margin: 0.8rem 0;
  font-size: 1.2rem;
  opacity: 0.95;
}

.clsCenteredButton {
  display: block;
  margin-left: 0; /* Ensure left alignment */
  margin-right: 0;
}

.form-input {
  box-sizing: border-box; /* Ensure padding doesn't affect width */
  border: 1px solid #ddd;
  border-radius: 5px;
  padding: 8px;
  margin: 8px;
}

.form-input:focus {
  outline: none;
  border-color: #0288d1;
  box-shadow: 0 0 5px rgba(2, 136, 209, 0.3);
}

.questions-container {
  background-color: #e3f2fd;
  border-radius: 10px;
  padding: 20px;
  margin: 20px auto;
  box-shadow: 0 2px 5px rgba(0,0,0,0.1);
  text-align: center;
}

/* Override the shared .an_clsAnswerCardContainer 700px cap so this page's
   card centers itself but stretches further on a wide browser window. */
.question-container.an_clsAnswerCardContainer {
  max-width: 1100px;
  width: 100%;
  margin: 20px auto;
}

.question-container h2 {
  font-size: 1.5em;
  margin: 10px 0;
}

.question-container p {
  margin: 5px 0;
}

.question-form {
  margin-top: 15px;
  display: block; /* Remove flex to simplify alignment */
}







.yes-no-buttons {
  gap: 10px;
  margin: 15px 0;
}

/* Combined with .clsButton for higher specificity — application.css's own
   .clsButton rule compiles in last (require_self runs after require_tree)
   and would otherwise win the height/padding/font-size tie at equal
   specificity. */
.yes-no-buttons .clsButton {
  height: 48px;
  padding: 10px 26px;
  font-size: 1.1em;
}

.clsCenteredLink {
  display: block;
  text-align: center;
}
.qp_container {
  max-width: 800px;
  margin: 0 auto;
  padding: 20px;
}

.qp_search_container {
  background-color: #e6f0ff;
  padding: 20px;
  border-radius: 8px;
  margin-bottom: 20px;
}

.qp_blue_container {
  border: 1px solid #007bff;
}

.qp_search_form {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: flex-end;
}

.qp_field {
  flex: 1;
  min-width: 200px;
}

.qp_field label {
  display: block;
  margin-bottom: 5px;
  font-weight: bold;
}

.qp_field input[type="text"] {
  width: 100%;
  padding: 8px;
  border: 1px solid #ccc;
  border-radius: 4px;
  font-size: 15pt;
}

.qp_actions {
  display: flex;
  gap: 10px;
}

.qp_button {
  padding: 8px 16px;
  font-size: 15pt;
}

.qp_no_results {
  color: #555;
  font-style: italic;
  margin-top: 20px;
}

.qp_emoji {
  font-size: 1.2em;
}

.qp_current_search_name {
  font-size: 28px;
  font-weight: bold;
  margin: 20px 0;
  color: #c2b60a;
  text-align: center;
}

/* Desktop table */
.qp_questions_table {
  width: 100%;
  border-collapse: collapse;
  margin-top: 20px;
}

.qp_questions_table th,
.qp_questions_table td {
  padding: 12px;
  text-align: left;
  border-bottom: 1px solid #ddd;
}

.qp_questions_table th {
  background-color: #007bff;
  color: white;
}

.qp_questions_table tr:hover {
  background-color: #f5f5f5;
}

.qp_questions_table .qp_actions {
  text-align: center;
}

/* Mobile adjustments */
@media (max-width: 768px) {
  .qp_search_form {
    flex-direction: column;
    align-items: stretch;
  }

  .qp_field {
    min-width: auto;
  }

  .qp_actions {
    justify-content: stretch;
  }

  .qp_button {
    width: 100%;
  }

  .qp_questions_table {
    border-spacing: 0 10px;
  }

  .qp_questions_table thead {
    display: none;
  }

  .qp_questions_table tbody tr {
    display: block;
    background: #f9f9f9;
    border: 1px solid #ccc;
    border-radius: 8px;
    padding: 15px;
    margin-bottom: 10px;
  }

  .qp_questions_table td {
    display: block;
    text-align: right;
    padding: 8px 0;
    border: none;
    position: relative;
    padding-left: 50%;
  }

  .qp_questions_table td:before {
    content: attr(data-label) ": ";
    position: absolute;
    left: 15px;
    width: 45%;
    font-weight: bold;
    text-align: left;
  }

  .qp_questions_table td.qp_actions {
    padding-left: 0;
    text-align: center;
  }

  .qp_questions_table td.qp_actions:before {
    content: none;
  }

  .qp_questions_table .qp_button {
    width: 100%;
    max-width: 200px;
  }
}
.sn_new-search-form-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.2em;
  margin: 2em 0;
  width: 100%;
}

.sn_new-search-label {
  font-size: 1.2em;
  font-weight: 600;
}

.sn_new-search-input {
  width: 420px;
  max-width: 90%;
  padding: 0.8em 1em;
  font-size: 1.1em;
  border: 1px solid #ccc;
  border-radius: 6px;
  box-sizing: border-box;
}

.sn_new-search-button-wrapper {
  margin-top: 0.5em;
}

.snn_new-search-submit:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.so_search-options-page {
  text-align: center;
  padding: 20px;
}

.so_search-options-page h1 {
 
  font-size: 2.5em;
  margin-bottom: 10px;
}

.so_search-options-page p {
  margin-bottom: 20px;
}

.so_search-options-container {
  display: flex;
  justify-content: center;
  gap: 30px;
  margin: 30px 0;
}

.so_search-option {
  flex: 1;

}

.so_clsFunButton {
  display: inline-block;
  padding: 15px 30px;
  font-size: 1.2em;
  text-decoration: none;
  border-radius: 10px;
  transition: transform 0.2s, box-shadow 0.2s;
}

.so_clsFunButton:hover {
  transform: scale(1.05);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
}

.so_clsAdvancedButton-autumn {
  background-color: #4682B4;
  color: #F5F5DC;
}

.so_clsQuickPickButton-autumn {
  background-color: #D4A017;
  color: #F5F5DC;
}

.so_clsGuidedButton-autumn {
  background-color: #556B2F;
  color: #F5F5DC;
}

.so_search-option p {
  font-size: 20px;
  margin-top: 10px;
}

.so_search-options-page h2 {
  font-size: 1.8em;
  color: inherit; /* Ensures the main text uses the default color, not yellow */
  margin: 20px 0;
}

.so_search-options-page h2 i {
  color: #FFD700; /* Only the search name (inside <i>) is yellow */
}
/* app/assets/stylesheets/searches.css */

.clsCriterion {
  display: flex;
  gap: 10px;
  margin: 10px 0;
  align-items: center;
}

.s_clsCboCategoryID {
  max-width: 175px;
}

.s_clsCboQuestionID {
  flex: 2;
  min-width: 200px;
  max-width: 400px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  box-sizing: border-box;
}

.s_clsCboQuestionID option {
  white-space: normal;
}

.s_clsCboAnswer {
  width: 100px;
  }

  .s_clsCboPriority {
  width: 100px;
  }

.s_clsSearchesDivSearchContainer {
  display: flex;
  justify-content: space-between;
}

.s_clsDivSearchMain {
  flex: 3;
  padding-right: 20px;
}

.s_clsDivListSavedSearches {
  flex: 0 1 100px;
  max-width: 200px;
  padding-left: 10px;
  border-left: 1px solid #ccc;
}


select, input[type="text"] {
  padding: 8px;
  border-radius: 5px;
  border: 1px solid #ccc;
}




.s_clsRemoveCriterion {
  color: #d81b60;
  text-decoration: none;
  font-weight: bold;
}

.s_clsRemoveCriterion:hover {
  color: #a11245;
}

.s_clsDivFormActions {
  margin: 20px 0;
  display: flex;
  align-items: center;
  gap: 10px;
}

.inline-form {
  display: flex;
  align-items: center;
  gap: 10px;
}

.inline-label {
  margin-right: 5px;
}

.inline-input {
  padding: 8px;
  border-radius: 5px;
  border: 1px solid #ccc;
  width: 150px;
}



.edit-search-link {
  color: #0288d1;
  text-decoration: none;
  margin-left: 10px;
  font-size: 1em;
}

.edit-search-link:hover {
  color: #01579b;
  text-decoration: underline;
}

.answer-yes { color: #008000; }
.answer-no { color: #ff0000; }
.answer-unanswered { color: #ff8c00; }
.answer-na { color: #666666; }
.answer-skipped { color: #800080; }

.match {
  background-color: #00cc00; /* Green background */
  color: #ffffff; /* White text */
  border-radius: 8px; /* Rounded corners */
  padding: 4px 8px; /* Padding for better appearance */
  display: inline-block; /* Ensures the background wraps the text */
}

/* the individual questions */
.answer-matched {
  color: #008000; /* Green */
}
.answer-unmatched {
  color: #ff0000; /* Red */
}
.answer-unanswered {
  color: #ff8c00; /* Orange */
}
.zero-match {
  background-color: #ff0000; /* Red background */
  color: #ffffff; /* White text */
  border-radius: 8px; /* Rounded corners */
  padding: 4px 8px; /* Padding for better appearance */
  display: inline-block; /* Ensures the background wraps the text */
}

ul {
  list-style-type: none; /* Removes bullet points for all list items */
}

@media (max-width: 800px) {
  
  .s_clsSearchesDivSearchContainer {
    flex-direction: column;
    padding: 10px;
  }
  .s_clsDivSearchMain, .UserSearches {
    padding: 0;
    border: none;
  }
 
  select {
    width: 100%;
    max-width: none;
  }
  .s_clsDivFormActions {
    flex-direction: column;
    align-items: stretch;
  }
  .inline-form {
    flex-direction: column;
    align-items: stretch;
  }
  .inline-input {
    width: 100%;
  }
}


.saved-searches-list {
  list-style: none;
  padding-left: 0;
  margin: 1em 0;
}

.saved-search-item {
  margin-bottom: 0.8em;
  font-size: 1.1em;
}
/* app/assets/stylesheets/terms.css */
.terms-container {
  max-width: 800px;
  margin: 60px auto;
  padding: 40px;
  background: linear-gradient(135deg, #007bff, #00ddeb);
  border-radius: 12px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  text-align: center;
}

.terms-container h1 {
  font-size: 36px;
  color: #fff;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
  margin-bottom: 20px;
}

.terms-container h2 {
  font-size: 24px;
  color: #fff;
  margin: 20px 0 10px;
  text-align: left;
}

.terms-container p {
  font-size: 15pt;
  color: #f0f8ff;
  margin-bottom: 15px;
  text-align: left;
}


.actions {
  display: flex;
  justify-content: center;
  margin-top: 20px;
}

.clsFlash.notice {
  background-color: #d4edda;
  color: #28a745;
  font-size: 15pt;
  text-align: center;
  padding: 10px;
  margin-bottom: 20px;
  border-radius: 4px;
}

.clsFlash.alert {
  background-color: #f8d7da;
  color: #dc3545;
  font-size: 15pt;
  text-align: center;
  padding: 10px;
  margin-bottom: 20px;
  border-radius: 4px;
}
.clsUnansweredQuestionsContainer {
  text-align: center;
  padding: 20px;
  background-color: #e3f2fd;
  border-radius: 10px;
  margin: 20px auto;

  box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}

.clsUnansweredQuestionsList {
  background-color: #f0f8ff;
  padding: 20px;
  border-radius: 8px;
  margin: 20px 0;
}

.clsQuestion {
  margin: 10px 0;
  font-size: 1.1em;
}

.clsUnansweredQuestionsContainer h1 {
 
}
.clsEditAnswerContainer {
  color: #000000; /* Black text for visibility */
  margin: 0 auto; /* Center the container */
  text-align: center; /* Center text and inline elements */
}

.AdminAnswersNew_question-container h2 {
  font-size: 1.5em;
  margin: 10px 0;
}

.clsEditAnswerContainer .clsFormGroup {
  text-align: center; /* Align form fields left for readability */
  margin: 10px 0;
  width: 100%;
}

.clsEditAnswerContainer .clsFormGroup label,
.clsEditAnswerContainer .clsFormGroup p,
.clsEditAnswerContainer .clsFormGroup select,
.clsEditAnswerContainer .clsFormGroup input {
  color: #000000; /* Ensure all form elements have visible text */
}

.clsEditAnswerContainer .clsFormGroup p {
  margin: 5px 0;
  font-size: 15pt;
}

.clsEditAnswerContainer .clsActions {
  display: flex;
  justify-content: center; /* Center buttons */
  gap: 10px;
  margin-top: 20px;
}

.clsSortLink {
  color: white;
  text-decoration: none;
}
.clsSortLink:hover {
  color: #e0f0ff;
  text-decoration: underline;
}

.ua_admin-red-alert {
  background: #d32f2f;
  color: white;
  padding: 16px;
  border-radius: 12px;
  text-align: center;
  font-weight: bold;
  font-size: 1.3em;
  margin: 20px auto;
  max-width: 800px;
  border: 4px solid #b71c1c;
  box-shadow: 0 4px 12px rgba(211, 47, 47, 0.3);
}

/* PULSE ONLY on admin new answer page */
body.admin-new-answer-page .ua_admin-red-alert {
  animation: pulse 2s infinite alternate;
}

.ua_admin-red-alert span.username {
  font-size: 1.5em;
  text-decoration: underline;
}
.ua_admin-red-alert span.note {
  font-size: 1em;
  font-weight: normal;
}

/* BLOCK red pulse on login page */
body.login-page-only .ua_admin-red-alert { animation: none !important; }
/* app/assets/stylesheets/user_password_account_recovery.css */
.recovery-page {
 
  margin: 40px auto;
  padding: 20px;
  background-color: #f9f9f9;
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.recovery-page h1 {
  text-align: center;
  margin-bottom: 10px;
}

.recovery-page p {
  font-size: 20px;
  color: #666;
  text-align: center;
  margin-bottom: 20px;
}

.field {
  margin-bottom: 20px;
}

.field label {
  display: block;
  font-size: 15pt;
  color: #333;
  margin-bottom: 5px;
}

.field input[type="email"] {
  width: 100%;
  padding: 10px;
  font-size: 15pt;
  border: 1px solid #ccc;
  border-radius: 4px;
  box-sizing: border-box;
}

.field input[type="email"]:focus {
  outline: none;
  border-color: #007bff;
  box-shadow: 0 0 5px rgba(0, 123, 255, 0.3);
}

.actions {
  display: flex;
  justify-content: space-between;
}


.clsCancelButton {
  background-color: #6c757d;
}

.clsCancelButton:hover {
  background-color: #5a6268;
}

.error-message {
  color: #dc3545;
  font-size: 15pt;
  margin-top: 5px;
  display: none;
}
.settings-page {

  margin: 20px auto;
  padding: 20px;
}

.settings-page h1 {
  font-size: 30px;
  margin-bottom: 20px;
}

/* Two-column layout so a full/wide browser window actually gets used —
   main fields on the left, profile photo + location stacked on the right
   (right under the photo), instead of one long single-column form. */
.settings-main-layout {
  display: flex;
  gap: 24px;
  align-items: flex-start;
  flex-wrap: wrap;
}

.settings-main-column {
  flex: 1 1 420px;
  min-width: 0;
}

.settings-sidebar-column {
  flex: 0 1 380px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

/* Card look for each settings section — a little more visual personality
   than a flat list of headings running down the page. */
.settings-card {
  background-color: #ffffff;
  border: 1px solid #bfe3ff;
  border-radius: 10px;
  padding: 16px 20px;
  margin-bottom: 20px;
  box-shadow: 0 2px 6px rgba(0, 123, 255, 0.08);
}

.settings-page .settings-card h2 {
  margin-top: 0;
}

/* .au_clsGpsSection/.au_clsGpsBody/.au_clsGpsControls (admin_users.css) already
   give the bordered box + map-on-top layout, shared with the admin edit-user
   page's GPS section. */
.settings-location-section {
  width: 100%;
}

.settings-page h2 {
  font-size: 20px;
  margin-top: 30px;
  margin-bottom: 15px;
}

.user-info {
  background-color: #f8f9fa;
  padding: 15px;
  border-radius: 4px;
  margin-bottom: 20px;
}

.user-info p {
  margin: 8px 0;
}

.user-info p strong {
  display: inline-block;
  width: 150px;
}

.settings-page .field {
  margin-bottom: 15px;
}

.settings-page .field label {
  display: block;
  font-weight: bold;
  /* Other pages' stylesheets (e.g. user_password_account_recovery.css) define
     a same-specificity ".field label { color: #333 }" that, bundled together
     site-wide, was winning the cascade over the global blue "label" rule —
     this page's own .field labels (Image, Latitude, etc.) rendered dark gray
     instead of blue. Set explicitly here so it always wins on this page. */
  color: #0288d1;
}

.settings-page .field input {
  padding: 8px;
  border: 1px solid #ccc;
  border-radius: 4px;
}

.settings-page .actions {
  margin-top: 20px;
  display: flex;
  gap: 10px;
}


.clsAlert {
  color: red;
  margin-bottom: 15px;
}
.us_search-page {
  text-align: left;
  padding: 20px;
}

.s_clsDivSearchMain {
  text-align: left;
}
.s_clsCriterion {
  text-align: left;
  margin-bottom: 15px;
}
.s_clsCboCategoryID, .s_clsCboQuestionID, .s_clsCboAnswer, .s_clsCboPriority {
  display: inline-block;
  margin-right: 10px;
}
.s_clsDeleteCriterion {
  display: inline-block;
  text-decoration: none;
}
.clsAlert {
  color: red;
  margin-bottom: 15px;
  text-align: left;
}
.s_clsDivFormActions {
  text-align: left;
}
.us_header-container {
  align-items: center;
  gap: 10px;
}

/* Auto-sizing input fields — fit exactly to content */
.auto-fit-input {
  width: auto;                    /* Let it shrink */
  min-width: 120px;               /* Never too tiny on mobile */
  max-width: 100%;                /* Never overflow container */
  display: inline-block;          /* Respect text width */
  padding: 8px 12px;              /* Keep comfortable padding */
  box-sizing: border-box;         /* Include padding in width */
  font-family: inherit;
  font-size: inherit;
}
.mp_clsMapWrapper {
  position: relative;
}

.mp_clsMap {
  height: 480px;
  width: 100%;
  border-radius: 6px;
  border: 1px solid #dee2e6;
}

.mp_clsLoading {
  font-size: 15pt;
  color: #6c757d;
  margin-bottom: 6px;
}

.mp_clsError {
  font-size: 15pt;
  color: #dc3545;
  margin-bottom: 6px;
}

.mp_clsLocationBar {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 10px;
  flex-wrap: wrap;
}

.mp_clsLocationLabel {
  font-size: 15pt;
  color: #495057;
}

.mp_clsChangeBtn {
  font-size: 15pt;
  padding: 4px 12px;
}

.mp_clsCountBadge {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgba(0, 80, 200, 0.75);
  color: #fff;
  font-weight: bold;
  font-size: 15pt;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
  white-space: nowrap;
}

/* Admin/hidden-only area bubbles (see map_page.js) — visually distinct red
   badge instead of the normal blue member-count circle, so an admin never
   mistakes a hidden/admin cluster for a real member headcount. */
.mp_clsCountBadge-hidden {
  background: rgba(192, 57, 43, 0.85);
  font-size: 13pt;
}

.mp_clsAdminAreaNames {
  margin-top: 6px;
  padding: 6px 10px;
  background-color: #fdecea;
  border: 2px solid #c0392b;
  border-radius: 6px;
  color: #c0392b;
}

.mp_clsAdminAreaNames a {
  color: #c0392b;
  font-weight: bold;
  text-decoration: underline;
}

.mp_clsUserMarker {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: rgb(255, 100, 0);
  border: 3px solid #fff;
  box-sizing: border-box;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35);
}

/* Admin-only username search box + results, and the marker it drops on the
   map when an admin "locates" a matched user. */
.mp_clsAdminSearch {
  margin-bottom: 16px;
}

.mp_clsAdminSearchRow {
  display: flex;
  gap: 8px;
  margin-top: 8px;
  flex-wrap: wrap;
}

.mp_clsAdminSearchRow input[type="text"] {
  flex: 1;
  min-width: 200px;
  padding: 8px 12px;
  font-size: 15pt;
  border: 1px solid #ccc;
  border-radius: 4px;
}

.mp_clsAdminSearchResults {
  list-style: none;
  margin: 10px 0 0;
  padding: 0;
}

.mp_clsAdminSearchRowItem {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 4px;
  border-bottom: 1px solid #eee;
}

.mp_clsAdminSearchRowItem span:first-child {
  flex: 1;
  font-weight: bold;
}

.mp_clsAdminSearchBtn {
  font-size: 0.85em;
  padding: 4px 10px;
  white-space: nowrap;
}

.mp_clsAdminSearchNoLoc {
  font-size: 0.85em;
  color: #888;
  font-style: italic;
}

.mp_clsAdminSearchEmpty {
  color: #888;
  font-style: italic;
  padding: 8px 4px;
}

.mp_clsSearchMarker {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: #6f42c1;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  border: 3px solid #fff;
  box-sizing: border-box;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35);
}
/* ============================================= */
/* WELCOME PAGE STYLES — all classes prefixed w_ */
/* Mobile-first + responsive                     */
/* ============================================= */

.w_container {
  max-width: 64rem;           /* max-w-4xl */
  margin: 0 auto;
  padding: 1rem;              /* Tight on mobile */
}

@media (min-width: 768px) {
  .w_container {
    padding: 3rem 1rem;
  }
}

/* Page header */
.w_heading {
  font-size: 2.25rem;
  font-weight: 700;
  text-align: center;
  margin-bottom: 0.75rem;
  line-height: 1.2;
}

.w_subheading {
  font-size: 1.125rem;
  text-align: center;
  color: #4b5563;
  margin-bottom: 2rem;
}

@media (min-width: 768px) {
  .w_heading   { font-size: 3rem; margin-bottom: 1rem; }
  .w_subheading { font-size: 1.25rem; margin-bottom: 3rem; }
}

/* Section spacing */
.w_sections {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}

@media (min-width: 768px) {
  .w_sections { gap: 3rem; }
}

/* Card container — base style */
.w_card {
  position: relative;                     /* needed for overlay */
  background-color: white;
  border-radius: 1rem;
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -2px rgba(0,0,0,0.05);
  padding: 1.5rem;
  text-align: center;
  transition: all 0.3s ease;
}

@media (min-width: 768px) {
  .w_card { padding: 2rem; }
}

/* DISABLED CARD — light grey background + muted look */
.w_card-disabled {
  background-color: #898d96 !important;   /* light gray */
  opacity: 0.85;
  pointer-events: none;                  /* blocks all interaction */
}

.w_card-disabled .w_card-title,
.w_card-disabled .w_card-text {
  color: #6b7280 !important;             /* muted text */
}

/* Disabled links inside disabled cards */
.w_card-disabled .disabled-link,
.disabled-link {
  pointer-events: none;
  filter: grayscale(100%);
  opacity: 0.6;
}

/* Card title */
.w_card-title {
  font-size: 1.5rem;
  font-weight: 600;
  margin-bottom: 0.75rem;
}

@media (min-width: 768px) {
  .w_card-title { font-size: 1.875rem; margin-bottom: 1rem; }
}

/* Card paragraph */
.w_card-text {
  color: #4b5563;
  margin-bottom: 1.5rem;
  line-height: 1.5;
}

/* Disabled button (for old disabled step) */
.w_btn-disabled {
  display: inline-block;
  background-color: #9ca3af;
  color: white;
  font-weight: 700;
  padding: 1rem 2rem;
  border-radius: 0.5rem;
  font-size: 1.25rem;
  cursor: not-allowed;
}

/* Search grid */
.w_search-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  margin: 1.5rem 0;
}

@media (min-width: 768px) {
  .w_search-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* Overlay call-to-action — mobile-friendly */
.w_card-overlay {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: rgba(255, 255, 255, 0.95);
  padding: 1.25rem 2rem;
  border-radius: 12px;
  text-align: center;
  box-shadow: 0 10px 25px rgba(0,0,0,0.15);
  z-index: 10;
  width: 90%;
  max-width: 320px;
  font-size: 1.1rem;
}

.w_card-overlay a {
  margin-top: 0.75rem;
  display: inline-block;
}

/* Hide section */
.w_hide-section {
  margin-top: 3rem;
  text-align: center;
}

@media (min-width: 768px) {
  .w_hide-section { margin-top: 4rem; }
}

.w_hide-label {
  display: inline-flex;
  align-items: center;
  font-size: 1.125rem;
  cursor: pointer;
}

.w_hide-label input[type="checkbox"] {
  margin-right: 0.75rem;
  transform: scale(1.2);
}

.w_hide-note {
  font-size: 1rem;
  color: #6b7280;
  margin-top: 0.75rem;
}
/* 20 Questions Completion Celebration */
.completion-popup {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  color: white;
  padding: 2.5rem;
  border-radius: 16px;
  text-align: center;
  box-shadow: 0 15px 40px rgba(0, 0, 0, 0.3);
  margin: 2rem auto;
  max-width: 560px;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  animation: fadeInUp 0.6s ease-out;
}

.completion-popup h2 {
  margin: 0 0 1rem;
  font-size: 2.6rem;
  font-weight: 700;
}

.completion-popup p {
  margin: 0.8rem 0;
  font-size: 1.5rem;
  line-height: 1.5;
}

.completion-popup p:last-child {
  opacity: 0.95;
  font-size: 1.3rem;
}

/* Optional: nice fade-in animation */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
/* Gray background when 20 questions are completed */
.completed-20questions-bg {
  background-color: #f5f5f5 !important;
}

/* Celebration popup */
.completion-popup {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  color: white;
  padding: 2.5rem;
  border-radius: 16px;
  text-align: center;
  box-shadow: 0 15px 40px rgba(0, 0, 0, 0.3);
  margin: 2rem auto;
  max-width: 560px;
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  animation: fadeInUp 0.6s ease-out;
}

.completion-popup h2 {
  margin: 0 0 1rem;
  font-size: 2.6rem;
  font-weight: 700;
}

.completion-popup p {
  margin: 0.8rem 0;
  font-size: 1.5rem;
  line-height: 1.5;
}

.completion-popup p:last-child {
  opacity: 0.95;
  font-size: 1.3rem;
}

/* Celebration in card */
.completion-celebration {
  text-align: center;
  padding: 1.5rem;
  background: rgba(255,255,255,0.15);
  border-radius: 12px;
  margin-top: 1rem;
}

.completion-celebration-title {
  margin: 0;
  font-size: 1.4rem;
  font-weight: bold;
  color: white;
}

.completion-celebration-subtitle {
  margin: 0.5rem 0 0;
  color: #e0f0ff;
  font-size: 1rem;
}

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(30px); }
  to { opacity: 1; transform: translateY(0); }
}
/* app/assets/stylesheets/application.css */
/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS (and SCSS, if configured) file within this directory, lib/assets/stylesheets, or any plugin's
 * vendor/assets/stylesheets directory can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the bottom of the
 * compiled file so the styles you add here take precedence over styles defined in any other CSS
 * files in this directory.
 *


 */

  body {
  margin: 0;
  padding: 0;
  background-color: #f5f5f5;
  font-family: 'Lato', sans-serif;
  /* Audience skews older. HARD FLOOR: no text below 15pt anywhere on the site
     (15pt ≈ 20px). See docs/design.md. Bump this to raise the floor further. */
  font-size: 15pt;
  line-height: 1.5;
  /* Sticky footer: on a short page the footer sits right at the bottom of the
     viewport instead of floating up after a short amount of content, leaving
     a gap of page background below it. */
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

/* Grows to fill any leftover vertical space so the footer (a flex sibling,
   after .clsMenuBar and this) gets pushed to the true bottom on short pages. */
.container {
  flex: 1 0 auto;
}

.f_site-footer {
  flex-shrink: 0;
}

.app_clsLightBlueText {
  color: #0288d1;
}
.app_clsCenterText {
 text-align: center;
}

.app_clsBoldText {  
  font-weight: bold;
}

.app_clsYellow {
  color: #FFD700;  
}

 .app_clsSiteName {
  font-family: 'Baloo 2', sans-serif;
  font-size: 28px;
  font-weight: 700;
  color:#FFFFFF;
  text-decoration: none;
}

/* Actual tagline size is set below (a later, duplicate .app_clsTagline rule
   wins the cascade) — this one only carries color/spacing now. */
.app_clsTagline {
  color: #FFFFFF;
 text-decoration: none;
  margin-top: 1px; /* Minimal gap */
}


#menu-content li span.clsEmoji {
font-size: 1.2em;
flex-shrink: 0;
}

p {
  margin: 1em 0;
  border: none;
  background: none;
  padding-left: 10px; 
  padding-right: 10px;
}

th {  
  background-color: #0288d1;
  color: white;
  font-weight: bold; 
  font-size: 20px;
}

select {
  
  width: fit-content;
}

.app_clsMenuBarLogo {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  margin: 0 0 0 5px;
  padding: 0;
}

.app_clsMenuBarLogo:hover .app_clsSiteName,
.app_clsMenuBarLogo:hover .app_clsTagline {
  text-decoration: none;
}

.clsBlueLink {
  color: #0288d1;
  text-decoration: none;
  padding: 5px 10px;
  font-weight: normal;
}

.clsBlueLink:hover {
  text-decoration: underline;
}

label {
  color: #0288d1;
}

.appclsLeftAlign {
  text-align: left;
}

.clsBlueContainer {
  background-color: #e3f2fd;
  margin: 20px;
  padding-top: 5px;
  padding-right: 20px;
  padding-bottom: 10 px;
  padding-left: 20px;
  overflow-x: hidden; /* Prevents any child from spilling out */
  border-radius: 5px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}



.clsButton {
  border: none;
  border-radius: 5px;
  box-sizing: border-box;
  cursor: pointer;
  color: white;
  display: inline-block;
  font-weight: bold;
  height: 40px;
  margin: 10px;
  padding: 10px 16px;
  text-align: center;
  text-decoration: none;
}

/* A link-based .clsButton the browser has already visited would otherwise pick up
   the default purple a:visited color, which beats the plain .clsButton rule above
   on specificity — force it to stay white regardless of visited state. */
a.clsButton:visited {
  color: white;
}

.clsBlueButton {
  background-color: #0288d1;
}

/* House rounded-pill CTA (see docs/design.md "Buttons"): border-radius 25px,
   flex-centered so icon+text sit centered top-to-bottom inside the fixed
   .clsButton height — no pulse/blink, just the shape. */
.clsRoundButton {
  border-radius: 25px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.2s, background 0.2s;
}

.clsRoundButton:hover {
  transform: scale(1.05);
}

.clsRoundButtonSmall {
  height: auto;
  padding: 6px 16px;
  font-size: 0.85em;
}



.clsBlueButton:hover {
  background-color: #01579b;
}

.clsBlueButton:disabled {
  background-color: #b0bec5;
  cursor: not-allowed;
}

button:disabled,
input[type="submit"]:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

.clsCancelButton {
  background: #0288d1;
}

clsCancelButton:hover {
  background: #009ACD;
}

/* Debug Panel */
.clsErrorMessage {
  background-color: #d81b60;
  color: white;
  padding: 10px;
  border-radius: 4px;
  margin-bottom: 15px;
  border: 1px solid #a11245;
}

.clsDebugToggle {
  cursor: pointer;
  color: #0288d1;
  margin: 10px 0;
  font-weight: bold;
  text-decoration: none;
  display: inline-block;
}

.clsDebugToggle:hover {
  color: #01579b;
}

.clsDebugPanel {
  display: none;
  background-color: #fff3cd;
  padding: 10px;
  margin: 10px 0;
  border-radius: 5px;
}

.clsDebugPanel.active {
  display: block;
}

.debug {
  background-color: #fff3cd;
  padding: 10px;
  margin: 10px 0;
  border-radius: 5px;
}

.debug pre {
  font-size: 1em;
  white-space: pre-wrap;
}


.notice, .error {
  padding: 10px;
  margin: 10px 0;
  border-radius: 5px;
}

.notice {
  background-color: #dff0d8;
  color: #3c763d;
}

.error {
  background-color: #f2dede;
  color: #a94442;
}

/* General Styles */
h1 {
  color: #0288d1; /* Text color */
  font-size: 1.8em;
}

h2, h3 {
  color: #0288d1; /* Text color */
}



h1 span.clsEmoji, p span.clsEmoji {
  font-size: 1em;
  vertical-align: middle;
}

ul {
  list-style-type: none;
  padding: 0;
}

hr {
  border: 0;
  border-top: 1px solid #ccc;
  margin: 10px 0;
}

/* Menu Bar — single row, fixed height at every browser width. Content adapts via
   a native <select> dropdown on narrower screens instead of wrapping the row
   taller or hiding behind a hamburger. Notifications + Log Out are pinned at the
   far right and never move into the wide-list/select swap. */
.clsMenuBar {
  position: sticky;
  top: 0;
  z-index: 1000;
  /* .container and .f_site-footer are both flex-shrink:0 (below); without
     this, .clsMenuBar was the ONLY shrinkable item in body's flex column,
     so it silently absorbed the entire squeeze whenever content needed more
     room than min-height:100vh — collapsing the nav to almost nothing. */
  flex-shrink: 0;
  background: linear-gradient(180deg, #007bff, #00ddeb);
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  color: white;
  padding: 2px 12px;
  overflow: hidden;
}

.app_clsMenuBarLogo {
  flex-shrink: 0;
}

.app_clsMenuBarLogo a {
  color: white;
  font-size: 1.6em;
  text-decoration: none;
  font-weight: bold;
  display: block;
  line-height: 1.15;
}

.app_clsTagline {
  font-size: 13px;
}

.app_clsMenuBarLogo a span.clsEmoji, .UserName span.clsEmoji {
  font-size: 1em;
  vertical-align: middle;
}

/* Wide screens: full inline link row — hidden entirely below the breakpoint
   (the <select> takes over) so this never has to wrap or grow the bar taller. */
.clsMenuWide {
  display: none;
  list-style: none;
  flex-wrap: nowrap;
  align-items: center;
  margin: 0;
  padding: 0;
  gap: 16px;
  overflow: hidden;
  min-width: 0;
}

.clsMenuLink {
  white-space: nowrap;
}

/* Red = "admin-only" everywhere on the site. */
.clsAdminMenuItem {
  background: #fdecea;
  border-radius: 6px;
  padding: 2px 8px;
}

.clsAdminMenuItem a {
  color: #c0392b !important;
}

/* Reusable admin-only inline badge/callout — red-shaded background + bold
   red border (not just red text — see docs/design.md "Admin-only marking"). */
.clsAdminOnlyBadge {
  display: inline-block;
  background-color: #fdecea;
  border: 2px solid #c0392b;
  border-radius: 6px;
  padding: 6px 14px;
  color: #c0392b;
}

/* Block-level version of the above — for wrapping a whole admin-only section
   (several lines/fields), not just a single inline stat. */
.clsAdminOnlyBox {
  background-color: #fdecea;
  border: 2px solid #c0392b;
  border-radius: 6px;
  padding: 12px 16px;
  margin: 12px 20px;
}

.clsMenuBar ul a {
  color: white;
  text-decoration: none;
  font-size: 15pt;
  font-weight: bold;
}

.clsMenuBar ul a:hover {
  color: #e3f2fd;
}

.dashboard-highlight a {
  color: #ffe066;
}

/* Narrow screens: one dropdown control instead of a hamburger — same items,
   same popularity order, but a fixed one-line height regardless of item count. */
.clsMenuSelect {
  display: none;
  background: #0288d1;
  color: white;
  border: 1px solid #01579b;
  border-radius: 6px;
  padding: 6px 10px;
  font-size: 15pt;
  font-weight: bold;
  max-width: 45vw;
}

.clsPinnedRight {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 12px;
}

.notification-link {
  color: white;
  text-decoration: none;
  font-size: 15pt;
  font-weight: bold;
  white-space: nowrap;
}

.notification-link:hover {
  color: #e3f2fd;
}

.notification-count {
  display: inline-block;
  background: #ffe066;
  color: #4d3800;
  border-radius: 999px;
  padding: 0 6px;
  font-size: 0.8em;
  font-weight: bold;
  vertical-align: middle;
  margin-left: 2px;
}

.clsPinnedLogout {
  display: inline-flex;
  align-items: center;
  color: white;
  text-decoration: none;
  font-size: 0.85em;
  font-weight: bold;
  white-space: nowrap;
  background: rgba(255, 255, 255, 0.15);
  border-radius: 999px;
  padding: 6px 14px;
}

.clsPinnedLogout:hover {
  background: rgba(255, 255, 255, 0.28);
  color: white;
}

/* Chip-style account button (avatar + name in a rounded pill), similar to
   YouTube's signed-in account button. */
.clsPinnedUser {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: white;
  text-decoration: none;
  font-size: 14pt;
  font-weight: bold;
  white-space: nowrap;
  max-width: 22vw;
  background: rgba(255, 255, 255, 0.15);
  border-radius: 999px;
  padding: 4px 14px 4px 4px;
  vertical-align: middle;
}

.clsPinnedUser:hover {
  background: rgba(255, 255, 255, 0.28);
  color: white;
}

.clsPinnedAvatar {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  display: block;
}

.clsPinnedAvatarFallback {
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.3);
  font-size: 16px;
}

.clsPinnedUserName {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* The wide inline row now shows down to a much lower, genuinely-mobile
   threshold — JS (app/javascript/application.js, initNavOverflow) measures
   how many items actually fit and moves whichever don't into a small "More"
   dropdown next to the row, so the bar always uses the space it has instead
   of switching all-or-nothing between the full row and the full dropdown. */
@media (min-width: 700px) {
  .clsMenuWide {
    display: flex;
  }
}

@media (max-width: 699px) {
  .clsMenuSelect {
    display: inline-block;
  }

  /* Below the mobile threshold the full .clsMenuSelect already covers every
     item (wide row is hidden entirely), so the "More" overflow select would
     just be a redundant second dropdown — force it off regardless of what
     JS last set. */
  .clsMenuOverflow {
    display: none !important;
  }
}

.clsMenuOverflow {
  flex-shrink: 0;
  max-width: 30vw;
}


.clsNoAnswer {
  font-size: 1.1em;
  color: #555;
  margin: 20px 0;
}

.clsNoAnswer a {
  margin-left: 5px;
}


.clsAnswersTable {
  width: 100%;
  border-collapse: collapse;
  margin-top: 20px;
  background-color: #f0f8ff;
}

.clsAnswersTable td {
  border: 1px solid #ccc;
  padding: 10px;
  text-align: left;
}



.clsAnswersTable tr:hover {
  background-color: #e0f0ff;
}

.clsUserTable {
  width: 100%;
  border-collapse: collapse;
  background-color: #f0f8ff;
  border-radius: 8px;
  overflow: hidden;
}

.clsUserTable th,
.clsUserTable td {
  text-align: left;
  border-bottom: 1px solid #ddd;
}

.clsUserTable th {
  background-color: #0288d1;
  color: white;
}

.clsUserTable tr:hover {
  background-color: #e0f0ff;
}

.app_RedText {
  color: #d32f2f;
}

.app_clsRedButton {
  background-color: #d81b60;
}

.app_clsRedButton:hover {
  background-color: #a11245;
}

.app_clsRedButton.disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.clsSearchForm {
  margin: 15px 0;
  display: inline-block;
}

.app_clsSearchInput {
  padding: 6px;
  border: 1px solid #ddd;
  border-radius: 5px;
  max-width: 100%;
}

.app_clsSearchInput:focus {
  outline: none;
  border-color: #0288d1;
  box-shadow: 0 0 5px rgba(2, 136, 209, 0.3);
}


.clsUserTable th:nth-child(1), .clsUserTable td:nth-child(1) { width: fit-content; } /* UserName */
.clsUserTable th:nth-child(2), .clsUserTable td:nth-child(2) { width: fit-content; } /* Email */
.clsUserTable th:nth-child(3), .clsUserTable td:nth-child(3) { width: 15%; } /* Tier */
.clsUserTable th:nth-child(4), .clsUserTable td:nth-child(4) { width: 15%; } /* Activity Points */
.clsUserTable th:nth-child(5), .clsUserTable td:nth-child(5) { width: 10%; } /* Admin */
.clsUserTable th:nth-child(6), .clsUserTable td:nth-child(6) { width: 15%; } /* Actions */

.clsFormRow {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  margin-bottom: 15px;
}

.app_clsFormField {
  flex: 1;
}

.app_clsFormField label {
  display: block;
  margin-bottom: 5px;
  color: #0288d1;
}



.app_clsFormField input[type="text"] {
  padding: 6px;
  border: 1px solid #ddd;
  border-radius: 5px;
}

.app_clsFormField input[type="text"]:focus {
  outline: none;
  border-color: #0288d1;
  box-shadow: 0 0 5px rgba(2, 136, 209, 0.3);
}
.clsAdminYes {
  color: #d81b60; 
}
.flash.notice {
  background-color: #d81b60;
  color: white;
  font-weight: bold;
  padding: 10px;
  margin-bottom: 15px;
  border-radius: 5px;
  text-align: center;
}
.flash-alert {
  background-color: #f2dede;
  color: #a94442;
  padding: 10px;
  margin-bottom: 10px;
}

.clsFormGroup {
  margin-right: auto;
  width: fit-content;
  text-align: center;
}
.clsFormGroupCentered {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
}
.clsActions {
  gap: 10px;
  align-items: center;
  margin-top: 20px;
}
.app_clsDeleteButton {
  background-color: #ff4d4d;
  color: white;
  padding: 8px 16px;
  text-decoration: none;
  border-radius: 4px;
}
.app_clsDeleteButton:hover {
  background-color: #cc0000;
}

/* Custom Yes/No confirm modal replacing the native OK/Cancel confirm() dialog
   for every data-turbo-confirm link/button site-wide (see application.js). */
.clsConfirmOverlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
}
.clsConfirmBox {
  background: white;
  border-radius: 10px;
  padding: 24px;
  max-width: 400px;
  width: 90%;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);
}
.clsConfirmMessage {
  margin: 0 0 20px;
  font-size: 1em;
  color: #222;
}
.clsConfirmActions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
}
.clsConfirmActions button {
  padding: 8px 20px;
  border-radius: 20px;
  border: none;
  font-size: 0.95em;
  cursor: pointer;
}
.clsConfirmYes {
  background-color: #dc3545;
  color: white;
}
.clsConfirmYes:hover {
  background-color: #b02a37;
}
.clsConfirmNo {
  background-color: #e9ecef;
  color: #222;
}
.clsConfirmNo:hover {
  background-color: #dde1e5;
}


