:root{
  --lp:#2b3a67;--lp-d:#1e2a4d;--lp-m:#3b4f86;--lp-t:rgba(43,58,103,.07);
  --lo:#d65d86;--lo-h:#c04971;--lo-l:rgba(214,93,134,.13);--lo-p:rgba(214,93,134,.06);
  --bg:#f5f6fb;--wh:#fff;--g100:#eef0f7;--g200:#d8dcea;--g400:#8f96b0;--g600:#5c6485;
  --tx:#131726;--txs:#4f566e;--txm:#8f96b0;--bdr:#dfe2ee;
  --ok:#16a34a;--ok-l:#dcfce7;--er:#dc2626;--er-l:#fee2e2;
  --wa:#d97706;--wa-l:#fef3c7;--inf:#2563eb;--inf-l:#dbeafe;
  --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(43,58,103,.09);--shm:0 4px 20px rgba(43,58,103,.13);--shl:0 8px 32px rgba(43,58,103,.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(214,93,134,.18)}
.lnav .dropdown-menu{background:var(--lp-m);border:1px solid rgba(255,255,255,.12);border-radius:var(--r);box-shadow:var(--shl);padding:.4rem}.dd-tier-item{position:relative}.dd-tier-item>.dropdown-item{display:flex;align-items:center;justify-content:space-between}.dd-tier-item>.dropdown-item .dd-tier-arrow{font-size:.65rem;opacity:.55;margin-left:.4rem;transition:transform .15s}.dd-submenu{display:none;position:absolute;left:100%;top:-4px;min-width:260px;background:var(--lp-m);border:1px solid rgba(255,255,255,.12);border-radius:var(--r);box-shadow:var(--shl);padding:.4rem;z-index:var(--z-dropdown)}.dd-tier-item:hover>.dd-submenu{display:block}.dd-tier-item:hover>.dropdown-item{background:rgba(255,255,255,.1);color:#fff}.dd-tier-item:hover>.dropdown-item .dd-tier-arrow{transform:rotate(0deg)}.dd-submenu-header{font-size:.6rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.4);padding:.4rem .9rem .25rem}.dd-submenu .dropdown-item{font-size:.82rem}.dd-pillar-header{font-size:.62rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.55);padding:.45rem .9rem .35rem;display:flex;align-items:center;list-style:none}
.lnav .dropdown-item{color:rgba(255,255,255,.75);font-size:.85rem;font-weight:600;border-radius:var(--rs);padding:.55rem .9rem;display:flex;align-items:center;gap:.6rem;transition:all .2s}
.lnav .dropdown-item:hover{background:rgba(214,93,134,.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(214,93,134,.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(214,93,134,.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 */
/* Two-pillar layout — The Practice (purple) + The Conversations (gold). */
/* Each pillar wraps its own tier progression. The pillar header band
   uses a soft tinted background and a colour-accented left edge so the
   visual separation is unmistakable. The --pillar-accent CSS variable
   is set inline by renderAcademy() for per-pillar colourisation. */
.acad-pillar{margin-bottom:3.5rem;padding:0 0 .5rem}
.acad-pillar:last-child{margin-bottom:1rem}
.acad-pillar-header{display:flex;align-items:center;gap:1.1rem;padding:1.1rem 1.4rem;margin-bottom:2rem;
  background-color:var(--bg);
  background-image:linear-gradient(135deg,color-mix(in srgb,var(--pillar-accent) 14%,transparent),color-mix(in srgb,var(--pillar-accent) 4%,transparent));
  border-left:5px solid var(--pillar-accent);border-radius:var(--rl);scroll-margin-top:90px;
  position:sticky;top:5rem;z-index:5;box-shadow:0 2px 12px rgba(0,0,0,.04);
  cursor:pointer;user-select:none;transition:filter .15s}
.acad-pillar-header:hover{filter:brightness(.98)}
.acad-pillar-chevron{font-size:1rem;color:var(--pillar-accent);transition:transform .25s;flex-shrink:0;margin-left:.25rem;opacity:.7}
.acad-pillar-chevron.open{transform:rotate(180deg)}
.acad-pillar-content{display:none}
.acad-pillar-content.open{display:block}
.acad-pillar-glyph{width:3.2rem;height:3.2rem;border-radius:50%;background:var(--pillar-accent);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:1.6rem;flex-shrink:0;
  box-shadow:0 4px 14px color-mix(in srgb,var(--pillar-accent) 35%,transparent)}
.acad-pillar-meta{flex:1;min-width:0}
.acad-pillar-title{font-family:var(--fd);font-size:clamp(1.3rem,2.5vw,1.7rem);color:var(--heading);
  margin:0 0 .25rem;line-height:1.15;letter-spacing:-.005em}
.acad-pillar-sub{font-size:.86rem;color:var(--txs);line-height:1.5;margin:0;max-width:640px}
.acad-pillar-progress{flex-shrink:0;text-align:right;color:var(--pillar-accent)}
.acad-pillar-progress-num{font-family:var(--fd);font-size:1.7rem;font-weight:800;line-height:1;letter-spacing:-.02em}
.acad-pillar-progress-lbl{font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--txm);margin-top:.2rem}
@media (max-width:600px){
  .acad-pillar-header{flex-wrap:wrap;gap:.85rem;padding:.95rem 1rem}
  .acad-pillar-glyph{width:2.6rem;height:2.6rem;font-size:1.3rem}
  .acad-pillar-progress{margin-left:auto}
}
body.liq-dark .acad-pillar-header{background-color:var(--bg);background-image:linear-gradient(135deg,color-mix(in srgb,var(--pillar-accent) 18%,transparent),color-mix(in srgb,var(--pillar-accent) 6%,transparent));box-shadow:0 2px 12px rgba(0,0,0,.25)}
/* Tier grouping */
.tier-section{margin-bottom:2.5rem;scroll-margin-top:90px;border-radius:var(--rl);transition:background .25s,box-shadow .25s}
.tier-section-flash{background:rgba(214,93,134,.08);box-shadow:0 0 0 3px rgba(214,93,134,.25);animation:tier-section-flash-anim 1.6s ease-out}
@keyframes tier-section-flash-anim{
  0%{background:rgba(214,93,134,.16);box-shadow:0 0 0 6px rgba(214,93,134,.35)}
  100%{background:rgba(214,93,134,0);box-shadow:0 0 0 0 rgba(214,93,134,0)}
}
.tier-header{display:flex;align-items:center;gap:.75rem;padding:.6rem 0;margin-bottom:1.1rem;border-bottom:2px solid var(--bdr);cursor:pointer;user-select:none;transition:border-color .18s;position:relative}
.tier-header:hover{border-bottom-color:var(--lo)}
/* Tier progress bar — overlays the bottom border. The colored portion
   represents completed modules; the gray portion of the existing
   border-bottom shows through for the remainder. Width is set inline
   via --tier-progress (a percentage) and color via --tier-progress-color
   (the tier's accent), both populated by renderAcademy. */
.tier-header::after{content:'';position:absolute;left:0;bottom:-2px;height:2px;width:var(--tier-progress,0%);background:var(--tier-progress-color,var(--lo));pointer-events:none;transition:width .35s ease}
.tier-label{font-size:.65rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--txm)}
.tier-pip{width:2rem;height:2rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:800;flex-shrink:0;color:#fff}
.tier-progress-text{margin-left:auto;font-size:.75rem;font-weight:700;color:var(--txm)}
.tier-chevron{font-size:.85rem;color:var(--txm);transition:transform .25s;flex-shrink:0;margin-left:.4rem}
.tier-chevron.open{transform:rotate(180deg)}
.tier-content{display:none}
.tier-content.open{display:block}
/* Tier summary chips — shown when a tier is collapsed so the user can see
   the track names inside without expanding the tier. Hidden by default;
   become visible when .tier-section.tier-collapsed is set. Clicking a chip
   expands the parent tier. */
.tier-summary-chips{display:none;flex-wrap:wrap;gap:.4rem;margin:-.4rem 0 1.4rem;padding-left:2.75rem}
.tier-section.tier-collapsed .tier-summary-chips{display:flex}
.tier-summary-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .7rem;border-radius:99px;background:var(--g100);border:1px solid var(--bdr);font-size:.78rem;font-weight:600;color:var(--tx);cursor:pointer;transition:background .15s,border-color .15s,color .15s;line-height:1}
.tier-summary-chip:hover{background:var(--wh);border-color:var(--lp);color:var(--lp)}
.tier-summary-chip i{font-size:.7rem;opacity:.9}
.tier-summary-chip i.bi-check-circle-fill{color:var(--ok);opacity:1}
.tier-summary-chip i.bi-play-circle-fill{color:var(--lo);opacity:1}
.tier-summary-chip i.bi-lock-fill{color:var(--g400);opacity:.7}
@media (max-width:600px){
  .tier-summary-chips{padding-left:0;margin-top:.2rem}
}
/* Collapsible track */
.track-collapse-hdr{display:flex;align-items:center;gap:.9rem;padding:.9rem 1.1rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);cursor:pointer;transition:all .2s;margin-bottom:.5rem;user-select:none}
.track-collapse-hdr:hover{box-shadow:var(--shm);border-color:rgba(0,0,0,.18)}
.track-collapse-hdr.track-open{border-radius:var(--rl) var(--rl) 0 0;margin-bottom:0;border-bottom-color:transparent}
.track-collapse-hdr.track-all-done{background:rgba(22,163,74,.04);border-color:rgba(22,163,74,.25)}
.track-chevron{margin-left:auto;font-size:.8rem;color:var(--txm);transition:transform .25s;flex-shrink:0}
.track-chevron.open{transform:rotate(180deg)}
.track-badge{width:2.2rem;height:2.2rem;border-radius:var(--rs);display:flex;align-items:center;justify-content:center;font-size:1rem;flex-shrink:0}
.track-modules-wrap{display:none;background:var(--wh);border:1px solid var(--bdr);border-top:none;border-radius:0 0 var(--rl) var(--rl);padding:.75rem .75rem .75rem;margin-bottom:.5rem}
.track-modules-wrap.open{display:block}
/* Top row — wraps the Continue Learning + Spaced Review cards so they sit
   side-by-side on wider screens. Stacks below 900px. The row\'s margin-
   bottom replaces the cards\' individual margins (overridden to 0 inside
   the row). When only one card is present, it takes full width naturally
   via flex:1 1 0 on the single child. */
.acad-top-row{display:flex;gap:1.4rem;margin-bottom:1.4rem;align-items:stretch;flex-wrap:wrap}
.acad-top-row > .cl-card,
.acad-top-row > .rev-card{flex:1 1 0;margin-bottom:0;min-width:0}
@media (max-width:900px){
  .acad-top-row{flex-direction:column;gap:1rem;margin-bottom:1.2rem}
  .acad-top-row > .cl-card,
  .acad-top-row > .rev-card{flex:1 1 auto}
}
/* Continue Learning card — sits above the search/filter bar (after the
   path banner and review card if those are present). Shows up to 3
   in-progress modules with a Resume button, OR up to 2 recommended
   starting modules for brand-new users. Hidden when the user has
   completed everything. */
.cl-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);margin-bottom:1.4rem;box-shadow:var(--sh);overflow:hidden}
.cl-card-header{display:flex;align-items:center;gap:.5rem;padding:.85rem 1.2rem;border-bottom:1px solid var(--bdr);font-weight:700;font-size:.85rem;color:var(--tx);background:linear-gradient(135deg,color-mix(in srgb,var(--lo) 10%,transparent),transparent);letter-spacing:-.005em}
.cl-card-header i{color:var(--lo);font-size:1rem}
.cl-card-body{padding:.2rem 0}
.cl-item{display:flex;align-items:center;gap:1rem;padding:.85rem 1.2rem;cursor:pointer;transition:background .15s}
.cl-item:hover{background:var(--g100)}
.cl-item:not(:last-child){border-bottom:1px solid var(--bdr)}
.cl-item-num{width:2.4rem;height:2.4rem;border-radius:var(--rs);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.95rem;flex-shrink:0}
.cl-item-info{flex:1;min-width:0}
.cl-item-title{font-weight:700;font-size:.95rem;color:var(--tx);line-height:1.3;margin-bottom:.15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cl-item-meta{display:flex;align-items:center;gap:.6rem;font-size:.75rem;color:var(--txm);flex-wrap:wrap}
.cl-item-meta-track{font-weight:600;color:var(--tx)}
.cl-item-meta i{color:var(--lo);font-size:.7rem;margin-right:.15rem}
.cl-item-progress{height:4px;background:var(--g100);border-radius:2px;margin-top:.45rem;overflow:hidden;max-width:280px}
.cl-item-progress-fill{height:100%;border-radius:2px;transition:width .25s}
.cl-item-btn{flex-shrink:0;padding:.5rem .95rem;background:var(--lp);color:#fff;border:none;border-radius:2rem;font-size:.8rem;font-weight:700;cursor:pointer;transition:background .15s,transform .15s;display:flex;align-items:center;gap:.3rem;white-space:nowrap}
.cl-item-btn:hover{background:var(--lp-m);transform:translateX(2px)}
@media (max-width:600px){
  .cl-item{padding:.7rem .9rem;gap:.7rem}
  .cl-item-num{width:2rem;height:2rem;font-size:.85rem}
  .cl-item-btn{padding:.4rem .7rem;font-size:.75rem}
  .cl-item-meta{gap:.4rem}
  .cl-item-title{font-size:.88rem}
}
body.liq-dark .cl-item:hover{background:rgba(255,255,255,.04)}
/* Compact view — tightens module-card density inside expanded tracks.
   Hides module subtitles, reduces padding, and shrinks the tag pips so
   the visible information is module number + title + status icons +
   duration/XP. Toggled via the .acad-compact class on .acad-content,
   persisted in localStorage as liq_acad_compact. */
#academy-content.acad-compact .mod-card{padding:.7rem 1rem;margin-bottom:.4rem}
#academy-content.acad-compact .mod-info p{display:none}
#academy-content.acad-compact .mod-info .xp-pip{font-size:.68rem;padding:.15rem .5rem}
#academy-content.acad-compact .mod-info .dur-pip{font-size:.68rem;padding:.15rem .5rem}
#academy-content.acad-compact .mod-info h5{font-size:.92rem;margin-bottom:.15rem}
#academy-content.acad-compact .mod-info .d-flex{margin-top:.2rem!important}
#academy-content.acad-compact .mod-num{width:2rem;height:2rem;font-size:.85rem}
/* 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{display:none;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:1rem}
.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}
.acad-expand-all{margin-left:auto;font-size:.78rem;color:var(--lo);cursor:pointer;font-weight:600;white-space:nowrap}
.acad-expand-all:hover{color:var(--lo-h);text-decoration:underline}
/* Hides tracks that don't match filter or search. Both classes hide the
   element via display:none; either condition is sufficient. */
.track-wrap.filter-hidden,
.track-wrap.search-hidden{display:none}
.tier-section.search-hidden{display:none}
.track-hdr{display:flex;align-items:center;gap:.9rem;margin-bottom:1.25rem;padding-bottom:.6rem;border-bottom:2px solid var(--bdr)}
.mod-card{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1.2rem 1.4rem;display:flex;align-items:center;gap:1rem;cursor:pointer;transition:all .2s;margin-bottom:.6rem;position:relative;overflow:hidden}
.mod-card.avail:hover{box-shadow:var(--shm);border-color:var(--lo)}
.mod-card.locked{cursor:not-allowed;opacity:.6}
.mod-card.done{border-color:var(--ok)}.mod-card.done::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--ok);pointer-events:none}
.mod-card.inprog{border-color:var(--lo)}.mod-card.inprog::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--lo);pointer-events:none}
.mod-num{width:2.4rem;height:2.4rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.87rem;flex-shrink:0}
.mn-a{background:var(--lo-l);color:var(--lo-h)}.mn-l{background:var(--g100);color:var(--g400)}.mn-d{background:var(--ok-l);color:var(--ok)}.mn-p{background:var(--lo-l);color:var(--lo-h)}
.mod-info{flex:1;min-width:0}
.mod-info h5{font-size:.95rem;margin:0 0 .12rem;font-family:var(--fd)}
.mod-info p{font-size:.81rem;color:var(--txs);margin:0}
.xp-pip{display:inline-flex;align-items:center;gap:.2rem;background:var(--lo-p);color:var(--lo-h);font-size:.69rem;font-weight:700;padding:.13rem .42rem;border-radius:3px}
.dur-pip{display:inline-flex;align-items:center;gap:.2rem;background:var(--g100);color:var(--txm);font-size:.69rem;font-weight:700;padding:.13rem .42rem;border-radius:3px;border:1px solid var(--bdr)}
.prog-bar{height:4px;background:var(--g100);border-radius:99px;overflow:hidden;margin-top:.35rem}
.prog-fill{height:100%;background:var(--lo);border-radius:99px;transition:width .4s}
.acad-xp-bar{background:var(--lp);border-top:1px solid rgba(255,255,255,.1);padding:1rem 0}
.xp-bar-wrap{height:8px;background:rgba(255,255,255,.15);border-radius:99px;overflow:hidden;margin:.35rem 0}
.xp-fill{height:100%;background:var(--lo);border-radius:99px;transition:width .8s cubic-bezier(.4,0,.2,1)}

