/* Page-scoped rules migrated out of Setting[custom_css].
 *
 * This file is the Phase 3 half of a migration whose Phase 4 half is components.css:
 * the rules here are the ones that are genuinely about a page rather than about a
 * thing, and they are copied with their selectors and values intact rather than
 * being renamed into components that would have one call site each.
 *
 * It loads AFTER components.css and BEFORE application.css, and the operator's row
 * is still injected last, so while that row is live nothing here changes a pixel --
 * the row wins every tie. Cutover is when this file starts mattering.
 *
 * Every block carries the baseline line range it came from, so the parity harness's
 * findings can be traced back to a rule someone wrote rather than to a value someone
 * chose. Do not "tidy" a value here: several declarations in the row have never
 * painted, and the ones that have are load-bearing in ways the reconciliation
 * document spells out.
 */

/* ---------------------------------------------------------------------------
 * /vouchers -- baseline:1492-1570
 *
 * The button and the field are NOT here. They are .gp-btn and .gp-field__control
 * in components.css, applied alongside Bootstrap's .btn/.btn-primary and
 * .form-control in app/views/vouchers/index.html.erb.
 *
 * Two things in the original block are deliberately absent:
 *
 *   - `.btn-primary::after`, the glass rim. All three call sites are
 *     <input type="submit">, and a replaced element generates no pseudo-elements,
 *     so that rule has never painted. The parity harness reports its computed
 *     values as differences and flags them INERT for exactly this reason.
 *   - `#vouchers .form-control { color: var(--green) }`. text_field_tag emits
 *     id="code", so `#vouchers #code` outranks it and paints dk-green. The
 *     declaration is dead, like the non-breaking space in the .footer selector.
 *     Note that the `height` from that same block IS carried, at the bottom of this
 *     section -- one dead declaration in a rule does not make the rule dead.
 * ------------------------------------------------------------------------ */

/* The !important is carried across rather than cleaned up, and that is a decision.
 * Bootstrap's .mt-5 is `margin-top: 3rem !important`, so a normal declaration here
 * loses to it whatever the source order -- importance beats specificity. It also
 * has to stay a page-scoped selector rather than becoming a class on the markup:
 * the layout's flash wrapper carries .mt-5 too (app/views/layouts/application.html.erb,
 * the div wrapping `flash.each`), and that is shared by every page. */
#vouchers .d-flex.mt-5 {
  margin-top: 1rem !important;
}

#vouchers h1 {
  text-align: center;
}

/* The voucher artwork. Still the Squarespace CDN URL it has always been -- moving it
 * to a local asset is a real improvement and a separate change, because it is one
 * of four third-party requests the venue's wifi has to make during a show. The local
 * file already exists (Voucher+Mockup5.webp) and is not yet committed.
 *
 * The parity harness blocks this host in every mode, so the box's geometry is
 * compared and its paint is not. */
#vouchers h1::before {
  content: "";
  display: block;
  width: 300px;
  height: 200px;
  background-image: url("https://images.squarespace-cdn.com/content/543df105e4b01ddd00dd714c/ccf9e88f-9b2b-4863-92cc-cecb3c1fcda2/Voucher+Mockup5.png");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}

#vouchers .text-center.mb-4 {
  padding-left: 30px;
  padding-right: 30px;
}

/* The only thing stacking the form above the button. Migrating the button and the
 * field without this renders an unstacked, uncentred page -- which is why the
 * reconciliation document lists it first among the rules that are easy to miss. */
#vouchers .row {
  flex-direction: column;
  align-items: center;
}

/* /vouchers is the only one of the four form pages that sets a size on the control.
 * #login, [id$="-edit"] and #referrals-new all set weight/colour/centring/radius and
 * no font-size, so this stays a page rule rather than moving into .gp-field__control
 * and silently shrinking the text on three pages that never asked for it. */
#vouchers #code {
  font-size: var(--gp-font-size-body);
}

/* The 42px control. This is the other half of the note above: it came out of
 * .gp-field__control because #vouchers is the only one of the four form pages that
 * sets a height at all, so carrying it in the component would have resized the
 * referral field to match a page it has nothing to do with. Written with the row's own
 * selector rather than .gp-field__control so that the cutover arithmetic is the same
 * one the row does today. */
