/**
 * LOOK: anandamargamx.com (Oswald, Helvetica Neue, #f05a1a).
 * CSS_VER 1.40 — shown on the loader chip as css=1.40.
 *
 * SWAP — paste this WHOLE file into the ananda theme’s custom.css.
 * Pair with custom.js (Loader 1.99).
 * Other look: ananda-custom.css
 */

:root {
  --am-css-ver: "1.40";
  --am-orange: #f05a1a;
  --am-orange-hover: #d03808;
  --am-page: #f7f7f7;
  --am-card: #ffffff;
  --am-text: #444444;
  --am-muted: #888888;
  --am-star: #eb2e12;
  /* Calm, neutral focus indicator -- distinct from --am-orange and
     --am-star/#9b1c1c (both used for "needs attention"/error), so an
     active field doesn't read as alarming the way orange did (close in
     hue to the reds used for validation). */
  --am-focus: #3a7bd5;
  /* Light confirmation tint for a genuinely mandatory field once it's
     filled in -- see .am-compulsory-filled below. */
  --am-fill-ok: #eaf7ec;
  --am-fill-ok-border: #bfe6c0;
  --am-line: #e1e1e1;
  --am-font: Oswald, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --am-body: "Helvetica Neue", Helvetica, Arial, sans-serif;
  --am-radius: 3px;
  --bs-primary: #f05a1a;
  --bs-primary-rgb: 240, 90, 26;
  --bs-link-color: #f05a1a;
  --bs-link-hover-color: #d03808;
}

/* Phase 6 follow-up (2026-10-06): fully self-hosted now -- every rule
   that actually sets font-family: var(--am-font) (group titles,
   question text, nav/Apply buttons, the event name) uses
   font-weight: 500 -- the two required-asterisk rules that used to be
   the one exception are pinned to var(--am-body) instead (see
   .am-later-star below), so this is the only Oswald weight/style this
   page ever needs. Embedded as a data: URI (Oswald's "latin" subset,
   covers English and Spanish -- Spanish's accented characters all sit
   inside U+0000-00FF, which this subset already covers) rather than a
   separately-uploaded theme file, so this one stylesheet stays the
   whole deployment -- same copy-paste-this-file workflow as always,
   genuinely zero external requests (not even to the same CDN), nothing
   else to upload. Source: Google Fonts' own Oswald v57, OFL-licensed,
   weight 500, latin subset only -- re-fetch and re-encode if the
   project ever adds a language outside that range. */
