/* ==========================================================================
   QuizFlow Learning Engine — frontend.css
   "Field Manual" theme: navy / brass / linen, Spectral + IBM Plex.
   Every color below is a CSS custom property fed by nqmp_theme_css() (see
   the main plugin file) — Settings → Appearance controls all of it live.
   Fallback values here only apply if that inline stylesheet fails to load.
   ========================================================================== */
:root{
  --nqmp-primary:#B3872F; --nqmp-primary-dark:#8C6A22; --nqmp-primary-light:#F3E9D5;
  --nqmp-text:#152238; --nqmp-success:#57623E; --nqmp-success-bg:#EEF0E7;
  --nqmp-danger:#8C3B2E; --nqmp-danger-bg:#F5E9E6;
  --nqmp-surface:#152238; --nqmp-surface-2:#1D2E4A; --nqmp-surface-border:rgba(251,250,246,.14); --nqmp-surface-text:rgba(251,250,246,.7);
  --nqmp-bg:#EDEBE0; --nqmp-bg-2:#E4E1D2; --nqmp-white:#FBFAF6;
  --nqmp-border:rgba(21,34,56,.13); --nqmp-muted:rgba(21,34,56,.62);
  --nqmp-radius:2px; --nqmp-radius-sm:2px;
  --nqmp-serif:'Spectral',Georgia,serif;
  --nqmp-sans:'IBM Plex Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --nqmp-mono:'IBM Plex Mono','SFMono-Regular',Consolas,monospace;
}

/* Any element toggled with the plain HTML `hidden` attribute must actually hide,
   even when it also carries a class that sets display:grid/flex (equal CSS
   specificity, so without this the grid/flex display can win the tie and the
   element stays visible — this is what caused every Exercises topic group to
   render stacked at once instead of only the active one). */
[hidden]{display:none!important;}

.nqmp-app,.nqmp-dashboard,.nqmp-flashcards,.nqmp-frontend-wrap{
  max-width:1180px;margin:30px auto;padding:20px;
  font-family:var(--nqmp-sans);color:var(--nqmp-text);line-height:1.5;
}
.nqmp-app *,.nqmp-dashboard *,.nqmp-flashcards *,.nqmp-frontend-wrap *{box-sizing:border-box;}
/* Defeat theme/page-builder global button & link styling (hover states that
   force a black/blurred background or white-on-white text on our buttons,
   tabs and links). Every interactive element inside the app gets its
   look reset here so our own :hover/.active rules are the ones that win. */
