.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 {
  /* .clsBlueContainer sets `background:` (shorthand) to its blue gradient,
     which also sets background-image — an opaque image that paints over
     any background-color, so background-color alone here would never show.
     Clear the inherited image so the red background-color is visible. */
  background-image: none;
  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-image: none;
  background-color: #fdecea;
  border: 2px solid #c0392b;
  /* Also override .clsBlueContainer's plain `margin: 20px` so the box stays
     horizontally centered (width + margin: auto below). Needs the compound
     selector, same specificity trick as background-color/border above —
     `.aa_clsAdminNewAnswerPage` alone ties with `.clsBlueContainer` on
     specificity, and Sprockets' `require_tree .` + `require_self` puts
     application.css's own rules (incl. .clsBlueContainer) after this file,
     so the plain-class version would silently lose the centering. */
  margin: 4px auto;
}

/* Admin::AnswersController#user_answers also requires admin, so it gets the
   same red admin-only shading/border/title treatment as the pages above. */
.au_clsAdminUserAnswersPage.clsBlueContainer {
  /* .clsBlueContainer sets `background:` (shorthand) to its blue gradient,
     which also sets background-image — an opaque image that paints over
     any background-color, so background-color alone here would never show.
     Clear the inherited image so the red background-color is visible. */
  background-image: none;
  background-color: #fdecea;
  border: 2px solid #c0392b;
}
.au_clsAdminUserAnswersPage_title {
  color: #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;
}

/* Admin Add New Answer page: at half-screen width the stacked alert boxes +
   3 headings + form pushed "Save Answer" below the fold, forcing a scroll to
   answer a single question. Tighten vertical spacing so it fits without
   scrolling.
   NOTE: this view opens its own `<body class="admin-new-answer-page">`
   nested inside the layout's real <body> (same pattern used by
   sessions/login.html.erb, and relied on elsewhere here for the pulse
   animation on .ua_admin-red-alert) — per HTML parsing rules that doesn't
   create a second element, it merges the class onto the one real <body>
   that also holds the site nav/admin button row/footer. That means any
   rule keyed off `body.admin-new-answer-page` that changes the BODY's own
   box layout (display/position/min-height) leaks onto the whole page and
   breaks the nav — a `display: flex; min-height: 100vh` rule here
   previously did exactly that. Keep rules here scoped to *descendants*
   (spacing/font-size on specific elements) only — never restyle
   `body.admin-new-answer-page` itself. */
body.admin-new-answer-page .ua_admin-red-alert {
  padding: 6px 16px;
  margin: 4px auto;
  font-size: 1em;
  width: 90%;
  max-width: 900px;
  box-sizing: border-box;
}
body.admin-new-answer-page h1,
body.admin-new-answer-page h2 {
  margin: 0.15em 0;
}
.aa_clsAdminNewAnswerPage {
  margin: 4px auto;
  padding-top: 4px;
  padding-bottom: 4px;
  width: 90%;
  max-width: 900px;
  box-sizing: border-box;
}
.aa_clsAdminNewAnswerPage h1 {
  font-size: 1.15em;
}
.aa_clsAdminNewAnswerPage h2 {
  font-size: 1em;
}
.aa_clsAdminNewAnswerPage .clsFormGroupCentered {
  margin: 4px 0;
}
.aa_clsAdminNewAnswerPage .clsButton {
  height: 32px;
  padding: 4px 12px;
  margin: 4px;
  font-size: 0.9em;
}
/* Smaller variant of the site-wide .clsAdminOnlyBox for the parent-question
   callout on this page — that box only needs one small line, not the full
   padding/font used for bigger admin-only sections elsewhere. */
.au_clsParentQuestionBox {
  padding: 3px 10px;
  margin: 4px 0;
  font-size: 0.8em;
}
.au_clsParentQuestionBox p {
  margin: 2px 0;
}

.aa_clsAdminNewAnswerPage .clsActions {
  display: flex;
  justify-content: center;
  margin-top: 4px;
}
.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);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: normal;
}

/* 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;
}
/* Same "every column always stays visible, no matter the browser width"
   pattern as .clsUserTableWrapper/.clsUserTable on the admin Users page
   (admin_users.css) — a horizontally + vertically scrollable wrapper with a
   sticky header, and table-layout: fixed + a <colgroup> so columns shrink
   together as the window narrows instead of any of them getting hidden or
   the table quietly overflowing the page. */
.aq_question-table-wrapper {
  overflow-x: auto;
  overflow-y: auto;
  max-height: 70vh;
  width: 100%;
  margin-top: 0;
}

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

.aq_question-table {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  background-color: #f0f8ff;
  border-radius: 8px;
}

.aq_colEdit         { width: 64px; }
.aq_colId           { width: 5%; }
.aq_colPriority     { width: 5%; }
.aq_colCategory     { width: 8%; }
.aq_colQuestion     { width: 18%; }
.aq_colQotd         { width: 8%; }
.aq_colEventStart   { width: 9%; }
.aq_colExpiration   { width: 9%; }
.aq_colType         { width: 6%; }
.aq_colParentId     { width: 6%; }
.aq_colAnswerCount  { width: 6%; }
.aq_colTrigger      { width: 7%; }
.aq_colTags         { width: 8%; }
.aq_colActive       { width: 4%; }
.aq_colDelete       { width: 64px; }

.aq_question-table th, .aq_question-table td {
  text-align: left;
  padding: 6px 8px;
  border-bottom: 1px solid #ddd;
  box-sizing: border-box;
  white-space: normal;
  overflow-wrap: break-word;
}
.aq_question-table th {
  background-color: #0288d1;
  color: white;
  text-align: center;
}

/* Half-screen and narrow: same as admin_users.css — columns keep shrinking
   and text wraps onto extra lines instead of anything being hidden. The
   wrapper's overflow-x: auto above is the fallback for extreme cases. */
@media (min-width: 600px) and (max-width: 960px) {
  .aq_question-table th, .aq_question-table td {
    padding: 4px 6px;
  }
  .aq_question-table {
    font-size: 0.85em;
  }
}

@media (max-width: 599px) {
  .aq_question-table th, .aq_question-table td {
    padding: 4px 6px;
  }
  .aq_question-table {
    font-size: 0.8em;
  }
}

/* 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;
}

/* Scoped to this page only — pull the title up a bit, less whitespace above it. */
.aq_index-page h1 {
  margin-top: 0;
  margin-bottom: 6px;
}

/* "Add, edit, or delete..." blurb + Add New Question button share a line to
   save vertical space instead of the button sitting in its own row below. */
.aq_index-header-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 6px;
}
.aq_index-header-row p {
  margin: 0;
}