#vouchers .form-control {
  height: var(--gp-control-height);
}

/* ---------------------------------------------------------------------------
 * /terms -- baseline:1691-1727
 *
 * Nothing is componentised here and no markup changes: this page has no button, no
 * field and no card. It is a Phase 3 verbatim migration and nothing else, which is
 * also what made it the page that forced the harness to be able to compare two
 * documents that are byte-identical. See docs/plans/referrals-and-terms-parity.md.
 *
 * Measured on the rendered page at 390px, not read out of the CSS: /terms renders NO
 * navbar. WelcomeController skips :check_if_logged_in for :terms, so @attendee is nil
 * whether or not anyone is signed in, and the layout guards the whole <nav> behind
 * `if @attendee`. The page shows the logged-out logo block instead. That is why the
 * only <h1> on this page is the title, and the only <ul>/<li> are inside the
 * ActionText body -- both assumptions these rules depend on, both asserted by
 * spec/requests/terms_parity_fixture_spec.rb rather than believed.
 * ------------------------------------------------------------------------ */

/* The page title lives in CSS. The view renders <h1>Terms</h1>; the h1 is collapsed
 * to nothing and the visible words are the CONTENT of its ::after. A screen reader
 * gets "Terms", because generated content is not reliably exposed -- so this is a
 * real defect and it is migrated AS IS. Moving the copy into the view changes the
 * accessible name, which is a change, and the freeze runs to 4 October. */
#terms h1:first-child {
  font-size: 0 !important;
  text-align: center;
}

#terms h1:first-child::after {
  content: "Terms of Service";
  font-size: calc(1.375rem + 1.5vw);
}

/* DEAD AS SHIPPED, and carried anyway. font-size loses to the `font-size: 0
 * !important` on the more specific h1:first-child (1,1,1 against 1,0,1), and
 * text-align is the same value that rule already sets. It would only come alive if
 * the page rendered a second <h1>, which -- with no navbar -- it cannot. Deleting it
 * is a decision about the design rather than a tidy-up, and it belongs after the run
 * with the rest of the dead rules. */
#terms h1 {
  font-size: calc(.8rem + 1.5vw);
  text-align: center;
}

/* 0.8rem = 12.8px, 1.2 = 15.36px line-height, measured. The 30px side padding sits
 * inside .container's own 12px, so the text column is 306px wide at 390px. */
#terms .trix-content {
  font-size: .8rem;
  line-height: 1.2;
  text-align: justify;
  padding-left: 30px;
  padding-right: 30px;
}

#terms .trix-content div:first-child {
  text-align: center;
}

#terms li {
  padding-top: .25rem;
  padding-bottom: .25rem;
}

#terms ul {
  padding-left: 1rem;
}

/* ---------------------------------------------------------------------------
 * /referrals/new -- baseline:1730-1815
 *
 * The third writing of the same form page as /vouchers and /attendees/:id/edit. The
 * button and the field are NOT here -- they are .gp-btn and .gp-field__control on the
 * markup in app/views/referrals/new.html.erb, alongside Bootstrap's own classes.
 *
 * `.btn-primary::after` is deliberately absent, as on /vouchers: the call site is
 * f.submit, which emits <input type="submit">, and a replaced element generates no
 * pseudo-element box. That rule has never painted.
 *
 * `.gp-form` is deliberately NOT used for the form width. .gp-form is
 * `min(var(--gp-dimension-form-width), 100% - 2rem)`, which resolves to 288px in this
 * wrapper against the 320px that ships -- a 32px narrowing at every viewport. A width
 * belongs to the layout, so the layout keeps it.
 *
 * Three of the rules below never render anything, measured on the page rather than
 * deduced. They are migrated verbatim because deleting a dead rule is a decision about
 * the design, not a tidy-up, and this migration is not allowed to make one.
 * ------------------------------------------------------------------------ */

#referrals-new .text-center.mb-4 {
  padding-left: 30px;
  padding-right: 30px;
}