.nqmp-dashboard button,.nqmp-app button,.nqmp-flashcards button,.nqmp-frontend-wrap button,
.nqmp-dashboard a,.nqmp-app a,.nqmp-flashcards a,.nqmp-frontend-wrap a{
  text-shadow:none!important;box-shadow:none!important;outline:none!important;
}
.nqmp-dashboard button:hover,.nqmp-dashboard button:focus,.nqmp-dashboard a:hover,.nqmp-dashboard a:focus,
.nqmp-app button:hover,.nqmp-app button:focus,.nqmp-app a:hover,.nqmp-app a:focus,
.nqmp-flashcards button:hover,.nqmp-flashcards button:focus,.nqmp-flashcards a:hover,.nqmp-flashcards a:focus,
.nqmp-frontend-wrap button:hover,.nqmp-frontend-wrap button:focus,.nqmp-frontend-wrap a:hover,.nqmp-frontend-wrap a:focus{
  text-shadow:none!important;box-shadow:none!important;outline:none!important;text-decoration:none;
}
.nqmp-app h1,.nqmp-app h2,.nqmp-app h3,.nqmp-dashboard h1,.nqmp-dashboard h2,.nqmp-dashboard h3,
.nqmp-flashcards h1,.nqmp-flashcards h2,.nqmp-flashcards h3,.nqmp-frontend-wrap h1,.nqmp-frontend-wrap h2,.nqmp-frontend-wrap h3{
  font-family:var(--nqmp-serif);font-weight:600;letter-spacing:-.01em;margin:0;
}
.nqmp-muted{color:var(--nqmp-muted);}
.nqmp-btn{display:inline-block;border:1px solid var(--nqmp-surface);border-radius:var(--nqmp-radius);background:var(--nqmp-surface);color:#fff!important;padding:12px 20px;font-weight:600;font-size:.92rem;cursor:pointer;text-decoration:none;transition:background .15s,transform .12s;font-family:var(--nqmp-sans);}
.nqmp-btn:hover:not(:disabled){background:var(--nqmp-surface-2);}
.nqmp-btn:disabled{opacity:.45;cursor:not-allowed;}
.nqmp-btn-light{background:transparent;color:var(--nqmp-text)!important;border-color:var(--nqmp-border);}
.nqmp-btn-light:hover:not(:disabled){border-color:var(--nqmp-surface);background:var(--nqmp-bg-2);}
.nqmp-btn-gold{background:var(--nqmp-primary);border-color:var(--nqmp-primary);color:var(--nqmp-text)!important;}
.nqmp-btn-gold:hover:not(:disabled){background:var(--nqmp-primary-dark);color:#fff!important;}
.nqmp-btn-warn{background:var(--nqmp-primary)!important;border-color:var(--nqmp-primary)!important;color:var(--nqmp-text)!important;}
.nqmp-btn-good{background:var(--nqmp-success)!important;border-color:var(--nqmp-success)!important;}

/* ===================== QUIZ TOP BAR ===================== */
.nqmp-app{position:relative;padding:0;max-width:1180px;}
.nqmp-top{
  position:sticky;top:0;z-index:20;background:var(--nqmp-surface);color:#fff;
  display:flex;justify-content:space-between;align-items:center;gap:20px;
  padding:16px 24px;
}
.nqmp-eyebrow{font-family:var(--nqmp-mono);font-size:.72rem;letter-spacing:.03em;color:var(--nqmp-primary);display:block;margin-bottom:2px;}
.nqmp-access-pill{display:inline-block;font-family:var(--nqmp-mono);font-size:.66rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:2px 9px;border-radius:20px;margin:0 0 2px 8px;vertical-align:middle;background:rgba(255,255,255,.14);color:#fff;}
.nqmp-access-pill-free{background:var(--nqmp-success);color:#fff;}
.nqmp-access-pill-partial{background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.35);}
.nqmp-access-pill-pro,.nqmp-access-pill-premium,.nqmp-access-pill-custom{background:var(--nqmp-primary);color:var(--nqmp-text);}
.nqmp-top h2{color:#fff;font-size:1.15rem;margin:2px 0 0;}
.nqmp-timer{font-family:var(--nqmp-mono);font-size:1.05rem;font-weight:600;background:var(--nqmp-surface-2);border:1px solid var(--nqmp-surface-border);color:#fff;padding:8px 16px;display:flex;align-items:center;gap:8px;white-space:nowrap;}
.nqmp-back-pill{display:inline-flex;align-items:center;gap:6px;background:var(--nqmp-surface-2);color:#fff!important;text-decoration:none;font-weight:600;font-size:.78rem;padding:8px 14px;border:1px solid var(--nqmp-surface-border);border-radius:var(--nqmp-radius);margin-right:8px;transition:.15s;}
.nqmp-back-pill:hover{background:#25395b;}
.nqmp-progress{height:3px;background:var(--nqmp-surface-border);margin:0;}
.nqmp-progress span{display:block;height:100%;background:var(--nqmp-primary);width:0;transition:width .25s;}

/* ===================== QUIZ SHELL / LAYOUT ===================== */
/* .nqmp-sidebar and .nqmp-main below pin grid-column AND grid-row with !important.
 * Some themes/page builders apply their own CSS-grid rules to the content area a
 * shortcode is dropped into (e.g. block themes that grid the post content to support
 * wide/full alignment). Without !important here, a same-or-higher-specificity theme
 * rule loaded after ours can win the placement, and .nqmp-main gets shoved into an
 * implicit new row below the sidebar instead of sitting beside it — sidebar renders
 * fine, but the question area appears far down the page with a big blank gap above
 * it. This only shows up on an arbitrary theme page, never on the plugin's own quiz
 * template or the dashboard, because those don't run through that theme grid CSS. */
.nqmp-shell{
  display:grid!important;grid-template-columns:280px minmax(0,1fr)!important;
  gap:0;align-items:start;position:relative;isolation:isolate;
}
.nqmp-sidebar{
  background:var(--nqmp-white);border-right:1px solid var(--nqmp-border);padding:22px;
  position:sticky!important;top:70px;align-self:start;max-height:calc(100vh - 70px);overflow-y:auto;
  grid-column:1!important;grid-row:1!important;z-index:2;
}

/* ===================== UPGRADE CTA ("Get Full Access" box) ===================== */
/* Shown to any visitor who isn't already a paying (Pro/Premium) member — on free
   quizzes too, not just locked ones — via nqmp_cta_html(). Fully admin-configurable
   under Settings → QuizFlow Settings → Upgrade CTA.
   Lives in the main question column now, right above the Flag/Previous/Skip/Next
   row — the one spot on the screen the visitor is guaranteed to look at on every
   single question, since they have to use those buttons to move on. That also
   means it's never inside a scrolling container (unlike the old sidebar
   placement), so there's nothing to scroll past to see it. Laid out as a compact
   horizontal banner on wider screens so it doesn't add much extra height above
   the nav buttons; stacks vertically once space is tight. */
.nqmp-main-cta{margin:28px 0 22px;padding-top:24px;border-top:1px dashed var(--nqmp-border);}
.nqmp-main-cta .nqmp-upsell-card{display:flex;align-items:center;flex-wrap:wrap;gap:8px 22px;padding:16px 20px;}
.nqmp-main-cta .nqmp-upsell-top{flex:0 0 auto;margin-bottom:0;}
.nqmp-main-cta .nqmp-upsell-price{flex:0 0 auto;margin-bottom:0;}
.nqmp-main-cta .nqmp-upsell-features{flex:1 1 240px;flex-direction:row;flex-wrap:wrap;gap:5px 18px;margin:0;}
.nqmp-main-cta .nqmp-upsell-features li{font-size:.78rem;}
.nqmp-main-cta .nqmp-upsell-btn{flex:0 0 auto;width:auto;white-space:nowrap;}
.nqmp-main-cta .nqmp-upsell-footnote{flex-basis:100%;margin:8px 0 0;text-align:left;}
@media(max-width:700px){
  .nqmp-main-cta .nqmp-upsell-card{flex-direction:column;align-items:stretch;}
  .nqmp-main-cta .nqmp-upsell-btn{width:100%;}
}
.nqmp-upsell-card{border:1.5px solid var(--nqmp-primary);background:var(--nqmp-white);padding:18px;position:relative;}
.nqmp-upsell-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;}
.nqmp-upsell-eyebrow{font-family:var(--nqmp-mono);font-size:.68rem;font-weight:700;letter-spacing:.04em;color:var(--nqmp-primary-dark);}
.nqmp-upsell-badge{font-family:var(--nqmp-mono);font-size:.62rem;font-weight:700;background:var(--nqmp-primary-light);color:var(--nqmp-primary-dark);padding:3px 9px;border-radius:20px;white-space:nowrap;}
.nqmp-upsell-price{font-family:var(--nqmp-serif);font-size:1.7rem;font-weight:700;color:var(--nqmp-text);line-height:1;margin-bottom:14px;}
.nqmp-upsell-price span{font-family:var(--nqmp-sans);font-size:.78rem;font-weight:600;color:var(--nqmp-muted);margin-left:4px;}
.nqmp-upsell-features{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-direction:column;gap:9px;}
.nqmp-upsell-features li{display:flex;align-items:flex-start;gap:8px;font-size:.82rem;line-height:1.4;color:var(--nqmp-text);}
.nqmp-upsell-features li svg{flex:0 0 auto;color:var(--nqmp-primary);margin-top:2px;}
.nqmp-upsell-btn{display:block;width:100%;text-align:center;box-sizing:border-box;}
.nqmp-upsell-footnote{margin:12px 0 0;font-size:.72rem;color:var(--nqmp-muted);text-align:center;line-height:1.5;}
.nqmp-upsell-footnote a{color:var(--nqmp-primary-dark);font-weight:600;}
.nqmp-stat{display:inline-flex;width:48%;box-sizing:border-box;flex-direction:column;align-items:center;padding:12px 5px;background:var(--nqmp-bg);border:1px solid var(--nqmp-border);margin-bottom:12px;}
.nqmp-stat:first-child{margin-right:4%;}
.nqmp-stat b{font-family:var(--nqmp-mono);font-size:1.3rem;}
.nqmp-sidebar .nqmp-stat:first-child b{color:var(--nqmp-success);}
.nqmp-sidebar .nqmp-stat:nth-child(2) b{color:var(--nqmp-danger);}
.nqmp-stat small{font-family:var(--nqmp-mono);font-size:.68rem;color:var(--nqmp-muted);margin-top:2px;}
.nqmp-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px;}
.nqmp-grid button{box-sizing:border-box;width:100%;padding:0;margin:0;border:1px solid var(--nqmp-border);background:var(--nqmp-white);font-family:var(--nqmp-mono);height:32px;line-height:1;font-size:.72rem;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;color:var(--nqmp-muted);}
.nqmp-grid button.active{border-color:var(--nqmp-surface);background:var(--nqmp-surface);color:#fff;}
.nqmp-grid button.answered:not(.active){background:var(--nqmp-bg-2);color:var(--nqmp-text);border-color:var(--nqmp-border);}
.nqmp-grid button.flagged::after{content:"";position:absolute;top:2px;right:2px;width:4px;height:4px;background:var(--nqmp-primary);border-radius:50%;}
.nqmp-legend{display:flex;flex-direction:column;gap:7px;font-family:var(--nqmp-mono);font-size:.72rem;color:var(--nqmp-muted);border-top:1px solid var(--nqmp-border);margin-top:16px;padding-top:14px;}
.nqmp-legend span{display:flex;align-items:center;gap:7px;}
.nqmp-lg-dot{width:10px;height:10px;flex-shrink:0;display:inline-block;background:var(--nqmp-white);border:1px solid var(--nqmp-border);}
.nqmp-lg-dot.nqmp-lg-answered{background:var(--nqmp-bg-2);}
.nqmp-lg-dot.nqmp-lg-current{background:var(--nqmp-surface);border-color:var(--nqmp-surface);}
.nqmp-lg-dot.nqmp-lg-flag{position:relative;}
.nqmp-lg-dot.nqmp-lg-flag::after{content:"";position:absolute;top:-2px;right:-2px;width:4px;height:4px;background:var(--nqmp-primary);border-radius:50%;}
.nqmp-finish-btn{width:100%;text-align:center;margin-top:16px;}

.nqmp-main{padding:32px 34px 60px;background:var(--nqmp-bg);position:relative;z-index:1;grid-column:2!important;grid-row:1!important;min-width:0;width:100%;}
.nqmp-meta{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:22px;}
.nqmp-counter{font-family:var(--nqmp-mono);font-size:.78rem;font-weight:600;color:var(--nqmp-muted);letter-spacing:.03em;}
.nqmp-domain{font-family:var(--nqmp-mono);font-size:.72rem;background:var(--nqmp-success-bg);color:var(--nqmp-success);padding:5px 11px;border-radius:20px;font-weight:600;}
.nqmp-question{font-family:var(--nqmp-serif);font-size:1.3rem;font-weight:500;line-height:1.5;margin:0 0 26px;color:var(--nqmp-text);}
.nqmp-answers{display:flex;flex-direction:column;gap:12px;max-width:760px;}
.nqmp-answer{display:flex;align-items:center;gap:16px;border:1px solid var(--nqmp-border);padding:16px 18px;cursor:pointer;transition:border-color .15s,background .15s;background:var(--nqmp-white);}
.nqmp-answer:hover{border-color:var(--nqmp-primary);}
.nqmp-answer.selected{border-color:var(--nqmp-surface);background:var(--nqmp-bg-2);}
.nqmp-answer.selected .nqmp-letter{background:var(--nqmp-surface);color:#fff;border-color:var(--nqmp-surface);}
.nqmp-letter{display:flex;align-items:center;justify-content:center;width:30px;height:30px;flex:0 0 30px;border:1px solid var(--nqmp-border);border-radius:50%;font-family:var(--nqmp-mono);font-weight:600;font-size:.82rem;color:var(--nqmp-muted);transition:.15s;}

.nqmp-actions{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:26px;max-width:760px;flex-wrap:wrap;padding-top:20px;border-top:1px solid var(--nqmp-border);}
.nqmp-actions-nav{display:flex;gap:10px;}
.nqmp-flag{background:transparent;color:var(--nqmp-muted)!important;border:1px solid var(--nqmp-border)!important;font-family:var(--nqmp-mono);font-size:.8rem;padding:10px 16px;}
.nqmp-flag:hover,.nqmp-flag.active{border-color:var(--nqmp-primary)!important;color:var(--nqmp-primary-dark)!important;}
.nqmp-flag.active{background:var(--nqmp-primary-light);}
.nqmp-actions .nqmp-skip{background:transparent;color:var(--nqmp-text)!important;border:1px solid var(--nqmp-border);}
.nqmp-actions .nqmp-skip:hover{border-color:var(--nqmp-surface)!important;background:var(--nqmp-bg-2)!important;color:var(--nqmp-text)!important;}

.nqmp-feedback{margin-top:20px;max-width:760px;border:1px solid var(--nqmp-border);padding:18px 20px;background:var(--nqmp-white);}
.nqmp-feedback.correct{background:var(--nqmp-success-bg);border-color:var(--nqmp-success);}
.nqmp-feedback.incorrect{background:var(--nqmp-danger-bg);border-color:var(--nqmp-danger);}
.nqmp-feedback strong{font-family:var(--nqmp-serif);font-size:1.05rem;}
.nqmp-feedback p{margin:8px 0;}
.nqmp-explanation{margin:10px 0;line-height:1.65;}
.nqmp-explanation p{margin:7px 0;}
.nqmp-source{margin-top:12px;padding-top:10px;border-top:1px solid var(--nqmp-border);color:var(--nqmp-muted);font-size:.78rem;font-weight:600;}
.nqmp-source a{color:var(--nqmp-primary-dark);}
.nqmp-bookmark{border:0;background:transparent;color:var(--nqmp-primary-dark);font-weight:600;cursor:pointer;padding:10px 0 0;font-family:var(--nqmp-sans);}

.nqmp-ai{margin-top:20px;max-width:760px;background:var(--nqmp-surface);color:#fff;border:1px solid var(--nqmp-surface);padding:16px 20px;font-weight:600;font-family:var(--nqmp-mono);font-size:.85rem;}
.nqmp-ai small{display:block;color:var(--nqmp-surface-text);font-weight:400;margin-top:4px;font-family:var(--nqmp-sans);}
.nqmp-locked,.nqmp-dashboard-login{padding:40px 30px;text-align:center;background:var(--nqmp-white);border:1px solid var(--nqmp-border);}

/* ===================== QUIZ LAYOUT VARIANTS ===================== */
.nqmp-layout-focus .nqmp-shell,.nqmp-layout-study .nqmp-shell,.nqmp-layout-compact .nqmp-shell,.nqmp-layout-classic .nqmp-shell{display:block!important;}
.nqmp-layout-focus .nqmp-sidebar,.nqmp-layout-study .nqmp-sidebar,.nqmp-layout-compact .nqmp-sidebar,.nqmp-layout-classic .nqmp-sidebar{display:none!important;}
.nqmp-layout-focus .nqmp-main,.nqmp-layout-study .nqmp-main{max-width:820px;margin:0 auto;}
.nqmp-layout-compact .nqmp-main{max-width:760px;margin:0 auto;}
.nqmp-layout-compact .nqmp-question{font-size:1.05rem;}

@media(max-width:900px){
  .nqmp-shell{display:block!important;}
  .nqmp-sidebar{display:none!important;}
  .nqmp-main{padding:22px 18px 50px;}
  .nqmp-question{font-size:1.1rem;}
  .nqmp-top{padding:14px 16px;flex-wrap:wrap;}
  .nqmp-top h2{font-size:1rem;}
}

/* ===================== SCORE REPORT (rich results screen) ===================== */
.nqmp-final{text-align:left;padding:0;max-width:900px;}
.nqmp-final-rich{display:flex;flex-direction:column;gap:32px;}
.nqmp-final-top{display:flex;gap:32px;align-items:center;flex-wrap:wrap;background:var(--nqmp-surface);color:#fff;padding:32px;}
.nqmp-result-ring{position:relative;width:150px;height:150px;flex-shrink:0;}
.nqmp-result-ring-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;}
.nqmp-result-ring-num{font-family:var(--nqmp-mono);font-size:1.9rem;font-weight:600;color:#fff;}
.nqmp-final-top-copy{flex:1;min-width:220px;}
.nqmp-final-tag{display:inline-block;font-family:var(--nqmp-mono);font-size:.74rem;padding:5px 11px;border-radius:20px;margin-bottom:12px;}
.nqmp-final-tag.pass{background:var(--nqmp-success-bg);color:var(--nqmp-success);}
.nqmp-final-tag.fail{background:var(--nqmp-primary-light);color:var(--nqmp-primary-dark);}
.nqmp-final-top-copy h2{color:#fff;font-size:1.6rem;margin-bottom:8px;}
.nqmp-final-top-copy p{color:var(--nqmp-surface-text);margin:0;line-height:1.6;}
.nqmp-final-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px;}

.nqmp-result-breakdown,.nqmp-result-review{background:var(--nqmp-white);border:1px solid var(--nqmp-border);padding:26px 28px;}
.nqmp-result-breakdown h3,.nqmp-result-review h3{font-size:1.1rem;margin-bottom:18px;}
.nqmp-result-bar-row{margin-bottom:16px;}
.nqmp-result-bar-row:last-child{margin-bottom:0;}
.nqmp-result-bar-row>div{display:flex;justify-content:space-between;margin-bottom:6px;font-size:.9rem;}
.nqmp-result-bar-row b{font-family:var(--nqmp-mono);}
.nqmp-result-bar-row b.strong{color:var(--nqmp-success);}
.nqmp-result-bar-row b.mid{color:var(--nqmp-primary-dark);}
.nqmp-result-bar-row b.weak{color:var(--nqmp-danger);}
.nqmp-result-bar-track{height:7px;background:var(--nqmp-bg-2);}
.nqmp-result-bar-fill{height:100%;background:var(--nqmp-success);}
.nqmp-result-bar-fill.mid{background:var(--nqmp-primary);}
.nqmp-result-bar-fill.weak{background:var(--nqmp-danger);}
.nqmp-result-bar-row small{display:block;margin-top:5px;color:var(--nqmp-muted);font-family:var(--nqmp-mono);font-size:.72rem;}

.nqmp-review-item{border-bottom:1px solid var(--nqmp-border);padding:14px 0;}
.nqmp-review-item:last-child{border-bottom:0;}
.nqmp-review-item summary{cursor:pointer;font-weight:600;font-size:.94rem;list-style:none;}
.nqmp-review-item summary::-webkit-details-marker{display:none;}
.nqmp-review-item summary::before{content:"+ ";color:var(--nqmp-primary);font-family:var(--nqmp-mono);}
.nqmp-review-item[open] summary::before{content:"– ";}
.nqmp-review-body{margin-top:14px;padding-left:4px;}
.nqmp-review-q{margin-bottom:12px;line-height:1.6;}
.nqmp-review-your{color:var(--nqmp-danger);margin-bottom:6px;font-size:.9rem;}
.nqmp-review-correct{color:var(--nqmp-success);margin-bottom:10px;font-size:.9rem;}

/* ===================== PAYWALL POPUP ===================== */
.nqmp-paywall-overlay{position:fixed;inset:0;background:rgba(21,34,56,.6);display:flex;align-items:center;justify-content:center;padding:20px;z-index:9999;}
.nqmp-paywall-overlay[hidden]{display:none;}
.nqmp-paywall-modal{position:relative;background:var(--nqmp-white);max-width:420px;width:100%;padding:34px 30px 30px;text-align:center;border:1px solid var(--nqmp-border);}
.nqmp-paywall-close{position:absolute;top:14px;right:14px;width:28px;height:28px;background:var(--nqmp-bg-2);border:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--nqmp-muted);font-size:14px;}
.nqmp-paywall-ring{--nqmp-ring-pct:20%;width:86px;height:86px;border-radius:50%;margin:0 auto 18px;background:conic-gradient(var(--nqmp-primary) 0% var(--nqmp-ring-pct),var(--nqmp-bg-2) var(--nqmp-ring-pct) 100%);display:flex;align-items:center;justify-content:center;position:relative;}
.nqmp-paywall-ring:before{content:"";position:absolute;inset:6px;background:var(--nqmp-white);border-radius:50%;}
.nqmp-paywall-ring-num{position:relative;font-family:var(--nqmp-mono);font-size:.85rem;font-weight:600;}
.nqmp-paywall-modal h3{margin:0 0 10px;font-size:1.25rem;}
.nqmp-paywall-sub{font-size:.88rem;color:var(--nqmp-muted);line-height:1.6;margin:0 0 22px;}
.nqmp-paywall-upgrade{display:block;width:100%;text-align:center;margin-bottom:10px;}
.nqmp-paywall-review{display:block;width:100%;text-align:center;}

/* ==========================================================================
   PAGE HEADER — study guide / flashcards picker header
   ========================================================================== */
.nqmp-frontend-wrap{padding:20px;}
.nqmp-page-header{padding:30px 32px;margin-bottom:22px;background:var(--nqmp-surface);color:#fff;}
.nqmp-page-header .nqmp-eyebrow{color:var(--nqmp-primary);display:block;margin-top:2px;}
.nqmp-page-header h1{color:#fff;margin:8px 0 0;font-size:1.7rem;}
.nqmp-page-header-meta{margin-top:14px;display:flex;gap:8px;flex-wrap:wrap;}
.nqmp-page-header-meta .nqmp-domain{background:var(--nqmp-surface-2);color:#fff;font-weight:600;}
.nqmp-page-header .nqmp-back-link{color:var(--nqmp-surface-text);font-weight:600;margin:12px 0 0;display:inline-block;text-decoration:none;font-size:.85rem;}
.nqmp-page-header .nqmp-back-link:hover{color:#fff;}
.nqmp-back-link{display:inline-block;color:var(--nqmp-muted);text-decoration:none;font-size:.82rem;font-weight:600;margin-bottom:8px;}
.nqmp-back-link:hover{color:var(--nqmp-primary-dark);}

/* ===================== STUDY GUIDE ===================== */
.nqmp-study-guide{max-width:900px;margin:0 auto;padding:0;}
.nqmp-study-guide .nqmp-guide-content{background:var(--nqmp-white);border:1px solid var(--nqmp-border);padding:36px;font-family:var(--nqmp-serif);font-size:1.08rem;line-height:1.85;}
.nqmp-guide-content img{max-width:100%;height:auto;}
.nqmp-guide-content h2,.nqmp-guide-content h3{font-family:var(--nqmp-serif);margin-top:1.6em;}

/* ===================== FLASHCARDS ===================== */
.nqmp-fc-progress{text-align:center;margin-bottom:16px;}
.nqmp-fc-progress-text{display:inline-block;background:var(--nqmp-bg-2);color:var(--nqmp-text);font-family:var(--nqmp-mono);font-size:.72rem;letter-spacing:.03em;padding:6px 14px;}
.nqmp-flip-wrap{perspective:1800px;min-height:300px;max-width:900px;margin:0 auto;}
.nqmp-flip-card{position:relative;width:100%;min-height:300px;height:340px;transform-style:preserve-3d;transition:transform .5s cubic-bezier(.4,.2,.2,1);cursor:pointer;}
.nqmp-flip-card.flipped{transform:rotateY(180deg);}
.nqmp-card-front,.nqmp-card-back{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border:1px solid var(--nqmp-border);background:var(--nqmp-white);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px;overflow:auto;}
.nqmp-card-back{transform:rotateY(180deg);background:var(--nqmp-success-bg);}
.nqmp-card-front span,.nqmp-card-back span{display:inline-block;background:var(--nqmp-bg-2);color:var(--nqmp-text);padding:6px 12px;font-family:var(--nqmp-mono);font-size:.72rem;font-weight:600;margin-bottom:18px;}
.nqmp-card-back span{background:var(--nqmp-success);color:#fff;}
.nqmp-card-front h3,.nqmp-card-back h3{font-family:var(--nqmp-serif);font-size:1.6rem;max-width:760px;line-height:1.4;margin:0;overflow-wrap:anywhere;}
.nqmp-fc-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:22px;}
.nqmp-fc-actions .nqmp-btn{min-height:44px;}

@media(max-width:700px){
  .nqmp-flip-wrap{min-height:280px;}
  .nqmp-flip-card{height:300px;min-height:280px;}
  .nqmp-card-front,.nqmp-card-back{padding:26px 20px;}
  .nqmp-card-front h3,.nqmp-card-back h3{font-size:1.25rem;}
}

/* ===================== SHARED CONTENT CARD GRID (dashboard library + flashcard picker) ===================== */
.nqmp-content-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.nqmp-small-grid{grid-template-columns:repeat(4,1fr);}
.nqmp-content-card{padding:20px;border:1px solid var(--nqmp-border);background:var(--nqmp-white);transition:border-color .15s;display:flex;flex-direction:column;min-height:190px;text-decoration:none;color:inherit;cursor:pointer;}
.nqmp-content-card:hover{border-color:var(--nqmp-primary);}
.nqmp-card-top{display:flex;justify-content:space-between;gap:8px;align-items:center;}
.nqmp-type-badge,.nqmp-premium-badge{display:inline-block;font-family:var(--nqmp-mono);font-size:.68rem;font-weight:600;padding:5px 9px;background:var(--nqmp-bg-2);color:var(--nqmp-text);}
.nqmp-premium-badge{background:var(--nqmp-primary-light);color:var(--nqmp-primary-dark);}
.nqmp-content-card h4{font-family:var(--nqmp-serif);margin:14px 0 7px;font-size:1.05rem;font-weight:600;}
.nqmp-content-card p{margin:0;color:var(--nqmp-muted);font-size:.85rem;line-height:1.5;}
.nqmp-card-meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:auto;padding-top:15px;color:var(--nqmp-muted);font-family:var(--nqmp-mono);font-size:.72rem;}
.nqmp-card-bottom{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:13px;padding-top:12px;border-top:1px solid var(--nqmp-border);color:var(--nqmp-muted);font-family:var(--nqmp-mono);font-size:.72rem;}
.nqmp-card-link{color:var(--nqmp-primary-dark);text-decoration:none;font-weight:600;white-space:nowrap;font-family:var(--nqmp-sans);font-size:.85rem;}
.nqmp-content-card:hover .nqmp-card-link{text-decoration:underline;}
.nqmp-empty{grid-column:1/-1;padding:40px 28px;border:1.5px dashed var(--nqmp-border);text-align:center;color:var(--nqmp-muted);}
.nqmp-mini-progress{height:6px;background:var(--nqmp-bg-2);margin-top:14px;}
.nqmp-mini-progress span{display:block;height:100%;background:var(--nqmp-success);}
.nqmp-locked-card{opacity:.94;cursor:pointer;}
.nqmp-locked-card .nqmp-card-link{font-weight:700;}

@media(max-width:1000px){.nqmp-content-grid,.nqmp-small-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:650px){.nqmp-content-grid,.nqmp-small-grid{grid-template-columns:1fr;}}

/* ===================== LOCKED / UPGRADE CTA ===================== */
.qle-access-card{display:flex;align-items:center;gap:16px;margin:16px 0;padding:18px 20px;border:1px solid var(--nqmp-border);background:var(--nqmp-bg);}
.qle-lock-icon{font-size:22px;}
.qle-access-copy{display:flex;flex-direction:column;gap:3px;flex:1;}
.qle-access-copy strong{font-size:1rem;color:var(--nqmp-text);}
.qle-access-copy span{font-size:.85rem;color:var(--nqmp-muted);}
.qle-upgrade-btn{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;background:var(--nqmp-surface);color:#fff!important;padding:10px 16px;text-decoration:none!important;font-weight:600;font-size:.85rem;flex:0 0 auto;}
.qle-upgrade-btn:hover{background:var(--nqmp-surface-2);}
.qle-upgrade-btn.premium{background:var(--nqmp-primary);color:var(--nqmp-text)!important;}
.qle-upgrade-btn.premium:hover{background:var(--nqmp-primary-dark);color:#fff!important;}
.qle-upgrade-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:18px;}
.qle-upgrade-mini{border:1px solid var(--nqmp-border);padding:20px;background:var(--nqmp-white);display:flex;flex-direction:column;gap:8px;}
.qle-upgrade-mini strong{font-family:var(--nqmp-serif);font-size:1.15rem;}
.qle-upgrade-mini span{font-size:.85rem;color:var(--nqmp-muted);min-height:38px;}
@media(max-width:700px){.qle-access-card,.qle-upgrade-grid{grid-template-columns:1fr;display:grid;}.qle-upgrade-btn{width:100%;}}

/* ==========================================================================
   DASHBOARD (sidebar app shell)
   ========================================================================== */
/* Full-bleed base: fills whatever container it's placed in edge-to-edge.
   Actually escaping the theme's centered content wrapper (Elementor's
   .elementor-container, a classic theme's #content, etc) is handled in
   JS — see the "breakOutOfTheme" walk in frontend.js — since that wrapper's
   class names differ per theme and can't be targeted reliably from CSS. */
.nqmp-dashboard{
  max-width:100%;width:100%;margin:0;box-sizing:border-box;
  padding:24px clamp(16px,3vw,40px) 60px;
}
@media(max-width:650px){.nqmp-dashboard{padding:16px 14px 40px;}}
.nqmp-hint{background:var(--nqmp-primary-light);border:1px solid var(--nqmp-primary);color:var(--nqmp-primary-dark);padding:12px 16px;font-size:.85rem;font-weight:600;margin-bottom:16px;}

.nqmp-dash-head{
  display:flex;align-items:center;gap:22px;flex-wrap:wrap;
  padding:26px 30px;margin-bottom:20px;background:var(--nqmp-surface);color:#fff;
}
.nqmp-profile-avatar{flex:0 0 60px;width:60px;height:60px;background:var(--nqmp-surface-2);border:1px solid var(--nqmp-surface-border);display:flex;align-items:center;justify-content:center;font-family:var(--nqmp-serif);font-weight:600;font-size:1.4rem;color:#fff;}
.nqmp-profile-copy{flex:1;min-width:0;}
.nqmp-profile-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.nqmp-dash-head .nqmp-eyebrow{color:var(--nqmp-primary);}
.nqmp-member-badge{font-family:var(--nqmp-mono);font-size:.68rem;font-weight:600;background:var(--nqmp-success-bg);color:var(--nqmp-success);padding:4px 10px;border-radius:20px;}
.nqmp-dash-head h2{color:#fff;font-size:1.55rem;margin:6px 0 4px;}
.nqmp-dash-head p{color:var(--nqmp-surface-text);margin:0;line-height:1.5;}
.nqmp-head-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end;}
.nqmp-streak-chip{display:flex;align-items:center;gap:7px;background:var(--nqmp-surface-2);border:1px solid var(--nqmp-surface-border);color:var(--nqmp-primary);padding:10px 14px;}
.nqmp-streak-chip strong{font-family:var(--nqmp-mono);font-size:1.1rem;color:#fff;}
.nqmp-streak-chip span{font-size:.72rem;font-weight:600;}
.nqmp-continue-btn{background:var(--nqmp-primary)!important;color:var(--nqmp-text)!important;border-color:var(--nqmp-primary)!important;white-space:nowrap;}
.nqmp-continue-btn:hover{background:var(--nqmp-primary-dark)!important;color:#fff!important;}
@media(max-width:650px){.nqmp-dash-head{padding:20px;}.nqmp-continue-btn{width:100%;text-align:center;}}

/* ---- Rank / XP band ----
   Selector uses .nqmp-panel.nqmp-rank-card (both classes) deliberately: the
   generic .nqmp-panel rule further down this file sets a white background,
   and since it shares the same single-class specificity as .nqmp-rank-card
   but is declared later in the file, it was winning the cascade and leaving
   the card white with white (unreadable) text on top. The two-class selector
   below always wins regardless of source order, fixing that for good. */
.nqmp-panel.nqmp-rank-card{
  display:flex;align-items:center;gap:26px;flex-wrap:wrap;
  background:linear-gradient(135deg,var(--nqmp-surface),var(--nqmp-surface-2));
  color:#fff;border-color:var(--nqmp-surface);margin-bottom:18px;padding:24px 28px;
}
.nqmp-rank-badge{width:58px;height:58px;flex:0 0 58px;border:2px solid var(--nqmp-primary);display:flex;align-items:center;justify-content:center;color:var(--nqmp-primary);background:var(--nqmp-surface-2);border-radius:50%;box-shadow:0 0 0 4px rgba(179,135,47,.12);}
.nqmp-rank-info{flex:1;min-width:220px;}
.nqmp-rank-title{font-family:var(--nqmp-serif);font-size:1.3rem;font-weight:600;margin:4px 0 10px;color:#fff;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.nqmp-xp-pct-chip{font-family:var(--nqmp-mono);font-size:.7rem;font-weight:700;color:var(--nqmp-text);background:var(--nqmp-primary);padding:3px 9px;border-radius:20px;letter-spacing:.02em;}
.nqmp-rank-next{font-family:var(--nqmp-mono);font-size:.74rem;color:var(--nqmp-surface-text);font-weight:400;}
.nqmp-rank-hint{margin:10px 0 0;font-size:.8rem;color:var(--nqmp-surface-text);line-height:1.5;max-width:480px;}
.nqmp-xp-track{height:8px;border-radius:20px;background:var(--nqmp-surface-border);overflow:hidden;}
.nqmp-xp-fill{height:100%;border-radius:20px;background:linear-gradient(90deg,var(--nqmp-primary-dark),var(--nqmp-primary));transition:width .4s ease;}
.nqmp-xp-label{font-family:var(--nqmp-mono);font-size:.72rem;color:var(--nqmp-surface-text);margin-top:8px;}
.nqmp-rank-badges{display:flex;gap:8px;flex-wrap:wrap;max-width:220px;justify-content:flex-end;}
.nqmp-badge-chip{font-family:var(--nqmp-mono);font-size:.72rem;padding:6px 12px;border-radius:20px;background:rgba(179,135,47,.22);color:var(--nqmp-primary);border:1px solid rgba(179,135,47,.35);white-space:nowrap;}
.nqmp-badge-chip.locked{background:var(--nqmp-surface-border);color:var(--nqmp-surface-text);}
@media(max-width:700px){.nqmp-panel.nqmp-rank-card{padding:20px;}.nqmp-rank-badges{justify-content:flex-start;max-width:none;}}

/* ---- Stat cards ---- */
.nqmp-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px;}
.nqmp-cards-6{grid-template-columns:repeat(6,1fr);}
.nqmp-cards>div{background:var(--nqmp-white);border:1px solid var(--nqmp-border);padding:20px;transition:border-color .15s;}
.nqmp-cards>div:hover{border-color:var(--nqmp-primary);}
.nqmp-stat-icon{display:flex;align-items:center;justify-content:center;width:34px;height:34px;background:var(--nqmp-primary-light);color:var(--nqmp-primary-dark);margin-bottom:12px;}
.nqmp-cards b{display:block;font-family:var(--nqmp-mono);font-size:1.5rem;font-weight:600;letter-spacing:-.01em;}
.nqmp-cards span:not(.nqmp-stat-icon){color:var(--nqmp-muted);font-family:var(--nqmp-mono);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;display:block;margin-top:2px;}
.nqmp-cards small{display:block;color:var(--nqmp-muted);font-size:.72rem;margin-top:6px;}
@media(max-width:1000px){.nqmp-cards,.nqmp-cards-6{grid-template-columns:repeat(3,1fr);}}
@media(max-width:650px){.nqmp-cards,.nqmp-cards-6{grid-template-columns:1fr 1fr;}}

/* ---- Sidebar app-shell nav ---- */
.nqmp-dash-shell{display:grid;grid-template-columns:250px 1fr;gap:22px;align-items:start;}
.nqmp-dash-nav{display:flex;flex-direction:column;gap:2px;background:var(--nqmp-surface);border:1px solid var(--nqmp-surface);padding:16px;position:sticky;top:20px;}
.nqmp-nav-user{display:flex;align-items:center;gap:10px;padding:8px 10px 16px;margin-bottom:8px;border-bottom:1px solid var(--nqmp-surface-border);}
.nqmp-nav-avatar{width:36px;height:36px;background:var(--nqmp-surface-2);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--nqmp-serif);font-weight:600;flex:0 0 36px;}
.nqmp-nav-user strong{display:block;font-size:.85rem;line-height:1.3;color:#fff;}
.nqmp-nav-user small{color:var(--nqmp-surface-text);font-size:.72rem;}
.nqmp-nav-label{font-family:var(--nqmp-mono);font-size:.66rem;font-weight:600;letter-spacing:.06em;color:rgba(251,250,246,.35);text-transform:uppercase;padding:14px 10px 6px;}
.nqmp-dash-nav button{appearance:none;border:1px solid transparent;background:transparent;color:rgba(251,250,246,.68);font:inherit;font-family:var(--nqmp-sans);font-weight:600;font-size:.88rem;padding:10px 10px;cursor:pointer;transition:.15s;display:flex;align-items:center;gap:10px;text-align:left;width:100%;}
.nqmp-nav-ico{width:24px;height:24px;background:var(--nqmp-surface-2);display:inline-flex;align-items:center;justify-content:center;flex:0 0 24px;color:rgba(251,250,246,.5);}
.nqmp-dash-nav button:hover{background:var(--nqmp-surface-2);color:#fff;}
.nqmp-dash-nav button:hover .nqmp-nav-ico{color:#fff;}
.nqmp-dash-nav button.active{background:var(--nqmp-surface-2);color:#fff!important;border-left:2px solid var(--nqmp-primary);padding-left:8px;}
.nqmp-dash-nav button.active .nqmp-nav-ico{color:var(--nqmp-primary);}
.nqmp-dash-nav button em{font-style:normal;margin-left:auto;background:rgba(251,250,246,.1);border-radius:20px;padding:1px 7px;font-family:var(--nqmp-mono);font-size:.68rem;}
.nqmp-dash-nav button.active em{background:rgba(179,135,47,.3);color:var(--nqmp-primary);}
.nqmp-ic{display:block;}

.nqmp-dash-panels{min-width:0;}
.nqmp-tab-panel{display:none;}
.nqmp-tab-panel.active{display:block;animation:nqmpFade .15s ease;}
@keyframes nqmpFade{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}
.nqmp-section-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:18px;}
.nqmp-section-head h3{font-size:1.2rem;}

@media(max-width:1100px){
  .nqmp-dash-shell{grid-template-columns:1fr;}
  .nqmp-dash-nav{position:static;flex-direction:row;flex-wrap:wrap;overflow-x:auto;}
  .nqmp-nav-user{display:none;}
  .nqmp-nav-label{display:none;}
  .nqmp-dash-nav button{width:auto;white-space:nowrap;}
}

/* ---- Overview panel ---- */
.nqmp-overview-top{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:16px;margin-bottom:16px;}
.nqmp-panel{background:var(--nqmp-white);border:1px solid var(--nqmp-border);padding:22px;}
.nqmp-panel-kicker{font-family:var(--nqmp-mono);font-size:.68rem;font-weight:600;letter-spacing:.08em;color:var(--nqmp-primary);margin-bottom:10px;text-transform:uppercase;}
.nqmp-readiness-card h3,.nqmp-streak-card h3{margin:0 0 8px;font-size:1.1rem;}
.nqmp-readiness-card p{color:var(--nqmp-muted);line-height:1.55;margin:0 0 14px;}
.nqmp-readiness-row{display:flex;align-items:center;gap:18px;}
.nqmp-readiness-copy{flex:1;min-width:0;}
.nqmp-readiness-copy h3{margin-bottom:8px;}
.nqmp-readiness-copy p{margin:0;}
.nqmp-readiness-number{display:flex;align-items:baseline;gap:8px;padding-top:12px;border-top:1px solid var(--nqmp-border);}
.nqmp-readiness-number strong{font-family:var(--nqmp-mono);font-size:1.9rem;color:var(--nqmp-text);}
.nqmp-readiness-number span{font-size:.74rem;color:var(--nqmp-muted);font-family:var(--nqmp-mono);}
.nqmp-streak-main{display:flex;align-items:center;gap:12px;}
.nqmp-streak-main strong{font-family:var(--nqmp-mono);font-size:2.3rem;line-height:1;color:var(--nqmp-text);}
.nqmp-streak-main span{font-size:.72rem;color:var(--nqmp-muted);font-weight:600;}
.nqmp-streak-meta{display:flex;gap:16px;flex-wrap:wrap;margin:14px 0;color:var(--nqmp-muted);font-size:.78rem;}
.nqmp-streak-meta b{color:var(--nqmp-text);}
.nqmp-week-dots{display:flex;justify-content:space-between;gap:5px;margin:14px 0 8px;}
.nqmp-week-dots div{display:flex;flex-direction:column;align-items:center;gap:5px;font-family:var(--nqmp-mono);font-size:.62rem;color:var(--nqmp-muted);font-weight:600;}
.nqmp-week-dots i{width:18px;height:18px;border-radius:50%;background:var(--nqmp-bg-2);border:1px solid var(--nqmp-border);}
.nqmp-week-dots div.active i{background:var(--nqmp-success);border-color:var(--nqmp-success);}
.nqmp-focus-row{display:grid;grid-template-columns:1fr auto;gap:2px 8px;text-decoration:none;padding:10px 0;border-bottom:1px solid var(--nqmp-border);}
.nqmp-focus-row span{font-weight:600;color:var(--nqmp-text);}
.nqmp-focus-row b{font-family:var(--nqmp-mono);color:var(--nqmp-primary-dark);}
.nqmp-focus-row small{grid-column:1/-1;color:var(--nqmp-muted);font-size:.72rem;font-family:var(--nqmp-mono);}
.nqmp-quick{display:grid;gap:10px;margin-top:12px;}
.nqmp-quick button{width:100%;text-align:left;padding:12px 14px;border:1px solid var(--nqmp-border);background:var(--nqmp-white);color:var(--nqmp-text);font-weight:600;font-size:.85rem;cursor:pointer;display:flex;align-items:center;gap:10px;}
.nqmp-quick button:hover{border-color:var(--nqmp-primary);}

.nqmp-membership-cta-panel{margin-top:0;}
@media(max-width:1100px){.nqmp-overview-top{grid-template-columns:1fr 1fr;}.nqmp-overview-top>section:last-child{grid-column:1/-1;}}
@media(max-width:700px){.nqmp-dash-head{align-items:flex-start;}.nqmp-profile-avatar{width:52px;height:52px;flex-basis:52px;}.nqmp-head-actions{width:100%;justify-content:flex-start;}.nqmp-overview-top{grid-template-columns:1fr;}.nqmp-overview-top>section:last-child{grid-column:auto;}.nqmp-readiness-row{flex-direction:column;align-items:flex-start;}}

/* ---- Heatmap ---- */
.nqmp-trend-panel{margin-bottom:16px;}
.nqmp-trend-panel h3{font-size:1.05rem;margin:2px 0 14px;}
.nqmp-trend-chart{width:100%;}
.nqmp-trend-chart svg{width:100%;height:auto;display:block;}
.nqmp-heatmap-panel{margin-bottom:16px;}
.nqmp-heatmap-panel h3{font-size:1.05rem;margin:2px 0 16px;}
.nqmp-heatmap{display:grid;grid-template-columns:repeat(26,1fr);gap:3px;}
.nqmp-hm-cell{aspect-ratio:1;background:var(--nqmp-bg-2);display:block;}
.nqmp-hm-cell.active{background:var(--nqmp-success);}
.nqmp-heatmap-foot{display:flex;justify-content:space-between;align-items:center;margin-top:14px;font-family:var(--nqmp-mono);font-size:.72rem;color:var(--nqmp-muted);}
.nqmp-hm-legend{display:flex;align-items:center;gap:4px;}
.nqmp-hm-legend i{width:10px;height:10px;display:inline-block;background:var(--nqmp-bg-2);}
.nqmp-hm-legend i.l1{background:rgba(87,98,62,.4);}
.nqmp-hm-legend i.l2{background:rgba(87,98,62,.7);}
.nqmp-hm-legend i.l3{background:var(--nqmp-success);}
@media(max-width:650px){.nqmp-heatmap{grid-template-columns:repeat(13,1fr);}}

/* ---- Domain / topic performance panels ---- */
.nqmp-dash-grid{display:grid;grid-template-columns:2fr 1fr;gap:18px;}
.nqmp-dash-grid .nqmp-panel{margin-bottom:0;}
.nqmp-bar-row{margin:16px 0;}
.nqmp-bar-row:first-child{margin-top:0;}
.nqmp-bar-row>div{display:flex;justify-content:space-between;margin-bottom:6px;font-size:.88rem;}
.nqmp-bar-row i{height:8px;background:var(--nqmp-bg-2);display:block;overflow:hidden;}
.nqmp-bar-row em{display:block;height:100%;font-style:normal;}
.nqmp-bar-row small{display:block;margin-top:5px;color:var(--nqmp-muted);font-family:var(--nqmp-mono);font-size:.72rem;}
.nqmp-topic-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.nqmp-topic-grid>div{border:1px solid var(--nqmp-border);padding:14px;}
.nqmp-topic-grid strong{display:block;font-size:.88rem;}
.nqmp-topic-grid span{font-family:var(--nqmp-mono);font-size:1.3rem;font-weight:600;color:var(--nqmp-primary-dark);}
.nqmp-topic-grid small{display:block;color:var(--nqmp-muted);font-size:.72rem;margin-top:4px;}
@media(max-width:1000px){.nqmp-dash-grid{grid-template-columns:1fr;}.nqmp-topic-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:650px){.nqmp-topic-grid{grid-template-columns:1fr;}}

/* ---- Mistakes / bookmarks / history ---- */
.nqmp-list-row{display:flex;justify-content:space-between;gap:15px;padding:14px 0;border-bottom:1px solid var(--nqmp-border);}
.nqmp-list-row strong,.nqmp-list-row small{display:block;}
.nqmp-list-row small{color:var(--nqmp-muted);margin-top:4px;font-family:var(--nqmp-mono);font-size:.74rem;}
.nqmp-list-row>span{white-space:nowrap;}
.nqmp-badge-bad{color:var(--nqmp-danger);font-weight:600;display:flex;align-items:center;gap:5px;font-size:.8rem;}
.nqmp-history{width:100%;border-collapse:collapse;}
.nqmp-history th,.nqmp-history td{padding:12px;border-bottom:1px solid var(--nqmp-border);text-align:left;}
.nqmp-history th{font-family:var(--nqmp-mono);font-size:.7rem;color:var(--nqmp-muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em;}
@media(max-width:760px){.nqmp-history-wrap{overflow-x:auto;}.nqmp-history{min-width:600px;}}

/* ==========================================================================
   HOME / EXERCISES / GENERATOR panels — reuse the existing card/panel tokens
   above (.nqmp-content-card, .nqmp-panel, --nqmp-*) so they stay in sync with
   Settings → Appearance automatically; only new layout shapes are added here.
   ========================================================================== */

/* ---- Home: banner + prep cards ---- */
.nqmp-free-track-banner{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;background:var(--nqmp-surface);color:#fff;border-color:var(--nqmp-surface);margin-bottom:20px;}
.nqmp-free-track-banner h3{color:#fff;font-size:1.2rem;margin:4px 0 6px;}
.nqmp-free-track-banner p{color:var(--nqmp-surface-text);margin:0;}
.nqmp-free-track-banner .nqmp-btn{flex:0 0 auto;}
.nqmp-prep-card{cursor:default;}
.nqmp-prep-start{margin-top:auto;align-self:flex-start;}

/* ---- Exercises: domain / topic tab strips ---- */
.nqmp-domain-tabs,.nqmp-topic-tabs{display:flex;gap:6px;flex-wrap:wrap;overflow-x:auto;margin-bottom:16px;padding-bottom:2px;}
.nqmp-topic-tabs{margin-top:6px;}
.nqmp-domain-tab,.nqmp-topic-tab{appearance:none;border:1px solid var(--nqmp-border);background:var(--nqmp-white);color:var(--nqmp-muted);font:inherit;font-weight:600;font-size:.82rem;padding:9px 14px;cursor:pointer;white-space:nowrap;transition:.15s;}
.nqmp-domain-tab:hover,.nqmp-topic-tab:hover{border-color:var(--nqmp-primary)!important;color:var(--nqmp-text)!important;background:var(--nqmp-white)!important;}
.nqmp-domain-tab.active,.nqmp-topic-tab.active{background:var(--nqmp-surface)!important;border-color:var(--nqmp-surface)!important;color:#fff!important;}
.nqmp-domain-tab.active:hover,.nqmp-topic-tab.active:hover{color:#fff!important;background:var(--nqmp-surface)!important;}
.nqmp-domain-group{margin-bottom:8px;}

/* ---- Star rating (Exercise cards + Generator difficulty) ---- */
.nqmp-stars{display:inline-flex;gap:2px;vertical-align:middle;}
.nqmp-star{color:var(--nqmp-border);}
.nqmp-star.on{color:var(--nqmp-primary);}

/* ---- Exercise cards ----
   Column count is admin-configurable (Settings → Appearance → Exercises per
   row) via the --nqmp-exercise-cols custom property set in nqmp_theme_css();
   4 is the default/fallback if that's ever unset. */
.nqmp-topic-group.nqmp-content-grid{grid-template-columns:repeat(var(--nqmp-exercise-cols,4),1fr);}
.nqmp-exercise-card{gap:8px;padding:18px;transition:border-color .15s,box-shadow .15s,transform .15s;}
.nqmp-exercise-card:hover{box-shadow:0 6px 18px rgba(21,34,56,.08);transform:translateY(-1px);}
.nqmp-exercise-card .nqmp-card-top{margin-bottom:2px;}
.nqmp-exercise-card h4{font-size:.98rem;margin:0 0 2px;}
.nqmp-exercise-card .nqmp-card-meta{color:var(--nqmp-muted);}
.nqmp-exercise-card .nqmp-btn{margin-top:auto;width:100%;text-align:center;}
@media(max-width:1300px){.nqmp-topic-group.nqmp-content-grid{grid-template-columns:repeat(3,1fr);}}
@media(max-width:1000px){.nqmp-topic-group.nqmp-content-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:650px){.nqmp-topic-group.nqmp-content-grid{grid-template-columns:1fr;}}

/* ---- Generator: Create / My exercises toggle ---- */
.nqmp-gen-modes{display:flex;gap:8px;margin-bottom:22px;border-bottom:1px solid var(--nqmp-border);padding-bottom:14px;}
.nqmp-gen-mode-btn{appearance:none;border:1px solid var(--nqmp-border);background:var(--nqmp-white);color:var(--nqmp-muted);font:inherit;font-weight:600;font-size:.85rem;padding:9px 16px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;}
.nqmp-gen-mode-btn.active{background:var(--nqmp-surface);border-color:var(--nqmp-surface);color:#fff;}
.nqmp-gen-mode-btn em{font-style:normal;background:rgba(0,0,0,.08);border-radius:20px;padding:1px 7px;font-family:var(--nqmp-mono);font-size:.68rem;margin-left:2px;}
.nqmp-gen-mode-btn.active em{background:rgba(255,255,255,.2);}

/* ---- Generator: wizard steps ---- */
.nqmp-gen-step{background:var(--nqmp-white);border:1px solid var(--nqmp-border);padding:22px;margin-bottom:16px;}
.nqmp-gen-step h4{font-size:1.02rem;margin:0 0 16px;display:inline-block;}
.nqmp-gen-step-num{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--nqmp-primary-light);color:var(--nqmp-primary-dark);font-family:var(--nqmp-mono);font-weight:700;font-size:.78rem;margin-right:10px;vertical-align:middle;}
.nqmp-gen-domain-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;}
.nqmp-gen-domain-card{appearance:none;border:1.5px solid var(--nqmp-border);background:var(--nqmp-white);color:var(--nqmp-text)!important;font:inherit;font-weight:600;font-size:.85rem;padding:14px 12px;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;gap:10px;text-align:left;transition:.15s;}
.nqmp-gen-domain-card:hover{border-color:var(--nqmp-primary)!important;color:var(--nqmp-text)!important;background:var(--nqmp-white)!important;}
.nqmp-gen-domain-card.selected{border-color:var(--nqmp-surface)!important;background:var(--nqmp-bg-2)!important;color:var(--nqmp-text)!important;}
.nqmp-gen-domain-card.selected:hover{color:var(--nqmp-text)!important;}
.nqmp-gen-domain-card.selected .nqmp-gen-domain-ico{background:var(--nqmp-surface);color:#fff;}
.nqmp-gen-domain-ico{width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:var(--nqmp-bg-2);color:var(--nqmp-text);font-family:var(--nqmp-mono);font-weight:700;font-size:.85rem;}
.nqmp-gen-select-all{appearance:none;border:0;background:transparent!important;color:var(--nqmp-primary-dark)!important;font-weight:600;font-size:.82rem;cursor:pointer;padding:14px 0 0;}
.nqmp-gen-select-all:hover{color:var(--nqmp-primary-dark)!important;background:transparent!important;text-decoration:underline;}
.nqmp-gen-pills{display:flex;gap:8px;flex-wrap:wrap;}
.nqmp-gen-pill{appearance:none;border:1.5px solid var(--nqmp-border);background:var(--nqmp-white);color:var(--nqmp-text)!important;font:inherit;font-weight:600;font-size:.82rem;padding:10px 16px;border-radius:20px;cursor:pointer;transition:.15s;}
.nqmp-gen-pill:hover{border-color:var(--nqmp-primary)!important;color:var(--nqmp-text)!important;background:var(--nqmp-white)!important;}
.nqmp-gen-pill.active{background:var(--nqmp-surface)!important;border-color:var(--nqmp-surface)!important;color:#fff!important;}
.nqmp-gen-pill.active:hover{color:#fff!important;background:var(--nqmp-surface)!important;}
.nqmp-gen-diff-row{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:18px;}
.nqmp-gen-diff-btn{position:relative;appearance:none;border:1.5px solid var(--nqmp-border);background:var(--nqmp-white);color:var(--nqmp-text)!important;font:inherit;padding:14px 8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:8px;transition:.15s;}
.nqmp-gen-diff-btn:hover{border-color:var(--nqmp-primary)!important;color:var(--nqmp-text)!important;background:var(--nqmp-white)!important;}
.nqmp-gen-diff-btn.active{border-color:var(--nqmp-surface)!important;background:var(--nqmp-bg-2)!important;color:var(--nqmp-text)!important;}
.nqmp-gen-diff-btn span{font-size:.76rem;font-weight:600;}
.nqmp-gen-auto-tag{position:absolute;top:-9px;right:-6px;background:var(--nqmp-primary);color:var(--nqmp-text);font-style:normal;font-family:var(--nqmp-mono);font-size:.6rem;font-weight:700;padding:2px 6px;}
.nqmp-gen-toggle{display:flex;align-items:center;gap:12px;padding-top:16px;border-top:1px solid var(--nqmp-border);cursor:pointer;}
.nqmp-gen-toggle input{position:absolute;opacity:0;width:0;height:0;}
.nqmp-gen-toggle-track{width:38px;height:22px;flex:0 0 38px;background:var(--nqmp-bg-2);border:1px solid var(--nqmp-border);position:relative;transition:.15s;}
.nqmp-gen-toggle-track::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--nqmp-white);transition:.15s;box-shadow:0 1px 2px rgba(0,0,0,.2);}
.nqmp-gen-toggle input:checked+.nqmp-gen-toggle-track{background:var(--nqmp-success);border-color:var(--nqmp-success);}
.nqmp-gen-toggle input:checked+.nqmp-gen-toggle-track::after{transform:translateX(16px);}
.nqmp-gen-toggle-copy strong{display:block;font-size:.85rem;}
.nqmp-gen-toggle-copy small{color:var(--nqmp-muted);font-size:.74rem;}
.nqmp-gen-summary{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;background:var(--nqmp-white);border:1px solid var(--nqmp-border);padding:18px 22px;}
.nqmp-gen-summary-text{font-family:var(--nqmp-mono);font-size:.82rem;color:var(--nqmp-muted);}
.nqmp-gen-error{margin-top:12px;background:var(--nqmp-danger-bg);border:1px solid var(--nqmp-danger);color:var(--nqmp-danger);padding:12px 16px;font-size:.85rem;font-weight:600;}
@media(max-width:700px){.nqmp-gen-diff-row{grid-template-columns:repeat(3,1fr);}.nqmp-gen-summary{flex-direction:column;align-items:stretch;}.nqmp-gen-summary .nqmp-btn{width:100%;text-align:center;}}

/* ---- Admin JSON import box (dashboard-adjacent, kept minimal) ---- */
.nqmp-json-import-box{background:var(--nqmp-white);border:1px solid var(--nqmp-border);padding:22px;max-width:950px;margin:12px 0 24px;}
.nqmp-json-import-box textarea{margin-top:8px;font-family:var(--nqmp-mono);background:var(--nqmp-bg);}
.nqmp-json-import-box label{font-size:.85rem;}
