/* The global layer of the attendee design system.
 *
 * Every rule below is a BYTE-FOR-BYTE copy of a top-level rule in
 * design/custom-css-baseline.css — the snapshot of Setting[code: "custom_css"],
 * the 1,612-line row an operator edits through the admin UI. The `baseline:N-M`
 * markers give the source lines.
 *
 * Why these 21 blocks and not the other 18: these are the rules that are not
 * scoped to a page. 1,488 of the baseline's lines sit inside a body-ID block
 * (#shop, #login, #performers-pay …) and cannot reach a page that does not name
 * them. These 112 apply everywhere, including to screens that do not exist yet,
 * which is why they are the first thing worth having in the repo.
 *
 * THIS CHANGES NO RENDERING, and the reason is ordering, not luck. The row is
 * still injected — raw, into a <style> block in <head>, after every linked
 * stylesheet — so for any declaration here there is an identical declaration
 * later in the cascade with identical specificity and identical !important.
 * The database copy wins every tie it is in, exactly as it does today. Nothing
 * here can beat a rule in application.css that the row does not already beat.
 *
 * TWO THINGS THAT FOLLOW FROM THAT, and are easy to forget:
 *
 * 1. Deleting one of these rules from the Setting row no longer removes it.
 *    The copy here takes over silently. That row is the emergency channel for
 *    hot-patching a live show, so anyone editing it mid-run needs to know this
 *    file exists. Until the row is emptied of these lines (a post-run step),
 *    edit BOTH or neither.
 * 2. Re-capture the row and diff these blocks before this merges, every time.
 *    Done 2026-09-14 against production (settings id 103, untouched since
 *    2025-11-09), and it caught one: `.footer` at baseline:590 contains a
 *    NON-BREAKING SPACE between the selector and the brace. U+00A0 is not CSS
 *    whitespace — it is a valid identifier character — so the live selector is
 *    the class "footer ", which matches nothing, and that rule has never
 *    applied. The 2026-09-13 snapshot had it as two ordinary spaces, which
 *    would have made this file quietly resurrect a dead rule and push every
 *    attendee footer down by 2rem. It is copied here exactly as it ships,
 *    invisible character and all. Do not "clean" it.
 *
 * Kept verbatim on purpose. Tokenising, renaming and de-duplicating these rules
 * is the component refactor, and it belongs after the run — a verbatim move and
 * a rewrite are two changes, and only one of them is safe three weeks out.
 *
 * Linked into application, store and minimum — never admin — and linked AFTER
 * application.css, which is where these rules have always sat relative to it.
 * Loading them earlier looks identical today, because the row wins either way,
 * and would quietly hand application.css a set of fights it has always lost the
 * day the row is emptied.
 */

/* The font import is NOT copied. baseline:1 pulls IBM Plex Sans from Google
 * Fonts, and a second @import here would be the one thing in this file that is
 * not inert: same URL, so no second download, but a second render-blocking
 * import discovered at a different moment, which is a font-loading timing
 * change on a page nobody is allowed to change this month. It belongs to the
 * step that empties the row — at which point the type dependency has to move
 * here, and should become a local asset rather than a call the venue's wifi
 * has to make mid-show.
 *
 * THE LOCAL ASSET NOW EXISTS: app/assets/stylesheets/fonts.css, linked first in
 * the three attendee layouts, serving the twelve woff2 files the row's @import
 * resolves to. So the type dependency has already moved — it did not move HERE,
 * because this file is a byte copy of lines from the row and an @font-face
 * block is not one of them. The row's @import still wins while the row is live;
 * emptying it is what hands over to fonts.css. */

/* baseline:3-9 */
:root {
  --green: #1aaf13;
  --dk-green: #1a8754;
  --bs-font-sans-serif: "IBM Plex Sans", "Helvetica Neue", Arial, "Noto Sans",
    "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji",
    "Segoe UI Symbol", "Noto Color Emoji";
}

/* baseline:11-13 */
body {
  background: #fefefe;
}

