:root{
  --lp:#113a5c;--lp-d:#0b2a44;--lp-m:#1c5580;--lp-t:rgba(17,58,92,.07);
  --lo:#d64545;--lo-h:#b93636;--lo-l:rgba(214,69,69,.13);--lo-p:rgba(214,69,69,.06);
  --bg:#f3f6fa;--wh:#fff;--g100:#e8eef5;--g200:#d3dfeb;--g400:#8098b2;--g600:#4f6478;
  /* Pillar accents as TEXT. Names are derived from the pillar id in js/08 and
     must not be hand-typed here. Light values are identical to PILLARS[].accent
     so this theme is unchanged; the dark block redefines them. Ratios measured
     against dark --wh #132030, the surface the small 11-16px uses sit on. */
  --pillar-text-framework:#6d28d9;   /* 7.10 on --wh · 6.55 on --bg */
  --pillar-text-care:#0e7490;        /* 5.36 on --wh · 4.94 on --bg */
  --pillar-text-leadership:#a16207;  /* 4.92 on --wh · 4.54 on --bg */
  --tx:#101c28;--txs:#3d5062;--txm:#566b80;--bdr:#d8e2ec;/* --txm darkened from #8098b2 to meet WCAG AA (~5.2:1) on --bg; dark mode overrides it below */
  --ok:#16a34a;--ok-l:#dcfce7;--er:#dc2626;--er-l:#fee2e2;
  --wa:#d97706;--wa-l:#fef3c7;--inf:#2563eb;--inf-l:#dbeafe;
  /* Badge text. --ok/--wa/--er are tuned to read as icons and borders against the
     page, not as small text on their own tint: --wa on --wa-l is only 2.9:1. These
     are the same hues darkened to clear WCAG AA (4.5:1) for the 0.68rem bold text
     used on status pills. Overridden for dark mode, where the tints are .18 alpha. */
  --ok-bt:#166534;--wa-bt:#92400e;--er-bt:#991b1b;--inf-bt:#1d4ed8;
  /* Violet joins them. It is not a status colour, which is exactly why it was
     missed: #7c3aed is a DATA colour — track2's accent, doubling as the
     supervisor role — and nobody audits a data colour as a status pill. On its
     own 12% tint it measures 5.44 light but 2.77 dark. */
  --vi-bt:#6d28d9;
  /* --lo is the same story, one token later, and it was missed because it is a
     BRAND colour rather than a status one — nobody thinks of the accent as a
     status pill. It is used as small bold text in about thirty rules and clears
     4.5:1 on none of the surfaces it lands on: 4.38 on white, 4.04 on --bg,
     3.75 on --g100, and 3.18-3.67 once its own --lo-l tint is under it (the
     .rel-chip case, 969 elements). --lo itself is untouched — it is the accent,
     it drives The Flow, and it is correct as a fill and a border.
     --lo-btn / --lo-btn-tx are the solid crimson button: white on --lo is 4.38,
     and in high-contrast dark --lo becomes a pale salmon where white drops to
     1.91 and the text has to go dark instead. */
  --lo-bt:#b22727;      /* 6.54 white · 6.03 --bg · 4.74 on --lo-l over --g100 */
  --lo-btn:#d33939;--lo-btn-tx:#fff;   /* white on the fill: 4.76 */
  --ok-btn:#12843c;                    /* white on --ok itself is only 3.30 */
  --fd:'Playfair Display',Georgia,serif;--fb:'Nunito',system-ui,sans-serif;--heading:var(--lp);
  --r:10px;--rs:6px;--rl:16px;
  --sh:0 2px 12px rgba(17,58,92,.09);--shm:0 4px 20px rgba(17,58,92,.13);--shl:0 8px 32px rgba(17,58,92,.17);
  /* Z-INDEX SCALE — single source of truth. Each layer leaves room above
     for related elements (e.g. a popover sitting on top of its modal).
     Use these custom properties for new components instead of raw numbers. */
  --z-base:1;
  --z-sticky:1040;       /* main nav, sticky tab bars */
  --z-dropdown:1100;     /* nav submenu */
  --z-fab:2000;          /* floating action elements */
  --z-mob-nav:9000;      /* bottom mobile nav */
  --z-a11y:9998;         /* a11y settings widget */
  --z-toast:9999;        /* toast notifications */
  --z-modal:10000;       /* modal overlays, level-up, search */
  --z-modal-popover:10001; /* popovers/menus inside a modal */
  --z-boot-error:99999;  /* last-resort boot failure dialog */
}
*,*::before,*::after{box-sizing:border-box}
/* color-scheme tells the browser what mode native UI (form controls, scrollbars,
   the open dropdown list of <select> elements) should match. Default to light;
   the body.liq-dark rule below remaps to dark when the in-app dark-mode toggle
   is on. Without this, native UI follows the OS preference, which can look
   inconsistent with the app's theme — and on Chrome with Auto Dark Mode for
   Web Contents enabled, the browser may aggressively re-process page colors
   on user interaction, producing the "theme flips on dropdown selection"
   perception. */
:root{color-scheme:light}
body{font-family:var(--fb);background:var(--bg);color:var(--tx);font-size:1rem;line-height:1.65}
h1,h2,h3,h4,h5{font-family:var(--fd);line-height:1.22}
a{color:var(--lo-bt);text-decoration:none}a:hover{color:var(--lo-h)}
.liq-page{display:none}.liq-page.active{display:block}

/* NAV */
.lnav{background:var(--lp);border-bottom:3px solid var(--lo);position:sticky;top:0;z-index:var(--z-sticky)}
.lnav .navbar-brand{font-family:var(--fd);font-size:1.2rem;color:#fff!important;gap:.6rem;display:flex;align-items:center}
.lbmark{background:var(--lo-btn);color:var(--lo-btn-tx);border-radius:var(--rs);width:2.1rem;height:2.1rem;display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:800;font-family:var(--fd);flex-shrink:0}
.lnav .nav-link{color:rgba(255,255,255,.70)!important;font-weight:700;font-size:.88rem;padding:.5rem .9rem!important;border-radius:var(--rs);transition:all .2s}
.lnav .nav-link:hover,.lnav .nav-link.active{color:#fff!important;background:rgba(214,69,69,.18)}
.lnav .dropdown-menu{background:var(--lp-m);border:1px solid rgba(255,255,255,.12);border-radius:var(--r);box-shadow:var(--shl);padding:.4rem}.dd-tier-item{position:relative}.dd-tier-item>.dropdown-item{display:flex;align-items:center;justify-content:space-between}.dd-tier-item>.dropdown-item .dd-tier-arrow{font-size:.65rem;opacity:.55;margin-left:.4rem;transition:transform .15s}.dd-submenu{display:none;position:absolute;left:100%;top:-4px;min-width:260px;background:var(--lp-m);border:1px solid rgba(255,255,255,.12);border-radius:var(--r);box-shadow:var(--shl);padding:.4rem;z-index:var(--z-dropdown)}.dd-tier-item:hover>.dd-submenu{display:block}.dd-tier-item:hover>.dropdown-item{background:rgba(255,255,255,.1);color:#fff}.dd-tier-item:hover>.dropdown-item .dd-tier-arrow{transform:rotate(0deg)}.dd-submenu-header{font-size:.6rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.4);padding:.4rem .9rem .25rem}.dd-submenu .dropdown-item{font-size:.82rem}.dd-pillar-header{font-size:.62rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.55);padding:.45rem .9rem .35rem;display:flex;align-items:center;list-style:none}
.lnav .dropdown-item{color:rgba(255,255,255,.75);font-size:.85rem;font-weight:600;border-radius:var(--rs);padding:.55rem .9rem;display:flex;align-items:center;gap:.6rem;transition:all .2s}
.lnav .dropdown-item:hover{background:rgba(214,69,69,.2);color:#fff}
.lnav .dropdown-item .di{color:var(--lo);width:1.2rem;text-align:center;flex-shrink:0}
.navbar-toggler{border-color:rgba(255,255,255,.3)}.navbar-toggler-icon{filter:invert(1)}
/* The desktop nav appears at Bootstrap's lg breakpoint (992px) but its content
   does not fit until roughly 1040px, so every page in the product scrolled
   sideways in that band — 17px at 1000, 5px at 1024, clean by 1050. Pre-dates
   the Academy redesign and was identical on home, tools and profile; found by
   the Academy sweep because that asserts page-level overflow. The XP readout is
   the compressible part, so it gives up its progress bar until there is room. */
@media(min-width:992px) and (max-width:1049px){
  .nav-xp-bar{display:none}
  .nav-xp{padding:.3rem .55rem;gap:.35rem}
}
.nav-xp{display:flex;align-items:center;gap:.5rem;background:rgba(255,255,255,.08);border-radius:2rem;padding:.3rem .7rem;cursor:pointer;min-width:0}
.nav-xp:hover{background:rgba(255,255,255,.14)}
.nav-xp-bar{width:60px;height:5px;background:rgba(255,255,255,.15);border-radius:99px;overflow:hidden}
.nav-xp-fill{height:100%;background:var(--lo);border-radius:99px;transition:width .6s ease}
.nav-xp-lbl{font-size:.78rem;font-weight:700;color:rgba(255,255,255,.85);white-space:nowrap}

/* HERO */
.hero-main{background:var(--lp-d);color:#fff;padding:5rem 0 4.5rem;position:relative;overflow:hidden}
.hero-main::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 65% 90% at 95% 50%,rgba(214,69,69,.10) 0%,transparent 65%),radial-gradient(ellipse 40% 60% at 5% 80%,rgba(12,60,60,.6) 0%,transparent 60%);pointer-events:none}
.hero-eyebrow{display:inline-flex;align-items:center;gap:.5rem;background:var(--lo-l);border:1px solid rgba(214,69,69,.35);color:var(--lo-bt);font-size:.75rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;padding:.3rem .9rem;border-radius:2rem;margin-bottom:1.5rem}
.hero-main h1{font-size:clamp(2.1rem,5.5vw,3.7rem);font-weight:700;color:#fff}
.hero-main h1 em{color:var(--lo-bt);font-style:italic}
.hero-main p.lead{color:rgba(255,255,255,.65);font-size:1.1rem;max-width:560px}
.section-hero{background:var(--lp);color:#fff;padding:2.5rem 0 2rem;--lo-bt:#ffffff}
.section-hero h1{font-size:clamp(1.6rem,4vw,2.4rem);margin-bottom:.4rem}
.section-hero p{color:rgba(255,255,255,.65);max-width:620px;margin:0;font-size:.95rem}
.back-btn{display:inline-flex;align-items:center;gap:.35rem;color:var(--lo-bt);font-size:.83rem;font-weight:700;cursor:pointer;border:none;background:none;padding:0;margin-bottom:1rem}
.back-btn:hover{color:var(--lo-h)}
/* Every .back-btn in the app renders inside .section-hero, which is white-on-
   navy — so the one thing the accent must not be here is the accent. Crimson on
   that navy measures 2.69:1, and 1.58:1 in high-contrast light, which is the
   theme a user turns on because they could not read something. The button had
   opted out of the hero's own colour scheme; it opts back in. The unscoped rule
   above stays correct for a back button on a normal page background. */
.section-hero .back-btn{color:#fff}
.section-hero .back-btn:hover{color:rgba(255,255,255,.78)}
/* Surfaces that are DARK IN BOTH THEMES. --lo-bt flips with the theme — a dark
   crimson in light, a light one in dark — which is correct on a surface that
   also flips, and exactly wrong on one that does not. The week-recap card is
   the brand navy in both themes and the streak cards are always a dark
   gradient, so in light mode .hd-recap-streak measured 1.24:1. Same bug the
   hero's back button had, same fix: override the token on the container so
   anything added inside it later inherits the right value.
   #e68f8f is --lo-bt's dark-mode value, pinned here rather than referenced,
   because the point is that it must NOT follow the theme. */
.hd-recap-card,.hd-streak-card,.streak-card,
.tod-card,.daily-hero,.lvl-card,.daily-complete-card{--lo-bt:#f2c4c4}
.stats-bar{background:var(--lp);padding:1.4rem 0}
.stat-num{font-family:var(--fd);font-size:2rem;font-weight:700;color:var(--lo);display:block}
.stat-lbl{font-size:.8rem;font-weight:700;color:rgba(255,255,255,.6);text-transform:uppercase;letter-spacing:.08em}

/* BUTTONS */
.btn-liq{font-family:var(--fb);font-weight:700;font-size:.92rem;border-radius:var(--rs);padding:.65rem 1.5rem;display:inline-flex;align-items:center;gap:.45rem;cursor:pointer;border:2px solid transparent;transition:all .2s;text-decoration:none;white-space:nowrap}
.btn-or{background:var(--lo-btn);color:var(--lo-btn-tx);border-color:var(--lo-btn)}.btn-or:hover{background:var(--lo-h);border-color:var(--lo-h);color:var(--lo-btn-tx)}
.btn-pu{background:var(--lp);color:#fff;border-color:var(--lp)}.btn-pu:hover{background:var(--lp-m);color:#fff}
.btn-se{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.2)}.btn-se:hover{background:rgba(255,255,255,.22);color:#fff}
.btn-sm{font-size:.82rem;padding:.4rem 1rem}
.btn-ok{background:var(--ok-btn);color:#fff;border-color:var(--ok-btn)}.btn-ok:hover{background:#15803d;color:#fff}
.btn-out{background:transparent;color:var(--txs);border-color:var(--bdr)}.btn-out:hover{border-color:var(--g400);color:var(--tx)}

/* CARDS */
.liq-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);box-shadow:var(--sh)}
.liq-card-body{padding:1.75rem}
.feat-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.75rem;height:100%;display:flex;flex-direction:column;cursor:pointer;transition:all .2s}
.feat-card:hover{box-shadow:var(--shl);transform:translateY(-3px);border-color:var(--lo)}
.feat-icon{width:3rem;height:3rem;border-radius:var(--r);display:flex;align-items:center;justify-content:center;font-size:1.4rem;margin-bottom:1.1rem;flex-shrink:0}
.fi-pu{background:var(--lp-t);color:var(--lp-m)}.fi-or{background:var(--lo-l);color:var(--lo-bt)}.fi-gn{background:rgba(22,163,74,.1);color:#16a34a}.fi-bl{background:rgba(37,99,235,.1);color:#2563eb}
.feat-card h3{font-size:1.15rem;margin-bottom:.4rem}
.feat-card p{color:var(--txs);font-size:.93rem;flex:1;margin-bottom:1rem}
.feat-cta{display:inline-flex;align-items:center;gap:.3rem;font-size:.88rem;font-weight:700;color:var(--lo-bt);margin-top:auto}
.why-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:2rem 1.75rem;height:100%;border-top:4px solid var(--lo)}
.progress-snap{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.5rem;border-left:5px solid var(--lo)}

/* ACADEMY — one pillar at a time, tiers as shelves, track as the card.
   Replaces the pillar/tier/track/module accordion stack. Four structural
   levels now differ by SIZE, WEIGHT, COLOUR and POSITION rather than by
   font-weight alone:

     pillar   26px serif, in the pillar accent          (the place you are in)
     shelf    12px 700 uppercase, +2px accent rule      (the tier)
     track    17px serif on a bordered card             (the container)
     module   15px in a side panel                      (the contents)

   The old page inverted this: the module was the only element with a card
   treatment, the tier was the smallest text on the page at 10.4px, track and
   module were identical but for font weight, and every level began at x=0.
   Measured in real Chrome, fully expanded: 10,504px (11.7 screens) at 1440,
   22,870px (25.4 screens) at 320, with 1,221 elements always in the DOM
   because the accordion was CSS max-height.

   The pillar accent is passed in ONCE as --pa, set inline per pillar by
   renderAcademy(), and read by every rule below. Never write the hex here:
   this product's CLAUDE.md records that colour greps find hexes in files you
   have opened and miss the ones you never did. */

/* -- level 1: the pillar bar ------------------------------------------- */
.acx-pillars{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(190px,100%),1fr));
  gap:.35rem;padding:.5rem;background:var(--g100);border:1px solid var(--bdr);
  border-radius:var(--rl);margin-bottom:1.5rem}
.acx-pbtn{display:flex;flex-direction:column;gap:.2rem;min-width:0;padding:.7rem .9rem;
  border:1px solid transparent;border-radius:var(--r);background:transparent;cursor:pointer;
  font-family:inherit;text-align:left;color:var(--txs);transition:background .16s,border-color .16s}
.acx-pbtn:hover{background:var(--wh);border-color:var(--bdr)}
.acx-pb-top{display:flex;align-items:center;gap:.5rem;min-width:0}
.acx-pb-top i{color:var(--pa-text,var(--pa));font-size:1rem;flex:none}
.acx-pb-name{font-family:var(--fd);font-size:1.02rem;line-height:1.2;color:var(--tx);
  overflow-wrap:break-word;min-width:0}
.acx-pb-meta{font-size:.75rem;font-weight:600;color:var(--txm);font-variant-numeric:tabular-nums}
.acx-pbtn[aria-selected="true"]{background:var(--wh);border-color:var(--bdr);
  box-shadow:inset 0 2px 0 0 var(--pa),var(--sh)}
.acx-pbtn[aria-selected="true"] .acx-pb-name{color:var(--pa-text,var(--pa))}
@media (max-width:620px){
  .acx-pillars{grid-template-columns:1fr}
  .acx-pbtn{flex-direction:row;align-items:center;justify-content:space-between;gap:.75rem;min-height:46px}
  .acx-pb-meta{flex:none;white-space:nowrap}
}

/* -- the context strip: always says where you are ---------------------- */
.acx-context{display:flex;align-items:baseline;gap:.75rem;flex-wrap:wrap;margin-bottom:.5rem}
.acx-context h2{font-family:var(--fd);font-size:clamp(1.4rem,3vw,1.65rem);margin:0;
  color:var(--pa-text,var(--pa));line-height:1.2}
.acx-cprog{font-size:.8rem;font-weight:700;color:var(--txm);font-variant-numeric:tabular-nums}
.acx-csub{flex-basis:100%;font-size:.87rem;color:var(--txs);margin:.1rem 0 0;max-width:66ch;line-height:1.55}
/* Inline action inside running copy — used where the search results and the
   empty state offer to clear a status filter that is hiding matches. A real
   <button> so it is keyboard-operable and announced as an action, styled to sit
   in the sentence. --lo passes AA on both themes (4.04 light · 4.30 dark). */
.acx-inline-link{background:none;border:0;padding:0;font:inherit;color:var(--lo-bt);
  font-weight:700;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
.acx-inline-link:hover{color:var(--lo-h)}
.acx-inline-link:focus-visible{outline:2px solid var(--lo);outline-offset:2px;border-radius:2px}
body.liq-dark .acx-inline-link:hover{color:#e98080}

/* -- level 2: the tier shelf ------------------------------------------- */
.acx-body{margin-top:.5rem}
.acx-shelf{padding-top:1.6rem;scroll-margin-top:90px;border-radius:var(--rl)}
.acx-shelf-hd{display:flex;align-items:center;gap:.7rem;margin-bottom:.9rem}
.acx-rule{width:22px;height:2px;background:var(--pa);border-radius:2px;flex:none}
.acx-sh-lbl{font-size:.75rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase;
  color:var(--tx);min-width:0;overflow-wrap:break-word}
.acx-sh-count{margin-left:auto;flex:none;white-space:nowrap;font-size:.75rem;color:var(--txm);
  font-variant-numeric:tabular-nums}

/* -- level 3: the track card ------------------------------------------- */
/* 240px, not 258. Bootstrap's .container gets NARROWER crossing its 576px
   breakpoint (100% wide below it, then capped at 540px), so a 258px minimum
   gave two columns at 560px and one at 640px — the grid appeared to lose a
   column as the window got wider. min() keeps it from demanding more width
   than the column has on very narrow phones.
   auto-fill, NOT auto-fit: this is the evenest curriculum in the family, two
   tracks per shelf, and auto-fit would stretch a pair to half the viewport
   each on a wide screen. auto-fill leaves them card-sized. */
.acx-grid{display:grid;gap:.85rem;grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr))}
.acx-card{position:relative;display:flex;flex-direction:column;gap:.5rem;text-align:left;
  padding:1rem 1.05rem 1.05rem;background:var(--wh);border:1px solid var(--bdr);
  border-radius:var(--r);cursor:pointer;font-family:inherit;color:inherit;width:100%;
  transition:border-color .16s,transform .16s,box-shadow .16s}
/* .8 at rest, not .5. This was the worst non-text reading in the app and the
   only one that failed in LIGHT mode too — the accent at half strength over the
   card measures 2.05-2.50 in light and 1.41-1.73 in dark. It read as passing
   for a while because the obvious way to measure it, taking the computed
   background colour, reports the declaration rather than the pixel: at
   opacity .5 the shape is composited with the card and is nothing like the
   colour the rule names. Solved to .8, which clears 3:1 on every pillar in
   both themes with the worst at 3.41.
   Hover and open still read as a change: opacity goes to 1 AND the stripe grows
   at both ends, so the state is carried by size as much as by strength. */
.acx-card::before{content:'';position:absolute;left:0;top:14px;bottom:14px;width:2px;
  background:var(--pa);border-radius:2px;opacity:.8;transition:opacity .16s,top .16s,bottom .16s}
.acx-card:hover{border-color:var(--g200);transform:translateY(-1px);box-shadow:var(--shm)}
.acx-card:hover::before{opacity:1;top:8px;bottom:8px}
.acx-card[aria-expanded="true"]{border-color:var(--pa)}
.acx-card[aria-expanded="true"]::before{opacity:1;top:8px;bottom:8px}
.acx-card.locked{cursor:default;opacity:.72}
.acx-card-top{display:flex;align-items:flex-start;gap:.75rem}
.acx-card-name{font-family:var(--fd);font-size:1.06rem;line-height:1.25;margin:0;color:var(--tx);
  font-weight:700;flex:1;text-wrap:balance}
.acx-card-sub{margin:0;font-size:.8rem;line-height:1.5;color:var(--txs);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.acx-card-foot{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-top:auto;
  padding-top:.35rem;font-size:.74rem;color:var(--txm);font-variant-numeric:tabular-nums}
.acx-dot{width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.5;flex:none}
.acx-done{color:var(--ok-bt);font-weight:700}
.acx-inprog{color:var(--lo-bt);font-weight:700}
.acx-step{color:var(--pa-text,var(--pa));font-weight:700}
.acx-card-pillar{font-weight:700;color:var(--pa-text,var(--pa))}
.acx-lock{color:var(--txm);font-size:.9rem;flex:none}
.acx-card-lockmsg{font-size:.76rem;color:var(--txs);background:var(--g100);border-radius:var(--rs);
  padding:.45rem .6rem;line-height:1.45}
/* Compact — drop the description so more tracks fit. */
#academy-content.acx-compact .acx-card-sub{display:none}

/* progress ring — ONE object per track, replacing the old per-module pip rows */
.acx-ring{position:relative;flex:none;width:34px;height:34px}
.acx-ring svg{width:34px;height:34px;transform:rotate(-90deg)}
.acx-ring circle{fill:none;stroke-width:3.5}
.acx-ring .bg{stroke:var(--g200)}
.acx-ring .fg{stroke:var(--pa);stroke-linecap:round;transition:stroke-dasharray .5s ease}
/* ── THE ACCENT AS AN OBJECT, IN DARK MODE ──────────────────────────────
   Five things in the Academy paint the pillar accent as a shape: the ring's
   arc, the selected-pillar indicator, the shelf rule, a card's left stripe and
   the open-card border. WCAG 1.4.11 asks 3:1 of a meaningful one, and in dark
   mode --pa cleared it for almost none of them — framework worst at 1.41-2.65.
   A darker surface cannot rescue it: framework on the darkest surface in the
   app is still 2.65. The accent has to lighten, so in dark all five use the
   text token, which already exists and is already measured.

   ALL FIVE, not the two that were obviously "meaningful". Splitting them left
   two different purples on the same card — a lightened ring beside a dim stripe
   — and the decorative/meaningful line is not worth a visible inconsistency
   when one token fixes both sides of it.

   Measured, dark, worst pillar of three: arc 1.66 -> 3.45 against the track it
   is drawn over; indicator 2.05 -> 4.26; shelf rule 2.65 -> 5.52; card stripe
   1.41 -> 3.54; open-card border 2.65 -> 5.52. Light mode keeps --pa
   throughout, where every one of them already cleared 3:1.

   The contrast sweep does not cover any of this — 1.4.11 needs to know which
   graphics are meaningful, and that is a judgement a sweep cannot make. These
   were measured by tools/check-ring-contrast.mjs's approach: read the pixel,
   composite the opacity, and compare against the surface each is ACTUALLY
   adjacent to. The first attempt compared the card's stripe with the page
   behind the card rather than the card it is painted on, and ignored its
   opacity, and so reported it passing in light mode when it was at 2.05. */
body.liq-dark .acx-ring .fg{stroke:var(--pa-text,var(--pa))}
body.liq-dark .acx-pbtn[aria-selected="true"]{box-shadow:inset 0 2px 0 0 var(--pa-text,var(--pa)),var(--sh)}
body.liq-dark .acx-rule{background:var(--pa-text,var(--pa))}
body.liq-dark .acx-card::before{background:var(--pa-text,var(--pa))}
body.liq-dark .acx-card[aria-expanded="true"]{border-color:var(--pa-text,var(--pa))}
.acx-ring>span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:.62rem;font-weight:800;color:var(--txs);font-variant-numeric:tabular-nums}
.acx-ring>span .bi{color:var(--ok-bt);font-size:.85rem}

/* -- level 4: the detail panel ----------------------------------------- */
.acx-scrim{position:fixed;inset:0;background:rgba(17,58,92,.45);opacity:0;pointer-events:none;
  transition:opacity .22s;z-index:calc(var(--z-modal) - 1)}
.acx-scrim.on{opacity:1;pointer-events:auto}
.acx-panel{position:fixed;top:0;right:0;height:100dvh;width:min(560px,92vw);background:var(--wh);
  border-left:1px solid var(--bdr);box-shadow:var(--shl);z-index:var(--z-modal);
  transform:translateX(101%);transition:transform .28s cubic-bezier(.32,.72,0,1);
  display:flex;flex-direction:column}
.acx-panel.on{transform:translateX(0)}
body.acx-panel-open{overflow:hidden}
.acx-pn-hd{padding:1.4rem 1.5rem 1.1rem;border-bottom:1px solid var(--bdr);position:relative}
.acx-pn-eyebrow{display:flex;align-items:center;gap:.5rem;font-size:.7rem;font-weight:800;
  letter-spacing:.13em;text-transform:uppercase;color:var(--pa-text,var(--pa));margin-bottom:.5rem}
.acx-pn-hd h3{font-family:var(--fd);font-size:1.5rem;margin:0 0 .4rem;color:var(--heading);
  line-height:1.2;padding-right:2.5rem;text-wrap:balance}
.acx-pn-hd p{margin:0;font-size:.86rem;color:var(--txs);line-height:1.55}
.acx-pn-stats{display:flex;gap:1.25rem;flex-wrap:wrap;row-gap:.6rem;align-items:flex-end;
  margin-top:.9rem;font-size:.74rem;color:var(--txm);font-variant-numeric:tabular-nums}
.acx-pn-stats b{display:block;font-size:1.05rem;color:var(--tx);font-weight:800;line-height:1.2}
.acx-pn-cheat{margin-left:auto;border:1px solid var(--bdr);background:var(--wh);color:var(--lp);
  font-size:.74rem;font-weight:700;border-radius:2rem;padding:.35rem .8rem;cursor:pointer;
  font-family:inherit;white-space:nowrap}
.acx-pn-cheat:hover{background:var(--g100);border-color:var(--lp)}
.acx-pn-close{position:absolute;top:1.2rem;right:1.2rem;width:30px;height:30px;border-radius:var(--rs);
  border:1px solid var(--bdr);background:var(--wh);color:var(--txs);cursor:pointer;font-size:.85rem;
  display:flex;align-items:center;justify-content:center;line-height:1}
.acx-pn-close:hover{background:var(--g100);color:var(--tx)}
.acx-pn-body{overflow-y:auto;flex:1;padding:.35rem 0 2rem}

/* a module is a LINE, with two pieces of metadata */
.acx-mrow{display:flex;align-items:center;gap:.85rem;width:100%;text-align:left;
  padding:.8rem 1.5rem;background:transparent;border:0;border-bottom:1px solid var(--bdr);
  cursor:pointer;font-family:inherit;color:inherit;transition:background .14s}
.acx-mrow:hover:not(:disabled){background:var(--g100)}
.acx-mrow:disabled{cursor:default;opacity:.55}
.acx-mnum{flex:none;width:24px;font-size:.78rem;font-weight:800;color:var(--txm);
  font-variant-numeric:tabular-nums}
.acx-mrow.done .acx-mnum{color:var(--ok-bt)}
.acx-mrow.inprog .acx-mnum{color:var(--lo-bt)}
.acx-mbody{flex:1;min-width:0}
.acx-mt{display:block;font-size:.93rem;color:var(--tx);line-height:1.35}
.acx-mm{display:block;font-size:.74rem;color:var(--txm);margin-top:.12rem;font-variant-numeric:tabular-nums}
.acx-mnote{color:var(--lo-bt);margin-left:.15rem}
.acx-mprog{flex:none;width:34px;height:3px;border-radius:2px;background:var(--g200);overflow:hidden}
.acx-mprog>span{display:block;height:100%;background:var(--lo)}

/* connected landmark cases, relocated into the panel */
.acx-cases{padding:1.1rem 1.5rem 0}
.acx-cases-hd{display:flex;align-items:center;gap:.45rem;font-size:.72rem;font-weight:800;
  text-transform:uppercase;letter-spacing:.1em;color:var(--txm);margin-bottom:.6rem}
.acx-cases-hd i{color:var(--lo)}
.acx-cases-list{display:flex;flex-wrap:wrap;gap:.4rem}
.acx-case{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .7rem;border-radius:2rem;
  background:var(--g100);border:1px solid var(--bdr);font-size:.78rem;font-weight:600;color:var(--tx);
  cursor:pointer;font-family:inherit;line-height:1.3;text-align:left}
.acx-case:hover{background:var(--wh);border-color:var(--lp)}
.acx-case-yr{font-size:.68rem;font-weight:800;color:var(--cat);font-variant-numeric:tabular-nums}
.acx-cases-all{margin-top:.7rem;background:none;border:0;padding:0;font-family:inherit;
  font-size:.76rem;font-weight:700;color:var(--lo-bt);cursor:pointer}
.acx-cases-all:hover{text-decoration:underline}

@media (max-width:620px){
  .acx-panel{width:100vw;top:auto;bottom:0;height:88dvh;border-left:0;border-top:1px solid var(--bdr);
    border-radius:var(--rl) var(--rl) 0 0;transform:translateY(101%)}
  .acx-panel.on{transform:translateY(0)}
  .acx-pn-hd{padding:1.15rem 1.15rem .95rem}
  .acx-pn-hd h3{font-size:1.3rem}
  .acx-mrow,.acx-cases{padding-left:1.15rem;padding-right:1.15rem}
}
/* Tap targets below 834px: a module row is the primary control in the panel
   and must clear 40px however short its title is. */
@media (max-width:834px){
  .acx-mrow{min-height:52px}
  .acx-pn-close{width:40px;height:40px}
  .filter-btn{min-height:40px}
}

/* -- list view: the deliberate "show me everything" mode --------------- */
.acx-body.acx-list .acx-grid{grid-template-columns:1fr;gap:1rem}
.acx-row{border:1px solid var(--bdr);border-radius:var(--r);background:var(--wh);overflow:hidden}
.acx-row.locked{opacity:.72}
.acx-row-hd{display:flex;align-items:baseline;gap:.75rem;padding:.8rem 1.1rem;
  border-bottom:1px solid var(--bdr);background:var(--g100)}
.acx-row-name{font-family:var(--fd);font-size:1.02rem;font-weight:700;color:var(--tx);flex:1;min-width:0}
.acx-row-meta{font-size:.76rem;color:var(--txm);font-variant-numeric:tabular-nums;white-space:nowrap}
.acx-row-mods .acx-mrow{padding-left:1.1rem;padding-right:1.1rem}
.acx-row-mods .acx-mrow:last-child{border-bottom:0}

/* -- empty state ------------------------------------------------------- */
.acx-empty{text-align:center;padding:2.5rem 1.5rem;color:var(--txm);font-style:italic;
  background:var(--wh);border:1px dashed var(--bdr);border-radius:var(--rl);margin-top:1.5rem}
.acx-empty i{display:block;font-size:1.4rem;margin-bottom:.5rem;opacity:.6;font-style:normal}

/* -- limited-preview sample list --------------------------------------- */
.acx-preview-list{border:1px solid var(--bdr);border-radius:var(--r);background:var(--wh);overflow:hidden}
.acx-preview-list .acx-mrow:last-child{border-bottom:0}
.acx-preview-list .acx-mrow{padding-left:1.1rem;padding-right:1.1rem}

/* -- flash target for the nav's goToTier / goToTrack ------------------- */
.tier-section-flash{background:rgba(214,69,69,.08);box-shadow:0 0 0 3px rgba(214,69,69,.25);
  animation:tier-section-flash-anim 1.6s ease-out}
@keyframes tier-section-flash-anim{
  0%{background:rgba(214,69,69,.16);box-shadow:0 0 0 6px rgba(214,69,69,.35)}
  100%{background:rgba(214,69,69,0);box-shadow:0 0 0 0 rgba(214,69,69,0)}
}

/* -- dark mode --------------------------------------------------------- */
body.liq-dark .acx-pillars{background:var(--g100);border-color:var(--bdr)}
body.liq-dark .acx-pbtn:hover,
body.liq-dark .acx-pbtn[aria-selected="true"]{background:var(--wh)}
body.liq-dark .acx-scrim{background:rgba(0,0,0,.6)}

/* Top row — wraps the Continue Learning + Spaced Review cards so they sit
   side-by-side on wider screens. Stacks below 900px. The row\'s margin-
   bottom replaces the cards\' individual margins (overridden to 0 inside
   the row). When only one card is present, it takes full width naturally
   via flex:1 1 0 on the single child. */
.acad-top-row{display:flex;gap:1.4rem;margin-bottom:1.4rem;align-items:stretch;flex-wrap:wrap}
.acad-top-row > .cl-card,
.acad-top-row > .rev-card{flex:1 1 0;margin-bottom:0;min-width:0}
@media (max-width:900px){
  .acad-top-row{flex-direction:column;gap:1rem;margin-bottom:1.2rem}
  .acad-top-row > .cl-card,
  .acad-top-row > .rev-card{flex:1 1 auto}
}
/* Continue Learning card — sits above the search/filter bar (after the
   path banner and review card if those are present). Shows up to 3
   in-progress modules with a Resume button, OR up to 2 recommended
   starting modules for brand-new users. Hidden when the user has
   completed everything. */
.cl-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);margin-bottom:1.4rem;box-shadow:var(--sh);overflow:hidden}
.cl-card-header{display:flex;align-items:center;gap:.5rem;padding:.85rem 1.2rem;border-bottom:1px solid var(--bdr);font-weight:700;font-size:.85rem;color:var(--tx);background:linear-gradient(135deg,color-mix(in srgb,var(--lo) 10%,transparent),transparent);letter-spacing:-.005em}
.cl-card-header i{color:var(--lo);font-size:1rem}
.cl-card-body{padding:.2rem 0}
.cl-item{display:flex;align-items:center;gap:1rem;padding:.85rem 1.2rem;cursor:pointer;transition:background .15s}
.cl-item:hover{background:var(--g100)}
.cl-item:not(:last-child){border-bottom:1px solid var(--bdr)}
.cl-item-num{width:2.4rem;height:2.4rem;border-radius:var(--rs);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.95rem;flex-shrink:0}
.cl-item-info{flex:1;min-width:0}
.cl-item-title{font-weight:700;font-size:.95rem;color:var(--tx);line-height:1.3;margin-bottom:.15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cl-item-meta{display:flex;align-items:center;gap:.6rem;font-size:.75rem;color:var(--txm);flex-wrap:wrap}
.cl-item-meta-track{font-weight:600;color:var(--tx)}
.cl-item-meta i{color:var(--lo);font-size:.7rem;margin-right:.15rem}
.cl-item-progress{height:4px;background:var(--g100);border-radius:2px;margin-top:.45rem;overflow:hidden;max-width:280px}
.cl-item-progress-fill{height:100%;border-radius:2px;transition:width .25s}
.cl-item-btn{flex-shrink:0;padding:.5rem .95rem;background:var(--lp);color:#fff;border:none;border-radius:2rem;font-size:.8rem;font-weight:700;cursor:pointer;transition:background .15s,transform .15s;display:flex;align-items:center;gap:.3rem;white-space:nowrap}
.cl-item-btn:hover{background:var(--lp-m);transform:translateX(2px)}
@media (max-width:600px){
  .cl-item{padding:.7rem .9rem;gap:.7rem}
  .cl-item-num{width:2rem;height:2rem;font-size:.85rem}
  .cl-item-btn{padding:.4rem .7rem;font-size:.75rem}
  .cl-item-meta{gap:.4rem}
  .cl-item-title{font-size:.88rem}
}
body.liq-dark .cl-item:hover{background:rgba(255,255,255,.04)}
/* Narrow phones. Measured at 320px BEFORE this redesign, the Continue Learning
   card was 315px wide inside a 296px row and pushed the whole page sideways by
   7px — the only element on the Academy that did, and small enough to have gone
   unnoticed. Nothing here may hold a hard minimum: the row, the card, the item
   and the text column all have to be able to shrink, and the button drops its
   arrow rather than refusing to narrow. (Labour IQ's was 42px; same cause.) */
.acad-top-row{min-width:0}
.acad-top-row>.cl-card,.acad-top-row>.rev-card{min-width:0;max-width:100%}
.cl-card,.cl-card-body,.cl-item{min-width:0}
@media (max-width:430px){
  .cl-item{gap:.55rem;padding:.65rem .75rem}
  .cl-item-num{width:1.9rem;height:1.9rem;font-size:.8rem}
  .cl-item-btn{flex-shrink:1;min-width:0;padding:.38rem .55rem;font-size:.72rem;gap:0}
  .cl-item-btn i{display:none}
  .cl-item-meta{gap:.3rem;font-size:.7rem}
  .cl-card-header{padding:.7rem .85rem}
}
/* Resume/Start is a real touch control and measured 31–37px tall on every
   width below 834px — under the 40px bar. min-height rather than padding, so
   the 430px rule above can still shrink it horizontally without re-inflating
   its height. Pre-dates this redesign; it is fixed here because the Academy is
   where the card lives. */
@media (max-width:833px){
  .cl-item-btn{min-height:40px}
}
/* Search box — sits above the filter bar. Filters tracks/modules by name,
   sub, and tags. Auto-expands tiers and tracks containing matches. */
.acad-search-wrap{position:relative;margin-bottom:.85rem;max-width:560px}
.acad-search-input{width:100%;padding:.65rem 2.6rem .65rem 2.6rem;border:1.5px solid var(--bdr);border-radius:2rem;background:var(--wh);font-size:.92rem;color:var(--tx);transition:border-color .15s,box-shadow .15s;font-family:inherit}
.acad-search-input:focus{outline:none;border-color:var(--lp);box-shadow:0 0 0 3px color-mix(in srgb,var(--lp) 20%,transparent)}
.acad-search-input::placeholder{color:var(--txm);opacity:.75}
.acad-search-icon{position:absolute;left:1rem;top:50%;transform:translateY(-50%);color:var(--txm);font-size:1rem;pointer-events:none}
.acad-search-clear{position:absolute;right:.55rem;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--txm);font-size:1.05rem;cursor:pointer;padding:.3rem .45rem;border-radius:50%;display:none;line-height:1;transition:background .15s,color .15s}
.acad-search-clear:hover{background:var(--g100);color:var(--tx)}
.acad-search-input:not(:placeholder-shown) ~ .acad-search-clear{display:block}
/* Search match highlight — wraps the matched substring inside any
   .hl-target element while the search input has a non-empty query. */
.acad-search-mark{background:color-mix(in srgb,var(--lo) 28%,transparent);color:inherit;padding:.05em .15em;border-radius:3px;font-weight:inherit}
body.liq-dark .acad-search-mark{background:color-mix(in srgb,var(--lo) 38%,transparent);color:#fff}
/* Filter bar */
.acad-filter-bar{display:flex;align-items:center;gap:.5rem;margin-bottom:1.8rem;flex-wrap:wrap}
.filter-btn{padding:.35rem .85rem;border-radius:2rem;border:1.5px solid var(--bdr);background:var(--wh);font-size:.8rem;font-weight:600;color:var(--txm);cursor:pointer;transition:all .18s}
.filter-btn:hover{border-color:var(--lp);color:var(--lp)}
.filter-btn.active{background:var(--lp);border-color:var(--lp);color:#fff}
.prog-bar{height:4px;background:var(--g100);border-radius:99px;overflow:hidden;margin-top:.35rem}
.prog-fill{height:100%;background:var(--lo);border-radius:99px;transition:width .4s}
.acad-xp-bar{background:var(--lp);border-top:1px solid rgba(255,255,255,.1);padding:1rem 0}
.xp-bar-wrap{height:8px;background:rgba(255,255,255,.15);border-radius:99px;overflow:hidden;margin:.35rem 0}
.xp-fill{height:100%;background:var(--lo);border-radius:99px;transition:width .8s cubic-bezier(.4,0,.2,1)}

/* MODULE VIEWER */
.mod-tabs{display:flex;background:var(--g100);border-radius:var(--r) var(--r) 0 0;border:1px solid var(--bdr);border-bottom:none;padding:.3rem .3rem 0}
.mod-tab{flex:1;border:none;background:transparent;font-family:var(--fb);font-size:.87rem;font-weight:700;padding:.6rem .5rem;border-radius:var(--rs) var(--rs) 0 0;cursor:pointer;color:var(--txs);display:flex;align-items:center;justify-content:center;gap:.35rem;transition:all .2s}
.mod-tab:hover{background:rgba(255,255,255,.7)}.mod-tab.active{background:var(--wh);color:var(--lp)}
.mod-tab .ck{color:var(--ok);font-size:.8rem}
.mod-panel{display:none;background:var(--wh);border:1px solid var(--bdr);border-radius:0 0 var(--rl) var(--rl);padding:1.75rem}
.mod-panel.active{display:block}
/* ── Reading layout: two-column on large screens ─── */
.reading-layout{display:block}
.reading-toc{display:none}
.reading-prose{width:100%}
@media(min-width:992px){
  .reading-layout{display:grid;grid-template-columns:190px 1fr;gap:2.5rem;align-items:start}
  .reading-toc{display:block;position:sticky;top:5rem}
  .reading-prose{max-width:700px}
}
.toc-label{font-size:.63rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--txm);margin-bottom:.65rem;padding-bottom:.4rem;border-bottom:1px solid var(--bdr)}
.toc-item{display:flex;align-items:flex-start;gap:.4rem;padding:.3rem 0 .3rem .55rem;font-size:.78rem;color:var(--txm);cursor:pointer;transition:color .15s,border-color .15s;line-height:1.35;border-left:2px solid transparent;margin-left:-.55rem}
.toc-item:hover{color:var(--lp)}
.toc-item.active{color:var(--lp);font-weight:700;border-left-color:var(--lo)}
.toc-num{font-weight:800;color:var(--lo-bt);flex-shrink:0;font-size:.7rem;margin-top:.08rem}
/* ── Reading prose typography ── */
.read-sec{margin-bottom:2rem;scroll-margin-top:5.5rem}
.read-sec h4{font-family:var(--fd);font-size:1.12rem;color:var(--lp);margin:0 0 .9rem;padding-bottom:.5rem;border-bottom:2px solid var(--lo-l);line-height:1.4}
.read-sec p{color:var(--txs);font-size:.95rem;line-height:1.8;margin-bottom:.9rem}
.read-sec p:last-of-type{margin-bottom:0}
.read-sec strong{color:var(--lp);font-weight:700}
.read-sec ol,.read-sec ul{font-size:.95rem;line-height:1.8;color:var(--txs);padding-left:1.4rem;margin-bottom:.9rem}
.read-sec li{margin-bottom:.3rem}
.read-sec em{font-style:italic}
.read-divider{border:none;border-top:1px solid var(--bdr);margin:2rem 0}
.takeaway-box{background:var(--lp-t);border:1px solid rgba(17,58,92,.12);border-radius:var(--r);padding:1rem 1.3rem;margin-top:1.1rem}
.takeaway-box h6{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--lp-m);margin-bottom:.6rem}
.tak-item{display:flex;gap:.55rem;align-items:flex-start;margin-bottom:.4rem;font-size:.87rem;line-height:1.55}
.tak-item i{color:var(--lo);flex-shrink:0;margin-top:.2rem;font-size:.8rem}
body.liq-dark .read-sec strong{color:var(--lo-bt)}
.scen-setup{background:rgba(17,58,92,.05);border-radius:var(--r);padding:1.2rem;margin-bottom:1.2rem;font-size:.94rem;color:var(--txs)}
.scen-setup strong{color:var(--tx)}
.scen-q{font-family:var(--fd);font-size:1.12rem;color:var(--lp);margin-bottom:1rem}
.scen-opt{width:100%;text-align:left;background:var(--wh);border:2px solid var(--bdr);border-radius:var(--r);padding:.85rem 1rem;font-family:var(--fb);font-size:.92rem;cursor:pointer;transition:all .2s;margin-bottom:.6rem;color:var(--tx);display:flex;align-items:flex-start;gap:.65rem}
.scen-opt:hover{border-color:var(--lo);background:var(--lo-p)}
.scen-opt.correct{border-color:var(--ok);background:var(--ok-l)}.scen-opt.wrong{border-color:var(--er);background:var(--er-l)}
.opt-ltr{width:1.65rem;height:1.65rem;border-radius:50%;background:var(--g100);color:var(--txs);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.77rem;flex-shrink:0;transition:all .2s}
/* --ok-btn, not --ok: white on --ok is 3.30 and this letter is 12px at weight
   800 — small bold text, threshold 4.5. Same defect as .btn-ok and the nav
   learner pill, in the third place it hides. --er is fine here at 4.83. */
.scen-opt.correct .opt-ltr{background:var(--ok-btn);color:#fff}.scen-opt.wrong .opt-ltr{background:var(--er);color:#fff}
.scen-fb{display:none;border-radius:var(--r);padding:1rem;margin-top:.7rem;font-size:.91rem}
.scen-fb.show{display:block}.scen-fb.fb-ok{background:var(--ok-l);border-left:4px solid var(--ok)}.scen-fb.fb-er{background:var(--er-l);border-left:4px solid var(--er)}
/* ── QUIZ ─── */
.quiz-q-txt{font-family:var(--fd);font-size:1.05rem;color:var(--lp);margin-bottom:.9rem;font-weight:600;line-height:1.45}
body.liq-dark .quiz-q-txt{color:var(--heading)}
/* Progress pip bar */
.qprog{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem}
.qpip-row{display:flex;gap:.4rem;flex:1}
.qpip{flex:1;height:5px;border-radius:99px;background:var(--g200);transition:background .25s}
.qpip-active{background:var(--lo)}
.qpip-ok{background:var(--ok)}
.qpip-er{background:var(--er)}
.qprog-lbl{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--txm);white-space:nowrap;flex-shrink:0}
/* Options */
.quiz-opt{width:100%;text-align:left;background:var(--wh);border:2px solid var(--bdr);border-radius:var(--rs);padding:.62rem .92rem;font-family:var(--fb);font-size:.9rem;cursor:pointer;transition:all .2s;margin-bottom:.42rem;color:var(--tx);display:flex;align-items:center;gap:.55rem}
.quiz-opt:hover:not(:disabled):not([aria-disabled="true"]){border-color:var(--lo);background:var(--lo-p)}
.quiz-opt.sel{border-color:var(--lo);background:var(--lo-p)}
.quiz-opt.ok{border-color:var(--ok);background:var(--ok-l)}
.quiz-opt.er{border-color:var(--er);background:var(--er-l)}
.quiz-radio{width:.95rem;height:.95rem;border-radius:50%;border:2px solid var(--bdr);flex-shrink:0;transition:all .2s}
.quiz-opt.sel .quiz-radio{border-color:var(--lo);background:var(--lo)}
.quiz-opt.ok .quiz-radio{border-color:var(--ok);background:var(--ok)}
.quiz-opt.er .quiz-radio{border-color:var(--er);background:var(--er)}

/* ── Certification Exam ─────────────────────────────────────── */
.btn-liq.btn-lg{padding:.7rem 1.5rem;font-size:1rem}
.exam-hero{text-align:center;padding:1.2rem 1rem .4rem}
.exam-hero-icon{width:64px;height:64px;border-radius:50%;background:var(--lo-l);color:var(--lo);display:flex;align-items:center;justify-content:center;font-size:2rem;margin:0 auto .7rem}
.exam-hero-title{font-family:var(--fd);color:var(--heading);font-size:1.7rem;margin:0 0 .3rem}
.exam-hero-sub{color:var(--txs);font-size:.95rem;max-width:44ch;margin:0 auto}
.exam-best{display:inline-block;margin-top:.7rem;background:var(--g100);color:var(--txs);border-radius:2rem;padding:.2rem .8rem;font-size:.82rem;font-weight:700}
.exam-certified{display:flex;gap:.6rem;align-items:flex-start;background:var(--ok-l);border:1px solid var(--ok);border-radius:var(--r);padding:.8rem 1rem;margin:1rem 0;color:#14532d}
.exam-certified i{color:var(--ok);font-size:1.2rem;flex-shrink:0}
.exam-rules{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.7rem;margin:1.1rem 0}
.exam-rule{display:flex;gap:.7rem;align-items:flex-start;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.8rem .9rem;box-shadow:var(--sh)}
.exam-rule i{color:var(--lo);font-size:1.25rem;flex-shrink:0;margin-top:.05rem}
.exam-rule strong{display:block;color:var(--heading);font-size:.92rem}
.exam-rule span{display:block;color:var(--txs);font-size:.82rem;margin-top:.1rem}
.exam-readiness{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:1rem;margin-bottom:1.1rem;box-shadow:var(--sh)}
.exam-readiness-bar-label{font-size:.86rem;color:var(--txs);margin-bottom:.45rem}
.exam-readiness-bar{height:9px;background:var(--g100);border-radius:2rem;overflow:hidden}
.exam-readiness-fill{height:100%;background:var(--lo);border-radius:2rem;transition:width .4s}
.exam-readiness-note{font-size:.82rem;color:var(--txm);margin:.55rem 0 0}
.exam-readiness-note.exam-ready{color:var(--ok)}
.exam-start-actions{display:flex;gap:.7rem;justify-content:center;flex-wrap:wrap;margin:1.3rem 0 .5rem}
.exam-bar{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;padding-bottom:.6rem;border-bottom:1px solid var(--bdr);margin-bottom:.8rem}
.exam-bar-title{font-family:var(--fd);color:var(--heading);font-size:1.1rem}
.exam-bar-title i{color:var(--lo)}
.exam-bar-meta{font-size:.84rem;color:var(--txs);font-weight:700}
.exam-grid{display:flex;flex-wrap:wrap;gap:.32rem}
.exam-pip{width:30px;height:30px;border-radius:var(--rs);border:1.5px solid var(--bdr);background:var(--wh);color:var(--txm);font-size:.78rem;font-weight:700;cursor:pointer;transition:all .15s}
.exam-pip:hover{border-color:var(--lo)}
.exam-pip-done{background:var(--lo-p);border-color:var(--lo);color:var(--lo-bt)}
.exam-pip-active{background:var(--lp);border-color:var(--lp);color:#fff}
.exam-nav{display:flex;justify-content:space-between;align-items:center;margin-top:1.1rem;gap:.7rem}
.exam-submit-row{text-align:center;margin-top:.9rem}
.exam-submit-link{background:none;border:none;color:var(--txm);font-size:.84rem;font-weight:700;cursor:pointer;text-decoration:underline}
.exam-submit-link:hover{color:var(--lo-bt)}
.exam-result-actions{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.4rem}
.exam-rev-src{display:block;font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--lp-m);margin-bottom:.3rem}
/* Exam catalogue */
.exam-cat-intro{color:var(--txs);font-size:.92rem;margin-bottom:1rem;text-align:center;max-width:60ch;margin-left:auto;margin-right:auto}
.exam-final-card{background:var(--wh);border:1px solid var(--bdr);border-top:3px solid var(--lo);border-radius:var(--rl);padding:1rem 1.1rem 1.3rem;box-shadow:var(--shm);margin-bottom:1.6rem}
.exam-cat-section{font-family:var(--fd);color:var(--heading);font-size:1.2rem;margin:1.6rem 0 .3rem;display:flex;align-items:center}
.exam-cat-section i{color:var(--lo)}
.exam-cat-subhead{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--txm);margin:.9rem 0 .5rem}
.exam-card-list{display:flex;flex-direction:column;gap:.6rem}
.exam-card{display:flex;align-items:center;gap:.85rem;background:var(--wh);border:1px solid var(--bdr);border-left:4px solid var(--lo);border-radius:var(--r);padding:.75rem .9rem;box-shadow:var(--sh)}
.exam-card-icon{font-size:1.5rem;flex-shrink:0;width:2rem;text-align:center}
.exam-card-body{flex:1;min-width:0}
.exam-card-title{font-weight:800;color:var(--heading);font-size:.95rem;line-height:1.25}
.exam-card-meta{font-size:.78rem;color:var(--txs);margin:.15rem 0 .35rem}
.exam-card-start{flex-shrink:0}
.exam-status{display:inline-block;font-size:.74rem;font-weight:700;border-radius:2rem;padding:.1rem .55rem}
.exam-status-pass{background:var(--ok-l);color:#14532d}
.exam-status-try{background:var(--wa-l);color:#92400e}
.exam-status-new{background:var(--g100);color:var(--txm)}
.exam-card-actions{display:flex;flex-direction:column;gap:.35rem;flex-shrink:0}
.exam-card-cert{white-space:nowrap}
.exam-card-passed{background:linear-gradient(0deg,var(--ok-l),var(--wh) 55%)}
@media(max-width:560px){.exam-card{flex-wrap:wrap}.exam-card-actions{width:100%;flex-direction:row;margin-top:.2rem}.exam-card-actions .btn-liq{flex:1}}
/* Exam badges */
.exam-badges-strip{background:linear-gradient(135deg,var(--lo-p),var(--lp-t));border:1px solid var(--bdr);border-radius:var(--rl);padding:.9rem 1rem;margin-bottom:1.4rem}
.exam-badges-title{font-weight:800;color:var(--heading);font-size:.9rem;margin-bottom:.75rem;display:flex;align-items:center}
.exam-badges-title i{color:var(--lo)}
.exam-badges-count{background:var(--lo-btn);color:var(--lo-btn-tx);border-radius:2rem;padding:.02rem .5rem;font-size:.72rem;margin-left:.45rem}
.exam-badges{display:flex;flex-wrap:wrap;gap:.9rem}
.exam-badge{width:86px;text-align:center}
.exam-badge-medallion{width:54px;height:54px;border-radius:50%;margin:0 auto .35rem;display:flex;align-items:center;justify-content:center;font-size:1.5rem;color:#fff;background:var(--bcol,var(--lo));box-shadow:var(--sh);border:3px solid rgba(255,255,255,.7)}
.exam-badge-label{font-size:.7rem;font-weight:700;color:var(--tx);line-height:1.15;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.exam-badge-score{font-size:.68rem;color:var(--txm);font-weight:700;margin-top:.05rem}
/* Explanation */
.quiz-exp{display:none;font-size:.87rem;color:var(--txs);background:var(--g100);border-radius:var(--rs);padding:.75rem 1rem;margin-top:.6rem;line-height:1.6}
.quiz-exp.show{display:block}
.quiz-exp-hdr{display:flex;align-items:center;gap:.45rem;font-weight:800;font-size:.85rem;margin-bottom:.5rem;padding-bottom:.5rem;border-bottom:1px solid var(--bdr)}
.exp-ok{color:var(--ok-bt)}.exp-er{color:var(--er-bt)}
.quiz-retry-note{color:var(--txm);font-size:.8rem;margin-top:.5rem}
/* Results header */
.qrev-header{display:flex;align-items:flex-start;gap:1.25rem;padding:1.5rem;background:var(--g100);border-radius:var(--r);margin-bottom:1.5rem;flex-wrap:wrap}
.qrev-summary{flex:1;min-width:200px}
/* Score ring (kept from before) */
.score-ring{width:88px;height:88px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;border:6px solid;font-family:var(--fd);flex-shrink:0}
.score-ring .sn{font-size:1.7rem;font-weight:700;line-height:1}
.score-ring .sd{font-size:.68rem;font-weight:700}
.score-ring.s-ok{border-color:var(--ok);color:var(--ok)}
.score-ring.s-or{border-color:var(--lo);color:var(--lo-bt)}
.score-ring.s-er{border-color:var(--er);color:var(--er)}
/* Question review section */
.qrev-section{margin-top:.5rem}
.qrev-title{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--txm);margin-bottom:.85rem;display:flex;align-items:center}
.qrev-item{border:1px solid var(--bdr);border-radius:var(--r);padding:1rem 1.1rem;margin-bottom:.75rem;border-left-width:4px}
.qrev-ok{border-left-color:var(--ok)}
.qrev-er{border-left-color:var(--er)}
.qrev-hdr{display:flex;align-items:flex-start;gap:.65rem;margin-bottom:.65rem}
.qrev-badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:800;padding:.2rem .55rem;border-radius:2rem;flex-shrink:0;margin-top:.08rem}
.qrev-badge-ok{background:var(--ok-l);color:var(--ok-bt)}
.qrev-badge-er{background:var(--er-l);color:var(--er-bt)}
.qrev-q{font-size:.9rem;font-weight:700;color:var(--tx);line-height:1.45;flex:1}
.qrev-opts{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.7rem}
.qrev-opt{display:flex;align-items:flex-start;gap:.55rem;font-size:.85rem;color:var(--txm);padding:.35rem .55rem;border-radius:var(--rs)}
.qrev-correct{background:var(--ok-l);color:var(--ok-bt);font-weight:700}
.qrev-wrong{background:var(--er-l);color:var(--er-bt);font-weight:700;text-decoration:line-through}
.qrev-explain{font-size:.84rem;color:var(--txs);background:var(--g100);border-radius:var(--rs);padding:.6rem .85rem;line-height:1.6}
/* ── Module Notes Panel ─── */
.mod-notes-panel{margin-top:.9rem;border:1.5px solid var(--bdr);border-radius:var(--r);background:var(--wh);overflow:hidden}
.mod-notes-hdr{display:flex;align-items:center;justify-content:space-between;padding:.72rem 1rem;cursor:pointer;user-select:none;gap:.75rem;transition:background .15s}
.mod-notes-hdr:hover{background:var(--g100)}
.mod-notes-hdr-left{display:flex;align-items:center;gap:.5rem;font-size:.88rem;font-weight:700;color:var(--tx)}
.mod-notes-hdr-left i{color:var(--lo);font-size:.95rem}
.mod-notes-count{font-size:.7rem;font-weight:800;background:var(--lo-l);color:var(--lo-bt);border-radius:99px;padding:.1rem .48rem;white-space:nowrap}
.mod-notes-prompt{font-size:.72rem;font-weight:600;color:var(--txm)}
.mod-notes-chev{color:var(--txm);font-size:.82rem;flex-shrink:0;transition:transform .2s}
.mod-notes-body{border-top:1px solid var(--bdr);padding:.8rem 1rem 1rem}
.mod-notes-ta{width:100%;min-height:130px;border:1.5px solid var(--bdr);border-radius:var(--rs);background:var(--g100);color:var(--tx);font-family:var(--fb);font-size:.88rem;line-height:1.65;padding:.7rem .85rem;resize:vertical;outline:none;transition:border-color .18s,background .18s,box-shadow .18s;box-sizing:border-box}
.mod-notes-ta:focus{border-color:var(--lo);background:var(--wh);box-shadow:0 0 0 2px var(--lo);outline:none}
.mod-notes-ta::placeholder{color:var(--txm)}
/* ── Quiz struggle hint banner ── */
.quiz-struggle-banner{display:flex;align-items:flex-start;gap:.6rem;background:rgba(37,99,235,.08);border:1px solid rgba(37,99,235,.25);border-radius:var(--r);padding:.72rem .95rem;margin-bottom:1.1rem;font-size:.85rem;color:var(--tx);line-height:1.45}
.quiz-struggle-banner i{color:#2563eb;font-size:1.05rem;flex-shrink:0;margin-top:.1rem}
.quiz-struggle-banner strong{color:#2563eb}
.liq-dark .quiz-struggle-banner{background:rgba(96,165,250,.12);border-color:rgba(96,165,250,.3)}
.liq-dark .quiz-struggle-banner i,.liq-dark .quiz-struggle-banner strong{color:#93c5fd}
.mod-notes-footer{display:flex;align-items:center;justify-content:space-between;margin-top:.45rem;min-height:1.4rem}
.mod-notes-status{font-size:.74rem;color:var(--txm);transition:color .3s}
.mod-notes-status.saved{color:var(--ok)}
.mod-notes-clear{background:none;border:none;color:var(--er);font-size:.74rem;font-weight:700;cursor:pointer;padding:0;outline:none;line-height:1}
.mod-notes-clear:hover{text-decoration:underline}
.done-banner{display:none;background:linear-gradient(135deg,var(--lp-d),var(--lp-m));color:#fff;border-radius:var(--rl);padding:2rem;text-align:center;margin-top:1.2rem}
.done-banner.show{display:block}
.done-next-card{margin-top:1.5rem;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);border-radius:var(--r);padding:1.1rem 1.25rem;text-align:left}
.done-next-label{font-size:.62rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.5);margin-bottom:.5rem}
.done-next-track{font-size:.72rem;font-weight:700;color:rgba(255,255,255,.65);display:flex;align-items:center;gap:.4rem;margin-bottom:.3rem}
.done-next-title{font-family:var(--fd);font-size:1rem;font-weight:700;color:#fff;margin-bottom:.85rem;line-height:1.35}
.done-next-btn{display:inline-flex;align-items:center;gap:.4rem;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:var(--r);padding:.5rem 1.1rem;font-size:.87rem;font-weight:700;cursor:pointer;transition:background .2s}
.done-next-btn:hover{background:rgba(255,255,255,.28)}
/* ── Saved Tools ─── */
.sv-empty{color:var(--txm);font-size:.9rem;padding:.5rem 0}
.sv-item{display:flex;align-items:flex-start;gap:.85rem;padding:.9rem 0;border-bottom:1px solid var(--bdr)}
.sv-item:last-child{border-bottom:none}
.sv-ico{width:2.3rem;height:2.3rem;border-radius:var(--r);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:1.05rem}
.sv-badge{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--txm);margin-bottom:.15rem}
.sv-title{font-size:.9rem;font-weight:700;color:var(--tx);margin-bottom:.15rem;line-height:1.35}
.sv-sum{font-size:.78rem;color:var(--txs);margin-bottom:.42rem}
.sv-date{font-size:.68rem;color:var(--txm)}
.sv-actions{display:flex;gap:.45rem;flex-wrap:wrap;margin-top:.5rem}
.sv-btn{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:700;padding:.28rem .72rem;border-radius:var(--rs);cursor:pointer;border:1px solid var(--bdr);background:var(--wh);color:var(--tx);transition:all .18s}
.sv-btn:hover{border-color:var(--lo);color:var(--lo-bt)}
.sv-btn.sv-del{color:var(--er)}
.sv-btn.sv-del:hover{border-color:var(--er);background:var(--er-l)}
.tool-save-row{display:flex;justify-content:center;margin-top:1.2rem;padding-top:1rem;border-top:1px solid var(--bdr)}
.bm-btn{display:inline-flex;align-items:center;gap:.38rem;background:none;border:1.5px solid var(--bdr);border-radius:var(--rs);padding:.32rem .78rem;font-size:.8rem;font-weight:700;color:var(--txm);cursor:pointer;transition:all .18s;line-height:1}
.bm-btn:hover{border-color:var(--lo);color:var(--lo-bt)}
.bm-btn.active{border-color:var(--lo);color:var(--lo-bt);background:var(--lo-p)}
.bm-btn.active i{color:var(--lo)}
.bm-btn-hero{display:inline-flex;align-items:center;gap:.4rem;background:rgba(255,255,255,.12);border:1.5px solid rgba(255,255,255,.25);border-radius:var(--rs);padding:.38rem .9rem;font-size:.82rem;font-weight:700;color:rgba(255,255,255,.85);cursor:pointer;transition:all .18s}
.bm-btn-hero:hover{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.5);color:#fff}
.bm-btn-hero.active{background:rgba(214,69,69,.25);border-color:var(--lo);color:var(--lo-bt)}
/* Bookmarks section on profile */
.bm-section-tabs{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}
.bm-tab{background:var(--g100);border:1px solid var(--bdr);border-radius:var(--rs);padding:.3rem .85rem;font-size:.8rem;font-weight:700;color:var(--txm);cursor:pointer;transition:all .18s}
.bm-tab.active{background:var(--lp);color:#fff;border-color:var(--lp)}
.bm-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 0;border-bottom:1px solid var(--bdr);cursor:pointer;transition:opacity .15s}
.bm-item:last-child{border-bottom:none}
.bm-item:hover{opacity:.8}
.bm-item-icon{width:2rem;height:2rem;border-radius:.4rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.88rem}
.bm-item-name{font-weight:700;font-size:.88rem;color:var(--tx);line-height:1.3}
.bm-item-sub{font-size:.75rem;color:var(--txm);margin-top:.1rem}
.bm-empty{color:var(--txm);font-size:.88rem;padding:.5rem 0}
.done-xp{display:inline-flex;align-items:center;gap:.35rem;background:var(--lo-btn);color:var(--lo-btn-tx);font-weight:800;font-size:1rem;padding:.3rem 1rem;border-radius:2rem;margin:.6rem 0}

/* LEXICON */
.lex-search{position:relative}
.lex-search i{position:absolute;left:1rem;top:50%;transform:translateY(-50%);color:var(--txm);font-size:1rem}
.lex-inp{width:100%;border:2px solid var(--bdr);border-radius:var(--r);padding:.68rem 1rem .68rem 2.55rem;font-family:var(--fb);font-size:.96rem;font-weight:600;color:var(--tx);background:var(--wh);outline:none;transition:border-color .2s,box-shadow .2s}
.lex-inp:focus{border-color:var(--lo);box-shadow:0 0 0 2px var(--lo);outline:none}.lex-inp::placeholder{color:var(--txm);font-weight:400}
.cat-tabs{display:flex;gap:.35rem;flex-wrap:wrap;margin:.85rem 0}
.cat-tab{border:2px solid var(--bdr);background:var(--wh);border-radius:2rem;padding:.27rem .78rem;font-family:var(--fb);font-size:.77rem;font-weight:700;cursor:pointer;color:var(--txs);transition:all .2s}
.cat-tab:hover{border-color:var(--lo);color:var(--lo-h)}.cat-tab.active{background:var(--lp);border-color:var(--lp);color:#fff}
.term-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);margin-bottom:.6rem;overflow:hidden;transition:box-shadow .2s}
.term-card:hover{box-shadow:var(--sh)}
.term-card-hdr{display:flex;align-items:center;gap:.75rem;padding:.9rem 1.15rem;cursor:pointer}
.term-name{font-weight:700;font-size:.97rem;color:var(--tx);flex:1}
.term-prev{font-size:.79rem;color:var(--txm);margin-top:.07rem}
.expand-ico{color:var(--txm);transition:transform .2s;flex-shrink:0}
.term-card.open .expand-ico{transform:rotate(180deg)}
/* max-height:0 hides a thing from the eye and from nothing else. Measured on
   the lexicon page: 252 collapsed bodies, 134,489 characters of definitions,
   notes, legislation and related terms, all of it reported by
   checkVisibility() as rendered — so a screen reader met the whole lexicon as
   one wall of prose. Controls, same page, same call: display:none false,
   visibility:hidden false, max-height:0 TRUE.
   visibility is the one that prunes, and it is transitionable as a discrete
   step: delay it to the end of the collapse so the animation still plays, and
   apply it immediately on open so the content is there as it grows. */
.term-body{max-height:0;overflow:hidden;visibility:hidden;transition:max-height .35s ease,padding .3s,visibility 0s linear .35s}
.term-card.open .term-body{max-height:900px;padding:0 1.15rem 1.15rem;visibility:visible;transition:max-height .35s ease,padding .3s,visibility 0s}
.lex-mod-link{display:flex;align-items:center;gap:.7rem;background:var(--lp-t);border:1px solid rgba(17,58,92,.15);border-radius:var(--rs);padding:.52rem .9rem;margin-top:.8rem;cursor:pointer;transition:all .18s}
.lex-mod-link:hover{background:var(--lp-m);border-color:var(--lp);box-shadow:var(--shm)}
.lex-mod-icon{width:1.7rem;height:1.7rem;background:var(--lp);border-radius:.35rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.8rem;color:var(--lo)}
.lex-mod-text{flex:1;min-width:0}
.lex-mod-cta{font-size:.63rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--lp);line-height:1;margin-bottom:.18rem}
.lex-mod-title{font-size:.82rem;font-weight:700;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
.lex-mod-arrow{color:var(--lo-bt);font-size:.85rem;flex-shrink:0}
body.liq-dark .lex-mod-link{background:rgba(214,69,69,.07);border-color:rgba(214,69,69,.18)}
body.liq-dark .lex-mod-link:hover{background:rgba(214,69,69,.16);border-color:rgba(214,69,69,.4)}
body.liq-dark .lex-mod-cta{color:var(--lo-bt)}
.term-def{font-size:.92rem;color:var(--txs);line-height:1.7;margin-bottom:.85rem}
.leg-tag{display:inline-flex;align-items:center;background:var(--lp-t);border:1px solid rgba(17,58,92,.15);color:var(--lp-m);font-size:.67rem;font-weight:700;padding:.13rem .48rem;border-radius:3px;margin:.13rem}
.rel-chip{display:inline-flex;align-items:center;background:var(--lo-l);color:var(--lo-bt);font-size:.69rem;font-weight:700;padding:.13rem .48rem;border-radius:3px;cursor:pointer;margin:.13rem;transition:background .2s}
.rel-chip:hover{background:rgba(214,69,69,.22)}
.tod-card{background:linear-gradient(135deg,var(--lp-d),var(--lp-m));border-radius:var(--rl);padding:1.35rem;color:#fff;margin-bottom:1rem}
.tod-lbl{font-size:.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--lo-bt);margin-bottom:.35rem}
.tod-term{font-family:var(--fd);font-size:1.35rem;margin-bottom:.35rem}
.tod-def{font-size:.86rem;color:rgba(255,255,255,.7);line-height:1.6;margin:0}
.lex-xp-row{display:flex;align-items:center;gap:.7rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.65rem 1rem;margin-bottom:.85rem}
.lex-xp-bar{flex:1;height:5px;background:var(--g100);border-radius:99px;overflow:hidden}
.lex-xp-fill{height:100%;background:var(--lo);border-radius:99px;transition:width .5s}

/* TOOLS */
.tool-tabs{display:flex;background:var(--g100);border-radius:var(--r) var(--r) 0 0;border:1px solid var(--bdr);border-bottom:none;padding:.3rem .3rem 0}
.tool-tab{flex:1;border:none;background:transparent;font-family:var(--fb);font-size:.84rem;font-weight:700;padding:.6rem .5rem;border-radius:var(--rs) var(--rs) 0 0;cursor:pointer;color:var(--txs);display:flex;align-items:center;justify-content:center;gap:.35rem;transition:all .2s}
.tool-tab:hover{background:rgba(255,255,255,.7)}.tool-tab.active{background:var(--wh);color:var(--lp)}
.tool-panel{display:none;background:var(--wh);border:1px solid var(--bdr);border-radius:0 0 var(--rl) var(--rl);padding:1.75rem}
.tool-panel.active{display:block}
.diag-wrap{max-width:620px;margin:0 auto}
.diag-q{font-family:var(--fd);font-size:1.18rem;color:var(--lp);margin-bottom:1.15rem;text-align:center}
.diag-opts{display:flex;flex-direction:column;gap:.55rem}
/* LTC decision-tool option list (CIS Reportability Triage etc.) */
.cis-opts{display:flex;flex-direction:column;gap:.5rem}
.cis-opt{width:100%;text-align:left;background:var(--wh);border:2px solid var(--bdr);border-radius:var(--r);padding:.7rem .9rem;font-family:var(--fb);font-size:.88rem;font-weight:600;cursor:pointer;color:var(--tx);display:flex;align-items:flex-start;gap:.6rem;transition:all .2s}
.cis-opt>i{color:var(--g400);font-size:1.05rem;flex-shrink:0;margin-top:.05rem}
.cis-opt:hover{border-color:var(--lo);background:var(--lo-p)}
.cis-opt.sel{border-color:var(--lo);background:var(--lo-l)}
.cis-opt.sel>i{color:var(--lo-h)}
.cis-steps{margin:.2rem 0 0 0;padding-left:1.15rem;font-size:.86rem;color:var(--tx)}
.cis-steps li{margin-bottom:.3rem}
/* LOC Funding-Envelope Calculator */
.fc-env{background:var(--wh);border:1.5px solid var(--bdr);border-radius:var(--r);padding:.7rem .85rem;margin-bottom:.7rem}
.fc-env-name{font-weight:700;font-size:.9rem;color:var(--tx);margin-bottom:.4rem;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.fc-tag{font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;padding:.1rem .4rem;border-radius:.3rem}
.fc-tag.fc-flow{background:rgba(220,38,38,.12);color:#dc2626}
.fc-tag.fc-keep{background:rgba(22,163,74,.12);color:#16a34a}
.fc-result-card{background:var(--wh);border:1.5px solid var(--bdr);border-radius:var(--r);padding:.4rem .85rem}
.fc-line{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:.5rem 0;border-bottom:1px solid var(--bdr)}
.fc-line:last-child{border-bottom:none}
.fc-line-name{font-weight:600;font-size:.86rem;color:var(--tx)}
.fc-line-treat{font-weight:700;font-size:.84rem;text-align:right}
.diag-btn{width:100%;text-align:left;background:var(--wh);border:2px solid var(--bdr);border-radius:var(--r);padding:.82rem 1rem;font-family:var(--fb);font-size:.91rem;font-weight:600;cursor:pointer;color:var(--tx);display:flex;align-items:center;gap:.65rem;transition:all .2s}
.diag-btn:hover{border-color:var(--lo);background:var(--lo-p);transform:translateX(4px)}
.diag-ico{width:2rem;height:2rem;background:var(--g100);border-radius:var(--rs);display:flex;align-items:center;justify-content:center;color:var(--lp-m);flex-shrink:0}
.diag-yesno{display:flex;gap:.9rem;justify-content:center;margin-top:.5rem}
.d-yn{padding:.72rem 2rem;border-radius:var(--r);border:2px solid;font-family:var(--fb);font-weight:700;font-size:.95rem;cursor:pointer;display:flex;align-items:center;gap:.45rem;transition:all .2s}
.d-yn-y{border-color:var(--ok);color:var(--ok-bt);background:var(--ok-l)}.d-yn-y:hover{background:var(--ok);color:#fff}
.d-yn-n{border-color:var(--er);color:var(--er-bt);background:var(--er-l)}.d-yn-n:hover{background:var(--er);color:#fff}
.d-yn-y.sel{background:var(--ok);color:#fff}.d-yn-n.sel{background:var(--er);color:#fff}
.diag-back{display:flex;align-items:center;gap:.32rem;background:none;border:none;font-family:var(--fb);font-size:.82rem;font-weight:700;color:var(--txm);cursor:pointer;margin-top:1rem;padding:0}
.diag-back:hover{color:var(--txs)}
.diag-prog{display:flex;gap:.38rem;align-items:center;justify-content:center;margin-bottom:1.15rem}
.d-dot{width:8px;height:8px;border-radius:50%;background:var(--g200);transition:background .2s}
.d-dot.done{background:var(--g400)}.d-dot.active{background:var(--lo)}
.diag-res{max-width:520px;margin:0 auto;text-align:center}
.diag-res-ico{width:3.4rem;height:3.4rem;background:var(--lo-l);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.55rem;color:var(--lo);margin:0 auto .9rem}
.diag-res-title{font-family:var(--fd);font-size:1.3rem;color:var(--lp);margin-bottom:.6rem}
.diag-res-body{color:var(--txs);font-size:.93rem;margin-bottom:1.25rem;line-height:1.7}
.ck-item{display:flex;gap:.65rem;align-items:flex-start;padding:.75rem .92rem;border:1px solid var(--bdr);border-radius:var(--rs);margin-bottom:.48rem;cursor:pointer;transition:all .2s;background:var(--wh)}
.ck-item:hover{border-color:var(--lo);background:var(--lo-p)}.ck-item.chk{border-color:var(--ok);background:var(--ok-l)}
.ck-box{width:1.2rem;height:1.2rem;border:2px solid var(--bdr);border-radius:3px;flex-shrink:0;margin-top:.1rem;display:flex;align-items:center;justify-content:center;transition:all .2s}
.ck-item.chk .ck-box{background:var(--ok);border-color:var(--ok);color:#fff}
.ck-txt{font-size:.9rem;font-weight:600;color:var(--tx)}
.ck-sub{font-size:.77rem;color:var(--txm);font-weight:400;margin-top:.13rem}
.bld-step{padding:1.05rem;border:1px solid var(--bdr);border-radius:var(--r);margin-bottom:.68rem;transition:all .2s}
.bld-step.done{border-color:var(--ok);background:var(--ok-l)}
.bld-hdr{display:flex;align-items:center;gap:.75rem;cursor:pointer}
.bld-num{width:2rem;height:2rem;border-radius:50%;background:var(--g100);color:var(--txs);font-weight:800;font-size:.82rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s}
.bld-step.done .bld-num{background:var(--ok);color:#fff}
.bld-title{font-weight:700;font-size:.93rem;flex:1}
.bld-body{display:none;padding-top:.8rem}
.bld-step.open .bld-body{display:block}
.bld-body p{font-size:.89rem;color:var(--txs);margin-bottom:.7rem}
.bld-inp{width:100%;border:1.5px solid var(--bdr);border-radius:var(--rs);padding:.48rem .78rem;font-family:var(--fb);font-size:.89rem;color:var(--tx);outline:none;transition:border-color .2s,box-shadow .2s;margin-bottom:.55rem}
.bld-inp:focus{border-color:var(--lo);box-shadow:0 0 0 2px var(--lo);outline:none}

/* PROFILE */
.lvl-card{background:linear-gradient(135deg,var(--lp-d),var(--lp-m));border-radius:var(--rl);padding:2rem;color:#fff;text-align:center}
/* Streak card on My Progress */
.streak-card{background:linear-gradient(135deg,#1a0d00,#3d1f00);border-radius:var(--rl);padding:1.6rem;color:#fff;height:100%;border:1px solid rgba(214,69,69,.25)}
.streak-card-flame{font-size:2.4rem;filter:drop-shadow(0 2px 8px rgba(214,69,69,.6));line-height:1;margin-bottom:.35rem}
.streak-card-num{font-size:3rem;font-weight:800;color:var(--lo);line-height:1;font-family:var(--fd)}
.streak-card-label{font-size:.78rem;color:rgba(255,255,255,.55);text-transform:uppercase;letter-spacing:.1em;font-weight:700;margin-bottom:1.1rem}
.streak-stat-row{display:flex;gap:.5rem;margin-bottom:.5rem}
.streak-stat{flex:1;background:rgba(255,255,255,.07);border-radius:var(--rs);padding:.6rem .7rem;text-align:center}
.streak-stat-val{font-size:1.25rem;font-weight:800;color:#fff;line-height:1}
.streak-stat-lbl{font-size:.63rem;color:rgba(255,255,255,.64);text-transform:uppercase;letter-spacing:.07em;margin-top:.2rem}
.streak-freeze-row{display:flex;align-items:center;gap:.5rem;background:rgba(99,102,241,.15);border:1px solid rgba(99,102,241,.3);border-radius:var(--rs);padding:.5rem .75rem;margin-top:.55rem;font-size:.8rem;color:rgba(255,255,255,.7)}
.streak-freeze-ico{font-size:1rem;color:#a5b4fc}
.streak-tip{font-size:.73rem;color:rgba(255,255,255,.62);margin-top:.65rem;line-height:1.4;text-align:center}
/* Tier completion badges */
.tier-badge-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}
.tier-badge-card{border-radius:var(--rl);padding:1.4rem 1.2rem;border:2px solid;position:relative;overflow:hidden;transition:transform .2s}
.tier-badge-card.earned{cursor:default}
.tier-badge-card.locked{opacity:.55;filter:grayscale(.4)}
.tier-badge-card::before{content:'';position:absolute;inset:0;opacity:.06;pointer-events:none}
.tier-badge-icon{font-size:2.2rem;margin-bottom:.5rem;line-height:1}
.tier-badge-name{font-family:var(--fd);font-size:1rem;font-weight:700;margin-bottom:.2rem}
.tier-badge-sub{font-size:.75rem;opacity:.7;margin-bottom:.7rem;line-height:1.4}
.tier-badge-progress{height:5px;border-radius:99px;background:rgba(255,255,255,.18);overflow:hidden;margin-bottom:.5rem}
.tier-badge-fill{height:100%;border-radius:99px;background:rgba(255,255,255,.7);transition:width .6s}
.tier-badge-count{font-size:.72rem;opacity:.65;font-weight:700}
.tier-badge-earned-stamp{position:absolute;top:.7rem;right:.8rem;background:rgba(255,255,255,.18);border-radius:2rem;padding:.15rem .55rem;font-size:.65rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;display:flex;align-items:center;gap:.3rem}
.streak-done-today{display:inline-flex;align-items:center;gap:.35rem;background:rgba(74,222,128,.15);border:1px solid rgba(74,222,128,.35);border-radius:2rem;padding:.22rem .7rem;font-size:.75rem;font-weight:700;color:#4ade80;margin-bottom:.8rem}
.streak-pending-today{display:inline-flex;align-items:center;gap:.35rem;background:rgba(214,69,69,.15);border:1px solid rgba(214,69,69,.35);border-radius:2rem;padding:.22rem .7rem;font-size:.75rem;font-weight:700;color:var(--lo-bt);margin-bottom:.8rem;cursor:pointer}
.streak-pending-today:hover{background:rgba(214,69,69,.25)}
.lvl-icon-big{font-size:2.75rem;margin-bottom:.4rem}
.lvl-name{font-family:var(--fd);font-size:1.65rem;font-weight:700}
.lvl-sub{color:rgba(255,255,255,.76);font-size:.86rem;margin-bottom:1.05rem}
.ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:.6rem}
.ach-badge{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.95rem;text-align:center;transition:box-shadow .2s}
.ach-badge.unlocked{border-color:var(--lo)}.ach-badge.unlocked:hover{box-shadow:var(--shm)}
.ach-badge.locked{opacity:.5;filter:grayscale(.5)}
.ach-ico{font-size:1.85rem;margin-bottom:.38rem}
.ach-ico.u{color:var(--lo)}.ach-ico.l{color:var(--g400)}
.ach-name{font-size:.81rem;font-weight:800;color:var(--tx);margin-bottom:.13rem}
.ach-desc{font-size:.71rem;color:var(--txm)}
body.liq-dark .ach-desc{color:var(--txs)}
.ach-xp{font-size:.69rem;font-weight:700;color:var(--lo-bt);margin-top:.28rem}
.ach-filter-bar{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;margin-bottom:1rem}
.ach-fbtn{padding:.28rem .72rem;border-radius:2rem;border:1.5px solid var(--bdr);background:var(--wh);font-size:.75rem;font-weight:700;color:var(--txm);cursor:pointer;transition:all .18s;white-space:nowrap}
.ach-fbtn:hover{border-color:var(--lp);color:var(--lp)}
.ach-fbtn.active{background:var(--lp);border-color:var(--lp);color:#fff}
.ach-unlock-btn{padding:.28rem .72rem;border-radius:2rem;border:1.5px solid var(--bdr);background:var(--wh);font-size:.75rem;font-weight:700;color:var(--txm);cursor:pointer;transition:all .18s;white-space:nowrap}
.ach-unlock-btn:hover{border-color:var(--ok);color:var(--ok)}
.ach-unlock-btn.active{background:var(--ok);border-color:var(--ok);color:#fff}
.ach-badge.ach-hidden{display:none!important}
.ach-empty-msg{grid-column:1/-1;text-align:center;padding:2rem 1rem;color:var(--txm);font-size:.9rem}
body.liq-dark .ach-fbtn{background:var(--g100);color:var(--txs)}
body.liq-dark .ach-fbtn.active{background:var(--lp-m);border-color:var(--lp-m);color:#fff}
body.liq-dark .ach-unlock-btn{background:var(--g100);color:var(--txs)}
body.liq-dark .ach-unlock-btn.active{background:var(--ok);border-color:var(--ok);color:#fff}
.act-item{display:flex;gap:.75rem;align-items:flex-start;padding:.62rem 0;border-bottom:1px solid var(--bdr);font-size:.86rem}
.act-item:last-child{border-bottom:none}
.act-ico{width:1.85rem;height:1.85rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.86rem}
.act-lbl{color:var(--tx);font-weight:600}.act-time{color:var(--txm);font-size:.74rem}
.act-xp{color:var(--lo-bt);font-weight:700;font-size:.79rem;white-space:nowrap;margin-left:auto;padding-left:.5rem}
.act-item.act-hidden{display:none}
.act-show-more{display:block;text-align:center;font-size:.8rem;font-weight:700;color:var(--lo-bt);cursor:pointer;margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--bdr);transition:color .2s}
.act-show-more:hover{color:var(--lo-h)}
body.liq-dark .act-show-more{color:var(--lo-bt)}
.trk-bar{height:7px;background:var(--g100);border-radius:99px;overflow:hidden;margin-top:.32rem}
.trk-fill{height:100%;border-radius:99px;transition:width .6s}

/* TOAST + LEVEL-UP */
.toast-box{position:fixed;bottom:1.5rem;right:1.5rem;z-index:var(--z-toast);display:flex;flex-direction:column;gap:.42rem}
/* Mobile bottom nav */
.mob-nav{display:none;position:fixed;bottom:0;left:0;right:0;z-index:var(--z-mob-nav);background:var(--wh);border-top:1px solid var(--bdr);box-shadow:0 -2px 12px rgba(0,0,0,.08)}
.mob-nav-inner{display:flex;align-items:stretch;height:3.6rem}
.mob-nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.18rem;border:none;background:none;cursor:pointer;color:var(--txm);transition:color .15s;padding:0;font-size:.58rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;position:relative}
.mob-nav-btn i{font-size:1.18rem;line-height:1}
.mob-nav-btn.active{color:var(--lp)}
.mob-nav-btn.active i{color:var(--lo)}
.mob-nav-badge{position:absolute;top:.45rem;right:calc(50% - .9rem);background:var(--er);color:#fff;font-size:.55rem;font-weight:800;border-radius:9px;padding:.06rem .32rem;min-width:1rem;text-align:center;line-height:1.3;pointer-events:none}
body.has-mob-nav .liq-page{padding-bottom:3.6rem}
body.has-mob-nav .a11y-wrap{bottom:5.2rem}
body.has-mob-nav .toast-box{bottom:5.2rem}
@media(max-width:991px){.mob-nav{display:block}body{padding-bottom:0}}
.ltoast{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);box-shadow:var(--shl);padding:.88rem 1.05rem;display:flex;align-items:center;gap:.75rem;min-width:265px;max-width:330px;animation:tIn .35s cubic-bezier(.4,0,.2,1) both}
.ltoast.out{animation:tOut .3s ease both}
@keyframes tIn{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}}
@keyframes tOut{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(40px)}}
.ltoast-ico{font-size:1.25rem;flex-shrink:0}.ltoast-lbl{font-size:.85rem;font-weight:700;color:var(--tx)}.ltoast-sub{font-size:.77rem;color:var(--txm)}
.lu-overlay{display:none;position:fixed;inset:0;background:rgba(31,14,37,.85);z-index:var(--z-modal);align-items:center;justify-content:center}
.lu-overlay.show{display:flex}
.lu-card{background:linear-gradient(135deg,var(--lp-d),var(--lp-m));border-radius:var(--rl);padding:2.5rem 2.2rem;text-align:center;color:#fff;max-width:390px;width:90%;animation:popIn .45s cubic-bezier(.4,0,.2,1) both}
@keyframes popIn{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}
.lu-ico{font-size:3.4rem;margin-bottom:.6rem}.lu-ttl{font-size:.77rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--lo);margin-bottom:.38rem}
.lu-name{font-family:var(--fd);font-size:1.9rem;font-weight:700;margin-bottom:.38rem}.lu-sub{color:rgba(255,255,255,.65);font-size:.91rem;margin-bottom:1.4rem}
/* MISC */
.callout{display:flex;gap:.75rem;padding:.9rem 1.05rem;border-radius:var(--r);font-size:.9rem;margin-bottom:.9rem;align-items:flex-start}
.callout i{flex-shrink:0;margin-top:.15rem}
.cl-info{background:var(--inf-l);border-left:4px solid var(--inf)}.cl-info i{color:var(--inf)}
.cl-warn{background:var(--wa-l);border-left:4px solid var(--wa)}.cl-warn i{color:var(--wa)}
.cl-er{background:var(--er-l);border-left:4px solid var(--er)}.cl-er i{color:var(--er)}
.cl-ok{background:var(--ok-l);border-left:4px solid var(--ok)}.cl-ok i{color:var(--ok)}
.s-lbl{font-size:.71rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--lo-bt);display:block;margin-bottom:.33rem}
.s-title{font-size:clamp(1.4rem,3.5vw,2rem);color:var(--lp);margin-bottom:.38rem}
.s-sub{color:var(--txs);max-width:540px;font-size:.94rem;margin:0}
.liq-footer{background:var(--lp-d);color:rgba(255,255,255,.6);padding:2.5rem 0 1.5rem;margin-top:4rem}
.footer-brand{font-family:var(--fd);font-size:1.2rem;color:#fff;font-weight:700;margin-bottom:.33rem}
.footer-link{color:rgba(255,255,255,.5);font-size:.82rem;display:block;margin-bottom:.28rem;transition:color .2s}
.footer-link:hover{color:var(--lo-bt)}
.footer-disc{font-size:.74rem;color:rgba(255,255,255,.3);border-top:1px solid rgba(255,255,255,.08);padding-top:1rem;margin-top:1.65rem}
@media(max-width:768px){.hero-main{padding:3.5rem 0 3rem}.nav-xp{display:none!important}.ach-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.mod-tab{font-size:.77rem;padding:.5rem .3rem}}

/* ── ACCESSIBILITY PANEL ────────────────────────────────── */
.a11y-wrap{position:fixed;bottom:1.5rem;left:1.5rem;z-index:var(--z-a11y)}
.a11y-btn{width:3.1rem;height:3.1rem;border-radius:50%;background:var(--lp);border:3px solid var(--lo);color:var(--lo-bt);font-size:1.3rem;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shl);transition:all .2s;outline:none}
.a11y-btn:hover{background:var(--lp-m);transform:scale(1.08)}
.a11y-btn:focus-visible{outline:3px solid var(--lo);outline-offset:3px}
.a11y-panel{position:absolute;bottom:calc(100% + .75rem);left:0;width:282px;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);box-shadow:var(--shl);overflow:hidden;opacity:0;transform:translateY(10px) scale(.97);pointer-events:none;transition:opacity .22s ease,transform .22s ease}
.a11y-panel.show{opacity:1;transform:translateY(0) scale(1);pointer-events:all}
.a11y-panel-hdr{background:var(--lp);color:#fff;padding:.85rem 1.1rem;display:flex;align-items:center;justify-content:space-between}
.a11y-panel-title{font-family:var(--fd);font-size:1rem;font-weight:700;display:flex;align-items:center;gap:.5rem}
.a11y-close{background:none;border:none;color:rgba(255,255,255,.7);font-size:1.3rem;cursor:pointer;line-height:1;padding:0;transition:color .15s}
.a11y-close:hover{color:#fff}
.a11y-body{padding:.85rem 1rem}
.a11y-row{display:flex;align-items:center;justify-content:space-between;padding:.55rem 0;border-bottom:1px solid var(--bdr)}
.a11y-row:last-of-type{border-bottom:none}
.a11y-row-lbl{font-size:.87rem;font-weight:700;color:var(--tx);display:flex;align-items:center;gap:.5rem}
.a11y-row-lbl i{color:var(--lo);font-size:.95rem}
/* Toggle switch */
.a11y-toggle{width:2.8rem;height:1.55rem;border-radius:99px;border:none;cursor:pointer;position:relative;transition:background .2s;flex-shrink:0;outline:none}
.a11y-toggle:focus-visible{outline:3px solid var(--lo);outline-offset:2px}
.a11y-toggle.off{background:var(--g200)}
.a11y-toggle.on{background:var(--lo)}
.a11y-toggle::after{content:'';position:absolute;top:.18rem;left:.18rem;width:1.2rem;height:1.2rem;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 4px rgba(0,0,0,.2)}
.a11y-toggle.on::after{transform:translateX(1.25rem)}
/* Step controls (font/zoom) */
.a11y-step{display:flex;align-items:center;gap:.5rem}
.a11y-step-btn{width:1.9rem;height:1.9rem;border-radius:50%;border:2px solid var(--bdr);background:var(--wh);cursor:pointer;font-weight:800;font-size:.95rem;display:flex;align-items:center;justify-content:center;color:var(--tx);transition:all .15s;line-height:1;padding:0;outline:none}
.a11y-step-btn:hover{border-color:var(--lo);color:var(--lo-bt);background:var(--lo-p)}
.a11y-step-btn:disabled{opacity:.35;cursor:not-allowed}
.a11y-step-btn:focus-visible{outline:3px solid var(--lo);outline-offset:2px}
.a11y-step-val{font-size:.82rem;font-weight:800;color:var(--txs);min-width:2.6rem;text-align:center}
.a11y-reset{width:100%;margin-top:.75rem;border:1.5px solid var(--bdr);background:transparent;border-radius:var(--rs);padding:.5rem;font-family:var(--fb);font-size:.82rem;font-weight:700;color:var(--txm);cursor:pointer;transition:all .2s;outline:none}
.a11y-reset:hover{border-color:var(--er);color:var(--er-bt);background:var(--er-l)}
.a11y-reset:focus-visible{outline:3px solid var(--lo);outline-offset:2px}
/* Font picker */
.a11y-font-row{flex-direction:column;align-items:flex-start;gap:.45rem;padding-bottom:.6rem}
.a11y-font-chips{display:grid;grid-template-columns:repeat(4,1fr);gap:.32rem;width:100%}
.a11y-font-chip{border:1.5px solid var(--bdr);border-radius:var(--rs);background:var(--wh);font-size:.78rem;font-weight:700;color:var(--txs);cursor:pointer;padding:.42rem .25rem;text-align:center;transition:all .18s;line-height:1.25;outline:none}
.a11y-font-chip:hover{border-color:var(--lo);color:var(--lo-bt);background:var(--lo-p)}
.a11y-font-chip.active{border-color:var(--lp);background:var(--lp);color:#fff}
.a11y-font-chip:focus-visible{outline:3px solid var(--lo);outline-offset:2px}

/* ── DARK MODE ───────────────────────────────────────────── */
/* Generic dark-mode <option> fallback. body.liq-dark sets color-scheme:dark
   below, which makes Firefox + most Chromium versions render the open
   dropdown list with dark-themed colors automatically. This rule is the
   defensive layer for any browser/version that doesn't fully respect
   color-scheme for option list rendering — it explicitly sets dark
   surface + light text on every <option> when the page is in dark mode.
   Placed BEFORE the per-class option rules so those (which use the same
   colors anyway) override only on specificity grounds, not value. */
body.liq-dark select option{background-color:#132030;color:#dce8f2}

body.liq-dark{
  /* Native UI (dropdown lists, form controls, scrollbars) should match the
     app's dark theme — overrides the :root default and prevents Chrome's
     Auto Dark Mode for Web Contents from second-guessing the page. */
  color-scheme:dark;
  --heading:#dce8f2;
  --bg:#0a121b;--wh:#132030;--g100:#1a2a3c;--g200:#26394f;--g400:#6a8098;--g600:#8a9db2;
  /* Text-only pillar accents, lightened for this theme with hue preserved. The
     raw PILLARS[].accent values fail badly as text here — #6d28d9 measures
     2.31:1, #0e7490 3.07:1 and #a16207 3.34:1 against --wh, and four of the
     five text uses are 11-16px, which needs 4.5:1. --pa itself is untouched,
     so rings, rules, card borders and the pillar-bar indicator are unchanged. */
  --pillar-text-framework:#9f76e0;   /* 4.81 on --wh · 5.51 on --bg */
  --pillar-text-care:#0997bd;        /* 4.83 on --wh · 5.54 on --bg */
  --pillar-text-leadership:#ba7f29;  /* 4.82 on --wh · 5.52 on --bg */
  --tx:#dce8f2;--txs:#aec2d4;--txm:#7d93a8;--bdr:#26394f;
  --ok-l:rgba(22,163,74,.18);--er-l:rgba(220,38,38,.18);--wa-l:rgba(217,119,6,.18);--inf-l:rgba(37,99,235,.18);
  --ok-bt:#86efac;--wa-bt:#fcd34d;--er-bt:#fca5a5;--inf-bt:#93c5fd;
  --vi-bt:#c4b5fd;      /* 8.55 on the violet tint over --wh, against 2.77 for the raw accent */
  --lo-bt:#e68f8f;      /* 6.81 --wh · 5.92 card · 4.75 on --lo-l over the card */
  --lo-l:rgba(214,69,69,.20);--lo-p:rgba(214,69,69,.10);--lp-t:rgba(214,69,69,.08);
  --sh:0 2px 12px rgba(0,0,0,.35);--shm:0 4px 20px rgba(0,0,0,.4);--shl:0 8px 32px rgba(0,0,0,.5);
}
body.liq-dark .hero-main,
body.liq-dark .section-hero,
body.liq-dark .lnav,
body.liq-dark .stats-bar,
body.liq-dark .acad-xp-bar,
body.liq-dark .liq-footer{filter:none}
/* Headings that use --lp as text colour need to lighten in dark mode */
body.liq-dark .s-title,
body.liq-dark .read-sec h4,
body.liq-dark .quiz-q-txt,
body.liq-dark .scen-q,
body.liq-dark .diag-q,
body.liq-dark .diag-res-title,
body.liq-dark .track-hdr h3,
body.liq-dark .mod-info h5,
body.liq-dark .why-card h4,
body.liq-dark .feat-card h3,
body.liq-dark .bld-title,
body.liq-dark .term-name,
body.liq-dark .ach-name { color: var(--tx); }
/* Additional heading/text elements using color:var(--lp) */
body.liq-dark .read-sec h4,
body.liq-dark .scen-q,
body.liq-dark .quiz-q-txt,
body.liq-dark .diag-q,
body.liq-dark .diag-res-title,
body.liq-dark .s-title { color: var(--heading) !important; }
body.liq-dark .mod-tab.active,
body.liq-dark .tool-tab.active { color: var(--tx); }
body.liq-dark .lex-inp,
body.liq-dark .bld-inp{background:var(--wh);color:var(--tx);border-color:var(--bdr)}
body.liq-dark .ltoast{background:var(--wh);border-color:var(--bdr)}
body.liq-dark .lu-card{background:linear-gradient(135deg,#08131f,#14304d)}
body.liq-dark input::placeholder{color:var(--txm)}
/* Lexicon element fixes */
body.liq-dark .leg-tag{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.13);color:var(--txs)}
body.liq-dark .term-def{color:var(--txs)}
/* ── Dark mode: elements using var(--lp) that need contrast fixes ── */
/* Expand/collapse + filter bar interactive text */
body.liq-dark .filter-btn{color:var(--txs);border-color:var(--bdr)}
body.liq-dark .filter-btn:hover{border-color:var(--lo);color:var(--lo-bt)}
body.liq-dark .filter-btn.active{background:var(--lo-btn);border-color:var(--lo);color:var(--lo-btn-tx)}
/* Tier labels and progress text */
body.liq-dark .tier-label{color:var(--txs)}
body.liq-dark .tier-progress-text{color:var(--txm)}
/* Purple button */
body.liq-dark .btn-pu{background:var(--lp-m);border-color:var(--lp-m)}
/* Lexicon category tab active state */
body.liq-dark .cat-tab.active{background:var(--lp-m);border-color:var(--lp-m)}
body.liq-dark .term-prev{color:var(--txm)}
body.liq-dark .term-notes{color:var(--txs);background:var(--g100);border-left-color:var(--g400)}
body.liq-dark .tod-def{color:rgba(255,255,255,.7)}
/* Sidebar stat numbers that use inline color:var(--lp) */
body.liq-dark #lex-stat-v,
body.liq-dark #lex-stat-t{color:var(--tx)!important}
/* Profile page stat box numbers that use color:var(--lp) */
body.liq-dark .prof-stat-num{color:var(--tx)!important}
/* Profile page track names in curriculum progress */
body.liq-dark .prof-track-name{color:var(--tx)!important}
/* Category sidebar labels */
body.liq-dark #lex-cat-counts span{color:var(--txs)}
/* Lexicon XP tracker label */
body.liq-dark .lex-xp-row span{color:var(--txs)}

/* ── HIGH CONTRAST ───────────────────────────────────────── */
/* High contrast is INDEPENDENT of dark mode — a user can have either, both,
   or neither — so the two cases need separate text ramps. Pushing text toward
   white is only correct on a dark background; on the light theme it has to go
   the other way, toward black. Setting a single light-on-dark ramp here (the
   pattern this file inherited) makes body text near-invisible for exactly the
   users who turned the setting on. Both branches below are written against
   their own background, and the accent is darkened or lightened to stay
   legible on it. */
body.liq-hc{
  --tx:#000000;--txs:#12202e;--txm:#243a4e;--bdr:#4f7fb0;
  --lo:#a51f1f;--lo-h:#8a1414;--lo-l:rgba(165,31,31,.16);
  --lo-bt:#8a1414;--lo-btn:#a51f1f;--lo-btn-tx:#fff;
}
body.liq-hc.liq-dark{
  --tx:#ffffff;--txs:#eaf2fb;--txm:#b8cfe4;--bdr:#7fb0dc;
  --lo:#ff8a7a;--lo-h:#ff6a55;--lo-l:rgba(255,138,122,.25);
  /* The accent inverts here: --lo is a pale salmon, so the solid button needs
     DARK text on it. White measures 1.91:1 — the worst reading in the app, and
     in the theme whose entire purpose is legibility. */
  --lo-bt:#ffb3a8;--lo-btn:#ff8a7a;--lo-btn-tx:#2b0f0a;
}
body.liq-hc .mod-card,body.liq-hc .term-card,body.liq-hc .liq-card,
body.liq-hc .feat-card,body.liq-hc .why-card{border-width:2px}
body.liq-hc a{text-decoration:underline}

/* ── REDUCE MOTION ───────────────────────────────────────── */
body.liq-reduced-motion *,body.liq-reduced-motion *::before,body.liq-reduced-motion *::after{
  animation-duration:.01ms!important;animation-iteration-count:1!important;
  transition-duration:.01ms!important;scroll-behavior:auto!important;
}


/* ── LOGO SVGs ──────────────────────────────────────────── */
.hiq-logo       { height: 36px; width: auto; display: block; }
.hiq-logo-login { height: 58px; width: auto; display: block; margin: 0 auto; }

/* ── Inspection-Readiness self-audit rows ───────────────── */
.ir-list{display:flex;flex-direction:column;gap:.5rem}
.ir-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.6rem .85rem;flex-wrap:wrap}
.ir-row-lbl{font-size:.86rem;color:var(--tx);flex:1;min-width:180px;line-height:1.35}
.ir-seg{display:inline-flex;gap:.25rem;flex-shrink:0}
.ir-seg-btn{font-size:.76rem;font-weight:700;border:1px solid var(--bdr);background:var(--wh);color:var(--txs);border-radius:var(--rs);padding:.25rem .6rem;cursor:pointer;transition:all .15s}
.ir-seg-btn:hover{border-color:var(--lo)}
.ir-on-ok{background:var(--ok-l);border-color:var(--ok);color:#14532d}
.ir-on-er{background:var(--er-l);border-color:var(--er);color:#7f1d1d}
.ir-on-na{background:var(--g100);border-color:var(--g400);color:var(--txs)}


/* ── TOOL CARD GRID ─────────────────────────────────────── */
.tools-wrap{display:block}
.tool-sidebar{display:none}
.tools-right{flex:1;min-width:0}
@media(min-width:992px){
  .tools-wrap{display:flex;gap:1.5rem;align-items:flex-start}
  .tool-sidebar{display:block;width:220px;flex-shrink:0;position:sticky;top:5rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:.6rem}
  .tool-grid{display:none!important}
  .tool-mobile-bar{display:none!important}
}
.tools-wrap.has-tool .tool-grid{display:none}
.tool-sb-cat{font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.11em;color:var(--txm);padding:.6rem .55rem .18rem;margin-top:.25rem}
.tool-sb-cat:first-child{margin-top:0}
.tool-sb-divider{height:1px;background:var(--bdr);margin:.4rem .2rem}
.tool-sb-item{display:flex;align-items:center;gap:.55rem;padding:.42rem .55rem;border-radius:var(--rs);cursor:pointer;transition:all .15s;border:1px solid transparent;margin-bottom:.06rem}
.tool-sb-item:hover{background:var(--g100);border-color:var(--bdr)}
.tool-sb-item.active{background:var(--lp-t);border-color:var(--lp)}
body.liq-dark .tool-sb-item.active{background:rgba(214,69,69,.1);border-color:var(--lo)}
.tool-sb-icon{width:1.65rem;height:1.65rem;border-radius:.3rem;display:flex;align-items:center;justify-content:center;font-size:.77rem;flex-shrink:0}
.tool-sb-name{font-size:.79rem;font-weight:700;color:var(--tx);line-height:1.25;flex:1;min-width:0}
.tool-sb-item.active .tool-sb-name{color:var(--lp)}
body.liq-dark .tool-sb-item.active .tool-sb-name{color:var(--tx)}
.tool-sb-start{font-size:.56rem;font-weight:800;letter-spacing:.06em;background:var(--lo-p);color:var(--lo-bt);padding:.06rem .32rem;border-radius:2px;flex-shrink:0;text-transform:uppercase}
.tool-mobile-bar{display:none;align-items:center;gap:.7rem;padding:.65rem .9rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);margin-bottom:1rem}
.tools-wrap.has-tool .tool-mobile-bar{display:flex}
.tool-mobile-back{display:inline-flex;align-items:center;gap:.32rem;font-size:.78rem;font-weight:700;color:var(--txm);background:var(--g100);border:1px solid var(--bdr);border-radius:var(--rs);padding:.3rem .65rem;cursor:pointer;transition:all .15s;flex-shrink:0;white-space:nowrap}
.tool-mobile-back:hover{border-color:var(--lo);color:var(--lo-bt)}
.tool-mobile-bar-icon{width:1.9rem;height:1.9rem;border-radius:.35rem;display:flex;align-items:center;justify-content:center;font-size:.85rem;flex-shrink:0}
.tool-mobile-bar-name{font-size:.9rem;font-weight:800;color:var(--tx);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:.8rem;margin-bottom:1.5rem}
.tool-card{background:var(--wh);border:2px solid var(--bdr);border-radius:var(--rl);padding:1.2rem;cursor:pointer;transition:all .2s;display:flex;flex-direction:column;gap:.45rem}
.tool-card:hover{border-color:var(--lo);box-shadow:var(--shm);transform:translateY(-2px)}
.tool-card.active{border-color:var(--lp);background:var(--lp-t)}
body.liq-dark .tool-card.active{background:rgba(214,69,69,.08);border-color:var(--lo)}
.tool-card-icon{width:2.4rem;height:2.4rem;border-radius:var(--r);display:flex;align-items:center;justify-content:center;font-size:1.15rem}
.tool-card-name{font-weight:800;font-size:.87rem;color:var(--tx);line-height:1.3}
.tool-card.active .tool-card-name{color:var(--lp)}
body.liq-dark .tool-card.active .tool-card-name{color:var(--tx)}
.tool-card-desc{font-size:.73rem;color:var(--txm);line-height:1.5}
.tool-content{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:2rem;min-height:200px}
/* ── JUST CAUSE ASSESSMENT ──────────────────────────────── */
.jca-bar{display:flex;gap:0;margin-bottom:1.6rem;border-radius:var(--r);overflow:hidden;border:1px solid var(--bdr)}
.jca-seg{flex:1;height:6px;background:var(--g100);transition:background .25s}
.jca-seg.s-done{background:var(--ok)}.jca-seg.s-on{background:var(--lo)}.jca-seg.s-risk{background:var(--er)}
.jca-q{font-family:var(--fd);font-size:1.13rem;color:var(--heading);margin-bottom:.35rem}
.jca-ctx{font-size:.85rem;color:var(--txs);line-height:1.6;background:var(--g100);border-radius:var(--r);padding:.78rem 1rem;margin-bottom:1.1rem}
.jca-opt{border:2px solid var(--bdr);background:var(--wh);border-radius:var(--r);padding:.78rem 1rem;cursor:pointer;font-family:var(--fb);font-size:.9rem;font-weight:600;color:var(--tx);display:flex;align-items:center;gap:.65rem;transition:all .2s;margin-bottom:.48rem;width:100%;text-align:left}
.jca-opt:hover{border-color:var(--lo);background:var(--lo-p)}
.jca-opt.a-yes{border-color:var(--ok);background:var(--ok-l)}
.jca-opt.a-partial{border-color:var(--wa);background:var(--wa-l)}
.jca-opt.a-no{border-color:var(--er);background:var(--er-l)}
.jca-pip{width:1.45rem;height:1.45rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.72rem;flex-shrink:0;font-weight:800;background:var(--g200);color:var(--g400)}
.p-yes{background:var(--ok);color:#fff}.p-partial{background:var(--wa);color:#fff}.p-no{background:var(--er);color:#fff}
.jca-res-row{display:flex;align-items:flex-start;gap:.75rem;padding:.62rem 0;border-bottom:1px solid var(--bdr)}
.jca-res-row:last-child{border-bottom:none}
.jca-dot{width:.85rem;height:.85rem;border-radius:50%;flex-shrink:0;margin-top:.22rem}
.d-ok{background:var(--ok)}.d-wa{background:var(--wa)}.d-er{background:var(--er)}
.jca-verdict{border-radius:var(--r);padding:1.2rem 1.4rem;text-align:center;margin-bottom:1.4rem}
.v-go{background:var(--ok-l);border:2px solid var(--ok)}
.v-warn{background:var(--wa-l);border:2px solid var(--wa)}
.v-stop{background:var(--er-l);border:2px solid var(--er)}

/* ── SHARED PLANNER ─────────────────────────────────────── */
.plnr-steps{display:flex;position:relative;margin-bottom:1.6rem}
.plnr-steps::before{content:'';position:absolute;top:.92rem;left:5%;right:5%;height:2px;background:var(--bdr);z-index:0}
.plnr-step{flex:1;display:flex;flex-direction:column;align-items:center;position:relative;z-index:1;cursor:pointer}
.plnr-circle{width:1.85rem;height:1.85rem;border-radius:50%;border:2px solid var(--bdr);background:var(--wh);display:flex;align-items:center;justify-content:center;font-size:.74rem;font-weight:800;color:var(--txm);transition:all .2s}
.plnr-step.done .plnr-circle{background:var(--ok);border-color:var(--ok);color:#fff}
.plnr-step.active .plnr-circle{background:var(--lo-btn);border-color:var(--lo);color:var(--lo-btn-tx)}
.plnr-lbl{font-size:.61rem;font-weight:700;color:var(--txm);margin-top:.28rem;text-align:center;line-height:1.3;max-width:62px}
.plnr-step.active .plnr-lbl{color:var(--lo-bt)}.plnr-step.done .plnr-lbl{color:var(--ok)}
.plnr-title{font-family:var(--fd);font-size:1.1rem;color:var(--heading);margin-bottom:.25rem}
.plnr-sub{font-size:.83rem;color:var(--txs);margin-bottom:1.1rem}
.pf{margin-bottom:.85rem}
.pf label{display:block;font-size:.8rem;font-weight:700;color:var(--txs);margin-bottom:.22rem}
.pi{width:100%;border:1.5px solid var(--bdr);border-radius:var(--rs);padding:.48rem .8rem;font-family:var(--fb);font-size:.87rem;color:var(--tx);outline:none;transition:border-color .2s,box-shadow .2s;background:var(--wh)}
.pi:focus{border-color:var(--lo);box-shadow:0 0 0 2px var(--lo);outline:none}.pi::placeholder{color:var(--txm);font-weight:400}
.pi-ta{min-height:70px;resize:vertical}
.pi-sel{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%239b8faa' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .72rem center;padding-right:2rem}
body.liq-dark .pi{background-color:var(--wh);color:var(--tx);border-color:var(--bdr)}
/* iOS Safari zooms in on focus when font-size < 16px. Bump up on touch devices
   to prevent the jarring zoom-on-tap on every form input across the app. */
@media (max-width:767px){
  .pi,.lex-inp,input[type="text"],input[type="number"],input[type="email"],input[type="password"],input[type="search"],input[type="tel"],input[type="url"],input[type="date"],textarea,select{font-size:16px}
}
/* Touch-target minimums — Apple HIG / WCAG 2.5.5 recommend 44×44px. Bump small
   interactive controls up on phone so tapping isn't a precision exercise. */
@media (max-width:767px){
  .az-btn{min-width:2.5rem;height:2.5rem;font-size:.85rem}
  .filter-btn{padding:.55rem 1rem;font-size:.85rem;min-height:2.5rem}
  .cat-tab{padding:.55rem 1rem;font-size:.82rem;min-height:2.5rem}
  .esa-tab{padding:.6rem 1rem;font-size:.88rem;min-height:2.5rem}
  .mod-tab{padding:.7rem .6rem;font-size:.88rem;min-height:2.75rem}
  .tool-mobile-back{padding:.55rem .9rem;font-size:.85rem;min-height:2.5rem}
  .tool-mobile-bar-icon{width:2.5rem;height:2.5rem;font-size:1rem}
}
/* Modal mobile fixes — prevent the fixed bottom mobile-nav from clipping the
   sticky modal footer. Cap modal max-height below 100vh and lock background
   scroll while a modal is open so the user can't accidentally scroll the
   page underneath. Uses :has() (Safari 15.4+, Chrome 105+, Firefox 121+). */
@media (max-width:991px){
  .admin-modal,.dl-modal,.cf-modal{max-height:calc(100dvh - 5rem);padding-bottom:1.5rem}
  .search-overlay{padding:3vh 1rem 5rem}
  .search-modal{max-height:calc(100dvh - 7rem)}
  .admin-modal-overlay{padding-bottom:4.5rem}
}
/* Body-scroll lock when a modal is open. The :has() form works on modern
   browsers (Chrome 105+, Safari 15.4+, Firefox 121+); the .modal-open
   fallback is toggled by a MutationObserver in 06-nav-router.js for
   older browsers. Either selector triggers the lock. */
body:has(.admin-modal-overlay.open),body:has(.search-overlay.open),body.modal-open{overflow:hidden;touch-action:none}
/* Narrow-phone polish — components that need to reflow under ~480px so the
   3-column daily card stops cramping, the call bubble doesn't overflow on
   long words/URLs, and the tool grid uses a clean single column. */
@media (max-width:480px){
  .daily-home-card{flex-direction:column;align-items:stretch;gap:.85rem;padding:1.1rem 1.2rem;text-align:center}
  .daily-home-card>div:first-child{display:flex;align-items:center;justify-content:center;gap:.6rem}
  .daily-home-card .daily-streak-flame{font-size:1.4rem}
  .daily-home-card .daily-streak-count{font-size:1.4rem;display:inline}
  .daily-home-card .daily-streak-lbl{display:inline}
  .daily-home-info{text-align:left}
  .tool-grid{grid-template-columns:1fr;gap:.6rem}
  .daily-call-bubble-msg{word-break:break-word;hyphens:auto;-webkit-hyphens:auto}
  .daily-call-bubble-hd{flex-wrap:wrap}
  .daily-stats-cta::before,.daily-stats-cta::after{display:none}
}

/* ── ACCOMMODATION OPTIONS ──────────────────────────────── */
.acc-opt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.42rem;margin:.42rem 0 .82rem}
.acc-chip{border:1.5px solid var(--bdr);border-radius:var(--rs);padding:.42rem .68rem;cursor:pointer;font-family:var(--fb);font-size:.8rem;font-weight:600;color:var(--txs);display:flex;align-items:center;gap:.38rem;transition:all .2s;background:var(--wh)}
.acc-chip:hover{border-color:var(--lo);color:var(--lo-h)}.acc-chip.on{border-color:var(--ok);background:var(--ok-l);color:var(--ok-bt)}

/* ── INVESTIGATION ──────────────────────────────────────── */
.wit-grid{display:grid;grid-template-columns:1fr 1fr auto;gap:.42rem;align-items:start;margin-bottom:.42rem}
.wit-del{background:none;border:1.5px solid var(--bdr);border-radius:var(--rs);width:1.9rem;height:2.1rem;cursor:pointer;color:var(--er);display:flex;align-items:center;justify-content:center;transition:all .2s}
.wit-del:hover{background:var(--er-l);border-color:var(--er)}
.wit-add{border:1.5px dashed var(--bdr);background:transparent;border-radius:var(--rs);padding:.42rem .88rem;font-family:var(--fb);font-size:.8rem;font-weight:700;color:var(--txm);cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:.35rem;margin-top:.22rem}
.wit-add:hover{border-color:var(--lo);color:var(--lo-bt);background:var(--lo-p)}
.inv-badge{display:inline-flex;align-items:center;gap:.35rem;border:2px solid var(--bdr);border-radius:var(--rs);padding:.42rem .95rem;cursor:pointer;font-family:var(--fb);font-size:.85rem;font-weight:700;color:var(--txs);transition:all .2s;background:var(--wh);margin:.18rem}
.inv-badge:hover{border-color:var(--lo)}
.inv-badge.fb-yes{border-color:var(--ok);background:var(--ok-l);color:var(--ok-bt)}
.inv-badge.fb-partial{border-color:var(--wa);background:var(--wa-l);color:var(--wa-bt)}
.inv-badge.fb-no{border-color:var(--er);background:var(--er-l);color:var(--er-bt)}


/* ── DOCUMENT TEMPLATE LIBRARY ─────────────────────────── */
.tmpl-nav{display:flex;gap:.42rem;flex-wrap:wrap;margin-bottom:1.35rem}
.tmpl-btn{border:1.5px solid var(--bdr);background:var(--wh);border-radius:var(--rs);padding:.38rem .82rem;font-family:var(--fb);font-size:.79rem;font-weight:700;color:var(--txs);cursor:pointer;transition:all .2s}
.tmpl-btn:hover{border-color:var(--lo);color:var(--lo-h)}
.tmpl-btn.active{background:var(--lp);border-color:var(--lp);color:#fff}
.tmpl-header{background:var(--lp-t);border:1px solid rgba(17,58,92,.12);border-radius:var(--r);padding:1rem 1.2rem;margin-bottom:1.1rem}
.tmpl-header h5{font-family:var(--fd);font-size:1.05rem;color:var(--heading);margin-bottom:.22rem}
.tmpl-header p{font-size:.82rem;color:var(--txs);margin:0}
.tmpl-guidance{font-size:.82rem;color:var(--txs);background:var(--wa-l);border-left:3px solid var(--wa);border-radius:0 var(--rs) var(--rs) 0;padding:.65rem .9rem;margin-bottom:1rem;line-height:1.55}
.tmpl-body{background:var(--g100);border:1px solid var(--bdr);border-radius:var(--r);padding:1.4rem 1.65rem;font-family:Georgia,serif;font-size:.9rem;line-height:1.85;color:var(--tx);white-space:pre-wrap;word-break:break-word}
body.liq-dark .tmpl-body{background:var(--g100);color:var(--tx)}
.tmpl-placeholder{background:rgba(214,69,69,.18);color:var(--lo-bt);border-radius:2px;padding:0 .18rem;font-style:normal}
.tmpl-copy-bar{display:flex;align-items:center;justify-content:space-between;margin-top:.85rem;flex-wrap:wrap;gap:.5rem}
.tmpl-note{font-size:.76rem;color:var(--txm)}

/* ── RETURN-TO-WORK PLANNER ─────────────────────────────── */
.rtw-phase-row{display:grid;grid-template-columns:auto 1fr 1fr auto;gap:.45rem;align-items:start;margin-bottom:.45rem}
.rtw-phase-lbl{font-size:.79rem;font-weight:700;color:var(--txs);padding-top:.52rem;white-space:nowrap}
.rtw-del{background:none;border:1.5px solid var(--bdr);border-radius:var(--rs);width:1.85rem;height:2.1rem;cursor:pointer;color:var(--er);display:flex;align-items:center;justify-content:center;transition:all .2s}
.rtw-del:hover{background:var(--er-l);border-color:var(--er)}
.rtw-add{border:1.5px dashed var(--bdr);background:transparent;border-radius:var(--rs);padding:.4rem .85rem;font-family:var(--fb);font-size:.79rem;font-weight:700;color:var(--txm);cursor:pointer;transition:all .2s;display:inline-flex;align-items:center;gap:.35rem;margin-top:.2rem}
.rtw-add:hover{border-color:var(--lo);color:var(--lo-bt);background:var(--lo-p)}

/* ── STRIKE PREPAREDNESS ────────────────────────────────── */
.strike-cat{margin-bottom:1.6rem}
.strike-cat-hdr{display:flex;align-items:center;gap:.65rem;margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:2px solid var(--bdr)}
.strike-cat-icon{width:2.1rem;height:2.1rem;border-radius:var(--rs);display:flex;align-items:center;justify-content:center;font-size:1rem;flex-shrink:0}
.strike-cat-title{font-family:var(--fd);font-size:1rem;color:var(--heading)}
.strike-item{border:1px solid var(--bdr);border-radius:var(--rs);margin-bottom:.42rem;overflow:hidden;background:var(--wh)}
.strike-item.done{border-color:var(--ok);background:var(--ok-l)}
.strike-item-top{display:flex;align-items:flex-start;gap:.65rem;padding:.72rem .92rem;cursor:pointer}
.strike-item.done .strike-item-top{background:var(--ok-l)}
.strike-check{width:1.1rem;height:1.1rem;border:2px solid var(--bdr);border-radius:3px;flex-shrink:0;margin-top:.18rem;display:flex;align-items:center;justify-content:center;transition:all .2s}
.strike-item.done .strike-check{background:var(--ok);border-color:var(--ok);color:#fff}
.strike-item-text{flex:1}
.strike-item-label{font-size:.89rem;font-weight:700;color:var(--tx)}
.strike-item-sub{font-size:.77rem;color:var(--txm);margin-top:.1rem}
.strike-notes-wrap{display:none;padding:.45rem .92rem .72rem 2.65rem}
.strike-item.open .strike-notes-wrap{display:block}
.strike-progress{display:flex;align-items:center;gap:.65rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.65rem 1rem;margin-bottom:1.25rem}
.strike-prog-bar{flex:1;height:7px;background:var(--g100);border-radius:99px;overflow:hidden}
.strike-prog-fill{height:100%;background:var(--lo);border-radius:99px;transition:width .4s}


/* ── WSIB TOOL ───────────────────────────────────────────── */
.wsib-phase-tabs{display:flex;gap:0;background:var(--g100);border-radius:var(--r) var(--r) 0 0;border:1px solid var(--bdr);border-bottom:none;padding:.3rem .3rem 0;margin-bottom:0}
.wsib-phase-tab{flex:1;border:none;background:transparent;font-family:var(--fb);font-size:.84rem;font-weight:700;padding:.62rem .5rem;border-radius:var(--rs) var(--rs) 0 0;cursor:pointer;color:var(--txs);display:flex;align-items:center;justify-content:center;gap:.38rem;transition:all .2s}
.wsib-phase-tab:hover{background:rgba(255,255,255,.7)}
.wsib-phase-tab.active{background:var(--wh);color:var(--lp)}
body.liq-dark .wsib-phase-tab.active{color:var(--tx)}
.wsib-phase-panel{display:none;background:var(--wh);border:1px solid var(--bdr);border-radius:0 0 var(--rl) var(--rl);padding:1.75rem}
.wsib-phase-panel.active{display:block}
.wsib-fact-card{background:var(--lp);color:#fff;border-radius:var(--r);padding:1.1rem 1.3rem;margin-bottom:1.25rem}
.wsib-fact-card-title{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--lo-bt);margin-bottom:.65rem}
.wsib-fact-row{display:flex;gap:.65rem;align-items:flex-start;margin-bottom:.42rem;font-size:.83rem;color:rgba(255,255,255,.85);line-height:1.5}
.wsib-fact-row i{color:var(--lo);flex-shrink:0;margin-top:.15rem}
.wsib-timed-section{margin-bottom:1.5rem}
.wsib-timed-label{display:inline-flex;align-items:center;gap:.42rem;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;padding:.22rem .65rem;border-radius:2rem;margin-bottom:.72rem}
.wt-immed{background:var(--er-l);color:var(--er-bt)}
.wt-24h{background:var(--wa-l);color:var(--wa-bt)}
.wt-72h{background:var(--inf-l);color:var(--inf)}
.wt-ongoing{background:var(--ok-l);color:var(--ok-bt)}
.wsib-check-item{border:1px solid var(--bdr);border-radius:var(--rs);margin-bottom:.38rem;background:var(--wh);overflow:hidden}
.wsib-check-item.done{border-color:var(--ok)}
.wsib-check-top{display:flex;align-items:flex-start;gap:.62rem;padding:.68rem .88rem;cursor:pointer}
.wsib-check-item.done .wsib-check-top{background:var(--ok-l)}
.wsib-cbox{width:1.1rem;height:1.1rem;border:2px solid var(--bdr);border-radius:3px;flex-shrink:0;margin-top:.18rem;display:flex;align-items:center;justify-content:center;transition:all .2s}
.wsib-check-item.done .wsib-cbox{background:var(--ok);border-color:var(--ok);color:#fff}
.wsib-check-item-text{flex:1}
.wsib-check-label{font-size:.88rem;font-weight:700;color:var(--tx)}
.wsib-check-sub{font-size:.76rem;color:var(--txm);margin-top:.08rem;line-height:1.45}
.wsib-check-expand{display:none;padding:.45rem .88rem .68rem 2.6rem}
.wsib-check-item.open .wsib-check-expand{display:block}
.wsib-objection-ground{border:1.5px solid var(--bdr);border-radius:var(--rs);padding:.72rem .92rem;margin-bottom:.48rem;cursor:pointer;transition:all .2s;background:var(--wh)}
.wsib-objection-ground:hover{border-color:var(--lo);background:var(--lo-p)}
.wsib-objection-ground.selected{border-color:var(--lp);background:var(--lp-t)}
.wsib-objection-ground-title{font-size:.88rem;font-weight:700;color:var(--tx);display:flex;align-items:center;gap:.5rem}
.wsib-objection-ground.selected .wsib-objection-ground-title{color:var(--lp)}
.wsib-objection-ground-desc{font-size:.78rem;color:var(--txm);margin-top:.2rem;line-height:1.5;display:none}
.wsib-objection-ground.selected .wsib-objection-ground-desc{display:block;color:var(--txs)}
.wsib-deadline-banner{background:var(--er-l);border:2px solid var(--er);border-radius:var(--r);padding:.85rem 1.1rem;display:flex;align-items:center;gap:.75rem;margin-bottom:1.1rem}
.wsib-deadline-banner i{color:var(--er);font-size:1.25rem;flex-shrink:0}
.wsib-deadline-text{font-size:.87rem;font-weight:700;color:var(--er)}
.wsib-deadline-sub{font-size:.77rem;color:var(--txs);font-weight:400}
.wsib-progress-row{display:flex;align-items:center;gap:.62rem;padding:.55rem 0;border-bottom:1px solid var(--bdr)}
.wsib-progress-row:last-child{border-bottom:none}
.wsib-prog-dot{width:.75rem;height:.75rem;border-radius:50%;flex-shrink:0}
.wp-done{background:var(--ok)}.wp-pend{background:var(--g200)}.wp-risk{background:var(--er)}


/* ── A-Z LETTER BAR ─────────────────────────────────────── */
.az-bar{display:flex;gap:.22rem;flex-wrap:wrap;margin:.65rem 0 .55rem;align-items:center}
.az-btn{min-width:1.9rem;height:1.9rem;border:1.5px solid var(--bdr);background:var(--wh);border-radius:var(--rs);font-family:var(--fb);font-size:.77rem;font-weight:800;cursor:pointer;color:var(--txs);display:flex;align-items:center;justify-content:center;transition:all .15s;padding:0;line-height:1;position:relative}
.az-btn:hover:not(.az-empty){border-color:var(--lo);color:var(--lo-bt);background:var(--lo-p)}
.az-btn.az-active{background:var(--lp);border-color:var(--lp);color:#fff}
.az-btn.az-empty{opacity:.28;cursor:default;pointer-events:none}
.az-btn .az-count{position:absolute;top:-5px;right:-5px;background:var(--lo-btn);color:var(--lo-btn-tx);font-size:.55rem;font-weight:800;border-radius:99px;min-width:.95rem;height:.95rem;display:none;align-items:center;justify-content:center;padding:0 .18rem;line-height:1}
.az-btn:hover .az-count{display:flex}
.az-sep{width:1px;height:1.1rem;background:var(--bdr);margin:0 .12rem;flex-shrink:0}
.az-all-btn{padding:0 .65rem;min-width:auto;font-size:.72rem;letter-spacing:.04em}

/* ── ACTIVE FILTER SUMMARY ──────────────────────────────── */
.lex-filters{display:none;align-items:center;gap:.38rem;flex-wrap:wrap;margin-bottom:.65rem;padding:.48rem .75rem;background:var(--lo-p);border:1px solid var(--lo-l);border-radius:var(--rs)}
.lex-filters.show{display:flex}
.lex-filter-pill{display:inline-flex;align-items:center;gap:.3rem;background:var(--wh);border:1px solid var(--lo);border-radius:2rem;padding:.18rem .55rem .18rem .65rem;font-size:.75rem;font-weight:700;color:var(--lo-h)}
.lex-filter-pill-x{background:none;border:none;cursor:pointer;color:var(--lo-bt);font-size:.85rem;line-height:1;padding:0;margin-left:.1rem;display:flex;align-items:center}
.lex-filter-pill-x:hover{color:var(--lo-h)}
.lex-filter-clear{background:none;border:none;cursor:pointer;font-size:.75rem;font-weight:700;color:var(--txm);text-decoration:underline;padding:0;margin-left:auto}
.lex-filter-clear:hover{color:var(--tx)}
.lex-filter-label{font-size:.75rem;font-weight:700;color:var(--txm);white-space:nowrap}

/* ── LETTER SECTION DIVIDERS ────────────────────────────── */
.lex-letter-div{display:flex;align-items:center;gap:.75rem;margin:1.1rem 0 .55rem;cursor:pointer}
.lex-letter-div:hover .lex-letter-badge{background:var(--lo-btn);border-color:var(--lo);color:var(--lo-btn-tx)}
.lex-letter-badge{width:2.1rem;height:2.1rem;border-radius:50%;background:var(--lp);border:2px solid var(--lp);color:#fff;font-family:var(--fd);font-size:1rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s}
.lex-letter-div-line{flex:1;height:1px;background:var(--bdr)}
.lex-letter-count{font-size:.75rem;font-weight:700;color:var(--txm);white-space:nowrap}

/* ── RECENTLY VIEWED ────────────────────────────────────── */
.lex-recent{margin-bottom:1rem}
.lex-recent-title{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--txm);margin-bottom:.65rem}
.lex-recent-item{display:flex;align-items:center;gap:.55rem;padding:.42rem 0;border-bottom:1px solid var(--bdr);cursor:pointer;transition:color .15s}
.lex-recent-item:last-child{border-bottom:none}
.lex-recent-item:hover .lex-recent-name{color:var(--lo-h)}
.lex-recent-name{font-size:.84rem;font-weight:600;color:var(--tx);flex:1;transition:color .15s}
.lex-recent-cat{font-size:.66rem;font-weight:700;padding:.1rem .38rem;border-radius:2px}

/* ── SEARCH KEYBOARD HINT ───────────────────────────────── */
.lex-search-hint{position:absolute;right:.9rem;top:50%;transform:translateY(-50%);background:var(--g100);border:1px solid var(--bdr);border-radius:3px;font-size:.68rem;font-weight:700;color:var(--txs);padding:.1rem .38rem;pointer-events:none}
body.liq-dark .lex-search-hint{background:var(--g200)}


/* ── TERMINATION TOOL ───────────────────────────────────── */
.term-tool-tabs{display:flex;gap:0;background:var(--g100);border-radius:var(--r) var(--r) 0 0;border:1px solid var(--bdr);border-bottom:none;padding:.3rem .3rem 0;margin-bottom:0}
.term-tool-tab{flex:1;border:none;background:transparent;font-family:var(--fb);font-size:.83rem;font-weight:700;padding:.62rem .5rem;border-radius:var(--rs) var(--rs) 0 0;cursor:pointer;color:var(--txs);display:flex;align-items:center;justify-content:center;gap:.38rem;transition:all .2s}
.term-tool-tab:hover{background:rgba(255,255,255,.7)}
.term-tool-tab.active{background:var(--wh);color:var(--lp)}
body.liq-dark .term-tool-tab.active{color:var(--tx)}
.term-tool-panel{display:none;background:var(--wh);border:1px solid var(--bdr);border-radius:0 0 var(--rl) var(--rl);padding:1.75rem}
.term-tool-panel.active{display:block}
.term-fact-card{background:var(--lp);color:#fff;border-radius:var(--r);padding:1.1rem 1.3rem;margin-bottom:1.25rem}
.term-fact-title{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--lo-bt);margin-bottom:.65rem}
.term-fact-row{display:flex;gap:.65rem;align-items:flex-start;margin-bottom:.42rem;font-size:.83rem;color:rgba(255,255,255,.85);line-height:1.5}
.term-fact-row i{color:var(--lo);flex-shrink:0;margin-top:.15rem}
.term-timed-label{display:inline-flex;align-items:center;gap:.42rem;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;padding:.22rem .65rem;border-radius:2rem;margin-bottom:.72rem}
.tt-immed{background:var(--er-l);color:var(--er-bt)}
.tt-24h{background:var(--wa-l);color:var(--wa-bt)}
.tt-5d{background:var(--inf-l);color:var(--inf)}
.tt-ongoing{background:var(--ok-l);color:var(--ok-bt)}
.term-section-title{font-family:var(--fd);font-size:1rem;color:var(--heading);margin-bottom:.25rem;margin-top:1.25rem}
.term-section-title:first-child{margin-top:0}
.term-section-sub{font-size:.82rem;color:var(--txs);margin-bottom:.85rem}
.term-dont-item{display:flex;gap:.65rem;align-items:flex-start;padding:.55rem .75rem;background:var(--er-l);border-radius:var(--rs);margin-bottom:.38rem;font-size:.86rem;color:var(--tx)}
.term-dont-item i{color:var(--er);flex-shrink:0;margin-top:.15rem}
.term-do-item{display:flex;gap:.65rem;align-items:flex-start;padding:.55rem .75rem;background:var(--ok-l);border-radius:var(--rs);margin-bottom:.38rem;font-size:.86rem;color:var(--tx)}
.term-do-item i{color:var(--ok);flex-shrink:0;margin-top:.15rem}


/* ── LOGIN PAGE ──────────────────────────────────────────── */
.liq-login-page{
  min-height:100vh;background:#08131f;
  display:flex;align-items:center;justify-content:center;
  padding:2rem 1rem;position:relative;overflow:hidden;
}
/* WebGL constellation canvas — full-bleed, behind the card (js/46). */
.login-fx-canvas{
  position:absolute;inset:0;width:100%;height:100%;display:block;
  /* Interactive: the sign-in card sits above at z-index 2, so enabling
     pointer events here only affects the background around it. */
  z-index:0;pointer-events:auto;
}
/* Framing vignette so the card reads clearly over the animated field. */
.liq-login-page::after{
  content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(120% 90% at 50% 45%,transparent 40%,rgba(13,8,18,.55) 100%);
}
.login-wrap{width:100%;max-width:440px;position:relative;z-index:2}
.login-logo-row{text-align:center;margin-bottom:2rem}
.login-card{
  background:rgba(22,14,34,.62);
  border:1px solid rgba(255,255,255,.12);
  border-radius:1.25rem;padding:2.25rem 2.25rem 2rem;
  box-shadow:0 30px 80px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.08);
  backdrop-filter:blur(18px) saturate(1.2);
  -webkit-backdrop-filter:blur(18px) saturate(1.2);
}
.login-title{
  font-family:'Playfair Display',Georgia,serif;
  font-size:1.55rem;font-weight:700;color:#dce8f2;
  text-align:center;margin-bottom:.35rem;
}
.login-sub{font-size:.88rem;color:rgba(255,255,255,.45);text-align:center;margin-bottom:1.75rem}
.login-field{margin-bottom:1.1rem}
.login-label{display:block;font-size:.8rem;font-weight:700;color:rgba(255,255,255,.82);margin-bottom:.35rem;letter-spacing:.04em}
.login-inp{
  width:100%;background:rgba(255,255,255,.055);border:1.5px solid rgba(255,255,255,.12);
  border-radius:.65rem;padding:.72rem 1rem;
  font-family:'Nunito',system-ui,sans-serif;font-size:.95rem;
  color:#dce8f2;outline:none;transition:border-color .2s,box-shadow .2s,background .2s;
}
.login-inp:hover{border-color:rgba(255,255,255,.22)}
.login-inp:focus{border-color:#d64545;box-shadow:0 0 0 3px rgba(214,69,69,.28);background:rgba(255,255,255,.08);outline:none}
.login-inp::placeholder{color:rgba(255,255,255,.5);font-weight:400}
.login-btn{
  /* The literal accent here, not the token: white on #d64545 is 4.38 in every
     theme, and this is the one button every user presses before they have any
     settings at all. --lo-btn is the same crimson tuned for a white label. */
  width:100%;background:var(--lo-btn,#d33939);border:none;border-radius:.65rem;
  padding:.82rem;font-family:'Nunito',system-ui,sans-serif;
  font-size:1rem;font-weight:800;color:var(--lo-btn-tx,#fff);cursor:pointer;
  transition:all .2s;margin-top:.35rem;
  display:flex;align-items:center;justify-content:center;gap:.5rem;
}
.login-btn{box-shadow:0 8px 24px rgba(214,69,69,.32);animation:login-btn-glow 3.4s ease-in-out infinite}
.login-btn:hover{background:#b93636;transform:translateY(-1px);box-shadow:0 12px 32px rgba(214,69,69,.5)}
.login-btn:active{transform:translateY(0)}
.login-btn:disabled{opacity:.55;cursor:not-allowed;transform:none;animation:none}
@keyframes login-btn-glow{0%,100%{box-shadow:0 8px 24px rgba(214,69,69,.28)}50%{box-shadow:0 10px 30px rgba(214,69,69,.5)}}
body.liq-reduced-motion .login-btn{animation:none}
.login-error{
  background:rgba(220,38,38,.18);border:1px solid rgba(220,38,38,.4);
  border-radius:.5rem;padding:.65rem .9rem;font-size:.86rem;
  color:#fca5a5;margin-bottom:.9rem;display:none;
  align-items:center;gap:.5rem;
}
.login-error.show{display:flex}
.login-admin-box{
  background:rgba(214,69,69,.1);border:1px solid rgba(214,69,69,.25);
  border-radius:.75rem;padding:1rem 1.15rem;margin-top:1.5rem;
}
.login-admin-title{
  font-size:.72rem;font-weight:800;text-transform:uppercase;
  letter-spacing:.1em;color:#d64545;margin-bottom:.55rem;
  display:flex;align-items:center;gap:.4rem;
}
.login-admin-row{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:.28rem;
}
.login-admin-row:last-child{margin-bottom:0}
.login-admin-key{font-size:.8rem;color:rgba(255,255,255,.45)}
.login-admin-val{
  font-size:.82rem;font-weight:700;color:#dce8f2;
  font-family:monospace;background:rgba(255,255,255,.07);
  border-radius:4px;padding:.12rem .45rem;cursor:pointer;
  transition:background .15s;
}
.login-admin-val:hover{background:rgba(214,69,69,.2)}
.login-admin-hint{font-size:.73rem;color:rgba(255,255,255,.3);margin-top:.6rem}
.login-divider{border-color:rgba(255,255,255,.08);margin:1.5rem 0}

/* ── NAV AUTH AREA ───────────────────────────────────────── */
.nav-login-btn{
  display:flex;align-items:center;gap:.4rem;
  background:rgba(255,255,255,.1);border:1.5px solid rgba(255,255,255,.2);
  border-radius:2rem;padding:.38rem 1.05rem;
  font-family:'Nunito',system-ui,sans-serif;font-size:.85rem;
  font-weight:700;color:#fff;cursor:pointer;transition:all .2s;
  white-space:nowrap;
}
.nav-login-btn:hover{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.38)}

/* ── NAV USER DROPDOWN ───────────────────────────────────── */
.nav-user-wrap{position:relative;display:flex;align-items:center}
.nav-user-wrap .nav-xp{cursor:pointer}
.nav-user-dropdown{
  position:absolute;top:calc(100% + .25rem);right:0;
  background:#fff;border:1px solid var(--bdr);border-radius:var(--rl);
  box-shadow:var(--shl);min-width:240px;
  opacity:0;transform:translateY(-6px) scale(.97);
  pointer-events:none;transition:opacity .18s ease,transform .18s ease;
  z-index:var(--z-fab);overflow:hidden;padding-bottom:.25rem;
}
/* Invisible bridge fills the gap so the mouse doesn't leave the hover zone */
.nav-user-wrap::after{
  content:'';position:absolute;top:100%;left:0;right:0;height:.75rem;
}
.nav-user-wrap:hover .nav-user-dropdown,
.nav-user-wrap.open .nav-user-dropdown{
  opacity:1;transform:translateY(0) scale(1);pointer-events:all;
}
body.liq-dark .nav-user-dropdown{background:var(--wh);border-color:var(--bdr)}
.nav-user-header{
  padding:.82rem 1rem .7rem;border-bottom:1px solid var(--bdr);
}
.nav-user-name{font-size:.92rem;font-weight:800;color:var(--tx);line-height:1.25}
.nav-user-email{font-size:.74rem;color:var(--txm);margin-top:.12rem;word-break:break-all}
.nav-user-role{display:inline-block;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;padding:.18rem .55rem;border-radius:99px;margin-top:.45rem;background:var(--g100);color:var(--txs)}
.nav-user-role.role-admin{background:var(--lp);color:#fff}
.nav-user-role.role-manager{background:var(--lo-btn);color:var(--lo-btn-tx)}
.nav-user-role.role-hr{background:#2563eb;color:#fff}
.nav-user-role.role-supervisor{background:#7c3aed;color:#fff}
/* --ok-btn, not --ok: white on --ok itself is 3.30 in every theme, and this
   pill is 9.92px at weight 800 — small bold text, threshold 4.5. The sweep
   cannot see it because it never opens the nav dropdown, and it is the pill
   the majority of users wear. --ok-btn was added for .btn-ok and is the same
   fix; it measures 4.78 here. */
.nav-user-role.role-learner{background:var(--ok-btn);color:#fff}
.nav-user-section{padding:.4rem 0 .25rem;border-top:1px solid var(--bdr)}
.nav-user-section:first-of-type{border-top:none;padding-top:.25rem}
.nav-user-section-foot{border-top:1px solid var(--bdr);padding-top:.25rem;margin-top:.1rem}
.nav-user-section-hdr{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--g600);padding:.4rem 1rem .25rem}
body.liq-dark .nav-user-section-hdr{color:var(--g400)}
.nav-user-item{
  display:flex;align-items:center;gap:.62rem;
  padding:.55rem 1rem;font-size:.86rem;font-weight:600;
  color:var(--tx);cursor:pointer;transition:background .15s;border:none;
  background:transparent;width:100%;text-align:left;font-family:var(--fb);
}
.nav-user-item:hover{background:var(--g100)}
.nav-user-item i{color:var(--txm);font-size:.95rem;width:1rem;text-align:center;flex-shrink:0}
.nav-user-item.danger{color:var(--er)}
.nav-user-item.danger i{color:var(--er)}
.nav-user-item.danger:hover{background:var(--er-l)}
.nav-user-divider{border-color:var(--bdr);margin:0}


/* ── CASE LIBRARY ───────────────────────────────────────── */
.case-cat-tag{display:inline-flex;align-items:center;gap:.32rem;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;padding:.18rem .52rem;border-radius:3px}
/* Category tags — colour driven by --cat, contrast-safe in both modes via color-mix.
   Light: darken the hue for contrast on the pale tint. Dark: lighten toward white. */
.case-cat-tag,.lex-recent-cat,.lex-cat-chip{
  background:color-mix(in srgb, var(--cat, var(--lo)) 14%, transparent);
  color:color-mix(in srgb, var(--cat, var(--lo)) 62%, #0b1620);
}
body.liq-dark .case-cat-tag,body.liq-dark .lex-recent-cat,body.liq-dark .lex-cat-chip{
  background:color-mix(in srgb, var(--cat, var(--lo)) 26%, transparent);
  color:color-mix(in srgb, var(--cat, var(--lo)) 45%, #ffffff);
}
.case-diff{display:inline-flex;gap:.22rem;align-items:center;margin-left:.4rem}
.case-diff-dot{width:.52rem;height:.52rem;border-radius:50%;background:var(--g200)}
.case-diff-dot.on{background:var(--lo)}
.case-card-c{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.3rem 1.4rem;cursor:pointer;transition:all .2s;display:flex;flex-direction:column;gap:.6rem;height:100%}
.case-card-c:hover{border-color:var(--lo);box-shadow:var(--shm);transform:translateY(-2px)}
.case-card-c.done{border-color:var(--ok)}
.case-card-year{font-size:.73rem;font-weight:700;color:var(--txm)}
.case-card-title{font-family:var(--fd);font-size:.98rem;color:var(--tx);line-height:1.4;font-weight:700}
.case-card-sum{font-size:.81rem;color:var(--txs);line-height:1.55;flex:1}
.case-card-foot{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}
.case-xp-chip{font-size:.72rem;font-weight:800;background:var(--lo-l);color:var(--lo-bt);border-radius:3px;padding:.12rem .42rem}
.case-xp-chip.earned{background:var(--ok-l);color:var(--ok-bt)}
/* ── CASES FILTER BAR — three-zone redesign ────────────────────
   Zone 1: Hero search (full-width, prominent)
   Zone 2: Quick-preset chips on left + Sort dropdown on right
   Zone 3: Boxed filter panel with 6 uniform dropdowns + active-filter bar
   Goal: clear hierarchy, consistent visual language (chips for shortcuts,
   dropdowns for filters), single landing place for the eye. */
.case-filter-bar{display:flex;flex-direction:column;gap:.85rem;margin-bottom:1.5rem;width:100%}

/* ── Zone 1 — Hero search (larger, more prominent) ── */
.case-search-wrap{position:relative;width:100%;max-width:640px}
.case-search-ico{position:absolute;left:1.05rem;top:50%;transform:translateY(-50%);color:var(--txm);font-size:1.05rem;pointer-events:none}
.case-search-input{width:100%;border:1.5px solid var(--bdr);background:var(--wh);border-radius:2rem;padding:.72rem 2.6rem .72rem 2.7rem;font-family:var(--fb);font-size:.94rem;color:var(--tx);transition:border-color .15s,box-shadow .15s,background-color .15s;font-weight:500}
.case-search-input:hover{border-color:var(--g400)}
.case-search-input:focus{outline:none;border-color:var(--lo);box-shadow:0 0 0 4px rgba(214,69,69,.15)}
.case-search-input::placeholder{color:var(--txm);font-weight:400}
.case-search-clear{position:absolute;right:.65rem;top:50%;transform:translateY(-50%);background:transparent;border:0;padding:.28rem .45rem;color:var(--txm);cursor:pointer;border-radius:50%;font-size:.82rem;transition:background .15s,color .15s}
.case-search-clear:hover{background:var(--g100);color:var(--tx)}

/* ── Zone 2 — Quick presets + Sort row ── */
.case-quickrow{display:flex;align-items:flex-start;gap:.85rem;flex-wrap:wrap;justify-content:space-between}
.case-presets-row{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;flex:1;min-width:0}
.case-presets-empty{display:none}
.case-sort-wrap{display:flex;align-items:center;gap:.45rem;flex-shrink:0}
.case-sort-ico{color:var(--txm);font-size:.92rem}
.case-sort-select{min-width:170px}

/* ── Zone 3 — Filter panel (boxed) ── */
.case-filter-panel{background:var(--g100);border:1px solid var(--bdr);border-radius:var(--rl);padding:.85rem 1rem}
.case-filter-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.5rem}
.case-filter-active{margin-top:.7rem;padding-top:.65rem;border-top:1px dashed var(--bdr);display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}
.case-filter-active-lbl{font-size:.78rem;font-weight:700;color:var(--lo-h);display:inline-flex;align-items:center;gap:.35rem}
.case-filter-active-lbl>i{font-size:.85rem}
.case-filter-clearall{background:transparent;border:1.5px solid var(--er);color:var(--er);font-family:var(--fb);font-size:.76rem;font-weight:700;padding:.28rem .75rem;border-radius:2rem;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:.3rem}
.case-filter-clearall:hover{background:var(--er-l);color:var(--er-bt)}
.case-filter-clearall>i{font-size:.85rem}

/* Uniform dropdown styling — used by all filter selects + the sort
   select. Native <select> for keyboard a11y; visual weight matches
   the chips above. */
.case-filter-select{
  width:100%;border:1.5px solid var(--bdr);background-color:var(--wh);
  border-radius:2rem;padding:.42rem 2.1rem .42rem 1rem;
  font-family:var(--fb);font-size:.82rem;font-weight:600;color:var(--tx);
  cursor:pointer;transition:border-color .15s,box-shadow .15s;
  /* Tell the browser the closed control matches the page's color scheme,
     so the OPEN dropdown list (which is browser-native) renders with the
     same light/dark scheme as the rest of the page. Without this hint,
     Chrome/Edge sometimes pick the OS preference instead of the app's
     theme, causing the dropdown list to flash light when the page is
     dark (the bug that looked like "theme reverts after selection"). */
  color-scheme:light;
  /* Custom dropdown chevron — single source so all selects look identical
     across browsers. Light-mode SVG (brand purple chevron); dark-mode
     override below uses a lighter version so it remains visible against
     the dark dropdown surface. */
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235a4866'><path d='M3.204 5.04 8 9.836l4.796-4.796.708.708L8 11.252 2.496 5.748z'/></svg>");
  background-repeat:no-repeat;background-position:right .7rem center;background-size:.85rem;
}
.case-filter-select:hover{border-color:var(--g400)}
.case-filter-select:focus{outline:none;border-color:var(--lo);box-shadow:0 0 0 3px rgba(214,69,69,.15)}
/* Visual hint when a select has been changed away from default — softer
   colored border so the eye picks out which filters are set without
   needing to read each value. */
.case-filter-select.is-active{border-color:var(--lo);background-color:var(--lo-p)}
/* Dark-mode chevron + color-scheme. Without these, the open dropdown
   list inherits the system preference instead of the app's dark theme,
   producing the "theme flips on selection" perception. Explicit
   background-color + color overrides act as defense in depth in case
   any browser auto-dark-mode override is interfering. */
body.liq-dark .case-filter-select{
  color-scheme:dark;
  background-color:var(--wh);
  color:var(--tx);
  border-color:var(--bdr);
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23c0b0d0'><path d='M3.204 5.04 8 9.836l4.796-4.796.708.708L8 11.252 2.496 5.748z'/></svg>");
}
/* Explicit <option> styling for the OPEN dropdown list. Some browsers
   (Chrome 122+) honour these, and Firefox always has — together with
   color-scheme this makes the open list render the same dark surface as
   the closed control. */
body.liq-dark .case-filter-select option{
  background-color:#132030;
  color:#dce8f2;
}
body.liq-dark .case-filter-select.is-active{
  background-color:rgba(214,69,69,.18);
  border-color:var(--lo);
}

/* Legacy pill-button class kept for any straggler callers; unused after
   the three-zone redesign but left to avoid breakage if referenced
   elsewhere. */
.case-filter-btn{border:1.5px solid var(--bdr);background:var(--wh);border-radius:2rem;padding:.32rem .82rem;font-family:var(--fb);font-size:.78rem;font-weight:700;color:var(--txs);cursor:pointer;transition:all .2s}
.case-filter-btn:hover{border-color:var(--lo);color:var(--lo-h)}
.case-filter-btn.active{background:var(--lp);border-color:var(--lp);color:#fff}

@media (max-width:600px){
  .case-quickrow{flex-direction:column;align-items:stretch}
  .case-sort-wrap{justify-content:flex-end}
  .case-filter-panel{padding:.7rem .75rem}
  .case-filter-row{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.4rem}
}
/* Download Brief PDF button — sits in the case detail meta line. Pushed to
   the right via margin-left:auto so it floats opposite the category/year
   chips. Subtle until hover; the orange icon hints at the brand-anchored
   download action. */
.case-brief-btn{margin-left:auto;display:inline-flex;align-items:center;gap:.4rem;background:transparent;border:1.5px solid var(--bdr);color:var(--txs);font-family:var(--fb);font-size:.78rem;font-weight:700;padding:.32rem .85rem;border-radius:2rem;cursor:pointer;transition:all .15s;white-space:nowrap}
.case-brief-btn:hover{border-color:var(--lo);color:var(--lo-bt);background:var(--lo-l)}
.case-brief-btn i{color:var(--lo);font-size:.92rem}
@media (max-width:560px){.case-brief-btn{margin-left:0;width:100%;justify-content:center;margin-top:.4rem}}

/* ── Quick-filter preset chips ─────────────────────────────────
   Saved-search shortcuts above the dropdown row. Active state uses the
   brand purple background to telegraph "this is set". Clear button only
   visible when a preset is active. */
.case-presets-row{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.6rem;align-items:center}
.case-preset-chip{display:inline-flex;align-items:center;gap:.35rem;border:1.5px solid var(--bdr);background:var(--wh);color:var(--txs);font-family:var(--fb);font-size:.78rem;font-weight:700;padding:.32rem .85rem;border-radius:2rem;cursor:pointer;transition:all .15s;white-space:nowrap}
.case-preset-chip:hover{border-color:var(--lo);color:var(--lo-h)}
.case-preset-chip.active{background:var(--lp);border-color:var(--lp);color:#fff}
.case-preset-chip i{font-size:.86rem}
.case-preset-chip.active i{color:var(--lo)}
.case-preset-clear{background:transparent;border:0;color:var(--er);font-size:.74rem;font-weight:700;padding:.32rem .65rem;cursor:pointer;border-radius:2rem;display:inline-flex;align-items:center;gap:.3rem}
.case-preset-clear:hover{background:var(--er-l)}

/* ── Citation copy button ─────────────────────────────────────
   Sits inline at the end of the citation text. Subtle by default; the
   hover treatment hints it's interactive. Clipboard icon flashes briefly
   on click via the toast feedback. */
.case-detail-citation{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.case-cite-text{flex:1;min-width:0}
.case-cite-copy{background:transparent;border:0;color:var(--txm);cursor:pointer;padding:.2rem .45rem;border-radius:var(--rs);transition:background .15s,color .15s;font-size:.85rem;flex-shrink:0}
.case-cite-copy:hover{background:var(--g100);color:var(--lo-h)}

/* ── Recommended next case panel ──────────────────────────────
   Shown below the Connected To section after the user has decided a case.
   Strong orange accent + clear CTA so the engagement loop continues. */
.case-next-rec{margin:1.1rem 0;background:linear-gradient(135deg,var(--wh) 0%,var(--lo-p) 100%);border:1.5px solid var(--lo);border-radius:var(--rl);padding:1rem 1.2rem;cursor:pointer;transition:transform .15s,box-shadow .15s;position:relative}
.case-next-rec:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(214,69,69,.18)}
.case-next-eyebrow{display:flex;align-items:center;gap:.4rem;font-family:var(--fd);font-size:.74rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--lo-h);margin-bottom:.55rem}
.case-next-meta{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.4rem}
.case-next-yr{font-size:.74rem;color:var(--txm);font-weight:700}
.case-next-title{font-family:var(--fd);font-size:1.05rem;font-weight:700;color:var(--heading);line-height:1.3;margin-bottom:.3rem}
.case-next-sum{font-size:.85rem;color:var(--txs);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:.65rem}
.case-next-cta{font-size:.83rem;font-weight:700;color:var(--lo-h);display:inline-flex;align-items:center;gap:.3rem}
.case-next-rec:hover .case-next-cta{color:var(--lo-bt)}

/* ── Card status indicators ───────────────────────────────────
   Coloured left border at-a-glance status. Priority: correct (green) >
   wrong-but-studied (orange) > bookmarked-only (purple) > unread (subtle).
   Status badge in top-right replaces the previous bare check icon and
   carries an icon that distinguishes correct vs studied-wrong. */
.case-card-c{border-left:4px solid var(--bdr);transition:border-color .15s,box-shadow .15s}
.case-card-c.case-card-correct{border-left-color:var(--ok)}
.case-card-c.case-card-wrong{border-left-color:var(--lo)}
.case-card-c.case-card-bm{border-left-color:var(--lp)}
.case-card-c.case-card-unread{border-left-color:var(--bdr)}
.case-card-status{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border-radius:50%;font-size:.72rem;flex-shrink:0}
.case-card-status-ok{background:var(--ok-l);color:var(--ok-bt)}
.case-card-status-wrong{background:var(--lo-l);color:var(--lo-bt)}

/* ── Print-friendly view ──────────────────────────────────────
   When the user prints a case-detail page (Ctrl+P), strip all chrome and
   present a clean printable brief. The Download Brief PDF button produces
   a professional product; this is the quick browser-print fallback that
   still produces something usable. */
@media print{
  /* Hide global chrome */
  .lnav,.a11y-wrap,.toast-box,.mob-nav,.lu-overlay,.sm-overlay,
  .search-overlay,.admin-modal-overlay,.cs-grid,.case-spotlight,
  .case-related-chip,.case-brief-btn,.case-cite-copy,.bm-btn,
  .case-decision-opt,.case-reveal,.back-btn,.daily-stats-cta,
  /* hide list-view chrome when printing the detail */
  .case-filter-bar,#cases-list-view,
  /* hide notes panel toggle UI */
  .mod-notes-hdr,.case-next-rec{display:none!important}
  /* Force the detail page open and remove background tints */
  body{background:white!important;color:#000!important}
  .liq-page{display:block!important}
  .liq-page:not(.active){display:none!important}
  .case-detail-wrap{max-width:100%!important;margin:0!important}
  .case-section{background:white!important;border:0!important;box-shadow:none!important;padding:.75rem 0!important;page-break-inside:avoid}
  .case-section-label{color:#000!important;font-weight:800;border-bottom:1px solid #999;padding-bottom:.25rem;margin-bottom:.45rem}
  .case-detail-title{color:#000!important}
  .case-section-body{color:#000!important}
  .case-detail-citation{color:#666!important}
  /* Avoid orphaned headings */
  .case-section-label,.case-detail-hdr{page-break-after:avoid}
  /* Disable the section's "locked" notice — only printed when not done */
  a{color:#000!important;text-decoration:none!important}
}
/* Case Spotlight — reverse cross-link from a module reader or tool back into
   the Case Library. Shows the landmark cases that illustrate the doctrine
   the user is currently studying. Two tonal variants distinguish module
   placement (orange, learning context) from tool placement (purple, applied
   context) without affecting either parent's primary palette. */
.case-spotlight{margin:1.5rem 0;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.1rem 1.3rem;box-shadow:var(--sh)}
.case-spotlight.cs-tone-spotlight{border-left:4px solid var(--lo)}
.case-spotlight.cs-tone-applied{border-left:4px solid #7c3aed}
.cs-eyebrow{font-family:var(--fd);font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.14em;color:var(--lp);margin-bottom:.7rem;display:flex;align-items:center;gap:.4rem}
.cs-tone-applied .cs-eyebrow{color:#7c3aed}
.cs-tone-spotlight .cs-eyebrow{color:var(--lo-bt)}
.cs-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.7rem}
.cs-item{background:var(--bg);border:1px solid var(--bdr);border-radius:var(--rs);padding:.75rem .85rem;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}
.cs-item:hover{border-color:var(--lo);box-shadow:var(--sh);transform:translateY(-1px)}
.cs-item-meta{display:flex;align-items:center;gap:.45rem;margin-bottom:.35rem;flex-wrap:wrap}
.cs-item-year{font-size:.7rem;color:var(--txm);font-weight:700}
.cs-item-title{font-family:var(--fd);font-size:.92rem;font-weight:700;color:var(--heading);line-height:1.3;margin-bottom:.25rem}
.cs-item-sum{font-size:.78rem;color:var(--txs);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cs-more{margin-top:.7rem;text-align:right;font-size:.8rem}
.cs-more a{color:var(--lo-bt);font-weight:700}
.cs-more a:hover{color:var(--lo-h)}
.tool-case-spotlight-mount{margin-top:1rem}
.liq-dark .case-spotlight{background:var(--wh)}
.liq-dark .cs-item{background:var(--g100)}

/* Case detail */
.case-detail-wrap{max-width:820px;margin:0 auto}
.case-detail-hdr{margin-bottom:1.5rem}
.case-detail-title{font-family:var(--fd);font-size:1.55rem;color:var(--heading);margin-bottom:.35rem;line-height:1.3}
.case-detail-meta{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;margin-bottom:.65rem}
.case-detail-citation{font-size:.82rem;color:var(--txm);font-style:italic}
.case-section{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.5rem;margin-bottom:1rem}
.case-section-label{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--lo-bt);margin-bottom:.6rem;display:flex;align-items:center;gap:.38rem}
.case-section-body{font-size:.93rem;color:var(--tx);line-height:1.75}
.case-decision-opt{border:2px solid var(--bdr);background:var(--wh);border-radius:var(--r);padding:.88rem 1.1rem;cursor:pointer;font-family:var(--fb);font-size:.92rem;color:var(--tx);display:flex;gap:.75rem;transition:all .2s;margin-bottom:.52rem;text-align:left;width:100%;align-items:flex-start}
.case-decision-opt:hover{border-color:var(--lo);background:var(--lo-p)}
.case-decision-opt.selected-correct{border-color:var(--ok);background:var(--ok-l)}
.case-decision-opt.selected-wrong{border-color:var(--er);background:var(--er-l)}
.case-decision-opt.reveal-correct{border-color:var(--ok);background:var(--ok-l)}
.case-decision-opt.locked{cursor:default;pointer-events:none}
.case-opt-id{width:1.65rem;height:1.65rem;border-radius:50%;background:var(--g100);border:1.5px solid var(--bdr);font-size:.78rem;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:.08rem;transition:all .2s}
.case-decision-opt.selected-correct .case-opt-id{background:var(--ok);border-color:var(--ok);color:#fff}
.case-decision-opt.selected-wrong .case-opt-id{background:var(--er);border-color:var(--er);color:#fff}
.case-decision-opt.reveal-correct .case-opt-id{background:var(--ok);border-color:var(--ok);color:#fff}
.case-reveal{border-radius:var(--r);padding:1.1rem 1.3rem;margin-top:.75rem;display:none}
.case-reveal.show{display:block}
.case-reveal-correct{background:var(--ok-l);border:2px solid var(--ok)}
.case-reveal-wrong{background:var(--er-l);border:2px solid var(--er)}
.case-related-chip{display:inline-flex;align-items:center;gap:.38rem;background:var(--g100);border:1px solid var(--bdr);border-radius:var(--rs);padding:.32rem .72rem;font-size:.79rem;font-weight:700;color:var(--txs);cursor:pointer;transition:all .2s;margin:.2rem}
.case-related-chip:hover{border-color:var(--lo);color:var(--lo-bt);background:var(--lo-p)}
.cases-empty{text-align:center;padding:3rem;color:var(--txm)}


/* ── CASE LIBRARY ADDITIONS ─────────────────────────────── */
.case-reveal-correct{background:var(--ok-l);border:1.5px solid var(--ok);border-radius:var(--r);padding:.9rem 1.1rem;margin-top:.85rem}
.case-reveal-wrong{background:var(--er-l);border:1.5px solid var(--er);border-radius:var(--r);padding:.9rem 1.1rem;margin-top:.85rem}
.case-verdict{border-radius:var(--r);padding:1.1rem 1.3rem;margin-bottom:1.25rem}
.case-verdict-go{background:var(--ok-l);border:2px solid var(--ok)}
.case-verdict-warn{background:var(--wa-l);border:2px solid var(--wa)}
.case-verdict-stop{background:var(--er-l);border:2px solid var(--er)}

body.liq-dark .case-section-label{color:var(--lo-bt)!important}
body.liq-dark .case-detail-title{color:var(--tx)}
body.liq-dark .case-section-body{color:var(--txs)}


/* ── PERSONALISED HOME DASHBOARD ────────────────────────── */
.home-greeting{padding:2rem 0 0}
.home-greeting-name{font-family:var(--fd);font-size:1.75rem;color:var(--heading);font-weight:700;margin-bottom:.15rem}
.home-greeting-sub{font-size:.93rem;color:var(--txs)}

/* Dashboard cards */
.hd-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.4rem 1.5rem;height:100%}
.hd-streak-card{border:1px solid;border-radius:var(--rl);padding:1.4rem 1.5rem;height:100%;cursor:pointer;transition:filter .25s,box-shadow .25s;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.hd-streak-card:hover{filter:brightness(1.12);box-shadow:0 0 0 3px rgba(255,255,255,.08)}
.hd-streak-flame{font-size:2rem;line-height:1;margin-bottom:.2rem}
.hd-streak-num{font-size:2.6rem;font-weight:800;line-height:1;font-family:var(--fd)}
.hd-streak-label{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.7);margin-bottom:.65rem}
.hd-streak-divider{width:100%;height:1px;background:rgba(255,255,255,.08);margin-bottom:.65rem}
.hd-streak-done{font-size:.78rem;font-weight:700;color:#4ade80;display:flex;align-items:center;gap:.35rem}
.hd-streak-pending{font-size:.78rem;font-weight:700;padding:.28rem .75rem;background:rgba(255,255,255,.08);border-radius:2rem;border:1px solid}
.hd-streak-best{font-size:.68rem;color:rgba(255,255,255,.6);margin-top:.5rem}
/* ── Tier animations ── */
/* t1: soft purple breathe */
@keyframes skt1-breathe{0%,100%{filter:drop-shadow(0 0 4px rgba(139,92,246,.4))}50%{filter:drop-shadow(0 0 10px rgba(139,92,246,.9))}}
.skt-1 .hd-streak-flame{animation:skt1-breathe 3s ease-in-out infinite}
/* t2: pulsing purple glow */
@keyframes skt2-pulse{0%,100%{filter:drop-shadow(0 0 6px rgba(168,85,247,.5))}50%{filter:drop-shadow(0 0 16px rgba(168,85,247,1)) drop-shadow(0 0 28px rgba(168,85,247,.4))}}
.skt-2 .hd-streak-flame{animation:skt2-pulse 2.5s ease-in-out infinite}
/* t3: electric blue flicker */
@keyframes skt3-flicker{0%,100%{filter:drop-shadow(0 0 6px rgba(56,189,248,.6))}25%{filter:drop-shadow(0 0 18px rgba(56,189,248,1)) drop-shadow(0 0 34px rgba(56,189,248,.4))}50%{filter:drop-shadow(0 0 4px rgba(56,189,248,.3))}75%{filter:drop-shadow(0 0 20px rgba(56,189,248,.9))}}
.skt-3 .hd-streak-flame{animation:skt3-flicker 1.8s ease-in-out infinite}
/* t4: indigo arc — lightning cycling */
@keyframes skt4-arc{0%{filter:drop-shadow(0 0 8px rgba(129,140,248,.7)) drop-shadow(-3px 0 6px rgba(129,140,248,.4))}33%{filter:drop-shadow(0 0 22px rgba(129,140,248,1)) drop-shadow(3px 0 12px rgba(167,139,250,.6)) drop-shadow(0 0 40px rgba(129,140,248,.3))}66%{filter:drop-shadow(0 0 6px rgba(129,140,248,.4)) drop-shadow(-2px 2px 8px rgba(129,140,248,.5))}100%{filter:drop-shadow(0 0 8px rgba(129,140,248,.7)) drop-shadow(3px 0 6px rgba(129,140,248,.4))}}
@keyframes skt4-bg{0%,100%{box-shadow:inset 0 0 30px rgba(129,140,248,.04)}50%{box-shadow:inset 0 0 50px rgba(129,140,248,.12)}}
.skt-4 .hd-streak-flame{animation:skt4-arc 1.4s linear infinite}
.skt-4{animation:skt4-bg 2.8s ease-in-out infinite}
/* t5: Super IQ — gold supernova */
@keyframes skt5-saiyan{0%{filter:drop-shadow(0 0 10px rgba(253,224,71,.8)) drop-shadow(0 0 20px rgba(253,186,3,.5))}20%{filter:drop-shadow(0 0 26px rgba(253,224,71,1)) drop-shadow(0 0 52px rgba(253,186,3,.8)) drop-shadow(0 0 70px rgba(255,255,255,.3))}40%{filter:drop-shadow(0 0 6px rgba(253,224,71,.5))}60%{filter:drop-shadow(0 0 22px rgba(253,224,71,.9)) drop-shadow(0 0 44px rgba(253,186,3,.7)) drop-shadow(2px 0 16px rgba(255,255,255,.2))}80%{filter:drop-shadow(0 0 8px rgba(253,224,71,.4))}100%{filter:drop-shadow(0 0 10px rgba(253,224,71,.8)) drop-shadow(0 0 20px rgba(253,186,3,.5))}}
@keyframes skt5-bg{0%,100%{box-shadow:inset 0 0 40px rgba(253,186,3,.05)}50%{box-shadow:inset 0 0 70px rgba(253,186,3,.18),0 0 24px rgba(253,186,3,.08)}}
.skt-5 .hd-streak-flame{animation:skt5-saiyan .9s ease-in-out infinite}
.skt-5{animation:skt5-bg 1.8s ease-in-out infinite}
.skt-5:hover{box-shadow:0 0 0 3px rgba(253,224,71,.25)!important}
.hd-card-label{font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--txm);margin-bottom:.55rem}
.hd-level-icon{font-size:2.4rem;line-height:1;margin-bottom:.4rem}
.hd-level-name{font-family:var(--fd);font-size:1.18rem;font-weight:700;color:var(--heading);margin-bottom:.12rem}
.hd-level-sub{font-size:.8rem;color:var(--txm);margin-bottom:.75rem}
.hd-xp-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:.3rem}
.hd-xp-label{font-size:.78rem;color:var(--txs);font-weight:600}
.hd-xp-val{font-size:.78rem;font-weight:800;color:var(--lo-bt)}
.hd-xp-bar{height:7px;background:var(--g100);border-radius:4px;overflow:hidden}
.hd-xp-fill{height:100%;background:linear-gradient(90deg,var(--lp),var(--lo));border-radius:4px;transition:width .4s ease}
.hd-ach-row{margin-top:.8rem;font-size:.8rem;color:var(--txs)}
.hd-ach-row span{font-weight:800;color:var(--tx)}

/* Continue learning card */
.hd-continue-mod{background:var(--g100);border-radius:var(--r);padding:.85rem 1rem;margin-bottom:.55rem}
.hd-mod-track{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);margin-bottom:.2rem}
.hd-mod-title{font-size:.93rem;font-weight:700;color:var(--tx);margin-bottom:.18rem;line-height:1.4}
.hd-mod-meta{font-size:.77rem;color:var(--txm)}
.hd-next-suggestion{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.52rem .75rem;margin-top:.5rem;background:var(--g100);border:1px solid var(--bdr);border-radius:var(--rs);cursor:pointer;transition:border-color .15s}
.hd-next-suggestion:hover{border-color:var(--lo)}
.hd-complete-badge{display:inline-flex;align-items:center;gap:.4rem;background:var(--ok-l);color:var(--ok-bt);font-size:.81rem;font-weight:700;padding:.42rem .75rem;border-radius:2rem}

/* Cases progress card */
.hd-cases-prog{display:flex;align-items:center;gap:1rem;margin-top:.5rem}
.hd-cases-circle{position:relative;width:72px;height:72px;flex-shrink:0}
.hd-cases-circle svg{transform:rotate(-90deg)}
.hd-cases-circle-inner{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column}
.hd-cases-num{font-size:1.2rem;font-weight:800;color:var(--tx);line-height:1}
.hd-cases-denom{font-size:.65rem;color:var(--txm);font-weight:600}
.hd-cases-right{flex:1}
.hd-cases-title{font-size:.9rem;font-weight:700;color:var(--tx);margin-bottom:.2rem}
.hd-cases-sub{font-size:.8rem;color:var(--txs)}
/* Case of the Week — replaces the static Case Library card. Spotlights one
   featured case (rotated by week index) with a clickable preview and CTA. */
.hd-cotw-card{background:var(--wh);border:1px solid var(--bdr);border-left:4px solid var(--lo);border-radius:var(--rl);padding:1.05rem 1.25rem;cursor:pointer;transition:border-color .18s,box-shadow .18s,transform .15s;height:100%;display:flex;flex-direction:column;gap:.45rem}
.hd-cotw-card:hover{border-color:var(--lo);box-shadow:var(--shm)}
.hd-cotw-eyebrow{font-family:var(--fd);font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.14em;color:var(--lo-bt)}
.hd-cotw-meta{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.hd-cotw-year{font-size:.74rem;color:var(--txm);font-weight:700}
.hd-cotw-title{font-family:var(--fd);font-size:1.05rem;font-weight:700;color:var(--heading);line-height:1.3}
.hd-cotw-sum{font-size:.84rem;color:var(--txs);line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.hd-cotw-foot{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap;margin-top:auto}
.hd-cotw-progress{font-size:.72rem;color:var(--txm);font-weight:700}
.hd-cotw-progress a{color:var(--lo-bt);font-weight:700}
.liq-dark .hd-cotw-card{background:var(--wh)}

/* Track progress */
.hd-track-row{display:flex;align-items:center;gap:.75rem;margin-bottom:.85rem}
.hd-track-row:last-child{margin-bottom:0}
.hd-track-icon{width:2rem;height:2rem;border-radius:.5rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:.88rem}
.hd-track-info{flex:1;min-width:0}
.hd-track-name{font-size:.83rem;font-weight:700;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:.2rem}
.hd-track-bar{height:5px;background:var(--g100);border-radius:3px;overflow:hidden}
.hd-track-fill{height:100%;border-radius:3px;transition:width .4s ease}
.hd-track-count{font-size:.75rem;font-weight:700;color:var(--txm);flex-shrink:0;min-width:2.5rem;text-align:right}

/* Activity feed */
.hd-activity-item{display:flex;align-items:flex-start;gap:.65rem;padding:.55rem 0;border-bottom:1px solid var(--bdr)}
.hd-activity-item:last-child{border-bottom:none}
.hd-activity-dot{width:8px;height:8px;border-radius:50%;background:var(--lo);flex-shrink:0;margin-top:.38rem}
.hd-activity-label{flex:1;font-size:.84rem;color:var(--tx);line-height:1.4}
.hd-activity-xp{font-size:.75rem;font-weight:700;color:var(--ok);white-space:nowrap}
.hd-activity-time{font-size:.72rem;color:var(--txm);white-space:nowrap}
.hd-empty{text-align:center;padding:1.5rem 1rem;color:var(--txm);font-size:.88rem}

/* Welcome state (no data yet) */
.hd-welcome-card{background:linear-gradient(135deg,var(--lp),#245e8f);border-radius:var(--rl);padding:2rem 2.25rem;color:#fff;margin-bottom:1.5rem}
.hd-welcome-title{font-family:var(--fd);font-size:1.35rem;font-weight:700;margin-bottom:.4rem}
.hd-welcome-sub{font-size:.9rem;color:rgba(255,255,255,.75);margin-bottom:1.25rem;line-height:1.6}
.hd-welcome-steps{display:flex;flex-direction:column;gap:.55rem;margin-bottom:1.5rem}
.hd-welcome-step{display:flex;align-items:center;gap:.75rem;font-size:.88rem;color:rgba(255,255,255,.85)}
.hd-welcome-step-num{width:1.6rem;height:1.6rem;border-radius:50%;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:800;flex-shrink:0}


/* ── GLOBAL SEARCH ──────────────────────────────────────── */
.search-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(3px);
  z-index:var(--z-modal);display:none;align-items:flex-start;justify-content:center;
  padding:6vh 1rem 2rem;
}
.search-overlay.open{display:flex}
.search-modal{
  width:100%;max-width:640px;background:var(--wh);
  border-radius:var(--rl);box-shadow:0 32px 80px rgba(0,0,0,.3);
  overflow:hidden;display:flex;flex-direction:column;max-height:80vh;
}
.search-input-row{
  display:flex;align-items:center;gap:.75rem;
  padding:.9rem 1.15rem;border-bottom:1px solid var(--bdr);
}
.search-input-icon{color:var(--txm);font-size:1.1rem;flex-shrink:0}
.search-input{
  flex:1;border:none;outline:none;background:transparent;
  font-family:var(--fb);font-size:1rem;color:var(--tx);
}
.search-input::placeholder{color:var(--txm)}
.search-kbd{
  font-size:.7rem;font-family:monospace;background:var(--g100);
  border:1px solid var(--bdr);border-radius:4px;padding:.12rem .38rem;
  color:var(--txm);white-space:nowrap;cursor:pointer;flex-shrink:0;
}
.search-results{overflow-y:auto;flex:1}
.search-group-label{
  font-size:.67rem;font-weight:800;text-transform:uppercase;
  letter-spacing:.12em;color:var(--txm);
  padding:.7rem 1.15rem .3rem;background:var(--g100);
  border-bottom:1px solid var(--bdr);position:sticky;top:0;z-index:1;
}
.search-result-item{
  display:flex;align-items:center;gap:.85rem;
  padding:.75rem 1.15rem;cursor:pointer;transition:background .12s;
  border-bottom:1px solid var(--bdr);
}
.search-result-item:last-child{border-bottom:none}
.search-result-item:hover,.search-result-item.active{background:var(--g100)}
.search-result-icon{
  width:2.1rem;height:2.1rem;border-radius:.5rem;
  display:flex;align-items:center;justify-content:center;
  font-size:.9rem;flex-shrink:0;
}
.sri-module{background:rgba(37,99,235,.1);color:#2563eb}
.sri-lexicon{background:rgba(245,158,11,.1);color:#d97706}
.sri-case{background:rgba(124,58,237,.1);color:#7c3aed}
.sri-tool{background:rgba(22,163,74,.1);color:#16a34a}
.search-result-body{flex:1;min-width:0}
.search-result-title{
  font-size:.9rem;font-weight:700;color:var(--tx);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  margin-bottom:.12rem;
}
.search-result-sub{
  font-size:.78rem;color:var(--txs);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.search-result-sub em{font-style:normal;color:var(--lo-bt);font-weight:700}
.search-result-badge{
  font-size:.67rem;font-weight:700;padding:.15rem .45rem;
  border-radius:2rem;white-space:nowrap;flex-shrink:0;
}
.srb-module{background:rgba(37,99,235,.1);color:#2563eb}
.srb-lexicon{background:rgba(245,158,11,.1);color:#d97706}
.srb-case{background:rgba(124,58,237,.1);color:#7c3aed}
.srb-tool{background:rgba(22,163,74,.1);color:#16a34a}
.search-empty{
  text-align:center;padding:2.5rem 1rem;color:var(--txm);
}
.search-empty i{font-size:1.8rem;display:block;margin-bottom:.5rem;opacity:.4}
.search-empty strong{display:block;font-size:.9rem;color:var(--txs);margin-bottom:.25rem}
.search-empty span{font-size:.82rem}
.search-footer{
  padding:.55rem 1.15rem;border-top:1px solid var(--bdr);
  display:flex;gap:1rem;align-items:center;
  background:var(--g100);flex-shrink:0;
}
.search-footer-hint{display:flex;align-items:center;gap:.3rem;font-size:.72rem;color:var(--txm)}
.search-footer-hint kbd{
  font-size:.65rem;font-family:monospace;background:var(--wh);
  border:1px solid var(--bdr);border-radius:3px;padding:.08rem .28rem;color:var(--txs);
}
/* Nav search button */
.nav-search-btn{
  display:flex;align-items:center;gap:.4rem;
  background:rgba(255,255,255,.1);border:none;border-radius:.5rem;
  padding:.38rem .65rem;color:rgba(255,255,255,.75);
  cursor:pointer;transition:all .15s;font-size:.82rem;font-family:var(--fb);
}
.nav-search-btn:hover{background:rgba(255,255,255,.18);color:#fff}
.nav-search-btn kbd{
  font-family:monospace;font-size:.67rem;background:rgba(255,255,255,.15);
  border-radius:3px;padding:.08rem .28rem;color:rgba(255,255,255,.6);
  line-height:1.3;
}
body.liq-dark .search-modal{background:var(--wh)}


/* ── CERTIFICATE ─────────────────────────────────────────── */
.cert-banner{
  background:linear-gradient(135deg,#113a5c 0%,#245e8f 60%,#d64545 100%);
  border-radius:var(--rl);padding:2.25rem 2.5rem;margin-bottom:1.5rem;
  display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:1.5rem;
}
.cert-banner-left{}
.cert-banner-badge{
  display:inline-flex;align-items:center;gap:.5rem;
  background:rgba(255,255,255,.15);border:1.5px solid rgba(255,255,255,.3);
  border-radius:2rem;padding:.3rem .85rem;font-size:.75rem;font-weight:700;
  color:rgba(255,255,255,.85);letter-spacing:.06em;text-transform:uppercase;
  margin-bottom:.75rem;
}
.cert-banner-title{
  font-family:'Playfair Display',Georgia,serif;font-size:1.6rem;
  font-weight:700;color:#fff;margin-bottom:.4rem;
}
.cert-banner-sub{font-size:.92rem;color:rgba(255,255,255,.75);margin-bottom:1.25rem;line-height:1.6}
.cert-banner-code{
  font-family:monospace;font-size:.82rem;color:rgba(255,255,255,.55);
  letter-spacing:.08em;
}
.cert-banner-code span{color:rgba(255,255,255,.85);font-weight:700}
.cert-dl-btn{
  background:#d64545;border:none;border-radius:.75rem;
  padding:.85rem 1.75rem;font-family:'Nunito',system-ui,sans-serif;
  font-size:.95rem;font-weight:800;color:#fff;cursor:pointer;
  transition:all .2s;display:flex;align-items:center;gap:.55rem;
  white-space:nowrap;flex-shrink:0;
}
.cert-dl-btn:hover{background:#b93636;transform:translateY(-1px);box-shadow:0 6px 24px rgba(214,69,69,.4)}
.cert-dl-btn:active{transform:translateY(0)}
.cert-dl-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}


/* ── ADMIN PANEL ─────────────────────────────────────────── */
.admin-section{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);margin-bottom:1.5rem;overflow:hidden}
.admin-section-hdr{display:flex;align-items:center;justify-content:space-between;padding:1.1rem 1.4rem;border-bottom:1px solid var(--bdr);background:var(--g100);flex-wrap:wrap;gap:.5rem}
.admin-section-title{font-family:var(--fd);font-size:1rem;font-weight:700;color:var(--heading);display:flex;align-items:center;gap:.5rem}
.admin-section-body{padding:1.4rem}
.admin-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;margin-bottom:1.5rem}
.admin-stat-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:1.1rem 1.25rem;text-align:center}
.admin-stat-num{font-family:var(--fd);font-size:1.8rem;font-weight:700;color:var(--lp);line-height:1}
.admin-stat-lbl{font-size:.75rem;color:var(--txm);font-weight:600;margin-top:.25rem;text-transform:uppercase;letter-spacing:.06em}
body.liq-dark .admin-stat-num{color:var(--lo-bt)}
.admin-table{width:100%;border-collapse:collapse;font-size:.88rem}
.admin-table th{background:var(--g100);padding:.65rem 1rem;text-align:left;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);border-bottom:1px solid var(--bdr)}
.admin-table td{padding:.72rem 1rem;border-bottom:1px solid var(--bdr);vertical-align:middle;color:var(--tx)}
.admin-table tr:last-child td{border-bottom:none}
.admin-table tr:hover td{background:var(--g100)}
.admin-role-badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:800;padding:.2rem .55rem;border-radius:2rem;text-transform:uppercase;letter-spacing:.05em}
/* Each of these is a hue on its own 12% tint at .72rem/800 — small bold text,
   so the threshold is 4.5. Measured on the composited tint, the three that
   carried a raw hex all failed: admin 2.77 dark, hr 2.89 light / 4.24 dark,
   supervisor 2.79 light / 4.49 dark. .role-manager already used a -bt token and
   passed at 5.66/8.15, which is what the others now look like. */
.role-admin{background:rgba(124,58,237,.12);color:var(--vi-bt)}
.role-manager{background:rgba(37,99,235,.12);color:var(--inf-bt)}
.role-hr{background:rgba(22,163,74,.12);color:var(--ok-bt)}
.role-supervisor{background:rgba(217,119,6,.12);color:var(--wa-bt)}
.role-learner{background:rgba(100,100,100,.1);color:var(--txm)}
.admin-action-btn{border:none;background:transparent;cursor:pointer;padding:.28rem .45rem;border-radius:.35rem;font-size:.88rem;transition:background .15s;color:var(--tx)}
.admin-action-btn:hover{background:var(--g100)}
.admin-action-btn.danger:hover{background:var(--er-l);color:var(--er-bt)}
.admin-status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:.4rem}
.dot-active{background:var(--ok)}
.dot-inactive{background:var(--bdr)}
.dot-archived{background:var(--wa)}
.perm-role-hdr{font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);text-align:center;padding:.5rem .25rem}
.perm-check{width:20px;height:20px;border-radius:4px;border:1.5px solid var(--bdr);display:inline-flex;align-items:center;justify-content:center;font-size:.72rem}
.perm-check.on{background:var(--ok);border-color:var(--ok);color:#fff}
.perm-check.off{background:var(--wh);color:var(--bdr)}
.perm-check.locked{background:var(--g100);border-color:var(--bdr);color:var(--txm)}
.admin-log-item{display:flex;align-items:flex-start;gap:.75rem;padding:.6rem 0;border-bottom:1px solid var(--bdr)}
.admin-log-item:last-child{border-bottom:none}
.admin-log-user{font-size:.82rem;font-weight:700;color:var(--tx);min-width:120px;flex-shrink:0}
.admin-log-label{flex:1;font-size:.82rem;color:var(--txs)}
.admin-log-xp{font-size:.75rem;font-weight:700;color:var(--ok);white-space:nowrap}
.admin-log-time{font-size:.72rem;color:var(--txm);white-space:nowrap;min-width:60px;text-align:right}
/* ── ESA Quick-Calcs ── */
.esa-tabs{display:flex;gap:.3rem;margin-bottom:1rem;border-bottom:1px solid var(--bdr);padding-bottom:.55rem;flex-wrap:wrap}
.esa-tab{display:inline-flex;align-items:center;gap:.4rem;background:var(--wh);border:1px solid var(--bdr);color:var(--txs);font-size:.85rem;font-weight:700;padding:.45rem .85rem;border-radius:99px;cursor:pointer;font-family:var(--fb);transition:all .15s ease}
.esa-tab:hover{border-color:var(--lo);color:var(--lo-bt)}
.esa-tab.active{background:var(--lp);border-color:var(--lp);color:#fff}
body.liq-dark .esa-tab{background:rgba(255,255,255,.04)}
body.liq-dark .esa-tab.active{background:var(--lo);border-color:var(--lo)}
.esa-intro{background:var(--g100);border-left:4px solid var(--lo);border-radius:6px;padding:.7rem .9rem;font-size:.85rem;color:var(--txs);line-height:1.55;margin-bottom:.85rem}
body.liq-dark .esa-intro{background:rgba(255,255,255,.04)}
.esa-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.75rem;margin-bottom:.85rem}
.esa-field{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.7rem .85rem}
body.liq-dark .esa-field{background:rgba(255,255,255,.04)}
.esa-lbl{display:block;font-size:.78rem;font-weight:700;color:var(--heading);margin-bottom:.35rem}
.esa-help{font-size:.72rem;color:var(--txm);margin-top:.3rem;line-height:1.4}
.esa-result{background:linear-gradient(135deg,var(--ok-l),rgba(255,255,255,.7));border:2px solid var(--ok);border-radius:var(--r);padding:1rem 1.1rem;margin-top:1rem}
body.liq-dark .esa-result{background:rgba(22,163,74,.12)}
.esa-result-hd{display:flex;align-items:center;gap:.4rem;font-family:var(--fd);font-size:1rem;font-weight:700;color:var(--ok);margin-bottom:.85rem}
.esa-result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin-bottom:.85rem}
.esa-result-cell{background:var(--wh);border-radius:var(--r);padding:.65rem .85rem;text-align:center}
body.liq-dark .esa-result-cell{background:rgba(255,255,255,.06)}
.esa-result-num{font-family:var(--fd);font-size:1.3rem;font-weight:700;color:var(--lp);line-height:1.1}
.esa-result-num.esa-num-big{font-size:1.7rem;color:var(--ok)}
body.liq-dark .esa-result-num{color:var(--lo-bt)}
body.liq-dark .esa-result-num.esa-num-big{color:#4ade80}
.esa-result-lbl{font-size:.7rem;font-weight:700;color:var(--txm);text-transform:uppercase;letter-spacing:.06em;margin-top:.25rem;line-height:1.3}
.esa-result-cell.esa-cell-highlight{background:var(--wa-l);border:1px solid var(--wa)}
.esa-result-cell.esa-cell-highlight .esa-result-num{color:var(--wa)}
.esa-result-detail{background:var(--wh);border-radius:var(--r);padding:.7rem .9rem;font-size:.83rem;color:var(--txs);line-height:1.55}
body.liq-dark .esa-result-detail{background:rgba(255,255,255,.04)}
.esa-detail-line{margin-bottom:.4rem}
.esa-detail-line:last-child{margin-bottom:0}
.esa-aux{background:var(--g100);border-radius:var(--r);padding:.7rem .9rem}
body.liq-dark .esa-aux{background:rgba(255,255,255,.04)}
.esa-aux-title{font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--txm);margin-bottom:.45rem}
.esa-aux-opts{display:flex;flex-direction:column;gap:.4rem}
.esa-aux-opt{font-size:.82rem;color:var(--txs);line-height:1.5}
.esa-foot{margin-top:.85rem;padding-top:.7rem;border-top:1px solid var(--bdr)}
/* ── Discipline Letter Generator ── */
.dl-modal{max-width:760px;width:100%;max-height:88vh;overflow-y:auto;padding:1.5rem 1.75rem 1.25rem}
.dl-modal-sub{font-size:.78rem;color:var(--txs);margin-top:-.4rem;margin-bottom:1rem;padding-bottom:.85rem;border-bottom:1px solid var(--bdr)}
.dl-type-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.45rem}
.dl-type-card{display:flex;align-items:center;gap:.5rem;background:var(--wh);border:2px solid var(--bdr);border-radius:var(--r);padding:.6rem .75rem;cursor:pointer;transition:all .15s ease}
.dl-type-card:hover{border-color:var(--lo)}
.dl-type-card input{margin:0;flex-shrink:0;accent-color:var(--lo)}
.dl-type-card.active{border-color:var(--lo);background:var(--lo-l)}
.dl-type-name{font-size:.82rem;font-weight:700;color:var(--tx);line-height:1.3}
body.liq-dark .dl-type-card{background:rgba(255,255,255,.04)}
body.liq-dark .dl-type-card.active{background:rgba(214,69,69,.16)}
/* Severity color stripe on left edge */
.dl-type-card.dl-sev-light{border-left:5px solid #16a34a}
.dl-type-card.dl-sev-moderate{border-left:5px solid #d97706}
.dl-type-card.dl-sev-serious{border-left:5px solid #dc2626}
.dl-type-card.dl-sev-critical{border-left:5px solid #7c0a0a}
.dl-type-card.dl-sev-critical .dl-type-name{color:#7c0a0a}
.dl-prefilled{font-size:.7rem;font-weight:600;color:var(--lo-bt);text-transform:none;letter-spacing:0;margin-left:.4rem}
.dl-termination-warn{margin:.55rem 0 .85rem;border-left-width:5px}
.dl-badge{display:inline-flex;align-items:center;gap:.32rem;font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;background:var(--lo-l);color:var(--lo-bt);padding:.13rem .5rem;border-radius:99px;margin-left:.4rem;vertical-align:middle}
body.liq-dark .dl-badge{background:rgba(214,69,69,.18);color:var(--lo-bt)}
.dl-badge i{font-size:.7rem}
.lib-act-btn.lib-act-dl{color:var(--lo-h)}
.lib-act-btn.lib-act-dl:hover{background:var(--lo-btn);color:var(--lo-btn-tx);border-color:var(--lo)}
body.liq-dark .lib-act-btn.lib-act-dl{color:var(--lo-bt)}
body.liq-dark .lib-act-btn.lib-act-dl:hover{background:var(--lo-btn);color:var(--lo-btn-tx)}
/* ── Case File modal + badge ── */
.cf-modal{max-width:720px;width:100%;max-height:88vh;overflow-y:auto;padding:1.5rem 1.75rem 1.25rem}
.cf-modal-sub{font-size:.78rem;color:var(--txs);margin-top:-.4rem;margin-bottom:1rem;padding-bottom:.85rem;border-bottom:1px solid var(--bdr)}
.cf-fieldgroup{background:var(--g100);border:1px solid var(--bdr);border-radius:var(--r);padding:.85rem 1rem;margin-bottom:.85rem}
body.liq-dark .cf-fieldgroup{background:rgba(255,255,255,.04)}
.cf-fg-title{font-family:var(--fb);font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--lp);margin-bottom:.55rem;padding-bottom:.35rem;border-bottom:1px solid var(--bdr)}
body.liq-dark .cf-fg-title{color:var(--lo-bt)}
.cf-lbl{display:block;font-size:.72rem;font-weight:700;color:var(--txm);margin-bottom:.2rem;text-transform:uppercase;letter-spacing:.04em}
.cf-modal-foot{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;padding-top:1rem;margin-top:.3rem;border-top:1px solid var(--bdr);position:sticky;bottom:0;background:var(--wh);padding-bottom:.25rem;margin-bottom:-.5rem}
body.liq-dark .cf-modal-foot{background:var(--wh)}
/* Case-file badge that appears next to a snapshot once a case file has been generated */
.cf-badge{display:inline-flex;align-items:center;gap:.32rem;font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;background:var(--lp-t);color:var(--lp);padding:.13rem .5rem;border-radius:99px;margin-left:.4rem;vertical-align:middle}
body.liq-dark .cf-badge{background:rgba(214,69,69,.18);color:var(--lo-bt)}
.cf-badge i{font-size:.7rem}
/* Library item — case file button (purple to differentiate from Open/Delete) */
.lib-act-btn.lib-act-cf{color:var(--lp)}
.lib-act-btn.lib-act-cf:hover{background:var(--lp);color:#fff;border-color:var(--lp)}
body.liq-dark .lib-act-btn.lib-act-cf{color:var(--lo-bt)}
body.liq-dark .lib-act-btn.lib-act-cf:hover{background:var(--lo-btn);color:var(--lo-btn-tx);border-color:var(--lo)}
/* ── Lexicon "Also discussed in" chips (auto-derived) ── */
.lex-also-mods{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem;margin-top:.7rem;padding-top:.6rem;border-top:1px dashed var(--bdr)}
.lex-also-lbl{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);margin-right:.2rem}
.lex-also-chip{
  display:inline-flex;align-items:center;gap:.32rem;
  background:var(--g100);color:var(--lp);
  border:1px solid var(--bdr);border-radius:99px;
  font-size:.74rem;font-weight:700;
  padding:.18rem .55rem;cursor:pointer;
  transition:background .15s,color .15s,border-color .15s;
}
.lex-also-chip:hover{background:var(--lo-btn);color:var(--lo-btn-tx);border-color:var(--lo)}
.lex-also-chip i{font-size:.78rem}
body.liq-dark .lex-also-chip{background:rgba(255,255,255,.05);color:var(--lo-bt)}
body.liq-dark .lex-also-chip:hover{background:var(--lo-btn);color:var(--lo-btn-tx)}
.lex-also-more{font-size:.72rem;color:var(--txm);font-weight:700;margin-left:.2rem}
/* ── Inline lexicon hover ── */
.lex-link{
  border-bottom:1px dotted var(--lo);
  cursor:help;
  color:inherit;
  transition:background .15s ease,border-color .15s ease;
  border-radius:2px;
  padding:0 1px;
}
.lex-link:hover,.lex-link:focus{
  background:var(--lo-l);
  border-bottom-color:var(--lo);
  border-bottom-style:solid;
  outline:none;
}
.lex-link:focus-visible{
  outline:2px solid var(--lo);
  outline-offset:2px;
}
body.liq-dark .lex-link:hover,body.liq-dark .lex-link:focus{
  background:rgba(214,69,69,.18);
}
.lex-popover{
  position:fixed;
  background:var(--wh);
  border:1px solid var(--bdr);
  border-radius:var(--r);
  box-shadow:0 8px 28px rgba(17,58,92,.16);
  padding:.85rem 1rem;
  max-width:360px;
  z-index:var(--z-mob-nav);
  font-family:var(--fb);
  line-height:1.5;
  animation:lexPopFade .14s ease-out;
}
body.liq-dark .lex-popover{background:#0d1a2e;border-color:rgba(255,255,255,.1);box-shadow:0 8px 28px rgba(0,0,0,.5)}
@keyframes lexPopFade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.lex-pop-hd{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem;flex-wrap:wrap}
.lex-pop-term{font-family:var(--fd);font-weight:700;color:var(--heading);font-size:.95rem;line-height:1.3;flex:1;min-width:0}
.lex-pop-cat{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:.15rem .5rem;border-radius:99px}
.lex-pop-def{font-size:.85rem;color:var(--txs);line-height:1.55;margin-bottom:.55rem}
.lex-pop-foot{padding-top:.5rem;border-top:1px solid var(--bdr);text-align:right}
.lex-pop-cta{
  background:transparent;border:none;color:var(--lo-bt);font-weight:700;font-size:.78rem;
  cursor:pointer;padding:.2rem .35rem;border-radius:4px;display:inline-flex;align-items:center;gap:.3rem;
}
.lex-pop-cta:hover{background:var(--lo-l);color:var(--lo-bt)}
@media (max-width:639px){.lex-popover{max-width:calc(100vw - 24px)}}
/* ── User drill-down activity panel ── */
.user-activity-breakdown{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.6rem;padding-bottom:.55rem;border-bottom:1px solid var(--bdr)}
.user-activity-chip{display:inline-flex;align-items:center;gap:.32rem;font-size:.7rem;font-weight:800;padding:.18rem .55rem;border-radius:99px;text-transform:uppercase;letter-spacing:.04em}
.user-activity-chip i{font-size:.78rem}
.user-activity-list{display:flex;flex-direction:column;gap:.18rem;margin-bottom:.55rem}
.user-activity-item{display:flex;align-items:flex-start;gap:.55rem;padding:.32rem 0;border-bottom:1px solid rgba(0,0,0,.04)}
.user-activity-item:last-child{border-bottom:none}
body.liq-dark .user-activity-item{border-bottom-color:rgba(255,255,255,.05)}
.user-activity-ico{width:1.5rem;height:1.5rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.72rem;flex-shrink:0;margin-top:.05rem}
.user-activity-bd{flex:1;min-width:0;display:flex;justify-content:space-between;align-items:flex-start;gap:.55rem;flex-wrap:wrap}
.user-activity-lbl{font-size:.81rem;color:var(--tx);line-height:1.4;flex:1;min-width:0;word-break:break-word}
.user-activity-time{font-size:.7rem;color:var(--txm);white-space:nowrap;flex-shrink:0}
.user-activity-foot{padding-top:.5rem;border-top:1px solid var(--bdr);text-align:center}
/* ── Developer Tools (Settings tab) ── */
.dev-tools-group{margin-top:1.75rem;border:2px dashed var(--wa);border-radius:var(--rl);padding:1.1rem 1.25rem;background:linear-gradient(135deg,rgba(217,119,6,.04),rgba(214,69,69,.05))}
body.liq-dark .dev-tools-group{background:linear-gradient(135deg,rgba(217,119,6,.08),rgba(214,69,69,.08))}
.dev-tools-title{display:flex;align-items:center;gap:.45rem;color:var(--wa)!important}
.dev-tools-title i{font-size:1rem}
.dev-tools-badge{font-size:.62rem;font-weight:800;letter-spacing:.08em;background:var(--wa);color:#fff;padding:.18rem .55rem;border-radius:99px;margin-left:.4rem}
.dev-tools-warn{display:flex;align-items:flex-start;gap:.5rem;font-size:.8rem;color:var(--wa-bt);background:var(--wa-l);border-radius:6px;padding:.55rem .8rem;margin:.55rem 0 1rem;line-height:1.5}
body.liq-dark .dev-tools-warn{background:rgba(217,119,6,.18)}
.dev-tools-section{margin-top:.85rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.85rem 1rem}
body.liq-dark .dev-tools-section{background:rgba(255,255,255,.04)}
.dev-tools-section-hdr{display:flex;align-items:center;gap:.4rem;font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);margin-bottom:.6rem}
.dev-tools-section-hdr i{color:var(--lo);font-size:.9rem}
.dev-tools-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.5rem}
.dev-tools-grid .btn-liq{justify-content:flex-start;text-align:left;font-size:.83rem;padding:.5rem .8rem;display:flex;align-items:center;gap:.5rem}
.dev-tools-count{margin-left:auto;font-size:.7rem;font-weight:800;color:var(--txm);background:var(--g100);padding:.13rem .5rem;border-radius:99px;flex-shrink:0}
body.liq-dark .dev-tools-count{background:rgba(255,255,255,.06)}
.dev-tools-danger{color:var(--er)!important;border-color:var(--er-l)!important}
.dev-tools-danger:hover{background:var(--er-l)!important;color:var(--er-bt)!important;border-color:var(--er)!important}
.dev-tools-nuke{background:var(--er)!important;color:#fff!important;border-color:var(--er)!important}
.dev-tools-nuke:hover{background:#b91c1c!important;border-color:#b91c1c!important}
.dev-tools-nuke .dev-tools-count{background:rgba(255,255,255,.2);color:#fff}
/* ── Audit Log actor filter ── */
.audit-actor-select{font-size:.82rem;padding:.32rem .65rem;max-width:240px;min-width:160px}
@media (max-width:767px){.audit-actor-select{max-width:none;width:100%}}
/* ── Path Templates summary card (Users tab) ── */
.tpl-summary-count{display:inline-block;font-family:var(--fb);font-size:.7rem;font-weight:800;background:var(--lp);color:#fff;padding:.13rem .5rem;border-radius:99px;margin-left:.4rem;text-transform:none;letter-spacing:0;line-height:1.4;vertical-align:middle}
body.liq-dark .tpl-summary-count{background:var(--lo)}
.tpl-summary-preview{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center}
.tpl-summary-chip{display:inline-flex;align-items:center;background:var(--g100);color:var(--tx);font-size:.78rem;font-weight:600;padding:.32rem .65rem;border-radius:99px;border:1px solid var(--bdr)}
body.liq-dark .tpl-summary-chip{background:rgba(255,255,255,.05)}
.tpl-summary-more{font-size:.74rem;color:var(--txm);font-weight:700;padding:.22rem .55rem}
.tpl-summary-empty{display:flex;align-items:flex-start;gap:.7rem;color:var(--txs);font-size:.85rem;line-height:1.5}
.tpl-summary-empty i{font-size:1.3rem;color:var(--g400);flex-shrink:0;margin-top:.05rem}
/* ── Admin Users tab — search + sort polish ── */
.admin-search-wrap{position:relative;margin-bottom:.85rem}
.admin-search-input{width:100%;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.55rem 2.6rem .55rem 2.4rem;font-size:.9rem;font-family:var(--fb);color:var(--tx);transition:border-color .15s ease,box-shadow .15s ease}
.admin-search-input:focus{outline:none;border-color:var(--lo);box-shadow:0 0 0 3px rgba(214,69,69,.18)}
.admin-search-input::placeholder{color:var(--txm)}
body.liq-dark .admin-search-input{background:rgba(255,255,255,.04)}
.admin-search-ico{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);color:var(--txm);font-size:.95rem;pointer-events:none}
.admin-search-clear{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:var(--g100);color:var(--txs);border:none;border-radius:50%;width:1.7rem;height:1.7rem;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:.72rem;transition:all .15s ease}
.admin-search-clear:hover{background:var(--er);color:#fff}
/* Sortable column headers */
.admin-th-sortable{cursor:pointer;user-select:none;transition:background .15s ease}
.admin-th-sortable:hover{background:var(--g200)}
body.liq-dark .admin-th-sortable:hover{background:rgba(255,255,255,.06)}
.admin-th-active{color:var(--lp)!important;font-weight:800}
body.liq-dark .admin-th-active{color:var(--lo-bt)!important}
.admin-sort-arrow{font-size:.7rem;margin-left:.18rem;color:var(--lp);vertical-align:.05em}
body.liq-dark .admin-sort-arrow{color:var(--lo-bt)}
.admin-sort-arrow-inactive{color:var(--g400);opacity:.6}
.admin-th-sortable:hover .admin-sort-arrow-inactive{opacity:1}
/* Filter chips (search + site) */
.admin-filter-chip{display:inline-flex;align-items:center;font-size:.74rem;font-weight:700;color:var(--lo-bt);background:var(--lo-l);border-radius:99px;padding:.18rem .55rem .18rem .65rem}
.admin-filter-chip-x{cursor:pointer;margin-left:.4rem;font-weight:800;font-size:.85rem;line-height:1;color:var(--lo-h);opacity:.7}
.admin-filter-chip-x:hover{opacity:1}
/* ── Onboarding 30-day plan ── */
.ob-banner{display:flex;align-items:center;gap:.85rem;background:linear-gradient(135deg,rgba(214,69,69,.1),rgba(17,58,92,.06));border:1.5px solid rgba(214,69,69,.4);border-radius:var(--r);padding:.85rem 1rem}
body.liq-dark .ob-banner{background:linear-gradient(135deg,rgba(214,69,69,.16),rgba(255,255,255,.03))}
.ob-banner-ico{width:2.4rem;height:2.4rem;border-radius:50%;background:var(--lo-btn);color:var(--lo-btn-tx);display:flex;align-items:center;justify-content:center;font-size:1.1rem;flex-shrink:0}
.ob-banner-body{flex:1;min-width:0}
.ob-banner-title{font-family:var(--fd);font-size:.98rem;font-weight:700;color:var(--heading);line-height:1.25}
.ob-banner-sub{font-size:.75rem;color:var(--txs);margin-top:.18rem}
.ob-banner-days{margin-left:.55rem;color:var(--lo-bt);font-weight:700}
.ob-banner-bar{margin-top:.45rem;height:5px;background:rgba(0,0,0,.06);border-radius:99px;overflow:hidden;max-width:340px}
body.liq-dark .ob-banner-bar{background:rgba(255,255,255,.08)}
.ob-banner-fill{height:100%;background:var(--lo);border-radius:99px;transition:width .4s ease}
.ob-banner-actions{display:flex;align-items:center;gap:.4rem;flex-shrink:0}
.ob-banner-dismiss{background:transparent;border:none;color:var(--txm);cursor:pointer;width:1.85rem;height:1.85rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.8rem;transition:all .15s ease}
.ob-banner-dismiss:hover{background:rgba(0,0,0,.06);color:var(--tx)}
@media (max-width:639px){
  .ob-banner{flex-wrap:wrap}
  .ob-banner-actions{width:100%;justify-content:space-between}
}
.ob-prog-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.4rem 1.6rem;margin-bottom:1.5rem}
body.liq-dark .ob-prog-card{background:rgba(255,255,255,.04)}
.ob-prog-hd{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:1rem;margin-bottom:.85rem}
.ob-prog-num{font-family:var(--fd);font-size:2rem;font-weight:700;color:var(--lp);line-height:1}
body.liq-dark .ob-prog-num{color:var(--lo-bt)}
.ob-prog-denom{font-family:var(--fb);font-size:.95rem;font-weight:600;color:var(--txm)}
.ob-prog-pct{font-size:.85rem;color:var(--txs);margin-top:.3rem}
.ob-celebrate{font-family:var(--fd);font-size:1rem;font-weight:700;color:var(--ok-bt);background:var(--ok-l);padding:.5rem .85rem;border-radius:99px;display:inline-flex;align-items:center;gap:.4rem}
.ob-prog-bar{height:8px;background:var(--g100);border-radius:99px;overflow:hidden;margin-bottom:1rem}
body.liq-dark .ob-prog-bar{background:rgba(255,255,255,.08)}
.ob-prog-fill{height:100%;background:linear-gradient(90deg,var(--lo),var(--lp));border-radius:99px;transition:width .4s ease}
.ob-prog-weeks{display:grid;grid-template-columns:repeat(4,1fr);gap:.55rem}
.ob-prog-week{padding:.5rem .75rem;background:var(--g100);border-radius:var(--r);text-align:center;border:1px solid transparent}
body.liq-dark .ob-prog-week{background:rgba(255,255,255,.04)}
.ob-prog-week-num{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--txm)}
.ob-prog-week-prog{font-size:.78rem;font-weight:700;color:var(--tx);margin-top:.2rem}
.ob-prog-week.ob-week-active{border-color:var(--lo);background:var(--lo-l)}
.ob-prog-week.ob-week-done{border-color:var(--ok);background:var(--ok-l)}
.ob-prog-week.ob-week-done .ob-prog-week-num,.ob-prog-week.ob-week-done .ob-prog-week-prog{color:var(--ok)}
.ob-week-section{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);overflow:hidden;margin-bottom:1.25rem}
body.liq-dark .ob-week-section{background:rgba(255,255,255,.04)}
.ob-week-section.ob-week-done{opacity:.85}
.ob-week-hdr{display:flex;align-items:center;gap:.85rem;padding:.95rem 1.25rem;background:var(--g100);border-bottom:1px solid var(--bdr);flex-wrap:wrap}
.ob-week-pill{font-family:var(--fb);font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--lo-btn-tx);background:var(--lp);padding:.25rem .65rem;border-radius:99px}
body.liq-dark .ob-week-pill{background:var(--lo-btn)}
.ob-week-section.ob-week-done .ob-week-pill{background:var(--ok)}
.ob-week-title{font-family:var(--fd);font-size:1.05rem;font-weight:700;color:var(--heading);flex:1}
.ob-week-count{font-size:.85rem;font-weight:700;color:var(--txm)}
.ob-week-section.ob-week-done .ob-week-count{color:var(--ok)}
.ob-week-body{padding:.4rem .75rem .85rem}
.ob-step{display:flex;align-items:flex-start;gap:.85rem;padding:.95rem .75rem;border-bottom:1px solid var(--bdr)}
.ob-step:last-child{border-bottom:none}
.ob-step.done{opacity:.7}
.ob-step-ico{width:2.4rem;height:2.4rem;border-radius:50%;background:var(--lo-l);color:var(--lo-bt);display:flex;align-items:center;justify-content:center;font-size:1.05rem;flex-shrink:0}
.ob-step.done .ob-step-ico{background:var(--ok-l);color:var(--ok-bt)}
.ob-step-body{flex:1;min-width:0}
.ob-step-title{font-family:var(--fb);font-size:.98rem;font-weight:700;color:var(--heading);line-height:1.3}
.ob-step-desc{font-size:.83rem;color:var(--txs);line-height:1.55;margin-top:.25rem}
.ob-step-action{flex-shrink:0;align-self:center}
.ob-step-done{display:inline-flex;align-items:center;gap:.4rem;background:var(--ok-l);color:var(--ok-bt);font-size:.78rem;font-weight:800;padding:.4rem .75rem;border-radius:99px}
@media (max-width:767px){
  .ob-step{flex-wrap:wrap}
  .ob-step-action{width:100%;margin-top:.4rem}
  .ob-step-cta,.ob-step-done{width:100%;justify-content:center}
  .ob-prog-weeks{grid-template-columns:repeat(2,1fr)}
}
.ob-footer-celebrate{text-align:center;padding:2.5rem 1.5rem;background:linear-gradient(135deg,var(--ok-l),rgba(255,255,255,.7));border:2px solid var(--ok);border-radius:var(--rl);margin-top:1rem}
body.liq-dark .ob-footer-celebrate{background:linear-gradient(135deg,rgba(22,163,74,.12),rgba(255,255,255,.04))}
.ob-celebrate-big{font-size:3.2rem;color:var(--ok);line-height:1;margin-bottom:.6rem}
.ob-celebrate-title{font-family:var(--fd);font-size:1.4rem;font-weight:700;color:var(--heading);margin-bottom:.4rem}
.ob-celebrate-sub{font-size:.9rem;color:var(--txs);max-width:520px;margin:0 auto;line-height:1.55}
.ob-footer-tip{margin-top:1rem;padding:.85rem 1.1rem;background:var(--g100);border-radius:var(--r);font-size:.83rem;color:var(--txs);line-height:1.55}
body.liq-dark .ob-footer-tip{background:rgba(255,255,255,.04)}
/* ── Home recommendation card — urgency tiers ── */
.hd-card-urgency-critical{border-color:var(--er);box-shadow:0 0 0 1px var(--er),0 6px 22px rgba(220,38,38,.13)}
.hd-card-urgency-critical .hd-card-label{color:var(--er)}
.hd-card-urgency-high{border-color:var(--er);box-shadow:0 6px 18px rgba(220,38,38,.08)}
.hd-card-urgency-high .hd-card-label{color:var(--er)}
.hd-card-urgency-medium{border-color:var(--wa);box-shadow:0 6px 18px rgba(217,119,6,.08)}
.hd-card-urgency-medium .hd-card-label{color:var(--wa)}
.hd-card-urgency-review{border-color:var(--lo);background:linear-gradient(135deg,rgba(214,69,69,.04),var(--wh))}
body.liq-dark .hd-card-urgency-review{background:linear-gradient(135deg,rgba(214,69,69,.08),rgba(255,255,255,.04))}
.hd-card-urgency-celebration{border-color:var(--ok);background:linear-gradient(135deg,var(--ok-l),var(--wh))}
body.liq-dark .hd-card-urgency-celebration{background:linear-gradient(135deg,rgba(22,163,74,.12),rgba(255,255,255,.04))}
.hd-rec-eyebrow{display:inline-block;font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;margin-bottom:.4rem}
.hd-rec-due{display:inline-flex;align-items:center;font-size:.74rem;font-weight:800;letter-spacing:.04em;padding:.22rem .65rem;border-radius:99px;margin-bottom:.5rem;text-transform:uppercase}
/* ── AMP Tracker ── */
.amp-empty{text-align:center;padding:3rem 1rem;background:var(--wh);border:1px dashed var(--bdr);border-radius:var(--rl);color:var(--txm)}
body.liq-dark .amp-empty{background:rgba(255,255,255,.04)}
.amp-empty-ico{font-size:3rem;color:var(--g400);margin-bottom:.6rem;line-height:1}
.amp-empty-title{font-family:var(--fd);font-size:1.1rem;font-weight:700;color:var(--heading);margin-bottom:.4rem}
.amp-empty-body{font-size:.88rem;color:var(--txs);max-width:480px;margin:0 auto 1rem;line-height:1.55}
.amp-list{display:flex;flex-direction:column;gap:.55rem}
.amp-row{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.4fr auto;gap:1rem;align-items:center;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.85rem 1rem;cursor:pointer;transition:all .15s ease}
.amp-row:hover{border-color:var(--lo);box-shadow:0 4px 14px rgba(17,58,92,.06);transform:translateY(-1px)}
body.liq-dark .amp-row{background:rgba(255,255,255,.04)}
.amp-row-archived{cursor:default}
.amp-row-archived:hover{transform:none;box-shadow:none;border-color:var(--bdr)}
.amp-row-name{min-width:0}
.amp-row-stat{min-width:0}
.amp-row-rec{display:inline-flex;align-items:center;gap:.4rem;font-size:.78rem;font-weight:700;padding:.4rem .65rem;border-radius:99px;line-height:1.3;justify-self:start}
@media (max-width:991px){
  .amp-row{grid-template-columns:1fr 1fr;grid-template-rows:auto auto auto}
  .amp-row-rec{grid-column:1 / span 2}
  .amp-row > .bi-chevron-right{display:none}
}
.amp-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.85rem;margin-bottom:1.25rem}
.amp-stat-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:1rem 1.1rem;border-left:4px solid var(--g400)}
body.liq-dark .amp-stat-card{background:rgba(255,255,255,.04)}
.amp-stat-card.stat-er{border-left-color:var(--er)}
.amp-stat-card.stat-er-soft{border-left-color:#fca5a5}
.amp-stat-card.stat-wa-soft{border-left-color:#fcd34d}
.amp-stat-card.stat-inf-soft{border-left-color:#93c5fd}
.amp-stat-card.stat-ok{border-left-color:var(--ok)}
.amp-stat-num{font-family:var(--fd);font-size:1.7rem;font-weight:700;color:var(--lp);line-height:1}
body.liq-dark .amp-stat-num{color:var(--lo-bt)}
.amp-stat-lbl{font-size:.7rem;color:var(--txm);font-weight:800;text-transform:uppercase;letter-spacing:.06em;margin-top:.25rem}
.amp-stat-sub{font-size:.7rem;color:var(--txs);margin-top:.18rem}
.amp-rec{display:flex;align-items:flex-start;gap:.85rem;padding:1rem 1.1rem;border-radius:var(--r);margin-bottom:1rem;border:2px solid var(--g400)}
.amp-rec-ico{width:2.2rem;height:2.2rem;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.1rem;flex-shrink:0}
.amp-rec-body{flex:1;min-width:0}
.amp-rec-title{font-family:var(--fd);font-size:1rem;font-weight:700;margin-bottom:.25rem}
.amp-rec-detail{font-size:.85rem;color:var(--txs);line-height:1.55}
.amp-section{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);margin-bottom:1rem;overflow:hidden}
body.liq-dark .amp-section{background:rgba(255,255,255,.04)}
.amp-section-hdr{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.1rem;background:var(--g100);border-bottom:1px solid var(--bdr);font-size:.85rem;font-weight:800;color:var(--heading);text-transform:uppercase;letter-spacing:.06em}
.amp-section-count{margin-left:auto;background:var(--lp);color:#fff;font-size:.7rem;font-weight:800;padding:.13rem .5rem;border-radius:99px;text-transform:none;letter-spacing:0}
body.liq-dark .amp-section-count{background:var(--lo)}
.amp-pattern{padding:.7rem 1.1rem;background:var(--g100);margin:.5rem 1rem}
body.liq-dark .amp-pattern{background:rgba(255,255,255,.06)}
.amp-pattern-title{font-size:.85rem;font-weight:700;margin-bottom:.2rem}
.amp-pattern-detail{font-size:.78rem;color:var(--txs);line-height:1.55}
.amp-abs-row{display:grid;grid-template-columns:90px 60px 130px 1fr auto;gap:.8rem;align-items:flex-start;padding:.65rem 1.1rem;border-bottom:1px solid var(--bdr)}
.amp-abs-row:last-child{border-bottom:none}
.amp-abs-date{min-width:0}
.amp-abs-day{font-size:.7rem;font-weight:800;color:var(--txm);text-transform:uppercase;letter-spacing:.06em}
.amp-abs-fdate{font-size:.85rem;font-weight:700;color:var(--tx)}
.amp-abs-dur{font-size:.85rem;color:var(--txs);font-weight:600;align-self:center}
.amp-abs-cls{min-width:0}
.amp-chip{display:inline-block;font-size:.7rem;font-weight:800;padding:.18rem .55rem;border-radius:99px;text-transform:uppercase;letter-spacing:.05em}
.amp-abs-reason{min-width:0;font-size:.85rem}
.amp-row-del{background:var(--g100);border:1px solid var(--bdr);border-radius:6px;color:var(--txm);width:1.85rem;height:1.85rem;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:.78rem;flex-shrink:0;align-self:center;transition:all .15s ease}
.amp-row-del:hover{background:var(--er);color:#fff;border-color:var(--er)}
body.liq-dark .amp-row-del{background:rgba(255,255,255,.04)}
@media (max-width:767px){
  .amp-abs-row{grid-template-columns:1fr auto;grid-template-rows:auto auto auto}
  .amp-abs-date{grid-column:1}
  .amp-abs-dur{grid-column:1;font-size:.78rem}
  .amp-abs-cls{grid-column:1 / span 2}
  .amp-abs-reason{grid-column:1 / span 2}
  .amp-row-del{grid-column:2;grid-row:1}
}
.amp-step-row{display:flex;align-items:center;gap:.85rem;padding:.7rem 1.1rem;border-bottom:1px solid var(--bdr)}
.amp-step-row:last-child{border-bottom:none}
.amp-step-num{width:2rem;height:2rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--fd);font-weight:800;font-size:.95rem;color:#fff;flex-shrink:0}
.amp-step-num.step-1{background:#2563eb}
.amp-step-num.step-2{background:#d97706}
.amp-step-num.step-3{background:#dc2626}
.amp-step-num.step-4{background:#7c3aed}
/* ── Reasonable Notice Calculator ── */
.nc-form{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.25rem}
.nc-section{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:1rem 1.1rem}
body.liq-dark .nc-section{background:rgba(255,255,255,.04)}
.nc-lbl-hdr{display:flex;align-items:center;gap:.4rem;font-size:.82rem;font-weight:800;color:var(--heading);margin-bottom:.6rem;text-transform:uppercase;letter-spacing:.06em}
.nc-lbl-hdr i{color:var(--lo);font-size:.95rem}
.nc-lbl{display:block;font-size:.74rem;font-weight:700;color:var(--txm);margin-bottom:.25rem;text-transform:uppercase;letter-spacing:.04em}
.nc-radio-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.5rem}
.nc-radio{display:flex;align-items:flex-start;gap:.55rem;background:var(--g100);border:2px solid var(--bdr);border-radius:var(--r);padding:.7rem .85rem;cursor:pointer;transition:all .15s ease}
.nc-radio:hover{border-color:var(--lo)}
.nc-radio.active{border-color:var(--lo);background:var(--lo-p)}
.nc-radio input{margin-top:.18rem;flex-shrink:0;accent-color:var(--lo)}
.nc-radio-title{font-size:.88rem;font-weight:700;color:var(--tx);margin-bottom:.15rem}
.nc-radio-sub{font-size:.74rem;color:var(--txs);line-height:1.4}
body.liq-dark .nc-radio{background:rgba(255,255,255,.04)}
.nc-toggle{display:inline-flex;background:var(--g100);border-radius:99px;padding:.18rem;border:1px solid var(--bdr)}
.nc-toggle-btn{background:transparent;border:none;font-size:.78rem;font-weight:700;color:var(--txs);padding:.32rem .85rem;border-radius:99px;cursor:pointer}
.nc-toggle-btn.active{background:var(--lo-btn);color:var(--lo-btn-tx)}
.nc-checkbox{display:inline-flex;align-items:center;gap:.45rem;font-size:.85rem;color:var(--tx);cursor:pointer;font-weight:600}
.nc-checkbox input{accent-color:var(--lo);width:1rem;height:1rem;cursor:pointer}
.nc-results{margin-top:1.5rem}
.nc-summary-bar{display:flex;flex-wrap:wrap;gap:1rem;background:linear-gradient(135deg,var(--lp-t),rgba(214,69,69,.06));border:1px solid rgba(214,69,69,.25);border-radius:var(--r);padding:.85rem 1.1rem;margin-bottom:1rem}
.nc-summary-item{flex:1;min-width:120px}
.nc-summary-num{font-family:var(--fd);font-size:1.15rem;font-weight:700;color:var(--heading);line-height:1.2}
.nc-summary-lbl{font-size:.7rem;font-weight:700;color:var(--txm);text-transform:uppercase;letter-spacing:.06em;margin-top:.15rem}
body.liq-dark .nc-summary-num{color:var(--lo-bt)}
.nc-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);overflow:hidden;margin-bottom:1rem}
body.liq-dark .nc-card{background:rgba(255,255,255,.04)}
.nc-card-hdr{display:flex;align-items:center;gap:.5rem;padding:.85rem 1.1rem;background:var(--g100);border-bottom:1px solid var(--bdr);font-family:var(--fd);font-size:.98rem;font-weight:700;color:var(--heading);flex-wrap:wrap}
.nc-card-sub{margin-left:auto;font-family:var(--fb);font-size:.72rem;font-weight:600;color:var(--txm);text-transform:none;letter-spacing:0}
.nc-card-body{padding:1rem 1.1rem}
.nc-row{display:flex;align-items:center;justify-content:space-between;gap:.65rem;padding:.55rem 0;border-bottom:1px solid var(--bdr);flex-wrap:wrap}
.nc-row:last-child{border-bottom:none}
.nc-row-lbl{font-size:.85rem;color:var(--txs);font-weight:600;flex:1;min-width:0}
.nc-row-val{font-size:.92rem;font-weight:700;color:var(--tx);text-align:right}
.nc-row.nc-total{margin-top:.25rem;padding-top:.7rem;border-top:2px solid var(--bdr);border-bottom:none}
.nc-row.nc-total .nc-row-lbl{font-weight:800;color:var(--heading);font-size:.9rem}
.nc-row.nc-total .nc-row-val{font-size:1.05rem;color:var(--lo-bt)}
.nc-row.nc-row-na .nc-row-val{color:var(--txm);font-weight:600}
.nc-disq{display:flex;align-items:flex-start;gap:.6rem;font-size:.85rem;color:var(--txs);background:var(--g100);border-radius:var(--r);padding:.85rem 1rem;line-height:1.55}
.nc-disq i{font-size:1rem;flex-shrink:0;margin-top:.05rem}
.nc-factor-row{display:grid;grid-template-columns:160px 1fr 90px;gap:.6rem;align-items:center;padding:.45rem .6rem;border-radius:6px;margin-bottom:.3rem;background:var(--g100);font-size:.83rem}
.nc-factor-row.pos{background:var(--ok-l)}
.nc-factor-row.neg{background:var(--er-l)}
.nc-factor-lbl{font-weight:700;color:var(--tx)}
.nc-factor-detail{color:var(--txs);font-size:.78rem}
.nc-factor-delta{text-align:right;font-weight:800;font-size:.83rem;color:var(--txs)}
.nc-factor-row.pos .nc-factor-delta{color:var(--ok)}
.nc-factor-row.neg .nc-factor-delta{color:var(--er)}
@media (max-width:639px){
  .nc-factor-row{grid-template-columns:1fr 80px;grid-template-rows:auto auto}
  .nc-factor-detail{grid-column:1 / span 2;font-size:.76rem}
}
body.liq-dark .nc-factor-row{background:rgba(255,255,255,.06)}
body.liq-dark .nc-factor-row.pos{background:rgba(22,163,74,.18)}
body.liq-dark .nc-factor-row.neg{background:rgba(220,38,38,.18)}
/* ── Review Mode (Spaced Repetition) ── */
.rev-card{display:flex;align-items:flex-start;gap:1rem;background:linear-gradient(135deg,rgba(17,58,92,.04),rgba(214,69,69,.07));border:1.5px solid rgba(214,69,69,.3);border-radius:var(--r);padding:1.1rem 1.3rem;margin-bottom:1.25rem}
body.liq-dark .rev-card{background:linear-gradient(135deg,rgba(214,69,69,.08),rgba(214,69,69,.14));border-color:rgba(214,69,69,.4)}
.rev-card-ico{width:2.6rem;height:2.6rem;border-radius:50%;background:var(--lo-btn);color:var(--lo-btn-tx);display:flex;align-items:center;justify-content:center;font-size:1.2rem;flex-shrink:0}
.rev-card-body{flex:1;min-width:0}
.rev-card-title{font-family:var(--fd);font-size:1.05rem;font-weight:700;color:var(--heading);margin-bottom:.2rem;display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}
.rev-card-sub{font-size:.85rem;color:var(--txs);line-height:1.5;margin-bottom:.5rem}
.rev-card-meta{display:flex;flex-wrap:wrap;gap:.4rem .9rem;font-size:.74rem;color:var(--txm);font-weight:600;letter-spacing:.02em}
.rev-card-actions{flex-shrink:0;align-self:center}
.rev-card-weak{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;background:var(--er-l);color:var(--er-bt);padding:.18rem .55rem;border-radius:99px;display:inline-flex;align-items:center;gap:.3rem}
.rev-card-cap{font-size:.74rem;color:var(--wa-bt);background:var(--wa-l);border-radius:6px;padding:.4rem .6rem;margin-top:.55rem;display:flex;align-items:center;gap:.4rem}
@media (max-width:639px){
  .rev-card{flex-direction:column;gap:.7rem}
  .rev-card-actions{width:100%}
  .rev-card-actions .btn-liq{width:100%;justify-content:center}
}
.review-shell{max-width:760px;margin:0 auto}
.rev-q-meta{display:flex;align-items:center;flex-wrap:wrap;gap:.55rem;margin-bottom:.85rem}
.rev-q-source{font-size:.74rem;font-weight:700;color:var(--txm);background:var(--g100);border-radius:99px;padding:.22rem .65rem;display:inline-flex;align-items:center}
.rev-weak-badge{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;background:var(--er-l);color:var(--er-bt);padding:.18rem .55rem;border-radius:99px;display:inline-flex;align-items:center;gap:.3rem}
.rev-end-card{background:var(--wh);border:2px solid var(--bdr);border-radius:var(--rl);padding:1.6rem 1.5rem;text-align:center;margin-bottom:1rem}
.rev-end-card.s-ok{border-color:var(--ok);background:linear-gradient(135deg,var(--ok-l),rgba(255,255,255,.7))}
.rev-end-card.s-or{border-color:var(--lo);background:linear-gradient(135deg,var(--lo-l),rgba(255,255,255,.7))}
.rev-end-card.s-er{border-color:var(--er);background:linear-gradient(135deg,var(--er-l),rgba(255,255,255,.7))}
body.liq-dark .rev-end-card{background:rgba(255,255,255,.04)}
body.liq-dark .rev-end-card.s-ok,body.liq-dark .rev-end-card.s-or,body.liq-dark .rev-end-card.s-er{background:rgba(255,255,255,.05)}
.rev-end-score-num{font-family:var(--fd);font-size:3.2rem;font-weight:700;color:var(--lp);line-height:1;margin-bottom:.2rem}
body.liq-dark .rev-end-score-num{color:var(--lo-bt)}
.rev-end-score-pct{font-size:1.05rem;font-weight:800;color:var(--txs);letter-spacing:.04em;margin-bottom:.3rem}
.rev-end-score-msg{font-size:.92rem;color:var(--txs);max-width:480px;margin:0 auto .85rem;line-height:1.55}
.rev-end-xp{font-size:.95rem;font-weight:800;color:var(--lo-bt);display:inline-flex;align-items:center;gap:.35rem}
.rev-xp-list{font-size:.78rem;color:var(--txs);text-align:left;max-width:380px;margin:.85rem auto 0;padding-left:1.2rem;line-height:1.7}
.rev-xp-list li{margin-bottom:.15rem}
.rev-weak-line{font-size:.85rem;background:var(--er-l);color:var(--er-bt);border-radius:var(--r);padding:.65rem .9rem;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem;font-weight:600}
.rev-weak-line.rev-weak-clear{background:var(--ok-l);color:var(--ok-bt)}
.rev-result-item{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.85rem 1.1rem;margin-bottom:.6rem}
body.liq-dark .rev-result-item{background:rgba(255,255,255,.04)}
.rev-result-hd{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;font-size:.77rem;color:var(--txm);margin-bottom:.45rem}
.rev-result-num{background:var(--lp);color:#fff;border-radius:50%;width:1.5rem;height:1.5rem;display:inline-flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:800;flex-shrink:0}
body.liq-dark .rev-result-num{background:var(--lo)}
.rev-result-src{font-weight:700}
.rev-result-status{margin-left:auto;font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;padding:.15rem .55rem;border-radius:99px}
.rev-result-status.ok{background:var(--ok-l);color:var(--ok-bt)}
.rev-result-status.er{background:var(--er-l);color:var(--er-bt)}
.rev-result-q{font-size:.92rem;font-weight:700;color:var(--tx);line-height:1.4;margin-bottom:.5rem}
.rev-result-opts{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.55rem}
/* .qrev-opt / .qrev-correct / .qrev-wrong are defined above in the module quiz section — reused as-is */
.rev-result-exp{font-size:.82rem;color:var(--txs);background:var(--g100);border-radius:var(--rs);padding:.55rem .75rem;line-height:1.55;border-left:3px solid var(--lo)}
body.liq-dark .rev-result-exp{background:rgba(255,255,255,.04)}
/* ── My Library ── */
.lib-tabs{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.85rem;border-bottom:1px solid var(--bdr);padding-bottom:.85rem}
.lib-tab{display:inline-flex;align-items:center;gap:.4rem;background:var(--wh);border:1px solid var(--bdr);color:var(--txs);font-size:.83rem;font-weight:700;padding:.45rem .85rem;border-radius:99px;cursor:pointer;transition:all .15s ease;font-family:var(--fb)}
.lib-tab:hover{border-color:var(--lo);color:var(--lo-bt)}
.lib-tab.active{background:var(--lp);border-color:var(--lp);color:#fff}
.lib-tab.active:hover{background:var(--lp-m);border-color:var(--lp-m);color:#fff}
.lib-tab i{font-size:.9rem}
.lib-tab-count{background:rgba(0,0,0,.08);color:inherit;font-size:.7rem;font-weight:800;padding:.1rem .45rem;border-radius:99px;min-width:1.4rem;text-align:center;line-height:1.4}
.lib-tab.active .lib-tab-count{background:rgba(255,255,255,.22)}
body.liq-dark .lib-tab{background:rgba(255,255,255,.04);color:var(--tx)}
body.liq-dark .lib-tab.active{background:var(--lo-btn);border-color:var(--lo);color:var(--lo-btn-tx)}
.lib-search-wrap{position:relative;margin-bottom:.85rem}
.lib-search{width:100%;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.65rem 2.6rem .65rem 2.4rem;font-size:.92rem;font-family:var(--fb);color:var(--tx);transition:border-color .15s ease}
.lib-search:focus{outline:none;border-color:var(--lo);box-shadow:0 0 0 3px rgba(214,69,69,.18)}
.lib-search::placeholder{color:var(--txm)}
.lib-search-ico{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);color:var(--txm);font-size:1rem;pointer-events:none}
.lib-search-clear{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:var(--g100);color:var(--txs);border:none;border-radius:50%;width:1.7rem;height:1.7rem;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:.75rem;transition:all .15s ease}
.lib-search-clear:hover{background:var(--er);color:#fff}
body.liq-dark .lib-search{background:rgba(255,255,255,.04)}
.lib-results-line{font-size:.78rem;color:var(--txm);margin-bottom:.85rem}
.lib-results-line strong{color:var(--lp);font-weight:800}
body.liq-dark .lib-results-line strong{color:var(--lo-bt)}
.lib-list{display:flex;flex-direction:column;gap:.55rem}
.lib-item{display:flex;align-items:flex-start;gap:.85rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.85rem 1rem;cursor:pointer;transition:all .15s ease}
.lib-item:hover{border-color:var(--lo);box-shadow:0 4px 14px rgba(17,58,92,.06);transform:translateY(-1px)}
body.liq-dark .lib-item{background:rgba(255,255,255,.04)}
.lib-item-ico{width:2.4rem;height:2.4rem;border-radius:var(--r);display:flex;align-items:center;justify-content:center;font-size:1.05rem;flex-shrink:0}
.lib-item-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:.18rem}
.lib-item-hd{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.lib-type-chip{font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;padding:.13rem .45rem;border-radius:3px;line-height:1.3}
.lib-item-title{font-family:var(--fb);font-weight:700;font-size:.92rem;color:var(--tx);line-height:1.35;flex:1;min-width:0}
.lib-item-sub{font-size:.82rem;color:var(--txs);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lib-item-meta{font-size:.72rem;color:var(--txm);font-weight:600;letter-spacing:.02em}
.lib-item-actions{display:flex;flex-direction:column;gap:.35rem;flex-shrink:0;margin-left:.4rem}
.lib-act-btn{background:var(--g100);color:var(--txs);border:1px solid var(--bdr);border-radius:6px;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;font-size:.85rem;cursor:pointer;transition:all .15s ease}
.lib-act-btn:hover{background:var(--lo-btn);color:var(--lo-btn-tx);border-color:var(--lo)}
.lib-act-btn.lib-act-danger:hover{background:var(--er);color:#fff;border-color:var(--er)}
body.liq-dark .lib-act-btn{background:rgba(255,255,255,.04)}
.lib-empty{text-align:center;padding:3rem 1rem;background:var(--wh);border:1px dashed var(--bdr);border-radius:var(--r);color:var(--txm)}
body.liq-dark .lib-empty{background:rgba(255,255,255,.02)}
.lib-empty-ico{font-size:2.6rem;color:var(--g400);margin-bottom:.6rem;line-height:1}
.lib-empty-title{font-family:var(--fd);font-size:1.05rem;font-weight:700;color:var(--heading);margin-bottom:.3rem}
.lib-empty-body{font-size:.88rem;color:var(--txs);max-width:480px;margin:0 auto;line-height:1.55}
@media (max-width:767px){
  .lib-item{padding:.75rem .85rem;gap:.65rem}
  .lib-item-ico{width:2.1rem;height:2.1rem;font-size:.95rem}
  .lib-item-title{font-size:.88rem}
  .lib-item-sub{font-size:.78rem;-webkit-line-clamp:3}
  .lib-tab{font-size:.78rem;padding:.4rem .7rem}
}
/* ── Authorship / Attribution ──
   Created by Matt Laframboise — © 2026. Do not remove. */
.liq-attribution{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.5rem;font-size:.72rem;color:var(--txm);text-align:center;margin-top:1rem;letter-spacing:.02em}
.liq-attribution strong{color:var(--lp);font-weight:800}
.liq-attribution .liq-attr-mark{font-family:var(--fd);font-weight:700;color:var(--lp);letter-spacing:.04em}
.liq-attribution .liq-attr-sep{color:var(--txm);user-select:none}
body.liq-dark .liq-attribution strong,body.liq-dark .liq-attribution .liq-attr-mark{color:var(--lo-bt)}
.liq-login-attribution{text-align:center;font-size:.74rem;color:rgba(255,255,255,.55);margin-top:1.5rem;letter-spacing:.04em;line-height:1.5}
.liq-login-attribution strong{color:rgba(255,255,255,.85);font-weight:800}
/* ── Admin Overview Dashboard ── */
.dash-kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.85rem;margin-bottom:1.25rem}
.dash-kpi{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.95rem 1rem .85rem 1.15rem;display:flex;flex-direction:column;gap:.2rem;position:relative;overflow:hidden}
.dash-kpi::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--g200)}
.dash-kpi.kpi-ok::before{background:var(--ok)}
.dash-kpi.kpi-er::before{background:var(--er)}
.dash-kpi.kpi-wa::before{background:var(--wa)}
.dash-kpi.kpi-inf::before{background:var(--inf)}
.dash-kpi.kpi-lo::before{background:var(--lo)}
.dash-kpi.kpi-lp::before{background:var(--lp)}
.dash-kpi-hd{display:flex;align-items:center;gap:.4rem;font-size:.7rem;color:var(--txm);font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.dash-kpi-hd i{font-size:.85rem}
.dash-kpi-num{font-family:var(--fd);font-size:1.8rem;font-weight:700;color:var(--lp);line-height:1.05;margin-top:.1rem}
body.liq-dark .dash-kpi-num{color:var(--lo-bt)}
.dash-kpi-sub{font-size:.7rem;color:var(--txs);margin-top:.05rem}
.dash-kpi-sub.s-er{color:var(--er-bt);font-weight:700}
.dash-kpi-sub.s-wa{color:var(--wa-bt);font-weight:700}
.dash-kpi-sub.s-ok{color:var(--ok-bt);font-weight:700}
.dash-2col{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1rem;margin-bottom:1rem}
.dash-2col .admin-section{margin-bottom:0}
.dash-bars{padding:.4rem 0}
.dash-bar-row{display:grid;grid-template-columns:120px 1fr 50px;gap:.65rem;align-items:center;padding:.4rem 0}
.dash-bar-lbl{font-size:.82rem;color:var(--tx);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-bar-track{background:var(--g100);border-radius:99px;height:.6rem;overflow:hidden;position:relative}
.dash-bar-fill{background:var(--lo);height:100%;border-radius:99px;transition:width .4s ease;min-width:.35rem}
.dash-bar-val{font-size:.82rem;color:var(--txm);font-weight:700;text-align:right}
.dash-bar-empty{padding:1.4rem .25rem;text-align:center;color:var(--txm);font-size:.82rem}
.dash-stack{display:flex;height:1.4rem;border-radius:99px;overflow:hidden;background:var(--g100);margin:.4rem 0 .9rem}
.dash-stack-seg{height:100%}
/* Clickable bar segment — drills into the Users tab with a matching   */
/* path-status filter. Hover lifts brightness so the affordance is     */
/* obvious without changing the segment's color identity.               */
.dash-stack-seg-clickable{cursor:pointer;transition:filter .15s,transform .12s}
.dash-stack-seg-clickable:hover{filter:brightness(1.12);transform:translateY(-1px)}
.dash-stack-key{display:flex;flex-wrap:wrap;gap:.5rem .9rem;font-size:.74rem;color:var(--txs)}
/* Clickable key entry — same jump as the segment, useful when a       */
/* segment is too narrow to click reliably (e.g. the lone overdue user).*/
.dash-stack-key-clickable{cursor:pointer;border-radius:.3rem;padding:.1rem .35rem;margin:-.1rem -.35rem;transition:background .15s}
.dash-stack-key-clickable:hover{background:var(--g100)}
body.liq-dark .dash-stack-key-clickable:hover{background:var(--g200)}
.dash-stack-dot{width:.6rem;height:.6rem;border-radius:50%;display:inline-block;margin-right:.32rem;vertical-align:middle}
.dash-actv{padding:.1rem .15rem}
.dash-actv-item{display:flex;align-items:flex-start;gap:.6rem;padding:.55rem 0;border-bottom:1px solid var(--bdr)}
.dash-actv-item:last-child{border-bottom:none}
.dash-actv-ico{width:1.55rem;height:1.55rem;border-radius:50%;background:var(--g100);display:flex;align-items:center;justify-content:center;font-size:.78rem;flex-shrink:0}
.dash-actv-bd{flex:1;min-width:0}
.dash-actv-lbl{font-size:.82rem;color:var(--tx);line-height:1.35;word-break:break-word}
.dash-actv-mt{font-size:.7rem;color:var(--txm);margin-top:.15rem}
.dash-qa-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem}
.dash-qa-grp{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.85rem 1rem}
.dash-qa-grp-hd{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);margin-bottom:.55rem}
.dash-qa-btns{display:flex;flex-direction:column;gap:.4rem}
.dash-qa-btns .btn-liq{justify-content:flex-start;text-align:left}
body.liq-dark .dash-kpi,body.liq-dark .dash-qa-grp{background:rgba(255,255,255,.04)}
.admin-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:var(--z-modal);display:none;align-items:center;justify-content:center;padding:1rem}
.admin-modal-overlay.open{display:flex}
.admin-modal{background:var(--wh);border-radius:var(--rl);padding:1.75rem;width:100%;max-width:480px;box-shadow:0 24px 64px rgba(0,0,0,.3)}
/* ── Assigned Path Feature ── */
.admin-modal.wide{max-width:600px}
.path-banner{background:linear-gradient(135deg,rgba(17,58,92,.06),rgba(214,69,69,.08));border:1.5px solid rgba(214,69,69,.3);border-radius:var(--r);padding:.85rem 1.1rem;margin-bottom:1.25rem;display:flex;align-items:flex-start;gap:.75rem}
.path-banner-overdue{background:linear-gradient(135deg,rgba(220,38,38,.06),rgba(220,38,38,.1));border-color:rgba(220,38,38,.4)}
.path-due-chip{display:inline-flex;align-items:center;gap:.3rem;font-size:.7rem;font-weight:700;padding:.15rem .5rem;border-radius:2rem;margin-left:.5rem;vertical-align:middle;text-transform:none;letter-spacing:0}
.path-due-normal{background:rgba(100,100,120,.12);color:var(--txs);border:1px solid rgba(100,100,120,.2)}
.path-due-approaching{background:rgba(37,99,235,.1);color:#2563eb;border:1px solid rgba(37,99,235,.25)}
.path-due-soon{background:var(--wa-l);color:var(--wa-bt);border:1px solid rgba(217,119,6,.3)}
.path-due-overdue{background:var(--er-l);color:var(--er-bt);border:1px solid rgba(220,38,38,.4)}
.liq-dark .path-due-normal{background:rgba(200,200,220,.08);color:var(--tx);border-color:rgba(200,200,220,.18)}
.liq-dark .path-due-approaching{background:rgba(96,165,250,.15);color:#93c5fd;border-color:rgba(96,165,250,.3)}
.liq-dark .path-due-soon{background:rgba(217,119,6,.2);color:#fbbf24;border-color:rgba(217,119,6,.4)}
.liq-dark .path-due-overdue{background:rgba(220,38,38,.2);color:#fca5a5;border-color:rgba(220,38,38,.5)}
.path-banner-icon{font-size:1.2rem;flex-shrink:0;margin-top:.05rem}
.path-banner-body{flex:1;min-width:0}
.path-banner-title{font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--lo-h);margin-bottom:.25rem}
.path-banner-steps{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap;margin-top:.4rem}
.path-step-chip{display:inline-flex;align-items:center;gap:.3rem;background:var(--wh);border:1.5px solid var(--bdr);border-radius:2rem;padding:.18rem .6rem;font-size:.74rem;font-weight:700;color:var(--txs)}
.path-step-chip.done{border-color:var(--ok);color:var(--ok-bt);background:var(--ok-l)}
.path-step-chip.active{border-color:var(--lo);color:var(--lo-bt);background:var(--lo-l)}
.path-step-chip.locked{opacity:.55}
.path-step-arrow{color:var(--txm);font-size:.7rem}
.track-path-badge{display:inline-flex;align-items:center;gap:.28rem;font-size:.65rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:.12rem .42rem;border-radius:2px;background:rgba(214,69,69,.15);color:var(--lo-bt);margin-left:.4rem;flex-shrink:0}
.track-locked-path .track-collapse-hdr{opacity:.7;cursor:default}
.track-locked-path .track-collapse-hdr::after{content:''}
/* unlock-all badge in user table */
.unlock-badge{display:inline-flex;align-items:center;gap:.28rem;font-size:.68rem;font-weight:800;background:rgba(253,186,3,.15);color:#b45309;border-radius:2px;padding:.1rem .38rem}
/* path builder in modal */
.path-builder{border:1.5px solid var(--bdr);border-radius:var(--r);overflow:hidden;margin-top:.5rem}
.path-builder-hdr{background:var(--g100);padding:.52rem .85rem;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);display:flex;align-items:center;justify-content:space-between}
.path-track-row{display:flex;align-items:center;gap:.6rem;padding:.52rem .85rem;border-top:1px solid var(--bdr);background:var(--wh)}
.path-track-num{width:1.35rem;height:1.35rem;border-radius:50%;background:var(--lp);color:#fff;font-size:.68rem;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.path-track-name{flex:1;font-size:.83rem;font-weight:600;color:var(--tx)}
.path-track-del{background:none;border:none;color:var(--txm);cursor:pointer;font-size:.9rem;padding:.18rem .3rem;border-radius:3px;transition:all .15s;line-height:1}
.path-track-del:hover{color:var(--er-bt);background:var(--er-l)}
.path-add-row{display:flex;gap:.5rem;padding:.6rem .85rem;border-top:1px solid var(--bdr);background:var(--g100)}
.path-add-sel{flex:1;border:1.5px solid var(--bdr);border-radius:var(--rs);background:var(--wh);font-family:var(--fb);font-size:.82rem;color:var(--tx);padding:.38rem 2rem .38rem .6rem;outline:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%239b8faa' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .6rem center}
.path-add-sel:focus{border-color:var(--lo);box-shadow:0 0 0 2px var(--lo);outline:none}
.path-add-btn{border:1.5px solid var(--lo);background:var(--lo-l);color:var(--lo-bt);border-radius:var(--rs);padding:.38rem .75rem;font-family:var(--fb);font-size:.82rem;font-weight:700;cursor:pointer;white-space:nowrap;transition:all .15s}
.path-add-btn:hover{background:var(--lo-btn);color:var(--lo-btn-tx)}
.modal-section-label{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.09em;color:var(--txm);margin:1.1rem 0 .45rem;padding-top:.9rem;border-top:1px solid var(--bdr)}
/* ── Path Templates list ── */
.tpl-row{display:flex;align-items:flex-start;gap:.75rem;padding:.78rem .2rem;border-bottom:1px solid var(--bdr)}
.tpl-row:last-child{border-bottom:none}
.tpl-row-body{flex:1;min-width:0}
.tpl-row-name{font-size:.92rem;font-weight:700;color:var(--tx);display:flex;align-items:center;flex-wrap:wrap;gap:.2rem}
.tpl-row-actions{flex-shrink:0;display:flex;gap:.2rem;align-items:flex-start}
.liq-dark .tpl-row-name span[style*="background:var(--g100)"]{background:var(--g200)!important;color:var(--tx)!important}
/* ── Apply Template dropdown inside Edit User modal ── */
.apply-tpl-wrap{position:relative;display:inline-block;margin-top:.5rem}
.apply-tpl-btn{border:1.5px dashed var(--bdr);background:transparent;color:var(--txs);border-radius:var(--rs);padding:.38rem .78rem;font-family:var(--fb);font-size:.8rem;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:.38rem;transition:all .15s}
.apply-tpl-btn:hover{border-color:var(--lo);color:var(--lo-bt);background:var(--lo-p)}
.apply-tpl-menu{position:absolute;top:calc(100% + .3rem);left:0;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);box-shadow:var(--shm);min-width:240px;max-width:340px;max-height:240px;overflow-y:auto;z-index:var(--z-modal-popover);display:none}
.apply-tpl-menu.open{display:block}
.apply-tpl-item{padding:.55rem .85rem;cursor:pointer;border-bottom:1px solid var(--bdr);transition:background .12s}
.apply-tpl-item:last-child{border-bottom:none}
.apply-tpl-item:hover{background:var(--g100)}
.apply-tpl-item-name{font-size:.85rem;font-weight:700;color:var(--tx)}
.apply-tpl-item-meta{font-size:.7rem;color:var(--txm);margin-top:.1rem}
.apply-tpl-empty{padding:1rem;text-align:center;color:var(--txm);font-size:.8rem;font-style:italic}
.liq-dark .apply-tpl-menu{background:var(--wh);border-color:var(--g400)}
.admin-modal-title{font-family:var(--fd);font-size:1.1rem;color:var(--heading);margin-bottom:1.25rem;display:flex;align-items:center;justify-content:space-between}
.nav-admin-link{display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;font-weight:700;color:var(--lo-bt);padding:.28rem .65rem;border-radius:.4rem;background:rgba(214,69,69,.12);border:1px solid rgba(214,69,69,.25);white-space:nowrap;cursor:pointer;transition:all .15s;text-decoration:none}
.nav-admin-link:hover{background:rgba(214,69,69,.2);color:var(--lo-bt)}


/* ── ADMIN TABS ─────────────────────────────────────────── */
.admin-tabs{display:flex;gap:0;background:var(--g100);border-radius:var(--r) var(--r) 0 0;border:1px solid var(--bdr);border-bottom:none;padding:.3rem .3rem 0;margin-bottom:0;flex-wrap:wrap;position:sticky;top:60px;z-index:5;box-shadow:0 2px 8px rgba(0,0,0,.04)}
body.liq-dark .admin-tabs{box-shadow:0 2px 12px rgba(0,0,0,.25)}
/* Mobile bottom nav reduces available top space when present */
body.has-mob-nav .admin-tabs{top:60px}
@media (max-width:767px){.admin-tabs{top:56px}}
.admin-tab{flex:1;min-width:100px;border:none;background:transparent;font-family:var(--fb);font-size:.82rem;font-weight:700;padding:.62rem .5rem;border-radius:var(--rs) var(--rs) 0 0;cursor:pointer;color:var(--txs);display:flex;align-items:center;justify-content:center;gap:.38rem;transition:all .2s;white-space:nowrap}
.admin-tab:hover{background:rgba(255,255,255,.7);color:var(--tx)}
.admin-tab.active{background:var(--wh);color:var(--lp)}
body.liq-dark .admin-tab.active{color:var(--lo-bt)}
.admin-tab-panel{display:none;background:var(--wh);border:1px solid var(--bdr);border-radius:0 0 var(--rl) var(--rl);padding:1.75rem}
.admin-tab-panel.active{display:block}
/* Settings */
.settings-group{margin-bottom:1.75rem}
.settings-group-title{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--txm);margin-bottom:.85rem;padding-bottom:.45rem;border-bottom:1px solid var(--bdr)}
.settings-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem;padding:.85rem 0;border-bottom:1px solid var(--bdr)}
.settings-row:last-child{border-bottom:none}
.settings-row-left{flex:1}
.settings-row-label{font-size:.9rem;font-weight:700;color:var(--tx);margin-bottom:.18rem}
.settings-row-desc{font-size:.8rem;color:var(--txs);line-height:1.5}
.settings-row-right{flex-shrink:0;padding-top:.1rem}
/* Toggle switch */
.toggle-wrap{position:relative;width:44px;height:24px;cursor:pointer}
.toggle-wrap input{opacity:0;width:0;height:0;position:absolute}
.toggle-slider{position:absolute;inset:0;background:var(--bdr);border-radius:24px;transition:.2s}
.toggle-slider:before{content:'';position:absolute;width:18px;height:18px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.2s}
.toggle-wrap input:checked+.toggle-slider{background:var(--ok)}
.toggle-wrap input:checked+.toggle-slider:before{transform:translateX(20px)}
/* Announcements */
.ann-item{background:var(--g100);border:1px solid var(--bdr);border-radius:var(--r);padding:1rem 1.1rem;margin-bottom:.75rem;display:flex;align-items:flex-start;gap:.85rem}
.ann-item-body{flex:1;min-width:0}
.ann-item-text{font-size:.9rem;color:var(--tx);margin-bottom:.3rem;line-height:1.5}
.ann-item-meta{font-size:.75rem;color:var(--txm)}
.ann-type-badge{font-size:.68rem;font-weight:800;padding:.18rem .5rem;border-radius:2rem;text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;margin-top:.1rem}
.ann-info{background:rgba(37,99,235,.1);color:#2563eb}
.ann-warn{background:var(--wa-l);color:var(--wa-bt)}
.ann-success{background:var(--ok-l);color:var(--ok-bt)}
/* Content management */
.content-track-row{display:flex;align-items:center;gap:.85rem;padding:.75rem 0;border-bottom:1px solid var(--bdr)}
.content-track-row:last-child{border-bottom:none}
.content-track-icon{width:2.2rem;height:2.2rem;border-radius:.5rem;display:flex;align-items:center;justify-content:center;font-size:.95rem;flex-shrink:0}
.content-track-info{flex:1}
.content-track-name{font-size:.9rem;font-weight:700;color:var(--tx)}
.content-track-sub{font-size:.78rem;color:var(--txm)}
/* Audit log */
.audit-item{display:flex;align-items:flex-start;gap:.7rem;padding:.6rem 0;border-bottom:1px solid var(--bdr);font-size:.84rem}
.audit-item:last-child{border-bottom:none}
.audit-icon{width:1.8rem;height:1.8rem;border-radius:.4rem;display:flex;align-items:center;justify-content:center;font-size:.78rem;flex-shrink:0;margin-top:.05rem}
.audit-add{background:var(--ok-l);color:var(--ok-bt)}
.audit-edit{background:rgba(37,99,235,.1);color:#2563eb}
.audit-delete{background:var(--er-l);color:var(--er-bt)}
.audit-settings{background:rgba(124,58,237,.1);color:#7c3aed}
.audit-system{background:var(--g100);color:var(--txm)}
.audit-learner{background:rgba(214,69,69,.12);color:var(--lo-bt)}
/* ── Audit filter bar ── */
.audit-filter-bar{display:flex;gap:.3rem;flex-wrap:wrap}
.audit-filter-btn{border:1.5px solid var(--bdr);background:var(--wh);border-radius:2rem;padding:.28rem .72rem;font-family:var(--fb);font-size:.78rem;font-weight:700;color:var(--txs);cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:.35rem}
.audit-filter-btn:hover{border-color:var(--lo);color:var(--lo-h)}
.audit-filter-btn.active{background:var(--lp);border-color:var(--lp);color:#fff}
.liq-dark .audit-filter-btn.active{background:var(--lo-btn);border-color:var(--lo);color:var(--lo-btn-tx)}
.audit-filter-count{font-size:.66rem;font-weight:800;background:var(--g100);color:var(--txm);border-radius:99px;padding:.02rem .38rem;min-width:1.1rem;text-align:center}
.audit-filter-btn.active .audit-filter-count{background:rgba(255,255,255,.25);color:#fff}
.audit-body{flex:1}
.audit-label{color:var(--tx);line-height:1.4}
.audit-time{font-size:.72rem;color:var(--txm);white-space:nowrap}
/* User detail modal */
.user-detail-perm{display:flex;align-items:center;justify-content:space-between;padding:.45rem 0;border-bottom:1px solid var(--bdr);font-size:.86rem}
.user-detail-perm:last-child{border-bottom:none}
.perm-allowed{color:var(--ok);font-weight:700}
.perm-denied{color:var(--txm)}
/* Bulk select */
.admin-table .row-cb{width:1.2rem;height:1.2rem;cursor:pointer}
.bulk-bar{display:none;align-items:center;gap:.75rem;padding:.65rem 1rem;background:var(--lp);border-radius:var(--r);margin-bottom:.75rem;color:#fff;font-size:.88rem;font-weight:600}
.bulk-bar.show{display:flex}


/* ── DAILY CHALLENGE ─────────────────────────────────────── */
/* Term of the Day home widget */
.hd-tod-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1rem 1.3rem;margin-bottom:1rem;cursor:pointer;transition:border-color .18s,box-shadow .18s;border-left:4px solid var(--lp)}
.hd-tod-card:hover{border-color:var(--lp);box-shadow:var(--shm)}
.hd-tod-left{flex:1;min-width:0}
.hd-tod-lbl{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--lp);margin-bottom:.22rem}
.hd-tod-term{font-family:var(--fd);font-size:1.05rem;font-weight:700;color:var(--heading);margin-bottom:.18rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hd-tod-def{font-size:.8rem;color:var(--txs);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hd-tod-right{flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:.4rem}
.hd-tod-cat{font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;padding:.18rem .52rem;border-radius:3px}
.hd-tod-cta{font-size:.75rem;font-weight:700;color:var(--lp);white-space:nowrap}
.hd-tod-seen{font-size:.75rem;font-weight:700;color:var(--ok);display:flex;align-items:center;gap:.3rem;white-space:nowrap}
body.liq-dark .hd-tod-card{background:var(--wh);border-color:var(--bdr)}
body.liq-dark .hd-tod-card:hover{border-color:var(--lo)}
body.liq-dark .hd-tod-lbl{color:var(--lo-bt)}
body.liq-dark .hd-tod-term{color:var(--tx)}
body.liq-dark .hd-tod-cta{color:var(--lo-bt)}

/* Weekly Recap card — last-7-days snapshot. Compact 4-stat strip; card itself
   is hidden when all four metrics are zero (handled in JS). */
.hd-recap-card{background:linear-gradient(135deg,var(--lp) 0%,var(--lp-m) 100%);color:#fff;border-radius:var(--rl);padding:1.1rem 1.3rem;box-shadow:var(--sh);position:relative;overflow:hidden}
.hd-recap-card::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 60% 80% at 100% 0%,rgba(214,69,69,.18) 0%,transparent 60%);pointer-events:none}
.hd-recap-header{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin-bottom:.85rem;position:relative}
.hd-recap-label{font-family:var(--fd);font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.16em;color:rgba(255,255,255,.7)}
/* This chip is the one surface in the recap card that is lighter than the card:
   an --lo tint ON TOP of a --lp -> --lp-m gradient, which at the light end
   composites to rgb(61,82,117). The card-level --lo-bt override (#e68f8f) is
   right for text directly on the card and measures 3.25 here. Solved against
   the light end of the gradient rather than the card colour, because that is
   the end this chip actually sits over. */
.hd-recap-streak{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:800;color:var(--lo-bt);background:rgba(214,69,69,.18);padding:.22rem .55rem;border-radius:99px;letter-spacing:.04em}
.hd-recap-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem;position:relative}
.hd-recap-stat{text-align:center;padding:.2rem 0}
.hd-recap-num{font-family:var(--fd);font-size:1.7rem;font-weight:800;color:var(--lo);line-height:1}
.hd-recap-lbl{font-size:.7rem;font-weight:700;color:rgba(255,255,255,.78);letter-spacing:.04em;margin-top:.2rem}
@media (max-width:600px){
  .hd-recap-grid{grid-template-columns:repeat(2,1fr);gap:.85rem .6rem}
  .hd-recap-num{font-size:1.5rem}
}
.daily-home-card{background:linear-gradient(135deg,var(--lp-d) 0%,var(--lp-m) 100%);border-radius:var(--rl);padding:1.4rem 1.6rem;color:#fff;display:flex;align-items:center;gap:1.2rem;margin-bottom:1.2rem;border:2px solid rgba(214,69,69,.35);box-shadow:0 4px 24px rgba(0,0,0,.18);position:relative;overflow:hidden}
.daily-home-card::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 80% 50%,rgba(214,69,69,.12),transparent 60%);pointer-events:none}
.daily-home-done{border-color:rgba(74,222,128,.4)}
.daily-streak-flame{font-size:2.4rem;line-height:1;flex-shrink:0;filter:drop-shadow(0 2px 6px rgba(214,69,69,.5))}
.daily-home-info{flex:1;min-width:0}
.daily-home-label{font-size:.65rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--lo-bt);margin-bottom:.25rem}
.daily-home-title{font-family:var(--fd);font-size:1.1rem;font-weight:700;margin-bottom:.2rem}
.daily-home-meta{font-size:.8rem;color:rgba(255,255,255,.65)}
.daily-streak-count{font-size:2rem;font-weight:800;color:var(--lo);line-height:1;text-align:center;flex-shrink:0}
.daily-streak-lbl{font-size:.62rem;color:rgba(255,255,255,.5);text-align:center;line-height:1.2}
.daily-done-badge{display:inline-flex;align-items:center;gap:.4rem;background:rgba(74,222,128,.18);border:1px solid rgba(74,222,128,.4);border-radius:2rem;padding:.2rem .7rem;font-size:.78rem;font-weight:700;color:#4ade80;margin-top:.4rem}

/* Daily page */
.daily-hero{background:linear-gradient(135deg,var(--lp-d) 0%,#0d1a2e 100%);padding:2.2rem 0 1.8rem;position:relative;overflow:hidden}
.daily-hero::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 70% 50%,rgba(214,69,69,.15),transparent 60%);pointer-events:none}
.daily-brief{font-size:1.05rem;color:rgba(255,255,255,.75);font-style:italic;margin-bottom:.9rem;line-height:1.55}
.daily-format-badge{display:inline-flex;align-items:center;gap:.45rem;border-radius:2rem;padding:.3rem .9rem;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;margin-bottom:.75rem}
.fmt-case{background:rgba(37,99,235,.25);border:1px solid rgba(37,99,235,.5);color:#93c5fd}
.fmt-sprint{background:rgba(217,119,6,.25);border:1px solid rgba(217,119,6,.5);color:#fcd34d}
.fmt-call{background:rgba(5,150,105,.25);border:1px solid rgba(5,150,105,.5);color:#6ee7b7}
.daily-streak-bar{display:flex;align-items:center;gap:.65rem;background:rgba(255,255,255,.07);border-radius:var(--rs);padding:.55rem .9rem;margin-top:.75rem}
.daily-streak-fire{font-size:1.4rem;filter:drop-shadow(0 1px 4px rgba(214,69,69,.5))}
.daily-streak-info{font-size:.82rem;color:rgba(255,255,255,.8)}
.daily-streak-num{font-weight:800;color:var(--lo-bt);font-size:1rem}
.daily-xp-pill{margin-left:auto;background:rgba(214,69,69,.2);border:1px solid rgba(214,69,69,.4);border-radius:2rem;padding:.2rem .65rem;font-size:.76rem;font-weight:700;color:var(--lo-bt)}
.daily-freeze-pill{display:inline-flex;align-items:center;gap:.3rem;background:rgba(99,102,241,.2);border:1px solid rgba(99,102,241,.4);border-radius:2rem;padding:.18rem .6rem;font-size:.72rem;font-weight:700;color:#a5b4fc;margin-left:.5rem}

/* Challenge card */
.daily-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.6rem;margin-bottom:1rem}
.daily-setup{font-size:.93rem;line-height:1.7;color:var(--tx);margin-bottom:1.2rem}
.daily-q{font-family:var(--fd);font-size:1.1rem;color:var(--lp);font-weight:700;margin-bottom:1rem}
body.liq-dark .daily-q{color:var(--heading)}
.daily-option{background:var(--g100);border:2px solid var(--bdr);border-radius:var(--r);padding:1rem 1.2rem;margin-bottom:.6rem;cursor:pointer;transition:all .2s;display:flex;align-items:flex-start;gap:.75rem;font-size:.9rem}
.daily-option:hover{border-color:var(--lo);background:var(--lo-p)}
.daily-option.selected-correct{border-color:var(--ok)!important;background:rgba(22,163,74,.08)!important}
.daily-option.selected-wrong{border-color:var(--er)!important;background:rgba(220,38,38,.08)!important}
.daily-option.reveal-correct{border-color:var(--ok)!important;background:rgba(22,163,74,.06)!important}
.daily-option.disabled{pointer-events:none;opacity:.65}
.daily-option.disabled .daily-opt-chev{display:none}
.daily-opt-letter{width:1.6rem;height:1.6rem;border-radius:50%;background:var(--lp-t);color:var(--lp);font-weight:800;font-size:.78rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:.05rem}
/* --lp is the brand navy: correct as a letter on a pale --lp-t chip in light,
   and dark-on-dark once the chip composites over a dark surface — 1.18:1. The
   A/B/C letters identify which option you are choosing, so they are content. */
body.liq-dark .daily-opt-letter{color:#8fb3d4}
.daily-opt-text{flex:1;min-width:0}
.daily-opt-chev{flex-shrink:0;color:var(--txm);opacity:.6;font-size:1rem;align-self:center;transition:transform .2s,opacity .2s}
.daily-option:hover .daily-opt-chev{color:var(--lo-bt);opacity:1;transform:translateX(3px)}
.daily-option-clickable{position:relative}
.daily-option-clickable::before{content:'';position:absolute;inset:0;border-radius:var(--r);pointer-events:none;box-shadow:0 0 0 0 rgba(214,69,69,0);transition:box-shadow .2s}
.daily-option-clickable:hover::before{box-shadow:0 0 0 2px rgba(214,69,69,.18)}
.daily-action-hint{display:inline-flex;align-items:center;gap:.35rem;background:rgba(214,69,69,.1);color:var(--lo-bt);font-size:.78rem;font-weight:700;padding:.35rem .75rem;border-radius:1rem;margin-bottom:.85rem;text-transform:uppercase;letter-spacing:.04em}
body.liq-dark .daily-action-hint{background:rgba(214,69,69,.18);color:#fcd34d}
.daily-feedback{background:var(--g100);border-left:4px solid var(--ok);border-radius:0 var(--rs) var(--rs) 0;padding:.85rem 1rem;font-size:.87rem;color:var(--tx);margin-top:.75rem;display:none}
.daily-feedback.show{display:block}
.daily-feedback.wrong-fb{border-color:var(--er)}

/* Sprint format */
.sprint-q-wrap{margin-bottom:1.2rem}
.sprint-q-num{font-size:.65rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--txm);margin-bottom:.5rem}
.sprint-q-text{font-family:var(--fd);font-size:1rem;color:var(--lp);font-weight:700;margin-bottom:.8rem;line-height:1.4}
body.liq-dark .sprint-q-text{color:var(--heading)}
.sprint-btns{display:flex;gap:.65rem}
.sprint-btn{flex:1;padding:.75rem;border-radius:var(--r);border:2px solid var(--bdr);background:var(--wh);font-weight:800;font-size:.95rem;cursor:pointer;transition:all .2s}
.sprint-btn:hover{border-color:var(--lo);color:var(--lo-bt)}
.sprint-btn.correct{background:rgba(22,163,74,.12);border-color:var(--ok);color:var(--ok)}
.sprint-btn.wrong{background:rgba(220,38,38,.1);border-color:var(--er);color:var(--er)}
.sprint-progress{display:flex;gap:.4rem;margin-bottom:1.2rem}
.sprint-pip{height:4px;flex:1;border-radius:2px;background:var(--g200);transition:background .3s}
.sprint-pip.done-right{background:var(--ok)}
.sprint-pip.done-wrong{background:var(--er)}
.sprint-pip.active{background:var(--lo)}

/* My Daily — call-to-action button with radiating pulse animation */
.daily-stats-cta{position:relative;display:inline-flex;align-items:center;gap:.5rem;background:linear-gradient(135deg,var(--lo) 0%,#e8756b 100%);color:#fff;font-weight:800;font-size:.86rem;letter-spacing:.02em;padding:.55rem 1.15rem;border:0;border-radius:2rem;cursor:pointer;box-shadow:0 3px 10px rgba(214,69,69,.35),0 1px 3px rgba(0,0,0,.15);transition:transform .2s ease,box-shadow .2s ease,filter .2s ease;text-decoration:none;white-space:nowrap;z-index:0}
.daily-stats-cta:hover,.daily-stats-cta:focus{transform:translateY(-1px) scale(1.04);box-shadow:0 5px 16px rgba(214,69,69,.55),0 2px 5px rgba(0,0,0,.18);color:#fff;filter:brightness(1.08);outline:none}
.daily-stats-cta:active{transform:translateY(0) scale(1.01)}
.daily-stats-cta i{font-size:1rem}
.daily-stats-cta::before,.daily-stats-cta::after{content:'';position:absolute;inset:0;border-radius:2rem;border:2px solid var(--lo);pointer-events:none;animation:stats-cta-pulse 2.4s ease-out infinite;z-index:-1}
.daily-stats-cta::after{animation-delay:1.2s}
@keyframes stats-cta-pulse{
  0%{transform:scale(1);opacity:.85}
  60%{opacity:0}
  100%{transform:scale(1.55);opacity:0}
}
/* Smaller variant for inline use in tighter spots */
.daily-stats-cta.daily-stats-cta-sm{font-size:.78rem;padding:.4rem .85rem}
.daily-stats-cta.daily-stats-cta-sm::before,.daily-stats-cta.daily-stats-cta-sm::after{border-width:1.5px}
/* Respect users who prefer reduced motion */
@media (prefers-reduced-motion:reduce){
  .daily-stats-cta::before,.daily-stats-cta::after{animation:none;opacity:0}
  .daily-stats-cta:hover,.daily-stats-cta:focus{transform:none}
}

/* My Daily — stats dashboard */
.md-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;margin-bottom:1.5rem}
.md-summary-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1rem 1.1rem;text-align:center;box-shadow:0 1px 3px rgba(0,0,0,.04)}
body.liq-dark .md-summary-card{background:var(--wh)}
.md-summary-num{font-family:var(--fd);font-size:2rem;font-weight:800;color:var(--lp);line-height:1.05;display:flex;align-items:baseline;justify-content:center;gap:.35rem}
body.liq-dark .md-summary-num{color:var(--heading)}
.md-summary-emoji{font-size:1.1rem}
.md-summary-lbl{font-size:.74rem;font-weight:700;color:var(--txm);text-transform:uppercase;letter-spacing:.06em;margin-top:.4rem;line-height:1.3}
.md-tiny{font-size:.62rem;font-weight:600;color:var(--txm);text-transform:none;letter-spacing:0}
.md-section{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.2rem 1.3rem;margin-bottom:1.2rem}
body.liq-dark .md-section{background:var(--wh)}
.md-section-hd{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;margin-bottom:.85rem}
.md-section-title{font-family:var(--fd);font-size:1.1rem;font-weight:700;color:var(--lp);margin:0}
body.liq-dark .md-section-title{color:var(--heading)}
.md-section-sub{font-size:.83rem;color:var(--txs);margin-bottom:.85rem;line-height:1.5}
.md-empty{font-size:.85rem;color:var(--txs);font-style:italic;margin:0}
.md-footer-note{font-size:.78rem;color:var(--txm);margin-top:1rem;line-height:1.55}
.md-bottom-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;margin-bottom:1rem}
/* Cases-needing-review block on My Daily — surfaces wrong-answered cases
   for re-attempt. Each row stacks meta/title/actions on mobile. */
.md-cases-review{display:flex;flex-direction:column;gap:.55rem}
.md-case-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.55rem .85rem;background:var(--bg);border:1px solid var(--bdr);border-radius:var(--rs);padding:.65rem .85rem}
.md-case-meta{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;flex-shrink:0}
.md-case-year{font-size:.72rem;color:var(--txm);font-weight:700}
.md-case-title{flex:1;min-width:200px;font-family:var(--fd);font-size:.94rem;font-weight:700;color:var(--heading);line-height:1.3}
.md-case-actions{display:flex;gap:.4rem;flex-shrink:0}
@media (max-width:600px){
  .md-case-row{flex-direction:column;align-items:stretch}
  .md-case-actions{justify-content:flex-end}
}

/* Heatmap */
.md-heatmap-wrap{overflow-x:auto;padding-bottom:.5rem}
.md-heatmap-months{display:grid;grid-template-columns:repeat(53,minmax(11px,1fr));gap:2px;margin-left:30px;margin-bottom:.3rem;min-width:610px}
.md-heatmap-month{font-size:.66rem;color:var(--txm);font-weight:600;letter-spacing:.02em;grid-row:1}
.md-heatmap-body{display:flex;gap:4px;min-width:640px}
.md-heatmap-days{display:grid;grid-template-rows:repeat(7,minmax(11px,1fr));gap:2px;font-size:.66rem;color:var(--txm);width:26px;flex-shrink:0}
.md-heatmap-day{display:flex;align-items:center;height:11px;line-height:1}
.md-heatmap-grid{display:grid;grid-template-rows:repeat(7,minmax(11px,1fr));grid-auto-flow:column;grid-auto-columns:minmax(11px,1fr);gap:2px;flex:1}
.md-cell{width:100%;height:11px;border-radius:2px;background:var(--g200);transition:transform .15s,box-shadow .15s;cursor:default}
/* On phones, shrink the heatmap so the full year fits without horizontal
   scroll. Cells go from 11px to 6px and gaps tighten to 1px — still readable
   at a glance, no swiping required. */
@media (max-width:600px){
  .md-heatmap-wrap{overflow-x:hidden}
  .md-heatmap-months{min-width:0;grid-template-columns:repeat(53,minmax(6px,1fr));gap:1px;margin-left:18px;font-size:.55rem}
  .md-heatmap-month{font-size:.55rem}
  .md-heatmap-body{min-width:0;gap:2px}
  .md-heatmap-days{width:14px;font-size:.55rem;grid-template-rows:repeat(7,minmax(6px,1fr));gap:1px}
  .md-heatmap-day{height:6px}
  .md-heatmap-grid{grid-template-rows:repeat(7,minmax(6px,1fr));grid-auto-columns:minmax(6px,1fr);gap:1px}
  .md-cell{height:6px;border-radius:1px}
  .md-cell:hover{transform:scale(1.8)}
}
.md-cell:hover{transform:scale(1.4);box-shadow:0 0 0 1px var(--lo);z-index:1}
.md-cell-empty{background:rgba(0,0,0,.06)}
body.liq-dark .md-cell-empty{background:rgba(255,255,255,.05)}
.md-cell-future{background:transparent;border:1px dashed rgba(0,0,0,.05)}
body.liq-dark .md-cell-future{border-color:rgba(255,255,255,.04)}
.md-cell-wrong{background:rgba(217,119,6,.55)}
.md-cell-legacy{background:rgba(214,69,69,.45)}
.md-cell-correct{background:var(--lo)}
.md-cell-mastered{background:#10b981;box-shadow:inset 0 0 0 1px rgba(255,255,255,.4)}
.md-cell-today{outline:1.5px solid var(--lp);outline-offset:1px}
body.liq-dark .md-cell-today{outline-color:#fcd34d}
.md-heatmap-legend{display:flex;align-items:center;gap:.3rem;font-size:.7rem;color:var(--txm)}
.md-legend-cell{width:11px;height:11px;border-radius:2px;display:inline-block}
.md-legend-cell.md-cell-empty{background:rgba(0,0,0,.06)}
body.liq-dark .md-legend-cell.md-cell-empty{background:rgba(255,255,255,.05)}
.md-legend-lbl{font-weight:600;letter-spacing:.04em}

/* Theme accuracy bars */
.md-themes{display:flex;flex-direction:column;gap:.55rem}
.md-theme-row{display:grid;grid-template-columns:140px 1fr 90px;gap:.75rem;align-items:center;font-size:.85rem}
.md-theme-name{font-weight:700;color:var(--tx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.md-theme-bar-wrap{height:.7rem;background:var(--g200);border-radius:.4rem;overflow:hidden;position:relative}
body.liq-dark .md-theme-bar-wrap{background:rgba(255,255,255,.08)}
.md-theme-bar{height:100%;border-radius:.4rem;transition:width .4s}
.md-bar-strong{background:var(--ok)}
.md-bar-mid{background:var(--lo)}
.md-bar-weak{background:#dc2626}
.md-theme-pct{font-weight:700;color:var(--tx);text-align:right;font-size:.83rem}
@media (max-width:600px){
  .md-theme-row{grid-template-columns:1fr;gap:.2rem}
  .md-theme-pct{text-align:left}
}

/* Streak milestone celebration overlay — fires on 7/14/30/60/100/365-day
   streaks. Mirrors lu-overlay structure but adds a CSS-only confetti burst
   and a much bigger streak number for the "you just did something rare" feel. */
.sm-overlay{position:fixed;inset:0;background:rgba(20,12,32,.78);backdrop-filter:blur(4px);z-index:var(--z-modal-popover);display:none;align-items:center;justify-content:center;padding:1rem;animation:sm-overlay-in .35s ease-out}
.sm-overlay.show{display:flex}
@keyframes sm-overlay-in{0%{opacity:0;backdrop-filter:blur(0)}100%{opacity:1;backdrop-filter:blur(4px)}}
.sm-card{position:relative;background:linear-gradient(135deg,var(--lp-d) 0%,var(--lp-m) 60%,#6e1f2c 100%);border:2px solid rgba(214,69,69,.55);border-radius:var(--rl);padding:2rem 2rem 1.6rem;text-align:center;color:#fff;box-shadow:0 24px 70px rgba(0,0,0,.45),0 0 60px rgba(214,69,69,.25);max-width:420px;width:100%;z-index:2;animation:sm-card-pop .5s cubic-bezier(.34,1.56,.64,1)}
@keyframes sm-card-pop{0%{transform:scale(.6) translateY(20px);opacity:0}60%{transform:scale(1.06)}100%{transform:scale(1) translateY(0);opacity:1}}
.sm-flame{font-size:3rem;line-height:1;margin-bottom:.4rem;filter:drop-shadow(0 0 18px rgba(214,69,69,.7));animation:sm-flame-glow 1.6s ease-in-out infinite alternate}
@keyframes sm-flame-glow{0%{filter:drop-shadow(0 0 12px rgba(214,69,69,.5))}100%{filter:drop-shadow(0 0 26px rgba(214,69,69,.95))}}
.sm-num{font-family:var(--fd);font-size:5rem;font-weight:800;color:var(--lo);line-height:.95;margin:.1rem 0;text-shadow:0 0 30px rgba(214,69,69,.5),0 4px 0 rgba(0,0,0,.2)}
.sm-day-lbl{font-family:var(--fd);font-size:.8rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.65);margin-bottom:1rem}
.sm-title{font-family:var(--fd);font-size:1.5rem;font-weight:800;color:#fff;margin-bottom:.55rem;letter-spacing:.01em}
.sm-sub{font-size:.92rem;line-height:1.55;color:rgba(255,255,255,.78);margin-bottom:1.4rem}
.sm-card .btn-liq{font-size:.92rem;padding:.65rem 1.4rem}

/* CSS-only confetti burst — particles are positioned with inline styles
   (random left / delay / duration / rotation) and fall + drift via the
   shared keyframe. */
.sm-confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:1}
.sm-conf{position:absolute;top:-24px;width:9px;height:14px;border-radius:1px;animation:sm-conf-fall 2.6s ease-in 1 forwards;transform-origin:center}
@keyframes sm-conf-fall{
  0%{transform:translate3d(0,0,0) rotate(var(--sm-rot,0deg));opacity:0}
  10%{opacity:1}
  100%{transform:translate3d(var(--sm-drift,0vw),105vh,0) rotate(calc(var(--sm-rot,0deg) + 720deg));opacity:.4}
}
@media (prefers-reduced-motion:reduce){
  .sm-overlay,.sm-card{animation:none}
  .sm-flame{animation:none}
  .sm-conf{display:none}
}
@media (max-width:480px){
  .sm-card{padding:1.5rem 1.2rem 1.2rem}
  .sm-num{font-size:4rem}
  .sm-flame{font-size:2.4rem}
  .sm-title{font-size:1.25rem}
  .sm-sub{font-size:.86rem}
}

/* Track completion celebration — reuses sm-overlay scaffolding (same backdrop,
   confetti, animation). Track-specific bits: trophy icon, accent ring around
   the track name, and a 2-stat strip (modules / XP earned). */
.tc-card{max-width:460px}
.tc-trophy{font-size:3.4rem;line-height:1;margin-bottom:.35rem;filter:drop-shadow(0 0 22px rgba(214,69,69,.55));animation:sm-flame-glow 2.2s ease-in-out infinite alternate}
.tc-track-eyebrow{font-family:var(--fd);font-size:.78rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--lo-bt);margin-bottom:.45rem}
.tc-track-name{font-family:var(--fd);font-size:1.7rem;font-weight:800;color:#fff;line-height:1.2;margin-bottom:.6rem;padding:.1rem .85rem;display:inline-block;border-bottom:2px solid rgba(214,69,69,.55)}
.tc-stats{display:flex;justify-content:center;gap:1.6rem;margin:1.1rem 0 1.3rem;padding:.85rem 0;border-top:1px solid rgba(255,255,255,.12);border-bottom:1px solid rgba(255,255,255,.12)}
.tc-stat{text-align:center;min-width:80px}
.tc-stat-num{font-family:var(--fd);font-size:1.7rem;font-weight:800;color:var(--lo);line-height:1}
.tc-stat-lbl{font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.6);margin-top:.18rem}
.tc-actions{display:flex;justify-content:center;gap:.55rem;flex-wrap:wrap}
.tc-card .btn-out{color:rgba(255,255,255,.75);border-color:rgba(255,255,255,.22)}
/* Same for the daily hero, another always-dark surface: .btn-out paints --txs,
   which is a dark slate in light mode and measured 1.24:1 there. */
.daily-hero .btn-out,.daily-complete-card .btn-out{color:rgba(255,255,255,.8);border-color:rgba(255,255,255,.3)}
.daily-hero .btn-out:hover,.daily-complete-card .btn-out:hover{color:#fff;border-color:rgba(255,255,255,.5)}
.tc-card .btn-out:hover{color:#fff;border-color:rgba(255,255,255,.45)}
@media (max-width:480px){
  .tc-track-name{font-size:1.35rem}
  .tc-trophy{font-size:2.8rem}
  .tc-stats{gap:1rem}
}

/* "Why this matters" — module link card under the daily completion */
.daily-complete-learn-more{display:flex;align-items:center;gap:.85rem;background:linear-gradient(135deg,var(--wh) 0%,rgba(214,69,69,.06) 100%);border:1px solid var(--bdr);border-left:4px solid var(--lo);border-radius:var(--rl);padding:.85rem 1.05rem;margin-top:1rem;text-align:left;box-shadow:0 1px 4px rgba(0,0,0,.04)}
.daily-complete-learn-more>i{font-size:1.6rem;color:var(--lo);flex-shrink:0}
.daily-complete-learn-more>div{flex:1;min-width:0}
.daily-learn-more-eyebrow{font-size:.7rem;font-weight:800;color:var(--txm);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.15rem}
.daily-learn-more-title{font-family:var(--fd);font-size:.96rem;font-weight:700;color:var(--lp);line-height:1.3;overflow:hidden;text-overflow:ellipsis}
body.liq-dark .daily-complete-learn-more{background:rgba(214,69,69,.08)}
body.liq-dark .daily-learn-more-title{color:var(--heading)}
@media (max-width:480px){
  .daily-complete-learn-more{flex-direction:column;align-items:stretch;text-align:center;gap:.5rem}
  .daily-complete-learn-more>i{font-size:1.4rem}
}

/* Spaced-repetition review queue */
.daily-review-banner{display:flex;align-items:flex-start;gap:.75rem;background:linear-gradient(135deg,rgba(214,69,69,.10),rgba(214,69,69,.04));border:1px solid var(--lo);border-left:5px solid var(--lo);border-radius:var(--r);padding:.75rem .95rem;margin-bottom:1rem;color:var(--tx)}
.daily-review-banner>i{color:var(--lo);font-size:1.4rem;flex-shrink:0;margin-top:.05rem}
.daily-review-banner-title{font-weight:800;color:var(--lo-bt);font-size:.92rem;letter-spacing:.02em;margin-bottom:.1rem}
.daily-review-banner-sub{color:var(--txs);font-size:.82rem;line-height:1.5}
body.liq-dark .daily-review-banner{background:rgba(214,69,69,.12)}
body.liq-dark .daily-review-banner-title{color:#fcd34d}
.daily-review-pill{display:inline-flex;align-items:center;gap:.25rem;background:rgba(214,69,69,.18);color:var(--lo-bt);font-size:.62rem;font-weight:800;padding:.18rem .5rem;border-radius:.6rem;margin-left:.4rem;letter-spacing:.06em;text-transform:uppercase;vertical-align:middle}
.daily-home-card.daily-home-review{border-left:4px solid var(--lo)}
.daily-complete-review-strip{margin:0 auto 1rem;max-width:520px;padding:.7rem .95rem;border-radius:var(--r);font-size:.86rem;line-height:1.5;text-align:left;display:flex;align-items:flex-start;gap:.45rem}
.daily-complete-review-strip.is-mastered{background:rgba(22,163,74,.12);border:1px solid rgba(22,163,74,.4);color:var(--ok)}
.daily-complete-review-strip.is-new{background:rgba(214,69,69,.12);border:1px solid rgba(214,69,69,.4);color:var(--lo-bt)}
.daily-complete-review-strip.is-rescheduled{background:rgba(217,119,6,.12);border:1px solid rgba(217,119,6,.4);color:#b45309}
body.liq-dark .daily-complete-review-strip.is-mastered{color:#4ade80}
body.liq-dark .daily-complete-review-strip.is-rescheduled{color:#fbbf24}

/* Practitioner's Call — staged conversational format */
.daily-call-stage{display:flex;align-items:center;gap:.5rem;margin:.5rem 0 .65rem;font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm)}
.daily-call-stage-num{width:1.5rem;height:1.5rem;border-radius:50%;background:var(--lo-btn);color:var(--lo-btn-tx);font-size:.72rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.daily-call-bubble{background:var(--g100);border-left:4px solid var(--lo);border-radius:0 var(--r) var(--r) 0;padding:.85rem 1rem;margin-bottom:1rem}
.daily-call-bubble.is-reply{border-left-color:#059669;background:rgba(5,150,105,.06)}
.daily-call-bubble-hd{display:flex;align-items:center;gap:.5rem;margin-bottom:.45rem;font-size:.85rem;flex-wrap:wrap}
.daily-call-bubble-name{font-weight:800;color:var(--lp)}
.daily-call-bubble-role{color:var(--txs);font-size:.78rem;font-weight:500}
.daily-call-bubble-msg{font-size:.92rem;line-height:1.65;color:var(--tx)}
.daily-call-bubble-msg p{margin-bottom:.7rem}
.daily-call-bubble-msg p:last-child{margin-bottom:0}
.daily-call-insight{background:rgba(214,69,69,.08);border-left:3px solid var(--lo);border-radius:0 var(--rs) var(--rs) 0;padding:.6rem .85rem;font-size:.83rem;color:var(--tx);margin:-.5rem 0 1rem;line-height:1.55}
.daily-call-insight strong{color:var(--lp)}
.daily-call-quality{display:inline-block;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;padding:.18rem .55rem;border-radius:.75rem;margin-left:.4rem}
.daily-call-quality.q-best{background:rgba(22,163,74,.18);color:var(--ok)}
.daily-call-quality.q-acceptable{background:rgba(217,119,6,.18);color:#b45309}
.daily-call-quality.q-weak{background:rgba(220,38,38,.14);color:var(--er)}
.daily-call-quality.q-wrong{background:rgba(220,38,38,.22);color:var(--er)}
body.liq-dark .daily-call-bubble{background:rgba(255,255,255,.05)}
body.liq-dark .daily-call-bubble.is-reply{background:rgba(5,150,105,.10)}
body.liq-dark .daily-call-bubble-name{color:var(--heading)}
body.liq-dark .daily-call-insight{background:rgba(214,69,69,.12)}
body.liq-dark .daily-call-insight strong{color:var(--lo-bt)}

/* Completion */
.daily-complete-card{background:linear-gradient(135deg,var(--lp-d),var(--lp-m));border-radius:var(--rl);padding:2.2rem;text-align:center;color:#fff}
.daily-complete-xp{font-size:3.5rem;font-weight:800;color:var(--lo);line-height:1;margin:.6rem 0}
.daily-complete-streak{font-size:1rem;color:rgba(255,255,255,.75);margin-bottom:1.5rem}
.daily-complete-msg{font-family:var(--fd);font-size:1.3rem;font-weight:700;margin-bottom:.4rem}

/* Dark mode */
body.liq-dark .daily-option{background:var(--g100);border-color:var(--bdr)}
body.liq-dark .sprint-btn{background:var(--wh);border-color:var(--bdr);color:var(--tx)}
body.liq-dark .daily-card{background:var(--wh)}
body.liq-dark .daily-feedback{background:var(--g100)}
/* Hide nav links when not logged in */
body.liq-logged-out .navbar-nav,
body.liq-logged-out .nav-search-btn,
body.liq-logged-out .navbar-toggler{display:none!important}
/* ── Edit User modal — dark mode ── */
/* Modal card: lift slightly above the page so it's a distinct surface */
.liq-dark .admin-modal{background:var(--g100);border:1px solid var(--g400)}
/* Modal title — clearer divider */
.liq-dark .admin-modal-title{color:var(--tx);border-bottom:1px solid var(--bdr);padding-bottom:.8rem}
/* Inputs inside modal: darker than card so they read as inset fields */
.liq-dark .admin-modal .pi{background-color:var(--wh);border-color:var(--g400);color:var(--tx)}
/* Dropdown arrow: bright stroke visible on dark background — use background-color (not shorthand)
   so we don't clobber the background-image from .pi-sel */
body.liq-dark .pi-sel{color-scheme:dark;background-color:var(--wh);color:var(--tx);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23c0b0d0' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .72rem center}
body.liq-dark .pi-sel option{background-color:#132030;color:#dce8f2}
/* Section label dividers */
.liq-dark .modal-section-label{color:var(--txs);border-top-color:var(--g400)}
/* Unlock All row */
.liq-dark .admin-modal .pf[style*="background:var(--g100)"]{background:var(--g200)!important}
/* Toggle: off-track brighter so it reads as interactive */
.liq-dark .toggle-slider{background:var(--g400)}
/* Path builder */
.liq-dark .path-builder{border-color:var(--g400)}
.liq-dark .path-builder-hdr{background:var(--g200);color:var(--txs)}
.liq-dark .path-track-row{background:var(--wh);border-top-color:var(--bdr)}
.liq-dark .path-track-num{background:var(--lo-btn);color:var(--lo-btn-tx)}
.liq-dark .path-track-name{color:var(--tx)}
.liq-dark .path-add-row{background:var(--g200);border-top-color:var(--bdr)}
.liq-dark .path-add-sel{color-scheme:dark;background-color:var(--wh);color:var(--tx);border-color:var(--g400);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23c0b0d0' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .6rem center}
.liq-dark .path-add-sel option{background-color:#132030;color:#dce8f2}
.liq-dark .path-add-btn{background:rgba(214,69,69,.25);border-color:var(--lo);color:var(--lo-bt)}
.liq-dark .path-add-btn:hover{background:var(--lo-btn);color:var(--lo-btn-tx)}
/* Modal close button */
.liq-dark .admin-modal .admin-action-btn{color:var(--txs)}
.liq-dark .admin-modal .admin-action-btn:hover{color:var(--tx);background:var(--g200)}
/* ── Dark mode contrast fixes ── */
.liq-dark .toc-item.active{color:var(--lo-bt)}
.liq-dark .toc-item:hover{color:var(--lo-bt)}
.liq-dark .takeaway-box h6{color:var(--lo-bt)}
.liq-dark .mob-nav-btn.active{color:var(--lo-bt)}

/* ── TOOL HISTORY DASHBOARD ────────────────────────────────────
   Single-page dashboard listing every tool with current state:
   draft-in-progress / saved snapshots / last activity. */
.th-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.85rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.1rem 1.4rem;margin-bottom:1.2rem;box-shadow:var(--sh)}
.th-sum-stat{text-align:center}
.th-sum-num{font-family:var(--fd);font-size:1.85rem;font-weight:800;color:var(--lo);line-height:1}
.th-sum-lbl{font-size:.75rem;font-weight:700;color:var(--txm);letter-spacing:.05em;text-transform:uppercase;margin-top:.22rem}
.th-list{display:flex;flex-direction:column;gap:.85rem}
.th-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.05rem 1.25rem;box-shadow:var(--sh);transition:border-color .18s,box-shadow .18s}
.th-card:hover{border-color:var(--lo);box-shadow:var(--shm)}
.th-card-hdr{display:flex;align-items:center;gap:.95rem;flex-wrap:wrap}
.th-icon{width:2.4rem;height:2.4rem;border-radius:var(--rs);display:flex;align-items:center;justify-content:center;font-size:1.15rem;flex-shrink:0}
.th-card-meta{flex:1;min-width:200px;display:flex;flex-direction:column;gap:.25rem}
.th-card-name{font-family:var(--fd);font-size:1.05rem;font-weight:700;color:var(--heading);line-height:1.2}
.th-card-action{flex-shrink:0;margin-left:auto}
.th-pill{display:inline-flex;align-items:center;gap:.32rem;font-size:.72rem;font-weight:700;padding:.18rem .55rem;border-radius:99px;letter-spacing:.02em;width:fit-content}
.th-pill-draft{background:rgba(214,69,69,.13);color:var(--lo-bt)}
.th-pill-saved{background:rgba(22,163,74,.12);color:var(--ok)}
.th-pill-empty{background:var(--g100);color:var(--txm)}
.th-meta{font-size:.78rem;color:var(--txs);margin-top:.7rem}
.th-meta-dim{color:var(--txm);font-style:italic}
.th-snap-list{margin-top:.75rem;border-top:1px solid var(--bdr);padding-top:.7rem;display:flex;flex-direction:column;gap:.4rem}
.th-snap-row{display:flex;justify-content:space-between;align-items:flex-start;gap:.7rem;background:var(--bg);border-radius:var(--rs);padding:.55rem .75rem;cursor:pointer;transition:background .15s}
.th-snap-row:hover{background:var(--g100)}
.th-snap-main{flex:1;min-width:0}
.th-snap-title{font-size:.85rem;font-weight:700;color:var(--tx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.th-snap-summary{font-size:.76rem;color:var(--txs);margin-top:.18rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.th-snap-date{font-size:.72rem;color:var(--txm);font-weight:700;flex-shrink:0;white-space:nowrap}
.th-snap-more{margin-top:.45rem;font-size:.78rem;color:var(--txm);text-align:right}
.th-snap-more a{color:var(--lo-bt);font-weight:700}
@media (max-width:600px){
  .th-summary{grid-template-columns:repeat(3,1fr);padding:.85rem 1rem;gap:.5rem}
  .th-sum-num{font-size:1.45rem}
  .th-sum-lbl{font-size:.65rem}
  .th-card-hdr{gap:.7rem}
  .th-card-action{margin-left:0;width:100%}
  .th-card-action .btn-liq{width:100%;justify-content:center}
}
.liq-dark .th-summary,.liq-dark .th-card{background:var(--wh);border-color:var(--bdr)}
.liq-dark .th-snap-row{background:var(--g100)}
.liq-dark .th-snap-row:hover{background:var(--g200)}

/* ── ATTENDANCE SCANNER ─────────────────────────────────────────
   Scanner-mode toggle, capture input, status banner, manual-search panel,
   selected-attendees rail, guest chips. All scoped under .att-* so they
   don't conflict with anything else in the modal. */
.att-input-toolbar{display:flex;flex-wrap:wrap;gap:.4rem;margin:.5rem 0 .65rem;align-items:center}
.att-mode-btn{display:inline-flex;align-items:center;gap:.4rem;border:1.5px solid var(--bdr);background:var(--wh);color:var(--txs);font-family:var(--fb);font-size:.78rem;font-weight:700;padding:.32rem .85rem;border-radius:2rem;cursor:pointer;transition:all .15s;white-space:nowrap}
.att-mode-btn:hover{border-color:var(--lo);color:var(--lo-h)}
.att-mode-btn.active{background:var(--lo-btn);border-color:var(--lo);color:var(--lo-btn-tx)}
.att-mode-btn.active i{color:#fff}
.att-mode-btn-guest{margin-left:auto}
/* Scanner capture panel */
.att-scanner-panel{background:linear-gradient(135deg,rgba(214,69,69,.05) 0%,rgba(214,69,69,.12) 100%);border:1.5px solid rgba(214,69,69,.35);border-radius:var(--rl);padding:.75rem .9rem;margin-bottom:.6rem}
.att-scan-row{display:flex;align-items:center;gap:.55rem}
.att-scan-ico{font-size:1.4rem;color:var(--lo-h);flex-shrink:0;animation:att-scan-pulse 1.6s ease-in-out infinite}
@keyframes att-scan-pulse{0%,100%{opacity:1}50%{opacity:.45}}
.att-scan-input{flex:1;border:1.5px solid var(--bdr);background:var(--wh);border-radius:var(--rs);padding:.5rem .75rem;font-family:'Courier New',monospace;font-size:.92rem;color:var(--tx)}
.att-scan-input:focus{outline:none;border-color:var(--lo);box-shadow:0 0 0 3px rgba(214,69,69,.18)}
.att-scan-status{margin-top:.55rem;font-size:.82rem;font-weight:700;padding:.32rem .6rem;border-radius:var(--rs);transition:background-color .2s,color .2s}
.att-scan-status.att-scan-ready{background:var(--g100);color:var(--txs)}
.att-scan-status.att-scan-success{background:var(--ok-l);color:var(--ok-bt)}
.att-scan-status.att-scan-duplicate{background:var(--wa-l);color:var(--wa-bt)}
.att-scan-status.att-scan-error{background:var(--er-l);color:var(--er-bt)}
/* Manual-add search panel */
.att-manual-panel{margin-bottom:.6rem;position:relative}
.att-manual-row{display:flex;align-items:center;gap:.55rem;background:var(--wh);border:1.5px solid var(--bdr);border-radius:var(--rs);padding:.45rem .7rem}
.att-manual-row:focus-within{border-color:var(--lo)}
.att-manual-ico{color:var(--txm);font-size:.95rem}
.att-manual-input{flex:1;border:0;background:transparent;font-family:var(--fb);font-size:.86rem;color:var(--tx);outline:none}
.att-manual-results{margin-top:.3rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rs);box-shadow:var(--shm);max-height:240px;overflow-y:auto;position:absolute;top:100%;left:0;right:0;z-index:10}
.att-manual-result{display:flex;align-items:center;gap:.6rem;width:100%;background:transparent;border:0;padding:.5rem .75rem;text-align:left;cursor:pointer;border-bottom:1px solid var(--bdr)}
.att-manual-result:last-child{border-bottom:0}
.att-manual-result:hover{background:var(--lo-p)}
.att-manual-avatar{width:1.7rem;height:1.7rem;border-radius:50%;background:var(--lp);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:800;flex-shrink:0}
.att-manual-meta{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:.05rem}
.att-manual-name{font-size:.86rem;font-weight:700;color:var(--tx)}
.att-manual-sub{font-size:.74rem;color:var(--txm)}
.att-manual-empty{padding:.6rem .85rem;font-size:.82rem;color:var(--txm);font-style:italic}
/* Selected-attendees rail */
.att-selected-rail{background:var(--g100);border-radius:var(--rs);padding:.55rem .75rem;margin-bottom:.65rem}
.att-selected-hdr{font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);margin-bottom:.4rem}
.att-selected-chips{display:flex;flex-wrap:wrap;gap:.35rem}
.att-sel-chip{display:inline-flex;align-items:center;gap:.4rem;background:var(--wh);border:1px solid var(--bdr);border-radius:2rem;padding:.18rem .65rem .18rem .25rem;font-size:.8rem;font-weight:700;color:var(--tx);max-width:100%}
.att-sel-chip.att-sel-guest{background:rgba(214,69,69,.1);border-color:rgba(214,69,69,.4);color:var(--lo-bt)}
.att-sel-avatar{width:1.4rem;height:1.4rem;border-radius:50%;background:var(--ok);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:.62rem;font-weight:800;flex-shrink:0}
.att-sel-guest-avatar{background:var(--lo)}
.att-sel-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}
.att-sel-note{font-weight:400;color:var(--txm);font-size:.74rem}
.att-sel-guest-tag{font-size:.6rem;font-weight:800;letter-spacing:.06em;background:var(--lo-btn);color:var(--lo-btn-tx);padding:.05rem .35rem;border-radius:99px;margin-left:.35rem}
.att-sel-x{background:transparent;border:0;color:var(--txm);cursor:pointer;padding:0 .25rem;font-size:.85rem;line-height:1;border-radius:50%}
.att-sel-x:hover{background:var(--er-l);color:var(--er-bt)}
/* Collapsed user-list header so the full browse list reads as fallback */
.att-userlist-collapsed-hdr{display:flex;align-items:center;justify-content:space-between;padding:.4rem 0;font-size:.76rem;color:var(--txm);font-weight:700}
.att-userlist-count{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}
.att-pending-pill{background:var(--lo-l);color:var(--lo-bt);font-size:.62rem;font-weight:800;padding:.05rem .35rem;border-radius:2px;letter-spacing:.04em;text-transform:uppercase;margin-left:.35rem}

/* ── Admin user-detail QR block ───────────────────────────────── */
.admin-qr-block{display:flex;align-items:center;gap:1rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rs);padding:.85rem 1rem;margin-bottom:1rem}
.admin-qr-block-svg{flex-shrink:0;width:96px;height:96px}
.admin-qr-block-svg svg{width:100%;height:100%;display:block}
.admin-qr-block-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:.4rem}
.admin-qr-block-id{font-family:'Courier New',monospace;font-size:.78rem;color:var(--txs);word-break:break-all}
.admin-qr-block-help{font-size:.78rem;color:var(--txm);line-height:1.4}
@media (max-width:600px){
  .admin-qr-block{flex-direction:column;align-items:stretch;text-align:center}
  .admin-qr-block-svg{align-self:center}
}

/* ── My QR Code card on the Profile page ──────────────────────── */
.my-qr-card{background:linear-gradient(135deg,var(--wh) 0%,var(--lo-p) 100%);border:1.5px solid var(--lo);border-radius:var(--rl);padding:1.4rem 1.6rem;display:grid;grid-template-columns:1fr auto;gap:1.4rem;align-items:center;box-shadow:var(--sh)}
.my-qr-card-error{display:block;background:var(--wa-l);border-color:var(--wa);text-align:center;padding:1.2rem}
.my-qr-card-eyebrow{font-family:var(--fd);font-size:.72rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--lo-bt);margin-bottom:.55rem;display:flex;align-items:center;gap:.25rem}
.my-qr-card-title{font-family:var(--fd);font-size:1.15rem;font-weight:700;color:var(--heading);line-height:1.3;margin-bottom:.4rem}
.my-qr-card-sub{font-size:.86rem;color:var(--txs);line-height:1.5;margin-bottom:.85rem}
.my-qr-card-qr{grid-row:1 / span 4;width:160px;height:160px;background:var(--wh);border:2px solid var(--bdr);border-radius:var(--rs);padding:8px;align-self:start}
.my-qr-card-qr svg{width:100%;height:100%;display:block}
.my-qr-card-id{grid-column:1;font-family:'Courier New',monospace;font-size:.74rem;color:var(--txm);word-break:break-all;margin-bottom:.5rem}
.my-qr-card-actions{grid-column:1;display:flex;gap:.45rem;flex-wrap:wrap}
@media (max-width:560px){
  .my-qr-card{grid-template-columns:1fr;text-align:center}
  .my-qr-card-qr{grid-row:auto;justify-self:center;width:200px;height:200px}
  .my-qr-card-id,.my-qr-card-actions{grid-column:auto;justify-content:center}
}

.liq-dark .att-scanner-panel{background:linear-gradient(135deg,rgba(214,69,69,.08) 0%,rgba(214,69,69,.16) 100%)}
.liq-dark .my-qr-card{background:var(--wh)}
.liq-dark .my-qr-card-qr{background:#fff}

/* ── ADMIN SCANNER TAB ──────────────────────────────────────────
   Self-contained Set up / Test / Use / Troubleshoot panel. Sections
   are full-width cards with consistent padding. Test panel uses a
   2-column grid that stacks to 1 column on mobile. */
.scn-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap;background:linear-gradient(135deg,var(--lp) 0%,var(--lp-m) 100%);color:#fff;border-radius:var(--rl);padding:1.4rem 1.6rem;margin-bottom:1.4rem;position:relative;overflow:hidden}
.scn-hero::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 60% 80% at 100% 0%,rgba(214,69,69,.18) 0%,transparent 60%);pointer-events:none}
.scn-eyebrow{font-family:var(--fd);font-size:.7rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--lo-bt);margin-bottom:.45rem;display:inline-flex;align-items:center;gap:.3rem}
.scn-title{font-family:var(--fd);font-size:1.4rem;font-weight:700;color:#fff;line-height:1.25;margin-bottom:.45rem;position:relative}
.scn-sub{font-size:.9rem;color:rgba(255,255,255,.78);line-height:1.55;margin:0;max-width:640px;position:relative}
.scn-hero-status{display:flex;flex-direction:column;align-items:flex-end;gap:.4rem;flex-shrink:0;position:relative}
.scn-badge{display:inline-flex;align-items:center;gap:.35rem;font-size:.74rem;font-weight:700;padding:.32rem .75rem;border-radius:99px;flex-shrink:0;position:relative;white-space:nowrap}
.scn-badge-ok{background:rgba(22,163,74,.18);color:#7ce39c}
.scn-badge-warn{background:rgba(217,119,6,.22);color:#fcd34d}
.scn-badge-err{background:rgba(220,38,38,.2);color:#ffb3b3}
.scn-badge-neutral{background:rgba(255,255,255,.12);color:rgba(255,255,255,.72)}
.scn-badge>i{font-size:.85rem}
@media (max-width:600px){
  .scn-hero-status{align-items:flex-start;width:100%}
}
.scn-section{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.2rem 1.4rem;margin-bottom:1.2rem;box-shadow:var(--sh)}
.scn-section-info{background:var(--g100);border-left:4px solid var(--lo)}
.scn-section-info p{font-size:.86rem;color:var(--txs);line-height:1.6;margin:0}
.scn-section-info code{font-family:'Courier New',monospace;background:var(--wh);border:1px solid var(--bdr);padding:.05rem .35rem;border-radius:3px;font-size:.82rem;color:var(--lp-d)}
.scn-section-title{font-family:var(--fd);font-size:1.05rem;font-weight:700;color:var(--heading);margin-bottom:.85rem;display:flex;align-items:center;gap:.5rem}
.scn-section-title>i{font-size:1.2rem}
.scn-steps{margin:0;padding-left:1.4rem;color:var(--txs);line-height:1.7;font-size:.92rem}
.scn-steps li{margin-bottom:.5rem}
.scn-steps strong{color:var(--tx)}

/* Test panel grid */
.scn-test-grid{display:grid;grid-template-columns:1fr 240px;gap:1.2rem;margin-bottom:1rem}
.scn-test-row{display:flex;align-items:center;gap:.55rem;background:var(--g100);border:2px solid var(--bdr);border-radius:var(--rs);padding:.6rem .85rem;transition:border-color .15s,box-shadow .15s}
.scn-test-row:focus-within{border-color:var(--lo);box-shadow:0 0 0 3px rgba(214,69,69,.18);background:var(--wh)}
.scn-test-ico{font-size:1.3rem;color:var(--lo-h);flex-shrink:0;animation:att-scan-pulse 1.6s ease-in-out infinite}
.scn-test-input{flex:1;border:0;background:transparent;font-family:'Courier New',monospace;font-size:.92rem;color:var(--tx);outline:none}
.scn-test-result{margin-top:.85rem;padding:.7rem 1rem;border-radius:var(--rs);font-size:.86rem;line-height:1.5;border:1px solid transparent}
.scn-test-result code{font-family:'Courier New',monospace;background:var(--wh);border:1px solid var(--bdr);padding:.05rem .35rem;border-radius:3px;font-size:.78rem}
.scn-test-result.scn-test-idle{background:var(--g100);color:var(--txm);font-style:italic}
.scn-test-result.scn-test-success{background:var(--ok-l);color:#15803d;border-color:rgba(22,163,74,.3)}
.scn-test-result.scn-test-error{background:var(--er-l);color:#b91c1c;border-color:rgba(220,38,38,.3)}
.scn-test-result.scn-test-duplicate{background:var(--wa-l);color:#b45309;border-color:rgba(217,119,6,.3)}
/* Test panel right column — your QR card */
.scn-yourqr-card{background:var(--bg);border:1px solid var(--bdr);border-radius:var(--rl);padding:1rem;text-align:center}
.scn-yourqr-label{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);margin-bottom:.55rem}
.scn-yourqr-img{width:160px;height:160px;background:var(--wh);border:2px solid var(--bdr);border-radius:var(--rs);padding:8px;margin:0 auto .5rem}
.scn-yourqr-img svg{width:100%;height:100%;display:block}
.scn-yourqr-img-fail{display:flex;align-items:center;justify-content:center;color:var(--er);font-size:.8rem;font-weight:700;text-align:center;padding:.5rem}
.scn-yourqr-id{font-family:'Courier New',monospace;font-size:.7rem;color:var(--txm);word-break:break-all}
.scn-yourqr-hint{margin-top:.5rem;font-size:.74rem;color:var(--txs);background:var(--lo-l);border-left:3px solid var(--lo);border-radius:var(--rs);padding:.45rem .55rem;line-height:1.5;text-align:left}

/* Scan history list */
.scn-history-hdr{font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);margin:.85rem 0 .4rem}
.scn-history{background:var(--bg);border:1px solid var(--bdr);border-radius:var(--rs);max-height:260px;overflow-y:auto}
.scn-history-empty{padding:1rem;text-align:center;color:var(--txm);font-style:italic;font-size:.84rem}
.scn-hist-row{display:flex;align-items:flex-start;gap:.6rem;padding:.55rem .75rem;border-bottom:1px solid var(--bdr)}
.scn-hist-row:last-child{border-bottom:0}
.scn-hist-row>i{flex-shrink:0;font-size:1rem;margin-top:.1rem}
.scn-hist-row.scn-hist-ok>i{color:var(--ok)}
.scn-hist-row.scn-hist-warn>i{color:var(--wa)}
.scn-hist-row.scn-hist-err>i{color:var(--er)}
.scn-hist-meta{flex:1;min-width:0}
.scn-hist-line{font-size:.85rem;font-weight:700;color:var(--tx)}
.scn-hist-raw{font-size:.72rem;color:var(--txm);margin-top:.15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scn-hist-raw code{font-family:'Courier New',monospace;font-size:.7rem}
.scn-hist-time{font-size:.72rem;color:var(--txm);font-weight:700;flex-shrink:0;white-space:nowrap}

/* Audio test row */
.scn-audio-test{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;padding:.7rem .9rem;background:var(--g100);border-radius:var(--rs)}
.scn-audio-label{font-size:.78rem;font-weight:700;color:var(--txs);margin-right:.3rem}

/* Workflow steps */
.scn-workflow{display:flex;flex-direction:column;gap:.65rem}
.scn-workflow-step{display:flex;gap:.85rem;align-items:flex-start;padding:.7rem .9rem;background:var(--bg);border:1px solid var(--bdr);border-radius:var(--rs)}
.scn-workflow-num{width:1.7rem;height:1.7rem;border-radius:50%;background:var(--lp);color:#fff;font-size:.82rem;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.scn-workflow-step>div:last-child{font-size:.88rem;color:var(--txs);line-height:1.55}
.scn-workflow-step strong{color:var(--tx)}
.scn-workflow-step em{color:var(--lo-h);font-style:normal;font-weight:700}
.scn-workflow-cta{margin-top:.4rem;text-align:center}

/* Troubleshooting */
.scn-trouble{display:flex;flex-direction:column;gap:.4rem}
.scn-trouble-item{background:var(--bg);border:1px solid var(--bdr);border-radius:var(--rs);overflow:hidden}
.scn-trouble-item[open]{border-color:var(--lo)}
.scn-trouble-q{padding:.65rem .9rem;font-weight:700;font-size:.88rem;color:var(--tx);cursor:pointer;list-style:none;display:flex;align-items:center;gap:.45rem;user-select:none}
.scn-trouble-q::before{content:'\F282';font-family:'bootstrap-icons';font-size:.8rem;color:var(--txm);transition:transform .15s}
.scn-trouble-item[open] .scn-trouble-q::before{transform:rotate(90deg);color:var(--lo)}
.scn-trouble-q::-webkit-details-marker{display:none}
.scn-trouble-a{padding:0 .9rem .85rem 1.95rem;font-size:.86rem;color:var(--txs);line-height:1.6}
.scn-trouble-a code{font-family:'Courier New',monospace;background:var(--wh);border:1px solid var(--bdr);padding:.05rem .35rem;border-radius:3px;font-size:.8rem;color:var(--lp-d)}

@media (max-width:780px){
  .scn-test-grid{grid-template-columns:1fr}
  .scn-yourqr-card{order:-1}
}
.liq-dark .scn-section{background:var(--wh)}
.liq-dark .scn-yourqr-card,.liq-dark .scn-history,.liq-dark .scn-workflow-step,.liq-dark .scn-trouble-item{background:var(--g100)}
.liq-dark .scn-yourqr-img{background:#fff}

/* ── Pre-Session Check CTA card (Scanner tab) ──────────────────── */
.scn-precheck-cta{display:flex;align-items:center;gap:1rem;background:linear-gradient(135deg,var(--lo-p) 0%,var(--lo-l) 100%);border:2px solid var(--lo);border-radius:var(--rl);padding:1.1rem 1.4rem;margin-bottom:1.4rem;box-shadow:0 4px 14px rgba(214,69,69,.12)}
.scn-precheck-cta-icon{flex-shrink:0;width:3rem;height:3rem;border-radius:50%;background:var(--lo-btn);color:var(--lo-btn-tx);display:flex;align-items:center;justify-content:center;font-size:1.4rem;box-shadow:0 4px 10px rgba(214,69,69,.32)}
.scn-precheck-cta-meta{flex:1;min-width:0}
.scn-precheck-cta-title{font-family:var(--fd);font-size:1.05rem;font-weight:700;color:var(--heading);line-height:1.3;margin-bottom:.2rem}
.scn-precheck-cta-sub{font-size:.86rem;color:var(--txs);line-height:1.5}
@media (max-width:600px){
  .scn-precheck-cta{flex-direction:column;text-align:center;padding:1rem}
  .scn-precheck-cta-icon{margin-bottom:.4rem}
  .scn-precheck-cta .btn-liq{width:100%;justify-content:center}
}

/* ── Pre-Session Check wizard modal ──────────────────────────────
   Reuses the att-modal scaffolding (backdrop + card + actions) for
   visual parity with Record Attendance and Session Roster. Adds a
   step indicator at top + a step-content body that can be either a
   2-column grid (step 1) or single-column block (steps 2/3). */
.ps-card{max-width:680px}
.ps-stepper{display:flex;align-items:center;justify-content:center;gap:.4rem;padding:.85rem 1.4rem 0;flex-wrap:wrap}
.ps-step-pip{display:flex;flex-direction:column;align-items:center;gap:.3rem;flex-shrink:0;min-width:72px}
.ps-step-num{width:2rem;height:2rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.85rem;background:var(--g100);color:var(--txm);border:2px solid var(--bdr);transition:background-color .2s,color .2s,border-color .2s}
.ps-step-pip-active .ps-step-num{background:var(--lo-btn);color:var(--lo-btn-tx);border-color:var(--lo);box-shadow:0 0 0 4px var(--lo-l)}
.ps-step-pip-done .ps-step-num{background:var(--ok);color:#fff;border-color:var(--ok)}
.ps-step-pip .ps-step-label{font-size:.7rem;font-weight:700;color:var(--txm);letter-spacing:.04em;text-transform:uppercase}
.ps-step-pip-active .ps-step-label{color:var(--lo-h)}
.ps-step-pip-done .ps-step-label{color:var(--ok)}
.ps-step-line{width:32px;height:2px;background:var(--bdr);margin-bottom:1.2rem}
.ps-body{padding:1.25rem 1.7rem 0}
.ps-step-title{font-family:var(--fd);font-size:1.1rem;font-weight:700;color:var(--heading);margin:0 0 .5rem}
.ps-step-sub{font-size:.9rem;color:var(--txs);line-height:1.55;margin:0 0 1rem}
.ps-step-block{padding:.5rem 0}
/* Step 1 grid — capture input on the left, sample QR on the right */
.ps-step-grid{display:grid;grid-template-columns:1fr 200px;gap:1.4rem;align-items:start}
.ps-step-left{min-width:0}
.ps-step-right{min-width:0}
.ps-scan-row{display:flex;align-items:center;gap:.55rem;background:var(--g100);border:2px solid var(--bdr);border-radius:var(--rs);padding:.55rem .85rem;transition:border-color .15s,box-shadow .15s;margin-bottom:.7rem}
.ps-scan-row:focus-within{border-color:var(--lo);box-shadow:0 0 0 3px rgba(214,69,69,.18);background:var(--wh)}
.ps-scan-ico{font-size:1.3rem;color:var(--lo-h);flex-shrink:0;animation:att-scan-pulse 1.6s ease-in-out infinite}
.ps-banner{padding:.6rem .85rem;border-radius:var(--rs);font-size:.85rem;line-height:1.5;display:flex;align-items:flex-start;gap:.5rem}
.ps-banner-info{background:var(--g100);color:var(--txs)}
.ps-banner-ok{background:var(--ok-l);color:#15803d;border:1px solid rgba(22,163,74,.3)}
.ps-banner-err{background:var(--er-l);color:#b91c1c;border:1px solid rgba(220,38,38,.3)}
.ps-banner>i{font-size:1.05rem;flex-shrink:0;margin-top:.05rem}
.ps-qr-card{background:var(--bg);border:1px solid var(--bdr);border-radius:var(--rl);padding:.9rem;text-align:center}
.ps-qr-card-label{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);margin-bottom:.5rem}
.ps-qr-img{width:100%;background:var(--wh);border:2px solid var(--bdr);border-radius:var(--rs);padding:8px;margin:0}
.ps-qr-img svg{width:100%;height:auto;display:block}
.ps-qr-card-warn{background:var(--wa-l);border-color:var(--wa);color:var(--wa-bt);font-size:.82rem;font-weight:700;line-height:1.5;display:flex;flex-direction:column;align-items:center;gap:.35rem}
.ps-qr-card-warn>i{font-size:1.4rem}

/* Step 2 — audio confirmation */
.ps-audio-action{margin:1rem 0;text-align:center}
.ps-audio-action .btn-liq{font-size:1rem;padding:.7rem 1.5rem}
.ps-audio-hint{font-size:.82rem;color:var(--txs);background:var(--g100);border-radius:var(--rs);padding:.55rem .8rem;margin-bottom:1rem;line-height:1.55}
.ps-audio-confirm{background:var(--bg);border:1px solid var(--bdr);border-radius:var(--rs);padding:.85rem 1rem}
.ps-audio-confirm-q{font-weight:700;font-size:.92rem;color:var(--tx);margin-bottom:.7rem;text-align:center}
.ps-audio-confirm-btns{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}
.ps-audio-no{color:var(--er);border-color:var(--er)}
.ps-audio-no:hover{background:var(--er-l);color:var(--er-bt);border-color:var(--er)}

/* Step 3 — skipped/placeholder */
.ps-step-skip{display:flex;align-items:flex-start;gap:.7rem;background:var(--g100);border-left:3px solid var(--lo);border-radius:var(--rs);padding:.85rem 1rem;font-size:.88rem;color:var(--txs);line-height:1.6}
.ps-step-skip>i{color:var(--lo);font-size:1.2rem;flex-shrink:0;margin-top:.1rem}
.ps-step-skip strong{color:var(--tx)}

/* Final summary */
.ps-final{text-align:center;padding:1rem 0 .5rem}
.ps-final-icon{font-size:3rem;line-height:1;margin-bottom:.5rem}
.ps-final-ok .ps-final-icon{color:var(--ok)}
.ps-final-warn .ps-final-icon{color:var(--wa)}
.ps-final-title{font-family:var(--fd);font-size:1.35rem;font-weight:700;color:var(--heading);margin:0 0 .35rem}
.ps-final-sub{font-size:.92rem;color:var(--txs);line-height:1.55;margin:0 auto 1.2rem;max-width:460px}
.ps-summary-list{list-style:none;padding:0;margin:0 0 .5rem;text-align:left;display:flex;flex-direction:column;gap:.5rem}
.ps-summary-row{display:flex;align-items:flex-start;gap:.7rem;padding:.7rem .9rem;border-radius:var(--rs);border:1px solid var(--bdr)}
.ps-summary-row>i{flex-shrink:0;font-size:1.15rem;margin-top:.1rem}
.ps-summary-row .ps-row-ok{color:var(--ok)}
.ps-summary-row .ps-row-bad{color:var(--er)}
.ps-summary-row .ps-row-neutral{color:var(--txm)}
.ps-row-ok-bg{background:var(--ok-l);border-color:rgba(22,163,74,.3)}
.ps-row-bad-bg{background:var(--er-l);border-color:rgba(220,38,38,.3)}
.ps-row-neutral-bg{background:var(--g100)}
.ps-summary-row-label{font-size:.92rem;font-weight:700;color:var(--tx);margin-bottom:.15rem}
.ps-summary-row-sub{font-size:.82rem;color:var(--txs);line-height:1.5}

.ps-actions{padding:1.1rem 1.7rem 1.4rem;flex-wrap:wrap;justify-content:flex-end;display:flex;gap:.5rem}

@media (max-width:600px){
  .ps-step-grid{grid-template-columns:1fr}
  .ps-stepper{padding:.65rem .8rem 0}
  .ps-step-pip{min-width:60px}
  .ps-step-pip .ps-step-label{font-size:.62rem}
  .ps-step-line{width:18px}
  .ps-body{padding:1rem 1.2rem 0}
  .ps-actions{padding:.85rem 1.2rem 1rem;flex-direction:column-reverse}
  .ps-actions .btn-liq{width:100%;justify-content:center}
}
.liq-dark .scn-precheck-cta{background:linear-gradient(135deg,rgba(214,69,69,.13) 0%,rgba(214,69,69,.22) 100%)}

/* ── CAMERA SCANNING (attendance modal + scanner tab + pre-session check)
   Live video preview with target reticle overlay and a flash animation
   on successful decode. Shared between three contexts: the Attendance
   modal Camera mode, the Scanner-tab camera test, and the Pre-Session
   Check Step 3. */
.att-camera-panel{background:linear-gradient(135deg,rgba(214,69,69,.05) 0%,rgba(214,69,69,.12) 100%);border:1.5px solid rgba(214,69,69,.35);border-radius:var(--rl);padding:.75rem;margin-bottom:.6rem}
.cam-video-wrap{position:relative;width:100%;background:#000;border-radius:var(--rs);overflow:hidden;aspect-ratio:4/3}
.cam-video-wrap-test{max-width:380px;margin:.65rem 0}
.cam-video{display:block;width:100%;height:100%;object-fit:cover;background:#000}
/* Reticle — translucent white box in the center, hints at the scan zone */
.cam-reticle{position:absolute;top:50%;left:50%;width:55%;aspect-ratio:1/1;transform:translate(-50%,-50%);border:3px solid rgba(255,255,255,.6);border-radius:8px;pointer-events:none;box-shadow:0 0 0 9999px rgba(0,0,0,.18);animation:cam-reticle-pulse 2.4s ease-in-out infinite}
@keyframes cam-reticle-pulse{0%,100%{border-color:rgba(255,255,255,.6)}50%{border-color:rgba(214,69,69,.9)}}
/* Flash overlay — briefly tints the video on a successful decode */
.cam-flash{position:absolute;inset:0;background:rgba(22,163,74,.55);opacity:0;pointer-events:none;transition:opacity .15s}
.cam-flash.cam-flash-on{opacity:1}
/* Camera-specific status banner colors (mirror att-scan-status pattern) */
.cam-status-ready{background:var(--g100);color:var(--txs)}
.cam-status-success{background:var(--ok-l);color:var(--ok-bt)}
.cam-status-duplicate{background:var(--wa-l);color:var(--wa-bt)}
.cam-status-error{background:var(--er-l);color:var(--er-bt)}

/* Scanner tab camera-test row */
.scn-camera-test{margin-top:.85rem;background:var(--g100);border-radius:var(--rs);padding:.85rem 1rem}
.scn-camera-test-row{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.scn-camera-test-meta{flex:1;min-width:200px}
.scn-camera-test-title{font-size:.92rem;font-weight:700;color:var(--tx);display:flex;align-items:center;gap:.4rem;margin-bottom:.2rem}
.scn-camera-test-sub{font-size:.8rem;color:var(--txs);line-height:1.5}
.scn-cam-panel{margin-top:.85rem}

/* Pre-Session Check step 3 — start prompt + active panel */
.ps-cam-prompt{display:flex;align-items:center;gap:.85rem;background:var(--g100);border-radius:var(--rs);padding:.85rem 1rem;flex-wrap:wrap}
.ps-cam-prompt>i{font-size:1.6rem;color:var(--lo);flex-shrink:0}
.ps-cam-prompt>div{flex:1;min-width:200px;font-size:.88rem;color:var(--txs);line-height:1.55}
.ps-cam-prompt strong{color:var(--tx)}
.ps-cam-wrap{padding:.4rem 0}
.liq-dark .att-camera-panel{background:linear-gradient(135deg,rgba(214,69,69,.08) 0%,rgba(214,69,69,.16) 100%)}
.liq-dark .scn-camera-test,.liq-dark .ps-cam-prompt{background:var(--g100)}

/* ── Live throughput stats strip (Attendance modal) ──────────────
   Compact dashboard above the selected-rail showing real-time scan
   counts + elapsed time. Only renders once any scan has occurred —
   keeps the modal clean before the session starts. Cells are colour-
   coded by outcome and fold gracefully on narrow widths. */
.att-stats-strip{display:flex;flex-wrap:wrap;gap:.45rem;background:var(--g100);border-radius:var(--rs);padding:.55rem;margin-bottom:.65rem}
.att-stats-cell{flex:1;min-width:64px;background:var(--wh);border-radius:var(--rs);padding:.4rem .55rem;text-align:center;border:1px solid var(--bdr);transition:transform .12s}
.att-stats-cell:hover{transform:translateY(-1px)}
.att-stats-num{font-family:var(--fd);font-size:1.25rem;font-weight:800;line-height:1;color:var(--tx)}
.att-stats-lbl{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--txm);margin-top:.2rem}
.att-stats-cell-ok .att-stats-num{color:var(--ok)}
.att-stats-cell-ok{background:var(--ok-l);border-color:rgba(22,163,74,.3)}
.att-stats-cell-guest .att-stats-num{color:var(--lo-h)}
.att-stats-cell-guest{background:var(--lo-l);border-color:rgba(214,69,69,.3)}
.att-stats-cell-warn .att-stats-num{color:var(--wa)}
.att-stats-cell-warn{background:var(--wa-l);border-color:rgba(217,119,6,.3)}
.att-stats-cell-err .att-stats-num{color:var(--er)}
.att-stats-cell-err{background:var(--er-l);border-color:rgba(220,38,38,.3)}
.att-stats-cell-time .att-stats-num{color:var(--lp);font-family:'Courier New',monospace;font-size:1.1rem;font-weight:700}
.att-stats-cell-time{background:var(--lp-t);border-color:rgba(17,58,92,.18)}
@media (max-width:520px){
  .att-stats-cell{min-width:0;flex:1 1 calc(50% - .45rem)}
  .att-stats-num{font-size:1.05rem}
  .att-stats-lbl{font-size:.58rem}
}

/* ── Attendance modal header actions (Help + Close) ────────────── */
.att-hdr-actions{display:flex;align-items:flex-start;gap:.45rem;flex-shrink:0}
.att-help-btn{background:transparent;border:1.5px solid var(--bdr);color:var(--txs);font-family:var(--fb);font-size:.78rem;font-weight:700;padding:.32rem .75rem;border-radius:2rem;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:.35rem;white-space:nowrap}
.att-help-btn:hover{border-color:var(--lo);color:var(--lo-bt);background:var(--lo-l)}
.att-help-btn i{font-size:.92rem}
@media (max-width:520px){
  .att-help-btn{font-size:.72rem;padding:.25rem .55rem}
  .att-help-btn span,.att-help-btn .att-help-text{display:none}
}

/* ── Attendee row pills (site / role / status) ─────────────────── */
.att-sess-attendee-pill{display:inline-flex;align-items:center;gap:.25rem;font-size:.66rem;font-weight:700;padding:.08rem .42rem;border-radius:99px;letter-spacing:.02em;white-space:nowrap}
.att-sess-pill-role{background:var(--lp-t);color:var(--lp-d)}
.att-sess-pill-site{background:rgba(8,145,178,.13);color:#0e7490}
.att-sess-pill-archived{background:var(--wa-l);color:var(--wa-bt)}
.att-sess-pill-deleted{background:var(--er-l);color:var(--er-bt)}
.att-sess-attendee-pill>i{font-size:.7rem}

/* ── Session-history pager ─────────────────────────────────────── */
.att-sess-pager{display:flex;align-items:center;justify-content:center;gap:.7rem;padding:.7rem 1rem;font-size:.8rem;color:var(--txm);border-top:1px solid var(--bdr);flex-wrap:wrap}
.att-sess-pager .btn-liq{font-size:.78rem;padding:.35rem .85rem}

/* ── Expanded session-history detail view ─────────────────────── */
.att-sess-details{padding:.65rem 1rem .85rem 2rem;background:var(--g100);border-bottom:1px solid var(--bdr)}
.att-sess-subhdr{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--txm);margin-bottom:.25rem}
.att-sess-list{margin:0;padding-left:1.1rem;color:var(--tx);list-style:disc}
.att-sess-list-guests{list-style:none;padding-left:0}
.att-sess-attendee,.att-sess-guest{padding:.18rem 0;font-size:.82rem;display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.att-sess-attendee-name{font-weight:600;color:var(--tx)}
.att-sess-attendee-email{color:var(--txm);font-size:.74rem}
.att-sess-remove-btn{background:transparent;border:0;color:var(--txm);cursor:pointer;padding:.05rem .35rem;border-radius:3px;font-size:.85rem;line-height:1;margin-left:auto;opacity:.45;transition:opacity .15s,background-color .15s,color .15s}
.att-sess-remove-btn:hover{opacity:1;background:var(--er-l);color:var(--er-bt)}
.att-sess-empty{font-size:.78rem;color:var(--txm);font-style:italic;padding:.4rem 0}
.att-sess-guest-tag{font-size:.6rem;font-weight:800;letter-spacing:.05em;background:var(--lo-btn);color:var(--lo-btn-tx);padding:.05rem .35rem;border-radius:99px;flex-shrink:0}
.att-sess-foot{margin-top:.7rem;padding-top:.55rem;border-top:1px solid var(--bdr);font-size:.74rem;color:var(--txm);display:flex;justify-content:space-between;align-items:center;gap:.6rem;flex-wrap:wrap}
.att-sess-delete-btn{color:var(--er);border-color:rgba(220,38,38,.4);font-size:.74rem;flex-shrink:0}
.att-sess-delete-btn:hover{background:var(--er-l);border-color:var(--er);color:var(--er-bt)}

/* ── Guest log section ─────────────────────────────────────────── */
.guest-log-list{display:flex;flex-direction:column;border-top:1px solid var(--bdr)}
.guest-log-row{display:flex;align-items:flex-start;gap:.85rem;padding:.65rem 1rem;border-bottom:1px solid var(--bdr)}
.guest-log-row:last-child{border-bottom:0}
.guest-log-name{display:flex;align-items:center;gap:.45rem;font-weight:700;font-size:.88rem;color:var(--tx);min-width:200px;flex-shrink:0}
.guest-log-meta{flex:1;min-width:0;font-size:.78rem;color:var(--txs);display:flex;flex-direction:column;gap:.15rem}
.guest-log-date{font-weight:700;color:var(--tx);font-size:.8rem}
.guest-log-note{color:var(--txs);font-style:italic}
.guest-log-sub{color:var(--txm);font-size:.74rem}
@media (max-width:600px){
  .guest-log-row{flex-direction:column;gap:.3rem}
  .guest-log-name{min-width:0}
}

/* ── Bulk QR print picker ──────────────────────────────────────── */
.bulkqr-filter-tag{display:inline-block;font-size:.74rem;font-weight:700;background:var(--lo-l);color:var(--lo-bt);padding:.1rem .5rem;border-radius:99px;margin-left:.3rem}
.bulkqr-formats{display:flex;flex-direction:column;gap:.55rem;padding:0 1.7rem;margin-bottom:.5rem}
.bulkqr-format{display:flex;align-items:flex-start;gap:.85rem;padding:.85rem 1rem;background:var(--bg);border:2px solid var(--bdr);border-radius:var(--rs);cursor:pointer;transition:border-color .15s,background-color .15s}
.bulkqr-format:hover{border-color:var(--lo)}
.bulkqr-format.active{background:var(--lo-p);border-color:var(--lo);box-shadow:0 0 0 3px rgba(214,69,69,.15)}
.bulkqr-format input[type="radio"]{flex-shrink:0;margin-top:.25rem;accent-color:var(--lo)}
.bulkqr-format-icon{font-size:1.5rem;color:var(--lo-h);flex-shrink:0;margin-top:.1rem}
.bulkqr-format-meta{flex:1;min-width:0}
.bulkqr-format-title{font-family:var(--fd);font-size:.95rem;font-weight:700;color:var(--heading);line-height:1.3;margin-bottom:.25rem}
.bulkqr-format-desc{font-size:.8rem;color:var(--txs);line-height:1.5;margin-bottom:.45rem}
.bulkqr-format-out{font-size:.78rem;color:var(--tx);font-weight:600}
.bulkqr-format-out strong{color:var(--lp)}
.liq-dark .bulkqr-format{background:var(--g100)}
.liq-dark .bulkqr-format.active{background:var(--lo-p)}

/* Password strength meter — 4 segments + label, rendered by             */
/* _renderPasswordStrengthMeter(inputId, meterId) in js/14-auth-search.js */
.pwd-meter{display:none;margin-top:.4rem;font-size:.74rem}
.pwd-meter-bars{display:flex;gap:3px;margin-bottom:.2rem}
.pwd-meter-bar{flex:1;height:4px;border-radius:2px;background:var(--g200);transition:background .15s}
.pwd-meter-label{font-weight:600;line-height:1.4}

/* Welcome / empty-state panel — shown on Overview and Users tab when    */
/* no real users exist yet. Visual hierarchy puts this above the busy     */
/* dashboard so the new admin sees a path forward instead of zero KPIs.   */
.dash-welcome{display:flex;gap:1.25rem;align-items:flex-start;background:linear-gradient(135deg,rgba(214,69,69,.10),rgba(123,53,143,.06));border:1px solid rgba(214,69,69,.25);border-radius:var(--rl);padding:1.4rem 1.6rem;margin-bottom:1.1rem}
.dash-welcome-icon{flex-shrink:0;width:64px;height:64px;border-radius:50%;background:rgba(214,69,69,.18);display:flex;align-items:center;justify-content:center;font-size:1.85rem;color:var(--lo)}
.dash-welcome-body{flex:1;min-width:0}
.dash-welcome-body h2{font-family:var(--fd);font-size:1.25rem;color:var(--heading);margin:0 0 .35rem;line-height:1.3}
.dash-welcome-body p{font-size:.9rem;color:var(--tx);line-height:1.55;margin:0 0 .85rem;max-width:640px}
.dash-welcome-actions{display:flex;gap:.55rem;flex-wrap:wrap;margin-bottom:.65rem}
.dash-welcome-tip{font-size:.78rem;color:var(--txm);line-height:1.5}
body.liq-dark .dash-welcome{background:linear-gradient(135deg,rgba(214,69,69,.12),rgba(123,53,143,.10));border-color:rgba(214,69,69,.35)}
body.liq-dark .dash-welcome-icon{background:rgba(214,69,69,.22)}
@media (max-width:600px){
  .dash-welcome{flex-direction:column;gap:.85rem;padding:1.1rem 1.15rem}
  .dash-welcome-icon{width:50px;height:50px;font-size:1.4rem}
}

/* Capability override badge — small purple chip that appears under a    */
/* capability header when at least one user has an explicit override on  */
/* that capability. Tooltip lists names + grant/deny breakdown.           */
.cap-override-badge{display:inline-flex;align-items:center;gap:.25rem;font-size:.66rem;font-weight:800;background:var(--lo-l);color:var(--lo-bt);border-radius:2rem;padding:.15rem .55rem;margin-top:.4rem;cursor:help;border:1px solid rgba(214,69,69,.25);text-transform:uppercase;letter-spacing:.04em}
.cap-override-badge i{font-size:.65rem}
body.liq-dark .cap-override-badge{background:rgba(214,69,69,.18);color:var(--lo-bt);border-color:rgba(214,69,69,.4)}

/* ── ADMIN: MOBILE/TABLET RESPONSIVE ──────────────────────────────── */
/* Tablet and phone are realistic admin contexts — managers walk LTC sites */
/* with iPads. The wide tables and capabilities matrix break below ~768px  */
/* without these overrides. The transformations are CSS-only: the same DOM */
/* renders as a desktop table OR a stacked mobile card, picked by viewport.*/

/* Capabilities matrix — desktop default. Each role is wrapped in <details>  */
/* for mobile-collapse semantics; on desktop we hide the summary and force  */
/* the .cap-matrix-row visible (overrides UA `details > :not(summary)        */
/* {display:none}` rule via display:grid !important).                        */
.cap-role-card>summary{display:none}
.cap-role-card{display:contents}
.cap-role-card>.cap-matrix-row{display:grid !important}

@media (max-width:767px){
  /* ── Admin tabs: tighten spacing on small screens ───────────────── */
  .admin-tab{flex:1 1 auto;min-width:0;font-size:.74rem;padding:.55rem .35rem;gap:.25rem}
  .admin-tab i{font-size:.95rem}
  .admin-tab-panel{padding:1.1rem .85rem}

  /* ── Admin tables → stacked cards ───────────────────────────────── */
  /* Desktop has 7–9 columns of dense data; horizontal scroll on a phone  */
  /* is unusable. Each <tr> becomes a self-contained card; each <td>     */
  /* renders its data-label via ::before so the user still sees the      */
  /* column name without the table chrome.                                */
  .admin-table,.admin-table tbody{display:block}
  .admin-table thead{display:none}
  .admin-table tr{display:block;border:1px solid var(--bdr);border-radius:var(--rs);background:var(--wh);margin-bottom:.65rem;padding:.55rem .85rem;box-shadow:0 1px 2px rgba(0,0,0,.03)}
  .admin-table tr:hover td{background:transparent}
  .admin-table td{display:flex;justify-content:space-between;align-items:flex-start;gap:.85rem;padding:.35rem 0;border-bottom:1px dashed rgba(0,0,0,.06);text-align:right;color:var(--tx)}
  .admin-table td:last-child{border-bottom:none}
  .admin-table td::before{content:attr(data-label);font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--txm);flex:0 0 auto;text-align:left;padding-top:.15rem;white-space:nowrap}
  /* Empty data-label = no label rendered (used for the checkbox cell)   */
  .admin-table td[data-label=""]::before{content:none}
  /* Checkbox cell — float top-right of the card without disturbing the  */
  /* Name row that follows. Made small + interactive-friendly.            */
  .admin-table td.adm-cb-cell{padding:0;position:absolute;top:.7rem;right:.85rem;border:none;justify-content:flex-end}
  .admin-table tr{position:relative}
  .admin-table td.adm-cb-cell:empty{display:none}
  /* Name row gets prominence — large and full-width, no label needed     */
  .admin-table td[data-label="Name"]{font-size:1.02rem;border-bottom:1px solid var(--bdr);padding-bottom:.5rem;margin-bottom:.25rem;padding-right:2.4rem}
  .admin-table td[data-label="Name"]::before{display:none}
  /* Actions footer — full-width row of buttons at the bottom            */
  .admin-table td.adm-actions-cell{justify-content:flex-end;border-top:1px solid var(--bdr);border-bottom:none;padding-top:.55rem;margin-top:.25rem;flex-wrap:wrap;gap:.4rem}
  .admin-table td.adm-actions-cell::before{flex:1;text-align:left}
  .admin-table td.adm-actions-cell .admin-action-btn{padding:.42rem .55rem;font-size:1rem}

  /* ── Bulk action bar: stack on small screens ────────────────────── */
  .bulk-bar{flex-wrap:wrap;align-items:stretch;gap:.5rem;padding:.55rem .75rem}
  .bulk-bar>.ms-auto{margin-left:0!important;order:99}
  .bulk-bar #bulk-role-select{flex:1 1 100%;max-width:none}

  /* ── Settings rows: stack the right-side input under the label ──── */
  .settings-row{flex-direction:column;align-items:stretch;gap:.55rem}
  .settings-row-right{padding-top:0;justify-content:flex-start!important}
  .settings-row-right .pi{width:100%}

  /* ── Capabilities matrix → collapsible role cards ──────────────── */
  /* Override the desktop display:contents wrapper so each <details>   */
  /* becomes its own card. Hide the matrix header (the column titles   */
  /* don't make sense in a vertical layout — each cell shows its own   */
  /* label via data-cap-label on a ::before pseudo).                    */
  .cap-matrix-wrap{overflow:visible!important;border:none!important;min-width:0!important;background:transparent}
  .cap-matrix-header{display:none!important}
  .cap-role-card{display:block!important;border:1px solid var(--bdr);border-radius:var(--rs);background:var(--wh);margin-bottom:.65rem;overflow:hidden;box-shadow:0 1px 2px rgba(0,0,0,.03)}
  /* Closed-by-default summary — admin taps to expand a role's capabilities */
  .cap-role-card>summary{display:flex!important;align-items:center;gap:.6rem;padding:.7rem .9rem;cursor:pointer;background:var(--g100);list-style:none;-webkit-tap-highlight-color:transparent;user-select:none}
  .cap-role-card>summary::-webkit-details-marker,
  .cap-role-card>summary::marker{display:none;content:''}
  .cap-summary-meta{font-size:.78rem;color:var(--txm);font-weight:600;margin-left:auto}
  .cap-summary-chevron{font-size:.95rem;color:var(--txm);transition:transform .18s;flex-shrink:0}
  .cap-role-card[open]>summary{border-bottom:1px solid var(--bdr);background:var(--wh)}
  .cap-role-card[open]>summary .cap-summary-chevron{transform:rotate(180deg)}
  /* Restore default <details> hide-when-closed behaviour by undoing the  */
  /* desktop !important rule. When closed, the row is hidden by the UA   */
  /* stylesheet — when open, it shows.                                    */
  .cap-role-card>.cap-matrix-row{display:block!important;padding:.45rem .9rem .85rem}
  .cap-role-card:not([open])>.cap-matrix-row{display:none!important}
  .cap-role-card .cap-role-cell{display:none}
  .cap-role-card .cap-cell{display:flex!important;justify-content:space-between;align-items:center;padding:.55rem 0!important;border-left:none!important;border-bottom:1px solid var(--bdr);gap:.85rem}
  .cap-role-card .cap-cell:last-child{border-bottom:none}
  .cap-role-card .cap-cell::before{content:attr(data-cap-label);font-size:.85rem;font-weight:600;color:var(--tx);flex:1;text-align:left}
  .cap-role-card .cap-cell .perm-check{flex-shrink:0;width:32px;height:32px;font-size:1rem}

  /* ── Path Templates summary card: tighten chip ribbon ─────────── */
  .tpl-summary-preview{flex-wrap:wrap}

  /* ── Admin section headers: stack title + button when narrow ──── */
  .admin-section-hdr{flex-wrap:wrap;gap:.5rem}
}

/* Dark mode adjustments — the mobile cards need explicit dark backgrounds  */
/* since the desktop-mode `tr:hover` stripe uses --g100 which is opaque.    */
@media (max-width:767px){
  body.liq-dark .admin-table tr{background:var(--g100);border-color:var(--g400)}
  body.liq-dark .cap-role-card{background:var(--g100);border-color:var(--g400)}
  body.liq-dark .cap-role-card>summary{background:var(--g200)}
  body.liq-dark .cap-role-card[open]>summary{background:var(--g100);border-bottom-color:var(--g400)}
  body.liq-dark .admin-table td{border-bottom-color:rgba(255,255,255,.08)}
  body.liq-dark .cap-role-card .cap-cell{border-bottom-color:var(--g400)}
}

/* ── HOME HERO — selectable animated dashboard centerpiece ───────────────
   Three interchangeable "views" the user switches via the corner control:
     • orbit  — 12-track orbit (completed rose, in-progress amber, current pings)
     • aurora — drifting indigo→rose light + floating motes behind the greeting
     • pulse  — a healthcare heartbeat sweeping across the band
   Dark indigo hero — reads on both light and dark themes. All motion is
   killed by body.liq-reduced-motion (global rule) + the media query below. */
.hd-hero{position:relative;border:2px solid rgba(214,69,69,.35);border-radius:var(--rl);overflow:hidden;color:#fff;
  padding:1.6rem 1.8rem;margin-bottom:1.2rem;box-shadow:0 6px 28px rgba(0,0,0,.20);min-height:236px}
.hd-hero-orbit{display:grid;grid-template-columns:1.15fr .85fr;align-items:center;gap:1rem;
  background:linear-gradient(135deg,var(--lp-d) 0%,var(--lp) 60%,var(--lp-m) 100%)}
.hd-hero-aurora{display:flex;align-items:center;justify-content:space-between;gap:1.4rem;background:var(--lp-d)}
.hd-hero-pulse{display:flex;align-items:center;background:linear-gradient(135deg,var(--lp-d),var(--lp))}
.hd-hero-orbit::before{content:'';position:absolute;inset:0;background:radial-gradient(120% 120% at 80% 50%,rgba(214,69,69,.12),transparent 55%);pointer-events:none}
.hd-hero-main{position:relative;z-index:2;min-width:0}

/* view switcher (top-right corner) */
.hd-hero-switch{position:absolute;top:11px;right:13px;z-index:6;display:flex;gap:5px}
.hd-hero-switch-btn{width:26px;height:26px;border-radius:50%;border:1px solid rgba(255,255,255,.28);
  background:rgba(255,255,255,.10);color:#fff;font-size:.78rem;cursor:pointer;display:flex;align-items:center;
  justify-content:center;transition:background .15s,border-color .15s,transform .15s;backdrop-filter:blur(3px)}
.hd-hero-switch-btn:hover{background:rgba(255,255,255,.22);transform:translateY(-1px)}
.hd-hero-switch-btn.active{background:var(--lo);border-color:#ffd3e2;box-shadow:0 2px 8px rgba(214,69,69,.5)}
.hd-hero-eyebrow{font-size:.74rem;font-weight:800;letter-spacing:.06em;color:#e9b9cd;text-transform:uppercase;margin-bottom:.35rem}
.hd-hero-greet{font-family:var(--fd);font-size:2rem;font-weight:700;line-height:1.12}
.hd-hero-sub{font-size:.9rem;color:#b9cddf;margin-top:.4rem}
.hd-hero-quest{display:inline-flex;align-items:center;gap:.7rem;margin-top:1.15rem;max-width:100%;
  background:var(--lo-btn);color:var(--lo-btn-tx);border:none;border-radius:99px;padding:.6rem 1.1rem .6rem .9rem;cursor:pointer;
  text-align:left;box-shadow:0 6px 18px rgba(214,69,69,.42);transition:transform .15s,box-shadow .15s}
.hd-hero-quest:hover{transform:translateY(-2px);box-shadow:0 9px 24px rgba(214,69,69,.55)}
.hd-hero-quest>i:first-child{font-size:1.15rem;flex-shrink:0}
.hd-hero-quest-txt{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.hd-hero-quest-txt b{font-size:.86rem;font-weight:800}
.hd-hero-quest-txt small{font-size:.74rem;opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:30ch}
.hd-hero-quest-go{margin-left:.2rem;flex-shrink:0;transition:transform .15s}
.hd-hero-quest:hover .hd-hero-quest-go{transform:translateX(3px)}
.hd-hero-quest.done{background:rgba(255,255,255,.14);border:1px solid rgba(214,69,69,.45);box-shadow:none}
.hd-hero-quest.done:hover{transform:none;box-shadow:none;background:rgba(255,255,255,.2)}

/* orbit */
.hd-hero-visual{position:relative;z-index:1;min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem}
.hd-orbit-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:.35rem .8rem;margin-top:.65rem;font-size:.68rem;font-weight:600;color:#b9cddf}
.hd-orbit-legend span{display:inline-flex;align-items:center;gap:.32rem;white-space:nowrap}
.hd-lgd{width:9px;height:9px;border-radius:50%;flex-shrink:0;display:inline-block}
.hd-lgd.done{background:var(--lo)}
.hd-lgd.started{background:#e08a3c}
.hd-lgd.notstarted{background:#b3c6d8}
.hd-lgd.now{background:#fff;box-shadow:0 0 0 2px rgba(214,69,69,.6)}
/* Pillar legend — the three orbital shells; outline dots = rings, not statuses */
.hd-orbit-pillars{margin-top:.28rem;font-size:.64rem;color:#cbdae8;opacity:1}
.hd-pill{width:9px;height:9px;border-radius:50%;flex-shrink:0;display:inline-block;background:transparent;border:2px solid #7fa3c8}
.hd-pill.reg{border-color:#7fa3c8}
.hd-pill.care{border-color:#e58bb0}
.hd-pill.lead{border-color:#d9a84e}
.hd-orbit{position:relative;width:260px;height:260px}
.hd-ring{position:absolute;top:50%;left:50%;border:1px solid rgba(255,255,255,.16);border-radius:50%;transform:translate(-50%,-50%)}
/* Ring diameters = 2×node-radius in _renderHeroOrbit; border tinted per pillar */
.hd-r1{width:108px;height:108px;border-color:rgba(140,159,214,.5)}
.hd-r2{width:176px;height:176px;border-color:rgba(214,69,69,.42)}
.hd-r3{width:244px;height:244px;border-color:rgba(217,168,78,.5)}
.hd-spin{position:absolute;top:50%;left:50%;width:0;height:0;transform-origin:0 0}
/* All shells rotate the same direction; inner fastest -> outer slowest (Kepler) */
.hd-o1{animation:hd-spin 24s linear infinite}
.hd-o2{animation:hd-spin 36s linear infinite}
.hd-o3{animation:hd-spin 52s linear infinite}
@keyframes hd-spin{to{transform:rotate(360deg)}}
/* Node states — all high-contrast on the dark indigo field:
   not started = light lavender · in progress = amber · done = rose · current = white ping */
.hd-orbit .node{position:absolute;width:13px;height:13px;border-radius:50%;transform:translate(-50%,-50%);
  background:#b3c6d8;border:1.5px solid #e5eef7;box-shadow:0 0 6px rgba(179,198,216,.5);cursor:default}
.hd-orbit .node.started{background:#e08a3c;border-color:#ffdca0;box-shadow:0 0 9px rgba(242,169,53,.75)}
.hd-orbit .node.done{background:var(--lo);border-color:#ffd3e2;box-shadow:0 0 11px rgba(214,69,69,.9)}
.hd-orbit .node.now{background:#fff;border-color:var(--lo);box-shadow:0 0 0 0 rgba(255,255,255,.6);animation:hd-ping 2s ease-out infinite}
@keyframes hd-ping{0%{box-shadow:0 0 0 0 rgba(255,255,255,.55)}100%{box-shadow:0 0 0 13px rgba(255,255,255,0)}}
.hd-core{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:56px;height:56px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;text-align:center;font-family:var(--fd);font-weight:800;font-size:.72rem;
  color:#fff;background:radial-gradient(circle at 35% 30%,var(--lp-m),var(--lp-d));border:1.5px solid rgba(214,69,69,.5);
  box-shadow:0 0 22px rgba(17,58,92,.9);line-height:1}
.hd-core::after{content:'';position:absolute;inset:-6px;border-radius:50%;border:1px solid rgba(214,69,69,.35);animation:hd-pulsering 3.4s ease-out infinite}
@keyframes hd-pulsering{0%{transform:scale(.92);opacity:.8}100%{transform:scale(1.5);opacity:0}}

/* aurora view */
.hd-aurora-bg{position:absolute;inset:0;z-index:0;overflow:hidden}
.hd-blob{position:absolute;border-radius:50%;filter:blur(42px);opacity:.55}
.hd-b1{width:300px;height:300px;background:var(--lp-m);left:-50px;top:-70px;animation:hd-drift1 15s ease-in-out infinite}
.hd-b2{width:260px;height:260px;background:var(--lo);right:-40px;top:0;animation:hd-drift2 18s ease-in-out infinite}
.hd-b3{width:220px;height:220px;background:#2a5a80;left:42%;bottom:-90px;animation:hd-drift3 21s ease-in-out infinite}
@keyframes hd-drift1{50%{transform:translate(70px,45px) scale(1.15)}}
@keyframes hd-drift2{50%{transform:translate(-55px,35px) scale(1.1)}}
@keyframes hd-drift3{50%{transform:translate(45px,-35px) scale(1.2)}}
.hd-mote{position:absolute;bottom:0;width:4px;height:4px;border-radius:50%;background:rgba(255,255,255,.75);animation:hd-rise 9s linear infinite}
@keyframes hd-rise{0%{transform:translateY(0);opacity:0}10%{opacity:1}90%{opacity:1}100%{transform:translateY(-240px);opacity:0}}

/* pulse view */
.hd-ekg{position:absolute;inset:0;width:100%;height:100%;z-index:0}
.hd-ekg-line{fill:none;stroke:var(--lo);stroke-width:2.5;filter:drop-shadow(0 0 5px rgba(214,69,69,.7));
  stroke-dasharray:1500;stroke-dashoffset:1500;animation:hd-draw 4s linear infinite}
@keyframes hd-draw{to{stroke-dashoffset:-1500}}
.hd-ekg-dot{fill:#fff;filter:drop-shadow(0 0 6px #fff)}
.hd-pulse-cap{position:absolute;left:1.8rem;right:1.8rem;bottom:.85rem;z-index:2;text-align:center;font-size:.72rem;font-weight:600;color:#dceaf7}
.hd-pulse-cap b{color:#fff;font-weight:800}
.hd-pulse-cap i{color:var(--lo);margin-right:.2rem}

/* aurora view — live stats panel */
.hd-aurora-stats{position:relative;z-index:2;display:flex;flex-direction:column;gap:.5rem;width:340px;max-width:44%;flex-shrink:0}
.hd-astat-wide{background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.17);border-radius:12px;padding:.7rem .85rem;backdrop-filter:blur(4px)}
.hd-astat-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.4rem;gap:.5rem}
.hd-astat-lbl{font-weight:800;font-size:.92rem}
.hd-astat-sub{font-size:.68rem;color:#e9b9cd;font-weight:700;white-space:nowrap}
.hd-astat-bar{height:7px;border-radius:99px;background:rgba(255,255,255,.16);overflow:hidden}
.hd-astat-fill{height:100%;border-radius:99px;background:linear-gradient(90deg,var(--lo),#ff9bbb)}
.hd-astat-name{font-size:.7rem;color:#b9cddf;margin-top:.35rem;font-weight:600}
.hd-astat-row{display:flex;gap:.5rem}
.hd-astat{flex:1;min-width:0;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.17);border-radius:12px;padding:.55rem .35rem;text-align:center;backdrop-filter:blur(4px)}
.hd-astat-num{font-family:var(--fd);font-size:1.5rem;font-weight:700;line-height:1}
.hd-astat-num span{font-size:.78rem;color:#b9cddf;font-weight:700}
.hd-astat-cap{font-size:.6rem;color:#b9cddf;text-transform:uppercase;letter-spacing:.04em;margin-top:.25rem;font-weight:700}

@media (max-width:860px){
  .hd-hero-orbit{grid-template-columns:1fr}
  .hd-hero{text-align:center;padding:1.4rem 1.3rem;min-height:0}
  .hd-hero-aurora{flex-direction:column;justify-content:center}
  .hd-hero-pulse{justify-content:center}
  .hd-aurora-stats{width:100%;max-width:100%}
  .hd-astat-top{justify-content:center;gap:.6rem}
  .hd-pulse-cap{left:.8rem;right:.8rem}
  .hd-hero-quest{align-self:center}
  .hd-hero-greet{font-size:1.6rem}
  .hd-hero-visual{min-height:210px;margin-top:.5rem}
  /* Scale the whole orbit uniformly so rings + JS-positioned nodes stay aligned;
     negative margin trims the layout box the un-scaled 260px would reserve. */
  .hd-orbit{transform:scale(.78);margin:-28px 0}
}
@media (prefers-reduced-motion:reduce){
  .hd-o1,.hd-o2,.hd-o3,.hd-orbit .node.now,.hd-core::after,
  .hd-blob,.hd-mote,.hd-ekg-line,.hd-ekg-dot{animation:none}
  /* Streak-flame glow tiers + their card backgrounds were not covered */
  .hd-streak-flame,.skt-4,.skt-5{animation:none!important}
}
/* Keyboard focus ring for whole-card buttons made accessible in js/18-a11y */
[data-kbtn]:focus-visible{outline:2px solid var(--lo);outline-offset:2px;border-radius:10px}

body.liq-limited-guest #nav-home-item,body.liq-limited-guest #nav-daily-item,body.liq-limited-guest #nav-cases-item,body.liq-limited-guest #nav-tools-item,body.liq-limited-guest #nav-exam-item,body.liq-limited-guest #nav-user-wrap-d .nav-xp{display:none!important}

/* ── Administrator Toolkit (downloadable templates) ── */
.tool-head{display:flex;align-items:center;gap:.8rem;margin-bottom:1rem}
.tool-head-icon{width:2.6rem;height:2.6rem;border-radius:.6rem;display:flex;align-items:center;justify-content:center;font-size:1.3rem;flex-shrink:0}
.tool-head-name{font-family:var(--fd);font-size:1.28rem;color:var(--heading);font-weight:700;line-height:1.2}
.tool-head-sub{font-size:.85rem;color:var(--txm);margin-top:.15rem}
.tk-grid{display:flex;flex-direction:column;gap:.6rem}
.tk-card{display:flex;align-items:center;gap:.9rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.8rem 1rem}
.tk-card-icon{width:2.4rem;height:2.4rem;border-radius:.55rem;display:flex;align-items:center;justify-content:center;font-size:1.15rem;flex-shrink:0}
.tk-card-body{flex:1;min-width:0}
.tk-card-name{font-weight:700;color:var(--heading);font-size:.95rem}
.tk-card-desc{font-size:.82rem;color:var(--txm);margin-top:.1rem}
@media(max-width:560px){.tk-card{flex-wrap:wrap}.tk-card .btn-liq{width:100%}}

/* ── ADMINISTRATOR CAPSTONE — guided reflection workbook ──────────────────── */
.cap-hero{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.6rem 1.7rem;margin-bottom:1.4rem;box-shadow:var(--sh)}
.cap-hero-eyebrow{display:inline-flex;align-items:center;font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--lo-bt)}
.cap-hero-title{font-family:var(--fd);color:var(--heading);font-size:1.7rem;margin:.4rem 0 .5rem}
.cap-hero-sub{color:var(--txs);font-size:.95rem;line-height:1.6;margin:0 0 1.1rem;max-width:60ch}
.cap-prog{margin-bottom:1.1rem}
.cap-prog-bar{height:8px;background:var(--g100);border-radius:99px;overflow:hidden}
.cap-prog-fill{height:100%;background:var(--lo);border-radius:99px;transition:width .4s ease}
.cap-prog-txt{font-size:.78rem;font-weight:700;color:var(--txm);margin-top:.4rem}
.cap-actions{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap}
.cap-save-ind{font-size:.8rem;font-weight:700;color:var(--ok);opacity:0;transition:opacity .3s}
.cap-save-ind .bi{color:var(--ok)}
.cap-section{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:1.3rem 1.4rem;margin-bottom:1rem;box-shadow:var(--sh)}
.cap-section-head{display:flex;align-items:center;gap:.65rem;margin-bottom:1rem}
.cap-section-icon{width:2.1rem;height:2.1rem;border-radius:var(--rs);display:flex;align-items:center;justify-content:center;font-size:1.05rem;flex-shrink:0}
.cap-section-title{font-family:var(--fd);font-size:1.12rem;font-weight:700;color:var(--heading)}
.cap-prompt{margin-bottom:1.1rem}
.cap-prompt:last-child{margin-bottom:0}
.cap-q{display:block;font-size:.92rem;font-weight:700;color:var(--tx);line-height:1.5;margin-bottom:.5rem}
.cap-textarea{width:100%;font-family:var(--fb);font-size:.92rem;line-height:1.55;color:var(--tx);background:var(--bg);border:1.5px solid var(--bdr);border-radius:var(--rs);padding:.7rem .85rem;resize:vertical;min-height:5.5rem;transition:border-color .15s,box-shadow .15s}
.cap-textarea:focus{outline:none;border-color:var(--lo);box-shadow:0 0 0 3px var(--lo-l);background:var(--wh)}
.cap-textarea::placeholder{color:var(--txm)}

/* ── THE WALKTHROUGH — 3D inspection (v1) ─────────────────────────────────── */
.wt-hero{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.5rem 1.6rem;margin-bottom:1.2rem;box-shadow:var(--sh)}
.wt-eyebrow{display:inline-flex;align-items:center;font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--lo-bt)}
.wt-title{font-family:var(--fd);color:var(--heading);font-size:1.6rem;margin:.35rem 0 .5rem}
.wt-sub{color:var(--txs);font-size:.94rem;line-height:1.6;margin:0 0 1.1rem;max-width:64ch}
.wt-toolbar{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.wt-toggle{display:inline-flex;border:1px solid var(--bdr);border-radius:var(--rs);overflow:hidden}
.wt-toggle-btn{background:var(--bg);color:var(--txs);border:none;font-family:var(--fb);font-weight:700;font-size:.82rem;padding:.45rem .85rem;cursor:pointer;display:inline-flex;align-items:center;gap:.35rem}
.wt-toggle-btn.active{background:var(--lp);color:#fff}
.wt-toggle-btn:disabled{opacity:.45;cursor:not-allowed}
.wt-progress{display:flex;align-items:center;gap:.6rem;flex:1;min-width:180px}
.wt-progress-bar{flex:1;height:8px;background:var(--g100);border-radius:99px;overflow:hidden}
.wt-progress-fill{height:100%;width:0;background:var(--lo);border-radius:99px;transition:width .4s ease}
.wt-progress-txt{font-size:.78rem;font-weight:700;color:var(--txm);white-space:nowrap}
.wt-stage{position:relative}
.wt-3d-wrap{position:relative}
.wt-canvas-host{width:100%;height:440px;border-radius:var(--r);overflow:hidden;background:var(--lp-d);border:1px solid var(--bdr);display:flex;align-items:center;justify-content:center}
.wt-canvas-host canvas{display:block;width:100%;height:100%}
.wt-loading{color:#b9cddf;font-size:.9rem;font-weight:600}
.wt-loading.err{color:#ffd3d3}
.wt-hint{margin-top:.5rem;font-size:.76rem;color:var(--txm);display:flex;align-items:center;gap:.4rem}
.wt-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:.8rem}
.wt-litem{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.9rem 1rem;box-shadow:var(--sh)}
.wt-litem-head{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.15rem}
.wt-litem-title{font-weight:800;color:var(--heading);font-size:1rem}
.wt-litem-track{font-size:.72rem;font-weight:700;color:var(--lo-bt);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}
.wt-litem-check{font-size:.86rem;color:var(--tx);margin-bottom:.4rem;line-height:1.5}
.wt-litem-why{font-size:.82rem;color:var(--txs);line-height:1.55;margin-bottom:.7rem}
.wt-litem-actions,.wt-card-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.wt-badge{font-size:.68rem;font-weight:800;padding:.15rem .5rem;border-radius:99px;white-space:nowrap;display:inline-flex;align-items:center;gap:.25rem}
.wt-badge.todo{background:var(--g100);color:var(--txm)}
.wt-badge.ok{background:var(--ok-l);color:var(--ok-bt)}
.wt-badge.gap{background:var(--er-l);color:var(--er-bt)}
.wt-mark{font-family:var(--fb);font-weight:700;font-size:.82rem;padding:.45rem .8rem;border-radius:var(--rs);cursor:pointer;border:1.5px solid var(--bdr);background:var(--bg);color:var(--txs);display:inline-flex;align-items:center;gap:.35rem}
.wt-mark.ok:hover,.wt-mark.ok.sel{background:var(--ok);border-color:var(--ok);color:#fff}
.wt-mark.gap:hover,.wt-mark.gap.sel{background:var(--er);border-color:var(--er);color:#fff}
.wt-card-overlay{position:fixed;inset:0;background:rgba(15,18,30,.55);z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:1rem}
.wt-card{position:relative;background:var(--wh);border-radius:var(--rl);box-shadow:var(--shl);max-width:460px;width:100%;padding:1.5rem 1.6rem}
.wt-card-x{position:absolute;top:.7rem;right:.7rem;background:transparent;border:none;color:var(--txm);font-size:1rem;cursor:pointer;padding:.3rem}
.wt-card-track{font-size:.72rem;font-weight:800;color:var(--lo-bt);text-transform:uppercase;letter-spacing:.06em}
.wt-card-title{font-family:var(--fd);color:var(--heading);font-size:1.35rem;margin:.25rem 0 .9rem}
.wt-card-check,.wt-card-why{font-size:.9rem;line-height:1.6;margin-bottom:.8rem;color:var(--tx)}
.wt-card-why{color:var(--txs)}
.wt-card-lbl{display:block;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--txm);margin-bottom:.2rem}
.wt-summary{margin-top:1.1rem}
.wt-summary-inner{background:var(--wh);border:1px solid var(--bdr);border-left:4px solid var(--lo);border-radius:var(--r);padding:1.2rem 1.4rem;box-shadow:var(--sh)}
.wt-summary-inner h3{font-family:var(--fd);color:var(--heading);font-size:1.2rem;margin:0 0 .5rem}
.wt-summary-inner p{font-size:.9rem;color:var(--txs);line-height:1.6}
.wt-gap-list{list-style:none;padding:0;margin:.6rem 0}
.wt-gap-list li{font-size:.88rem;color:var(--tx);padding:.25rem 0}
.wt-gap-list li i{color:var(--er);margin-right:.4rem}
.wt-gap-list li span{color:var(--txm);font-size:.8rem}
.wt-clean{font-size:.9rem;color:var(--ok);font-weight:600;margin:.6rem 0}
.wt-linklike{background:none;border:none;color:var(--lo-bt);font-weight:700;cursor:pointer;padding:0;font-size:inherit;text-decoration:underline}
@media (max-width:640px){ .wt-canvas-host{height:340px} }

/* Walkthrough v2 — room picker */
/* 4 equal, full-width columns per row (8 rooms -> 4x2 on desktop) */
.wt-rooms{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-bottom:1rem}
@media (max-width:900px){.wt-rooms{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.wt-rooms{grid-template-columns:minmax(0,1fr)}}
.wt-room{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0;background:var(--bg);border:1.5px solid var(--bdr);border-radius:var(--rs);padding:.55rem .85rem;cursor:pointer;font-family:var(--fb);font-weight:700;font-size:.86rem;color:var(--txs);transition:all .15s}
.wt-room:hover{border-color:var(--lo)}
.wt-room.active{background:var(--lp);border-color:var(--lp);color:#fff}
.wt-room .bi{font-size:1rem;flex-shrink:0}
.wt-room-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}
.wt-room-prog{font-size:.72rem;font-weight:800;background:var(--g100);color:var(--txm);border-radius:99px;padding:.05rem .45rem}
.wt-room.active .wt-room-prog{background:rgba(255,255,255,.2);color:#fff}
.wt-room-prog.done{background:var(--ok-l);color:var(--ok-bt)}
.wt-room.active .wt-room-prog.done{background:rgba(255,255,255,.9);color:var(--ok)}

/* Walkthrough — on-canvas controls + fullscreen */
.wt-3d-wrap{position:relative}
.wt-fs-btn{position:absolute;top:.6rem;right:.6rem;z-index:4;width:2.15rem;height:2.15rem;border-radius:var(--rs);border:none;background:rgba(30,42,77,.72);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.95rem;transition:background .15s}
.wt-fs-btn:hover{background:rgba(30,42,77,.95)}
.wt-controls{position:absolute;right:.6rem;bottom:2.7rem;z-index:4;display:flex;flex-direction:column;gap:.35rem}
.wt-controls button{width:2.15rem;height:2.15rem;border-radius:var(--rs);border:none;background:rgba(30,42,77,.72);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.9rem;transition:background .15s}
.wt-controls button:hover{background:rgba(30,42,77,.95)}
.wt-3d-wrap:fullscreen{width:100vw;height:100vh;background:var(--lp-d);display:flex;flex-direction:column}
.wt-3d-wrap:-webkit-full-screen{width:100vw;height:100vh;background:var(--lp-d);display:flex;flex-direction:column}
.wt-3d-wrap:fullscreen .wt-canvas-host{flex:1;height:auto;border-radius:0;border:none}
.wt-3d-wrap:-webkit-full-screen .wt-canvas-host{flex:1;height:auto;border-radius:0;border:none}
.wt-3d-wrap:fullscreen .wt-hint{position:absolute;left:0;right:0;bottom:.6rem;justify-content:center;color:#dfe4ee;z-index:4}
.wt-3d-wrap:-webkit-full-screen .wt-hint{position:absolute;left:0;right:0;bottom:.6rem;justify-content:center;color:#dfe4ee;z-index:4}

/* Walkthrough — guided tour panel (overlays the bottom of the 3D view) */
.wt-tour-bar{position:absolute;left:0;right:0;bottom:0;z-index:5;background:rgba(20,28,52,.94);color:#fff;padding:.7rem .9rem}
.wt-tour-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}
.wt-tour-step{font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#c9d3ea}
.wt-tour-x{background:transparent;border:none;color:#c9d3ea;cursor:pointer;font-size:.9rem}
.wt-tour-title{font-family:var(--fd);font-size:1.05rem;font-weight:700;margin-bottom:.2rem}
.wt-tour-check{font-size:.84rem;line-height:1.45;margin-bottom:.25rem}
.wt-tour-why{font-size:.8rem;line-height:1.5;color:#c9d3ea;margin-bottom:.55rem}
.wt-tour-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.wt-tour-nav{margin-left:auto;display:flex;gap:.35rem}
.wt-tour-btn{background:rgba(255,255,255,.15);color:#fff;border:none;border-radius:var(--rs);padding:.42rem .75rem;font-family:var(--fb);font-weight:700;font-size:.82rem;cursor:pointer;display:inline-flex;align-items:center;gap:.3rem}
.wt-tour-btn:hover{background:rgba(255,255,255,.26)}
.wt-tour-btn:disabled{opacity:.4;cursor:not-allowed}
.wt-tour-done{display:flex;align-items:center;justify-content:space-between;gap:1rem;font-size:.9rem}

/* Walkthrough — inspection-simulator UI (how-to, legend, verdicts, report) */
.wt-how{display:flex;flex-wrap:wrap;gap:.45rem;margin-bottom:.7rem}
.wt-how-step{display:inline-flex;align-items:center;gap:.4rem;background:var(--bg);border:1px solid var(--bdr);border-radius:99px;padding:.3rem .75rem;font-size:.76rem;font-weight:700;color:var(--txs)}
.wt-how-step b{display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem;border-radius:50%;background:var(--lo-btn);color:var(--lo-btn-tx);font-size:.66rem}
.wt-legend{display:flex;flex-wrap:wrap;gap:.9rem;margin-bottom:.9rem;font-size:.74rem;font-weight:600;color:var(--txm)}
.wt-legend span{display:inline-flex;align-items:center;gap:.35rem}
.wt-dot{width:10px;height:10px;border-radius:50%;display:inline-block}
.wt-dot.amber{background:#e08a3c}.wt-dot.green{background:#16a34a}.wt-dot.red{background:#dc2626}
.wt-verdict{display:flex;align-items:center;gap:.45rem;font-weight:800;font-size:.9rem;border-radius:var(--rs);padding:.5rem .7rem;margin:.5rem 0 .35rem}
.wt-verdict.ok{background:var(--ok-l);color:var(--ok-bt)}
.wt-verdict.bad{background:var(--er-l);color:var(--er-bt)}
.wt-tour-bar .wt-verdict.ok{background:rgba(22,163,74,.25);color:#7ef0a8}
.wt-tour-bar .wt-verdict.bad{background:rgba(220,38,38,.25);color:#ffa3a3}
.wt-verdict-see{font-size:.84rem;line-height:1.5;color:var(--txs);margin-bottom:.5rem}
.wt-tour-bar .wt-verdict-see{color:#c9d3ea}
.wt-litem-see{font-size:.84rem;line-height:1.55;background:var(--bg);border-left:3px solid var(--lo);border-radius:var(--rs);padding:.5rem .65rem;margin-bottom:.55rem;color:var(--tx)}
.wt-tour-btn.primary{background:var(--lo)}
.wt-tour-btn.primary:hover{background:var(--lo-h)}
.wt-report-score{display:flex;align-items:baseline;gap:.7rem;margin:.4rem 0 .5rem}
.wt-report-acc{font-family:var(--fd);font-size:2.4rem;font-weight:800;color:var(--lo);line-height:1}
.wt-report-lbl{font-size:.84rem;font-weight:700;color:var(--txm)}
.wt-report-sec{margin:.7rem 0}
.wt-report-sec strong{font-size:.88rem;color:var(--heading)}

/* QIP Builder tool */
.qip-items{display:flex;flex-direction:column;gap:.9rem;margin-bottom:.6rem}
.qip-item{background:var(--bg);border:1px solid var(--bdr);border-radius:var(--r);padding:1rem 1.1rem}
.qip-item-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.7rem}
.qip-item-n{font-family:var(--fd);font-weight:700;font-size:1.02rem;color:var(--heading)}
.qip-ok{font-size:.74rem;font-weight:800;color:var(--ok);display:inline-flex;align-items:center;gap:.25rem}
.qip-need{font-size:.72rem;font-weight:700;color:var(--wa)}
.qip-del{margin-left:auto;background:transparent;border:none;color:var(--txm);cursor:pointer;font-size:.95rem;padding:.2rem .35rem;border-radius:var(--rs)}
.qip-del:hover{color:var(--er-bt);background:var(--er-l)}
.qip-hint{font-weight:600;color:var(--txm);font-size:.72rem}
.qip-count{font-size:.8rem;font-weight:700;color:var(--txm);align-self:center}
.tool-save-row{gap:.6rem;flex-wrap:wrap;align-items:center}

/* PDSA Cycle Tracker tool */
.pdsa-cycles{display:flex;flex-direction:column;gap:.9rem;margin-bottom:.6rem}
.pdsa-cycle{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:1rem 1.1rem;box-shadow:var(--sh)}
.pdsa-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.7rem}
.pdsa-ramp{font-family:var(--fd);font-weight:700;font-size:1rem;color:var(--heading)}
.pdsa-badge{font-size:.7rem;font-weight:800;padding:.15rem .55rem;border-radius:99px;white-space:nowrap}
.pdsa-badge.todo{background:var(--g100);color:var(--txm)}
.pdsa-badge.info{background:var(--inf-l);color:var(--inf)}
.pdsa-badge.ok{background:var(--ok-l);color:var(--ok-bt)}
.pdsa-badge.wa{background:var(--wa-l);color:var(--wa-bt)}
.pdsa-badge.er{background:var(--er-l);color:var(--er-bt)}
.pdsa-grid{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
@media (max-width:720px){.pdsa-grid{grid-template-columns:1fr}}
.pdsa-stage{border:1px solid var(--bdr);border-radius:var(--rs);padding:.7rem .8rem;background:var(--bg)}
.pdsa-stage-h{display:flex;align-items:center;gap:.45rem;font-weight:800;font-size:.82rem;color:var(--heading);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.5rem}
.pdsa-let{display:inline-flex;align-items:center;justify-content:center;width:1.35rem;height:1.35rem;border-radius:var(--rs);color:#fff;font-family:var(--fd);font-size:.82rem}
.pdsa-stage.plan{border-top:3px solid #2563eb}.pdsa-stage.plan .pdsa-let{background:#2563eb}
.pdsa-stage.do{border-top:3px solid #d97706}.pdsa-stage.do .pdsa-let{background:#d97706}
.pdsa-stage.study{border-top:3px solid #0d9488}.pdsa-stage.study .pdsa-let{background:#0d9488}
.pdsa-stage.act{border-top:3px solid #be185d}.pdsa-stage.act .pdsa-let{background:#be185d}
.pdsa-link{max-width:220px}

/* Indicator Dashboard tool */
.qd-inds{display:flex;flex-direction:column;gap:1rem;margin-bottom:.6rem}
.qd-ind{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:1rem 1.1rem;box-shadow:var(--sh)}
.qd-ind-head{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:.7rem}
.qd-name{flex:1;min-width:180px}
.qd-fam{max-width:180px}.qd-dir{max-width:150px}.qd-target{max-width:100px}
.qd-chart-wrap{background:var(--bg);border:1px solid var(--bdr);border-radius:var(--rs);padding:.5rem .6rem}
.qd-svg{width:100%;height:auto;display:block}
.qd-verdict{display:flex;align-items:flex-start;gap:.45rem;font-size:.85rem;line-height:1.45;font-weight:600;border-radius:var(--rs);padding:.55rem .7rem;margin-top:.6rem}
.qd-verdict.good{background:var(--ok-l);color:var(--ok-bt)}
.qd-verdict.bad{background:var(--er-l);color:var(--er-bt)}
.qd-verdict.none{background:var(--g100);color:var(--txs)}
.qd-points{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin-top:.7rem}
.qd-points-lbl{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--txm);margin-right:.2rem}
.qd-cell{display:flex;flex-direction:column;gap:.15rem;position:relative}
.qd-cell .qd-p{width:64px;padding:.3rem .4rem;font-size:.76rem;text-align:center}
.qd-cell .qd-v{width:64px;padding:.3rem .4rem;font-size:.8rem;text-align:center}
.qd-x{position:absolute;top:-6px;right:-6px;width:15px;height:15px;line-height:13px;text-align:center;border:none;border-radius:50%;background:var(--g200);color:var(--txs);font-size:.7rem;cursor:pointer;padding:0}
.qd-x:hover{background:var(--er);color:#fff}
.qd-addp{background:var(--bg);border:1px dashed var(--bdr);border-radius:var(--rs);color:var(--txs);font-weight:700;font-size:.76rem;padding:.35rem .6rem;cursor:pointer;align-self:stretch}
.qd-addp:hover{border-color:var(--lo);color:var(--lo-bt)}

/* ── Change-Idea Library (tool: change-ideas) ───────────────────────── */
.ci-intro{margin-bottom:.9rem}
.ci-intro .ci-note{display:block;margin-top:.4rem;font-size:.82rem;color:var(--txs)}
.ci-inline-add{display:inline-flex;align-items:center;gap:.15rem;background:rgba(37,99,235,.1);color:#1d4ed8;font-weight:700;font-size:.74rem;padding:.05rem .35rem;border-radius:var(--rs);white-space:nowrap}
.ci-searchrow{margin-bottom:1rem}
.ci-search-wrap{position:relative;display:flex;align-items:center}
.ci-search-wrap i{position:absolute;left:.7rem;color:var(--txs);pointer-events:none}
.ci-search-wrap .pi{padding-left:2rem}
.ci-fam{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:1rem 1.1rem;margin-bottom:.9rem}
.ci-fam-head{display:flex;align-items:flex-start;gap:.7rem;margin-bottom:.7rem}
.ci-fam-icon{flex:0 0 auto;width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;background:rgba(37,99,235,.1);color:#1d4ed8;font-size:1.05rem}
.ci-fam-title{flex:1 1 auto;min-width:0}
.ci-fam-name{font-family:var(--fd);font-weight:700;font-size:1.05rem;color:var(--heading)}
.ci-fam-why{font-size:.85rem;color:var(--txs);margin-top:.1rem}
.ci-copy{flex:0 0 auto;background:var(--bg);border:1px solid var(--bdr);border-radius:var(--rs);color:var(--txs);cursor:pointer;padding:.3rem .5rem;font-size:.8rem}
.ci-copy:hover{border-color:#1d4ed8;color:#1d4ed8}
.ci-driver{margin:.5rem 0 .3rem}
.ci-driver-name{font-weight:700;font-size:.82rem;letter-spacing:.02em;text-transform:uppercase;color:#1d4ed8;margin:.4rem 0 .35rem}
.ci-idea{display:flex;align-items:center;gap:.6rem;padding:.4rem .55rem;border:1px solid var(--bdr);border-radius:var(--rs);margin-bottom:.35rem;background:var(--bg)}
.ci-idea-txt{flex:1 1 auto;font-size:.9rem;color:var(--txm);line-height:1.35}
.ci-add{flex:0 0 auto;display:inline-flex;align-items:center;gap:.2rem;background:rgba(37,99,235,.1);border:1px solid rgba(37,99,235,.28);border-radius:var(--rs);color:#1d4ed8;font-weight:700;font-size:.76rem;padding:.28rem .5rem;cursor:pointer;white-space:nowrap;transition:background .12s}
.ci-add:hover{background:#1d4ed8;color:#fff;border-color:#1d4ed8}
.ci-add.ci-added{background:var(--ok,#16a34a);border-color:var(--ok,#16a34a);color:#fff;cursor:default}

/* ── Self-Audit → QIP loop button ───────────────────────────────────── */
.ir-toqip{background:rgba(37,99,235,.1);border:1px solid rgba(37,99,235,.28);color:#1d4ed8}
.ir-toqip:hover{background:#1d4ed8;color:#fff;border-color:#1d4ed8}

/* ── Walkthrough report → QIP loop bridge ───────────────────────────── */
.wt-report-loop{display:flex;gap:.5rem;align-items:flex-start;background:rgba(37,99,235,.08);border:1px solid rgba(37,99,235,.22);border-radius:var(--rs);padding:.6rem .75rem;margin:.7rem 0;font-size:.87rem;line-height:1.4;color:var(--txm)}
.wt-report-loop i{color:#1d4ed8;font-size:1.05rem;margin-top:.05rem}
.wt-toaudit{background:rgba(37,99,235,.1);border:1px solid rgba(37,99,235,.28);color:#1d4ed8;margin-left:.4rem}
.wt-toaudit:hover{background:#1d4ed8;color:#fff;border-color:#1d4ed8}

/* ── QI micro-credential capstone panel (exam page) ─────────────────── */
.qc-panel{background:var(--wh);border:1px solid var(--bdr);border-left:4px solid #1d4ed8;border-radius:var(--r);padding:1.1rem 1.2rem;margin-bottom:1.4rem}
.qc-panel-earned{border-left-color:#16a34a;background:linear-gradient(0deg,rgba(22,163,74,.04),rgba(22,163,74,.04)),var(--wh)}
.qc-head{display:flex;gap:.7rem;align-items:flex-start;margin-bottom:.9rem}
.qc-head-icon{flex:0 0 auto;width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:rgba(37,99,235,.1);color:#1d4ed8;font-size:1.25rem}
.qc-title{font-family:var(--fd);font-weight:700;font-size:1.18rem;color:var(--heading);display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.qc-sub{font-size:.87rem;color:var(--txs);margin-top:.15rem;line-height:1.4}
.qc-earned{font-family:var(--fb);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#16a34a;background:rgba(22,163,74,.12);border-radius:999px;padding:.12rem .5rem;display:inline-flex;align-items:center;gap:.25rem}
.qc-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin-bottom:1rem}
@media(max-width:640px){.qc-steps{grid-template-columns:1fr}}
.qc-step{display:flex;gap:.55rem;align-items:flex-start;background:var(--bg);border:1px solid var(--bdr);border-radius:var(--rs);padding:.6rem .7rem}
.qc-step-mark{flex:0 0 auto;font-size:1.15rem;line-height:1.2}
.qc-step.qc-done .qc-step-mark{color:#16a34a}
.qc-step.qc-part .qc-step-mark{color:#d97706}
.qc-step.qc-todo .qc-step-mark{color:var(--txs)}
.qc-step-label{font-weight:700;font-size:.9rem;color:var(--heading)}
.qc-step-detail{font-size:.8rem;color:var(--txs);margin-top:.1rem;line-height:1.35}
.qc-cta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}
.qc-hint{font-size:.82rem;color:var(--txs)}

/* ── Opening-Readiness Tracker (tool: opening-readiness) ────────────── */
.or-domain{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.8rem 1rem;margin-bottom:.8rem}
.or-dom-head{display:flex;align-items:center;gap:.55rem;margin-bottom:.5rem}
.or-dom-icon{flex:0 0 auto;width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:rgba(194,65,12,.1);color:#c2410c;font-size:.95rem}
.or-dom-name{font-family:var(--fd);font-weight:700;font-size:1rem;color:var(--heading);flex:1 1 auto}
.or-dom-pct{font-weight:700;font-size:.82rem;color:var(--txs);background:var(--bg);border-radius:999px;padding:.1rem .5rem}
.or-row{display:flex;align-items:center;justify-content:space-between;gap:.7rem;padding:.4rem 0;border-top:1px solid var(--bdr)}
.or-row:first-child{border-top:none}
.or-row-lbl{flex:1 1 auto;font-size:.88rem;color:var(--txm);line-height:1.35}
.or-seg{flex:0 0 auto;display:inline-flex;border:1px solid var(--bdr);border-radius:var(--rs);overflow:hidden}
.or-seg-btn{background:var(--wh);border:none;border-left:1px solid var(--bdr);color:var(--txs);font-size:.74rem;font-weight:600;padding:.3rem .5rem;cursor:pointer;white-space:nowrap}
.or-seg-btn:first-child{border-left:none}
.or-seg-btn:hover{background:var(--bg)}
.or-seg-btn.or-on-ok{background:#16a34a;color:#fff}
.or-seg-btn.or-on-wa{background:#d97706;color:#fff}
.or-seg-btn.or-on-er{background:#dc2626;color:#fff}
.or-seg-btn.or-on-na{background:#64748b;color:#fff}
.or-bars{margin-top:.6rem;display:flex;flex-direction:column;gap:.25rem}
.or-bar-row{display:flex;align-items:center;gap:.5rem;font-size:.78rem}
.or-bar-lbl{flex:0 0 42%;color:var(--txm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.or-bar-track{flex:1 1 auto;height:7px;background:var(--bg);border-radius:999px;overflow:hidden}
.or-bar-fill{display:block;height:100%;border-radius:999px}
.or-bar-val{flex:0 0 auto;color:var(--txs);font-weight:600;width:2.4rem;text-align:right}
.or-outstanding{margin:.35rem 0 0;padding-left:1rem}
.or-outstanding li{margin-bottom:.25rem;line-height:1.35}
.or-out-dom{color:var(--txs);font-weight:600}
.or-tag{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em;border-radius:999px;padding:.05rem .4rem;color:#fff}
.or-tag-wip{background:#d97706}
.or-tag-gap{background:#dc2626}
.or-pdf{background:rgba(194,65,12,.1);border:1px solid rgba(194,65,12,.28);color:#c2410c}
.or-pdf:hover{background:#c2410c;color:#fff;border-color:#c2410c}

/* ── Staffing-Up Ramp Planner (tool: staffing-ramp) ─────────────────── */
.ramp-sec{margin-bottom:1rem}
.ramp-sec-h{font-family:var(--fd);font-weight:700;font-size:1rem;color:var(--heading);margin-bottom:.5rem}
.ramp-sec-sub{font-family:var(--ff);font-weight:400;font-size:.8rem;color:var(--txs)}
.ramp-inrow{display:flex;flex-wrap:wrap;gap:.7rem}
.ramp-inp{flex:1 1 130px;margin-bottom:0}
.ramp-inwrap{position:relative;display:flex;align-items:center}
.ramp-suffix{position:absolute;right:.6rem;font-size:.78rem;color:var(--txs);pointer-events:none}
.ramp-role{display:grid;grid-template-columns:1fr 68px 68px 52px auto auto;gap:.4rem;align-items:center;margin-bottom:.35rem}
.ramp-role-head{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em;color:var(--txs);margin-bottom:.2rem}
.ramp-role-head span{padding:0 .1rem}
.ramp-role-name{min-width:0}
.ramp-role-n{text-align:center}
.ramp-gap{font-weight:700;font-size:.86rem;text-align:center;color:var(--txs)}
.ramp-gap-hire{color:#c2410c}
.ramp-gap-over{color:#16a34a}
.ramp-dc{display:flex;align-items:center;gap:.2rem;font-size:.74rem;color:var(--txs);white-space:nowrap;margin:0;cursor:pointer}
.ramp-del{background:none;border:none;color:var(--txs);cursor:pointer;padding:.15rem .3rem;border-radius:6px}
.ramp-del:hover{background:var(--er-l,rgba(220,38,38,.1));color:var(--er)}
.ramp-addrole{background:var(--bg);border:1px dashed var(--bdr);border-radius:var(--rs);color:var(--txs);font-weight:700;font-size:.78rem;padding:.35rem .7rem;cursor:pointer;margin-top:.3rem}
.ramp-addrole:hover{border-color:#c2410c;color:#c2410c}
.ramp-out-grid{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
@media(max-width:640px){.ramp-out-grid{grid-template-columns:1fr}.ramp-role{grid-template-columns:1fr 56px 56px 44px auto auto}}
.ramp-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.8rem .9rem}
.ramp-card-h{font-family:var(--fd);font-weight:700;font-size:.92rem;color:var(--heading);margin-bottom:.5rem;display:flex;align-items:center;gap:.35rem}
.ramp-card-h i{color:#c2410c}
.ramp-env-row,.ramp-tot>div{display:flex;justify-content:space-between;align-items:center;font-size:.86rem;color:var(--txm);padding:.2rem 0}
.ramp-env-big{display:flex;justify-content:space-between;align-items:center;margin-top:.3rem;padding-top:.4rem;border-top:1px solid var(--bdr)}
.ramp-env-big strong{font-size:1.5rem;color:#c2410c}
.ramp-tot-hire strong{color:#c2410c}
.ramp-sched-wrap{overflow-x:auto}
.ramp-sched{width:100%;border-collapse:collapse;font-size:.84rem}
.ramp-sched th{text-align:left;color:var(--txs);font-weight:600;font-size:.76rem;border-bottom:1px solid var(--bdr);padding:.3rem .4rem}
.ramp-sched td{padding:.3rem .4rem;border-bottom:1px solid var(--bg)}
.ramp-note{color:var(--txs);font-style:italic}
.ramp-sched-note{font-size:.8rem;color:var(--txs);margin:.4rem 0 0}
.ramp-pdf{background:rgba(194,65,12,.1);border:1px solid rgba(194,65,12,.28);color:#c2410c}
.ramp-pdf:hover{background:#c2410c;color:#fff;border-color:#c2410c}

/* ── Occupancy-Ramp Funding Model (tool: ramp-funding) ──────────────── */
.rf-sec{margin-bottom:1rem}
.rf-sec-h{font-family:var(--fd);font-weight:700;font-size:1rem;color:var(--heading);margin-bottom:.5rem}
.rf-sec-sub{font-family:var(--ff);font-weight:400;font-size:.8rem;color:var(--txs)}
.rf-inrow{display:flex;flex-wrap:wrap;gap:.7rem}
.rf-inp{flex:1 1 150px;margin-bottom:0}
.rf-inwrap{position:relative;display:flex;align-items:center}
.rf-pre{position:absolute;left:.6rem;font-size:.85rem;color:var(--txs);pointer-events:none}
.rf-money{padding-left:1.3rem}
.rf-suffix{position:absolute;right:.6rem;font-size:.78rem;color:var(--txs);pointer-events:none}
.rf-cards{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
@media(max-width:640px){.rf-cards{grid-template-columns:1fr}}
.rf-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.8rem .9rem}
.rf-card-h{font-family:var(--fd);font-weight:700;font-size:.92rem;color:var(--heading);margin-bottom:.4rem;display:flex;align-items:center;gap:.35rem}
.rf-card-h i{color:#166534}
.rf-card-big{font-size:1.15rem;font-weight:800;color:var(--heading);line-height:1.2}
.rf-be-pct{color:#166534}
.rf-be-pct.rf-neg{color:#dc2626}
.rf-per{font-size:.8rem;font-weight:700}
.rf-card-sub{font-size:.78rem;color:var(--txs);margin-top:.25rem;line-height:1.35}
.rf-sched-wrap{overflow-x:auto}
.rf-sched{width:100%;border-collapse:collapse;font-size:.84rem}
.rf-sched th{text-align:left;color:var(--txs);font-weight:600;font-size:.76rem;border-bottom:1px solid var(--bdr);padding:.3rem .4rem}
.rf-sched td{padding:.3rem .4rem;border-bottom:1px solid var(--bg)}
.rf-be-row{background:rgba(22,101,52,.07)}
.rf-be-row td:first-child{font-weight:700;color:#166534}
.rf-pos{color:#166534}
.rf-neg{color:#dc2626}
.rf-pdf{background:rgba(22,101,52,.1);border:1px solid rgba(22,101,52,.28);color:#166534}
.rf-pdf:hover{background:#166534;color:#fff;border-color:#166534}

/* ── New-Hire Onboarding Hub (page: nhonboard) ──────────────────────── */
.nho-welcome{text-align:center;max-width:620px;margin:1.5rem auto;padding:1.5rem}
.nho-welcome-icon{font-size:2.6rem;color:var(--lo);margin-bottom:.5rem}
.nho-welcome h2{font-family:var(--fd);color:var(--heading);font-size:1.5rem;margin-bottom:.5rem}
.nho-welcome p{color:var(--txm);margin-bottom:1.2rem}
.nho-rolegrid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-bottom:1rem}
@media(max-width:560px){.nho-rolegrid{grid-template-columns:1fr}}
.nho-rolebtn{display:flex;align-items:center;gap:.5rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.8rem 1rem;font-weight:600;font-size:.9rem;color:var(--heading);cursor:pointer;text-align:left;transition:all .12s}
.nho-rolebtn i{color:var(--lo);font-size:1.15rem}
.nho-rolebtn:hover{border-color:var(--lo);background:var(--lo-l,rgba(214,69,69,.06));transform:translateY(-1px)}
.nho-note{font-size:.82rem;color:var(--txs)}
.nho-top{display:flex;flex-wrap:wrap;gap:.8rem;align-items:flex-end;justify-content:space-between;margin-bottom:.8rem}
.nho-top-role{font-family:var(--fd);font-weight:700;font-size:1.1rem;color:var(--heading);display:flex;align-items:center;gap:.4rem}
.nho-top-role i{color:var(--lo)}
.nho-linklike{background:none;border:none;color:var(--lo-bt);font-size:.8rem;cursor:pointer;text-decoration:underline;padding:0 .2rem}
.nho-startwrap{display:flex;flex-direction:column;gap:.15rem}
.nho-startwrap label{font-size:.78rem;color:var(--txs);font-weight:600}
.nho-optional{font-weight:400}
.nho-start{max-width:190px;padding:.3rem .5rem}
.nho-progresswrap{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.8rem 1rem;margin-bottom:1rem}
.nho-progress-top{display:flex;justify-content:space-between;font-size:.9rem;color:var(--txm);margin-bottom:.4rem}
.nho-progress-bar{height:10px;background:var(--bg);border-radius:999px;overflow:hidden}
.nho-progress-fill{height:100%;background:var(--lo);border-radius:999px;transition:width .3s}
.nho-fill-done{background:#16a34a}
.nho-phase{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.8rem 1rem;margin-bottom:.8rem}
.nho-phase-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.5rem;flex-wrap:wrap}
.nho-phase-name{font-family:var(--fd);font-weight:700;font-size:1rem;color:var(--heading);flex:1 1 auto}
.nho-phase-count{font-weight:700;font-size:.82rem;color:var(--txs);background:var(--bg);border-radius:999px;padding:.1rem .5rem}
.nho-due{font-size:.76rem;color:var(--txs);display:inline-flex;align-items:center;gap:.25rem}
.nho-overdue{color:var(--er);font-weight:700}
.nho-item{display:flex;align-items:center;gap:.6rem;padding:.45rem 0;border-top:1px solid var(--bg)}
.nho-item:first-of-type{border-top:none}
.nho-item-mark{flex:0 0 auto;font-size:1.05rem;color:var(--txs)}
.nho-item-done .nho-item-mark{color:#16a34a}
.nho-item-lbl{flex:1 1 auto;font-size:.88rem;color:var(--txm);line-height:1.35}
.nho-item-done .nho-item-lbl{color:var(--txs)}
.nho-type{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--txs);background:var(--bg);border-radius:4px;padding:.05rem .3rem;margin-left:.2rem}
.nho-go{flex:0 0 auto;background:rgba(214,69,69,.1);border:1px solid rgba(214,69,69,.28);border-radius:var(--rs);color:var(--lo-bt);font-weight:700;font-size:.76rem;padding:.28rem .6rem;cursor:pointer;white-space:nowrap}
.nho-go:hover{background:var(--lo-btn);color:var(--lo-btn-tx);border-color:var(--lo)}
.nho-check{flex:0 0 auto;background:var(--bg);border:1px solid var(--bdr);border-radius:var(--rs);color:var(--txs);font-weight:600;font-size:.76rem;padding:.28rem .6rem;cursor:pointer;white-space:nowrap}
.nho-check:hover{border-color:#16a34a;color:#16a34a}
.nho-checked{background:#16a34a;border-color:#16a34a;color:#fff}
.nho-mgr-note{font-size:.8rem;color:var(--txs);margin-top:1rem;padding-top:.8rem;border-top:1px solid var(--bdr)}

/* ── THE FLOW — patient flow (home hero) ────────────────────
   The curriculum drawn as lanes of flow: one lane per track, grouped by
   pillar, running freely where a track is complete and stalling into crimson
   where it has not been started. Canvas is painted by js/48-flow.js. */
.hd-windows{position:relative;width:330px;height:212px;border-radius:var(--r);overflow:hidden;
  box-shadow:0 12px 34px rgba(0,0,0,.34), inset 0 0 0 1px rgba(214,69,69,.12)}
.hd-windows canvas{display:block;width:100%;height:100%}
@media(max-width:991px){.hd-windows{width:292px;height:188px}}
@media(max-width:575px){.hd-windows{width:100%;max-width:320px;height:176px}}

/* ── LOGIN ENTRANCE (Lit Windows) ───────────────────────────
   Replaces the old GSAP timeline with dependency-free CSS. The .lfx-enter
   class is added by js/46 on init and removed on teardown, so the sequence
   replays each time the login page is shown. Reduced motion: js/46 never
   adds the class, so everything renders in its natural, final state. */
@keyframes lfx-rise { from { opacity:0; transform:translateY(22px) } to { opacity:1; transform:none } }
@keyframes lfx-drop { from { opacity:0; transform:translateY(-16px) } to { opacity:1; transform:none } }
@keyframes lfx-fade { from { opacity:0 } to { opacity:1 } }

.lfx-enter .login-card   { animation:lfx-rise .9s cubic-bezier(.16,1,.3,1) .30s both }
.lfx-enter .login-logo-row{ animation:lfx-drop .7s cubic-bezier(.16,1,.3,1) .12s both }
.lfx-enter .login-title  { animation:lfx-rise .55s cubic-bezier(.16,1,.3,1) .70s both }
.lfx-enter .login-sub    { animation:lfx-rise .55s cubic-bezier(.16,1,.3,1) .80s both }
.lfx-enter .login-field:nth-of-type(1){ animation:lfx-rise .5s cubic-bezier(.16,1,.3,1) .92s both }
.lfx-enter .login-field:nth-of-type(2){ animation:lfx-rise .5s cubic-bezier(.16,1,.3,1) 1.02s both }
.lfx-enter .login-btn    { animation:lfx-rise .5s cubic-bezier(.16,1,.3,1) 1.14s both }
.lfx-enter .liq-login-attribution{ animation:lfx-fade .6s ease 1.30s both }

@media (prefers-reduced-motion: reduce){
  .lfx-enter .login-card,.lfx-enter .login-logo-row,.lfx-enter .login-title,
  .lfx-enter .login-sub,.lfx-enter .login-field,.lfx-enter .login-btn,
  .lfx-enter .liq-login-attribution{ animation:none }
}

/* Hover readout for the lit-windows hero — track name + progress. */
.hd-win-tip{
  position:fixed;z-index:var(--z-toast);pointer-events:none;display:none;
  background:rgba(6,32,32,.96);border:1px solid rgba(214,69,69,.34);
  border-radius:var(--rs);padding:.45rem .7rem;box-shadow:0 10px 28px rgba(0,0,0,.45);
  font-size:.78rem;line-height:1.35;white-space:nowrap;
}
.hd-win-tip b{display:block;color:#fff;font-weight:700}
.hd-win-tip span{color:rgba(226,178,62,.95);font-weight:600;font-size:.72rem}

/* ── QI TOOLS ─────────────────────────────────────────────────
   Styles for the quality-improvement tool suite (js/37-tools-qi.js):
   the QIP builder, PDSA tracker, run chart, and change-idea library.
   Everything here reuses the existing token set — no new colours. */

/* Repeating editable rows (QIP priorities, PDSA cycles) */
.qi-rows{display:flex;flex-direction:column;gap:.9rem}
.qi-row{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.9rem 1rem;border-left:4px solid var(--lp-m)}
.qi-row-hdr{display:flex;align-items:center;gap:.6rem;margin-bottom:.7rem;flex-wrap:wrap}
.qi-row-num{flex-shrink:0;width:1.6rem;height:1.6rem;border-radius:50%;background:var(--lp);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:800}
.qi-row-title{flex:1;min-width:0;font-weight:700;color:var(--heading);font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qi-row-gap{flex-shrink:0;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;
  color:var(--wa-bt);background:var(--wa-l);border-radius:2rem;padding:.15rem .55rem}
.qi-row-ok{flex-shrink:0;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;
  color:var(--ok-bt);background:var(--ok-l);border-radius:2rem;padding:.15rem .55rem}
.qi-row-dec{flex-shrink:0;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;
  border-radius:2rem;padding:.15rem .55rem}
.qi-dec-adopt{color:var(--ok-bt);background:var(--ok-l)}
.qi-dec-adapt{color:var(--wa-bt);background:var(--wa-l)}
.qi-dec-abandon{color:var(--er-bt);background:var(--er-l)}
.qi-row-del{flex-shrink:0;background:transparent;border:none;color:var(--txm);cursor:pointer;padding:.2rem .35rem;
  border-radius:var(--rs);font-size:.8rem;line-height:1}
.qi-row-del:hover{background:var(--er-l);color:var(--er-bt)}
.qi-req{font-weight:600;font-size:.68rem;color:var(--txm);text-transform:none;letter-spacing:0}
.qi-gaps{margin-top:.55rem;font-size:.78rem;font-weight:600;color:var(--wa)}
.qi-hint{margin-top:.4rem;font-size:.79rem;color:var(--txs);line-height:1.45}

/* PDSA stage separators */
.qi-stage{display:flex;align-items:center;gap:.6rem;margin:.9rem 0 .5rem}
.qi-stage::after{content:'';flex:1;height:1px;background:var(--bdr)}
.qi-stage-tag{font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--lp-m)}

/* Segmented choice controls */
.qi-seg{display:inline-flex;border:1px solid var(--bdr);border-radius:var(--rs);overflow:hidden;flex-wrap:wrap}
.qi-seg-btn{background:var(--wh);border:none;border-right:1px solid var(--bdr);padding:.4rem .85rem;
  font-size:.82rem;font-weight:700;color:var(--txs);cursor:pointer;transition:background .15s,color .15s}
.qi-seg-btn:last-child{border-right:none}
.qi-seg-btn:hover{background:var(--g100)}
.qi-seg-btn.qi-on-ok{background:var(--ok);color:#fff}
.qi-seg-btn.qi-on-warn{background:var(--wa);color:#fff}
.qi-seg-btn.qi-on-er{background:var(--er);color:#fff}

/* Run chart */
.rc-wrap{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.75rem;overflow-x:auto}
.rc-svg{width:100%;min-width:420px;height:auto;display:block}
.rc-line{fill:none;stroke:var(--lp-m);stroke-width:2}
.rc-median{stroke:var(--txm);stroke-width:1.5;stroke-dasharray:5 4}
.rc-target{stroke:var(--lo);stroke-width:1.5;stroke-dasharray:2 3}
.rc-dot{stroke:var(--wh);stroke-width:1.5}
.rc-above{fill:var(--lp)}
.rc-below{fill:var(--lo)}
.rc-on{fill:var(--txm)}
.rc-lbl{font-size:10px;font-weight:700;fill:var(--txm);font-family:var(--fb)}
.rc-lbl-target{fill:var(--lo-h)}
.rc-stats{display:flex;gap:1.1rem;flex-wrap:wrap;margin:.6rem 0 .8rem;font-size:.82rem;color:var(--txs)}
.rc-stats strong{color:var(--heading)}
/* Series tabs — the run chart tracks several measures, each saved separately. */
.rc-tabs{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1rem;padding-bottom:.6rem;border-bottom:1px solid var(--bdr)}
.rc-tab{display:inline-flex;align-items:center;gap:.45rem;background:var(--wh);border:1px solid var(--bdr);
  border-radius:2rem;padding:.34rem .8rem;font-size:.83rem;font-weight:700;color:var(--txs);cursor:pointer;transition:all .18s}
.rc-tab:hover{border-color:var(--lo);color:var(--lo-h)}
.rc-tab em{font-weight:600;color:var(--txm)}
.rc-tab-on{background:var(--lp);border-color:var(--lp);color:#fff}
.rc-tab-on em{color:rgba(255,255,255,.72)}
.rc-tab-on:hover{color:#fff;border-color:var(--lp)}
.rc-tab-n{font-size:.7rem;font-weight:800;background:var(--g100);color:var(--txs);border-radius:1rem;padding:.05rem .42rem}
.rc-tab-on .rc-tab-n{background:rgba(255,255,255,.22);color:#fff}
.rc-tab-add{border-style:dashed;color:var(--txm)}
/* Points that form the detected signal, drawn larger with a ring so the run the
   verdict is talking about can be found on the chart. */
.rc-sig{stroke:var(--lo);stroke-width:2.5}

/* Change idea library */
.qi-chips{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.5rem}
.qi-chip{background:var(--wh);border:1px solid var(--bdr);border-radius:2rem;padding:.28rem .8rem;
  font-size:.79rem;font-weight:700;color:var(--txs);cursor:pointer;transition:all .15s}
.qi-chip:hover{border-color:var(--g400);color:var(--tx)}
.qi-chip-on{background:var(--lp);border-color:var(--lp);color:#fff}
.qi-tiers{display:flex;flex-direction:column;gap:1rem}
.qi-tier{border:1px solid var(--bdr);border-radius:var(--r);overflow:hidden;background:var(--wh)}
.qi-tier-hdr{display:flex;align-items:center;gap:.65rem;padding:.6rem .85rem;flex-wrap:wrap}
.qi-tier-ok{background:var(--ok-l);border-bottom:1px solid var(--bdr)}
.qi-tier-warn{background:var(--wa-l);border-bottom:1px solid var(--bdr)}
.qi-tier-er{background:var(--er-l);border-bottom:1px solid var(--bdr)}
.qi-tier-rank{flex-shrink:0;width:1.5rem;height:1.5rem;border-radius:var(--rs);background:rgba(0,0,0,.12);
  display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:800;color:var(--tx)}
.qi-tier-label{font-weight:800;color:var(--tx);font-size:.88rem}
.qi-tier-desc{font-size:.78rem;color:var(--txs);flex:1;min-width:12rem}
.qi-idea{display:flex;align-items:center;gap:.7rem;padding:.55rem .85rem;border-top:1px solid var(--bdr);flex-wrap:wrap}
.qi-idea:first-of-type{border-top:none}
.qi-idea-driver{flex-shrink:0;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;
  color:var(--lp-m);min-width:9rem}
.qi-idea-text{flex:1;min-width:14rem;font-size:.87rem;color:var(--txs);line-height:1.45}
.qi-idea-add{flex-shrink:0}
@media (max-width:640px){
  .qi-idea-driver{min-width:0}
  .qi-tier-desc{min-width:0}
}
body.liq-dark .qi-tier-rank{background:rgba(255,255,255,.14);color:var(--tx)}

/* ── THE RETROSPECTIVE ────────────────────────────────────────────────────
   Two-phase shift simulation (js/50-retro-data.js, js/51-retro.js). The
   two-column shift view is the whole idea made visual: care on the left,
   record on the right, one budget across both. On narrow screens they stack —
   the tension is in the minute count, not in the geometry. */
.rt-pick{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.35rem;box-shadow:var(--sh);margin-bottom:1rem}
.rt-pick-head{display:flex;gap:.9rem;align-items:flex-start}
.rt-pick-head>i{font-size:1.6rem;color:var(--lo);line-height:1.2}
.rt-pick-title{font-family:var(--fd);font-size:1.22rem;color:var(--heading)}
.rt-pick-sub{font-size:.87rem;color:var(--txs);margin-top:.15rem}
.rt-meta{display:flex;flex-wrap:wrap;gap:.4rem .95rem;margin-top:.85rem;font-size:.78rem;color:var(--txm)}
.rt-meta i{color:var(--lp-m)}
.rt-mods{margin-top:.6rem;font-size:.78rem;color:var(--txm)}

.rt-steps{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem}
.rt-step{font-size:.72rem;font-weight:700;padding:.24rem .6rem;border-radius:999px;background:var(--g100);color:var(--txm)}
.rt-step-done{background:var(--lp-t);color:var(--lp-m)}
.rt-step-now{background:var(--lp);color:#fff}

.rt-beat{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.5rem;box-shadow:var(--sh)}
.rt-clock{font-size:.76rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--lo-bt)}
.rt-beat-title{font-family:var(--fd);font-size:1.5rem;color:var(--heading);margin:.2rem 0 .6rem}
.rt-sit{font-size:.95rem;line-height:1.65;color:var(--txs)}

.rt-budget{margin:1.2rem 0 1rem}
.rt-budget-top{display:flex;justify-content:space-between;align-items:baseline;font-size:.78rem;color:var(--txm);margin-bottom:.3rem}
.rt-budget-left{font-weight:800;color:var(--lp-m)}
.rt-budget-left.rt-tight{color:var(--er-bt)}
.rt-bar{height:7px;border-radius:999px;background:var(--g100);overflow:hidden}
.rt-bar-fill{height:100%;background:linear-gradient(90deg,var(--lp-m),var(--lo));transition:width .18s ease}

.rt-cols{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
@media(max-width:820px){.rt-cols{grid-template-columns:1fr}}
.rt-col-head{font-size:.76rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;margin-bottom:.5rem;display:flex;align-items:center;gap:.4rem}
.rt-col-care{color:var(--lp-m)}
.rt-col-rec{color:var(--lo-h)}

.rt-move{display:flex;align-items:flex-start;gap:.7rem;width:100%;text-align:left;background:var(--wh);
  border:1px solid var(--bdr);border-radius:var(--r);padding:.6rem .75rem;margin-bottom:.5rem;
  font-size:.87rem;color:var(--tx);line-height:1.4;cursor:pointer;transition:border-color .14s,background .14s}
.rt-move:hover{border-color:var(--lp-m)}
.rt-move-cost{flex:0 0 auto;font-weight:800;font-size:.9rem;color:var(--lp);min-width:2.1rem;text-align:center}
.rt-move-cost small{display:block;font-size:.55rem;font-weight:700;color:var(--txm);letter-spacing:.04em}
.rt-move-label{flex:1 1 auto}
.rt-move-tick{flex:0 0 auto;color:var(--g400);font-size:1rem}
.rt-on{border-color:var(--lp);background:var(--lp-t)}
.rt-on .rt-move-tick{color:var(--lp)}
.rt-broke{opacity:.45}
.rt-broke:hover{border-color:var(--bdr)}
.rt-req{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;background:var(--er-l);color:var(--er-bt);padding:.08rem .34rem;border-radius:var(--rs)}
.rt-late{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;background:var(--wa-l);color:var(--wa-bt);padding:.08rem .34rem;border-radius:var(--rs)}

/* ── Review ────────────────────────────────────────────────────────────── */
.rt-frame{display:flex;gap:.85rem;background:var(--lp);color:#fff;border-radius:var(--rl);padding:1.3rem 1.4rem;margin-bottom:1.2rem;font-size:.95rem;line-height:1.65}
.rt-frame>i{font-size:1.5rem;opacity:.85}
.rt-scores{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.1rem}
@media(max-width:640px){.rt-scores{grid-template-columns:1fr}}
.rt-score{background:var(--wh);border:1px solid var(--bdr);border-left-width:5px;border-radius:var(--rl);padding:1.15rem 1.3rem;box-shadow:var(--sh)}
.rt-score-ok{border-left-color:var(--ok)}
.rt-score-wa{border-left-color:var(--wa)}
.rt-score-er{border-left-color:var(--er)}
.rt-score-n{font-family:var(--fd);font-size:2.5rem;line-height:1;color:var(--heading)}
.rt-score-n small{font-size:1rem;color:var(--txm)}
.rt-score-l{font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--lp-m);margin-top:.3rem}
.rt-score-b{font-size:.8rem;color:var(--txm);margin-top:.35rem;line-height:1.5}
.rt-close{background:var(--lo-p);border:1px solid var(--lo-l);border-radius:var(--rl);padding:1.15rem 1.3rem;font-size:.92rem;line-height:1.7;color:var(--txs);margin-bottom:1.5rem}
.rt-issues-head{font-family:var(--fd);font-size:1.25rem;color:var(--heading);margin:1.6rem 0 .8rem}
.rt-find{display:flex;gap:.7rem;align-items:flex-start;background:var(--wh);border:1px solid var(--bdr);
  border-radius:var(--r);padding:.75rem .9rem;margin-bottom:.5rem;font-size:.87rem;line-height:1.55;color:var(--txs)}
.rt-find>i{color:var(--wa);font-size:1rem;margin-top:.1rem}
.rt-find-hard{border-color:var(--er-l);background:rgba(220,38,38,.04)}
.rt-find-hard>i{color:var(--er)}
.rt-find-good{border-color:var(--ok-l);background:rgba(22,163,74,.05)}
.rt-find-good>i{color:var(--ok)}
.rt-rev-beat{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.15rem 1.3rem;margin-bottom:.9rem;box-shadow:var(--sh)}
.rt-rev-cols{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem;margin:.7rem 0 .3rem}
@media(max-width:820px){.rt-rev-cols{grid-template-columns:1fr}}
.rt-rev-head{font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--txm);margin-bottom:.35rem}
.rt-rev-col ul{margin:0;padding-left:1.05rem;font-size:.86rem;line-height:1.6;color:var(--txs)}
.rt-rev-col li{margin-bottom:.25rem}
.rt-rev-record{border-left:3px solid var(--lo-l);padding-left:.9rem}
.rt-none{list-style:none;margin-left:-1.05rem;color:var(--er-bt);font-weight:700}
.rt-bad{color:var(--er-bt)}
.rt-after{margin-top:1.3rem}
.rt-after-head{font-size:.76rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--txm);margin-bottom:.5rem}
.rt-after .btn-liq{margin:0 .4rem .4rem 0}

body.liq-dark .rt-pick,body.liq-dark .rt-beat,body.liq-dark .rt-move,
body.liq-dark .rt-score,body.liq-dark .rt-find,body.liq-dark .rt-rev-beat{background:var(--wh);border-color:var(--bdr)}
body.liq-dark .rt-bar{background:var(--g200)}

/* ── The Retrospective: the unit band ─────────────────────────────────────
   js/48-flow.js in its 'band' variant. The signature field, doing work: load
   is the share of the beat's minutes committed, so the unit behind you backs
   up while you stand at one bedside. Ambient at rest rather than static — an
   idle unit is still a unit. */
.rt-unit{margin:1.25rem 0 .25rem;border-radius:var(--r);overflow:hidden;border:1px solid var(--bdr);background:#071018}
.rt-flow{display:block;width:100%;height:78px}
@media(max-width:640px){.rt-flow{height:60px}}
.rt-unit-cap{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;
  padding:.4rem .7rem;background:rgba(7,16,24,.92);font-size:.72rem;color:rgba(255,255,255,.5)}
.rt-unit-state{font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#8fd3ff}
.rt-unit-state.rt-unit-warn{color:#ffb27f}
.rt-unit-state.rt-unit-hot{color:#ff7a68}

/* ── PRIVACY STATEMENT ─────────────────────────────────────────────────────
   Long-form prose, which this product has almost none of elsewhere. Measure
   is held near 70 characters and everything reads from the tokens so both
   themes and both contrast modes follow without a second palette. */
#page-privacy p,#page-privacy li{font-size:.96rem;line-height:1.72;color:var(--txs);max-width:70ch}
#page-privacy ul,#page-privacy ol{padding-left:1.3rem;margin:.7rem 0 1.1rem}
#page-privacy li{margin:.35rem 0}
#page-privacy kbd{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82em;
  background:var(--g100);border:1px solid var(--bdr);border-bottom-width:2px;border-radius:4px;
  padding:.05rem .35rem;color:var(--tx)}
.priv-h{font-family:var(--fd);font-size:1.3rem;font-weight:700;color:var(--heading);
  margin:2.4rem 0 .6rem;padding-top:1.4rem;border-top:1px solid var(--bdr)}
.priv-h:first-of-type{border-top:0;padding-top:0}
.priv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:.9rem;margin:1.1rem 0 1.4rem}
.priv-cell{background:var(--g100);border:1px solid var(--bdr);border-radius:var(--r);padding:1rem 1.1rem}
.priv-cell h3{font-size:.74rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  color:var(--lo-bt);margin:0 0 .4rem}
.priv-cell p{font-size:.89rem;margin:0;color:var(--txs)}
.priv-table-wrap{overflow-x:auto;margin:1.1rem 0 1.3rem}
.priv-table{width:100%;border-collapse:collapse;font-size:.92rem;min-width:30rem}
.priv-table th{text-align:left;font-size:.7rem;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;color:var(--txm);padding:.5rem .8rem .5rem 0;border-bottom:2px solid var(--bdr)}
.priv-table td{padding:.65rem .8rem .65rem 0;border-bottom:1px solid var(--bdr);color:var(--txs);
  vertical-align:top}
.priv-table td:first-child{font-weight:700;color:var(--tx);white-space:nowrap;padding-right:1.4rem}
