/* MAKE THE `hidden` ATTRIBUTE ACTUALLY HIDE THINGS.
 *
 * No stylesheet on this site defined this, so the UA default was being beaten by
 * ordinary author rules — `.consult__field { display: flex }` and
 * `.filters { display: flex }` both win over `[hidden]` at equal specificity
 * simply by being author styles. Three components shipped `hidden` and rendered
 * anyway:
 *
 *   - the students-only "Which describes you?" question was VISIBLE on the
 *     Expert track of the €500 quote form, i.e. a stranger asking for a
 *     consultation quote was asked whether they are a student
 *   - /blog/'s filter strip rendered fully styled and completely INERT for
 *     no-JS visitors and AI crawlers — the exact outcome blog/index.njk:23-27
 *     and blog-filter.js:9-13 both claim to have avoided
 *   - .post-grid ignored its own empty-state hide (blog-filter.js:72)
 *
 * WHY THIS FILE AND NOT site.css. consent.css is the only stylesheet present on
 * every page group: base.njk pages, the homepage (which loads no site.css at
 * all, only a 448-line inline <style>), and the 18 passthrough posts (which load
 * only blog.css). postbuild-html.mjs injects it universally via CONSENT_SNIPPET,
 * and verifyAll already asserts that delivery on all 500 non-redirect pages — so
 * one rule here inherits a proven, gated distribution path.
 *
 * `!important` because the whole point is to beat author `display` declarations
 * that are more specific than a bare attribute selector.
 *
 * Nothing depended on the broken behaviour: every reveal path uses
 * removeAttribute('hidden') rather than an inline style, and .promo__live,
 * .empty-state and .post-card were already hidden correctly because no author
 * rule gives them a display value.
 */
[hidden] {
  display: none !important;
}

/* Consent banner — dark glass, bottom-fixed, non-blocking. */
.consent-banner {
  position: fixed;
  left: 16px;
  right: 16px;
  bottom: 16px;
  z-index: 9999;
  max-width: 680px;
  margin: 0 auto;
  background: rgba(15, 20, 35, 0.92);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 16px;
  padding: 16px 20px;
  backdrop-filter: blur(14px);
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  align-items: center;
  justify-content: space-between;
  font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
}
.consent-banner__text {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.5;
  color: rgba(255, 255, 255, 0.75);
  flex: 1 1 320px;
}
.consent-banner__text a { color: #6fd6f2; }
.consent-banner__actions { display: flex; gap: 10px; }
.consent-banner__btn {
  font: inherit;
  font-size: 13.5px;
  font-weight: 600;
  border-radius: 12px;
  padding: 9px 18px;
  cursor: pointer;
  border: 1px solid rgba(255, 255, 255, 0.12);
  background: rgba(255, 255, 255, 0.06);
  color: rgba(255, 255, 255, 0.85);
  min-height: 38px;
}
.consent-banner__btn--accept {
  background: rgba(255, 255, 255, 0.92);
  color: #0A0F1A;
  border-color: transparent;
}
.consent-banner__btn:hover { filter: brightness(1.1); }
