/* Frosted-glass look for the public homepage and the registration form.
   Loaded after the other stylesheets, so removing the link in index.html restores the previous look.
   Every surface color comes from the theme variables (--paper, --ink, --wash), so the system dark
   palette gets a dark version of the same look instead of light panels on a dark page.
   Images: home-hero.webp (homepage hero), home-closing.webp (closing band), signup-backdrop.webp
   (registration page). They are abstract glass shapes and do not depict an event or a person.
   Motion is limited to short fades, small lifts on hover, and a check mark that draws itself, and it
   all switches off for visitors who ask for reduced motion. */

:root {
  --ease: cubic-bezier(.2, .8, .2, 1);
  --header-h: 72px;
  /* Plain fallbacks first; browsers that support color-mix get the translucent versions below. */
  --glass: var(--paper);
  --glass-tile: var(--paper);
  --veil-layer: linear-gradient(transparent, transparent);
  --closing-veil: linear-gradient(transparent, transparent);
  --glass-edge: rgba(255, 255, 255, .92);
  /* Outlines of fields, checkboxes, and chips: at least 3:1 against the panels and the page (WCAG 1.4.11). */
  --control-border: #5b7589;
  /* Fill behind white text for chosen chips and the chosen Yes/No option (5.9:1 or better in both themes). */
  --selected-fill: #005ca8;
  --glass-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), 0 28px 60px -26px rgba(0, 40, 90, .55);
}
@supports (background: color-mix(in srgb, red 50%, transparent)) {
  :root {
    --glass: linear-gradient(145deg, color-mix(in srgb, var(--paper) 90%, transparent), color-mix(in srgb, var(--paper) 82%, transparent));
    --glass-tile: color-mix(in srgb, var(--paper) 70%, transparent);
    /* 50% keeps the page text above 4.5:1 even over the darkest accents of the backdrop. */
    --veil-layer: linear-gradient(color-mix(in srgb, var(--wash) 50%, transparent), color-mix(in srgb, var(--wash) 50%, transparent));
  }
}
@media (prefers-color-scheme: dark) {
  :root {
    --glass-edge: rgba(255, 255, 255, .16);
    --control-border: #9bb9cc;
    --selected-fill: #0068b8;
    --glass-shadow: inset 0 1px 0 rgba(255, 255, 255, .14), 0 28px 60px -26px rgba(0, 0, 0, .65);
  }
}
@media (prefers-color-scheme: dark) {
  @supports (background: color-mix(in srgb, red 50%, transparent)) {
    :root {
      --veil-layer: linear-gradient(color-mix(in srgb, var(--wash) 72%, transparent), color-mix(in srgb, var(--wash) 72%, transparent));
      --closing-veil: linear-gradient(color-mix(in srgb, var(--wash) 80%, transparent), color-mix(in srgb, var(--wash) 80%, transparent));
    }
  }
}
@media (max-width: 700px) { :root { --header-h: 64px; } }
@media (prefers-reduced-transparency: reduce) {
  :root { --glass: var(--paper); --glass-tile: var(--paper); }
}

/* One frosted surface, used by the details card, the form sections, the step list, and the side note. */
.hero-facts, .signup-layout .form-section, .signup-rail, .signup-aside, .signup-progress {
  background: var(--glass);
  border: 1px solid var(--glass-edge);
  box-shadow: var(--glass-shadow);
  -webkit-backdrop-filter: blur(22px) saturate(125%);
  backdrop-filter: blur(22px) saturate(125%);
}
@media (prefers-reduced-transparency: reduce) {
  .hero-facts, .signup-layout .form-section, .signup-rail, .signup-aside, .signup-progress { -webkit-backdrop-filter: none; backdrop-filter: none; }
}

/* ---------- Scroll reveal (class added by revealOnScroll in app.js) ---------- */
.reveal { opacity: 0; transform: translateY(22px); transition: opacity .7s var(--ease), transform .7s var(--ease); transition-delay: var(--reveal-delay, 0ms); }
.reveal.in { opacity: 1; transform: none; }

/* ---------- Buttons ---------- */
.home-register, #signup-form button[type="submit"] { border-radius: 12px; transition: transform .25s var(--ease), box-shadow .25s var(--ease), background .2s; }
.home-register:hover, #signup-form button[type="submit"]:hover { transform: translateY(-2px); }
.home-register:active, #signup-form button[type="submit"]:active { transform: scale(.98); }
.home-register::after, #signup-form button[type="submit"]::after { content: "\2192" / ""; display: inline-block; margin-left: .6rem; transition: transform .25s var(--ease); }
.home-register:hover::after, #signup-form button[type="submit"]:hover::after { transform: translateX(4px); }
.hero-invite-register:hover { background: #f0f7fd; }

/* ---------- Homepage hero ---------- */
.hero-invite { position: relative; isolation: isolate; grid-template-rows: auto auto; background: none; border-image: none; }
/* Headline and button sit together, centered against the details card. */
.hero-invite-copy { align-self: end; }
.hero-invite-action { align-self: start; padding-top: 1.5rem; }
.hero-facts { align-self: center; }
/* The picture reaches both edges of the window while the content stays in the page container. */
.hero-invite::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset-block: 0;
  inset-inline: calc(50% - 50vw);
  /* The scrim keeps the white headline above 4.5:1 (3:1 for the large headline) over the glass shapes. */
  background: linear-gradient(90deg, rgba(0, 40, 100, .5) 0%, rgba(0, 40, 100, .4) 45%, rgba(0, 40, 100, 0) 80%), url("./assets/home-hero.webp") 70% center / cover, var(--deca-blue);
}

.landing-page { --home-cols: minmax(0, 1fr) minmax(20rem, 30rem); }
.hero-facts {
  /* The time never wraps, so its column is at least as wide as the time; lunch takes the rest. */
  grid-template-columns: minmax(min-content, 1.5fr) minmax(0, 1fr);
  gap: .6rem;
  padding: 1.1rem;
  border-radius: 22px;
  list-style: none;
  display: grid;
}
.hero-facts > li, .hero-facts > li:first-child, .hero-facts > li:last-child {
  grid-column: 1 / -1;
  padding: .8rem .9rem;
  border: 1px solid var(--glass-edge);
  border-radius: 16px;
  background: var(--glass-tile);
}
.hero-facts > li.fact-half, .hero-facts > li.fact-half:first-child, .hero-facts > li.fact-half:last-child { grid-column: auto; padding: .7rem .75rem; }
.fact-half .fact-icon { padding: 7px; }
.fact-half strong { text-wrap: balance; }
.hero-facts > .fact-dates, .hero-facts > .fact-dates:first-child { padding: .15rem .15rem 0; border: 0; background: none; }
.hero-row { grid-template-columns: auto minmax(0, 1fr); column-gap: .7rem; align-items: start; }
.hero-row.fact-half { align-items: center; }
.fact-time strong { white-space: nowrap; }
.fact-icon { box-sizing: content-box; width: 20px; height: 20px; margin: 0; padding: 8px; border-radius: 11px; background: var(--blue-wash); color: var(--blue-deep); box-shadow: 0 2px 8px rgba(0, 60, 120, .12); }
.fact-link { color: var(--blue-deep); }