@font-face {
  font-family: 'Oswald';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("data:font/woff2;charset=utf-8;base64,d09GMgABAAAAADGgABAAAAAAaUQAADFAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoFMG7h0HIRiBmA/U1RBVCoAhRQRCArzSNpGC4NkAAE2AiQDh0QEIAWEYgeGEwwHG8dZFeOYJbBxAIjN/oSPRNgJSqprFDUpbrop+f9bgjqG0O6xtTIiSWGVip6xaTdvNe3ayurr\
zQzz265vXutAE3AyLNOCWnAf2+7lOGLhwAGAO14BjjU7GmMZhEVcZI5Jtq+2SXav/91VrlJYZ8idgeN81FyC79fKfjO7FwJ0AKyAUZ0OkmQQKhXhCKcSoYj/ED+nfy8JFjxYiJP4S4gTQ6MEiBEsQBNHxOtAVSZd66sKFf+rmG5e+VsnWp7y9/w8O7OPvI9B4VEShREI\
kqZpqmSFVLX/UuEP3s2+902dqFGVBEMqLK4IiUdIvCLBEjSG5B9kur3QchZvsUdb9iQLIQHF/y7d0g6jqxAK47BTodB9qI45mCNdoWT17ie9/lsJKACwpSulhKX57gC4CiB5PXNPVKdNlfq+RaT1+3BNhXbdZjv7QFig5LlIl1DAzqcKghoNaKI24vPLtb7uZGe2qt/f\
qzqJxhF6wMDu5CMIs2AmdmI/8xGrUyAM6VDUpJUnYJO1xnH2ufp/qpYtPkc4Adx7+zi3jxu6y7HPXbJdlHetK1eD+RDIwRAKoAIIHr2K9lJcv6XICwwOJCE9U1rqgpxSIiUnShdScArVukqh6Ny6qK52qnuXIbcuus5FZfM8taxZXq1QIxxNiGqEPOtmw4VPk9LsKeSQ\
cpOCxWgUQrPyCnUFvJ+n9poLFGg8wgcWpNGi/gu1mZRRaD7tI4h4Invx26jXfQp/02P/kUREpsN0ELHDItZc1yY9TVZLBlmzIBZyfby7yKYTmNjFsDqpjAaofY+ygFABqA24JEoQHRk2CiwESJ8hQECBIjzsFAQQ0IJBWUrTGwsIB+IBRURUJbKDaDAIj2FRo1LqUE1r\
1Wca9eZKIaw/FPIoi/TE00Rf+lpAQYHGsm6YgkBTDhLsEZc99JXX9xWojs0OMfrLVAyi1v3qbAZRUADpo/7EK1j7p70Z0H9Y44DwreFMgnjAI1tmPI6bB5QrQsFlKzSKECwGBM2hBgbJIyTuJOKjOAoE5BNmUv8D7S4YKN9C4wqsHABRAgIkCgiAbH0wUl5Q/c0JAoRQ\
ULlUBESZB0PKPkk3RPZPfhMDDYovAd9zu5EAJYtQ92LH0h8itD8O7Z7dFrDx9NtgNXzSacnO27GduoPbvWRr/PbqN7Au/PIca1/TGjZnVStd/rKnG0ddwiZuzKJRKOR//aM/96d+sy7seR/2dvZqz/c0xUd7oLu6hffLW99VXdFFnbOBzuzk9rvunW1ubX2d1NLaml/d\
etqyqqi4vDKBArj8+EYhQ5EIhvIPP6zf8j4/5HWe5v6UfzOX81VO6t834jCQPciOfJm1cD4Luy/LgszK9AynN+1pTHUVHruwihTHAkbQpDMi424kzA+BQw8p2GA2kFoqwl17MAJAv+fDvJ3v5uU8nrtT+fW5CDIBbHr8aCI3L5yM+iS56V8HwGMtOBxIkYvyoqNvLkwX\
nnfyPMh5OYDECR6qkElkknzV7s5LD/ABrwFMyrcM+VZIakiNPwUIUCLfUlSaX/zRHbnQ2TL5kkJwGEDQQUC+R89PCLKCnr2R8oWQPCMvQm+S4YP/5Jm8DpB3st80MBsg0k8uBkQKsH8TiJEh70A+pPwPJUwQBjDp/wkAdUmVrIoJgiB8/GJcGEChvIsDfgeQ5ycDwJiE\
klDiJmsprn/5iQDMJKoTnMRBxvBIDInxS4AAs5LvySgJl7EUWRc6MWn8gXFhANmEIRnexwIOnX8NAMbyByG5S37wo/47TgdAxiX9JAAYk0IyRwaVnQ5CEUD+DWHCABhaGiHkWoYAEkk4REeKiO8DrxIC6HhBISQfMOMKLw4ZzvfrawihEDUHoSGqnYQCagx+pWMjO16V\
Idt4AHbbkACIhGL4wnj5MQ0XafkaxSSbBSvQubkuzv7GU1aeOolHJeCvYZbWSvmjVT7t+pHUNeC1hgrN7eLBg92TVvPXC/SWcQvjDkwg+ya06vJbCohgcnnl7x3QnrflKMnOrTVoPqQTZWpZvwzzzahftmsA11PNPDOukyBDBo1B8y4zJE2BdzzAPRqOGibxQrtrTJyl\
b2wtc4ZJFGBpj4s+ermPcWBZjbtsYf+KMH6hAf9F9desr0IXrT3YjOB+n0cp/BSABWQdY8yxMUaBmVR433r0AM7BZpxECyp4vPZ7vZjHQCOqq2BoRqzXMeGIWdopEfyANeFKNdHVECsW3ju9m5xWlwXv3xeglLDXh2GArb70RzfbdsUxB+tFzqjAPjvD7TyP5lDFoSZV\
Cc9vfzU/2bl+rFRJWhcHidVhr8tnmjv9xq0Hda5KM2wjrR0vlh9oIQrYGYkMFqs3eb2pqMEgMIrTzgjTwuu97hoNWgn0xECjQtkptOmNXuhx82s531DB6xo+7PquKR2/0ODOil3HNeP1afBgxMrgA+N5DrIZ/8JCYhrTAnZfIPbKsgRfJ22LfIf/FulwTMT0V/I5cuLu\
3dVZVcp0O70KJcvrJxQZn1VPMA80Fvhe4te0gc3ZutUTayN5Uqh9lf/cZpwAbvpYAvtyIQq9j1q/2mj/W5yJAQkFVJcgFAFZPCoYFo9UChkZmIIBl5GVSrl6Go06FOvSZ5IBA7yGDPFZagW/nfapMeGwJgh8kFBBwoRJhoYGCRcBKVIkSLR4kAQJkBLhQQgIcIhIIGRk\
eBQpIFQcSDAuCA8PUqpUED6+KAICMYSkgsnIxFFQCqeikiCdBoqOCYKZGZqFRSSbUmHKOGBVcgrlUgWhWjWSWrUQ6tQJVa9etEaNMJq0CdGhQ7wuPSL06pWkzxC0YSOIllom0XIrEOy0S6Ld9ok14bBYCBKQUAhoaFThIsSIFidEvHg0CRJEIiBIRkSUgoSEgIyMjoMj\
BAzGkCoVxggSR4IIjqAhNquGpDkURXtSiI5ePEMhiZEJyqBNyKkIVmiockpRMZBgUzYAUkUhSrUakFmbsE6fRLCpYO3IMMsInoRBOIOSDdAEQzLBOEIkTEIkiQXYnAjyHxRgz8t00hw74Rh4uIypVT2kD+r9/v6hfol796F7OL3eefvujFuG3suHl4fX42vP1i/LqmvO\
NZzessLfmi/jxb/YD+lF9SW2xC9Fgz2KCgKo748C7fjzxUvv6R46uqerL+rT1VRYuNNmXOPzVz7kmzzPXVx/93QORTWP53Ty2nzG54tmzsyEkNizomp8kxyGiCwaFRsGTClZOjOOtP0+mSZzPTvMbbKpHJ9uXGCs9/npmq3ut1hrnVYb+u122q3D3n63/Q7ocfTFPhDB\
aNASCIoBZZwdBkoXISChBAkWIvRBWDogWNimjZINyXcUXZQ+Jgl/E4EEVDR0DEwsbBy8lj9BsA/CHBHEJKRJU4pshCJKfj05A130MMhllCdfARMXNw8vH7+AKrUPEAgTFVekfTt1d5C0INKDO+0zj/uMClKBwSZ2f3r65oIzJepU+oExvq1soZMpaSjVklQgJgeK/N1Z\
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") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

body.fruity_twentythree {
  background: var(--am-page);
  color: var(--am-text);
  font-family: var(--am-body);
  font-size: 15px;
  line-height: 1.5;
  padding-bottom: 24px;
}

body.fruity_twentythree a {
  color: var(--am-orange);
}

body.fruity_twentythree a:hover {
  color: var(--am-orange-hover);
}

body.fruity_twentythree #survey-nav {
  display: none;
}

body.fruity_twentythree #footer,
body.fruity_twentythree footer.footer {
  display: none;
}

body.fruity_twentythree > article {
  max-width: 960px;
  margin: 20px auto 48px;
  background: var(--am-card);
  padding: 28px 32px 36px;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.04);
  border-radius: var(--am-radius);
}