/* Collapsed by default — an admin doesn't need the search-syntax reminder on
   every visit; same "Admin View Only" dashed convention used elsewhere. */
.aq_index-tips {
  margin: 0 0 10px;
}
.aq_index-tips summary {
  cursor: pointer;
  font-weight: bold;
  color: #6c757d;
  font-size: 0.85em;
}
.aq_index-tips p {
  margin-top: 6px;
}

.aq_result-count {
  color: #555;
  font-size: 0.9em;
  margin: 0 0 8px;
}

.aq_show-expired-toggle {
  margin: 4px 0 8px;
}
.aq_show-expired-toggle label {
  cursor: pointer;
  color: #555;
}

/* Whole page is admin-only — shade the container red/bordered instead of the
   default site-wide blue, same "this is restricted" convention used for
   admin-only badges/boxes elsewhere (see docs/design.md "Admin-only
   marking"). Compound selector (two classes) so it reliably beats the
   later-loaded, single-class .clsBlueContainer rule in application.css
   regardless of file concatenation order. */
.aq_index-page.clsBlueContainer {
  background: linear-gradient(160deg, #fff5f5, #fdecea);
  border: 3px solid #c0392b;
}


.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;
}

/* 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;
}


/* Save button at the bottom of the Edit Question form: a bit bigger than the default 40px button,
   with the label centered top to bottom (explicit height, no vertical padding, so the text
   doesn't sit low inside the <input>). */
.clsButton.aq_save-btn {
  height: 50px;
  padding: 0 40px;
  font-size: 1.15em;
  line-height: 50px;
}
/* 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;
}

/* UserID/Name/Email share a row via the generic .app_clsFormField flex:1 —
   UserID barely needs the space (a short number), so give it less and let
   Email (often the longest value here) take the room freed up from it. */
.au_clsUserIdField {
  flex: 0.5;
}

.au_clsEmailField {
  flex: 2;
}

.au_clsEmailField input[type="text"] {
  width: 100%;
  box-sizing: border-box;
}

.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;
}

/* Flags the "Create New User" form as an admin-only page — overrides the
   shared blue styling with red, scoped to this page only via the extra
   class on the wrapping div (see admin/users/new.html.erb). Combined
   selector (not just .au_clsAdminOnlyContainer alone) so this outranks
   application.css's own base .clsBlueContainer rule, which — via
   require_self — compiles in *after* this file and would otherwise win
   the cascade despite equal specificity. */
.clsBlueContainer.au_clsAdminOnlyContainer {
  background: linear-gradient(160deg, #fff5f5, #fde3e3);
  border: 3px solid #c62828;
  box-shadow: 0 6px 20px rgba(198, 40, 40, 0.15);
}

/* Centers the "Create User" submit button's text top-to-bottom. The shared
   .clsButton rule only handles horizontal centering (text-align); flexbox
   alignment doesn't reliably affect an <input type="submit">'s value text
   across browsers since it isn't exposed as a flex child, so match
   line-height to the button's content height instead (40px height minus
   the rule's 10px top/bottom padding, box-sizing: border-box = 20px). */
.clsButton.au_clsCreateUserButton {
  line-height: 20px;
}

.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 8px;
  background-color: #6c757d;
  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: #565e64;
  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;
}

/* The main action — orange so it stands out from the blue buttons around it. */
#s_idSearchButton {
  background: linear-gradient(#ffa62b, #f57c00);
  border: 2px solid #e65100;
  color: #fff;
  font-weight: bold;
  font-size: 1.2em;
  height: 52px;
  line-height: 1;
  padding: 0 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 3px 8px rgba(230, 81, 0, 0.45);
}
#s_idSearchButton:hover {
  background: linear-gradient(#ffb64d, #ef6c00);
  box-shadow: 0 5px 12px rgba(230, 81, 0, 0.55);
}

.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%;
  }
}
/* Each matching tribe member gets its own blue card. */
.s_clsResultCard {
  margin: 16px 0;
  padding: 14px 20px;
  border: 2px solid #b3d9f5;
  text-align: left;
}

.s_clsConnectRow {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin: 8px 0;
}
.s_clsConnectRow form { margin: 0; }

.s_clsResultBadgeRow { margin: 6px 0 8px; }
.s_clsResultBadgeRow .oc_clsMatchBadge { margin-left: 0; }