.date-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(5.5rem, 1fr)); gap: .65rem; }
.hero-facts .date-tile { min-width: 0; padding: .75rem 1rem .8rem; border-radius: 16px; border-color: var(--blue-line); background: var(--blue-wash); transition: transform .3s var(--ease), box-shadow .3s var(--ease); }
.hero-facts .date-tile:hover { transform: translateY(-3px); box-shadow: 0 12px 24px rgba(0, 92, 168, .22); }
.hero-facts .date-tile-weekday { letter-spacing: .12em; }
.hero-facts .date-tile-day { margin-top: .2rem; font-size: 1.8rem; font-weight: 800; letter-spacing: -.02em; }
.hero-facts .fact-note { margin: .7rem 0 .15rem .2rem; }

/* ---------- Homepage sections ---------- */
.home-photo img { border-radius: 20px; box-shadow: 0 24px 50px -20px rgba(0, 40, 80, .45); transform: rotate(1.2deg); transition: transform .6s var(--ease); }
.home-photo:hover img { transform: none; }

.home-closing { position: relative; isolation: isolate; background: none; border-image: none; border-block: 1px solid transparent; }
.home-closing::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset-block: -1px;
  inset-inline: calc(50% - 50vw);
  border-block: 1px solid var(--blue-line);
  background: var(--closing-veil), url("./assets/home-closing.webp") center / cover, var(--blue-wash);
}

/* ---------- Registration page ---------- */
.signup-layout {
  position: relative;
  isolation: isolate;
  /* Clips the pinned backdrop to this section, top and bottom, while letting it reach the window edges. */
  clip-path: inset(0 -100vw);
  margin-top: -2.5rem;
  padding: 2.5rem 0 3rem;
  grid-template-columns: 15.5rem minmax(0, 1fr);
  grid-template-areas: "head head" "rail form" ". aside";
  column-gap: clamp(1.5rem, 3vw, 3rem);
}
/* The backdrop stays the size of the window however long the form is, and the panels pass over it. */
.signup-layout::before { content: ""; position: fixed; inset: 0; z-index: -1; background: var(--veil-layer), url("./assets/signup-backdrop.webp") center / cover, var(--wash); }
.signup-head { margin-top: 0; }
.signup-head-note { color: var(--ink); }
.signup-layout > form.card { grid-area: form; display: grid; gap: 1.25rem; padding: 0; border: 0; background: none; box-shadow: none; }

.signup-layout .form-section, .signup-layout .form-section:first-of-type {
  margin: 0;
  padding: clamp(1.25rem, 2.5vw, 2rem);
  border-radius: 20px;
  scroll-margin-top: calc(var(--header-h) + 5rem);
  transition: box-shadow .35s var(--ease), border-color .35s var(--ease);
}
.signup-layout .form-section:focus-within { border-color: var(--blue-line); }
.signup-layout .form-section-head { font-size: clamp(1.4rem, 2.2vw, 1.6rem); }

.signup-aside { grid-area: aside; position: static; margin-top: 0; border-radius: 20px; }

/* Controls */
#signup-form input, #signup-form select, #signup-form textarea { min-height: 50px; border: 1.5px solid var(--control-border); border-radius: 12px; transition: border-color .2s, box-shadow .25s var(--ease); }
#signup-form textarea { min-height: 7rem; }
#signup-form input:hover, #signup-form select:hover, #signup-form textarea:hover { border-color: var(--ink); }
#signup-form input:focus, #signup-form select:focus, #signup-form textarea:focus { border-color: var(--deca-blue); box-shadow: 0 0 0 4px color-mix(in srgb, var(--deca-blue) 22%, transparent); }
#signup-form input[type="checkbox"], #signup-form input[type="radio"] { min-height: 0; }

/* Day and online cards */
.option label { border: 1.5px solid var(--glass-edge); border-radius: 16px; background: var(--glass-tile); transition: border-color .2s, background .25s, transform .3s var(--ease), box-shadow .3s var(--ease); }
.option:hover label { border-color: var(--blue-line); transform: translateY(-2px); box-shadow: 0 12px 24px -14px rgba(0, 92, 168, .4); }
.option input:checked + label { border-color: var(--deca-blue); background: var(--blue-wash); box-shadow: 0 0 0 3px color-mix(in srgb, var(--deca-blue) 22%, transparent); }
.option label::before { width: 1.5rem; height: 1.5rem; border-color: var(--control-border); border-radius: 8px; line-height: 1.25rem; transition: background .25s var(--ease), border-color .25s var(--ease), transform .25s var(--ease); }
.option input:checked + label::before { animation: pop .35s var(--ease); }
.any-category { margin-bottom: 1rem; }
.any-category label { padding-block: .85rem; }
.any-category .option-title { margin-top: 0; font-size: 1.1rem; }
.category-count { margin: .9rem 0 0; }

/* Category chips */
#signup-form .chip-option label { border: 1.5px solid var(--control-border); border-radius: 999px; background: var(--glass-tile); transition: transform .25s var(--ease), border-color .2s, background .25s; }
#signup-form .chip-option:hover label { border-color: var(--deca-blue); transform: translateY(-2px); }
#signup-form .chip-option input:checked + label { border-color: var(--selected-fill); background: var(--selected-fill); color: #fff; animation: pop .35s var(--ease); }
@keyframes pop { 40% { transform: scale(1.08); } }

/* Yes / No: sized to its two options, outlined, with a solid fill for the choice made. */
#signup-form .segmented { display: inline-flex; gap: 4px; padding: 4px; border: 1.5px solid var(--control-border); border-radius: 14px; background: var(--paper); overflow: visible; }
#signup-form .seg label { border: 0; border-radius: 10px; background: transparent; color: var(--ink); font-weight: 700; transition: background .25s var(--ease), color .2s, box-shadow .25s; }
#signup-form .seg:hover input:not(:checked) + label { background: var(--blue-wash); }
#signup-form .seg input:checked + label { background: var(--selected-fill); color: #fff; box-shadow: 0 4px 12px rgba(0, 70, 140, .3); }
.seg input:focus-visible + label { outline-offset: 2px; }