@media (max-width: 640px) {
  body.fruity_twentythree > article {
    margin: 0;
    padding: 16px 12px 28px;
    box-shadow: none;
  }
}

body.fruity_twentythree .col-xl-8 {
  max-width: 100%;
  flex: 0 0 100%;
  width: 100%;
}

body.fruity_twentythree .group-title,
body.fruity_twentythree h2.group-title {
  font-family: var(--am-font);
  font-weight: 500;
  font-size: 1.4rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #1f1f1f;
  margin: 8px 0 10px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--am-line);
}

body.fruity_twentythree [id^="group-"],
body.fruity_twentythree .groupcontainer,
body.fruity_twentythree .groupoutercontainer,
body.fruity_twentythree .group-container {
  margin-bottom: 0;
  padding-bottom: 0;
}

body.fruity_twentythree [id^="group-"] + [id^="group-"] {
  margin-top: 4px;
}

body.fruity_twentythree .question-container {
  margin: 0 0 20px;
  padding: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
}

body.fruity_twentythree .groupcontainer > .question-container:last-child,
body.fruity_twentythree [id^="group-"] .question-container:last-of-type {
  margin-bottom: 8px;
}

body.fruity_twentythree .question-title-container,
body.fruity_twentythree [id^="question-text-container-"] {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.25em;
  margin-bottom: 0.5em;
}

body.fruity_twentythree .question-title-container > div,
body.fruity_twentythree [id^="question-text-container-"] > div {
  order: 1;
  flex: 0 1 auto;
}

body.fruity_twentythree .question-title-container > .asterisk,
body.fruity_twentythree [id^="question-text-container-"] > .asterisk,
body.fruity_twentythree .question-title-container > .am-later-star,
body.fruity_twentythree [id^="question-text-container-"] > .am-later-star {
  order: 2;
  margin-left: 0.2em;
  margin-right: 0;
  color: var(--am-star);
  font-size: 1.45rem;
  line-height: 0.7;
  vertical-align: super;
}

body.fruity_twentythree .am-later-star {
  color: var(--am-star);
  font-size: 1.45em;
  /* Phase 6 (2026-10-06), per Grok's review: explicit, not inherited --
     this star otherwise pulls in the Oswald webfont just for its own
     bold weight, the one exception to Oswald only ever rendering at
     weight 500 everywhere else, which is what made self-hosting a
     single weight correct in the first place. */
  font-family: var(--am-body);
  font-weight: 700;
  vertical-align: super;
  line-height: 0;
}

body.fruity_twentythree [id^="ls-question-text-"],
body.fruity_twentythree .ls-label-question {
  font-family: var(--am-font);
  font-size: 0.85rem;
  font-weight: 500;
  line-height: 1.3;
  color: #1f1f1f;
}

body.fruity_twentythree .ls-questionhelp,
body.fruity_twentythree .question-help,
body.fruity_twentythree .help-block,
body.fruity_twentythree .am-help-below,
body.fruity_twentythree .am-lodge-note,
body.fruity_twentythree .am-private-note,
body.fruity_twentythree .em_validation_q_tip,
body.fruity_twentythree .ls-em-tip {
  font-family: var(--am-body);
  font-size: 13px;
  font-weight: 400;
  color: var(--am-muted);
  font-style: italic;
  background: none;
}

/* NewPersonNote (the "don't miss the first day" warning) -- Dadak,
   2026-10-03: a time-sensitive warning, not routine help text, so it
   keeps standing out in reddish rather than blending into the muted
   italic style every other question's help text uses above. Two
   classes (not one) for specificity -- has to win over the shared rule
   above, which targets the same element. fillNewPersonNote() in
   load-event.js adds this class. */
body.fruity_twentythree .ls-questionhelp.am-newperson-note,
body.fruity_twentythree .question-help.am-newperson-note,
body.fruity_twentythree .help-block.am-newperson-note {
  color: #a33;
  font-style: italic;
}

body.fruity_twentythree .ls-question-mandatory {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(100%);
}

body.fruity_twentythree .question-valid-container {
  margin: 0;
  padding: 0;
  min-height: 0;
}

body.fruity_twentythree .ls-answers {
  margin-top: 0;
  padding-top: 0;
}

body.fruity_twentythree .form-control,
body.fruity_twentythree .form-select,
body.fruity_twentythree select.form-select {
  font-family: var(--am-body);
  font-size: 15px;
  color: var(--am-text);
  background-color: #fff;
  border: 1px solid #d0d0d0;
  border-radius: var(--am-radius);
  box-shadow: none;
  box-sizing: border-box;
  display: block;
  vertical-align: top;
  margin: 0;
  height: 2.15em;
  min-height: 2.15em;
  padding: 0.2em 0.6em;
  line-height: 1.25;
}

body.fruity_twentythree textarea.form-control {
  font-family: var(--am-body);
  font-size: 15px;
  color: var(--am-text);
  background-color: #fff;
  border: 1px solid #d0d0d0;
  border-radius: var(--am-radius);
  box-shadow: none;
  box-sizing: border-box;
  height: auto;
  min-height: 4.5em;
  padding: 0.4em 0.6em;
  line-height: 1.4;
}

body.fruity_twentythree .form-select,
body.fruity_twentythree select.form-select,
body.fruity_twentythree .ls-answers select {
  margin-top: 0;
  margin-bottom: 0;
  padding-right: 1.8em;
}

/* Focus ring: see the single outline-based rule later in this file — the
   earlier box-shadow version was removed to avoid a doubled ring. */

body.fruity_twentythree .ls-answers .form-check,
body.fruity_twentythree .ls-answers .answer-item {
  margin: 0 0 2px;
  padding: 3px 4px 3px 1.6em;
  background: transparent;
  border: 0;
  position: relative;
}

body.fruity_twentythree .ls-answers .form-check-input {
  position: absolute;
  left: 0;
  margin-left: 0;
  margin-top: 0.25em;
}

