:root{
  --lp:#331638;--lp-d:#1f0e25;--lp-m:#4a2255;--lp-t:rgba(51,22,56,.07);
  --lo:#f47f20;--lo-h:#d96d10;--lo-l:rgba(244,127,32,.13);--lo-p:rgba(244,127,32,.06);
  --bg:#f7f4fa;--wh:#fff;--g100:#f0ecf5;--g200:#ddd6e6;--g400:#9b8faa;--g600:#6b5778;
  --tx:#1a0f22;--txs:#5a4866;--txm:#766a85;--bdr:#e4dcea;/* --txm darkened from #9b8faa to meet WCAG AA (4.6:1 on --bg, 5.0:1 on white); 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;
  /* THE STATUS COLOUR AS TEXT IS A DIFFERENT COLOUR FROM THE STATUS COLOUR
     AS AN OBJECT. --ok/--wa/--er/--inf above are tuned as borders, fills and
     radio dots, where 3:1 is the bar. They were also being read as small bold
     TEXT in 330 places — badge labels, chip text, step counters, KPI figures —
     where the bar is 4.5:1, and every one of the four missed it. MEASURED
     against every background each is actually painted on, which includes the
     matching -l tint, because a badge is `background:var(--ok-l);color:var(--ok)`:

       light   --ok 2.83   --wa 2.73   --er 3.95   --inf 4.24   (worst case)
       dark    --ok 3.93   --wa 3.96   --er 2.89   --inf 2.65

     Each fails in exactly ONE theme, which is why a single set of values
     cannot fix it and why the -text tokens are redefined per theme below.
     Values are the smallest lightness move from the base hue that clears
     4.5:1 on the WORST background the token is actually used on — enumerate
     the consumers first, then tune to the strictest one among them.
     Ratios in the comments are the worst case, not the best. */
  --ok-text:#117c38;   /* 4.55 on --g100, 4.82 on --ok-l, 5.30 on card */
  --wa-text:#a25904;   /* 4.54 on --g100, 4.75 on --wa-l, 5.29 on card */
  --er-text:#cc2121;   /* 4.52 on --er-l, 4.73 on --g100, 5.52 on card */
  --inf-text:#1d5dea;  /* 4.52 on --inf-l, 4.73 on --g100, 5.52 on card */
  --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(51,22,56,.09);--shm:0 4px 20px rgba(51,22,56,.13);--shl:0 8px 32px rgba(51,22,56,.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);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);color:#fff;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(244,127,32,.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(244,127,32,.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)}
.nav-xp{display:flex;align-items:center;gap:.5rem;background:rgba(255,255,255,.08);border-radius:2rem;padding:.3rem .7rem;cursor:pointer}
.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(244,127,32,.10) 0%,transparent 65%),radial-gradient(ellipse 40% 60% at 5% 80%,rgba(74,34,85,.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(244,127,32,.35);color:var(--lo);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);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}
.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);font-size:.83rem;font-weight:700;cursor:pointer;border:none;background:none;padding:0;margin-bottom:1rem}
.back-btn:hover{color:#f9a05a}
.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);color:#fff;border-color:var(--lo)}.btn-or:hover{background:var(--lo-h);border-color:var(--lo-h);color:#fff}
.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);color:#fff;border-color:var(--ok)}.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-h)}.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);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, and every
   level started at x=0. Measured fully expanded it was 30 screens and 3,001
   elements for one pillar; this is ~1.7 screens and ~300. */

/* -- 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 ---------------------- */
/* The pillar/search accent used as h2 TEXT directly on the page background is
   a stricter constraint than the same colour used for a ring, border or
   badge fill elsewhere — WCAG requires 3:1 even for large bold text. Two of
   the three raw pillar accents fail that in one theme each (Conversations'
   gold in light mode: 2.18:1; Practice's purple in dark mode: 2.54:1), and
   the orange used for cross-pillar search results fails it in light mode too
   (2.44:1) — same class of bug, found while fixing the other two. --pa itself
   is untouched and keeps doing its job everywhere else (rings, card rules,
   the pillar-bar selected indicator); this is a second, text-safe variant
   used only here, set alongside --pa wherever a context strip renders.
   Values hue-preserved.

   SIX places render the accent as text, not one. This comment used to say
   "used only here", and only the h2 read --pa-text; the pillar-bar glyph, the
   selected pillar's label, the panel eyebrow, a card's pillar label and its
   path step kept the raw accent. Those are 11-16px, so their threshold is 4.5:1
   rather than the heading's 3:1, and they measured 2.04-3.25:1. All six read
   --pa-text now, which raised the bar the tokens themselves have to clear:
   they were tuned to ~3.8-4:1, ample for a 26px heading and short for 12px
   bold. --pt-conversations (light) was 4.17 and --pt-practice / --pt-systems
   (dark) were 3.43 and 3.78. Retuned to ~4.7:1 on the surface each actually
   sits on — white in light, the card #1e1530 in dark.

   --pt-search is the exception and stays as it was: the only thing that reads
   it is the 26px search heading, so 3:1 is its real threshold and 4.29:1 is
   already margin. --pa itself is untouched and keeps doing its job everywhere
   else (rings, card rules, the pillar-bar selected indicator). */