#signup-form .choice { border: 1.5px solid var(--glass-edge); border-radius: 14px; background: var(--glass-tile); }
#signup-form .choice label { background: transparent; }
#signup-form button[type="submit"] { border-radius: 14px; box-shadow: 0 10px 24px -10px rgba(0, 92, 168, .6); }

/* ---------- Step list and progress ---------- */
.signup-rail { grid-area: rail; position: sticky; top: calc(var(--header-h) + 1.25rem); align-self: start; padding: .8rem; border-radius: 18px; }
.signup-rail ol { list-style: none; margin: 0; padding: 0; }
.signup-rail li { position: relative; }
.signup-rail li:not(:last-child)::before { content: ""; position: absolute; left: 15px; top: calc(.45rem + 32px); bottom: -.45rem; width: 2px; background: var(--line); transition: background .4s var(--ease); }
.signup-rail li.done:not(:last-child)::before { background: var(--deca-blue); }
.signup-rail button { display: flex; align-items: center; gap: .8rem; width: 100%; padding: .45rem 0; border: 0; background: none; color: var(--muted); font: inherit; font-size: 1rem; font-weight: 600; line-height: 1.3; text-align: left; cursor: pointer; transition: color .2s; }
.signup-rail button:hover { color: var(--ink); }
.signup-rail button:focus-visible { outline: 3px solid var(--deca-blue); outline-offset: 2px; border-radius: 8px; }
.signup-rail .step-dot { position: relative; z-index: 1; flex: none; display: grid; place-items: center; width: 32px; height: 32px; border: 2px solid var(--control-border); border-radius: 50%; background: var(--paper); color: var(--muted); font-size: .85rem; font-weight: 700; transition: all .35s var(--ease); }
.signup-rail li.active button { color: var(--ink); }
.signup-rail li.active .step-dot { border-color: var(--deca-blue); color: var(--blue-deep); box-shadow: 0 0 0 5px color-mix(in srgb, var(--deca-blue) 18%, transparent); transform: scale(1.08); }
.signup-rail li.done .step-dot { border-color: var(--deca-blue); background: var(--deca-blue); color: transparent; }
.signup-rail li.done .step-dot::after { content: ""; position: absolute; width: 9px; height: 5px; border-left: 2.5px solid #fff; border-bottom: 2.5px solid #fff; transform: rotate(-45deg) translate(1px, -1px); }

.signup-progress { display: none; position: sticky; top: calc(var(--header-h) + .5rem); z-index: 5; padding: .6rem .9rem .7rem; border-radius: 14px; color: var(--ink); font-size: .95rem; font-weight: 700; }
.signup-progress .progress-bar { display: block; height: 5px; margin-top: .45rem; border-radius: 99px; background: var(--line); overflow: hidden; }
.signup-progress .progress-bar i { display: block; height: 100%; width: 0; border-radius: 99px; background: var(--deca-blue); transition: width .5s var(--ease); }

/* ---------- Confirmation ---------- */
.done-check { display: block; margin: 0 0 .75rem; }
.done-check circle { fill: none; stroke: #23a37d; stroke-width: 4; stroke-dasharray: 190; stroke-dashoffset: 190; animation: draw .7s .1s forwards ease-out; }
.done-check path { fill: none; stroke: #23a37d; stroke-width: 5; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 50; stroke-dashoffset: 50; animation: draw .45s .65s forwards ease-out; }
@keyframes draw { to { stroke-dashoffset: 0; } }

/* ---------- Narrow screens ---------- */
@media (max-width: 900px) {
  .signup-layout { grid-template-columns: minmax(0, 1fr); grid-template-areas: "head" "form" "aside"; }
  .signup-rail { display: none; }
  .signup-progress { display: block; }
}
@media (max-width: 850px) {
  .hero-facts { margin-top: 1.5rem; }
  /* Stacked layout: the text spans the width, so show the calm left side of the picture behind it. */
  .hero-invite::before { background: linear-gradient(180deg, rgba(0, 40, 100, .3) 0%, rgba(0, 40, 100, .3) 55%, rgba(0, 40, 100, .15) 100%), url("./assets/home-hero.webp") 0% center / cover, var(--deca-blue); }
}
@media (max-width: 700px) {
  .signup-layout { margin-top: -1.25rem; padding-top: 1.25rem; }
  .signup-layout > form.card { padding: 0; }
}
@media (max-width: 600px) {
  .hero-facts { padding: .7rem; gap: .45rem; border-radius: 18px; }
  /* Date tiles stay side by side, with the one-or-both note beside them, so the button stays on the first screen. */
  .date-tiles { display: flex; gap: .5rem; }
  .hero-facts .date-tile { min-width: 4.5rem; }
  .hero-facts > li, .hero-facts > li:first-child, .hero-facts > li:last-child { padding: .55rem .7rem; border-radius: 13px; }
  .hero-facts > li.fact-half { grid-column: 1 / -1; }
  .hero-facts > .fact-dates, .hero-facts > .fact-dates:first-child { padding: .1rem; }
  .hero-facts .date-tile { padding: .35rem .7rem .4rem; border-radius: 12px; }
  .hero-facts .date-tile-day { font-size: 1.25rem; }
  .fact-icon { padding: 6px; border-radius: 9px; }
  .home-closing { text-align: left; }
}
@media (max-width: 380px) {
  .fact-time strong { white-space: normal; }
}
@media (max-width: 440px) {
  #signup-form .segmented { display: flex; width: 100%; }
  #signup-form .seg { flex: 1 1 0; }
  #signup-form .seg label { white-space: normal; text-align: center; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
  .reveal { opacity: 1; transform: none; }
  .done-check circle, .done-check path { stroke-dashoffset: 0; }
  .home-photo img { transform: none; }
}
@media print {
  .signup-layout::before, .hero-invite::before, .home-closing::before { display: none; }
  .signup-rail, .signup-progress { display: none; }
}
@media (forced-colors: active) {
  .hero-facts, .hero-facts > li, .signup-layout .form-section, .signup-rail, .signup-aside, .signup-progress { border: 1px solid CanvasText; background: Canvas; }
  .signup-rail li.done .step-dot { forced-color-adjust: none; background: Highlight; border-color: Highlight; }
  #signup-form .seg input:checked + label { outline: 2px solid Highlight; }
}

/* ---------- Advisor page ---------- */
/* One centered column on the same backdrop as the registration page. The picture stays the size of
   the window, and the panels pass over it. */
.advisor-workspace.advisor-minimal {
  position: relative;
  isolation: isolate;
  clip-path: inset(0 -100vw);
  max-width: 920px;
  margin: -2.25rem auto -5rem;
  padding: 2.25rem 0 5rem;
  gap: 1.25rem;
}
.advisor-workspace.advisor-minimal::before {
  content: ""; position: fixed; inset: 0; z-index: -1;
  background: var(--veil-layer), url("./assets/signup-backdrop.webp") center / cover, var(--wash);
}
.advisor-minimal .advisor-head { padding-top: 1rem; align-items: center; }
.advisor-minimal .advisor-head h1 { max-width: none; margin-bottom: .2rem; }
.advisor-minimal .advisor-head .muted { margin: 0; color: var(--ink); }

/* The same frosted surface as the registration form. */
.advisor-minimal > section.card, .advisor-minimal > details.card {
  padding: clamp(1.25rem, 2.5vw, 2rem);
  border-radius: 20px;
  background: var(--glass);
  border: 1px solid var(--glass-edge);
  box-shadow: var(--glass-shadow);
  -webkit-backdrop-filter: blur(22px) saturate(125%);
  backdrop-filter: blur(22px) saturate(125%);
}
.advisor-minimal .judge-focus { border-radius: 20px; box-shadow: 0 24px 50px -24px rgba(0, 60, 130, .6); }
.advisor-minimal > section > h2, .advisor-minimal > details > summary { font-size: clamp(1.35rem, 2.2vw, 1.6rem); }
.advisor-minimal > details > summary { cursor: pointer; }
.advisor-minimal > details[open] > summary { margin-bottom: .75rem; }

/* The preview banner sits in the same column as everything else. */
.advisor-minimal .view-as-banner { top: calc(var(--header-h) + .5rem); margin: 0; border-radius: 16px; }

/* What we need: three tiles instead of a tall list, so the estimate forms start higher up. */
.advisor-minimal #advisor-checklist > h2 { margin-bottom: .85rem; }
.advisor-minimal .advisor-checklist { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem; }
.advisor-minimal .advisor-checklist li, .advisor-minimal .advisor-checklist li:first-child {
  display: flex; flex-direction: column; align-items: flex-start; gap: .55rem; padding: 1rem;
  border: 1px solid var(--glass-edge); border-radius: 16px; background: var(--glass-tile);
}
.advisor-minimal .advisor-checklist li .button { margin-top: auto; }

/* Recruitment numbers as centered tiles. */
.advisor-minimal .advisor-judge-counts { gap: .75rem; margin-bottom: 1rem; }
.advisor-minimal .advisor-judge-counts > div {
  align-items: center; text-align: center; padding: 1rem .5rem; border: 1px solid var(--glass-edge);
  border-radius: 16px; background: var(--glass-tile);
}

/* Fields and event tables. */
.advisor-minimal input:not([type="checkbox"]):not([type="radio"]), .advisor-minimal select, .advisor-minimal textarea {
  min-height: 46px; border: 1.5px solid var(--control-border); border-radius: 10px; background: var(--paper);
}
.advisor-minimal input:focus-visible { border-color: var(--deca-blue); }
.advisor-minimal .table-wrap { border-radius: 14px; border-color: var(--glass-edge); background: var(--glass-tile); }
.advisor-event-table th:nth-child(n+2), .advisor-event-table td:nth-child(n+2) { text-align: center; }
.advisor-event-table input { text-align: center; }
.advisor-event-table thead th { white-space: normal; line-height: 1.25; vertical-align: bottom; }
.advisor-event-group h3 { margin: 1.25rem 0 .5rem; font-size: 1.15rem; }
.advisor-event-group:first-of-type h3 { margin-top: .5rem; }

@media (max-width: 700px) {
  .advisor-minimal .advisor-checklist { grid-template-columns: minmax(0, 1fr); }
  .advisor-workspace.advisor-minimal { margin-top: -2.25rem; }
}
@media (prefers-reduced-transparency: reduce) {
  .advisor-minimal > section.card, .advisor-minimal > details.card { -webkit-backdrop-filter: none; backdrop-filter: none; }
}

/* Compact top of the page, so the estimate fields are on screen without scrolling. */
.advisor-minimal .judge-focus { padding: 1.1rem clamp(1.25rem, 3vw, 1.75rem); gap: 1.25rem; }
.advisor-minimal .judge-focus h2 { font-size: clamp(1.4rem, 2.4vw, 1.8rem); margin: .1rem 0; }
.advisor-minimal #advisor-checklist { padding: .85rem clamp(1rem, 2vw, 1.25rem); }
.advisor-minimal #advisor-checklist > h2 { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; margin: 0; }
.advisor-minimal .advisor-checklist { gap: .6rem; }
.advisor-minimal .advisor-checklist li, .advisor-minimal .advisor-checklist li:first-child {
  flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .4rem .75rem; padding: .7rem .85rem;
}
.advisor-minimal .advisor-checklist li > div { flex: 1 1 8rem; }
.advisor-minimal .advisor-checklist li p { display: none; }
.advisor-minimal .advisor-checklist li .button { margin-top: 0; }
/* On a phone the next-step banner already points at the same thing, so the estimate fields come sooner. */
@media (max-width: 700px) { .advisor-minimal #advisor-checklist { display: none; } }

/* Event table details. */
.advisor-event-table th, .advisor-event-table td { border-top: 1px solid var(--line-strong); border-bottom: 1px solid var(--line-strong); }
.advisor-event-table thead th { border-top: 0; }
.advisor-event-table .advisor-last-season { color: var(--muted); font-variant-numeric: tabular-nums; }
.advisor-event-table .advisor-computed { color: var(--muted); font-variant-numeric: tabular-nums; }
.advisor-event-table input { width: 4.5rem; }
.advisor-event-table input::placeholder { color: color-mix(in srgb, var(--muted) 60%, transparent); }
.advisor-minimal .advisor-save-status { margin: 0; min-height: 1.4em; }
.advisor-event-table tbody tr:last-child > * { border-bottom: 0; }

/* Last year's count is reference, so it gets its own tinted column with a divider, apart from the fields to fill in. */
.advisor-event-table .advisor-last-head, .advisor-event-table .advisor-last-season {
  background: color-mix(in srgb, var(--blue-wash) 55%, transparent);
  border-left: 1px solid var(--blue-line); border-right: 1px solid var(--blue-line);
}
.advisor-head-main, .advisor-head-unit { display: block; }
.advisor-head-main { color: var(--ink); }
.advisor-head-unit { margin-top: .1rem; font-size: .72rem; font-weight: 500; letter-spacing: 0; text-transform: none; color: var(--muted); }

/* The column names stay under the site header while a long table scrolls. A clipped (not scrolling) wrapper keeps sticky working. */
.advisor-minimal .advisor-event-wrap { overflow: clip; }
.advisor-event-table thead th { position: sticky; top: var(--header-h); z-index: 2; background: var(--paper); box-shadow: 0 1px 0 var(--line-strong); }
.advisor-event-table thead th.advisor-last-head { background: color-mix(in srgb, var(--blue-wash) 55%, var(--paper)); }

/* Email drafts and the advisor directory. */
.advisor-minimal .advisor-message { border: 1px solid var(--glass-edge); border-radius: 16px; padding: .9rem 1rem; background: var(--glass-tile); }
.advisor-minimal .advisor-message > summary { font-weight: 700; cursor: pointer; }
.advisor-minimal .advisor-message[open] > summary { margin-bottom: .5rem; }
.advisor-minimal .advisor-message textarea { width: 100%; }
.advisor-directory-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr)); gap: .9rem; margin-top: 1rem; align-items: start; }
.advisor-directory-group { padding: .85rem 1rem 1rem; border: 1px solid var(--line-strong); border-radius: 14px; }
.advisor-directory-group[hidden] { display: none; }
.advisor-directory-group h3 { margin: 0 0 .5rem; padding-bottom: .5rem; border-bottom: 2px solid var(--blue-line); font-size: 1.05rem; }
.advisor-directory-list { list-style: none; margin: 0; padding: 0; }
.advisor-directory-list li { display: grid; gap: .1rem; padding: .6rem 0; border-top: 1px solid var(--line); }
.advisor-directory-list li:first-child { border-top: 0; padding-top: 0; }
.advisor-directory-list li[hidden] { display: none; }
.advisor-directory-contact { display: grid; gap: .1rem; overflow-wrap: anywhere; }

/* ---------- Coordinator area ---------- */
/* The same look as the advisor page, calmer: the backdrop sits behind a heavier veil, and panels are nearly opaque so tables and forms
   stay easy to read. */
:root { --admin-veil: linear-gradient(transparent, transparent); --admin-panel: var(--paper); }
@supports (background: color-mix(in srgb, red 50%, transparent)) {
  :root {
    --admin-veil: linear-gradient(color-mix(in srgb, var(--wash) 72%, transparent), color-mix(in srgb, var(--wash) 72%, transparent));
    --admin-panel: color-mix(in srgb, var(--paper) 93%, transparent);
  }
}
@media (prefers-color-scheme: dark) {
  @supports (background: color-mix(in srgb, red 50%, transparent)) {
    :root { --admin-veil: linear-gradient(color-mix(in srgb, var(--wash) 88%, transparent), color-mix(in srgb, var(--wash) 88%, transparent)); }
  }
}

/* The header runs the full width, so the logo lines up with the sidebar below it. */
body:has(.admin-shell) .site-header { padding-inline: 1.25rem; }

.admin-shell { position: relative; isolation: isolate; border-top: 0; background: none; }
.admin-shell::before {
  content: ""; position: fixed; inset: 0; z-index: -1;
  background: var(--admin-veil), url("./assets/signup-backdrop.webp") center / cover, var(--wash);
}
.admin-main { background: none; padding: 1.75rem clamp(1.25rem, 3vw, 2.75rem) 4rem; }
/* One centered column of content, so a wide window does not leave the page hugging the sidebar. */
.admin-main > * { max-width: 1320px; margin-inline: auto; }
.admin-main > .page-head { align-items: flex-start; margin-bottom: 1.25rem; }
.admin-main > .page-head h1 { max-width: none; font-size: clamp(1.7rem, 2.6vw, 2.3rem); margin-bottom: .2rem; }

/* Sidebar: frosted, always in view on a wide window, with rounded links. */
.admin-sidebar {
  background: var(--glass); border-right: 1px solid var(--glass-edge);
  -webkit-backdrop-filter: blur(22px) saturate(125%); backdrop-filter: blur(22px) saturate(125%);
}
@media (min-width: 981px) {
  .admin-sidebar { position: sticky; top: var(--header-h); align-self: start; height: calc(100dvh - var(--header-h)); overflow-y: auto; }
}
.sidebar-link { width: calc(100% - 1rem); margin: 1px .5rem; padding-inline: .75rem; border-left: 0; border-radius: 10px; }
.sidebar-link.active { background: var(--blue-wash); box-shadow: inset 0 0 0 1px var(--blue-line); }
.sidebar-group h2 { padding-inline: 1.25rem; }
.sidebar-brand { padding-inline: 1.25rem; }
.sidebar-foot { padding-inline: 1.25rem; }

/* Panels. */
.admin-main .card {
  background: var(--admin-panel); border: 1px solid var(--glass-edge); border-radius: 18px;
  box-shadow: 0 18px 40px -30px rgba(0, 40, 90, .55);
}
.admin-main .card .card { background: var(--glass-tile); border-radius: 14px; box-shadow: none; }
.admin-main .card > h2:first-child { font-size: clamp(1.3rem, 2vw, 1.55rem); }
.admin-main .table-wrap { border-radius: 14px; border-color: var(--line); background: var(--paper); }
.admin-main .notice { border-radius: 12px; }

/* Summary tiles. */
.glance { border: 1px solid var(--glass-edge); border-radius: 16px; background: var(--glass-tile); transition: transform .25s var(--ease), box-shadow .25s var(--ease); }
.glance:hover { transform: translateY(-2px); box-shadow: 0 12px 24px -14px rgba(0, 60, 130, .5); }

/* Buttons and fields, matching the other pages. */
.admin-main .button, .admin-main .button-row button { border-radius: 10px; }
.admin-main input:not([type="checkbox"]):not([type="radio"]):not([type="range"]), .admin-main select, .admin-main textarea {
  border: 1.5px solid var(--control-border); border-radius: 10px; background: var(--paper);
}
.admin-main input:focus-visible, .admin-main select:focus-visible, .admin-main textarea:focus-visible { border-color: var(--deca-blue); }
@media (prefers-reduced-transparency: reduce) {
  .admin-sidebar { -webkit-backdrop-filter: none; backdrop-filter: none; }
  :root { --admin-panel: var(--paper); }
}
@media (prefers-reduced-motion: reduce) { .glance { transition: none; } .glance:hover { transform: none; } }
.glance { border-color: var(--line); }
.admin-sidebar { scrollbar-width: thin; scrollbar-color: var(--line-strong) transparent; }
@media (max-width: 980px) { .admin-sidebar { scrollbar-width: none; } }

/* ---------- Coordinator overview ---------- */
/* What needs attention beside the tasks and recent emails, so the page needs less scrolling. */
.overview-columns { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 1rem; align-items: start; }
.overview-aside { min-width: 0; }
@media (max-width: 1100px) { .overview-columns { grid-template-columns: minmax(0, 1fr); } }

/* Each item is one compact row: the message and what to do on the left, one button on the right. */
.overview-attention h2 { display: flex; align-items: center; gap: .6rem; }
.overview-attention .coverage-alerts { list-style: none; margin: .5rem 0 0; padding: 0; }
.overview-attention .coverage-alerts li {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 1rem; row-gap: .1rem; align-items: center;
  margin: 0; padding: .8rem 0; border-top: 1px solid var(--line);
}
.overview-attention .coverage-alerts li > p { grid-column: 1; margin: 0; }
.overview-attention .coverage-alerts li > p:first-child { font-weight: 600; }
.overview-attention .coverage-alerts li > button { grid-column: 2; grid-row: 1 / span 2; align-self: center; white-space: nowrap; }
.attention-more { margin-top: .25rem; border-top: 1px solid var(--line); }
.attention-more > summary { padding: .75rem 0; font-weight: 600; cursor: pointer; color: var(--blue-deep); }
.attention-more .coverage-alerts { margin-top: 0; }
@media (max-width: 560px) {
  .overview-attention .coverage-alerts li { grid-template-columns: minmax(0, 1fr); }
  .overview-attention .coverage-alerts li > button { grid-column: 1; grid-row: auto; justify-self: start; margin-top: .4rem; }
}

/* Everything in a section is spaced the same, so a card never touches the one below it. */
.admin-section > * + * { margin-top: 1rem; }
/* A group of the same problem on several events: one row that opens to list them. */
.overview-attention .coverage-alerts li.attention-group > details { grid-column: 1; }
.overview-attention .attention-group > details > summary { font-weight: 600; cursor: pointer; }
.attention-sublist { list-style: none; margin: .5rem 0 0; padding: 0 0 0 .25rem; display: grid; gap: .3rem; font-size: .92rem; color: var(--muted); }
.overview-attention .coverage-alerts li.attention-group .attention-sublist li { display: block; padding: 0; border: 0; }
/* The six summary tiles share one row when there is room. */
.admin-main .glance-grid { grid-template-columns: repeat(auto-fit, minmax(158px, 1fr)); }

/* Student estimate: a small number box and its button on one line, aligned along the bottom, with the note below. */
.advisor-estimate-form { display: grid; gap: .6rem; }
.advisor-estimate-row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .75rem 1rem; }
.advisor-estimate-row .field { flex: 0 0 auto; margin: 0; }
.advisor-minimal .advisor-estimate-row input { width: 7.5rem; text-align: center; font-size: 1.15rem; }
.advisor-estimate-row .button { min-height: 46px; padding-inline: 1.5rem; }
.advisor-estimate-form > .fine { margin: 0; max-width: 60ch; }