body.fruity_twentythree .ls-answers .row {
  margin-left: 0;
  margin-right: 0;
}

body.fruity_twentythree .ls-answers [class*="col-"] {
  padding-left: 0;
  padding-right: 0;
}

body.fruity_twentythree .am-h-radios,
body.fruity_twentythree .am-h-radios-q .ls-answers,
body.fruity_twentythree .am-h-radios-q .answer-container {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 16px;
  margin: 0;
}

body.fruity_twentythree .am-h-radios .form-check,
body.fruity_twentythree .am-h-radios-q .form-check,
body.fruity_twentythree .am-h-radios .answer-item,
body.fruity_twentythree .am-h-radios-q .answer-item {
  display: inline-flex;
  width: auto;
  margin: 0;
}

body.fruity_twentythree .form-check-label,
body.fruity_twentythree .ls-answers label,
body.fruity_twentythree .answer-item label {
  font-family: var(--am-body);
  font-size: 15px;
  font-weight: 400;
  color: var(--am-text);
  margin-bottom: 0px;
}

/* Was 3 columns by default (am-cols-2 then overrode AddOns specifically
   to 2) -- Dadak's call, 2026-10-01: 2 is the right number everywhere
   this applies (Days, Languages, Familiar, FoundVia, AddOns), no
   exceptions needed, so 2 is just the default now and am-cols-2 is
   gone -- one fewer moving part. */
body.fruity_twentythree .am-cols {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px 16px;
  list-style: none;
  padding: 0;
  margin: 0;
}

@media (max-width: 640px) {
  body.fruity_twentythree .am-cols {
    grid-template-columns: 1fr;
  }
}

/* Days only: top-to-bottom fill (col 1 = day 1-N, col 2 = day N+1-2N)
   instead of the default left-to-right grid fill every other .am-cols
   question keeps. setColMajor() in load-event.js sets --am-rows to the
   real visible-item count (via offsetParent, not a class-name guess --
   confirmed live, 2026-10-01: a fixed N_DAYS/2 row count broke short
   events, where every actual day filled column 1 alone and column 2
   sat empty) and adds this class to the Days list only. Scoped to the
   desktop breakpoint on purpose -- mobile is already a single column
   via the media query above, where row-major and column-major read
   identically. */
@media (min-width: 641px) {
  body.fruity_twentythree .am-cols.am-cols-colmajor {
    grid-auto-flow: column;
    grid-template-rows: repeat(var(--am-rows, 1), auto);
  }
}

/* Languages only: 3 columns on desktop instead of the usual 2 -- same
   one-off pattern as .am-row-3 (short items, reads fine narrower).
   Scoped to desktop for the same reason as the colmajor rule above: an
   unconditional 3-column override would out-specificity the mobile
   1-column rule above and break the stacked collapse there. */
@media (min-width: 641px) {
  body.fruity_twentythree .am-cols.am-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

body.fruity_twentythree .am-cols .answer-item,
body.fruity_twentythree .am-cols .form-check {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  width: auto;
  margin: 0;
  white-space: normal;
}

body.fruity_twentythree .am-cols .other-item,
body.fruity_twentythree .ls-answers .other-item {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
}

body.fruity_twentythree .am-cols .other-item .form-check-input,
body.fruity_twentythree .ls-answers .other-item .form-check-input {
  position: static;
  margin: 0 0.4em 0 0;
}

body.fruity_twentythree .am-cols .other-item .form-control,
body.fruity_twentythree .ls-answers .other-item input[type="text"] {
  width: 8em;
  min-height: 2.15em;
  height: 2.15em;
  margin: 0 0 0 0.4em;
}

/* The Other checkbox is static/in-flow (see rule above), not absolutely
   positioned inside the shared 1.6em left-padding gutter like every other
   answer checkbox -- so that gutter would otherwise sit empty and push
   the Other checkbox further right than its siblings. */
body.fruity_twentythree .am-cols .answer-item.checkbox-text-item,
body.fruity_twentythree .ls-answers .answer-item.checkbox-text-item {
  padding-left: 4px;
}

body.fruity_twentythree .btn-group {
  display: inline-flex;
  flex-direction: row;
  gap: 8px;
  background: none;
  border: none;
  box-shadow: none;
}

body.fruity_twentythree input[type="radio"],
body.fruity_twentythree input[type="checkbox"],
body.fruity_twentythree .btn-check,
body.fruity_twentythree .ls-button-radio {
  width: 20px;
  height: 20px;
  min-width: 20px;
  min-height: 20px;
  accent-color: #198754;
}

body.fruity_twentythree .btn-group .btn-check {
  position: static;
  clip: auto;
  margin: 0 0.4em 0 0;
  opacity: 1;
  pointer-events: auto;
  border: none;
  background: none;
  background-image: none;
}

body.fruity_twentythree .ls-answers .form-check-input:checked + label,
body.fruity_twentythree .ls-answers input[type="radio"]:checked + label,
body.fruity_twentythree .ls-answers input[type="checkbox"]:checked + label,
body.fruity_twentythree .btn-check:checked + .btn,
body.fruity_twentythree .btn-check:checked + label {
  color: #198754;
}

body.fruity_twentythree .btn-group .btn,
body.fruity_twentythree .btn-check + .btn,
body.fruity_twentythree .btn-check + label,
body.fruity_twentythree label.ls-button-label {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  gap: 0;
  min-width: 0;
  min-height: 0;
  height: auto;
  padding: 0.15em 1em 0.15em 0;
  line-height: 1.3;
  white-space: nowrap;
  font-family: var(--am-body);
  font-weight: 400;
  font-size: 15px;
  letter-spacing: 0;
  text-transform: none;
  border-radius: 0;
  color: var(--am-text);
  background: transparent;
  border: none;
  box-shadow: none;
}

body.fruity_twentythree .btn-group > .btn,
body.fruity_twentythree .btn-group > label,
body.fruity_twentythree .btn-group > label.ls-button-label,
body.fruity_twentythree .btn-group > .btn-check + .btn,
body.fruity_twentythree .btn-group > .btn-check + label {
  flex: 0 0 auto;
  width: auto;
  max-width: none;
  min-width: 0;
}

/* Icons inside Yes/No buttons are hidden entirely below (Yes/No: text
   only) — sizing them here would be dead weight since a hidden icon's
   size never renders. */

body.fruity_twentythree .btn-check:checked + .btn,
body.fruity_twentythree .btn-check:checked + label,
body.fruity_twentythree input[type="radio"]:checked + label.btn {
  background: transparent;
  border: none;
  font-weight: 500;
}

body.fruity_twentythree .navigator .btn-primary,
body.fruity_twentythree #am-coup-apply,
body.fruity_twentythree #am-roomcode-apply {
  font-family: var(--am-font);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: 0.04em;
  text-transform: none;
  color: var(--am-orange);
  background: #fff;
  border: 1px solid var(--am-orange);
  border-radius: var(--am-radius);
  min-height: 1.7em;
  padding: 0.15em 1.5em;
  box-shadow: none;
  cursor: pointer;
}