:root{--pt-conversations:#926e10;--pt-practice:#7b358f;--pt-systems:#0e7490;--pt-search:#c35d0a}
body.liq-dark{--pt-conversations:#d4a017;--pt-practice:#b268c7;--pt-systems:#1191b4;--pt-search:#f47f20}

.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}

/* -- 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. */
.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}
.acx-card::before{content:'';position:absolute;left:0;top:14px;bottom:14px;width:2px;
  background:var(--pa);border-radius:2px;opacity:.5;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-text);font-weight:700}
.acx-inprog{color:var(--lo);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}
.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-text);font-size:.85rem}

/* -- level 4: the detail panel ----------------------------------------- */
.acx-scrim{position:fixed;inset:0;background:rgba(31,14,37,.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-text)}
.acx-mrow.inprog .acx-mnum{color:var(--lo)}
.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);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}

@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}
}

/* -- 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(244,127,32,.08);box-shadow:0 0 0 3px rgba(244,127,32,.25);
  animation:tier-section-flash-anim 1.6s ease-out}
@keyframes tier-section-flash-anim{
  0%{background:rgba(244,127,32,.16)}
  100%{background:transparent;box-shadow:0 0 0 3px rgba(244,127,32,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}
}
/* Narrow phones. Measured at 320px, this card was 350px wide inside a 296px
   row and pushed the whole page sideways by 42px — the only element on the
   redesigned Academy that still did. 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. */
.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}
}
body.liq-dark .cl-item:hover{background:rgba(255,255,255,.04)}




/* 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}
.acad-no-results.show{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-text);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);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(51,22,56,.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)}
.scen-setup{background:rgba(51,22,56,.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}
.scen-opt.correct .opt-ltr{background:var(--ok);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){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)}
/* 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-text)}.exp-er{color:var(--er-text)}
.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-text)}
.score-ring.s-or{border-color:var(--lo);color:var(--lo)}
.score-ring.s-er{border-color:var(--er);color:var(--er-text)}
/* 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-text)}
.qrev-badge-er{background:var(--er-l);color:var(--er-text)}
.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-text);font-weight:700}
.qrev-wrong{background:var(--er-l);color:var(--er-text);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-h);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-text)}
.mod-notes-clear{background:none;border:none;color:var(--er-text);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)}
.sv-btn.sv-del{color:var(--er-text)}
.sv-btn.sv-del:hover{border-color:var(--er);background:var(--er-l)}
.tool-save-row{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap;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)}
.bm-btn.active{border-color:var(--lo);color:var(--lo);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(244,127,32,.25);border-color:var(--lo);color:var(--lo)}
/* 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);color:#fff;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)}
/* A collapsed panel must leave the ACCESSIBILITY TREE, not just the eye.
   max-height:0 with overflow:hidden hides content visually and from nothing
   else: a screen reader met the Lexicon as 374 definitions of unbroken
   prose, with no way to tell where one term ended and the next began.
   visibility:hidden is what removes it, and it is delayed by the length of
   the collapse so the closing animation is still visible. */
.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}
/* Bootstrap supplies .visually-hidden, but Bootstrap is CDN-loaded and this
   app degrades rather than fails when a CDN is unreachable. A screen-reader-only
   label that becomes visible body text on a blocked CDN is a worse outcome than
   twenty bytes of duplication. */
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;
  padding:0!important;margin:-1px!important;overflow:hidden!important;
  clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
/* The disclosure control. Looks exactly like the div it replaced; the point
   is that it is a button, so it takes focus and announces its state. */
.term-card-btn{flex:1;min-width:0;display:block;width:100%;text-align:left;
  background:none;border:0;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer}