/* 1.4rem = 22.4px, and this is the bare `.mt-5` rather than `.d-flex.mt-5` as on
 * /vouchers -- so it also catches the layout's flash wrapper and the .row.mt-5 that
 * holds the QR code. Narrowing the selector would move two things this page has
 * always positioned. */
#referrals-new .mt-5 {
  margin-top: 1.4rem !important;
}

#referrals-new .d-flex.justify-content-center.align-items-center.mb-5 {
  padding-left: 30px;
  padding-right: 30px;
}

/* DEAD AS SHIPPED: the 350px never paints. The form is a flex item inside the 380px
 * .mb-5 wrapper above, which has 30px of side padding, so its container's content box
 * is 320 and flex-shrink takes it there -- at every viewport, not only narrow ones.
 * Measured 320px at 390px wide. The margins DO render. */
#referrals-new form {
  width: 350px;
  margin-top: 30px;
  margin-bottom: 30px;
  margin-left: auto;
  margin-right: auto;
}

/* (0,1,1,1) -- this is what the label actually renders at. See .form-label below. */
#referrals-new .mb-3 label {
  font-size: 0.75rem;
}

/* Copied character for character, ordering trap included. `margin-bottom: 0
 * !important` is followed by a `margin: auto` SHORTHAND, which resets all four sides
 * -- and loses on the fourth, because importance beats source order. So this is
 * margin-bottom 0, margin auto on the other three. Tidying it changes the page.
 *
 * Its padding is dead: the longer .d-flex.justify-content-center.align-items-center.mb-5
 * selector above is (1,4,0) against this rule's (1,1,0), so 30px wins over 10px. */
#referrals-new .mb-5 {
  padding-right: 10px;
  padding-left: 10px;
  margin-bottom: 0 !important;
  width: 380px;
  margin: auto;
}

/* DEAD font-size, live everything else. `.mb-3 label` above is (1,1,1) against this
 * rule's (1,1,0), and bootstrap_form wraps every field in .mb-3, so the label ships at
 * 0.75rem and never at 0.6rem. text-transform and margin-bottom are uncontested and do
 * render -- which is why the label is uppercase at 12px rather than at 9.6px.
 * design/tokens.json records the same thing about font/size-label. */
#referrals-new .form-label {
  margin-bottom: 0rem !important;
  text-transform: uppercase;
  font-size: 0.6rem;
}

#referrals-new .mb-3 {
  text-align: center;
}

/* ---------------------------------------------------------------------------
 * [id$="_chuds_status"] -- baseline:150-307 (comment "Attendee status box" at :150)
 *
 * shared/_chuds_status.html.erb renders from two sites: welcome/index.html.erb:12
 * and attendees/edit.html.erb:6. This migration proves parity on `/` only; the
 * `/attendees/:id/edit` render of the same block is a later phase's job.
 *
 * The baseline nests this block under [id$="_chuds_status"] using CSS nesting;
 * pages.css is flat by convention, so every selector below is that scope plus the
 * nested selector as a descendant combinator. The one `&` in the source
 * (baseline:232, `.col-4:first-child { & h3 { ... } }`) is resolved the same way:
 * `&` there means "this selector, as an ancestor", so `& h3` is the descendant
 * selector `.col-4:first-child h3` -- split out below as its own rule rather than
 * staying nested, since flat CSS has no nesting to hold it in.
 * ------------------------------------------------------------------------ */

[id$="_chuds_status"] {
  margin-bottom: 2rem;
}

[id$="_chuds_status"] .mt-4 .card {
  border-style: none;
  background-color: #ededed !important;
  border-radius: 0;
}

[id$="_chuds_status"] .rounded {
  border-radius: 999px !important;
}

[id$="_chuds_status"] .p-3 {
  padding: 0.4rem !important;
  background: linear-gradient(
    111.92deg,
    rgba(220, 220, 220, 1) 20%,
    rgba(230, 230, 230, 1) 100%
  );
  border-radius: 8px;
  height: 60px;
  border-radius: 999px;
  --background: rgba(255, 255, 255, 0.65);
  border: 1px solid rgba(255, 255, 255, 0.75);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.06),
    0 2px 6px rgba(0, 0, 0, 0.08);
  backdrop-filter: blur(2px) saturate(180%);
}