body.fruity_twentythree .navigator .btn-primary:hover,
body.fruity_twentythree #am-coup-apply:hover,
body.fruity_twentythree #am-roomcode-apply:hover {
  background: var(--am-orange-hover);
  border-color: var(--am-orange-hover);
  color: #fff;
}

/* Dadak, 2026-10-02: the final Submit button (not every page's "Next" --
   both share .btn-primary, so this targets value="movesubmit"
   specifically) should stand out and sit on the left. Confirmed live via
   DevTools: order/margin-right on the button itself did nothing, because
   #navigator-container's real flex children are two Bootstrap .col-6
   divs (.text-start, normally empty / holds "Previous"; .text-end,
   right-aligned, holds the advance button) -- the button is nested one
   level deeper, not a flex item itself. Sizing below DID already apply
   correctly (confirmed in the same screenshot) -- only alignment needed
   fixing, and at the column level, not the button level. */
body.fruity_twentythree .navigator button[value="movesubmit"],
body.fruity_twentythree .navigator input[value="movesubmit"] {
  font-size: 17px;
  padding: 0.6em 2.6em;
  min-height: 2.6em;
}

/* :has() scopes this to the column that actually holds the Submit
   button -- the identical-looking .col-6.text-end on every OTHER page
   holds "Next" (value="movenext") instead, and must stay right-aligned,
   untouched. */
body.fruity_twentythree #navigator-container .col-6.text-end:has(button[value="movesubmit"]),
body.fruity_twentythree #navigator-container .col-6.text-end:has(input[value="movesubmit"]) {
  order: -1;
  text-align: left;
}

body.fruity_twentythree .navigator .btn-outline-secondary {
  font-family: var(--am-font);
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--am-muted);
  border-color: #ccc;
  background: #fff;
  border-radius: var(--am-radius);
}

body.fruity_twentythree .progress {
  height: 4px;
  background: #e1e1e1;
  border-radius: 0;
}

body.fruity_twentythree .progress-bar {
  background: var(--am-orange);
}

body.fruity_twentythree .am-breakdown,
body.fruity_twentythree .am-breakdown table {
  font-family: var(--am-body);
  font-size: 15px;
}

body.fruity_twentythree .am-breakdown table td {
  border-bottom: 1px solid var(--am-line);
  padding: 8px 8px 8px 0;
}

body.fruity_twentythree .am-lodge-note {
  margin: 4px 0 8px;
}

body.fruity_twentythree .am-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  align-items: flex-start;
  width: 100%;
  margin: 0 0 28px;
}

body.fruity_twentythree .am-row-yn > .question-container {
  flex: 0 1 auto;
  min-width: 11em;
  max-width: 20em;
}

body.fruity_twentythree .am-row-yn-field > .question-container {
  flex: 1 1 12em;
  max-width: none;
}

body.fruity_twentythree .am-row-yn-field > .am-field-q {
  flex: 1 1 14em;
  max-width: none;
}

/* .am-row-yn/.am-row-yn-field .btn-group sizing is covered by the fuller
   .btn-group rule declared once, later in this file. */

body.fruity_twentythree .am-row-yn .btn-group .btn,
body.fruity_twentythree .am-row-yn label.ls-button-label {
  width: auto;
  flex: 0 0 auto;
}

body.fruity_twentythree .am-row > .question-container {
  display: flex !important;
  flex-direction: column;
  justify-content: flex-start;
  /* flex-basis must equal the target width itself, not just a small
     minimum (16em) -- max-width alone is only a ceiling, it never forces
     a wrap. 3 items at a 16em basis comfortably fit on one normal-width
     desktop line with room to spare, so flex never even tried to exceed
     the 50% cap -- confirmed the real cause of "still 3 columns on
     desktop", 2026-10-01, after the previous rounds fixed real but
     different problems. Each item's own preferred size being 50% is what
     makes a 3rd one mathematically unable to fit on the same line. */
  flex: 1 1 calc(50% - 12px) !important;
  width: auto !important;
  max-width: calc(50% - 12px) !important;
  min-width: 0 !important;
  margin: 0;
  padding: 0;
}

body.fruity_twentythree .am-row > .question-container.ls-hidden,
body.fruity_twentythree .am-row > .question-container.ls-irrelevant,
body.fruity_twentythree .am-row > .question-container.d-none,
body.fruity_twentythree .am-row > .ls-hidden,
body.fruity_twentythree .am-row > .ls-irrelevant,
body.fruity_twentythree .am-row > .d-none {
  display: none !important;
}

body.fruity_twentythree .am-row .ls-answers,
body.fruity_twentythree .am-row .answer-container {
  margin-top: 0;
  width: 100%;
}