/* The age requirement, quietly, under the registration heading. */
.signup-age-note { margin: .6rem 0 0; color: var(--ink); font-size: .95rem; }

/* ---------- Resources (advisor page and coordinator editor) ---------- */
.advisor-workspace.advisor-minimal.advisor-resources { max-width: 1040px; }
.advisor-minimal .advisor-head .button-row { margin: 0; }
.resource-card { padding: clamp(1rem, 2.2vw, 1.75rem); }

/* Tabs: one short panel at a time instead of one long page. */
.resource-tabs { display: flex; flex-wrap: wrap; gap: .4rem; margin: 1rem 0 1.25rem; padding: .3rem; border: 1.5px solid var(--control-border); border-radius: 14px; width: fit-content; max-width: 100%; background: var(--glass-tile); }
.resource-tabs button { min-height: 40px; padding: .4rem 1rem; border: 0; border-radius: 10px; background: transparent; color: var(--ink); font: inherit; font-weight: 600; cursor: pointer; }
.resource-tabs button:hover { background: var(--blue-wash); }
.resource-tabs button[aria-selected="true"] { background: var(--selected-fill); color: #fff; }
.resource-tabs button:focus-visible { outline: 3px solid var(--deca-blue); outline-offset: 2px; }
.resource-panel[hidden] { display: none; }
.resource-panel h2, .resource-panel h3 { margin: 1.4rem 0 .5rem; font-size: 1.15rem; }
.resource-panel > p:first-child { margin-top: 0; }

/* Key dates. */
.resource-dates { list-style: none; margin: 0; padding: 0; }
.resource-date { display: grid; grid-template-columns: 9.5rem minmax(0, 1fr) auto; gap: .25rem 1rem; align-items: baseline; padding: .7rem 0; border-top: 1px solid var(--line); }
.resource-date:first-child { border-top: 0; }
.resource-date-when { font-weight: 700; font-variant-numeric: tabular-nums; }
.resource-date-what { display: grid; gap: .1rem; min-width: 0; overflow-wrap: anywhere; }
.resource-kind-deadline .resource-date-when { color: var(--blue-deep); }
.resource-kind-deadline .badge { background: var(--amber-wash); color: var(--ink); }
.resource-kind-optional .resource-date-what strong { font-weight: 600; }
.resource-earlier { margin-top: 1rem; border-top: 1px solid var(--line); }
.resource-earlier > summary { padding: .75rem 0; font-weight: 600; cursor: pointer; color: var(--blue-deep); }
.resource-earlier .resource-date { opacity: .8; }

/* The chapter page's Coming up card. */
.advisor-coming-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; }
.advisor-coming-head h2 { margin: 0; font-size: clamp(1.2rem, 2vw, 1.4rem); }
.advisor-coming-up ul { list-style: none; margin: .6rem 0 0; padding: 0; display: grid; gap: .35rem; }
.advisor-coming-up li { display: grid; grid-template-columns: 9.5rem minmax(0, 1fr); gap: .75rem; }
.advisor-coming-date { font-weight: 700; font-variant-numeric: tabular-nums; }