/* Add / Quick Pick / Clear share one line when there's room, and wrap when there isn't. */
.s_clsToolRow {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.s_clsToolRow > * { margin: 0; }

/* On wide screens let the dropdowns grow so more of the text shows — they still size to their
   longest option, so short ones stay compact. */
@media (min-width: 1200px) {
  .as_search-page .s_clsCboCategoryID { max-width: 200px; }
  .as_search-page .s_clsCboQuestionID { max-width: 420px; }
  .as_search-page .s_clsCboPriority   { max-width: 160px; }
}
@media (min-width: 1600px) {
  .as_search-page .s_clsCboCategoryID { max-width: 240px; }
  .as_search-page .s_clsCboQuestionID { max-width: 560px; }
}

/* The quest's name, in a rounded box with a bold yellow border. */
.s_clsQuestTitleBox {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 6px 16px;
  width: fit-content;
  max-width: 100%;
  margin: 10px auto;
  padding: 8px 22px;
  background: #01579b;
  border: 4px solid #ffd600;
  border-radius: 18px;
}
.s_clsQuestTitleText {
  margin: 0;
  color: #ffd600;
  overflow-wrap: anywhere;
}
.s_clsEditName { color: #fff; font-size: 0.8rem; }
.s_clsEditName summary { cursor: pointer; }
.s_clsEditName input[type="text"] { margin-top: 4px; max-width: 260px; }

/* Rarely-used, kept well away from the Search button. */
.s_clsDangerZone {
  margin-top: 40px;
  padding-top: 14px;
  border-top: 1px solid #b3d9f5;
  text-align: center;
  font-size: 0.9rem;
}

/* Search and Save Search side by side. */
.s_clsSearchSaveRow {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
#s_idSaveSearchButton:disabled {
  background: #b0bec5;
  border-color: #b0bec5;
  color: #eceff1;
  cursor: not-allowed;
  opacity: 0.75;
  box-shadow: none;
}

/* The match line and Connect / Already connected share a row (wrapping on narrow screens). */
.s_clsMatchLine {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 18px;
}
.s_clsMatchLine .s_clsConnectRow { margin: 0; }

/* A smaller Connect button. */
.s_clsMatchLine .s_clsConnectRow .clsButton {
  padding: 4px 12px;
  font-size: 0.85em;
  height: auto;
  min-height: 0;
  line-height: 1.3;
}

.s_clsMinMatchNote {
  margin: -10px 0 12px;
  font-size: 0.75em;
  line-height: 1.3;
  color: #555;
}

/* Per-result summary: how many of the quest's questions match / are unanswered / don't match. */
.s_clsTallyBox {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 28px;
  margin: 10px 0 4px;
  padding: 8px 18px;
  border: 2px solid #b3d9f5;
  width: fit-content;
  max-width: 100%;
}
.s_clsTallyItem { display: flex; align-items: baseline; gap: 6px; }
.s_clsTallyItem strong { font-size: 1.3em; }
.s_clsTallyMatched strong { color: #2e7d32; }
.s_clsTallyUnanswered strong { color: #757575; }
.s_clsTallyUnmatched strong { color: #c62828; }

.s_clsNudge form { margin: 0; }
.s_clsNudge .clsButton { padding: 4px 12px; font-size: 0.85em; height: auto; min-height: 0; line-height: 1.3; }
.s_clsNudged { color: #2e7d32; font-size: 0.95em !important; }

.s_clsNudge button:disabled {
  background: #b0bec5;
  border-color: #b0bec5;
  color: #eceff1;
  cursor: not-allowed;
  opacity: 0.75;
  box-shadow: none;
}
.s_clsNudgedAt { font-size: 0.8em; color: #555; }

/* Let the Question dropdown soak up whatever width is left in the row (rather than relying on
   viewport breakpoints), so more of the question text shows whenever there is room. Below 769px
   the rows stack, so this only applies to the side-by-side layout. */
@media (min-width: 769px) {
  .as_search-page .s_clsCriterion .s_clsCboQuestionID {
    flex: 2 1 220px; /* grows twice as fast as the answer dropdown */
    width: auto;
    min-width: 220px;
    max-width: none;
  }
  .as_search-page .s_clsCriterion .s_clsCboAnswer {
    flex: 1 1 130px;
    width: auto;
    min-width: 130px;
    max-width: none;
  }
}

/* "Back to My Quests" link at the top of the page. */
.s_clsBackToQuests { text-align: left; margin-bottom: 4px; }
.s_clsBackToQuests a { text-decoration: none; display: inline-flex; align-items: center; justify-content: center; line-height: 1; }
.s_clsBackToQuests a:hover { transform: translateX(-3px); transition: transform 0.15s; }
/* 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;
}


/* ===== "Camp Fire vibe" pass (2026-09-20) — Update Your Answer page only.
   Modeled on the "Your Camp Fire is Lit!" card: dark gradient panel, big
   centered emoji, white text, glowing yellow CTA — but in the house palette
   (dark blue #0b2a5b / #01579b, light blue #90caf9 / #e3f2fd, yellow #ffd43b).
   Readable content (inputs, match lists) stays on light panels.
   Revert: restore answers.css.bak_20260920_081219 and
   app/views/answers/edit.html.erb.bak_20260920_081219. ===== */

.an_clsEditPage .an_clsAnswerCard {
  background: linear-gradient(180deg, #0277bd 0%, #039be5 70%, #4fc3f7 100%);
  color: #fff;
  border-radius: 16px;
  padding: 24px 20px;
  box-shadow: 0 3px 8px rgba(0,0,0,0.3);
  animation: an_ember-glow 3s ease-in-out infinite;
}
@keyframes an_ember-glow {
  0%, 100% { box-shadow: 0 3px 8px rgba(0,0,0,0.3), 0 0 0 rgba(255,212,59,0); }
  50%      { box-shadow: 0 3px 8px rgba(0,0,0,0.3), 0 0 22px rgba(255,212,59,0.45); }
}
@media (prefers-reduced-motion: reduce) {
  .an_clsEditPage .an_clsAnswerCard { animation: none; }
}
.an_clsEditPage .an_clsAnswerCard .question-text,
.an_clsEditPage .an_clsAnswerCard label { color: #fff; }
.an_clsEditPage .an_clsAnswerCard select,
.an_clsEditPage .an_clsAnswerCard textarea {
  background: #fff;
  border-color: #90caf9;
  color: #2b2b2b;
}
.an_clsEditPage .an_clsAnswerCard select:focus,
.an_clsEditPage .an_clsAnswerCard textarea:focus {
  border-color: #ffd43b;
  box-shadow: 0 0 0 3px rgba(255,212,59,0.35);
}

/* Yellow = the main action; light blue = the quiet one; Delete stays red. */
.an_clsBtnYellow.clsBlueButton {
  background: #ffd43b;
  color: #0b2a5b;
  font-weight: bold;
}
.an_clsBtnYellow.clsBlueButton:hover { background: #ffe066; }
/* a.clsButton:visited (application.css) forces white text and out-ranks a
   plain class rule, so the link needs the same element+pseudo specificity. */
.an_clsBtnLight.clsBlueButton,
a.an_clsBtnLight.clsBlueButton,
a.an_clsBtnLight.clsBlueButton:visited {
  background: #e3f2fd;
  color: #01579b;
  font-weight: bold;
}
.an_clsBtnLight.clsBlueButton:hover,
a.an_clsBtnLight.clsBlueButton:hover { background: #90caf9; color: #0b2a5b; }

.an_clsBigIcon { font-size: 40pt; line-height: 1; text-align: center; }

/* Match sections: same dark-blue panel for "same answer", light-blue panel for
   "top matches" — centered, big emoji on top. */
.an_clsEditPage .an_clsMatchSection-same {
  text-align: center;
  color: #fff;
  background: linear-gradient(180deg, #0b2a5b 0%, #01579b 70%, #0288d1 100%) !important;
  border: none !important;
  border-radius: 16px;
  box-shadow: 0 3px 8px rgba(0,0,0,0.3);
  padding: 24px 16px;
}
.an_clsEditPage .an_clsMatchSection-same h2 { color: #fff; margin: 0.25rem 0; }

.an_clsEditPage .an_clsMatchSection-top {
  text-align: center;
  color: #0b2a5b;
  background: linear-gradient(180deg, #e3f2fd 0%, #90caf9 100%) !important;
  border: 3px solid #ffd43b !important;
  border-radius: 16px;
  box-shadow: 0 3px 8px rgba(2,136,209,0.25);
  padding: 24px 16px;
}
.an_clsEditPage .an_clsMatchSection-top h2 { color: #0b2a5b; margin: 0.25rem 0; }

.an_clsEditPage .an_clsMatchSection-same em,
.an_clsEditPage .an_clsMatchSection-top em { font-style: normal; }

/* Light reading panel inside the dark sections. */
.an_clsMatchBody {
  background: #fff;
  color: #2b2b2b;
  border-radius: 12px;
  padding: 12px 16px;
  text-align: left;
}
.an_clsEditPage .an_clsMatchBody .match-list { margin: 0 auto; }
.an_clsEditPage .an_clsMatchBody .match-list li { background: #e3f2fd; }

/* Page title lives inside the answer card now. Yellow + letter-spaced + a
   divider so it reads as a heading, distinct from the white question text. */
.an_clsCardTitle {
  font-size: 27pt;
  font-weight: 800;
  color: #ffe066;
  letter-spacing: 0.04em;
  text-shadow: 0 2px 4px rgba(0,0,0,0.3);
  padding-bottom: 12px;
  margin-bottom: 16px;
  border-bottom: 2px solid rgba(255,224,102,0.55);
}
.an_clsCardTitle-icon { font-size: 32pt; vertical-align: middle; margin-right: 8px; }
.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;
  flex-wrap: wrap;
  gap: 6px;
  max-width: 100%;
}

/* 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;
}
/* app/assets/stylesheets/conversations.css — matched-user question exchange
   thread (app/views/conversations/show.html.erb). */
.cv_clsThreadPage h1 {
  margin: 0 0 4px;
}

.cv_clsHeaderRow {
  display: flex;
  justify-content: flex-start;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px 20px;
}

.cv_clsBackLink {
  white-space: nowrap;
}

.cv_clsSearchName {
  color: #f0f8ff;
  font-size: 0.9em;
  margin-top: -8px;
}

/* Chat-style bubbles, matching open_conversations.css (.oc_clsMessages). */
.cv_clsExchanges {
  background: #fff;
  border-radius: 10px;
  padding: 12px;
  margin: 12px 0;
  max-height: 60vh;
  overflow-y: auto;
}

.cv_clsEmpty {
  color: #666;
  text-align: center;
  padding: 20px 0;
}

.cv_clsMessage {
  max-width: 75%;
  margin: 6px 0;
  padding: 8px 12px;
  border-radius: 12px;
  background: #eef0f2;
  color: #222;
  text-align: left;
}

.cv_clsMine {
  margin-left: auto;
  background: #0a58ca;
  color: #fff;
}

.cv_clsMine a {
  color: #cfe2ff;
}

.cv_clsSender {
  margin: 0 0 2px;
  font-size: 0.75em;
  font-weight: bold;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  opacity: 0.7;
}

.cv_clsBody {
  margin: 0;
  white-space: pre-wrap;
  word-break: break-word;
}

.cv_clsMeta {
  margin: 4px 0 0;
  font-size: 0.75em;
  opacity: 0.75;
}

/* Status bubbles (waiting / declined / your turn) are muted, italic. */
.cv_clsStatus .cv_clsBody {
  font-style: italic;
}

.cv_clsDeclined.cv_clsTheirs {
  color: #721c24;
}

.cv_clsWaitingForMe {
  font-weight: bold;
}

.cv_clsPending.cv_clsTheirs {
  color: #856404;
}

.cv_clsWaitingStatus {
  color: #f0f8ff;
  text-align: center;
  font-style: italic;
}

.cv_clsAskSection {
  margin-top: 16px;
  text-align: center;
}

.cv_clsSuggestedList {
  list-style: none;
  padding: 0;
  margin-top: 12px;
}

.cv_clsSuggestedList li {
  background: #fff;
  color: #222;
  border-radius: 8px;
  padding: 10px 14px;
  margin: 6px 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  text-align: left;
}
.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: 18px;
  border: 1px solid rgba(0, 123, 255, 0.18);
  border-radius: 16px;
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.05);
}

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-bars-hidden-note {
  font-size: 0.8em;
  color: #888;
  opacity: 0.85;
  margin: 4px 0 0;
}

.db_qotd-answer-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
}
.db_qotd-answer-row p {
  margin: 0;
}
.db_qotd-answer-row .clsButton {
  margin: 0;
}

/* Compact version of .clsAdminOnlyBadge for this specific note, sized to
   match .db_qotd-bars-hidden-note next to it. Deliberate, explicit exception
   to the site's 15pt text floor (see docs/design.md "Type") for this one
   admin-only aside — the maintainer asked for it after being told about the
   rule, so don't "fix" this back to 15pt on a future pass. */
.db_qotd-admin-hidden-note {
  display: block;
  margin: 6px 0 0;
  padding: 4px 10px;
  font-size: 0.8em;
  opacity: 0.9;
}

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

/* Gentle glow-pulse on the "You haven't answered this yet" note (today's and
   yesterday's Question of the Day) so it draws the eye. */
.db_qotd-not-answered-pulse {
  animation: db_qotd-not-answered-pulse 1.8s ease-in-out infinite;
}
@keyframes db_qotd-not-answered-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(212, 172, 13, 0.6); transform: scale(1); }
  70%  { box-shadow: 0 0 0 12px rgba(212, 172, 13, 0); transform: scale(1.04); }
  100% { box-shadow: 0 0 0 0 rgba(212, 172, 13, 0); transform: scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .db_qotd-not-answered-pulse { animation: none; }
}

.db_qotd-firepit-invite {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 10px 0 0;
  padding: 8px 12px;
  background: linear-gradient(90deg, #fff3e0, #ffe8d6);
  border: 1px solid #e8a35c;
  border-radius: 8px;
  text-decoration: none;
  color: #7a3e00;
  font-weight: bold;
}
.db_qotd-firepit-invite:hover {
  background: linear-gradient(90deg, #ffe8d6, #ffdcc0);
}
.db_qotd-firepit-invite .db_qotd-firepit-emoji {
  font-size: 1.2em;
}

.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; }
}

/* Same gentle attention-getting pulse as the Android app's dashboard Check-In
   button (pulseCheckInButton() in DashboardActivity.kt) — 1.08x scale, 0.7s
   each way. Only ever applied to db_checkinNowBtn, which only renders while
   there's an unconfirmed check-in for today, so this stops on its own the
   moment the check-in row re-renders after confirming. */
.db_checkin-pulse {
  animation: db_checkin-pulse 1.4s infinite ease-in-out;
}

@keyframes db_checkin-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.08); }
}

.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_clsLocationNudge {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0.5rem 0 1.5rem;
  padding: 10px 14px;
  border: 1px solid #90caf9;
  border-radius: 6px;
  background-color: #e3f2fd;
}

.db_clsAdminOnly {
  background-color: #dc3545;
}

/* ============================================================
   MOCKUP — "less Windows-XP" pass, dashboard only.
   Same blue/yellow family, just: bigger corner radii, soft
   elevation shadows instead of flat 1px outlines, gentle
   gradients instead of solid fills, and a bit more breathing
   room. Everything below is scoped under .db_dashboard-page so
   no other page on the site is affected. Revert by restoring
   the .bak file saved alongside this one.
   ============================================================ */

.db_dashboard-page h1 {
  color: #0288d1;
  letter-spacing: 0.01em;
  margin-bottom: 10px;
}

.db_dashboard-page .clsBlueContainer {
  background: linear-gradient(160deg, #f3faff, #e3f2fd);
  border-radius: 20px;
  box-shadow: 0 6px 20px rgba(2, 136, 209, 0.10);
  border: 1px solid #d7ecfc;
}

.db_dashboard-page section {
  border: 1px solid rgba(0, 123, 255, 0.18);
  border-radius: 16px;
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.05);
  padding: 18px;
  margin-bottom: 24px;
}

.db_dashboard-page section h2 {
  color: #0288d1;
}

/* Re-tint each colored card's border/shadow to match its own accent
   instead of a flat colored outline, echoing the section rule above. */
.db_dashboard-page .db_dash-events { border-color: rgba(40, 167, 69, 0.25); box-shadow: 0 3px 10px rgba(40, 167, 69, 0.10); }
.db_dashboard-page .db_dash-matches { border-color: rgba(142, 68, 173, 0.25); box-shadow: 0 3px 10px rgba(142, 68, 173, 0.10); }
.db_dashboard-page .db_dash-searches.db_dash-searches-trending-container { border-color: rgba(23, 162, 184, 0.25); box-shadow: 0 3px 10px rgba(23, 162, 184, 0.10); }
.db_dashboard-page .db_dash-trending.db_dash-searches-trending-container { border-color: rgba(253, 126, 20, 0.25); box-shadow: 0 3px 10px rgba(253, 126, 20, 0.10); }
.db_dashboard-page .db_dash-rooms.db_dash-searches-trending-container { border-color: rgba(232, 89, 12, 0.25); box-shadow: 0 3px 10px rgba(232, 89, 12, 0.10); }
.db_dashboard-page .db_dash-notifications { border-color: rgba(232, 62, 140, 0.25); box-shadow: 0 3px 10px rgba(232, 62, 140, 0.10); }
.db_dashboard-page .db_dash-random { border-color: rgba(111, 66, 193, 0.25); box-shadow: 0 3px 10px rgba(111, 66, 193, 0.10); }
.db_dashboard-page .db_dash-due { border-color: rgba(212, 172, 13, 0.3); box-shadow: 0 3px 10px rgba(212, 172, 13, 0.12); }

.db_dashboard-page .db_qotd-today_group,
.db_dashboard-page .db_qotd-yesterday_group {
  border-radius: 16px;
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.05);
}
.db_dashboard-page .db_qotd-today_group { border-color: rgba(245, 166, 35, 0.4); }
.db_dashboard-page .db_qotd-yesterday_group { border-color: rgba(108, 117, 125, 0.35); }

.db_dashboard-page .db_checkin-group {
  border-radius: 16px;
  border-color: rgba(232, 89, 12, 0.35);
  box-shadow: 0 3px 10px rgba(232, 89, 12, 0.10);
}

.db_dashboard-page .db_clsAdminOnlyBox,
.db_dashboard-page .db_clsLocationNudge {
  border-radius: 14px;
}

.db_dashboard-page .db_events-container {
  border-radius: 16px;
}

.db_dashboard-page .db_events-table {
  border-radius: 16px;
}

/* Pulsing "Take a look on the Events page" button — shown when there are new events the
   member hasn't answered yet. */
.db_new-events-pulse {
  animation: db_new-events-pulse 1.8s ease-in-out infinite;
}
@keyframes db_new-events-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.55); transform: scale(1); }
  70%  { box-shadow: 0 0 0 14px rgba(0, 123, 255, 0); transform: scale(1.05); }
  100% { box-shadow: 0 0 0 0 rgba(0, 123, 255, 0); transform: scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .db_new-events-pulse { animation: none; }
}
/* 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;
}

/* Card-like wrapper around the table: rounded corners + shadow instead of a flat blue box.
   border-collapse tables can't round their own corners, so the wrapper carries it and clips
   the table to match. */
.ev_table-wrap {
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 3px 10px rgba(0,0,0,0.12);
  padding: 0 !important;
}
.ev_table-wrap .ev_events-table {
  margin: 0;
}

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

.ev_events-table td {
  padding: 14px 12px;
}

.ev_events-table th {
  background: linear-gradient(135deg, #0b2a5b, #01579b);
  color: #fff;
  font-weight: bold;
  padding: 14px 12px;
  text-align: left;
}

.ev_events-table tbody tr:nth-child(even) {
  background-color: #f4f8fc;
}

  .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;
}

/* "N days away" note after the event date */
.ev_days-until {
  display: inline-block;
  margin-left: 6px;
  font-weight: bold;
  color: #01579b;
}
.ev_days-until-today {
  color: #c0392b;
}

/* Yes/No pills once answered — same rounded-pill language as the "Yay or nay?" button below. */
.ev_rsvp-pill {
  display: inline-block;
  padding: 4px 14px;
  border-radius: 20px;
  font-weight: bold;
}
.ev_rsvp-pill-yes {
  background: #e8f5e9;
  color: #1a7f37;
  border: 1px solid #a3d9a5;
}
.ev_rsvp-pill-no {
  background: #fdecea;
  color: #c0392b;
  border: 1px solid #f1a9a0;
}

/* Unanswered event: pulsing "Yay or nay?" button to nudge an answer */
.ev_answer-pulse {
  display: inline-block;
  padding: 6px 14px;
  border-radius: 20px;
  background: #ffd43b;
  color: #0b2a5b !important;
  font-weight: bold;
  text-decoration: none;
  animation: ev_answer-pulse 1.8s ease-in-out infinite;
}
@keyframes ev_answer-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(245, 166, 35, 0.6); transform: scale(1); }
  70%  { box-shadow: 0 0 0 14px rgba(245, 166, 35, 0); transform: scale(1.06); }
  100% { box-shadow: 0 0 0 0 rgba(245, 166, 35, 0); transform: scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .ev_answer-pulse { animation: none; }
}
@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;
}

/* .clsBlueLink's default medium-blue text is nearly unreadable against this
   page's blue/cyan gradient background — same problem the h4/h3/p around it
   solve by going near-white. Matches that instead, with an underline so it
   still reads as a link rather than plain heading text. */
.home-container .clsBlueLink {
  color: #fff;
  text-decoration: underline;
}
.home-container .clsBlueLink:hover {
  color: #f0f8ff;
}

/* "A tad larger" than the site-wide .clsButton default, for this page's
   primary calls to action specifically. */
.home-cta-btn {
  height: 48px;
  padding: 12px 22px;
  font-size: 1.05em;
}


.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); }
}