body.fruity_twentythree .am-help-below {
  order: 5;
  margin-top: 4px;
  margin-bottom: 0;
}

body.fruity_twentythree .am-intro-notice {
  background: #fff8f3;
  border: 1px solid #f0c4ae;
  border-radius: var(--am-radius);
  padding: 12px 14px;
  font-family: var(--am-body);
  font-size: 14px;
  font-style: normal;
  color: var(--am-text);
  line-height: 1.45;
}

body.fruity_twentythree .am-legal,
body.fruity_twentythree .am-legal a {
  font-size: 14px;
  font-weight: 400;
  font-family: var(--am-body);
  line-height: 1.45;
  color: #666;
}

/* Conduct/Refund's star lives inline in the agreement sentence itself
   (.am-legal), not as a direct child of the title container like the
   shared asterisk/am-later-star rule expects -- same big styling,
   different selector so it actually applies here. custom.js now MOVES
   LimeSurvey's own native .asterisk icon into this spot (the real one,
   not a styled lookalike), so this rule has to cover it too -- without
   this, the moved icon would fall back to native/default sizing, which
   is smaller than intended here. */
body.fruity_twentythree .am-legal .am-later-star,
body.fruity_twentythree .am-legal .asterisk {
  color: var(--am-star);
  /* rem, not em -- .am-legal's own font-size is 14px, so em here shrank
     the star instead of making it big. rem is root-relative, same
     technique the original title-area star rule already uses. */
  font-size: 1.45rem;
  font-weight: 700;
  /* inline-block + normal line-height, not vertical-align:super on a
     plain inline span -- computed font-size/color were already correct
     (23.19px, the right red) yet still invisible, meaning something in
     the surrounding inline flow was clipping it rather than the size
     being wrong. inline-block gives it its own box, sidestepping that. */
  display: inline-block;
  line-height: normal;
  vertical-align: middle;
  margin-left: 0.2em;
  /* Phase 6 follow-up (2026-10-06), per Dadak: sat slightly low against
     the agreement text/box -- a star glyph at this size isn't centered
     within its own box the way vertical-align:middle assumes, so a
     nudge up corrects it without touching the sizing/positioning logic
     above (still needed, per that comment, to make the star visible at
     all). -0.1em wasn't visibly enough -- doubled. Per Dadak: if this
     still doesn't read as clearly better, stop here -- this corner has
     already cost enough back-and-forth. */
  position: relative;
  top: -0.2em;
}

body.fruity_twentythree .am-spirit .form-control {
  max-width: 12em;
}

body.fruity_twentythree #am-coup-row,
body.fruity_twentythree #am-roomcode-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  width: 100%;
  margin-top: 6px;
  margin-left: 0;
}

body.fruity_twentythree #am-coup-msg,
body.fruity_twentythree #am-roomcode-msg {
  margin: 0;
  font-size: 14px;
}

body.fruity_twentythree .am-break-url,
body.fruity_twentythree .am-break-url a {
  overflow: visible;
  word-break: break-all;
}

body.fruity_twentythree .question-container.row {
  margin-left: 0;
  margin-right: 0;
}

body.fruity_twentythree .question-container > [class*="col-"] {
  padding-left: 0;
  padding-right: 0;
}

body.fruity_twentythree .question-container .ls-answers,
body.fruity_twentythree .question-container .subquestions-list,
body.fruity_twentythree .am-cols {
  margin-left: 0;
  padding-left: 0;
}

/* Dropdown (list_dropdown) questions wrap their <select> in stock
   Bootstrap "mb-3 row g-1" + "col-auto" divs that a plain text-input
   question never gets -- that wrapper's own margin and gutter spacing
   (g-1 sets --bs-gutter-y, which drives a small paired negative/positive
   margin-top between the row and its column) was never flattened like
   every other answer wrapper in this file, so dropdowns sit a few px
   lower than their text-input neighbors in the same row even though the
   control itself is the same height. */
body.fruity_twentythree .answer-container .mb-3.row.g-1 {
  margin: 0;
  --bs-gutter-x: 0;
  --bs-gutter-y: 0;
}

body.fruity_twentythree .answer-container .mb-3.row.g-1 > .col-auto {
  margin: 0;
  padding: 0;
}

body.fruity_twentythree .am-row-5 > .question-container {
  flex: 1 1 150px;
  max-width: calc(20% - 8px) !important;
}

body.fruity_twentythree .am-row .form-select,
body.fruity_twentythree .am-row .form-control {
  width: 100%;
  min-height: 2.15em;
  height: 2.15em;
}

/* BirthYear/BirthDay/InitYear/InitDay only ever hold 2-4 digits -- full
   column width (matching Month's dropdown) looked oversized. Dadak,
   2026-10-01: widened the old data-am-year/data-am-ychk-only 75% rule
   into this single class (narrowNumInputs() in load-event.js tags all
   four inputs with it directly) and shrunk it to an actual "5 digits"
   width instead of a fraction of the column -- requested on both
   desktop and mobile, so this is deliberately outside the 640px media
   query and applies everywhere. */
body.fruity_twentythree .am-row .am-narrow-num {
  width: 5em;
}

/* Dadak, 2026-10-01: reopened -- 3-item rows (LocCity/LocState/
   LocCountry, BirthYear/BirthMonth/BirthDay now that Gender is its own
   standalone question, InitYear/InitMonth/InitDay, SpiritName/Acarya/
   Lessons) all go to 3 narrow columns on desktop, not the usual 2. Each
   already gets "am-row-3" automatically (layoutRows() names the wrapper
   by its live item count), so no new JS tagging needed -- just give that
   existing class real CSS again. Same specificity as the base/mobile
   .am-row > rules (two classes), so it has to sit BEFORE the 640px media
   query in source order or it would also win on mobile and break the
   stacked-column collapse there. */
body.fruity_twentythree .am-row-3 > .question-container {
  flex: 1 1 calc(33.33% - 11px) !important;
  max-width: calc(33.33% - 11px) !important;
}