/* Events, days, and last year's counts. */
.resource-note { margin: 1rem 0 .5rem; }
.resource-count-head { margin: 0 0 .75rem; }
.resource-days { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); gap: 1rem 1.5rem; align-items: start; }
.resource-day h2 { display: flex; flex-wrap: wrap; align-items: baseline; gap: .15rem .6rem; margin-top: 0; }
.resource-day h3 { margin: 1rem 0 .25rem; font-size: .95rem; color: var(--muted); }
.resource-event-list { list-style: none; margin: 0; padding: 0; }
.resource-event-list li { display: flex; justify-content: space-between; gap: 1rem; padding: .35rem 0; border-top: 1px solid var(--line); font-size: .95rem; }
.resource-event-list li:first-child { border-top: 0; }
.resource-count { flex: none; min-width: 2.2rem; text-align: right; font-variant-numeric: tabular-nums; color: var(--muted); }
.resource-limits table { border-collapse: collapse; margin-top: .5rem; }
.resource-limits th, .resource-limits td { white-space: normal; padding: .4rem 1.5rem .4rem 0; text-align: left; border-top: 1px solid var(--line); }
.resource-limits thead th { border-top: 0; font-size: .85rem; color: var(--muted); }

/* Costs and info, links. */
.resource-info { display: grid; gap: .6rem; }
.resource-section { border: 1px solid var(--line); border-radius: 14px; padding: .25rem 1rem; background: var(--glass-tile); }
.resource-section > summary { padding: .75rem 0; font-weight: 700; cursor: pointer; font-size: 1.05rem; }
.resource-section[open] > summary { border-bottom: 1px solid var(--line); margin-bottom: .5rem; }
.resource-section .judge-guide-section { padding-bottom: .5rem; }
.resource-links { list-style: none; margin: 0; padding: 0; display: grid; }
.resource-links li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; padding: .85rem 0; border-top: 1px solid var(--line); }
.resource-links li:first-child { border-top: 0; }
.resource-links li > div { display: grid; gap: .15rem; min-width: 0; flex: 1 1 18rem; }