[id$="_chuds_status"] .p-4 {
  padding: 0.3rem !important;
}

[id$="_chuds_status"] .text-muted.mb-1 {
  color: #6c6c6c;
  font-family: "IBM Plex Sans", sans-serif;
  font-style: normal;
  font-weight: 500;
  font-size: 9px;
}

[id$="_chuds_status"] .p-3 h3 {
  font-family: "IBM Plex Sans", sans-serif;
  font-style: normal;
  font-weight: 700;
  font-size: 24px;
  line-height: 29px;
  color: #1aaf11;
}

[id$="_chuds_status"] .p-3::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 2rem;
  backdrop-filter: blur(1px);
  box-shadow: inset -10px -8px 0px -11px rgba(255, 255, 255, 1),
    inset 0px -9px 0px -8px rgba(255, 255, 255, 1);
  opacity: 0.6;
  z-index: -1;
  filter: blur(1px) drop-shadow(10px 4px 6px black) brightness(115%);
}

[id$="_chuds_status"] .col-4 {
  padding-left: 6px;
  padding-right: 0px;
  width: 36%;
}

[id$="_chuds_status"] .col-4:last-child {
  width: 32%;
}

[id$="_chuds_status"] .col-4:first-child {
  padding-left: 0px;
  width: 30%;
}

[id$="_chuds_status"] .col-4:first-child h3 {
  font-family: "IBM Plex Sans", sans-serif;
  font-style: normal;
  font-weight: 700;
  font-size: 13px;
  line-height: 13px;
  padding: 0 8px;
}

[id$="_chuds_status"] .progress {
  height: 0.4rem !important;
  border-radius: 1rem;
  background-color: #cbcbcb;
  margin-top: 15px;
  width: 300px;
}

[id$="_chuds_status"] .progress-bar {
  background-color: var(--green);
}

[id$="_chuds_status"] .mt-2.fw-bold {
  font-family: "IBM Plex Sans", sans-serif;
  font-style: normal;
  font-weight: 700;
  font-size: 12px;
  line-height: 14px;
  color: #6c6c6c;
  margin-bottom: 0;
}

[id$="_chuds_status"] .mt-2.fw-bold::before {
  content: "Next Level: ";
  font-weight: 400;
}

[id$="_chuds_status"] .row {
  justify-content: space-between;
  margin: 0 15px 0 15px;
}

[id$="_chuds_status"] .mt-4:last-child {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
}

[id$="_chuds_status"] .card {
  border-radius: 16px;
  margin: 10px;
  background: rgba(255, 255, 255, 0.65);
  border: 1px solid rgba(255, 255, 255, 0.75);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.06),
    0 2px 6px rgba(0, 0, 0, 0.08);
  backdrop-filter: blur(2px) saturate(180%);
}

[id$="_chuds_status"] .card::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 16px;
  backdrop-filter: blur(1px);
  box-shadow: inset -10px -8px 0px -11px rgba(255, 255, 255, 1),
    inset 0px -9px 0px -8px rgba(255, 255, 255, 1);
  opacity: 0.6;
  z-index: -1;
  filter: blur(1px) drop-shadow(10px 4px 6px black) brightness(115%);
}