body.fruity_twentythree .am-row [id^="ls-question-text-"],
body.fruity_twentythree .am-row .ls-label-question {
  font-size: 0.85rem;
}

body.fruity_twentythree .am-row .question-title-container,
body.fruity_twentythree .am-row [id^="question-text-container-"] {
  min-height: 0;
  margin-bottom: 0.5em;
  align-items: flex-start;
}

/* Dadak, 2026-10-03: this was scoped to .am-row-paired questions only --
   confirmed live via DevTools (Gender/Familiar, both standalone, neither
   ever in an .am-row) that LimeSurvey's own default Expression Manager
   tip ("Elija una de las siguientes opciones." / "Choose one of the
   following options.", id vmsg_<qid>_default, class ls-em-tip em_default)
   shows through unhidden on every standalone question -- it was never
   actually suppressed everywhere, just styled to blend in as muted help
   text (see the shared .ls-em-tip rule above), which is why it read as
   legitimate content instead of being caught as a stray native message.
   Broadened to every question, not just .am-row ones. */
body.fruity_twentythree .question-valid-container,
body.fruity_twentythree .emtip,
body.fruity_twentythree .ls-em-tip {
  display: none;
}

body.fruity_twentythree .am-row .ls-questionhelp,
body.fruity_twentythree .am-row .question-help,
body.fruity_twentythree .am-row .help-block {
  display: block;
}

body.fruity_twentythree .am-later-star,
body.fruity_twentythree .am-needed .asterisk {
  color: var(--am-star);
  font-family: var(--am-body);
  font-weight: 700;
  margin-left: 0.15em;
}

@media (max-width: 640px) {
  body.fruity_twentythree .am-row {
    display: block;
  }
  /* The base (desktop) rule pins width/max-width/min-width with
     !important (it has to, to force equal-width columns against each
     question's own native sizing) -- this override needs !important too
     on every one of those, or it silently loses and each question stays
     capped at half-width even once stacked, just squeezed into a narrow
     column instead of using the full screen. Confirmed the real cause of
     mobile looking cramped/overlapping, 2026-10-01. */
  body.fruity_twentythree .am-row > .question-container,
  body.fruity_twentythree .am-row > * {
    /* .am-row > * too, not just .question-container -- some question
       wrappers in this install aren't .question-container at all (see
       the comment on that rule above), and those were the ones still
       showing multiple-per-line on mobile, 2026-10-01: this override
       never reached them before. display/flex-direction deliberately
       left alone -- that's each question's own internal title/answer/
       help stacking, unrelated to the two-questions-side-by-side sizing
       this media query is undoing. */
    margin: 0 0 10px !important;
    flex: 1 1 100% !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
}

body.fruity_twentythree #am-asof-wrap {
  margin: 0 0 16px;
  padding: 10px 12px;
  background: #fff5ef;
  border: 1px solid #f05a1a;
  border-radius: 3px;
  font-size: 14px;
}

body.fruity_twentythree #am-asof-wrap label {
  margin-right: 12px;
}

body.fruity_twentythree #am-asof-win {
  color: #d03808;
  font-weight: 500;
}

body.fruity_twentythree #am-loader-bar {
  position: fixed;
  right: 10px;
  bottom: 10px;
  max-width: 420px;
  max-height: 2.6em;
  overflow: hidden;
  background: rgba(30, 30, 30, 0.55);
  color: #fff;
  font: 11px/1.35 Arial, sans-serif;
  padding: 4px 8px;
  text-align: left;
  border-radius: 3px;
  z-index: 40;
}

body.fruity_twentythree #am-loader-bar:hover,
body.fruity_twentythree #am-loader-bar:focus {
  max-height: 40vh;
  overflow: auto;
  background: rgba(20, 20, 20, 0.92);
}

body.fruity_twentythree .ls-hidden,
body.fruity_twentythree .ls-irrelevant {
  display: none;
}

body.fruity_twentythree .btn-group,
body.fruity_twentythree .am-row .btn-group,
body.fruity_twentythree .am-row-yn .btn-group,
body.fruity_twentythree .am-row-yn-field .btn-group {
  display: inline-flex;
  width: auto;
  flex: 0 0 auto;
  max-width: 100%;
}

/* .btn-group > .btn/label sizing is merged into the single rule earlier
   in this file. */

/* Yes/No: text only, like the event page. Theme icons were forcing height. */
body.fruity_twentythree .btn-group i,
body.fruity_twentythree .btn-group svg,
body.fruity_twentythree .btn-group [class^="ri-"],
body.fruity_twentythree .btn-group [class*=" ri-"],
body.fruity_twentythree label.ls-button-label i,
body.fruity_twentythree label.ls-button-label svg,
body.fruity_twentythree label.ls-button-label [class^="ri-"] {
  display: none;
}

/* LS7 question wrap is often not .question-container; WhatsApp worked
   because those nodes get .am-yn-q / .am-field-q. Same flex-basis fix as
   the .question-container rule above -- a small basis (16em) never
   forced a wrap, max-width alone was only ever a ceiling. */
body.fruity_twentythree .am-row > * {
  box-sizing: border-box;
  flex: 1 1 calc(50% - 12px);
  width: auto;
  max-width: calc(50% - 12px);
  min-width: 0;
}

body.fruity_twentythree .am-row-5 > * {
  max-width: calc(20% - 8px);
  flex-basis: 10em;
}

body.fruity_twentythree .am-row-3 > * {
  max-width: calc(33.33% - 11px);
  flex-basis: calc(33.33% - 11px);
}

body.fruity_twentythree .am-row-yn-field > .am-yn-q,
body.fruity_twentythree .am-row-yn > .am-yn-q {
  flex: 0 0 auto;
  width: auto;
  max-width: none !important;
  min-width: 0;
}