/* Coordinator editor rows. */
.resource-row { display: grid; gap: .5rem; align-items: center; padding: .4rem 0; }
.resource-row-dates { grid-template-columns: 9.5rem 9.5rem minmax(10rem, 2fr) 8.5rem minmax(8rem, 2fr) minmax(8rem, 1.2fr) 5rem 10.5rem; }
.resource-row-limits { grid-template-columns: 8rem 8rem 10rem 10.5rem; }
.resource-row-links { grid-template-columns: minmax(8rem, 1.3fr) minmax(8rem, 2fr) minmax(8rem, 2fr) 5rem 15rem; }
.resource-row-head { font-size: .8rem; font-weight: 700; color: var(--muted); padding-bottom: 0; }
.resource-row .button-row { margin: 0; flex-wrap: nowrap; }
.resource-row input:not([type="checkbox"]), .resource-row select { width: 100%; min-width: 0; }
.resource-check { display: flex; align-items: center; gap: .3rem; font-size: .9rem; white-space: nowrap; }
.resource-day-group { margin-top: 1.25rem; }
.resource-day-group-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; }
.resource-day-group-head h3 { margin: 0; }
.resource-event-days { list-style: none; margin: .5rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(320px, 100%), 1fr)); gap: .4rem 1.5rem; }
.resource-event-days li { display: grid; grid-template-columns: minmax(0, 1fr) 11rem; gap: .5rem; align-items: center; }
.resource-admin-item .page-head { margin-bottom: .5rem; }
.resource-admin-item h3 { margin: 0 .5rem 0 0; display: inline; }