/* "Save Answer": keep the same size, but center the label top to bottom. The default 10px
   vertical padding in a 40px-tall <input> left the text sitting low, so use no vertical
   padding and a line-height equal to the button height instead. */
.clsButton#save-answer-button {
  padding: 0 16px;
  line-height: 40px;
}


/* Quest name: dark text, with the name itself on a soft yellow highlight — bright yellow text
   was hard to read on the light page background. */
.mq_quest-name {
  color: #0b2a5b;
}
.mq_quest-name i {
  display: inline-block;
  padding: 2px 14px;
  border-radius: 10px;
  background: #ffe066;
  color: #0b2a5b;
  font-weight: bold;
}
/* 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;
}

/* Small sub-note tucked right under a section heading. */
.match-section .match-heading-tight {
  margin-bottom: 0;
}

.match-section ul {
  list-style-type: disc;
  padding-left: 22px;
}

.match-section .match-section-note {
  margin: 0 0 10px;
  font-size: 0.8em;
  color: #666;
}

.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;
}

.match-openchat-section {
  margin-top: 30px;
  padding-top: 20px;
  border-top: 1px solid #ddd;
}
.match-openchat-note { color: #444; }
.match-openchat-input {
  width: 100%;
  max-width: 520px;
  box-sizing: border-box;
  margin-bottom: 10px;
}

/* ===== Potential Match page — matches the Android Match Detail screen (2026-09-20).
   Everything scoped under .mp_page so it can't leak. Light-blue container stays; the
   hero and cards are small accents. Text ≥ 15pt. See docs/design.md. ===== */
.mp_page { text-align: center; }

.mp_hero {
  background: linear-gradient(180deg, #e3f2fd 0%, #b3e5fc 100%);
  border: 1px solid #d7ecfc;
  border-radius: 20px;
  padding: 20px 18px;
  margin: 10px 0 18px;
}
.mp_hero-icon { font-size: 40pt; line-height: 1; }
.mp_hero h1 { color: #0b2a5b; font-size: 22pt; margin: 6px 0 8px; }
.mp_hero-intro { color: #2b2b2b; font-size: 15pt; margin: 0 0 8px; }
.mp_hero-meta { color: #555; font-size: 15pt; margin: 0; }

.mp_admin { text-align: left; margin: 0 0 18px; font-size: 15pt; color: #c0392b; border-width: 3px; border-radius: 16px; }

.mp_card {
  text-align: left;
  background: #fff;
  border: 1px solid #d7ecfc;
  border-radius: 16px;
  box-shadow: 0 2px 6px rgba(2, 136, 209, 0.12);
  padding: 16px 18px;
  margin: 0 0 16px;
}
.mp_card-blue { background: #e3f2fd; border: 2px solid #90caf9; box-shadow: none; }
.mp_card h2 { color: #0b2a5b; font-size: 17pt; margin: 0 0 8px; }
.mp_note { color: #444; font-size: 15pt; margin: 0 0 12px; }

.mp_choose { color: #0b2a5b; font-size: 19pt; text-align: left; margin: 6px 0 4px; }
.mp_choose-hint { color: #555; font-size: 15pt; text-align: left; margin: 0 0 14px; }

.mp_criteria { list-style: none; padding: 0; margin: 0; }
.mp_row { padding: 8px 12px; margin-bottom: 4px; border-radius: 8px; font-size: 15pt; }
.mp_row-match { background: #e8f5e9; color: #1b5e20; }
.mp_row-miss { background: #fff8e1; color: #7a5b00; }  /* amber, not red — red is admin-only */

.mp_card .match-actions { margin: 0; text-align: center; }
.mp_sent-at { color: #2e7d32; font-weight: bold; font-size: 15pt; margin: 8px 0 0; }

/* Yellow pill = the main action; gray once used / disabled. */
.mp_page .mp_yellow,
.mp_page a.mp_yellow,
.mp_page a.mp_yellow:visited {
  background: #ffd43b;
  color: #0b2a5b;
  font-weight: bold;
  font-size: 15pt;
  border-radius: 25px;
  height: auto;
  min-height: 46px;
  padding: 8px 24px;
  text-decoration: none;
  transition: transform 0.2s, background 0.2s;
}
.mp_page .mp_yellow:hover:not(:disabled) { background: #ffe066; transform: scale(1.03); }
.mp_page .mp_yellow:disabled { background: #cfd8dc; color: #607d8b; cursor: default; }

/* Question ideas built by the page's script. */
.mp_page .match-suggested-list li { background: #e3f2fd; }
.mp_page .matchSendQuestionBtn { background: #ffd43b; color: #0b2a5b; }
.mp_page .matchSendQuestionBtn:hover:not(:disabled) { background: #ffe066; }
.mp_page .matchRerollBtn { background: #e3f2fd; color: #01579b; }
.mp_page .matchSendQuestionBtn:disabled, .mp_page .matchRerollBtn:disabled { background: #cfd8dc; color: #607d8b; }

/* Neutralize the older section dividers now that each part is its own card. */
.mp_page .mp_card.match-suggest-section,
.mp_page .mp_card.match-openchat-section { margin-top: 0; padding-top: 16px; border-top: 1px solid #d7ecfc; }
.mp_page .mp_card-blue.match-openchat-section { border: 2px solid #90caf9; }

.mp_notinterested-wrap { margin: 6px 0 0; }
.mp_page a.mp_notinterested, .mp_page a.mp_notinterested:visited { color: #555; font-size: 15pt; text-decoration: underline; }
/* app/assets/stylesheets/open_conversations.css — free-text 1:1 chat thread
   (app/views/open_conversations/show.html.erb). */
.oc_clsThreadPage h1 {
  margin: 0 0 4px;
}

.oc_clsHeaderRow {
  display: flex;
  justify-content: flex-start;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px 20px;
}

.oc_clsBackLink {
  white-space: nowrap;
}

.oc_clsMatchBadge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.8rem;
  vertical-align: middle;
  background: rgba(255, 255, 255, 0.85);
  color: #222;
  border-radius: 20px;
  padding: 4px 10px;
  margin-left: 0;
}

.oc_clsBadgeRow {
  margin: 0 0 4px;
}

.oc_clsMatchDot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  display: inline-block;
}

.oc_clsMessages {
  background: #fff;
  border-radius: 10px;
  padding: 12px;
  margin: 12px 0;
  max-height: 60vh;
  overflow-y: auto;
}

.oc_clsEmpty {
  color: #666;
  text-align: center;
  padding: 20px 0;
}

.oc_clsMessage {
  max-width: 75%;
  margin: 6px 0;
  padding: 8px 12px;
  border-radius: 12px;
  background: #eef0f2;
  color: #222;
}

.oc_clsMine {
  margin-left: auto;
  background: #0a58ca;
  color: #fff;
}

.oc_clsMessageSender {
  margin: 0 0 2px;
  font-size: 0.75em;
  font-weight: bold;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  opacity: 0.7;
}

.oc_clsMessageBody {
  margin: 0;
  white-space: pre-wrap;
  word-break: break-word;
}

.oc_clsMessageMeta {
  margin: 4px 0 0;
  font-size: 0.75em;
  opacity: 0.75;
}

.oc_clsMine .oc_clsMessageMeta a {
  color: #cfe2ff;
}

.oc_clsSendBtn {
  font-size: 1.15em;
  padding: 12px 24px;
  height: auto;
}

.oc_clsAliasBox {
  margin: 4px 0 8px;
  font-size: 0.9rem;
}
.oc_clsAliasBox summary { cursor: pointer; }
.oc_clsAliasBox form { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 6px; }
/* 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;
}

/* Quest cards are now clickable — straight through to answer/edit your own
   answer to that question (see _quest_box.html.erb). */
a.clsQuestBoxLink {
  display: block;
  text-decoration: none;
  color: inherit;
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}

a.clsQuestBoxLink:hover,
a.clsQuestBoxLink:focus-visible {
  transform: translateY(-3px);
  box-shadow: 0 8px 18px rgba(0, 123, 255, 0.25);
  border-color: #0056b3;
}

.gsp_answer-cta {
  margin-top: 14px !important;
  font-size: 0.75em !important;
  font-weight: bold;
  color: #007bff;
  opacity: 0.85;
}

.gsp_hint {
  font-size: 0.95em;
  color: #4b5563;
  margin-top: -4px;
}

/* Bottom CTA pair — side by side instead of stacked, matches the site's
   pill-button convention (.clsRoundButton) instead of the plain rectangular
   .clsButton default. */
.gsp_cta-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  margin-top: 24px;
}

@media (max-width: 480px) {
  .gsp_cta-row {
    flex-direction: column;
    align-items: center;
  }
}

.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;
  }
}
/* Admin-only debug section (matches other pages) */
.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;
}
/* 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!)              */
/* ============================================================= */
.searchcolumn2 input { /* Viewed At */
  width: 100%;
  box-sizing: border-box;
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: 100%;
  font-size: 1rem;
  color: #1976d2;
  background: #e3f2fd;
  border: 1px solid #bbdefb;
}

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

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

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

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

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

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

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

/* Search row column widths now come from the shared .column1..10 classes
   (same <table> as the header/data rows — see COLUMN WIDTHS — DATA ROWS
   below), so both rows are guaranteed to line up instead of drifting apart
   like they could when the search row lived in a separate <table>. */

/* ============================================================= */
/* 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: 100%; } /* Viewed at */
  .searchcolumn3 input { max-width: 100%; }
  .searchcolumn4 input { max-width: 100%; }
  .searchcolumn5 input { max-width: 100%; }
  .searchcolumn6 input { max-width: 100%; }
  .searchcolumn7 input { max-width: 100%; }
  .searchcolumn8 input { max-width: 100%; }
  .searchcolumn9 input { max-width: 100%; }

  /* 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);
}

/* Pay-what-you-want amount picker on the Founding Supporter card. */
.plans-amount-form { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.plans-amount-row { display: flex; align-items: center; gap: 6px; font-weight: bold; }
.plans-amount-row input { width: 6em; padding: 6px 8px; font-size: 1.1em; text-align: right; }

.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;
}

/* .clsButton has a fixed height (see application.css) sized for one line of
   text — fine for short labels, but "Cancel Subscription" wraps to two lines
   on a narrow card and the second line was getting clipped. Let these
   buttons grow instead of clipping. */
.plans-cta .clsButton {
  height: auto;
  min-height: 40px;
  white-space: normal;
  line-height: 1.2;
}

.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-cta-note {
  margin: 8px 0 0;
  font-size: 0.85em;
  color: #666;
}

.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-top: 0;
  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;
}

/* My Suggestions page (app/views/question_requests/index.html.erb) — three
   sections (Questions/Answers/Feedback), all inside the one page-level
   .question-request-container. Each section is its own bordered box nested
   inside that outer blue container, not just a divider line. */
.clsSuggestionsSection {
  margin-top: 20px;
  padding: 16px;
  border: 2px solid rgba(255, 255, 255, 0.6);
  border-radius: 10px;
}

.clsSuggestionsSection h2 {
  color: #fff;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
  margin-top: 0;
  margin-bottom: 16px;
}

/* A white inner panel for the table itself — the dark status colors below
   (approved/rejected/pending) need a light background to stay readable,
   the same way the blue container's own text does the opposite. */
.clsSuggestionsPanel {
  background: #fff;
  border-radius: 8px;
  padding: 12px;
  overflow-x: auto;
}

.clsSuggestionsPanel table {
  width: 100%;
  border-collapse: collapse;
  color: #222;
}

.clsSuggestionsPanel th,
.clsSuggestionsPanel td {
  text-align: left;
  padding: 8px;
  border-bottom: 1px solid #eee;
}

.clsSuggestionsPanel th {
  border-bottom: 2px solid #ccc;
}
/* ===== Suggest a Question or Event page (2026-09-20) — scoped under
   .qr_clsSuggestPage (.question-request-container and .clsBlueButton above are
   shared by other pages, so nothing here may leak). Keeps the original
   blue-to-teal gradient container (matches the header/footer); only small touches
   are added: emoji, rounded white inputs, yellow pill button. ===== */
.qr_clsSuggestPage .qr_clsBigIcon { font-size: 40pt; line-height: 1; }

.qr_clsSuggestPage .field { text-align: left; }
.qr_clsSuggestPage .field label { font-weight: bold; }

.qr_clsSuggestPage .field input[type="text"],
.qr_clsSuggestPage .field select,
.qr_clsSuggestPage .field textarea {
  border-radius: 10px;
  color: #2b2b2b;
  background: #fff;
}

.qr_clsSuggestPage .actions .clsBlueButton {
  background: #ffd43b;
  color: #0b2a5b;
  font-weight: bold;
  border-radius: 25px;
  padding: 12px 32px;
  transition: transform 0.2s, background 0.2s;
}
.qr_clsSuggestPage .actions .clsBlueButton:hover {
  background: #ffe066;
  transform: scale(1.05);
}

/* 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;
}

/* "Because you answered…" context line — mirrors the Android app's My
   Questions screen (QuestionAdapter#bindParentContext). Blue when the
   question is a follow-up, muted gray for a top-level question. */
.parent-context {
  font-size: 0.85em;
  line-height: 1.3;
  color: #0288d1;
  margin: 0 0 8px 0;
}

.parent-context-top-level {
  color: #777;
}

.parent-context-link {
  color: #01579b;
  font-weight: bold;
  margin-left: 4px;
}

/* Banner shown when a specific (possibly already-answered) question was
   force-loaded via "tap to change" — see QuestionsController#reanswer. */
.reanswer-banner {
  font-size: 0.85em;
  background-color: #fff8e1;
  border: 1px solid #f0c14b;
  border-radius: 6px;
  padding: 6px 10px;
  margin: 0 0 10px 0;
}

.reanswer-current-answer {
  font-size: 0.9em;
  color: #555;
  margin: 0 0 6px 0;
}

.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;
}

/* Search / Clear: exactly the same height as the search text box (both 44px), label centered
   top to bottom (explicit height, no vertical padding), and a gap between the box and the
   buttons (the default 10px .clsButton margin is dropped so they line up with the box). */
.qp_field input[type="text"] {
  box-sizing: border-box;
  height: 44px;
}

.qp_search_form {
  column-gap: 16px;   /* space between the search box and the buttons */
}

.clsButton.qp_search_btn {
  box-sizing: border-box;
  height: 44px;
  margin: 0;
  padding: 0 28px;
  font-size: 15pt;
  line-height: 44px;
}

.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;
  }
}
/* On wide/full-screen browsers the default .clsBlueContainer 20px side margin
   leaves a lot of unused space on this page — shrink the margin proportionally
   as the viewport grows so the box actually widens on full-screen monitors. */
@media (min-width: 700px) {
  .sn_search-name-container {
    margin-left: 4vw;
    margin-right: 4vw;
  }
}

.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;
}

.sn_new-search-submit:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* "Let's Go →" — a bit bigger than the default 40px button, with the text centered
   top to bottom (the default 10px vertical padding left the label sitting low in an
   <input>, so use an explicit height with no vertical padding instead). */
.clsButton.sn_new-search-submit {
  height: 54px;
  padding: 0 36px;
  font-size: 1.25em;
  line-height: 54px;
}
.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 {
  /* The search name the user typed: dark text on a soft yellow highlight — bright yellow text
     was nearly invisible on the light-blue page background. */
  display: inline-block;
  margin-top: 6px;
  padding: 2px 14px;
  border-radius: 10px;
  background: #ffe066;
  color: #0b2a5b;
  font-weight: bold;
}
/* 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: center;
  gap: 14px;
  flex-wrap: wrap;
}


.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;
}

/* Plans card (users/settings.html.erb) — a little more personality than a plain
   link, and moved to the top of the page for free-tier users so it's the first
   thing they see instead of buried at the bottom. */
.us-plan-card-free {
  background: linear-gradient(135deg, #fff3cd, #ffe0b2);
  border: 2px solid #f5a623;
}

.us-plan-card-paid {
  background: linear-gradient(135deg, #e8f5e9, #d4edda);
  border: 2px solid #20c997;
}

.us-plan-pulse-btn {
  animation: us-plan-pulse 1.8s ease-in-out infinite;
}

@keyframes us-plan-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(245, 166, 35, 0.55); transform: scale(1); }
  70%  { box-shadow: 0 0 0 14px rgba(245, 166, 35, 0); transform: scale(1.04); }
  100% { box-shadow: 0 0 0 0 rgba(245, 166, 35, 0); transform: scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .us-plan-pulse-btn { animation: none; }
}
.mp_clsTitleRow {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
}

.mp_clsZoomControl {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13pt;
  color: #495057;
}

.mp_clsZoomInput {
  width: 60px;
  padding: 4px 6px;
  font-size: 13pt;
}

.mp_clsZoomSaveBtn {
  font-size: 12pt;
  padding: 3px 10px;
}

.mp_clsZoomSaved {
  color: #1a7f37;
  font-weight: bold;
}

.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);
}

/* Individual member pin, colored by match % (see matchColor() in map_page.js) */
.mp_clsMatchDot {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 2px solid #fff;
  box-sizing: border-box;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
}

.mp_clsLegend {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 16px;
  margin-top: 10px;
  padding: 8px 12px;
  background: #f8f9fa;
  border: 1px solid #dee2e6;
  border-radius: 6px;
  font-size: 0.85em;
  color: #444;
}

.mp_clsLegendItem {
  display: flex;
  align-items: center;
  gap: 6px;
}

.mp_clsLegendDot {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  border: 1px solid rgba(0, 0, 0, 0.15);
}

.mp_clsPopupMatchDot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 1px solid rgba(0, 0, 0, 0.15);
  margin-right: 5px;
  vertical-align: middle;
}

/* 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);
}

.mp_clsPrivacyControl { margin-left: 16px; }
.mp_clsBlurSelect { font-size: inherit; margin-left: 4px; }
.mp_clsShowMeLabel { margin-left: 10px; white-space: nowrap; }
.mp_clsHiddenNotice { margin-bottom: 10px; }
/* ============================================= */
/* 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: linear-gradient(160deg, #f3faff, #e3f2fd);
  border: 1px solid #d7ecfc;
  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: 20px;
  box-shadow: 0 6px 20px rgba(2, 136, 209, 0.10);
}



.clsButton {
  border: none;
  border-radius: 10px;
  box-sizing: border-box;
  cursor: pointer;
  color: white;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  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. */
/* Site-wide free-tier upgrade banner (layouts/application.html.erb) — shown on
   every page above the nav for logged-in, non-admin, free-tier users. Not
   sticky (unlike .clsMenuBar below it) so it scrolls away with the page,
   matching common "upgrade nag" banner behavior. Dismiss is client-side only
   (localStorage) — reappears after 24h, no backend/DB involvement needed. */
.us-upgrade-banner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  flex-wrap: wrap;
  flex-shrink: 0;
  background: linear-gradient(90deg, #f5a623, #e8590c);
  color: #fff;
  padding: 10px 16px;
  text-align: center;
}

.us-upgrade-banner-btn {
  background: #fff;
  color: #e8590c;
  font-weight: bold;
  border-radius: 20px;
  padding: 6px 16px;
  text-decoration: none;
  white-space: nowrap;
}

.us-upgrade-banner-btn:hover {
  background: #fff3cd;
}

.us-upgrade-banner-dismiss {
  background: none;
  border: none;
  color: #fff;
  font-size: 1.3em;
  line-height: 1;
  cursor: pointer;
  padding: 0 4px;
}

.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;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}

/* Same red shown for admins in the Android app's header bar (admin_header_500/700). */
.clsMenuBarAdmin {
  background: linear-gradient(180deg, #B71C1C, #7F0000);
}

.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;
}