/* MODULE VIEWER */
.mod-tabs{display:flex;background:var(--g100);border-radius:var(--r) var(--r) 0 0;border:1px solid var(--bdr);border-bottom:none;padding:.3rem .3rem 0}
.mod-tab{flex:1;border:none;background:transparent;font-family:var(--fb);font-size:.87rem;font-weight:700;padding:.6rem .5rem;border-radius:var(--rs) var(--rs) 0 0;cursor:pointer;color:var(--txs);display:flex;align-items:center;justify-content:center;gap:.35rem;transition:all .2s}
.mod-tab:hover{background:rgba(255,255,255,.7)}.mod-tab.active{background:var(--wh);color:var(--lp)}
.mod-tab .ck{color:var(--ok);font-size:.8rem}
.mod-panel{display:none;background:var(--wh);border:1px solid var(--bdr);border-radius:0 0 var(--rl) var(--rl);padding:1.75rem}
.mod-panel.active{display:block}
/* ── Reading layout: two-column on large screens ─── */
.reading-layout{display:block}
.reading-toc{display:none}
.reading-prose{width:100%}
@media(min-width:992px){
  .reading-layout{display:grid;grid-template-columns:190px 1fr;gap:2.5rem;align-items:start}
  .reading-toc{display:block;position:sticky;top:5rem}
  .reading-prose{max-width:700px}
}
.toc-label{font-size:.63rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--txm);margin-bottom:.65rem;padding-bottom:.4rem;border-bottom:1px solid var(--bdr)}
.toc-item{display:flex;align-items:flex-start;gap:.4rem;padding:.3rem 0 .3rem .55rem;font-size:.78rem;color:var(--txm);cursor:pointer;transition:color .15s,border-color .15s;line-height:1.35;border-left:2px solid transparent;margin-left:-.55rem}
.toc-item:hover{color:var(--lp)}
.toc-item.active{color:var(--lp);font-weight:700;border-left-color:var(--lo)}
.toc-num{font-weight:800;color:var(--lo);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(43,58,103,.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(43,58,103,.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)}

/* ── Certification Exam ─────────────────────────────────────── */
.btn-liq.btn-lg{padding:.7rem 1.5rem;font-size:1rem}
.exam-hero{text-align:center;padding:1.2rem 1rem .4rem}
.exam-hero-icon{width:64px;height:64px;border-radius:50%;background:var(--lo-l);color:var(--lo);display:flex;align-items:center;justify-content:center;font-size:2rem;margin:0 auto .7rem}
.exam-hero-title{font-family:var(--fd);color:var(--heading);font-size:1.7rem;margin:0 0 .3rem}
.exam-hero-sub{color:var(--txs);font-size:.95rem;max-width:44ch;margin:0 auto}
.exam-best{display:inline-block;margin-top:.7rem;background:var(--g100);color:var(--txs);border-radius:2rem;padding:.2rem .8rem;font-size:.82rem;font-weight:700}
.exam-certified{display:flex;gap:.6rem;align-items:flex-start;background:var(--ok-l);border:1px solid var(--ok);border-radius:var(--r);padding:.8rem 1rem;margin:1rem 0;color:#14532d}
.exam-certified i{color:var(--ok);font-size:1.2rem;flex-shrink:0}
.exam-rules{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.7rem;margin:1.1rem 0}
.exam-rule{display:flex;gap:.7rem;align-items:flex-start;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.8rem .9rem;box-shadow:var(--sh)}
.exam-rule i{color:var(--lo);font-size:1.25rem;flex-shrink:0;margin-top:.05rem}
.exam-rule strong{display:block;color:var(--heading);font-size:.92rem}
.exam-rule span{display:block;color:var(--txs);font-size:.82rem;margin-top:.1rem}
.exam-readiness{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:1rem;margin-bottom:1.1rem;box-shadow:var(--sh)}
.exam-readiness-bar-label{font-size:.86rem;color:var(--txs);margin-bottom:.45rem}
.exam-readiness-bar{height:9px;background:var(--g100);border-radius:2rem;overflow:hidden}
.exam-readiness-fill{height:100%;background:var(--lo);border-radius:2rem;transition:width .4s}
.exam-readiness-note{font-size:.82rem;color:var(--txm);margin:.55rem 0 0}
.exam-readiness-note.exam-ready{color:var(--ok)}
.exam-start-actions{display:flex;gap:.7rem;justify-content:center;flex-wrap:wrap;margin:1.3rem 0 .5rem}
.exam-bar{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;padding-bottom:.6rem;border-bottom:1px solid var(--bdr);margin-bottom:.8rem}
.exam-bar-title{font-family:var(--fd);color:var(--heading);font-size:1.1rem}
.exam-bar-title i{color:var(--lo)}
.exam-bar-meta{font-size:.84rem;color:var(--txs);font-weight:700}
.exam-grid{display:flex;flex-wrap:wrap;gap:.32rem}
.exam-pip{width:30px;height:30px;border-radius:var(--rs);border:1.5px solid var(--bdr);background:var(--wh);color:var(--txm);font-size:.78rem;font-weight:700;cursor:pointer;transition:all .15s}
.exam-pip:hover{border-color:var(--lo)}
.exam-pip-done{background:var(--lo-p);border-color:var(--lo);color:var(--lo-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)}
.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}
/* 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)}.exp-er{color:var(--er)}
.quiz-retry-note{color:var(--txm);font-size:.8rem;margin-top:.5rem}
/* Results header */
.qrev-header{display:flex;align-items:flex-start;gap:1.25rem;padding:1.5rem;background:var(--g100);border-radius:var(--r);margin-bottom:1.5rem;flex-wrap:wrap}
.qrev-summary{flex:1;min-width:200px}
/* Score ring (kept from before) */
.score-ring{width:88px;height:88px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;border:6px solid;font-family:var(--fd);flex-shrink:0}
.score-ring .sn{font-size:1.7rem;font-weight:700;line-height:1}
.score-ring .sd{font-size:.68rem;font-weight:700}
.score-ring.s-ok{border-color:var(--ok);color:var(--ok)}
.score-ring.s-or{border-color:var(--lo);color:var(--lo)}
.score-ring.s-er{border-color:var(--er);color:var(--er)}
/* Question review section */
.qrev-section{margin-top:.5rem}
.qrev-title{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--txm);margin-bottom:.85rem;display:flex;align-items:center}
.qrev-item{border:1px solid var(--bdr);border-radius:var(--r);padding:1rem 1.1rem;margin-bottom:.75rem;border-left-width:4px}
.qrev-ok{border-left-color:var(--ok)}
.qrev-er{border-left-color:var(--er)}
.qrev-hdr{display:flex;align-items:flex-start;gap:.65rem;margin-bottom:.65rem}
.qrev-badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:800;padding:.2rem .55rem;border-radius:2rem;flex-shrink:0;margin-top:.08rem}
.qrev-badge-ok{background:var(--ok-l);color:var(--ok)}
.qrev-badge-er{background:var(--er-l);color:var(--er)}
.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);font-weight:700}
.qrev-wrong{background:var(--er-l);color:var(--er);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)}
.mod-notes-clear{background:none;border:none;color:var(--er);font-size:.74rem;font-weight:700;cursor:pointer;padding:0;outline:none;line-height:1}
.mod-notes-clear:hover{text-decoration:underline}
.mod-note-ind{font-size:.7rem;color:var(--lo-h);background:var(--lo-l);border-radius:3px;padding:.08rem .32rem;font-weight:700;flex-shrink:0}
.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)}
.sv-btn.sv-del:hover{border-color:var(--er);background:var(--er-l)}
.tool-save-row{display:flex;justify-content:center;margin-top:1.2rem;padding-top:1rem;border-top:1px solid var(--bdr)}
.bm-btn{display:inline-flex;align-items:center;gap:.38rem;background:none;border:1.5px solid var(--bdr);border-radius:var(--rs);padding:.32rem .78rem;font-size:.8rem;font-weight:700;color:var(--txm);cursor:pointer;transition:all .18s;line-height:1}
.bm-btn:hover{border-color:var(--lo);color:var(--lo)}
.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(214,93,134,.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)}
.term-body{max-height:0;overflow:hidden;transition:max-height .35s ease,padding .3s}
.term-card.open .term-body{max-height:900px;padding:0 1.15rem 1.15rem}
.lex-mod-link{display:flex;align-items:center;gap:.7rem;background:var(--lp-t);border:1px solid rgba(43,58,103,.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(214,93,134,.07);border-color:rgba(214,93,134,.18)}
body.liq-dark .lex-mod-link:hover{background:rgba(214,93,134,.16);border-color:rgba(214,93,134,.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(43,58,103,.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(214,93,134,.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}
/* LTC decision-tool option list (CIS Reportability Triage etc.) */
.cis-opts{display:flex;flex-direction:column;gap:.5rem}
.cis-opt{width:100%;text-align:left;background:var(--wh);border:2px solid var(--bdr);border-radius:var(--r);padding:.7rem .9rem;font-family:var(--fb);font-size:.88rem;font-weight:600;cursor:pointer;color:var(--tx);display:flex;align-items:flex-start;gap:.6rem;transition:all .2s}
.cis-opt>i{color:var(--g400);font-size:1.05rem;flex-shrink:0;margin-top:.05rem}
.cis-opt:hover{border-color:var(--lo);background:var(--lo-p)}
.cis-opt.sel{border-color:var(--lo);background:var(--lo-l)}
.cis-opt.sel>i{color:var(--lo-h)}
.cis-steps{margin:.2rem 0 0 0;padding-left:1.15rem;font-size:.86rem;color:var(--tx)}
.cis-steps li{margin-bottom:.3rem}
/* LOC Funding-Envelope Calculator */
.fc-env{background:var(--wh);border:1.5px solid var(--bdr);border-radius:var(--r);padding:.7rem .85rem;margin-bottom:.7rem}
.fc-env-name{font-weight:700;font-size:.9rem;color:var(--tx);margin-bottom:.4rem;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.fc-tag{font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;padding:.1rem .4rem;border-radius:.3rem}
.fc-tag.fc-flow{background:rgba(220,38,38,.12);color:#dc2626}
.fc-tag.fc-keep{background:rgba(22,163,74,.12);color:#16a34a}
.fc-result-card{background:var(--wh);border:1.5px solid var(--bdr);border-radius:var(--r);padding:.4rem .85rem}
.fc-line{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:.5rem 0;border-bottom:1px solid var(--bdr)}
.fc-line:last-child{border-bottom:none}
.fc-line-name{font-weight:600;font-size:.86rem;color:var(--tx)}
.fc-line-treat{font-weight:700;font-size:.84rem;text-align:right}
.diag-btn{width:100%;text-align:left;background:var(--wh);border:2px solid var(--bdr);border-radius:var(--r);padding:.82rem 1rem;font-family:var(--fb);font-size:.91rem;font-weight:600;cursor:pointer;color:var(--tx);display:flex;align-items:center;gap:.65rem;transition:all .2s}
.diag-btn:hover{border-color:var(--lo);background:var(--lo-p);transform:translateX(4px)}
.diag-ico{width:2rem;height:2rem;background:var(--g100);border-radius:var(--rs);display:flex;align-items:center;justify-content:center;color:var(--lp-m);flex-shrink:0}
.diag-yesno{display:flex;gap:.9rem;justify-content:center;margin-top:.5rem}
.d-yn{padding:.72rem 2rem;border-radius:var(--r);border:2px solid;font-family:var(--fb);font-weight:700;font-size:.95rem;cursor:pointer;display:flex;align-items:center;gap:.45rem;transition:all .2s}
.d-yn-y{border-color:var(--ok);color:var(--ok);background:var(--ok-l)}.d-yn-y:hover{background:var(--ok);color:#fff}
.d-yn-n{border-color:var(--er);color:var(--er);background:var(--er-l)}.d-yn-n:hover{background:var(--er);color:#fff}
.d-yn-y.sel{background:var(--ok);color:#fff}.d-yn-n.sel{background:var(--er);color:#fff}
.diag-back{display:flex;align-items:center;gap:.32rem;background:none;border:none;font-family:var(--fb);font-size:.82rem;font-weight:700;color:var(--txm);cursor:pointer;margin-top:1rem;padding:0}
.diag-back:hover{color:var(--txs)}
.diag-prog{display:flex;gap:.38rem;align-items:center;justify-content:center;margin-bottom:1.15rem}
.d-dot{width:8px;height:8px;border-radius:50%;background:var(--g200);transition:background .2s}
.d-dot.done{background:var(--g400)}.d-dot.active{background:var(--lo)}
.diag-res{max-width:520px;margin:0 auto;text-align:center}
.diag-res-ico{width:3.4rem;height:3.4rem;background:var(--lo-l);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.55rem;color:var(--lo);margin:0 auto .9rem}
.diag-res-title{font-family:var(--fd);font-size:1.3rem;color:var(--lp);margin-bottom:.6rem}
.diag-res-body{color:var(--txs);font-size:.93rem;margin-bottom:1.25rem;line-height:1.7}
.ck-item{display:flex;gap:.65rem;align-items:flex-start;padding:.75rem .92rem;border:1px solid var(--bdr);border-radius:var(--rs);margin-bottom:.48rem;cursor:pointer;transition:all .2s;background:var(--wh)}
.ck-item:hover{border-color:var(--lo);background:var(--lo-p)}.ck-item.chk{border-color:var(--ok);background:var(--ok-l)}
.ck-box{width:1.2rem;height:1.2rem;border:2px solid var(--bdr);border-radius:3px;flex-shrink:0;margin-top:.1rem;display:flex;align-items:center;justify-content:center;transition:all .2s}
.ck-item.chk .ck-box{background:var(--ok);border-color:var(--ok);color:#fff}
.ck-txt{font-size:.9rem;font-weight:600;color:var(--tx)}
.ck-sub{font-size:.77rem;color:var(--txm);font-weight:400;margin-top:.13rem}
.bld-step{padding:1.05rem;border:1px solid var(--bdr);border-radius:var(--r);margin-bottom:.68rem;transition:all .2s}
.bld-step.done{border-color:var(--ok);background:var(--ok-l)}
.bld-hdr{display:flex;align-items:center;gap:.75rem;cursor:pointer}
.bld-num{width:2rem;height:2rem;border-radius:50%;background:var(--g100);color:var(--txs);font-weight:800;font-size:.82rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s}
.bld-step.done .bld-num{background:var(--ok);color:#fff}
.bld-title{font-weight:700;font-size:.93rem;flex:1}
.bld-body{display:none;padding-top:.8rem}
.bld-step.open .bld-body{display:block}
.bld-body p{font-size:.89rem;color:var(--txs);margin-bottom:.7rem}
.bld-inp{width:100%;border:1.5px solid var(--bdr);border-radius:var(--rs);padding:.48rem .78rem;font-family:var(--fb);font-size:.89rem;color:var(--tx);outline:none;transition:border-color .2s,box-shadow .2s;margin-bottom:.55rem}
.bld-inp:focus{border-color:var(--lo);box-shadow:0 0 0 2px var(--lo);outline:none}

/* PROFILE */
.lvl-card{background:linear-gradient(135deg,var(--lp-d),var(--lp-m));border-radius:var(--rl);padding:2rem;color:#fff;text-align:center}
/* Streak card on My Progress */
.streak-card{background:linear-gradient(135deg,#1a0d00,#3d1f00);border-radius:var(--rl);padding:1.6rem;color:#fff;height:100%;border:1px solid rgba(214,93,134,.25)}
.streak-card-flame{font-size:2.4rem;filter:drop-shadow(0 2px 8px rgba(214,93,134,.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(214,93,134,.15);border:1px solid rgba(214,93,134,.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(214,93,134,.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)}
.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)}
.cl-warn{background:var(--wa-l);border-left:4px solid var(--wa)}.cl-warn i{color:var(--wa)}
.cl-er{background:var(--er-l);border-left:4px solid var(--er)}.cl-er i{color:var(--er)}
.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);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;
  --tx:#e8e0f2;--txs:#c0b0d0;--txm:#8878a0;--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);
  --lo-l:rgba(214,93,134,.20);--lo-p:rgba(214,93,134,.10);--lp-t:rgba(214,93,134,.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 .acad-expand-all{color:var(--lo)}
body.liq-dark .acad-expand-all:hover{color:var(--lo-h)}
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 ──────────────────────────────────────────── */
.ltciq-logo       { height: 36px; width: auto; display: block; }
.ltciq-logo-login { height: 58px; width: auto; display: block; margin: 0 auto; }

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


/* ── TOOL CARD GRID ─────────────────────────────────────── */
.tools-wrap{display:block}
.tool-sidebar{display:none}
.tools-right{flex:1;min-width:0}
@media(min-width:992px){
  .tools-wrap{display:flex;gap:1.5rem;align-items:flex-start}
  .tool-sidebar{display:block;width:220px;flex-shrink:0;position:sticky;top:5rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:.6rem}
  .tool-grid{display:none!important}
  .tool-mobile-bar{display:none!important}
}
.tools-wrap.has-tool .tool-grid{display:none}
.tool-sb-cat{font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.11em;color:var(--txm);padding:.6rem .55rem .18rem;margin-top:.25rem}
.tool-sb-cat:first-child{margin-top:0}
.tool-sb-divider{height:1px;background:var(--bdr);margin:.4rem .2rem}
.tool-sb-item{display:flex;align-items:center;gap:.55rem;padding:.42rem .55rem;border-radius:var(--rs);cursor:pointer;transition:all .15s;border:1px solid transparent;margin-bottom:.06rem}
.tool-sb-item:hover{background:var(--g100);border-color:var(--bdr)}
.tool-sb-item.active{background:var(--lp-t);border-color:var(--lp)}
body.liq-dark .tool-sb-item.active{background:rgba(214,93,134,.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(214,93,134,.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)}
.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)}

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


/* ── 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(43,58,103,.12);border-radius:var(--r);padding:1rem 1.2rem;margin-bottom:1.1rem}
.tmpl-header h5{font-family:var(--fd);font-size:1.05rem;color:var(--heading);margin-bottom:.22rem}
.tmpl-header p{font-size:.82rem;color:var(--txs);margin:0}
.tmpl-guidance{font-size:.82rem;color:var(--txs);background:var(--wa-l);border-left:3px solid var(--wa);border-radius:0 var(--rs) var(--rs) 0;padding:.65rem .9rem;margin-bottom:1rem;line-height:1.55}
.tmpl-body{background:var(--g100);border:1px solid var(--bdr);border-radius:var(--r);padding:1.4rem 1.65rem;font-family:Georgia,serif;font-size:.9rem;line-height:1.85;color:var(--tx);white-space:pre-wrap;word-break:break-word}
body.liq-dark .tmpl-body{background:var(--g100);color:var(--tx)}
.tmpl-placeholder{background:rgba(214,93,134,.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);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)}
.wt-24h{background:var(--wa-l);color:var(--wa)}
.wt-72h{background:var(--inf-l);color:var(--inf)}
.wt-ongoing{background:var(--ok-l);color:var(--ok)}
.wsib-check-item{border:1px solid var(--bdr);border-radius:var(--rs);margin-bottom:.38rem;background:var(--wh);overflow:hidden}
.wsib-check-item.done{border-color:var(--ok)}
.wsib-check-top{display:flex;align-items:flex-start;gap:.62rem;padding:.68rem .88rem;cursor:pointer}
.wsib-check-item.done .wsib-check-top{background:var(--ok-l)}
.wsib-cbox{width:1.1rem;height:1.1rem;border:2px solid var(--bdr);border-radius:3px;flex-shrink:0;margin-top:.18rem;display:flex;align-items:center;justify-content:center;transition:all .2s}
.wsib-check-item.done .wsib-cbox{background:var(--ok);border-color:var(--ok);color:#fff}
.wsib-check-item-text{flex:1}
.wsib-check-label{font-size:.88rem;font-weight:700;color:var(--tx)}
.wsib-check-sub{font-size:.76rem;color:var(--txm);margin-top:.08rem;line-height:1.45}
.wsib-check-expand{display:none;padding:.45rem .88rem .68rem 2.6rem}
.wsib-check-item.open .wsib-check-expand{display:block}
.wsib-objection-ground{border:1.5px solid var(--bdr);border-radius:var(--rs);padding:.72rem .92rem;margin-bottom:.48rem;cursor:pointer;transition:all .2s;background:var(--wh)}
.wsib-objection-ground:hover{border-color:var(--lo);background:var(--lo-p)}
.wsib-objection-ground.selected{border-color:var(--lp);background:var(--lp-t)}
.wsib-objection-ground-title{font-size:.88rem;font-weight:700;color:var(--tx);display:flex;align-items:center;gap:.5rem}
.wsib-objection-ground.selected .wsib-objection-ground-title{color:var(--lp)}
.wsib-objection-ground-desc{font-size:.78rem;color:var(--txm);margin-top:.2rem;line-height:1.5;display:none}
.wsib-objection-ground.selected .wsib-objection-ground-desc{display:block;color:var(--txs)}
.wsib-deadline-banner{background:var(--er-l);border:2px solid var(--er);border-radius:var(--r);padding:.85rem 1.1rem;display:flex;align-items:center;gap:.75rem;margin-bottom:1.1rem}
.wsib-deadline-banner i{color:var(--er);font-size:1.25rem;flex-shrink:0}
.wsib-deadline-text{font-size:.87rem;font-weight:700;color:var(--er)}
.wsib-deadline-sub{font-size:.77rem;color:var(--txs);font-weight:400}
.wsib-progress-row{display:flex;align-items:center;gap:.62rem;padding:.55rem 0;border-bottom:1px solid var(--bdr)}
.wsib-progress-row:last-child{border-bottom:none}
.wsib-prog-dot{width:.75rem;height:.75rem;border-radius:50%;flex-shrink:0}
.wp-done{background:var(--ok)}.wp-pend{background:var(--g200)}.wp-risk{background:var(--er)}


/* ── A-Z LETTER BAR ─────────────────────────────────────── */
.az-bar{display:flex;gap:.22rem;flex-wrap:wrap;margin:.65rem 0 .55rem;align-items:center}
.az-btn{min-width:1.9rem;height:1.9rem;border:1.5px solid var(--bdr);background:var(--wh);border-radius:var(--rs);font-family:var(--fb);font-size:.77rem;font-weight:800;cursor:pointer;color:var(--txs);display:flex;align-items:center;justify-content:center;transition:all .15s;padding:0;line-height:1;position:relative}
.az-btn:hover:not(.az-empty){border-color:var(--lo);color:var(--lo-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)}
.tt-24h{background:var(--wa-l);color:var(--wa)}
.tt-5d{background:var(--inf-l);color:var(--inf)}
.tt-ongoing{background:var(--ok-l);color:var(--ok)}
.term-section-title{font-family:var(--fd);font-size:1rem;color:var(--heading);margin-bottom:.25rem;margin-top:1.25rem}
.term-section-title:first-child{margin-top:0}
.term-section-sub{font-size:.82rem;color:var(--txs);margin-bottom:.85rem}
.term-dont-item{display:flex;gap:.65rem;align-items:flex-start;padding:.55rem .75rem;background:var(--er-l);border-radius:var(--rs);margin-bottom:.38rem;font-size:.86rem;color:var(--tx)}
.term-dont-item i{color:var(--er);flex-shrink:0;margin-top:.15rem}
.term-do-item{display:flex;gap:.65rem;align-items:flex-start;padding:.55rem .75rem;background:var(--ok-l);border-radius:var(--rs);margin-bottom:.38rem;font-size:.86rem;color:var(--tx)}
.term-do-item i{color:var(--ok);flex-shrink:0;margin-top:.15rem}


/* ── LOGIN PAGE ──────────────────────────────────────────── */
.liq-login-page{
  min-height:100vh;background:#0d0812;
  display:flex;align-items:center;justify-content:center;
  padding:2rem 1rem;
}
.login-wrap{width:100%;max-width:440px}
.login-logo-row{text-align:center;margin-bottom:2rem}
.login-card{
  background:#1a1028;border:1px solid rgba(255,255,255,.1);
  border-radius:1.25rem;padding:2.25rem 2.25rem 2rem;
  box-shadow:0 24px 64px rgba(0,0,0,.5);
}
.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,.5);margin-bottom:.35rem;letter-spacing:.04em}
.login-inp{
  width:100%;background:#241832;border:1.5px solid rgba(255,255,255,.1);
  border-radius:.65rem;padding:.72rem 1rem;
  font-family:'Nunito',system-ui,sans-serif;font-size:.95rem;
  color:#e8e0f2;outline:none;transition:border-color .2s;
}
.login-inp:focus{border-color:#d65d86;box-shadow:0 0 0 2px #d65d86;outline:none}
.login-inp::placeholder{color:rgba(255,255,255,.22);font-weight:400}
.login-btn{
  width:100%;background:#d65d86;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:hover{background:#e06e10;transform:translateY(-1px)}
.login-btn:active{transform:translateY(0)}
.login-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.login-error{
  background:rgba(220,38,38,.18);border:1px solid rgba(220,38,38,.4);
  border-radius:.5rem;padding:.65rem .9rem;font-size:.86rem;
  color:#fca5a5;margin-bottom:.9rem;display:none;
  align-items:center;gap:.5rem;
}
.login-error.show{display:flex}
.login-admin-box{
  background:rgba(214,93,134,.1);border:1px solid rgba(214,93,134,.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:#d65d86;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(214,93,134,.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)}
.nav-user-item.danger i{color:var(--er)}
.nav-user-item.danger:hover{background:var(--er-l)}
.nav-user-divider{border-color:var(--bdr);margin:0}


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

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

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

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

/* Uniform dropdown styling — used by all filter selects + the sort
   select. Native <select> for keyboard a11y; visual weight matches
   the chips above. */
.case-filter-select{
  width:100%;border:1.5px solid var(--bdr);background-color:var(--wh);
  border-radius:2rem;padding:.42rem 2.1rem .42rem 1rem;
  font-family:var(--fb);font-size:.82rem;font-weight:600;color:var(--tx);
  cursor:pointer;transition:border-color .15s,box-shadow .15s;
  /* Tell the browser the closed control matches the page's color scheme,
     so the OPEN dropdown list (which is browser-native) renders with the
     same light/dark scheme as the rest of the page. Without this hint,
     Chrome/Edge sometimes pick the OS preference instead of the app's
     theme, causing the dropdown list to flash light when the page is
     dark (the bug that looked like "theme reverts after selection"). */
  color-scheme:light;
  /* Custom dropdown chevron — single source so all selects look identical
     across browsers. Light-mode SVG (brand purple chevron); dark-mode
     override below uses a lighter version so it remains visible against
     the dark dropdown surface. */
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235a4866'><path d='M3.204 5.04 8 9.836l4.796-4.796.708.708L8 11.252 2.496 5.748z'/></svg>");
  background-repeat:no-repeat;background-position:right .7rem center;background-size:.85rem;
}
.case-filter-select:hover{border-color:var(--g400)}
.case-filter-select:focus{outline:none;border-color:var(--lo);box-shadow:0 0 0 3px rgba(214,93,134,.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(214,93,134,.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. */
.track-cases-panel{margin:.5rem .85rem 1rem;background:var(--bg);border-radius:var(--rs);padding:.7rem .9rem;border-left:3px solid var(--lo)}
.track-cases-hdr{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:.78rem;font-weight:700;color:var(--txs);margin-bottom:.55rem}
.track-cases-hdr>i{color:var(--lo);font-size:.95rem}
.track-cases-viewall{margin-left:auto;font-size:.74rem;color:var(--lo);font-weight:700;text-decoration:none;white-space:nowrap}
.track-cases-viewall:hover{color:var(--lo-h);text-decoration:underline}
.track-case-chips{display:flex;flex-wrap:wrap;gap:.4rem}
.track-case-chip{display:inline-flex;align-items:center;gap:.4rem;background:var(--wh);border:1px solid var(--bdr);border-radius:2rem;padding:.22rem .65rem .22rem .35rem;font-size:.76rem;font-weight:700;color:var(--tx);cursor:pointer;transition:border-color .15s,box-shadow .15s;max-width:100%}
.track-case-chip:hover{border-color:var(--lo);box-shadow:0 1px 4px rgba(214,93,134,.18)}
.track-case-chip-yr{display:inline-block;font-size:.66rem;font-weight:800;letter-spacing:.04em;padding:.1rem .42rem;border-radius:99px}
@media (max-width:600px){
  .track-cases-panel{margin:.4rem .55rem .85rem;padding:.6rem .7rem}
  .track-cases-viewall{margin-left:0}
}
.liq-dark .track-cases-panel{background:var(--g100)}
.liq-dark .track-case-chip{background:var(--wh)}

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

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

/* ── Recommended next case panel ──────────────────────────────
   Shown below the Connected To section after the user has decided a case.
   Strong orange accent + clear CTA so the engagement loop continues. */
.case-next-rec{margin:1.1rem 0;background:linear-gradient(135deg,var(--wh) 0%,var(--lo-p) 100%);border:1.5px solid var(--lo);border-radius:var(--rl);padding:1rem 1.2rem;cursor:pointer;transition:transform .15s,box-shadow .15s;position:relative}
.case-next-rec:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(214,93,134,.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)}
.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);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);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,#2b3a67 0%,#5b2d8e 60%,#d65d86 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:#d65d86;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(214,93,134,.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)}
.admin-status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:.4rem}
.dot-active{background:var(--ok)}
.dot-inactive{background:var(--bdr)}
.dot-archived{background:var(--wa)}
.perm-role-hdr{font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);text-align:center;padding:.5rem .25rem}
.perm-check{width:20px;height:20px;border-radius:4px;border:1.5px solid var(--bdr);display:inline-flex;align-items:center;justify-content:center;font-size:.72rem}
.perm-check.on{background:var(--ok);border-color:var(--ok);color:#fff}
.perm-check.off{background:var(--wh);color:var(--bdr)}
.perm-check.locked{background:var(--g100);border-color:var(--bdr);color:var(--txm)}
.admin-log-item{display:flex;align-items:flex-start;gap:.75rem;padding:.6rem 0;border-bottom:1px solid var(--bdr)}
.admin-log-item:last-child{border-bottom:none}
.admin-log-user{font-size:.82rem;font-weight:700;color:var(--tx);min-width:120px;flex-shrink:0}
.admin-log-label{flex:1;font-size:.82rem;color:var(--txs)}
.admin-log-xp{font-size:.75rem;font-weight:700;color:var(--ok);white-space:nowrap}
.admin-log-time{font-size:.72rem;color:var(--txm);white-space:nowrap;min-width:60px;text-align:right}
/* ── ESA Quick-Calcs ── */
.esa-tabs{display:flex;gap:.3rem;margin-bottom:1rem;border-bottom:1px solid var(--bdr);padding-bottom:.55rem;flex-wrap:wrap}
.esa-tab{display:inline-flex;align-items:center;gap:.4rem;background:var(--wh);border:1px solid var(--bdr);color:var(--txs);font-size:.85rem;font-weight:700;padding:.45rem .85rem;border-radius:99px;cursor:pointer;font-family:var(--fb);transition:all .15s ease}
.esa-tab:hover{border-color:var(--lo);color:var(--lo)}
.esa-tab.active{background:var(--lp);border-color:var(--lp);color:#fff}
body.liq-dark .esa-tab{background:rgba(255,255,255,.04)}
body.liq-dark .esa-tab.active{background:var(--lo);border-color:var(--lo)}
.esa-intro{background:var(--g100);border-left:4px solid var(--lo);border-radius:6px;padding:.7rem .9rem;font-size:.85rem;color:var(--txs);line-height:1.55;margin-bottom:.85rem}
body.liq-dark .esa-intro{background:rgba(255,255,255,.04)}
.esa-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:.75rem;margin-bottom:.85rem}
.esa-field{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.7rem .85rem}
body.liq-dark .esa-field{background:rgba(255,255,255,.04)}
.esa-lbl{display:block;font-size:.78rem;font-weight:700;color:var(--heading);margin-bottom:.35rem}
.esa-help{font-size:.72rem;color:var(--txm);margin-top:.3rem;line-height:1.4}
.esa-result{background:linear-gradient(135deg,var(--ok-l),rgba(255,255,255,.7));border:2px solid var(--ok);border-radius:var(--r);padding:1rem 1.1rem;margin-top:1rem}
body.liq-dark .esa-result{background:rgba(22,163,74,.12)}
.esa-result-hd{display:flex;align-items:center;gap:.4rem;font-family:var(--fd);font-size:1rem;font-weight:700;color:var(--ok);margin-bottom:.85rem}
.esa-result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin-bottom:.85rem}
.esa-result-cell{background:var(--wh);border-radius:var(--r);padding:.65rem .85rem;text-align:center}
body.liq-dark .esa-result-cell{background:rgba(255,255,255,.06)}
.esa-result-num{font-family:var(--fd);font-size:1.3rem;font-weight:700;color:var(--lp);line-height:1.1}
.esa-result-num.esa-num-big{font-size:1.7rem;color:var(--ok)}
body.liq-dark .esa-result-num{color:var(--lo)}
body.liq-dark .esa-result-num.esa-num-big{color:#4ade80}
.esa-result-lbl{font-size:.7rem;font-weight:700;color:var(--txm);text-transform:uppercase;letter-spacing:.06em;margin-top:.25rem;line-height:1.3}
.esa-result-cell.esa-cell-highlight{background:var(--wa-l);border:1px solid var(--wa)}
.esa-result-cell.esa-cell-highlight .esa-result-num{color:var(--wa)}
.esa-result-detail{background:var(--wh);border-radius:var(--r);padding:.7rem .9rem;font-size:.83rem;color:var(--txs);line-height:1.55}
body.liq-dark .esa-result-detail{background:rgba(255,255,255,.04)}
.esa-detail-line{margin-bottom:.4rem}
.esa-detail-line:last-child{margin-bottom:0}
.esa-aux{background:var(--g100);border-radius:var(--r);padding:.7rem .9rem}
body.liq-dark .esa-aux{background:rgba(255,255,255,.04)}
.esa-aux-title{font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--txm);margin-bottom:.45rem}
.esa-aux-opts{display:flex;flex-direction:column;gap:.4rem}
.esa-aux-opt{font-size:.82rem;color:var(--txs);line-height:1.5}
.esa-foot{margin-top:.85rem;padding-top:.7rem;border-top:1px solid var(--bdr)}
/* ── Discipline Letter Generator ── */
.dl-modal{max-width:760px;width:100%;max-height:88vh;overflow-y:auto;padding:1.5rem 1.75rem 1.25rem}
.dl-modal-sub{font-size:.78rem;color:var(--txs);margin-top:-.4rem;margin-bottom:1rem;padding-bottom:.85rem;border-bottom:1px solid var(--bdr)}
.dl-type-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.45rem}
.dl-type-card{display:flex;align-items:center;gap:.5rem;background:var(--wh);border:2px solid var(--bdr);border-radius:var(--r);padding:.6rem .75rem;cursor:pointer;transition:all .15s ease}
.dl-type-card:hover{border-color:var(--lo)}
.dl-type-card input{margin:0;flex-shrink:0;accent-color:var(--lo)}
.dl-type-card.active{border-color:var(--lo);background:var(--lo-l)}
.dl-type-name{font-size:.82rem;font-weight:700;color:var(--tx);line-height:1.3}
body.liq-dark .dl-type-card{background:rgba(255,255,255,.04)}
body.liq-dark .dl-type-card.active{background:rgba(214,93,134,.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(214,93,134,.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(214,93,134,.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) ── */
.track-cheatsheet-btn{
  display:inline-flex;align-items:center;gap:.32rem;
  background:var(--lo-l);color:var(--lo-h);
  border:1px solid rgba(214,93,134,.35);border-radius:99px;
  font-size:.72rem;font-weight:700;font-family:var(--fb);
  padding:.22rem .65rem;cursor:pointer;
  margin-right:.4rem;white-space:nowrap;
  transition:background .15s,color .15s,border-color .15s;
}
.track-cheatsheet-btn:hover{background:var(--lo);color:#fff;border-color:var(--lo)}
.track-cheatsheet-btn i{font-size:.78rem}
body.liq-dark .track-cheatsheet-btn{background:rgba(214,93,134,.16);color:var(--lo);border-color:rgba(214,93,134,.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 */
  .track-cheatsheet-btn{padding:.28rem .45rem}
  .track-cheatsheet-btn i{font-size:.85rem}
  .track-cheatsheet-btn span,.track-cheatsheet-btn::after{display:none}
}
/* ── 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(214,93,134,.18);
}
.lex-popover{
  position:fixed;
  background:var(--wh);
  border:1px solid var(--bdr);
  border-radius:var(--r);
  box-shadow:0 8px 28px rgba(43,58,103,.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:#131726;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(214,93,134,.05))}
body.liq-dark .dev-tools-group{background:linear-gradient(135deg,rgba(217,119,6,.08),rgba(214,93,134,.08))}
.dev-tools-title{display:flex;align-items:center;gap:.45rem;color:var(--wa)!important}
.dev-tools-title i{font-size:1rem}
.dev-tools-badge{font-size:.62rem;font-weight:800;letter-spacing:.08em;background:var(--wa);color:#fff;padding:.18rem .55rem;border-radius:99px;margin-left:.4rem}
.dev-tools-warn{display:flex;align-items:flex-start;gap:.5rem;font-size:.8rem;color:var(--wa);background:var(--wa-l);border-radius:6px;padding:.55rem .8rem;margin:.55rem 0 1rem;line-height:1.5}
body.liq-dark .dev-tools-warn{background:rgba(217,119,6,.18)}
.dev-tools-section{margin-top:.85rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.85rem 1rem}
body.liq-dark .dev-tools-section{background:rgba(255,255,255,.04)}
.dev-tools-section-hdr{display:flex;align-items:center;gap:.4rem;font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);margin-bottom:.6rem}
.dev-tools-section-hdr i{color:var(--lo);font-size:.9rem}
.dev-tools-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.5rem}
.dev-tools-grid .btn-liq{justify-content:flex-start;text-align:left;font-size:.83rem;padding:.5rem .8rem;display:flex;align-items:center;gap:.5rem}
.dev-tools-count{margin-left:auto;font-size:.7rem;font-weight:800;color:var(--txm);background:var(--g100);padding:.13rem .5rem;border-radius:99px;flex-shrink:0}
body.liq-dark .dev-tools-count{background:rgba(255,255,255,.06)}
.dev-tools-danger{color:var(--er)!important;border-color:var(--er-l)!important}
.dev-tools-danger:hover{background:var(--er-l)!important;color:var(--er)!important;border-color:var(--er)!important}
.dev-tools-nuke{background:var(--er)!important;color:#fff!important;border-color:var(--er)!important}
.dev-tools-nuke:hover{background:#b91c1c!important;border-color:#b91c1c!important}
.dev-tools-nuke .dev-tools-count{background:rgba(255,255,255,.2);color:#fff}
/* ── Audit Log actor filter ── */
.audit-actor-select{font-size:.82rem;padding:.32rem .65rem;max-width:240px;min-width:160px}
@media (max-width:767px){.audit-actor-select{max-width:none;width:100%}}
/* ── Path Templates summary card (Users tab) ── */
.tpl-summary-count{display:inline-block;font-family:var(--fb);font-size:.7rem;font-weight:800;background:var(--lp);color:#fff;padding:.13rem .5rem;border-radius:99px;margin-left:.4rem;text-transform:none;letter-spacing:0;line-height:1.4;vertical-align:middle}
body.liq-dark .tpl-summary-count{background:var(--lo)}
.tpl-summary-preview{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center}
.tpl-summary-chip{display:inline-flex;align-items:center;background:var(--g100);color:var(--tx);font-size:.78rem;font-weight:600;padding:.32rem .65rem;border-radius:99px;border:1px solid var(--bdr)}
body.liq-dark .tpl-summary-chip{background:rgba(255,255,255,.05)}
.tpl-summary-more{font-size:.74rem;color:var(--txm);font-weight:700;padding:.22rem .55rem}
.tpl-summary-empty{display:flex;align-items:flex-start;gap:.7rem;color:var(--txs);font-size:.85rem;line-height:1.5}
.tpl-summary-empty i{font-size:1.3rem;color:var(--g400);flex-shrink:0;margin-top:.05rem}
/* ── Admin Users tab — search + sort polish ── */
.admin-search-wrap{position:relative;margin-bottom:.85rem}
.admin-search-input{width:100%;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--r);padding:.55rem 2.6rem .55rem 2.4rem;font-size:.9rem;font-family:var(--fb);color:var(--tx);transition:border-color .15s ease,box-shadow .15s ease}
.admin-search-input:focus{outline:none;border-color:var(--lo);box-shadow:0 0 0 3px rgba(214,93,134,.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(214,93,134,.1),rgba(43,58,103,.06));border:1.5px solid rgba(214,93,134,.4);border-radius:var(--r);padding:.85rem 1rem}
body.liq-dark .ob-banner{background:linear-gradient(135deg,rgba(214,93,134,.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);background:var(--ok-l);padding:.5rem .85rem;border-radius:99px;display:inline-flex;align-items:center;gap:.4rem}
.ob-prog-bar{height:8px;background:var(--g100);border-radius:99px;overflow:hidden;margin-bottom:1rem}
body.liq-dark .ob-prog-bar{background:rgba(255,255,255,.08)}
.ob-prog-fill{height:100%;background:linear-gradient(90deg,var(--lo),var(--lp));border-radius:99px;transition:width .4s ease}
.ob-prog-weeks{display:grid;grid-template-columns:repeat(4,1fr);gap:.55rem}
.ob-prog-week{padding:.5rem .75rem;background:var(--g100);border-radius:var(--r);text-align:center;border:1px solid transparent}
body.liq-dark .ob-prog-week{background:rgba(255,255,255,.04)}
.ob-prog-week-num{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--txm)}
.ob-prog-week-prog{font-size:.78rem;font-weight:700;color:var(--tx);margin-top:.2rem}
.ob-prog-week.ob-week-active{border-color:var(--lo);background:var(--lo-l)}
.ob-prog-week.ob-week-done{border-color:var(--ok);background:var(--ok-l)}
.ob-prog-week.ob-week-done .ob-prog-week-num,.ob-prog-week.ob-week-done .ob-prog-week-prog{color:var(--ok)}
.ob-week-section{background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);overflow:hidden;margin-bottom:1.25rem}
body.liq-dark .ob-week-section{background:rgba(255,255,255,.04)}
.ob-week-section.ob-week-done{opacity:.85}
.ob-week-hdr{display:flex;align-items:center;gap:.85rem;padding:.95rem 1.25rem;background:var(--g100);border-bottom:1px solid var(--bdr);flex-wrap:wrap}
.ob-week-pill{font-family:var(--fb);font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:#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)}
.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)}
.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);font-size:.78rem;font-weight:800;padding:.4rem .75rem;border-radius:99px}
@media (max-width:767px){
  .ob-step{flex-wrap:wrap}
  .ob-step-action{width:100%;margin-top:.4rem}
  .ob-step-cta,.ob-step-done{width:100%;justify-content:center}
  .ob-prog-weeks{grid-template-columns:repeat(2,1fr)}
}
.ob-footer-celebrate{text-align:center;padding:2.5rem 1.5rem;background:linear-gradient(135deg,var(--ok-l),rgba(255,255,255,.7));border:2px solid var(--ok);border-radius:var(--rl);margin-top:1rem}
body.liq-dark .ob-footer-celebrate{background:linear-gradient(135deg,rgba(22,163,74,.12),rgba(255,255,255,.04))}
.ob-celebrate-big{font-size:3.2rem;color:var(--ok);line-height:1;margin-bottom:.6rem}
.ob-celebrate-title{font-family:var(--fd);font-size:1.4rem;font-weight:700;color:var(--heading);margin-bottom:.4rem}
.ob-celebrate-sub{font-size:.9rem;color:var(--txs);max-width:520px;margin:0 auto;line-height:1.55}
.ob-footer-tip{margin-top:1rem;padding:.85rem 1.1rem;background:var(--g100);border-radius:var(--r);font-size:.83rem;color:var(--txs);line-height:1.55}
body.liq-dark .ob-footer-tip{background:rgba(255,255,255,.04)}
/* ── Home recommendation card — urgency tiers ── */
.hd-card-urgency-critical{border-color:var(--er);box-shadow:0 0 0 1px var(--er),0 6px 22px rgba(220,38,38,.13)}
.hd-card-urgency-critical .hd-card-label{color:var(--er)}
.hd-card-urgency-high{border-color:var(--er);box-shadow:0 6px 18px rgba(220,38,38,.08)}
.hd-card-urgency-high .hd-card-label{color:var(--er)}
.hd-card-urgency-medium{border-color:var(--wa);box-shadow:0 6px 18px rgba(217,119,6,.08)}
.hd-card-urgency-medium .hd-card-label{color:var(--wa)}
.hd-card-urgency-review{border-color:var(--lo);background:linear-gradient(135deg,rgba(214,93,134,.04),var(--wh))}
body.liq-dark .hd-card-urgency-review{background:linear-gradient(135deg,rgba(214,93,134,.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(43,58,103,.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(214,93,134,.06));border:1px solid rgba(214,93,134,.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)}
.nc-factor-row.neg .nc-factor-delta{color:var(--er)}
@media (max-width:639px){
  .nc-factor-row{grid-template-columns:1fr 80px;grid-template-rows:auto auto}
  .nc-factor-detail{grid-column:1 / span 2;font-size:.76rem}
}
body.liq-dark .nc-factor-row{background:rgba(255,255,255,.06)}
body.liq-dark .nc-factor-row.pos{background:rgba(22,163,74,.18)}
body.liq-dark .nc-factor-row.neg{background:rgba(220,38,38,.18)}
/* ── Review Mode (Spaced Repetition) ── */
.rev-card{display:flex;align-items:flex-start;gap:1rem;background:linear-gradient(135deg,rgba(43,58,103,.04),rgba(214,93,134,.07));border:1.5px solid rgba(214,93,134,.3);border-radius:var(--r);padding:1.1rem 1.3rem;margin-bottom:1.25rem}
body.liq-dark .rev-card{background:linear-gradient(135deg,rgba(214,93,134,.08),rgba(214,93,134,.14));border-color:rgba(214,93,134,.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);padding:.18rem .55rem;border-radius:99px;display:inline-flex;align-items:center;gap:.3rem}
.rev-card-cap{font-size:.74rem;color:var(--wa);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);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);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)}
.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)}
.rev-result-status.er{background:var(--er-l);color:var(--er)}
.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(214,93,134,.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(43,58,103,.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);font-weight:700}
.dash-kpi-sub.s-wa{color:var(--wa);font-weight:700}
.dash-kpi-sub.s-ok{color:var(--ok);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(43,58,103,.06),rgba(214,93,134,.08));border:1.5px solid rgba(214,93,134,.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);border:1px solid rgba(217,119,6,.3)}
.path-due-overdue{background:var(--er-l);color:var(--er);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);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(214,93,134,.15);color:var(--lo-h);margin-left:.4rem;flex-shrink:0}
.track-locked-path .track-collapse-hdr{opacity:.7;cursor:default}
.track-locked-path .track-collapse-hdr::after{content:''}
.path-lock-msg{font-size:.78rem;color:var(--txm);padding:.6rem 1rem .8rem 1rem;font-style:italic;display:flex;align-items:center;gap:.4rem}
/* 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);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(214,93,134,.12);border:1px solid rgba(214,93,134,.25);white-space:nowrap;cursor:pointer;transition:all .15s;text-decoration:none}
.nav-admin-link:hover{background:rgba(214,93,134,.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)}
.ann-success{background:var(--ok-l);color:var(--ok)}
/* 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)}
.audit-edit{background:rgba(37,99,235,.1);color:#2563eb}
.audit-delete{background:var(--er-l);color:var(--er)}
.audit-settings{background:rgba(124,58,237,.1);color:#7c3aed}
.audit-system{background:var(--g100);color:var(--txm)}
.audit-learner{background:rgba(214,93,134,.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);font-weight:700}
.perm-denied{color:var(--txm)}
/* Bulk select */
.admin-table .row-cb{width:1.2rem;height:1.2rem;cursor:pointer}
.bulk-bar{display:none;align-items:center;gap:.75rem;padding:.65rem 1rem;background:var(--lp);border-radius:var(--r);margin-bottom:.75rem;color:#fff;font-size:.88rem;font-weight:600}
.bulk-bar.show{display:flex}


/* ── DAILY CHALLENGE ─────────────────────────────────────── */
/* Term of the Day home widget */
.hd-tod-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rl);padding:1rem 1.3rem;margin-bottom:1rem;cursor:pointer;transition:border-color .18s,box-shadow .18s;border-left:4px solid var(--lp)}
.hd-tod-card:hover{border-color:var(--lp);box-shadow:var(--shm)}
.hd-tod-left{flex:1;min-width:0}
.hd-tod-lbl{font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--lp);margin-bottom:.22rem}
.hd-tod-term{font-family:var(--fd);font-size:1.05rem;font-weight:700;color:var(--heading);margin-bottom:.18rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hd-tod-def{font-size:.8rem;color:var(--txs);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hd-tod-right{flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:.4rem}
.hd-tod-cat{font-size:.65rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;padding:.18rem .52rem;border-radius:3px}
.hd-tod-cta{font-size:.75rem;font-weight:700;color:var(--lp);white-space:nowrap}
.hd-tod-seen{font-size:.75rem;font-weight:700;color:var(--ok);display:flex;align-items:center;gap:.3rem;white-space:nowrap}
body.liq-dark .hd-tod-card{background:var(--wh);border-color:var(--bdr)}
body.liq-dark .hd-tod-card:hover{border-color:var(--lo)}
body.liq-dark .hd-tod-lbl{color:var(--lo)}
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(214,93,134,.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(214,93,134,.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(214,93,134,.35);box-shadow:0 4px 24px rgba(0,0,0,.18);position:relative;overflow:hidden}
.daily-home-card::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 80% 50%,rgba(214,93,134,.12),transparent 60%);pointer-events:none}
.daily-home-done{border-color:rgba(74,222,128,.4)}
.daily-streak-flame{font-size:2.4rem;line-height:1;flex-shrink:0;filter:drop-shadow(0 2px 6px rgba(214,93,134,.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(214,93,134,.15),transparent 60%);pointer-events:none}
.daily-brief{font-size:1.05rem;color:rgba(255,255,255,.75);font-style:italic;margin-bottom:.9rem;line-height:1.55}
.daily-format-badge{display:inline-flex;align-items:center;gap:.45rem;border-radius:2rem;padding:.3rem .9rem;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;margin-bottom:.75rem}
.fmt-case{background:rgba(37,99,235,.25);border:1px solid rgba(37,99,235,.5);color:#93c5fd}
.fmt-sprint{background:rgba(217,119,6,.25);border:1px solid rgba(217,119,6,.5);color:#fcd34d}
.fmt-call{background:rgba(5,150,105,.25);border:1px solid rgba(5,150,105,.5);color:#6ee7b7}
.daily-streak-bar{display:flex;align-items:center;gap:.65rem;background:rgba(255,255,255,.07);border-radius:var(--rs);padding:.55rem .9rem;margin-top:.75rem}
.daily-streak-fire{font-size:1.4rem;filter:drop-shadow(0 1px 4px rgba(214,93,134,.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(214,93,134,.2);border:1px solid rgba(214,93,134,.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(214,93,134,0);transition:box-shadow .2s}
.daily-option-clickable:hover::before{box-shadow:0 0 0 2px rgba(214,93,134,.18)}
.daily-action-hint{display:inline-flex;align-items:center;gap:.35rem;background:rgba(214,93,134,.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(214,93,134,.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)}
.sprint-btn.wrong{background:rgba(220,38,38,.1);border-color:var(--er);color:var(--er)}
.sprint-progress{display:flex;gap:.4rem;margin-bottom:1.2rem}
.sprint-pip{height:4px;flex:1;border-radius:2px;background:var(--g200);transition:background .3s}
.sprint-pip.done-right{background:var(--ok)}
.sprint-pip.done-wrong{background:var(--er)}
.sprint-pip.active{background:var(--lo)}

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

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

/* Heatmap */
.md-heatmap-wrap{overflow-x:auto;padding-bottom:.5rem}
.md-heatmap-months{display:grid;grid-template-columns:repeat(53,minmax(11px,1fr));gap:2px;margin-left:30px;margin-bottom:.3rem;min-width:610px}
.md-heatmap-month{font-size:.66rem;color:var(--txm);font-weight:600;letter-spacing:.02em;grid-row:1}
.md-heatmap-body{display:flex;gap:4px;min-width:640px}
.md-heatmap-days{display:grid;grid-template-rows:repeat(7,minmax(11px,1fr));gap:2px;font-size:.66rem;color:var(--txm);width:26px;flex-shrink:0}
.md-heatmap-day{display:flex;align-items:center;height:11px;line-height:1}
.md-heatmap-grid{display:grid;grid-template-rows:repeat(7,minmax(11px,1fr));grid-auto-flow:column;grid-auto-columns:minmax(11px,1fr);gap:2px;flex:1}
.md-cell{width:100%;height:11px;border-radius:2px;background:var(--g200);transition:transform .15s,box-shadow .15s;cursor:default}
/* On phones, shrink the heatmap so the full year fits without horizontal
   scroll. Cells go from 11px to 6px and gaps tighten to 1px — still readable
   at a glance, no swiping required. */
@media (max-width:600px){
  .md-heatmap-wrap{overflow-x:hidden}
  .md-heatmap-months{min-width:0;grid-template-columns:repeat(53,minmax(6px,1fr));gap:1px;margin-left:18px;font-size:.55rem}
  .md-heatmap-month{font-size:.55rem}
  .md-heatmap-body{min-width:0;gap:2px}
  .md-heatmap-days{width:14px;font-size:.55rem;grid-template-rows:repeat(7,minmax(6px,1fr));gap:1px}
  .md-heatmap-day{height:6px}
  .md-heatmap-grid{grid-template-rows:repeat(7,minmax(6px,1fr));grid-auto-columns:minmax(6px,1fr);gap:1px}
  .md-cell{height:6px;border-radius:1px}
  .md-cell:hover{transform:scale(1.8)}
}
.md-cell:hover{transform:scale(1.4);box-shadow:0 0 0 1px var(--lo);z-index:1}
.md-cell-empty{background:rgba(0,0,0,.06)}
body.liq-dark .md-cell-empty{background:rgba(255,255,255,.05)}
.md-cell-future{background:transparent;border:1px dashed rgba(0,0,0,.05)}
body.liq-dark .md-cell-future{border-color:rgba(255,255,255,.04)}
.md-cell-wrong{background:rgba(217,119,6,.55)}
.md-cell-legacy{background:rgba(214,93,134,.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(214,93,134,.55);border-radius:var(--rl);padding:2rem 2rem 1.6rem;text-align:center;color:#fff;box-shadow:0 24px 70px rgba(0,0,0,.45),0 0 60px rgba(214,93,134,.25);max-width:420px;width:100%;z-index:2;animation:sm-card-pop .5s cubic-bezier(.34,1.56,.64,1)}
@keyframes sm-card-pop{0%{transform:scale(.6) translateY(20px);opacity:0}60%{transform:scale(1.06)}100%{transform:scale(1) translateY(0);opacity:1}}
.sm-flame{font-size:3rem;line-height:1;margin-bottom:.4rem;filter:drop-shadow(0 0 18px rgba(214,93,134,.7));animation:sm-flame-glow 1.6s ease-in-out infinite alternate}
@keyframes sm-flame-glow{0%{filter:drop-shadow(0 0 12px rgba(214,93,134,.5))}100%{filter:drop-shadow(0 0 26px rgba(214,93,134,.95))}}
.sm-num{font-family:var(--fd);font-size:5rem;font-weight:800;color:var(--lo);line-height:.95;margin:.1rem 0;text-shadow:0 0 30px rgba(214,93,134,.5),0 4px 0 rgba(0,0,0,.2)}
.sm-day-lbl{font-family:var(--fd);font-size:.8rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.65);margin-bottom:1rem}
.sm-title{font-family:var(--fd);font-size:1.5rem;font-weight:800;color:#fff;margin-bottom:.55rem;letter-spacing:.01em}
.sm-sub{font-size:.92rem;line-height:1.55;color:rgba(255,255,255,.78);margin-bottom:1.4rem}
.sm-card .btn-liq{font-size:.92rem;padding:.65rem 1.4rem}

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

/* Track completion celebration — reuses sm-overlay scaffolding (same backdrop,
   confetti, animation). Track-specific bits: trophy icon, accent ring around
   the track name, and a 2-stat strip (modules / XP earned). */
.tc-card{max-width:460px}
.tc-trophy{font-size:3.4rem;line-height:1;margin-bottom:.35rem;filter:drop-shadow(0 0 22px rgba(214,93,134,.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(214,93,134,.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(214,93,134,.06) 100%);border:1px solid var(--bdr);border-left:4px solid var(--lo);border-radius:var(--rl);padding:.85rem 1.05rem;margin-top:1rem;text-align:left;box-shadow:0 1px 4px rgba(0,0,0,.04)}
.daily-complete-learn-more>i{font-size:1.6rem;color:var(--lo);flex-shrink:0}
.daily-complete-learn-more>div{flex:1;min-width:0}
.daily-learn-more-eyebrow{font-size:.7rem;font-weight:800;color:var(--txm);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.15rem}
.daily-learn-more-title{font-family:var(--fd);font-size:.96rem;font-weight:700;color:var(--lp);line-height:1.3;overflow:hidden;text-overflow:ellipsis}
body.liq-dark .daily-complete-learn-more{background:rgba(214,93,134,.08)}
body.liq-dark .daily-learn-more-title{color:var(--heading)}
@media (max-width:480px){
  .daily-complete-learn-more{flex-direction:column;align-items:stretch;text-align:center;gap:.5rem}
  .daily-complete-learn-more>i{font-size:1.4rem}
}

/* Spaced-repetition review queue */
.daily-review-banner{display:flex;align-items:flex-start;gap:.75rem;background:linear-gradient(135deg,rgba(214,93,134,.10),rgba(214,93,134,.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(214,93,134,.12)}
body.liq-dark .daily-review-banner-title{color:#fcd34d}
.daily-review-pill{display:inline-flex;align-items:center;gap:.25rem;background:rgba(214,93,134,.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)}
.daily-complete-review-strip.is-new{background:rgba(214,93,134,.12);border:1px solid rgba(214,93,134,.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(214,93,134,.08);border-left:3px solid var(--lo);border-radius:0 var(--rs) var(--rs) 0;padding:.6rem .85rem;font-size:.83rem;color:var(--tx);margin:-.5rem 0 1rem;line-height:1.55}
.daily-call-insight strong{color:var(--lp)}
.daily-call-quality{display:inline-block;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;padding:.18rem .55rem;border-radius:.75rem;margin-left:.4rem}
.daily-call-quality.q-best{background:rgba(22,163,74,.18);color:var(--ok)}
.daily-call-quality.q-acceptable{background:rgba(217,119,6,.18);color:#b45309}
.daily-call-quality.q-weak{background:rgba(220,38,38,.14);color:var(--er)}
.daily-call-quality.q-wrong{background:rgba(220,38,38,.22);color:var(--er)}
body.liq-dark .daily-call-bubble{background:rgba(255,255,255,.05)}
body.liq-dark .daily-call-bubble.is-reply{background:rgba(5,150,105,.10)}
body.liq-dark .daily-call-bubble-name{color:var(--heading)}
body.liq-dark .daily-call-insight{background:rgba(214,93,134,.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}
/* ── 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(214,93,134,.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(214,93,134,.13);color:var(--lo-h)}
.th-pill-saved{background:rgba(22,163,74,.12);color:var(--ok)}
.th-pill-empty{background:var(--g100);color:var(--txm)}
.th-meta{font-size:.78rem;color:var(--txs);margin-top:.7rem}
.th-meta-dim{color:var(--txm);font-style:italic}
.th-snap-list{margin-top:.75rem;border-top:1px solid var(--bdr);padding-top:.7rem;display:flex;flex-direction:column;gap:.4rem}
.th-snap-row{display:flex;justify-content:space-between;align-items:flex-start;gap:.7rem;background:var(--bg);border-radius:var(--rs);padding:.55rem .75rem;cursor:pointer;transition:background .15s}
.th-snap-row:hover{background:var(--g100)}
.th-snap-main{flex:1;min-width:0}
.th-snap-title{font-size:.85rem;font-weight:700;color:var(--tx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.th-snap-summary{font-size:.76rem;color:var(--txs);margin-top:.18rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.th-snap-date{font-size:.72rem;color:var(--txm);font-weight:700;flex-shrink:0;white-space:nowrap}
.th-snap-more{margin-top:.45rem;font-size:.78rem;color:var(--txm);text-align:right}
.th-snap-more a{color:var(--lo);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(214,93,134,.05) 0%,rgba(214,93,134,.12) 100%);border:1.5px solid rgba(214,93,134,.35);border-radius:var(--rl);padding:.75rem .9rem;margin-bottom:.6rem}
.att-scan-row{display:flex;align-items:center;gap:.55rem}
.att-scan-ico{font-size:1.4rem;color:var(--lo-h);flex-shrink:0;animation:att-scan-pulse 1.6s ease-in-out infinite}
@keyframes att-scan-pulse{0%,100%{opacity:1}50%{opacity:.45}}
.att-scan-input{flex:1;border:1.5px solid var(--bdr);background:var(--wh);border-radius:var(--rs);padding:.5rem .75rem;font-family:'Courier New',monospace;font-size:.92rem;color:var(--tx)}
.att-scan-input:focus{outline:none;border-color:var(--lo);box-shadow:0 0 0 3px rgba(214,93,134,.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)}
.att-scan-status.att-scan-duplicate{background:var(--wa-l);color:var(--wa)}
.att-scan-status.att-scan-error{background:var(--er-l);color:var(--er)}
/* Manual-add search panel */
.att-manual-panel{margin-bottom:.6rem;position:relative}
.att-manual-row{display:flex;align-items:center;gap:.55rem;background:var(--wh);border:1.5px solid var(--bdr);border-radius:var(--rs);padding:.45rem .7rem}
.att-manual-row:focus-within{border-color:var(--lo)}
.att-manual-ico{color:var(--txm);font-size:.95rem}
.att-manual-input{flex:1;border:0;background:transparent;font-family:var(--fb);font-size:.86rem;color:var(--tx);outline:none}
.att-manual-results{margin-top:.3rem;background:var(--wh);border:1px solid var(--bdr);border-radius:var(--rs);box-shadow:var(--shm);max-height:240px;overflow-y:auto;position:absolute;top:100%;left:0;right:0;z-index:10}
.att-manual-result{display:flex;align-items:center;gap:.6rem;width:100%;background:transparent;border:0;padding:.5rem .75rem;text-align:left;cursor:pointer;border-bottom:1px solid var(--bdr)}
.att-manual-result:last-child{border-bottom:0}
.att-manual-result:hover{background:var(--lo-p)}
.att-manual-avatar{width:1.7rem;height:1.7rem;border-radius:50%;background:var(--lp);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:800;flex-shrink:0}
.att-manual-meta{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:.05rem}
.att-manual-name{font-size:.86rem;font-weight:700;color:var(--tx)}
.att-manual-sub{font-size:.74rem;color:var(--txm)}
.att-manual-empty{padding:.6rem .85rem;font-size:.82rem;color:var(--txm);font-style:italic}
/* Selected-attendees rail */
.att-selected-rail{background:var(--g100);border-radius:var(--rs);padding:.55rem .75rem;margin-bottom:.65rem}
.att-selected-hdr{font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);margin-bottom:.4rem}
.att-selected-chips{display:flex;flex-wrap:wrap;gap:.35rem}
.att-sel-chip{display:inline-flex;align-items:center;gap:.4rem;background:var(--wh);border:1px solid var(--bdr);border-radius:2rem;padding:.18rem .65rem .18rem .25rem;font-size:.8rem;font-weight:700;color:var(--tx);max-width:100%}
.att-sel-chip.att-sel-guest{background:rgba(214,93,134,.1);border-color:rgba(214,93,134,.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)}
/* 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(214,93,134,.08) 0%,rgba(214,93,134,.16) 100%)}
.liq-dark .my-qr-card{background:var(--wh)}
.liq-dark .my-qr-card-qr{background:#fff}

/* ── ADMIN SCANNER TAB ──────────────────────────────────────────
   Self-contained Set up / Test / Use / Troubleshoot panel. Sections
   are full-width cards with consistent padding. Test panel uses a
   2-column grid that stacks to 1 column on mobile. */
.scn-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap;background:linear-gradient(135deg,var(--lp) 0%,var(--lp-m) 100%);color:#fff;border-radius:var(--rl);padding:1.4rem 1.6rem;margin-bottom:1.4rem;position:relative;overflow:hidden}
.scn-hero::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 60% 80% at 100% 0%,rgba(214,93,134,.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(214,93,134,.18);background:var(--wh)}
.scn-test-ico{font-size:1.3rem;color:var(--lo-h);flex-shrink:0;animation:att-scan-pulse 1.6s ease-in-out infinite}
.scn-test-input{flex:1;border:0;background:transparent;font-family:'Courier New',monospace;font-size:.92rem;color:var(--tx);outline:none}
.scn-test-result{margin-top:.85rem;padding:.7rem 1rem;border-radius:var(--rs);font-size:.86rem;line-height:1.5;border:1px solid transparent}
.scn-test-result code{font-family:'Courier New',monospace;background:var(--wh);border:1px solid var(--bdr);padding:.05rem .35rem;border-radius:3px;font-size:.78rem}
.scn-test-result.scn-test-idle{background:var(--g100);color:var(--txm);font-style:italic}
.scn-test-result.scn-test-success{background:var(--ok-l);color:#15803d;border-color:rgba(22,163,74,.3)}
.scn-test-result.scn-test-error{background:var(--er-l);color:#b91c1c;border-color:rgba(220,38,38,.3)}
.scn-test-result.scn-test-duplicate{background:var(--wa-l);color:#b45309;border-color:rgba(217,119,6,.3)}
/* Test panel right column — your QR card */
.scn-yourqr-card{background:var(--bg);border:1px solid var(--bdr);border-radius:var(--rl);padding:1rem;text-align:center}
.scn-yourqr-label{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--txm);margin-bottom:.55rem}
.scn-yourqr-img{width:160px;height:160px;background:var(--wh);border:2px solid var(--bdr);border-radius:var(--rs);padding:8px;margin:0 auto .5rem}
.scn-yourqr-img svg{width:100%;height:100%;display:block}
.scn-yourqr-img-fail{display:flex;align-items:center;justify-content:center;color:var(--er);font-size:.8rem;font-weight:700;text-align:center;padding:.5rem}
.scn-yourqr-id{font-family:'Courier New',monospace;font-size:.7rem;color:var(--txm);word-break:break-all}
.scn-yourqr-hint{margin-top:.5rem;font-size:.74rem;color:var(--txs);background:var(--lo-l);border-left:3px solid var(--lo);border-radius:var(--rs);padding:.45rem .55rem;line-height:1.5;text-align:left}

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

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

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

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

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

/* ── Pre-Session Check CTA card (Scanner tab) ──────────────────── */
.scn-precheck-cta{display:flex;align-items:center;gap:1rem;background:linear-gradient(135deg,var(--lo-p) 0%,var(--lo-l) 100%);border:2px solid var(--lo);border-radius:var(--rl);padding:1.1rem 1.4rem;margin-bottom:1.4rem;box-shadow:0 4px 14px rgba(214,93,134,.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(214,93,134,.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)}
.ps-step-line{width:32px;height:2px;background:var(--bdr);margin-bottom:1.2rem}
.ps-body{padding:1.25rem 1.7rem 0}
.ps-step-title{font-family:var(--fd);font-size:1.1rem;font-weight:700;color:var(--heading);margin:0 0 .5rem}
.ps-step-sub{font-size:.9rem;color:var(--txs);line-height:1.55;margin:0 0 1rem}
.ps-step-block{padding:.5rem 0}
/* Step 1 grid — capture input on the left, sample QR on the right */
.ps-step-grid{display:grid;grid-template-columns:1fr 200px;gap:1.4rem;align-items:start}
.ps-step-left{min-width:0}
.ps-step-right{min-width:0}
.ps-scan-row{display:flex;align-items:center;gap:.55rem;background:var(--g100);border:2px solid var(--bdr);border-radius:var(--rs);padding:.55rem .85rem;transition:border-color .15s,box-shadow .15s;margin-bottom:.7rem}
.ps-scan-row:focus-within{border-color:var(--lo);box-shadow:0 0 0 3px rgba(214,93,134,.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);font-size:.82rem;font-weight:700;line-height:1.5;display:flex;flex-direction:column;align-items:center;gap:.35rem}
.ps-qr-card-warn>i{font-size:1.4rem}

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

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

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

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

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

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

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

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

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

/* ── 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(214,93,134,.15)}
.bulkqr-format input[type="radio"]{flex-shrink:0;margin-top:.25rem;accent-color:var(--lo)}
.bulkqr-format-icon{font-size:1.5rem;color:var(--lo-h);flex-shrink:0;margin-top:.1rem}
.bulkqr-format-meta{flex:1;min-width:0}
.bulkqr-format-title{font-family:var(--fd);font-size:.95rem;font-weight:700;color:var(--heading);line-height:1.3;margin-bottom:.25rem}
.bulkqr-format-desc{font-size:.8rem;color:var(--txs);line-height:1.5;margin-bottom:.45rem}
.bulkqr-format-out{font-size:.78rem;color:var(--tx);font-weight:600}
.bulkqr-format-out strong{color:var(--lp)}
.liq-dark .bulkqr-format{background:var(--g100)}
.liq-dark .bulkqr-format.active{background:var(--lo-p)}

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

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