/* ---------------------------------------------------------------------------
 * #welcome-index + [id$="-edit"] -- baseline:30-135 (shared, comment
 * "Home Page" at :30), :1595-1597, :1599-1684 (comment "Edit Info Page" at
 * :1593), :1686-1688
 *
 * These two body ids share ONE selector list in the row for the whole
 * :30-135 block (baseline:31, "#welcome-index, [id$=\"-edit\"]" opening one
 * shared block), so neither could migrate without the other -- moving only
 * one would leave the unmoved half of a comma-joined list free to drift from
 * its twin.
 *
 * Flattened here as ONE comma-joined rule per declaration group, both scopes
 * named, exactly as the row has it -- not two copies. `#welcome-index .a,
 * [id$="-edit"] .a` is one rule that cannot drift into two; PARITY_PAGE=
 * welcome-index and PARITY_PAGE=attendees-edit each strip their own half out
 * of the row and strip_page_rules keeps the other (the partial-list case its
 * self-test already pins).
 *
 * :30-135's own nesting goes two levels deep in one place (#welcome-text
 * wraps #CompanyTriangle) and has one nested comma list of its own
 * (.modal-body, .modal-content) -- both resolved the same way as a plain
 * nested selector: no leading combinator means "descendant of everything
 * above", and a nested comma list is the cross product with what came
 * before it. So `.modal-body, .modal-content` under
 * `#welcome-index, [id$="-edit"]` becomes four selectors below, not two, and
 * `.modal-body` / `.modal-content` each appear TWICE -- once from that
 * combined rule, once again as their own standalone rule further down,
 * because that is what the row actually has.
 *
 * baseline:310-311, an empty `[id$="-edit"]` rule right after this block, is
 * a no-op -- no declarations to carry -- and is DROPPED rather than moved: an
 * empty rule changes no comparison this migration runs.
 *
 * baseline:1611-1613 nests `[id$="_chuds_status"].row.text-center` inside
 * `h1::after` -- a pseudo-element generates no box an element can descend
 * from, so this is dead by construction, the same shape as the /terms `h1`
 * rule above. Moved AS IS: fixing a dead rule is a visual change and the
 * freeze runs to 4 October.
 *
 * baseline:1686-1688, `[id$="-edit"] [id$="_chuds_status"]`, is the rule
 * Phase A's chuds-status migration could not reach: scoped_to? only matches
 * the LEFTMOST compound, so a `[id$="_chuds_status"]` in descendant position
 * is invisible to a `[id$="_chuds_status"]`-scoped migration. Moving it here
 * closes that cutover-coverage hole.
 *
 * The modal rules below (the "Show Ready Popup" `.modal.show .modal-dialog`,
 * `.bg-success`, and every `.modal`/`.modal-dialog`/`.modal-body`/
 * `.modal-content` rule) are migrated verbatim, but the parity harness
 * cannot exercise most of them: application.html.erb only renders that
 * markup behind `params[:new_login]`, and even then Bootstrap needs its own
 * JavaScript to add `.modal.show` -- the harness serves none. See
 * design/parity/welcome-index/reference/manifest.json for exactly which
 * rules that leaves uncovered, and why `.bg-success` is not one of them.
 * ------------------------------------------------------------------------ */

#welcome-index #welcome-text, [id$="-edit"] #welcome-text {
  padding-left: 30px;
  padding-right: 30px;
}

#welcome-index #welcome-text #CompanyTriangle, [id$="-edit"] #welcome-text #CompanyTriangle {
  width: 150px;
  margin-bottom: 1rem;
}

#welcome-index img.img-fluid, [id$="-edit"] img.img-fluid {
  padding-left: 30px;
  padding-right: 30px;
  margin-bottom: 1rem;
  margin-top: 1rem;
}

#welcome-index .pb-5, [id$="-edit"] .pb-5 {
  padding-bottom: .5rem !important;
}

#welcome-index .mt-5, [id$="-edit"] .mt-5 {
  margin-top: 0 !important;
}

#welcome-index .row.text-center, [id$="-edit"] .row.text-center {
  padding-left: 0px;
  padding-right: 0px;
}

#welcome-index .text-center, [id$="-edit"] .text-center {
  padding-left: 0px;
  padding-right: 0px;
}

/* Show Ready Popup */
#welcome-index .modal.show .modal-dialog, [id$="-edit"] .modal.show .modal-dialog {
  --margin-top: 50%;
}

#welcome-index .bg-success, [id$="-edit"] .bg-success {
  background-color: var(--green) !important;
}

#welcome-index .modal-body, #welcome-index .modal-content,
[id$="-edit"] .modal-body, [id$="-edit"] .modal-content {
  border-radius: 2em;
}

#welcome-index .btn-close.m-2, [id$="-edit"] .btn-close.m-2 {
  margin: 1rem !important;
}