/* baseline:15-19 */
/* Hide About Company and Show Program Nav Links */
#company-nav-link,
#show-program-nav-link {
  display: none;
}

/* baseline:25-28 */
/*hide Faq link*/
.nav-item:nth-child(7) {
  display: none; 
}

/* baseline:138-141 */
/* stat box chud symbol */
h3#chuds-balance::before {
  content: "¢";
}

/* baseline:143-148 */
/* stat box level */
.mt-4 {
  margin-top: 0.5rem !important;
  padding-right: 0;
  padding-left: 0;
}

/* baseline:590-593 */
.footer  {
  margin-top: 2rem !important;
  line-height: 1 !important;
}

/* baseline:595-597 */
footer.footer {
  line-height: 1em;
}

/* baseline:599-605 */
footer .text-muted {
  font-size: 12px;
  a {
    color: #1aaf11;
    text-transform: uppercase;
  }
}

/* baseline:607-623 */
/* Nav Bar */
.navbar:after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 35px;
  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%);
}

/* baseline:625-632 */
.navbar {
  border-radius: 35px;
  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%);
  margin: 10px;
}

/* baseline:634-638, DELIBERATELY NOT verbatim (Corey, task C3, 2026-09-23):
 * the row's own copy is `width: auto%;` / `max-height: 2rem !important;` —
 * `auto%` is not a valid <length-percentage>, so the declaration is dropped
 * and `width` falls through to the initial `auto`. That alone would be
 * harmless (the img has a viewBox-derived aspect ratio to fall back on), but
 * company-wordmark-tm.svg has no width/height attribute on its <svg> root,
 * only the viewBox — and Chrome's replaced-element sizing only resolves
 * `width: auto` from the intrinsic ratio when the OTHER axis is a definite
 * `height`. A `max-height` cap alone does not trigger it: measured live
 * (script/measure_live.js), the image computes to 0x0 with the row's rule
 * as shipped, in every attendee nav, at every width — this is the missing
 * logo. Swapping `max-height` for `height` (still capped to 2rem, still
 * !important to beat the inline `style="max-height: 50px"` image_tag
 * emits) makes the same ratio resolve to 148.03x32 instead. Width stays
 * `auto` (not a token: this mirrors the operator row's own literal values,
 * per this file's contract) with the stray `%` dropped, since it was never
 * doing anything valid.
 *
 * The Setting row itself is untouched on purpose — design/custom-css-
 * baseline.css records what production actually ships, bug included (see
 * that file's header and CLAUDE.md's "model what ships, not what was
 * intended"). This file's fix wins on its own: the row's `width: auto%` is
 * still invalid and still contributes no competing declaration, so there is
 * nothing here to lose a tie against. */
.navbar img {
  width: auto;
  margin-left: 10px;
  height: 2rem !important;
}

/* baseline:640-642 */
.navbar .container {
    --flex-wrap: nowrap;
}

/* baseline:644-646 */
.navbar.has(.navbar-collapse.show) {
  border-radius: 50px !important;
}

/* baseline:648-652 */
.navbar-toggler {
  border-radius: 20rem;
  padding: 0.6rem;
  margin-right: 0 !important;
}

/* baseline:654-659 */
.navbar.d-flex {
  align-items: center;
  justify-content: center;
  height: 2rem;
  --max-height: 2rem;
}

/* baseline:661-664 */
a.nav-link.position-relative.d-lg-none {
  display: flex;
  align-items: center;
}

/* baseline:666-668 */
.mt-4 {
  text-align: center;
}

/* baseline:1372-1379 */
.alert {
  line-height: 1.2;
  font-size: 0.9rem;
  margin-bottom: 0;
  border-radius: 0;
  border: none;
  width: 100%;
}

/* baseline:1381-1384 */
.alert-success {
  color: #000000;
  background-color: #d0d0d0;
}

/* baseline:1386-1388 */
.d-flex.mt-5:has(.alert) {
  margin-bottom: 1rem !important;
}