/* .am-cols-3 was declared twice, with conflicting display values (grid vs
   flex) — confirmed via the JS that nothing ever applies this class, so
   both were removed rather than reconciled. */

body.fruity_twentythree .am-event-name {
  font-family: var(--am-font);
  font-size: 1.35rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  margin: 0 0 8px;
  color: var(--am-text);
}

body.fruity_twentythree .am-disc-amt {
  margin-left: 8px;
  font-size: 14px;
  color: var(--am-muted);
  white-space: nowrap;
}

/* #am-coup-row layout is merged into the single rule earlier in this file. */

body.fruity_twentythree #am-coup-row input,
body.fruity_twentythree #am-roomcode-row input {
  flex: 0 0 14em;
  width: 14em;
  max-width: 14em;
  min-width: 8em;
}

body.fruity_twentythree input[type="checkbox"].am-agree-tick {
  display: inline-block;
  position: static;
  width: 1.15em;
  height: 1.15em;
  margin: 0 8px 0 0;
  vertical-align: top;
  accent-color: var(--am-orange);
  flex-shrink: 0;
}

body.fruity_twentythree .am-email-msg {
  font-size: 13px;
  color: #9b1c1c;
  margin: 4px 0 0;
}

body.fruity_twentythree input.am-invalid,
body.fruity_twentythree .am-invalid input,
body.fruity_twentythree .am-needed-empty input.form-control,
body.fruity_twentythree .am-needed-empty .form-control {
  outline: 3px solid #9b1c1c;
  outline-offset: 1px;
  border-color: #9b1c1c;
  background: #fdecea;
}

/* Fallback for every non-text answer type (Yes/No button groups, radio
   lists, checkbox grids, agreement checkboxes, ...) -- v94's approach of
   naming each container class one at a time (.btn-group/.ls-answers/
   .answer-container) still missed some (Days, Agreements) and doubled up
   on others (two nested containers both matching for the same Yes/No
   question, per Dadak's report of two red boxes). Outlining the whole
   question box covers any rendering without needing to know its exact
   structure, and :not(:has(...)) suppresses it specifically when a plain
   text field is present, since that already gets its own tighter outline
   directly on the input above -- avoiding the original "outline around
   the whole question AND the field" complaint that CSS v92 fixed. */
body.fruity_twentythree .am-needed-empty:not(:has(input.form-control)) {
  outline: 3px solid #9b1c1c;
  outline-offset: 2px;
  border-radius: var(--am-radius);
  background: #fdecea;
}

body.fruity_twentythree .am-agree [id^="question-text-container-"],
body.fruity_twentythree .am-agree [id^="ls-question-text-"],
body.fruity_twentythree .am-agree label,
body.fruity_twentythree .am-agree .form-check-input:checked + label {
  display: inline;
  color: var(--am-text);
}

body.fruity_twentythree .am-agree .form-check-input {
  accent-color: var(--am-orange);
}

/* .am-agree-tick sizing/color merged into the single rule earlier in this file. */

body.fruity_twentythree input.form-control:focus,
body.fruity_twentythree .form-control:focus,
body.fruity_twentythree .form-select:focus {
  outline: 2px solid var(--am-focus);
  border-color: var(--am-focus);
}

/* A genuinely mandatory field (real LimeSurvey mandatory=Y, not just the
   "will be required later" preview star) gets a light green tint once
   filled in -- set/cleared live by clearFilledErrors() in custom.js. */
body.fruity_twentythree .am-compulsory-filled input.form-control,
body.fruity_twentythree .am-compulsory-filled .form-control,
body.fruity_twentythree .am-compulsory-filled .form-select {
  background-color: var(--am-fill-ok);
  border-color: var(--am-fill-ok-border);
}

/* Completion-page loading spinner (#am-loading .am-spinner) AND hiding
   LimeSurvey's own raw native End URL button/link ("Continue to
   payment") until load-event.js restyles it into the real "Pay by Card"
   button. Both MUST live here, in the theme's own stylesheet, and
   nowhere else -- confirmed live 2026-09-27, two wrong approaches ruled
   out first: (1) a <style> tag directly inside the survey's End message
   text -- LimeSurvey's Expression Manager scans EVERY text field for
   {...} and tries to evaluate it as an EM expression, since it has no
   concept of CSS vs. survey text; every curly brace in this CSS got
   misread as an expression delimiter and the whole block was mangled
   into "Undefined variable"/em-error garbage. (2) injecting it via
   load-event.js at runtime -- wrong on its face, since the entire point
   of both rules is covering the gap *while* that script is still
   loading; a fix that depends on the same script finishing first can't
   cover the window it exists for. A real stylesheet file, loaded with
   the page before any script runs and never touched by EM, is the only
   mechanism that is both instant and correct.

   The native-link rule deliberately has NO !important: load-event.js's
   own styling still needs to win once it's ready to reveal the real
   button (a plain inline style always beats an external stylesheet rule
   of equal specificity unless !important is used), so this only hides
   the raw, unstyled default appearance in the meantime -- it does not
   block the eventual real reveal. Matched by href pattern (the same one
   findNativeEndLink() in load-event.js uses), not by class/id, since
   LimeSurvey's own theme markup around it isn't ours to rely on. Mercado
   Pago's pay button never has this problem -- it's built fresh by JS
   (buildPayButton()), never reusing a LimeSurvey-rendered native link. */
a[href*="stripe-path-b-redirect"] {
  display: none;
}

@keyframes am-spin {
  to {
    transform: rotate(360deg);
  }
}
.am-spinner {
  display: inline-block;
  width: 36px;
  height: 36px;
  border: 4px solid #e3ddd3;
  border-top-color: var(--am-orange);
  border-radius: 50%;
  animation: am-spin 0.8s linear infinite;
  vertical-align: middle;
  margin-right: 12px;
}
@media (prefers-reduced-motion: reduce) {
  .am-spinner {
    animation: none;
    border-top-color: #e3ddd3;
  }
}