#welcome-index .modal-body h3, [id$="-edit"] .modal-body h3 {
  font-size: calc(1rem + 0.6vw);
}

#welcome-index .modal-dialog, [id$="-edit"] .modal-dialog {
  display: flex;
  justify-content: center; /* Centers items horizontally */
  align-items: center;
  height: 100%;
}

#welcome-index .modal, [id$="-edit"] .modal {
  height: 80%;
}

#welcome-index .modal-body, [id$="-edit"] .modal-body {
  position: relative;
  backdrop-filter: blur(2px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.8);
  border-radius: 2rem;
  box-shadow: 0 8px 32px rgba(31, 38, 135, 0.2),
    inset 0 4px 20px rgba(255, 255, 255, 0.3);
  width: 350px;
  margin: auto;
}

#welcome-index .modal-content, [id$="-edit"] .modal-content {
  border-style: none;
  background-color: transparent;
}

#welcome-index .modal-body::after, [id$="-edit"] .modal-body::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 2rem;
  backdrop-filter: blur(1px);
  box-shadow: inset -10px -8px 0px -11px rgba(255, 255, 255, 1),
    inset 0px -9px 0px -8px rgba(255, 255, 255, 1);
  opacity: 0.6;
  z-index: -1;
  filter: blur(1px) drop-shadow(10px 4px 6px black) brightness(115%);
}

/* Edit Info Page -- baseline:1595-1597, own top-level rule, no flattening
 * needed: it was never part of the shared list. */
[id$="-edit"] .col-12.col-sm-8.mx-auto.pt-5 {
  padding-top: 0 !important;
}

[id$="-edit"] .row.justify-content-center {
  margin: 0;
}

/* The page title lives in CSS, same trick as /terms above: the view renders
 * <h1>Edit Your Info</h1>, the h1 is collapsed to nothing, and the visible
 * words are the CONTENT of its ::after. Migrated as is. */
[id$="-edit"] h1 {
  font-size: 0 !important;
}

[id$="-edit"] h1::after {
  content: "Your Info";
  font-size: calc(1.375rem + 1.5vw);
}

/* Dead by construction: h1::after is a pseudo-element and generates no box
 * an element can descend from, so nothing can ever match this selector.
 * Moved AS IS -- fixing a dead rule is a visual change and the freeze runs
 * to 4 October. */
[id$="-edit"] h1::after [id$="_chuds_status"].row.text-center {
  padding-top: 10px;
}

[id$="-edit"] form {
  width: 350px;
  margin-top: 30px;
  margin-bottom: 30px;
  margin-left: auto;
  margin-right: auto;
}

[id$="-edit"] .mb-3 label {
  font-size: 0.75rem;
  /* text-transform: uppercase; */
}

[id$="-edit"] .form-control {
  font-weight: 800;
  text-align: center;
  color: var(--dk-green);
  border-radius: 5rem;
}

[id$="-edit"] .mb-5 {
  padding-right: 10px;
  padding-left: 10px;
  margin-bottom: 0 !important;
  width: 380px;
  margin: auto;
}

[id$="-edit"] .form-label {
  margin-bottom: 0rem !important;
  text-transform: uppercase;
  font-size: 0.6rem;
}

[id$="-edit"] .btn-primary {
  background-color: #1aaf13 !important;
  width: 150px;
  height: 42px !important;
  position: relative;
  backdrop-filter: blur(2px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.8);
  border-radius: 2rem;
  box-shadow: 0 8px 32px rgba(31, 38, 135, 0.2),
    inset 0 4px 20px rgba(255, 255, 255, 0.3);
  font-weight: 400;
  line-height: 1.5;
  padding: 0.25rem 0.5rem;
  font-size: 0.875rem;
}

[id$="-edit"] .btn-primary::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 2rem;
  backdrop-filter: blur(1px);
  box-shadow: inset -10px -8px 0px -11px rgba(255, 255, 255, 1),
    inset 0px -9px 0px -8px rgba(255, 255, 255, 1);
  opacity: 0.6;
  z-index: -1;
  filter: blur(1px) drop-shadow(10px 4px 6px black) brightness(115%);
}