@media (max-width: 900px) {
  .resource-row-head { display: none; }
  .resource-row-dates, .resource-row-links { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); padding: .85rem 0; border-top: 1px solid var(--line); }
  .resource-row-dates > input[name="title"], .resource-row-dates > input[name="details"], .resource-row-dates > input[name="linkUrl"],
  .resource-row-links > input, .resource-row .button-row { grid-column: 1 / -1; }
  .resource-row-limits { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .resource-row-limits .button-row { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
  .resource-date { grid-template-columns: minmax(0, 1fr) auto; }
  .resource-date-what { grid-column: 1 / -1; grid-row: 2; }
  .advisor-coming-up li { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .resource-event-days li { grid-template-columns: minmax(0, 1fr); }
  .resource-tabs { width: 100%; }
  .resource-tabs button { flex: 1 1 auto; }
}

/* ---------- Sign-in, judge page, How to judge, and check-in ---------- */
/* The same backdrop as the registration form, behind every page that is not already on it. */
main:has(> .auth-shell, > .judge-workspace, > .judge-guide, > .checkin-only) { position: relative; isolation: isolate; }
main:has(> .auth-shell, > .judge-workspace, > .judge-guide, > .checkin-only)::before {
  content: ""; position: fixed; inset: 0; z-index: -1;
  background: var(--veil-layer), url("./assets/signup-backdrop.webp") center / cover, var(--wash);
}

/* The sign-in cards, check-in states, and the thank-you page: one frosted card. */
.auth-shell.card {
  max-width: 540px; padding: clamp(1.5rem, 4vw, 2.5rem); border-radius: 22px;
  background: var(--glass); border: 1px solid var(--glass-edge); box-shadow: var(--glass-shadow);
  -webkit-backdrop-filter: blur(22px) saturate(125%); backdrop-filter: blur(22px) saturate(125%);
}
.auth-shell h1, .auth-shell h2 { font-size: clamp(1.6rem, 3vw, 2rem); }
.auth-shell h1 { color: var(--ink); font-weight: 750; letter-spacing: -.025em; margin-bottom: .75rem; }

/* The judge page and How to judge: the advisor page's column and panels. */
.judge-workspace, .judge-guide { max-width: 1040px; margin-inline: auto; }
.judge-guide { max-width: 880px; }
.judge-workspace .judge-head { border-bottom: 0; padding-top: .5rem; }
.judge-workspace .judge-head .lead, .judge-guide .page-head .lead { color: var(--ink); }
.judge-workspace .card, .judge-guide .card {
  padding: clamp(1.25rem, 2.5vw, 2rem); border-radius: 20px;
  background: var(--glass); border: 1px solid var(--glass-edge); box-shadow: var(--glass-shadow);
  -webkit-backdrop-filter: blur(22px) saturate(125%); backdrop-filter: blur(22px) saturate(125%);
}
.judge-workspace .judge-focus { border-radius: 20px; box-shadow: 0 24px 50px -24px rgba(0, 60, 130, .6); }
.judge-workspace .card .card, .judge-layout .day-card {
  border-radius: 14px; background: var(--glass-tile); border: 1px solid var(--line); box-shadow: none;
  -webkit-backdrop-filter: none; backdrop-filter: none;
}
.judge-guide-contents ol { margin-bottom: 0; }

/* Fields and buttons on these pages match the registration form. */
.auth-shell input:not([type="checkbox"]):not([type="radio"]), .auth-shell select,
.judge-workspace input:not([type="checkbox"]):not([type="radio"]), .judge-workspace select, .judge-workspace textarea,
.checkin-only input:not([type="checkbox"]):not([type="radio"]), .checkin-only select {
  min-height: 46px; border: 1.5px solid var(--control-border); border-radius: 10px; background: var(--paper);
}
.auth-shell input:focus-visible, .judge-workspace input:focus-visible, .judge-workspace select:focus-visible,
.judge-workspace textarea:focus-visible, .checkin-only input:focus-visible { border-color: var(--deca-blue); }
.auth-shell .button, .judge-workspace .button, .judge-guide .button, .checkin-only .button { border-radius: 12px; }

/* Check-in volunteers use the coordinator panels: nearly opaque, so names and codes stay easy to read. */
.checkin-only { max-width: 1100px; margin-inline: auto; }
.checkin-only .card {
  background: var(--admin-panel); border: 1px solid var(--glass-edge); border-radius: 18px;
  box-shadow: 0 18px 40px -30px rgba(0, 40, 90, .55);
}
.checkin-only .card .card { background: var(--glass-tile); border-radius: 14px; box-shadow: none; }

@media (prefers-reduced-transparency: reduce) {
  .auth-shell.card, .judge-workspace .card, .judge-guide .card { -webkit-backdrop-filter: none; backdrop-filter: none; }
}
.resource-day h3.resource-group-head { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }
.resource-count-label { flex: none; font-weight: 600; font-size: .85rem; }

/* Which day an event runs: a summary above the estimate form, a chip on each event, and a line under each day on Resources. */
.advisor-day-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: .75rem; margin: .75rem 0 1rem; }
.advisor-day-summary > div { display: grid; gap: .2rem; padding: .7rem .9rem; border: 1px solid var(--line-strong); border-radius: 12px; background: color-mix(in srgb, var(--surface, transparent) 60%, transparent); }
.advisor-day-summary span { color: var(--muted); font-size: .92rem; }
.advisor-day-chip { display: inline-block; margin-top: .2rem; padding: .05rem .5rem; border: 1px solid var(--line-strong); border-radius: 999px; font-size: .8rem; font-weight: 600; color: var(--muted); white-space: nowrap; }
.advisor-event-table th[scope="row"] .advisor-day-chip { display: block; width: fit-content; }
.resource-day-kinds { margin: -.25rem 0 .5rem; color: var(--muted); font-size: .92rem; }

/* The resources box on the chapter page. */
.advisor-resource-list { list-style: none; margin: .75rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); gap: .6rem; }
.advisor-resource-list a { display: grid; gap: .15rem; height: 100%; padding: .7rem .9rem; border: 1px solid var(--line-strong); border-radius: 12px; color: inherit; text-decoration: none; }
.advisor-resource-list a:hover { border-color: var(--accent, currentColor); }
.advisor-resource-list a strong { color: var(--accent-strong, var(--accent, inherit)); text-decoration: underline; text-underline-offset: 3px; }
.advisor-resource-list a span { color: var(--muted); font-size: .92rem; }