.term-card-btn .term-prev{display:block}
.term-card-btn:focus-visible{outline:2px solid var(--lo);outline-offset:3px;border-radius:var(--rs)}
.lex-mod-link{display:flex;align-items:center;gap:.7rem;background:var(--lp-t);border:1px solid rgba(51,22,56,.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);font-size:.85rem;flex-shrink:0}
body.liq-dark .lex-mod-link{background:rgba(244,127,32,.07);border-color:rgba(244,127,32,.18)}
body.liq-dark .lex-mod-link:hover{background:rgba(244,127,32,.16);border-color:rgba(244,127,32,.4)}
body.liq-dark .lex-mod-cta{color:var(--lo)}
.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(51,22,56,.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-h);font-size:.69rem;font-weight:700;padding:.13rem .48rem;border-radius:3px;cursor:pointer;margin:.13rem;transition:background .2s}
.rel-chip:hover{background:rgba(244,127,32,.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);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}
.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-text);background:var(--ok-l)}.d-yn-y:hover{background:var(--ok);color:#fff}
.d-yn-n{border-color:var(--er);color:var(--er-text);background:var(--er-l)}.d-yn-n:hover{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(244,127,32,.25)}
.streak-card-flame{font-size:2.4rem;filter:drop-shadow(0 2px 8px rgba(244,127,32,.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,.45);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,.35);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(244,127,32,.15);border:1px solid rgba(244,127,32,.35);border-radius:2rem;padding:.22rem .7rem;font-size:.75rem;font-weight:700;color:var(--lo);margin-bottom:.8rem;cursor:pointer}
.streak-pending-today:hover{background:rgba(244,127,32,.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,.6);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);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-text)}
.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);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);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)}
.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-text)}
.cl-warn{background:var(--wa-l);border-left:4px solid var(--wa)}.cl-warn i{color:var(--wa-text)}
.cl-er{background:var(--er-l);border-left:4px solid var(--er)}.cl-er i{color:var(--er-text)}
.cl-ok{background:var(--ok-l);border-left:4px solid var(--ok)}.cl-ok i{color:var(--ok-text)}
.s-lbl{font-size:.71rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--lo);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)}
.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);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);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-text);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);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:#1e1530;color:#e8e0f2}

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:#e8e0f2;
  --bg:#100b16;--wh:#1e1530;--g100:#271c33;--g200:#362848;--g400:#7a6a8a;--g600:#9a8aaa;
  /* --txm was #8878a0 — 4.35:1 on a dark-mode card (--wh), just under the
     4.5:1 AA floor for normal text. Lightened to clear it with margin
     (5.07:1 on card, 5.65:1 on page bg); this is a token, so it fixes every
     use of muted/secondary text in dark mode at once. */
  --tx:#e8e0f2;--txs:#c0b0d0;--txm:#9384a8;--bdr:#362848;
  --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);
  /* The dark-mode half. Note --ok and --wa were already fine here and --er
     and --inf were not — the opposite of light mode. Measured against the
     dark card, page and g100, and against each -l tint COMPOSITED over all
     three, since those tints are rgba and the ratio depends on what is
     underneath. --ok/--wa/--er/--inf themselves stay unchanged: they are
     correct as borders and fills and nothing here should restyle those. */
  --ok-text:#18b050;   /* 4.54 on tint-over-g100, 4.88 on tint-over-card, 6.11 on card */
  --wa-text:#e98006;   /* 4.54 on tint-over-g100, 4.91 on tint-over-card, 6.27 on card */
  --er-text:#e76d6d;   /* 4.52 on tint-over-g100, 4.90 on tint-over-card, 5.65 on card */
  --inf-text:#6692f1;  /* 4.54 on tint-over-g100, 4.89 on tint-over-card, 5.76 on card */
  --lo-l:rgba(244,127,32,.20);--lo-p:rgba(244,127,32,.10);--lp-t:rgba(244,127,32,.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,#0d0812,#2a1540)}
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)}
body.liq-dark .filter-btn.active{background:var(--lo);border-color:var(--lo);color:#fff}
/* 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 ───────────────────────────────────────── */
body.liq-hc{
  --tx:#ffffff;--txs:#f0e8ff;--txm:#ccbbee;--bdr:#7755cc;
  --lo:#ffaa44;--lo-h:#ff8800;--lo-l:rgba(255,170,68,.25);
}
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 ──────────────────────────────────────────── */
/* Fill vars — nav is always dark so --logo-light = white.
   Add class .logo-on-light to parent for light-background use. */
:root { --logo-light: #ffffff; }
.logo-on-light { --logo-light: var(--lp); }
body.liq-dark .logo-on-light { --logo-light: var(--tx); }

/* Class-based, not id-based: the rectangular mark is embedded twice (navbar +
   login) so it cannot be addressed by a single id. See _loadLogoForPDF (js/19). */
.logo-rect-svg .st0, .logo-sq-svg .st0 { fill: var(--logo-light); transition: fill .25s; }
.logo-rect-svg .st1, .logo-sq-svg .st1 { fill: var(--lo);         transition: fill .25s; }
.logo-rect-svg { height: 44px; width: auto; display: block; }
.logo-sq-svg   { height: 38px; width: 38px; display: block; }


/* ── 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(244,127,32,.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-h);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)}
.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(244,127,32,.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);border-color:var(--lo);color:#fff}
.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)}.plnr-step.done .plnr-lbl{color:var(--ok-text)}
.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-text)}

/* ── 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-text);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-h);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-text)}
.inv-badge.fb-partial{border-color:var(--wa);background:var(--wa-l);color:var(--wa-text)}
.inv-badge.fb-no{border-color:var(--er);background:var(--er-l);color:var(--er-text)}


/* ── 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(51,22,56,.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(244,127,32,.18);color:var(--lo-h);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-text);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-h);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);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-text)}
.wt-24h{background:var(--wa-l);color:var(--wa-text)}
.wt-72h{background:var(--inf-l);color:var(--inf-text)}
.wt-ongoing{background:var(--ok-l);color:var(--ok-text)}
.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-text);font-size:1.25rem;flex-shrink:0}
.wsib-deadline-text{font-size:.87rem;font-weight:700;color:var(--er-text)}
.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-h);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);color:#fff;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);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);border-color:var(--lo);color:#fff}
.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(--txm);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);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-text)}
.tt-24h{background:var(--wa-l);color:var(--wa-text)}
.tt-5d{background:var(--inf-l);color:var(--inf-text)}
.tt-ongoing{background:var(--ok-l);color:var(--ok-text)}
.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-text);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-text);flex-shrink:0;margin-top:.15rem}


/* ── LOGIN PAGE ──────────────────────────────────────────── */
.liq-login-page{
  min-height:100vh;background:#0d0812;
  display:flex;align-items:center;justify-content:center;
  padding:2rem 1rem;position:relative;overflow:hidden;
}
/* WebGL constellation canvas — full-bleed, behind the card (js/32). */
.login-fx-canvas{
  position:absolute;inset:0;width:100%;height:100%;display:block;
  z-index:0;pointer-events:none;
}
/* 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}
/* .logo-rect-svg is display:block globally, so the row's text-align:center
   can't centre it — auto side margins do. Height lives here (not inline on
   the SVG) so this rule is the single source of truth for the login logo. */
.login-logo-row .logo-rect-svg{height:58px;width:auto;margin-left:auto;margin-right:auto}

/* ── CLIENT CO-BRAND ──────────────────────────────────────── */
/* "Labour IQ for <client>", shown only in a client's copy (js/08b-client.js).
   Both places it sits are dark in every theme — this page and the navbar,
   whose --lp no theme redefines — while a client's logo is usually drawn for
   white paper, so by default it sits on a light plate. --client-accent is a
   decorative rule and never text: a colour picked to match someone's logo
   carries no contrast promise against these surfaces. */
.client-cobrand{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.55rem .7rem;margin-top:1.1rem}
.client-cobrand-for{font-size:.74rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.62)}
.client-cobrand-rule{width:3px;height:1.7rem;border-radius:2px;background:var(--client-accent,rgba(255,255,255,.28))}
.client-cobrand-logo{height:40px;width:auto;max-width:170px;object-fit:contain;display:block}
.client-cobrand-name{font-family:var(--fd);font-size:1.08rem;font-weight:700;color:#e8e0f2;line-height:1.25}
.client-logo-plate{background:#fff;border-radius:6px;padding:4px 8px}
/* Never shrunk under its content: a flex item allowed to shrink here let the
   logo spill over the first menu item. */
.nav-cobrand{display:flex;align-items:center;gap:.5rem;flex-shrink:0;margin:0 auto 0 -.35rem;padding-left:.75rem;border-left:1px solid rgba(255,255,255,.22)}
.nav-cobrand-logo{height:30px;width:auto;max-width:112px;object-fit:contain;display:block}
.nav-cobrand-logo.client-logo-plate{padding:3px 6px;border-radius:5px}
.nav-cobrand-name{color:rgba(255,255,255,.84);font-weight:700;font-size:.84rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:9rem}
/* From 992px the menu is laid out in the bar itself, and until 1200px it
   leaves no room for the co-brand at all (measured). Below 992px the menu
   folds away and the co-brand has the bar to itself again. */
@media(min-width:992px) and (max-width:1199.98px){.nav-cobrand{display:none!important}}
/* With a logo, the name joins it only where the bar has room to spare. */
.nav-cobrand.has-logo .nav-cobrand-name{display:none}
@media(min-width:1400px){.nav-cobrand.has-logo .nav-cobrand-name{display:block}}
.login-card{
  background:rgba(26,16,40,.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:#e8e0f2;
  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:#e8e0f2;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:#f47f20;box-shadow:0 0 0 3px rgba(244,127,32,.28);background:rgba(255,255,255,.08);outline:none}
.login-inp::placeholder{color:rgba(255,255,255,.5);font-weight:400}
.login-btn{
  width:100%;background:#f47f20;border:none;border-radius:.65rem;
  padding:.82rem;font-family:'Nunito',system-ui,sans-serif;
  font-size:1rem;font-weight:800;color:#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(244,127,32,.32);animation:login-btn-glow 3.4s ease-in-out infinite}
.login-btn:hover{background:#e06e10;transform:translateY(-1px);box-shadow:0 12px 32px rgba(244,127,32,.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(244,127,32,.28)}50%{box-shadow:0 10px 30px rgba(244,127,32,.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(244,127,32,.1);border:1px solid rgba(244,127,32,.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:#f47f20;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:#e8e0f2;
  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(244,127,32,.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);color:#fff}
.nav-user-role.role-hr{background:#2563eb;color:#fff}
.nav-user-role.role-supervisor{background:#7c3aed;color:#fff}
.nav-user-role.role-learner{background:var(--ok);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-text)}
.nav-user-item.danger i{color:var(--er-text)}
.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.
   Render sites emit style="--cat:<color>" instead of hard-coded inline colours,
   which dark-mode CSS could never override. */
.case-cat-tag,.lex-recent-cat,.lex-cat-chip,.track-case-chip-yr{
  background:color-mix(in srgb, var(--cat, var(--lo)) 14%, transparent);
  color:color-mix(in srgb, var(--cat, var(--lo)) 70%, #1a0f22);
}
body.liq-dark .case-cat-tag,body.liq-dark .lex-recent-cat,body.liq-dark .lex-cat-chip,body.liq-dark .track-case-chip-yr{
  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-h);border-radius:3px;padding:.12rem .42rem}
.case-xp-chip.earned{background:var(--ok-l);color:var(--ok-text)}
/* ── 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(244,127,32,.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-text);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-text)}
.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(244,127,32,.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:#1e1530;
  color:#e8e0f2;
}
body.liq-dark .case-filter-select.is-active{
  background-color:rgba(244,127,32,.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-h);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}}
/* Track-level connected-cases panel inside the Academy track expansion.
   Sits below the modules list with the track's accent colour as a left
   border, so the panel reads as belonging to its track without competing
   with the modules visually. */






@media (max-width:600px){

}
.liq-dark .track-cases-panel{background:var(--g100)}

/* ── 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-text);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(244,127,32,.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)}

/* ── 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-text)}
.case-card-status-wrong{background:var(--lo-l);color:var(--lo-h)}

/* ── 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-h)}
.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);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);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-h);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)!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,.45);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,.3);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)}
.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-text);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-h)}
.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);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-text);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),#5b2d8e);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);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,#331638 0%,#5b2d8e 60%,#f47f20 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:#f47f20;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:#e06e10;transform:translateY(-1px);box-shadow:0 6px 24px rgba(244,127,32,.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)}
.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}
.role-admin{background:rgba(124,58,237,.12);color:#7c3aed}
.role-manager{background:rgba(37,99,235,.12);color:#2563eb}
.role-hr{background:rgba(22,163,74,.12);color:#16a34a}
.role-supervisor{background:rgba(217,119,6,.12);color:#d97706}
.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-text)}
.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-text);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)}
.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-text);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-text)}
body.liq-dark .esa-result-num{color:var(--lo)}
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-text)}
.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(244,127,32,.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);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-h);padding:.13rem .5rem;border-radius:99px;margin-left:.4rem;vertical-align:middle}
body.liq-dark .dl-badge{background:rgba(244,127,32,.18);color:var(--lo)}
.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);color:#fff;border-color:var(--lo)}
body.liq-dark .lib-act-btn.lib-act-dl{color:var(--lo)}
body.liq-dark .lib-act-btn.lib-act-dl:hover{background:var(--lo);color:#fff}
/* ── 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)}
.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(244,127,32,.18);color:var(--lo)}
.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)}
body.liq-dark .lib-act-btn.lib-act-cf:hover{background:var(--lo);color:#fff;border-color:var(--lo)}
/* ── Track cheat-sheet button (Academy track header) ── */


body.liq-dark .track-cheatsheet-btn{background:rgba(244,127,32,.16);color:var(--lo);border-color:rgba(244,127,32,.4)}
body.liq-dark .track-cheatsheet-btn:hover{background:var(--lo);color:#fff}
@media (max-width:540px){
  /* On narrow screens hide the label, keep the icon — track header gets crowded */


}
/* ── 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);color:#fff;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)}
body.liq-dark .lex-also-chip:hover{background:var(--lo);color:#fff}
.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(244,127,32,.18);
}
.lex-popover{
  position:fixed;
  background:var(--wh);
  border:1px solid var(--bdr);
  border-radius:var(--r);
  box-shadow:0 8px 28px rgba(51,22,56,.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:#1a0f22;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);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-h)}
@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(244,127,32,.05))}
body.liq-dark .dev-tools-group{background:linear-gradient(135deg,rgba(217,119,6,.08),rgba(244,127,32,.08))}
.dev-tools-title{display:flex;align-items:center;gap:.45rem;color:var(--wa-text)!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-text);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-text)!important;border-color:var(--er-l)!important}
.dev-tools-danger:hover{background:var(--er-l)!important;color:var(--er-text)!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(244,127,32,.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)!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)}
.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-h);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(244,127,32,.1),rgba(51,22,56,.06));border:1.5px solid rgba(244,127,32,.4);border-radius:var(--r);padding:.85rem 1rem}
body.liq-dark .ob-banner{background:linear-gradient(135deg,rgba(244,127,32,.16),rgba(255,255,255,.03))}
.ob-banner-ico{width:2.4rem;height:2.4rem;border-radius:50%;background:var(--lo);color:#fff;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);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)}
.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-text);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-text)}
.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:#fff;background:var(--lp);padding:.25rem .65rem;border-radius:99px}
body.liq-dark .ob-week-pill{background:var(--lo)}
.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-text)}
.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-h);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-text)}
.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-text);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-text);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-text)}
.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-text)}
.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-text)}
.hd-card-urgency-review{border-color:var(--lo);background:linear-gradient(135deg,rgba(244,127,32,.04),var(--wh))}
body.liq-dark .hd-card-urgency-review{background:linear-gradient(135deg,rgba(244,127,32,.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(51,22,56,.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)}
.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);color:#fff}
.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(244,127,32,.06));border:1px solid rgba(244,127,32,.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)}
.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)}
.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-text)}
.nc-factor-row.neg .nc-factor-delta{color:var(--er-text)}
@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(51,22,56,.04),rgba(244,127,32,.07));border:1.5px solid rgba(244,127,32,.3);border-radius:var(--r);padding:1.1rem 1.3rem;margin-bottom:1.25rem}
body.liq-dark .rev-card{background:linear-gradient(135deg,rgba(244,127,32,.08),rgba(244,127,32,.14));border-color:rgba(244,127,32,.4)}
.rev-card-ico{width:2.6rem;height:2.6rem;border-radius:50%;background:var(--lo);color:#fff;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-text);padding:.18rem .55rem;border-radius:99px;display:inline-flex;align-items:center;gap:.3rem}
.rev-card-cap{font-size:.74rem;color:var(--wa-text);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-text);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)}
.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);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-text);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-text)}
.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-text)}
.rev-result-status.er{background:var(--er-l);color:var(--er-text)}
.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)}
.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);border-color:var(--lo);color:#fff}
.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(244,127,32,.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)}
.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(51,22,56,.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);color:#fff;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(--g400);user-select:none}
body.liq-dark .liq-attribution strong,body.liq-dark .liq-attribution .liq-attr-mark{color:var(--lo)}
.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)}
.dash-kpi-sub{font-size:.7rem;color:var(--txs);margin-top:.05rem}
.dash-kpi-sub.s-er{color:var(--er-text);font-weight:700}
.dash-kpi-sub.s-wa{color:var(--wa-text);font-weight:700}
.dash-kpi-sub.s-ok{color:var(--ok-text);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(51,22,56,.06),rgba(244,127,32,.08));border:1.5px solid rgba(244,127,32,.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-text);border:1px solid rgba(217,119,6,.3)}
.path-due-overdue{background:var(--er-l);color:var(--er-text);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-text);background:var(--ok-l)}
.path-step-chip.active{border-color:var(--lo);color:var(--lo-h);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(244,127,32,.15);color:var(--lo-h);margin-left:.4rem;flex-shrink:0}


/* 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-text);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-h);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);color:#fff}
.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-h);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);padding:.28rem .65rem;border-radius:.4rem;background:rgba(244,127,32,.12);border:1px solid rgba(244,127,32,.25);white-space:nowrap;cursor:pointer;transition:all .15s;text-decoration:none}
.nav-admin-link:hover{background:rgba(244,127,32,.2);color:var(--lo)}


/* ── 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)}
.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-text)}
.ann-success{background:var(--ok-l);color:var(--ok-text)}
/* 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-text)}
.audit-edit{background:rgba(37,99,235,.1);color:#2563eb}
.audit-delete{background:var(--er-l);color:var(--er-text)}
.audit-settings{background:rgba(124,58,237,.1);color:#7c3aed}
.audit-system{background:var(--g100);color:var(--txm)}
.audit-learner{background:rgba(244,127,32,.12);color:var(--lo-h)}
/* ── 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);border-color:var(--lo);color:#fff}
.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-text);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-text);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)}
body.liq-dark .hd-tod-term{color:var(--tx)}
body.liq-dark .hd-tod-cta{color:var(--lo)}

/* 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(244,127,32,.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)}
.hd-recap-streak{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:800;color:var(--lo);background:rgba(244,127,32,.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,.65);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(244,127,32,.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(244,127,32,.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(244,127,32,.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);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(244,127,32,.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(244,127,32,.5))}
.daily-streak-info{font-size:.82rem;color:rgba(255,255,255,.8)}
.daily-streak-num{font-weight:800;color:var(--lo);font-size:1rem}
.daily-xp-pill{margin-left:auto;background:rgba(244,127,32,.2);border:1px solid rgba(244,127,32,.4);border-radius:2rem;padding:.2rem .65rem;font-size:.76rem;font-weight:700;color:var(--lo)}
.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}
.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);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(244,127,32,0);transition:box-shadow .2s}
.daily-option-clickable:hover::before{box-shadow:0 0 0 2px rgba(244,127,32,.18)}
.daily-action-hint{display:inline-flex;align-items:center;gap:.35rem;background:rgba(244,127,32,.1);color:var(--lo-h);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(244,127,32,.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)}
.sprint-btn.correct{background:rgba(22,163,74,.12);border-color:var(--ok);color:var(--ok-text)}
.sprint-btn.wrong{background:rgba(220,38,38,.1);border-color:var(--er);color:var(--er-text)}
.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%,#ff9b3d 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(244,127,32,.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(244,127,32,.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(244,127,32,.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%,#5b1f6c 100%);border:2px solid rgba(244,127,32,.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(244,127,32,.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(244,127,32,.7));animation:sm-flame-glow 1.6s ease-in-out infinite alternate}
@keyframes sm-flame-glow{0%{filter:drop-shadow(0 0 12px rgba(244,127,32,.5))}100%{filter:drop-shadow(0 0 26px rgba(244,127,32,.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(244,127,32,.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(244,127,32,.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);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(244,127,32,.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)}
.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(244,127,32,.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(244,127,32,.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(244,127,32,.10),rgba(244,127,32,.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);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(244,127,32,.12)}
body.liq-dark .daily-review-banner-title{color:#fcd34d}
.daily-review-pill{display:inline-flex;align-items:center;gap:.25rem;background:rgba(244,127,32,.18);color:var(--lo);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-text)}
.daily-complete-review-strip.is-new{background:rgba(244,127,32,.12);border:1px solid rgba(244,127,32,.4);color:var(--lo)}
.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);color:#fff;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(244,127,32,.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-text)}
.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-text)}
.daily-call-quality.q-wrong{background:rgba(220,38,38,.22);color:var(--er-text)}
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(244,127,32,.12)}
body.liq-dark .daily-call-insight strong{color:var(--lo)}

/* 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}

/* Limited-preview guests: hide the nav entries they can't reach anyway (the
   router also redirects them), so the preview reads as a coherent smaller
   product rather than a full one with dead links. Academy + Lexicon stay. */
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{display:none!important}
/* The mobile bottom bar has no Lexicon entry and every other destination is
   restricted, so for a limited guest it would be four buttons that all bounce
   back to the Academy. Hide it — the collapsed navbar still gives them the two
   pages they can actually use. (LTC IQ leaves this bar in place; that's a gap
   in the original, not a pattern worth copying.) */
body.liq-limited-guest #mob-nav{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:#1e1530;color:#e8e0f2}
/* 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);color:#fff}
.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:#1e1530;color:#e8e0f2}
.liq-dark .path-add-btn{background:rgba(244,127,32,.25);border-color:var(--lo);color:var(--lo)}
.liq-dark .path-add-btn:hover{background:var(--lo);color:#fff}
/* 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)}
.liq-dark .toc-item:hover{color:var(--lo)}
.liq-dark .takeaway-box h6{color:var(--lo)}
.liq-dark .mob-nav-btn.active{color:var(--lo)}

/* ── 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(244,127,32,.13);color:var(--lo-h)}
.th-pill-saved{background:rgba(22,163,74,.12);color:var(--ok-text)}
.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);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);border-color:var(--lo);color:#fff}
.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(244,127,32,.05) 0%,rgba(244,127,32,.12) 100%);border:1.5px solid rgba(244,127,32,.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(244,127,32,.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-text)}
.att-scan-status.att-scan-duplicate{background:var(--wa-l);color:var(--wa-text)}
.att-scan-status.att-scan-error{background:var(--er-l);color:var(--er-text)}
/* 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(244,127,32,.1);border-color:rgba(244,127,32,.4);color:var(--lo-h)}
.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);color:#fff;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-text)}
/* 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-h);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-h);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(244,127,32,.08) 0%,rgba(244,127,32,.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(244,127,32,.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);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(244,127,32,.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-text);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-text)}
.scn-hist-row.scn-hist-warn>i{color:var(--wa-text)}
.scn-hist-row.scn-hist-err>i{color:var(--er-text)}
.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(244,127,32,.12)}
.scn-precheck-cta-icon{flex-shrink:0;width:3rem;height:3rem;border-radius:50%;background:var(--lo);color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.4rem;box-shadow:0 4px 10px rgba(244,127,32,.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);color:#fff;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-text)}
.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(244,127,32,.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-text);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-text);border-color:var(--er)}
.ps-audio-no:hover{background:var(--er-l);color:var(--er-text);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-text)}
.ps-final-warn .ps-final-icon{color:var(--wa-text)}
.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-text)}
.ps-summary-row .ps-row-bad{color:var(--er-text)}
.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(244,127,32,.13) 0%,rgba(244,127,32,.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(244,127,32,.05) 0%,rgba(244,127,32,.12) 100%);border:1.5px solid rgba(244,127,32,.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(244,127,32,.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-text)}
.cam-status-duplicate{background:var(--wa-l);color:var(--wa-text)}
.cam-status-error{background:var(--er-l);color:var(--er-text)}

/* 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(244,127,32,.08) 0%,rgba(244,127,32,.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-text)}
.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(244,127,32,.3)}
.att-stats-cell-warn .att-stats-num{color:var(--wa-text)}
.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-text)}
.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(51,22,56,.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-h);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-text)}
.att-sess-pill-deleted{background:var(--er-l);color:var(--er-text)}
.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-text)}
.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);color:#fff;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-text);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-text)}

/* ── 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-h);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(244,127,32,.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(244,127,32,.10),rgba(123,53,143,.06));border:1px solid rgba(244,127,32,.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(244,127,32,.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(244,127,32,.12),rgba(123,53,143,.10));border-color:rgba(244,127,32,.35)}
body.liq-dark .dash-welcome-icon{background:rgba(244,127,32,.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-h);border-radius:2rem;padding:.15rem .55rem;margin-top:.4rem;cursor:help;border:1px solid rgba(244,127,32,.25);text-transform:uppercase;letter-spacing:.04em}
.cap-override-badge i{font-size:.65rem}
body.liq-dark .cap-override-badge{background:rgba(244,127,32,.18);color:var(--lo);border-color:rgba(244,127,32,.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)}
}

/* ── A11Y: keyboard focus + reduced-motion coverage ─────────── */
/* 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}
@media (prefers-reduced-motion:reduce){
  /* Looping animations not covered by the feature-scoped blocks above:
     streak-flame glow tiers + their card backgrounds, trophy glow,
     attendance/scanner pulse icons, camera reticle pulse. */
  .skt-1 .hd-streak-flame,.skt-2 .hd-streak-flame,.skt-3 .hd-streak-flame,
  .skt-4 .hd-streak-flame,.skt-5 .hd-streak-flame,.skt-4,.skt-5,
  .tc-trophy,.att-scan-ico,.scn-test-ico,.ps-scan-ico,.cam-reticle{animation:none!important}
}

/* ── CERTIFICATION EXAMS (js/31) ─────────────────────────────── */
.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-text);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-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-h)}
.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)}
.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)}
/* Dark mode: the hardcoded status/banner text colours sit on tinted
   backgrounds that go dark in dark mode — lighten the text to match. */
body.liq-dark .exam-status-pass,body.liq-dark .exam-certified{color:#86efac}
body.liq-dark .exam-status-try{color:#fcd34d}
.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);color:#fff;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}

/* ── HOME HERO (Living Curriculum Orbit) ─────────────────────
   Three interchangeable "views" the user switches via the corner control:
     • orbit  — all-track orbit (completed orange, in-progress amber, current pings)
     • aurora — drifting purple→orange light + floating motes behind the greeting
     • pulse  — a learning-rhythm heartbeat sweeping across the band
   Dark purple hero — reads on both light and dark themes. All motion is
   killed by the reduced-motion media query below. */
.hd-hero{position:relative;border:2px solid rgba(244,127,32,.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(244,127,32,.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:#ffd9b3;box-shadow:0 2px 8px rgba(244,127,32,.5)}
.hd-hero-eyebrow{font-size:.74rem;font-weight:800;letter-spacing:.06em;color:#f8c891;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:#cdbfe6;margin-top:.4rem}
.hd-hero-quest{display:inline-flex;align-items:center;gap:.7rem;margin-top:1.15rem;max-width:100%;
  background:var(--lo);color:#fff;border:none;border-radius:99px;padding:.6rem 1.1rem .6rem .9rem;cursor:pointer;
  text-align:left;box-shadow:0 6px 18px rgba(244,127,32,.42);transition:transform .15s,box-shadow .15s}
.hd-hero-quest:hover{transform:translateY(-2px);box-shadow:0 9px 24px rgba(244,127,32,.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(244,127,32,.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:#cdbfe6}
.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:#ffd257}
.hd-lgd.notstarted{background:#c3b8e0}
.hd-lgd.now{background:#fff;box-shadow:0 0 0 2px rgba(244,127,32,.6)}
/* Pillar legend — the two orbital shells; outline dots = rings, not statuses */
.hd-orbit-pillars{margin-top:.28rem;font-size:.64rem;color:#b7abcf;opacity:.92}
/* Base border is a NEUTRAL grey, not a pillar colour. Every live pillar sets
   its own border-color below; the neutral is what an unmapped pillar falls
   back to, so a missing PILLAR_LEGEND_CLASS entry (js/13-home.js) renders a
   visibly plain dot instead of one indistinguishable from The Conversations.
   The base used to be #d9a84e — identical to .conv — which made that failure
   silent. Do not point it back at a real pillar's colour. */
.hd-pill{width:9px;height:9px;border-radius:50%;flex-shrink:0;display:inline-block;background:transparent;border:2px solid #7a7480}
.hd-pill.conv{border-color:#d9a84e}
.hd-pill.prac{border-color:#b892d0}
.hd-pill.sys{border-color:#5fc7d4}
.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 = 2x node-radius in _renderHeroOrbit; border tinted per pillar */
.hd-r1{width:96px;height:96px;border-color:rgba(212,160,23,.5)}
.hd-r2{width:168px;height:168px;border-color:rgba(184,146,208,.45)}
.hd-r3{width:240px;height:240px;border-color:rgba(95,199,212,.45)}
.hd-spin{position:absolute;top:50%;left:50%;width:0;height:0;transform-origin:0 0}
/* Both shells rotate the same direction; inner fastest -> outer slowest (Kepler) */
.hd-o1{animation:hd-spin 26s linear infinite}
.hd-o2{animation:hd-spin 48s linear infinite}
.hd-o3{animation:hd-spin 72s linear infinite}
@keyframes hd-spin{to{transform:rotate(360deg)}}
/* Node states — all high-contrast on the dark purple field:
   not started = light lavender · in progress = amber · done = orange · current = white ping */
.hd-orbit .node{position:absolute;width:13px;height:13px;border-radius:50%;transform:translate(-50%,-50%);
  background:#c3b8e0;border:1.5px solid #ece5fb;box-shadow:0 0 6px rgba(195,184,224,.5);cursor:default}
.hd-orbit .node.started{background:#ffd257;border-color:#ffe9a8;box-shadow:0 0 9px rgba(255,210,87,.75)}
.hd-orbit .node.done{background:var(--lo);border-color:#ffd9b3;box-shadow:0 0 11px rgba(244,127,32,.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:60px;height:60px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;text-align:center;font-family:var(--fd);font-weight:800;font-size:.56rem;
  color:#fff;background:radial-gradient(circle at 35% 30%,var(--lp-m),var(--lp-d));border:1.5px solid rgba(244,127,32,.5);
  box-shadow:0 0 22px rgba(51,22,56,.9);line-height:1.15}
.hd-core::after{content:'';position:absolute;inset:-6px;border-radius:50%;border:1px solid rgba(244,127,32,.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:#6a3d7a;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(244,127,32,.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:#e6dcfa}
.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:#f8c891;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),#ffb066)}
.hd-astat-name{font-size:.7rem;color:#cdbfe6;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:#cdbfe6;font-weight:700}
.hd-astat-cap{font-size:.6rem;color:#cdbfe6;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}
}

/* ── PRACTITIONER TOOLKIT (js/33) — printable template cards ────────────────
   Mirrors the LTC IQ Administrator Toolkit card list, on the purple/orange
   palette. Stacks the download button full-width on narrow screens. */
.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%}}