/* Closes Phase A's cutover-coverage hole -- see the header note above. */
[id$="-edit"] [id$="_chuds_status"] {
  margin-bottom: 0 !important;
}

/* ---------------------------------------------------------------------------
 * /login -- baseline:647-789
 *
 * Moved verbatim, including two known traps that stay as-is (row-emptying's job,
 * not this migration's):
 *
 *   - The background-image is a digest-stamped path,
 *     `/assets/GrossProphets-StoryBKG-Clouds-9x16-39928e9f.png`, which Propshaft does
 *     NOT rewrite. It only resolves while that exact fingerprinted file exists on
 *     disk; a re-processed image breaks this rule silently. See
 *     docs/attendee-design-system-plan.md Phase S item 3 for the real fix.
 *   - `form.mb-3:nth-child(4)` (verified dead: bootstrap_form's <form> carries no
 *     mb-3 class) and the commented-out logo rule at the bottom are left dead/
 *     commented, not deleted or "fixed".
 * ------------------------------------------------------------------------ */
#login {
 
  background-image: url("/assets/GrossProphets-StoryBKG-Clouds-9x16-39928e9f.png");
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center top;
  
  form {
    width: 350px;
    margin-bottom: 30px;
  }

  .mb-3 label {
    font-size: 0.75rem;
    /* text-transform: uppercase; */
  }

  form.mb-3:nth-child(4) {
    background-color: red !important;
  }

  input[type="checkbox"] {
    accent-color: #1aaf11; /* Sets the checked color */
    --border-color: red !important;
    transform: scale(1.5) !important;
    --margin-top: 50px !important;
  }

  .mt-5 {
    margin-top: 1rem !important;
  }

  .btn-lg {
    background-color: var(--green);
    border-color: var(--green);
    --margin-top: 50px;
    border-radius: 5rem;

    border: 0 !important;
    --background: transparent !important;
    box-shadow: none !important;
  }

  .btn-lg::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 2rem;
    backdrop-filter: blur(1px);
    box-shadow: inset -10px -8px 0px -11px rgba(255, 255, 255, 1),
      inset 0px -9px 0px -8px rgba(255, 255, 255, 1);
    opacity: 0.6;
    z-index: -1;
    filter: blur(1px) drop-shadow(10px 4px 6px black) brightness(115%);
  }

  .form-text {
    display: none;
  }

  .mb-3:nth-child(3) {
    .form-text {
      display: none;
    }
  }

  a {
    color: var(--green);
  }

  .form-text {
    font-style: italic;
  }

  .form-control {
    font-weight: 800;
    text-align: center;
    color: var(--dk-green);
    border-radius: 5rem;
    background-color: rgba(255, 255, 255, .4);
  }

  .mb-5 {
    padding-right: 10px;
    padding-left: 10px;
    margin-bottom: 0 !important;
    width: 380px;
    margin: auto;
  }

  .mt-5.nth-child(1) {
    margin-top: 4rem !important;
    margin-bottom: 2rem !important;
  }

  .mt-5.nth-child(2) {
    margin-top: 14px !important;
  }
  h2 {
    margin-bottom: 2rem;
    color: white;
  }
  
  .trix-content {
   color: white;
  }
  .form-label {
    margin-bottom: 0rem !important;
    text-transform: uppercase;
    font-size: 0.6rem;
  }

  .mb-3 {
    margin: 0.5rem !important;
  }

  .mt-3 {
    margin-bottom: 1rem;
  }
  .mb-3:nth-child(4) {
    padding-bottom: 50px !important;
  }

  .w-50 {
    width: 90% !important;
  }
  .w-100 {
    width: 334px !important;
    font-size: 1rem !important;
  }
  .img-fluid {
    max-width: 300px;
  }

  /* Login Page Logo */
  /*  img.img-fluid.w-50 {
    content: url("https://images.squarespace-cdn.com/content/543df105e4b01ddd00dd714c/c59b7441-f6a1-4332-a8d9-710389f61175/GPLoginLogo.png?format=400w");
	}*/
}