/* Judge recruitment leads the page: the count, what is left, and the link on one row, a thin
   progress bar, then the judges in a compact grid. Tighter card padding and gaps throughout. */
.advisor-workspace.advisor-minimal { gap: .9rem; }
.advisor-minimal > section.card, .advisor-minimal > details.card { padding: clamp(1rem, 2vw, 1.5rem); }
.advisor-minimal > section > h2 { margin-bottom: .4rem; }
.advisor-minimal > details > summary { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .75rem; font-size: clamp(1.15rem, 1.8vw, 1.3rem); }
.advisor-minimal > details > summary .fine { font-size: .9rem; font-weight: 400; }
.advisor-recruit-top { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: .75rem 1.5rem; }
.advisor-recruit-top h2 { margin: .1rem 0 .2rem; font-size: clamp(1.5rem, 2.6vw, 1.95rem); }
.advisor-recruit-top .eyebrow { margin: 0; }
.advisor-recruit-need { margin: 0; font-weight: 600; color: var(--ink); }
.advisor-recruit-meter { height: 8px; margin: .9rem 0 .6rem; border-radius: 999px; background: color-mix(in srgb, var(--deca-blue) 14%, transparent); overflow: hidden; }
.advisor-recruit-meter i { display: block; height: 100%; width: 0; border-radius: inherit; background: var(--deca-blue); }
.advisor-recruit > .fine { margin: 0 0 .75rem; }
.advisor-judge-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr)); gap: .5rem; }
.advisor-judge-grid li { display: flex; flex-direction: column; padding: .55rem .75rem; border: 1px solid var(--glass-edge); border-radius: 12px; background: var(--glass-tile); }
.advisor-minimal .advisor-message { padding: .55rem 0; border-top: 1px solid var(--glass-edge); }
.advisor-minimal .advisor-message:first-of-type { margin-top: .5rem; }
.advisor-minimal .advisor-message > summary { cursor: pointer; font-weight: 600; }
.advisor-students-table td { vertical-align: top; }
.advisor-students-table td div + div { margin-top: .3rem; }
.advisor-questions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; }
.advisor-questions h2 { margin: 0; }

/* Card heading with its actions on the right, used by the recruitment and registration cards. */
.advisor-card-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .75rem 1.5rem; }
.advisor-card-head h2 { margin: .1rem 0 0; font-size: clamp(1.45rem, 2.4vw, 1.85rem); }
.advisor-card-head .eyebrow { margin: 0; }
.advisor-card-head .button-row { flex: none; flex-wrap: nowrap; }
.advisor-card-head > .fine { margin: 0; }
.advisor-recruit .advisor-recruit-meter { margin: .85rem 0 .5rem; }
.advisor-recruit .advisor-recruit-need { margin: 0 0 .15rem; }
.advisor-day-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: .6rem; margin: .9rem 0 .5rem; }
.advisor-day-tiles > div { display: flex; flex-direction: column; padding: .7rem .9rem; border-radius: 14px; background: color-mix(in srgb, var(--deca-blue) 8%, transparent); }
.advisor-day-tiles strong { font-size: 1.6rem; line-height: 1.1; color: var(--blue-deep, var(--deca-blue)); }
.advisor-day-tiles span { font-size: .9rem; }
.advisor-day-events { padding: .55rem 0; border-top: 1px solid var(--glass-edge); }
.advisor-day-events > summary { cursor: pointer; }
.advisor-day-events[open] > summary { margin-bottom: .5rem; }
#advisor-students-card > .fine:last-child { margin: .5rem 0 0; }
