/* The hidden attribute must always win.
   Author display rules (e.g. .ptm-button { display: inline-flex }) override the
   user-agent [hidden] { display: none } rule, so setting element.hidden = true
   silently fails. That is how a brand-new member saw Resume/Review buttons for
   sessions they had never started. Declared once, before every component rule,
   so no future component has to remember to patch it individually. */
[data-ptm-qbank-player] [hidden],
[data-ptm-qbank-player][hidden] { display: none !important; }

.ptm-qbank-focus-page #masthead,
.ptm-qbank-focus-page .site-header,
.ptm-qbank-focus-page #colophon,
.ptm-qbank-focus-page .site-footer,
.ptm-qbank-focus-page .entry-header,
.ptm-qbank-focus-page .entry-title,
.ptm-qbank-focus-page .page-title,
.ptm-qbank-focus-page .ast-title-bar-wrap,
.ptm-qbank-focus-page .breadcrumbs,
.ptm-qbank-focus-page .wp-block-post-title { display: none !important; }

/* JS fallback for page-builder placements where the shortcode is not present
   in post_content early enough for WordPress to add the server-side class. */
.ptm-qbank-active #masthead,
.ptm-qbank-active .site-header,
.ptm-qbank-active #colophon,
.ptm-qbank-active .site-footer,
.ptm-qbank-active .entry-header,
.ptm-qbank-active .entry-title,
.ptm-qbank-active .page-title,
.ptm-qbank-active .ast-title-bar-wrap,
.ptm-qbank-active .breadcrumbs,
.ptm-qbank-active .wp-block-post-title { display: none !important; }

body.ptm-qbank-focus-page { background: var(--ptm-surface-sunken); }
.ptm-qbank-focus-page #content { padding: 0 !important; }
.ptm-qbank-focus-page .site-content > .ast-container { max-width: none !important; padding: 0 !important; }
.ptm-qbank-focus-page #primary { margin: 0 !important; padding: 0 !important; width: 100% !important; }
.ptm-qbank-focus-page #main,
.ptm-qbank-focus-page .entry-content { margin: 0 !important; }
.ptm-qbank-focus-page .ast-article-single { background: transparent !important; margin: 0 !important; padding: 0 !important; }

.ptm-qbank-active #content { padding: 0 !important; }
.ptm-qbank-active .site-content > .ast-container { max-width: none !important; padding: 0 !important; }
.ptm-qbank-active #primary { margin: 0 !important; padding: 0 !important; width: 100% !important; }
.ptm-qbank-active #main,
.ptm-qbank-active .entry-content { margin: 0 !important; }
.ptm-qbank-active .ast-article-single { background: transparent !important; margin: 0 !important; padding: 0 !important; }

.ptm-focus-app { background: var(--ptm-surface-sunken); display: flex; flex-direction: column; min-height: 100dvh; }
.ptm-focus-bar { background: var(--ptm-surface); border-bottom: 1px solid var(--ptm-border); min-height: 60px; padding: 0 clamp(10px,1.4vw,16px); position: sticky; top: 0; z-index: 99998; }
.ptm-focus-bar-inner { align-items: center; display: flex; gap: 12px; justify-content: space-between; margin: 0 auto; max-width: 1280px; min-height: 60px; min-width: 0; width: 100%; }
.admin-bar .ptm-focus-bar { top: 32px; }
.ptm-focus-brand { align-items: center; color: var(--ptm-ink) !important; display: inline-flex; font-weight: 800; gap: 10px; min-width: 0; text-decoration: none !important; }
.ptm-focus-brand img { border-radius: 8px; height: 34px; object-fit: contain; width: 34px; }
.ptm-focus-brand-mark { align-items: center; background: var(--ptm-ink); border-radius: 9px; color: var(--ptm-surface); display: inline-flex; font-size: 24px; height: 34px; justify-content: center; line-height: 1; width: 34px; }
.ptm-focus-context { align-items: center; color: var(--ptm-muted); display: flex; flex: 0 1 auto; font-size: 13px; gap: 18px; min-width: 0; }
.ptm-focus-context a { border: 1px solid var(--ptm-border-strong); border-radius: 8px; color: var(--ptm-ink-soft) !important; flex: 0 0 auto; font-weight: 700; padding: 8px 11px; text-decoration: none !important; white-space: nowrap; }
.ptm-focus-context a:hover { background: var(--ptm-accent-soft); border-color: var(--ptm-accent-border); color: var(--ptm-blue) !important; }
.ptm-bank-switcher { align-items: center; background: var(--ptm-ui-surface-muted, var(--ptm-surface-muted)); border: 1px solid var(--ptm-ui-divider, var(--ptm-border)); border-radius: 999px; display: inline-flex; gap: 2px; padding: 3px; }
.ptm-bank-switcher a { align-items: center; border: 0 !important; border-radius: 999px; color: var(--ptm-ui-subtle, var(--ptm-muted)) !important; display: inline-flex; font-size: 12px; font-weight: 850; justify-content: center; min-height: 44px; min-width: 52px; padding: 7px 12px; text-decoration: none !important; }
.ptm-bank-switcher a.is-cps.is-active { background: var(--ptm-ui-ok-strong); color: var(--ptm-ui-on-accent) !important; }
.ptm-bank-switcher a.is-sjt.is-active { background: var(--ptm-ui-accent); color: var(--ptm-ui-on-accent) !important; }
/* The header is not 60px — it is whatever its content makes it, and the old
   estimate added its own error to the page height. A flex column measures it
   instead: the shell fills the viewport, the content takes what is left. */
.ptm-focus-content { flex: 1 1 auto; min-height: 0; padding: clamp(10px,1.4vw,16px); }
.ptm-qbank-focus-page { scroll-padding-top: 76px; }
.admin-bar.ptm-qbank-focus-page { scroll-padding-top: 108px; }

/* Colour tokens ------------------------------------------------------------
   Every colour in this file is a token, so dark mode is a second set of values
   rather than a second set of rules. Before 0.8.16 the player carried 228
   hardcoded colours and dark mode was a handful of ad-hoc overrides in another
   file — which is why the card stayed white while its text turned pale, leaving
   the answer options barely legible.

   Declared on .ptm-focus-app, not on .ptm-player-shell. The focus bar and the
   disclaimer sit outside the shell; a var() they cannot see makes the whole
   declaration invalid, which silently removed their 1px borders and made the
   page 2px shorter.

   One token per original colour, and each keeps the exact value it replaced —
   light mode is unchanged to the pixel. Several tokens therefore share a role
   and differ only slightly; that is deliberate. Dark mode consolidates a role
   onto one value, which is where a smaller palette belongs. */
body.ptm-qbank-focus-page,
.ptm-focus-app,
.ptm-player-shell {
  --ptm-accent-border: #9bacf0;
  --ptm-accent-border-2: #d5dcfb;
  --ptm-accent-border-3: #9bb0ef;
  --ptm-accent-border-4: #aab9ed;
  --ptm-accent-border-5: #8fa3ef;
  --ptm-accent-border-6: #6682e9;

  --ptm-accent-soft: #eef2ff;
  --ptm-accent-soft-2: #e1e9ff;
  --ptm-accent-soft-3: #eaf0ff;
  --ptm-accent-soft-4: #e3e9ff;
  --ptm-accent-soft-5: #dbe3ff;

  --ptm-accent-softer: #f8faff;
  --ptm-accent-softer-2: #f7f9ff;
  --ptm-accent-softer-3: #f2f7ff;
  --ptm-accent-softer-4: #f5f8ff;

  --ptm-accent-strong: #6681f2;

  --ptm-blue: #3157e8;

  --ptm-blue-dark: #2443bd;

  --ptm-border: #dfe5ef;

  --ptm-border-strong: #cfd7e6;
  --ptm-border-strong-2: #d8dfeb;
  --ptm-border-strong-3: #dce2ec;
  --ptm-border-strong-4: #dfe4ec;
  --ptm-border-strong-5: #dce3f4;
  --ptm-border-strong-6: #e1e6ef;
  --ptm-border-strong-7: #dfe3e9;
  --ptm-border-strong-8: #d6dce5;
  --ptm-border-strong-9: #9aa8bd;

  --ptm-correct-border: #5ac89b;
  --ptm-correct-border-2: #79d7b3;
  --ptm-correct-border-3: #a6e9ca;

  --ptm-correct-chip: #d1fadf;
  --ptm-correct-chip-2: #d9f8e9;

  --ptm-correct-soft: #ecfdf3;
  --ptm-correct-soft-2: #f0fdf6;

  --ptm-correct-strong: #20a779;

  --ptm-disabled-bg: #e2e8f0;
  --ptm-disabled-border: #94a3b8;
  --ptm-disabled-text: #334155;

  --ptm-divider: #edf0f5;
  --ptm-divider-2: #e5e9f1;
  --ptm-divider-3: #e3e8ef;
  --ptm-divider-4: #e6eaf1;

  --ptm-green: #087a55;

  --ptm-incorrect-border: #ed8b84;
  --ptm-incorrect-border-2: #f0aaa5;
  --ptm-incorrect-border-3: #fecdca;
  --ptm-incorrect-border-4: #fec9c5;

  --ptm-incorrect-chip: #fee4e2;
  --ptm-incorrect-chip-2: #fee7e5;

  --ptm-incorrect-soft: #fff2f0;
  --ptm-incorrect-soft-2: #fef3f2;
  --ptm-incorrect-soft-3: #fff1f0;
  --ptm-incorrect-soft-4: #fff5f4;

  --ptm-incorrect-strong: #e05a52;

  --ptm-ink: #17233d;

  --ptm-ink-soft: #35415a;
  --ptm-ink-soft-2: #33415d;
  --ptm-ink-soft-3: #273551;
  --ptm-ink-soft-4: #4b5874;
  --ptm-ink-soft-5: #44516a;
  --ptm-ink-soft-6: #4d5a73;

  --ptm-muted: #667085;

  --ptm-muted-strong: #a6afbf;

  --ptm-red: #b42318;

  --ptm-subtle: #5b6472;
  --ptm-subtle-10: #606c82;
  --ptm-subtle-2: #50607c;
  --ptm-subtle-3: #526078;
  --ptm-subtle-4: #65718a;
  --ptm-subtle-5: #687386;
  --ptm-subtle-6: #63708a;
  --ptm-subtle-7: #69758d;
  --ptm-subtle-8: #7a8498;
  --ptm-subtle-9: #59667d;

  --ptm-surface: #fff;
  --ptm-surface-veil: rgba(255,255,255,.94);
  /* Text on a saturated fill. Light puts white on a dark accent; dark puts dark
     text on a light accent, because white there falls to 2.7:1. The readable
     colour depends on the theme, so it has to be a token as well. */
  --ptm-on-accent: #fff;
  --ptm-notice-bg: #8b5100;
  --ptm-notice-ink: #fff;
  --ptm-surface-2: #ffffff;

  --ptm-surface-muted: #edf1f7;
  --ptm-surface-muted-2: #e7ebf3;

  --ptm-surface-sunken: #f5f7fb;
  --ptm-surface-sunken-10: #eef1f5;
  --ptm-surface-sunken-11: #e9edf5;
  --ptm-surface-sunken-12: #f5f6f8;
  --ptm-surface-sunken-13: #f0f2f5;
  --ptm-surface-sunken-2: #f8f9fc;
  --ptm-surface-sunken-3: #f7f9fc;
  --ptm-surface-sunken-4: #f4f6fa;
  --ptm-surface-sunken-5: #f7f9fd;
  --ptm-surface-sunken-6: #f1f4f9;
  --ptm-surface-sunken-7: #f3f6fb;
  --ptm-surface-sunken-8: #f2f4f7;
  --ptm-surface-sunken-9: #f1f4f8;

  --ptm-warn-border: #f4cf86;
  --ptm-warn-border-2: #efc66c;
  --ptm-warn-border-3: #efbd5e;

  --ptm-warn-ink: #8b5100;
  --ptm-warn-ink-2: #884b00;
  --ptm-warn-ink-3: #7d4b00;
  --ptm-warn-ink-4: #9c5b00;
  --ptm-warn-ink-5: #a86000;
  --ptm-warn-ink-6: #7a4b09;
  --ptm-warn-ink-7: #7b6240;
  --ptm-warn-ink-8: #8b3f00;

  --ptm-warn-soft: #fff7e6;
  --ptm-warn-soft-2: #fff2d8;
  --ptm-warn-soft-3: #fdf4e3;
}

/* Governed anonymous demo and subscriber-only free-account funnel. */
.ptm-demo-landing,
.ptm-demo-player-start,
.ptm-demo-complete,
.ptm-free-signup {
  --ptm-border: #dfe5ef;
  --ptm-border-strong: #cfd7e6;
  --ptm-surface: #fff;
  --ptm-surface-muted: #edf1f7;
  --ptm-ink: #17233d;
  --ptm-blue: #3157e8;
  --ptm-accent-soft: #eef2ff;
  --ptm-incorrect-border: #ed8b84;
  --ptm-incorrect-soft-3: #fff1f0;
  --ptm-red: #b42318;
  width: min(100% - 32px, 960px);
  margin: 48px auto;
  padding: clamp(24px, 5vw, 56px);
  border: 1px solid var(--ptm-border);
  border-radius: 24px;
  background: var(--ptm-surface);
  color: var(--ptm-ink);
  box-sizing: border-box;
}

.ptm-demo-landing h1,
.ptm-demo-player-start h2,
.ptm-demo-complete h2,
.ptm-free-signup h1 { max-width: 780px; margin: 10px 0 14px; line-height: 1.12; }

.ptm-demo-bank-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin: 30px 0; }
.ptm-demo-bank { min-height: 168px; padding: 24px; border: 2px solid var(--ptm-border); border-radius: 18px; color: inherit; text-decoration: none; display: flex; flex-direction: column; gap: 10px; }
.ptm-demo-bank:hover, .ptm-demo-bank:focus-visible { border-color: var(--ptm-blue); outline: 3px solid var(--ptm-accent-soft); outline-offset: 3px; }
.ptm-demo-bank strong { font-size: 1.2rem; }
.ptm-demo-bank em { margin-top: auto; color: var(--ptm-blue); font-style: normal; font-weight: 700; }
.ptm-demo-locks { display: flex; flex-wrap: wrap; gap: 10px; margin: 24px 0; }
.ptm-demo-locks strong { width: 100%; }
.ptm-demo-locks span { padding: 9px 12px; border-radius: 999px; background: var(--ptm-surface-muted); }
.ptm-demo-actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 24px 0; }
.ptm-demo-secondary { margin-bottom: 0; }

.ptm-free-signup { max-width: 640px; }
.ptm-free-form { display: grid; gap: 10px; margin-top: 24px; }
.ptm-free-form label { margin-top: 8px; font-weight: 700; }
.ptm-free-form input { min-height: 48px; width: 100%; padding: 10px 12px; border: 1px solid var(--ptm-border-strong); border-radius: 10px; box-sizing: border-box; font: inherit; }
.ptm-free-form input:focus-visible { outline: 3px solid var(--ptm-accent-soft); outline-offset: 2px; border-color: var(--ptm-blue); }
.ptm-free-form .ptm-button { min-height: 48px; margin-top: 14px; }
.ptm-free-honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.ptm-free-error { padding: 12px 14px; border-left: 4px solid var(--ptm-incorrect-border); background: var(--ptm-incorrect-soft-3); color: var(--ptm-red); }
.ptm-free-signin { text-align: center; }

@media (max-width: 700px) {
  .ptm-demo-landing,
  .ptm-demo-player-start,
  .ptm-demo-complete,
  .ptm-free-signup { width: min(100% - 20px, 960px); margin: 20px auto; padding: 22px 18px; border-radius: 18px; }
  .ptm-demo-bank-grid { grid-template-columns: 1fr; }
  .ptm-demo-actions .ptm-button { width: 100%; min-height: 48px; justify-content: center; }
}

/* Dark theme: only the values change. Every rule above already reads them. */
html[data-ptm-theme="dark"] body.ptm-qbank-focus-page,
html[data-ptm-theme="dark"] .ptm-focus-app,
html[data-ptm-theme="dark"] .ptm-player-shell {
  --ptm-disabled-bg: #26324a;
  --ptm-disabled-border: #52617c;
  --ptm-disabled-text: #e2e8f0;
  --ptm-accent-border: #4661a8;
  --ptm-accent-border-2: #4661a8;
  --ptm-accent-border-3: #4661a8;
  --ptm-accent-border-4: #4661a8;
  --ptm-accent-border-5: #4661a8;
  --ptm-accent-border-6: #4661a8;

  --ptm-accent-soft: #1e2c52;
  --ptm-accent-soft-2: #1e2c52;
  --ptm-accent-soft-3: #1e2c52;
  --ptm-accent-soft-4: #1e2c52;
  --ptm-accent-soft-5: #1e2c52;

  --ptm-accent-softer: #1a2445;
  --ptm-accent-softer-2: #1a2445;
  --ptm-accent-softer-3: #1a2445;
  --ptm-accent-softer-4: #1a2445;

  --ptm-accent-strong: #7d99ff;

  --ptm-blue: #7d99ff;

  --ptm-blue-dark: #6b86ef;

  --ptm-border: #2c3a58;

  --ptm-border-strong: #3a4a6d;
  --ptm-border-strong-2: #3a4a6d;
  --ptm-border-strong-3: #3a4a6d;
  --ptm-border-strong-4: #3a4a6d;
  --ptm-border-strong-5: #3a4a6d;
  --ptm-border-strong-6: #3a4a6d;
  --ptm-border-strong-7: #3a4a6d;
  --ptm-border-strong-8: #3a4a6d;
  --ptm-border-strong-9: #3a4a6d;

  --ptm-correct-border: #3a9b68;
  --ptm-correct-border-2: #3a9b68;
  --ptm-correct-border-3: #3a9b68;

  --ptm-correct-chip: #17492c;
  --ptm-correct-chip-2: #17492c;

  --ptm-correct-soft: #12331f;
  --ptm-correct-soft-2: #12331f;

  --ptm-correct-strong: #3fd08a;

  --ptm-divider: #26324f;
  --ptm-divider-2: #26324f;
  --ptm-divider-3: #26324f;
  --ptm-divider-4: #26324f;

  --ptm-green: #4fd99c;

  --ptm-incorrect-border: #b25b56;
  --ptm-incorrect-border-2: #b25b56;
  --ptm-incorrect-border-3: #b25b56;
  --ptm-incorrect-border-4: #b25b56;

  --ptm-incorrect-chip: #52242a;
  --ptm-incorrect-chip-2: #52242a;

  --ptm-incorrect-soft: #3a1a1c;
  --ptm-incorrect-soft-2: #3a1a1c;
  --ptm-incorrect-soft-3: #3a1a1c;
  --ptm-incorrect-soft-4: #3a1a1c;

  --ptm-incorrect-strong: #e8736b;

  --ptm-ink: #eef2fa;

  --ptm-ink-soft: #dbe3f0;
  --ptm-ink-soft-2: #dbe3f0;
  --ptm-ink-soft-3: #dbe3f0;
  --ptm-ink-soft-4: #dbe3f0;
  --ptm-ink-soft-5: #dbe3f0;
  --ptm-ink-soft-6: #dbe3f0;

  --ptm-muted: #aab6cc;

  --ptm-muted-strong: #7c88a0;

  --ptm-red: #ff9b93;

  --ptm-subtle: #b3bed2;
  --ptm-subtle-10: #b3bed2;
  --ptm-subtle-2: #b3bed2;
  --ptm-subtle-3: #b3bed2;
  --ptm-subtle-4: #b3bed2;
  --ptm-subtle-5: #b3bed2;
  --ptm-subtle-6: #b3bed2;
  --ptm-subtle-7: #b3bed2;
  --ptm-subtle-8: #b3bed2;
  --ptm-subtle-9: #b3bed2;

  --ptm-surface: #17203a;
  --ptm-surface-veil: rgba(23,32,58,.94);
  --ptm-on-accent: #101a33;
  --ptm-notice-bg: #4a3714;
  --ptm-notice-ink: #f7dda6;
  --ptm-surface-2: #17203a;

  --ptm-surface-muted: #1f2a47;
  --ptm-surface-muted-2: #1f2a47;

  --ptm-surface-sunken: #131b31;
  --ptm-surface-sunken-10: #131b31;
  --ptm-surface-sunken-11: #131b31;
  --ptm-surface-sunken-12: #131b31;
  --ptm-surface-sunken-13: #131b31;
  --ptm-surface-sunken-2: #131b31;
  --ptm-surface-sunken-3: #131b31;
  --ptm-surface-sunken-4: #131b31;
  --ptm-surface-sunken-5: #131b31;
  --ptm-surface-sunken-6: #131b31;
  --ptm-surface-sunken-7: #131b31;
  --ptm-surface-sunken-8: #131b31;
  --ptm-surface-sunken-9: #131b31;

  --ptm-warn-border: #8a6d2c;
  --ptm-warn-border-2: #8a6d2c;
  --ptm-warn-border-3: #8a6d2c;

  --ptm-warn-ink: #f3d08a;
  --ptm-warn-ink-2: #f3d08a;
  --ptm-warn-ink-3: #f3d08a;
  --ptm-warn-ink-4: #f3d08a;
  --ptm-warn-ink-5: #f3d08a;
  --ptm-warn-ink-6: #f3d08a;
  --ptm-warn-ink-7: #f3d08a;
  --ptm-warn-ink-8: #f3d08a;

  --ptm-warn-soft: #33280f;
  --ptm-warn-soft-2: #33280f;
  --ptm-warn-soft-3: #33280f;
}

.ptm-player-shell {
  --ptm-soft: #f5f7fb;
  color: var(--ptm-ink);
  font-family: inherit;
  margin: 0 auto;
  max-width: 1280px;
  min-height: 300px;
}

.ptm-player-shell *, .ptm-player-shell *::before, .ptm-player-shell *::after { box-sizing: border-box; }
.ptm-player-shell button, .ptm-player-shell select { font: inherit; }
.ptm-player-shell button { letter-spacing: normal; text-transform: none; }
.ptm-focus-app button:disabled:not(.ptm-option) { background: var(--ptm-disabled-bg) !important; background-color: var(--ptm-disabled-bg) !important; border-color: var(--ptm-disabled-border) !important; box-shadow: none !important; color: var(--ptm-disabled-text) !important; cursor: not-allowed; opacity: 1; transition: none; }
.ptm-player-shell kbd { background: rgba(255,255,255,.2); border: 1px solid rgba(255,255,255,.42); border-radius: 5px; box-shadow: 0 1px 0 rgba(0,0,0,.12); color: inherit; font-family: inherit; font-size: 10px; font-weight: 750; line-height: 1; padding: 5px 7px; }
.ptm-player-shell button:focus-visible, .ptm-player-shell a:focus-visible, .ptm-player-shell select:focus-visible { outline: 3px solid rgba(49,87,232,.3); outline-offset: 3px; }

.ptm-player-loading { align-items: center; display: flex; gap: 12px; justify-content: center; min-height: 240px; color: var(--ptm-muted); }
.ptm-player-shell.is-sjt-shell > .ptm-player-loading { min-height: max(920px, calc(100vh + 120px)); }
.ptm-sjt-skeleton { align-content: start; display: grid; gap: 16px; grid-template-columns: repeat(4,minmax(0,1fr)); padding-top: 8px; width: 100%; }
.ptm-sjt-skeleton > span:not(.screen-reader-text) { background: var(--ptm-surface); border: 1px solid var(--ptm-border); border-radius: 14px; display: block; }
.ptm-skeleton-title { grid-column: 1 / 3; height: 76px; }
.ptm-skeleton-nav { grid-column: 3 / 5; height: 76px; }
.ptm-skeleton-card { height: 178px; }
.ptm-skeleton-main { grid-column: 1 / 4; height: 520px; }
.ptm-skeleton-side { grid-column: 4; height: 520px; }
.ptm-spinner { animation: ptm-spin .8s linear infinite; border: 3px solid var(--ptm-border-strong-5); border-top-color: var(--ptm-blue); border-radius: 50%; height: 24px; width: 24px; }
@keyframes ptm-spin { to { transform: rotate(360deg); } }

.ptm-network { background: var(--ptm-notice-bg); border-radius: 10px; color: var(--ptm-notice-ink); font-weight: 650; margin-bottom: 12px; padding: 12px 16px; text-align: center; }
.ptm-eyebrow { color: var(--ptm-blue); display: block; font-size: 12px; font-weight: 750; letter-spacing: .07em; margin-bottom: 7px; text-transform: uppercase; }
.ptm-button { align-items: center; border: 0; border-radius: 10px; cursor: pointer; display: inline-flex; font-weight: 700; gap: 10px; justify-content: center; min-height: 48px; padding: 12px 20px; text-decoration: none !important; transition: transform .15s ease, background .15s ease, box-shadow .15s ease; }
.ptm-button:hover:not(:disabled) { transform: translateY(-1px); }
.ptm-button:disabled { background: var(--ptm-disabled-bg) !important; border-color: var(--ptm-disabled-border) !important; box-shadow: none !important; color: var(--ptm-disabled-text) !important; cursor: not-allowed; opacity: 1; }
.ptm-button-primary { background: var(--ptm-blue); box-shadow: 0 8px 20px rgba(49,87,232,.17); color: var(--ptm-on-accent) !important; }
.ptm-button-primary:disabled { background: var(--ptm-disabled-bg) !important; border-color: var(--ptm-disabled-border) !important; box-shadow: none; color: var(--ptm-disabled-text) !important; opacity: 1; }
.ptm-button-primary:hover:not(:disabled) { background: var(--ptm-blue-dark); color: var(--ptm-on-accent); }
.ptm-button-quiet { background: var(--ptm-accent-soft); color: var(--ptm-blue); }

.ptm-access-card, .ptm-complete { background: var(--ptm-surface); border: 1px solid var(--ptm-border); border-radius: 18px; box-shadow: 0 16px 45px rgba(31,45,77,.08); margin: 40px auto; max-width: 650px; padding: 46px; text-align: center; }
.ptm-access-card h2, .ptm-complete h2 { color: var(--ptm-ink); font-size: clamp(28px, 4vw, 40px); line-height: 1.12; margin: 0 0 14px; }
.ptm-access-card p, .ptm-complete p { color: var(--ptm-muted); font-size: 17px; line-height: 1.65; margin: 0 auto 24px; max-width: 540px; }

.ptm-welcome { background: linear-gradient(135deg,var(--ptm-accent-softer-2) 0%,var(--ptm-surface) 52%,var(--ptm-accent-softer-3) 100%); border: 1px solid var(--ptm-border); border-radius: 20px; box-shadow: 0 18px 50px rgba(31,45,77,.08); display: grid; gap: 32px; grid-template-columns: minmax(0,1.3fr) minmax(260px,.7fr); margin: 0 auto; max-width: 940px; padding: 44px; }
.ptm-preview-note { background: var(--ptm-warn-soft); border: 1px solid var(--ptm-warn-border); border-radius: var(--ptm-ui-radius-field); color: var(--ptm-warn-ink-2); font-size: var(--ptm-ui-text-xs); grid-column: 1/-1; line-height: 1.35; padding: 7px 11px; }
.ptm-welcome-copy { align-self: center; }
.ptm-welcome h2 { color: var(--ptm-ink); font-size: clamp(32px,5vw,52px); letter-spacing: -.035em; line-height: 1.02; margin: 0 0 18px; }
.ptm-welcome-copy p { color: var(--ptm-muted); font-size: 18px; line-height: 1.65; margin: 0; }
.ptm-start-card { align-self: center; background: var(--ptm-surface); border: 1px solid var(--ptm-border); border-radius: 16px; box-shadow: 0 12px 32px rgba(31,45,77,.08); display: flex; flex-direction: column; gap: 12px; padding: 22px; }
.ptm-start-card label { font-size: 13px; font-weight: 750; }
.ptm-start-card select { background: var(--ptm-surface); border: 1px solid var(--ptm-border-strong); border-radius: 9px; color: var(--ptm-ink); min-height: 48px; padding: 8px 12px; width: 100%; }
.ptm-error { background: var(--ptm-incorrect-soft-2); border: 1px solid var(--ptm-incorrect-border-3); border-radius: 9px; color: var(--ptm-red); font-size: 14px; margin: 8px 0 0; padding: 10px 12px; }

.ptm-runner-layout { align-items: start; display: grid; gap: 20px; grid-template-columns: minmax(0,1fr) 280px; transition: grid-template-columns .2s ease; }
.ptm-runner-main { min-width: 0; }
.ptm-runner-layout.is-rail-hidden { gap: 0; grid-template-columns: minmax(0,1fr) 0; }
.ptm-runner-layout.is-rail-hidden .ptm-session-rail { opacity: 0; overflow: hidden; pointer-events: none; transform: translateX(16px); }
/* A flex column, so the question list absorbs whatever height is left rather
   than being capped at a constant. The list previously used
   `min(420px, calc(100vh - 455px))`, where 455 was an estimate of the header,
   score, tabs, legend and footer stacked together. Any change to those — a
   longer score line, another tab — silently pushed the footer past the rail's
   own `overflow: hidden`, and Finish & review became unreachable rather than
   merely below the fold. Nothing here estimates anything now. */
.ptm-session-rail { background: var(--ptm-surface); border: 1px solid var(--ptm-border); border-radius: 16px; box-shadow: 0 12px 34px rgba(31,45,77,.08); display: flex; flex-direction: column; height: calc(100vh - 48px); min-width: 0; overflow: hidden; position: sticky; top: 24px; transition: opacity .2s ease,transform .2s ease; }
/* dvh excludes the mobile browser bars that vh counts anyway, which is how a
   footer ends up under Safari's toolbar. Declared second so browsers without
   dvh keep the vh value above. JS narrows this further to the height actually
   available at the current scroll position — see Player.syncRailHeight. */
@supports (height: 100dvh) {
  .ptm-session-rail { height: calc(100dvh - 48px); }
}
/* Fixed-size rows: only the list may grow or shrink. */
.ptm-rail-header,
.ptm-rail-score,
.ptm-rail-tabs,
.ptm-rail-legend,
.ptm-rail-type-legend,
.ptm-rail-finish { flex: 0 0 auto; }
.ptm-rail-loading { color: var(--ptm-muted); padding: 24px; text-align: center; }
.ptm-rail-header { align-items: flex-start; border-bottom: 1px solid var(--ptm-divider); display: flex; justify-content: space-between; padding: 12px 14px; }
.ptm-rail-header .ptm-eyebrow { margin-bottom: 2px; }
.ptm-rail-header h2 { color: var(--ptm-ink); font-size: 18px; line-height: 1.1; margin: 0; }
.ptm-rail-close { align-items: center; background: var(--ptm-surface-sunken-8) !important; border: 0 !important; border-radius: 50%; color: var(--ptm-ink) !important; cursor: pointer; display: flex; font-size: 20px; height: 36px; justify-content: center; line-height: 1; width: 36px; }
.ptm-rail-score { background: var(--ptm-surface-sunken-2); border-bottom: 1px solid var(--ptm-divider); padding: 10px 14px 12px; }
.ptm-rail-score > div { align-items: center; display: flex; justify-content: space-between; }
.ptm-rail-score > div > span { color: var(--ptm-muted); font-size: 11px; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.ptm-rail-score button { align-items: center; background: transparent !important; border: 0 !important; color: var(--ptm-subtle-4) !important; cursor: pointer; display: inline-flex; font-size: 12px; gap: 5px; min-height: 32px; padding: 4px 2px; }
.ptm-rail-score button svg, .ptm-review-score-toggle svg { fill: none; height: 16px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; width: 16px; }
.ptm-rail-score strong { color: var(--ptm-ink); display: block; font-size: 26px; line-height: 1.1; margin-top: 2px; }
.ptm-rail-score small { color: var(--ptm-muted); display: block; font-size: 11px; }
.ptm-rail-tabs { display: grid; grid-template-columns: 1fr 1fr; padding: 4px 12px 0; }
.ptm-rail-tabs button { background: transparent !important; border: 0 !important; border-bottom: 2px solid transparent !important; border-radius: 0 !important; box-shadow: none !important; color: var(--ptm-muted) !important; cursor: pointer; font-size: 11px; font-weight: 750; padding: 7px 4px; }
.ptm-rail-tabs button.is-active { border-bottom-color: var(--ptm-blue) !important; color: var(--ptm-blue) !important; }
.ptm-rail-list-wrap { flex: 1 1 auto; min-height: 0; overflow: hidden; position: relative; }
/* The list is an inset layer inside the one flexible rail row. This avoids
   percentage-height resolution entirely: the flex row receives the exact
   remaining height and the list scrolls inside those definite edges. */
.ptm-rail-list { display: grid; gap: 6px; inset: 0; min-height: 0; overflow-y: auto; padding: 10px 12px; position: absolute; scrollbar-color: var(--ptm-border-strong) transparent; scrollbar-width: thin; }
.ptm-rail-list-wrap::after { background: linear-gradient(180deg,transparent,var(--ptm-surface)); bottom: 0; content: ''; height: 44px; left: 0; opacity: 0; pointer-events: none; position: absolute; right: 0; transition: opacity .16s ease; }
.ptm-rail-list-wrap.has-scroll-more::after { opacity: 1; }
.ptm-rail-list::-webkit-scrollbar { width: 5px; }
.ptm-rail-list::-webkit-scrollbar-thumb { background: var(--ptm-border-strong); border-radius: 999px; }
.ptm-rail-cell { align-items: center; background: var(--ptm-surface) !important; border: 1px solid var(--ptm-border-strong-3) !important; border-radius: 9px; color: var(--ptm-ink) !important; cursor: pointer; display: grid; gap: 8px; grid-template-columns: auto minmax(0,1fr) 18px; min-height: 44px; overflow: hidden; padding: 5px 7px !important; text-align: left; width: 100%; }
.ptm-rail-cell:hover { background: var(--ptm-surface-sunken-5) !important; color: var(--ptm-ink) !important; }
.ptm-rail-index { align-items: center; display: flex; gap: 4px; }
.ptm-rail-index strong { align-items: center; background: var(--ptm-surface-muted); border-radius: 7px; display: flex; height: 28px; justify-content: center; width: 28px; }
.ptm-rail-type { align-items: center; border: 1px solid; border-radius: 999px; display: inline-flex; font-family: ui-monospace,SFMono-Regular,Menlo,monospace; font-size: 9px; font-style: normal; font-weight: 800; height: 20px; justify-content: center; width: 20px; }
.ptm-rail-type.is-ranking { background: var(--ptm-ui-type-ranking-soft); border-color: var(--ptm-ui-type-ranking-border); color: var(--ptm-ui-type-ranking-ink); }
.ptm-rail-type.is-selection { background: var(--ptm-ui-type-selection-soft); border-color: var(--ptm-ui-type-selection-border); color: var(--ptm-ui-type-selection-ink); }
.ptm-rail-result { align-items: center; color: var(--ptm-muted); display: flex; font-size: 10px; gap: 5px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ptm-rail-result i { align-items: center; display: inline-flex; flex: 0 0 14px; font-size: 11px; font-style: normal; font-weight: 900; justify-content: center; }
.ptm-rail-cell b { color: var(--ptm-warn-ink-5); display: block; font-size: 14px; line-height: 1; max-width: 18px; overflow: hidden; text-align: center; }
.ptm-rail-cell.is-correct { border-color: var(--ptm-correct-border-2) !important; }
.ptm-rail-cell.is-correct .ptm-rail-index strong { background: var(--ptm-correct-chip-2); color: var(--ptm-green); }
.ptm-rail-cell.is-correct .ptm-rail-result { color: var(--ptm-green); }
.ptm-rail-cell.is-partial { border-color: var(--ptm-ui-warn-border) !important; }
.ptm-rail-cell.is-partial .ptm-rail-index strong { background: var(--ptm-ui-warn-soft); color: var(--ptm-ui-warn-ink); }
.ptm-rail-cell.is-partial .ptm-rail-result { color: var(--ptm-ui-warn-ink); }
.ptm-rail-cell.is-incorrect { border-color: var(--ptm-incorrect-border-2) !important; }
.ptm-rail-cell.is-incorrect .ptm-rail-index strong { background: var(--ptm-incorrect-chip-2); color: var(--ptm-red); }
.ptm-rail-cell.is-incorrect .ptm-rail-result { color: var(--ptm-red); }
.ptm-rail-cell.is-answered { border-color: var(--ptm-border-strong) !important; }
.ptm-rail-cell.is-answered .ptm-rail-index strong { background: var(--ptm-surface-muted); color: var(--ptm-blue); }
.ptm-rail-cell.is-answered .ptm-rail-result { color: var(--ptm-blue); }
.ptm-rail-cell.is-unanswered .ptm-rail-index strong { background: var(--ptm-surface-sunken-13); color: var(--ptm-subtle-5); }
.ptm-rail-cell.is-current { box-shadow: inset 0 0 0 2px var(--ptm-blue); }
.ptm-rail-empty { color: var(--ptm-muted); font-size: 12px; margin: 18px 4px; text-align: center; }
.ptm-rail-legend { background: var(--ptm-surface); border-top: 1px solid var(--ptm-divider); color: var(--ptm-muted); display: flex; flex-wrap: wrap; font-size: 9px; gap: 6px 10px; justify-content: center; padding: 8px 14px; text-align: center; }
.ptm-rail-legend span { align-items: center; display: flex; gap: 4px; }
.ptm-rail-legend i { align-items: center; border-radius: 50%; display: inline-flex; font-size: 9px; font-style: normal; font-weight: 900; height: 16px; justify-content: center; width: 16px; }
.ptm-rail-legend i.is-correct { background: var(--ptm-correct-chip-2); color: var(--ptm-green); }
.ptm-rail-legend i.is-partial { background: var(--ptm-ui-warn-soft); color: var(--ptm-ui-warn-ink); }
.ptm-rail-legend i.is-incorrect { background: var(--ptm-incorrect-chip-2); color: var(--ptm-red); }
.ptm-rail-legend i.is-answered { background: var(--ptm-surface-muted); color: var(--ptm-blue); }
.ptm-rail-legend i.is-unanswered { background: var(--ptm-surface-muted); color: var(--ptm-subtle-5); }
.ptm-rail-type-legend { align-items: center; background: var(--ptm-surface); border-top: 1px solid var(--ptm-divider); color: var(--ptm-muted); display: flex; font-size: 9px; gap: 12px; justify-content: center; padding: 7px 14px; }
.ptm-rail-type-legend span { align-items: center; display: inline-flex; gap: 4px; }
.ptm-rail-type-legend .ptm-rail-type { flex: 0 0 20px; }
.ptm-rail-finish { border-top: 1px solid var(--ptm-divider); padding: 10px 12px 12px; }
.ptm-rail-finish button { background: var(--ptm-surface) !important; border: 1px solid var(--ptm-border-strong) !important; border-radius: 8px; color: var(--ptm-ink-soft) !important; cursor: pointer; font-size: 12px; font-weight: 800; min-height: 40px; padding: 8px 10px; width: 100%; }
.ptm-rail-finish button:hover { background: var(--ptm-accent-soft) !important; border-color: var(--ptm-accent-border) !important; color: var(--ptm-blue) !important; }

.ptm-session-dialog-backdrop { align-items: center; background: rgba(14,24,44,.64); display: flex; inset: 0; justify-content: center; padding: 20px; position: fixed; z-index: 1000000; }
.ptm-session-dialog { background: var(--ptm-surface); border: 1px solid var(--ptm-border); border-radius: 18px; box-shadow: 0 24px 80px rgba(14,24,44,.28); color: var(--ptm-ink); max-height: calc(100dvh - 40px); max-width: 650px; overflow-y: auto; padding: 0; width: 100%; }
.ptm-session-dialog > header { align-items: flex-start; border-bottom: 1px solid var(--ptm-divider-4); display: flex; gap: 18px; justify-content: space-between; padding: 24px 26px 20px; }
.ptm-session-dialog h2 { color: var(--ptm-ink); font-size: 26px; letter-spacing: -.02em; line-height: 1.15; margin: 0 0 5px; }
.ptm-session-dialog header p { color: var(--ptm-muted); font-size: 14px; line-height: 1.5; margin: 0; }
.ptm-session-dialog [data-dialog-close] { align-items: center; background: var(--ptm-surface-sunken-8) !important; border: 0 !important; border-radius: 50%; color: var(--ptm-ink) !important; cursor: pointer; display: flex; flex: 0 0 auto; font-size: 20px; height: 38px; justify-content: center; padding: 0; width: 38px; }
.ptm-session-dialog-progress { background: var(--ptm-surface-sunken-3); border-bottom: 1px solid var(--ptm-divider-4); display: grid; gap: 1px; grid-template-columns: repeat(3,minmax(0,1fr)); padding: 0 26px; }
.ptm-session-dialog-progress span { color: var(--ptm-muted); display: flex; flex-direction: column; font-size: 11px; line-height: 1.25; padding: 12px 8px; text-align: center; }
.ptm-session-dialog-progress strong { color: var(--ptm-ink); font-size: 18px; line-height: 1.2; }
.ptm-session-dialog-choices { display: grid; gap: 10px; padding: 20px 26px 12px; }
.ptm-session-dialog-choices > button { align-items: center; background: var(--ptm-surface) !important; border: 1px solid var(--ptm-border-strong) !important; border-radius: 12px; color: var(--ptm-ink) !important; cursor: pointer; display: grid; gap: 2px 12px; grid-template-columns: 28px minmax(0,1fr); min-height: 78px; padding: 14px 16px !important; text-align: left; width: 100%; }
.ptm-dialog-choice-icon { align-items: center; background: var(--ptm-surface-sunken-9); border-radius: 50%; color: var(--ptm-subtle-6); display: flex; grid-row: 1/3; height: 28px; justify-content: center; width: 28px; }
.ptm-dialog-choice-icon svg { fill: none; height: 16px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; width: 16px; }
.ptm-session-dialog-choices > button strong { font-size: 16px; line-height: 1.25; }
.ptm-session-dialog-choices > button small { color: var(--ptm-muted); font-size: 13px; line-height: 1.4; }
.ptm-session-dialog-choices > button:hover { background: var(--ptm-surface-sunken-5) !important; border-color: var(--ptm-border-strong-9) !important; }
.ptm-session-dialog-choices > button[data-dialog-finish] { background: var(--ptm-accent-softer-4) !important; border-color: var(--ptm-accent-border-3) !important; color: var(--ptm-blue-dark) !important; }
.ptm-session-dialog-choices > button[data-dialog-finish] .ptm-dialog-choice-icon { background: var(--ptm-accent-soft-2); color: var(--ptm-blue); }
.ptm-session-dialog-choices > button[data-dialog-finish]:hover { background: var(--ptm-accent-soft-3) !important; border-color: var(--ptm-accent-border-6) !important; }
.ptm-session-dialog-choices > button:disabled { background: var(--ptm-disabled-bg) !important; border-color: var(--ptm-disabled-border) !important; color: var(--ptm-disabled-text) !important; cursor: not-allowed; opacity: 1; }
.ptm-session-dialog-warning { background: var(--ptm-warn-soft); border: 1px solid var(--ptm-warn-border-2); border-radius: 11px; color: var(--ptm-warn-ink-3); font-size: 13px; line-height: 1.55; margin: 4px 26px 24px; padding: 13px 15px; }
.ptm-session-dialog-error { background: var(--ptm-incorrect-soft-2); border: 1px solid var(--ptm-incorrect-border-3); border-radius: 9px; color: var(--ptm-red); font-size: 13px; margin: -12px 26px 24px; padding: 10px 12px; }

.ptm-question-card { animation: ptm-enter .25s ease both; background: var(--ptm-surface); border: 1px solid var(--ptm-border); border-radius: 18px; box-shadow: 0 14px 44px rgba(31,45,77,.08); overflow: hidden; padding: clamp(16px,2vw,24px); scroll-margin-top: 76px; }
.admin-bar .ptm-question-card { scroll-margin-top: 108px; }
@keyframes ptm-enter { from { opacity: 0; transform: translateY(6px); } }
.ptm-question-header { align-items: flex-start; display: flex; gap: 18px; justify-content: space-between; }
.ptm-question-header h2 { color: var(--ptm-ink); font-size: clamp(20px,2.4vw,25px); letter-spacing: -.02em; line-height: 1.2; margin: 0; }
.ptm-emq-context { background: var(--ptm-accent-softer); border: 1px solid var(--ptm-accent-border-5); border-radius: 12px; margin: 18px 0; padding: 15px 17px; }
.ptm-emq-context > span { color: var(--ptm-blue); display: block; font-size: 11px; font-weight: 800; letter-spacing: .055em; text-transform: uppercase; }
.ptm-emq-context h3 { color: var(--ptm-ink); font-size: clamp(17px,2vw,20px); line-height: 1.25; margin: 5px 0 8px; }
.ptm-emq-lead-in { color: var(--ptm-ink-soft-3); line-height: 1.55; }
.ptm-emq-lead-in > :first-child { margin-top: 0; }
.ptm-emq-lead-in > :last-child { margin-bottom: 0; }
.ptm-flag { align-items: center; background: var(--ptm-surface); border: 1px solid var(--ptm-border-strong); border-radius: 9px; color: var(--ptm-ink-soft-4); cursor: pointer; display: flex; flex: 0 0 auto; font-weight: 700; gap: 6px; min-height: 44px; padding: 8px 13px; }
.ptm-flag.is-active { background: var(--ptm-warn-soft); border-color: var(--ptm-warn-border-3); color: var(--ptm-warn-ink); }
.ptm-header-tools { align-items: center; display: flex; flex: 0 0 auto; gap: 7px; }
.ptm-nav-icon, .ptm-overview-button { background: var(--ptm-surface) !important; border: 1px solid var(--ptm-border-strong) !important; border-radius: 9px; color: var(--ptm-ink-soft-5) !important; cursor: pointer; font-weight: 750; min-height: 44px; padding: 8px 12px; }
.ptm-nav-icon { font-size: 19px; min-width: 44px; padding: 6px; }
.ptm-nav-icon:hover:not(:disabled), .ptm-overview-button:hover { background: var(--ptm-accent-soft) !important; border-color: var(--ptm-accent-border) !important; color: var(--ptm-blue) !important; }
.ptm-nav-icon:disabled { background: var(--ptm-disabled-bg) !important; border-color: var(--ptm-disabled-border) !important; color: var(--ptm-disabled-text) !important; cursor: not-allowed; opacity: 1; }
.ptm-progress-meta { color: var(--ptm-muted); display: flex; font-size: 13px; font-weight: 650; justify-content: space-between; margin-top: 14px; }
.ptm-progress-track { background: var(--ptm-surface-sunken-11); border-radius: 10px; height: 5px; margin: 7px 0 20px; overflow: hidden; }
.ptm-progress-track span { background: linear-gradient(90deg,var(--ptm-blue),var(--ptm-accent-strong)); border-radius: inherit; display: block; height: 100%; transition: width .3s ease; }
.ptm-stopwatch { font-variant-numeric: tabular-nums; }
.ptm-stopwatch::before { content: '◷'; font-size: 14px; margin-right: 5px; }
.ptm-stem, .ptm-lead-in { color: var(--ptm-ink-soft-3); font-size: calc(1rem * var(--ptm-read-scale, 1)); line-height: 1.62; }
.ptm-stem p { margin: 0 0 1em; }
.ptm-stem-list { margin: 0 0 1em; padding-left: 1.4em; }
.ptm-stem-list > li { margin: 0 0 .45em; }
.ptm-stem-list ul { margin: .35em 0 .2em; padding-left: 1.4em; }
.ptm-lead-in { font-weight: 700; margin: 10px 0; }
.ptm-options { display: grid; gap: 7px; margin-top: 14px; }
.ptm-option-row { position: relative; }
/* Buttons do not inherit font-family or font-size from their container, so the
   scaled value set on .ptm-options never reached the option text on its own.
   The site theme happens to supply an inherit rule, which made this look like
   it worked; the plugin should not depend on that. */
.ptm-option { align-items: center; background: var(--ptm-surface); font-family: inherit; font-size: inherit; border: 1px solid var(--ptm-border-strong-2); border-radius: 11px; color: var(--ptm-ink); cursor: pointer; display: grid; gap: 11px; grid-template-columns: 32px minmax(0,1fr) auto; line-height: 1.45; min-height: 50px; padding: 7px 52px 7px 11px; text-align: left; transition: background .14s ease,border-color .14s ease,box-shadow .14s ease,opacity .14s ease; width: 100%; }
.ptm-options.is-ranking .ptm-option, .ptm-options[role="group"] .ptm-option { padding-right: 11px; }
.ptm-player-shell .ptm-option:hover:not(:disabled) { background: var(--ptm-accent-softer) !important; border-color: var(--ptm-accent-border-4) !important; color: var(--ptm-ink) !important; opacity: 1 !important; }
.ptm-player-shell .ptm-option.is-selected, .ptm-player-shell .ptm-option.is-selected:hover { background: var(--ptm-accent-soft) !important; border-color: var(--ptm-blue) !important; box-shadow: 0 0 0 1px var(--ptm-blue); color: var(--ptm-ink) !important; }
.ptm-option-key { align-items: center; background: var(--ptm-surface-sunken-6); border-radius: 8px; color: var(--ptm-subtle-2); display: flex; font-size: 13px; font-weight: 800; height: 32px; justify-content: center; width: 32px; }
.ptm-option-copy p { margin: 0; }
.ptm-option-state { font-size: 20px; font-weight: 800; text-align: center; }
.ptm-option.is-correct { background: var(--ptm-correct-soft); border-color: var(--ptm-correct-border); box-shadow: 0 0 0 1px var(--ptm-correct-border); }
.ptm-option.is-correct .ptm-option-key, .ptm-option.is-correct .ptm-option-state { background: var(--ptm-correct-chip); color: var(--ptm-green); }
.ptm-option.is-incorrect { background: var(--ptm-incorrect-soft); border-color: var(--ptm-incorrect-border); box-shadow: 0 0 0 1px var(--ptm-incorrect-border); }
.ptm-option.is-incorrect .ptm-option-key, .ptm-option.is-incorrect .ptm-option-state { background: var(--ptm-incorrect-chip); color: var(--ptm-red); }
.ptm-option:disabled { color: inherit; cursor: default; opacity: 1; }
.ptm-player-shell .ptm-option:disabled:hover { background: var(--ptm-surface) !important; border-color: var(--ptm-border-strong-2) !important; box-shadow: none; color: var(--ptm-ink) !important; }
.ptm-player-shell .ptm-option.is-correct:disabled,
.ptm-player-shell .ptm-option.is-correct:disabled:hover { background: var(--ptm-correct-soft) !important; border-color: var(--ptm-correct-border) !important; box-shadow: 0 0 0 1px var(--ptm-correct-border); }
.ptm-player-shell .ptm-option.is-incorrect:disabled,
.ptm-player-shell .ptm-option.is-incorrect:disabled:hover { background: var(--ptm-incorrect-soft) !important; border-color: var(--ptm-incorrect-border) !important; box-shadow: 0 0 0 1px var(--ptm-incorrect-border); }
.ptm-eliminate { align-items: center; background: var(--ptm-surface-sunken-4) !important; border: 1px solid var(--ptm-border-strong-4) !important; border-radius: 50%; color: var(--ptm-subtle-7) !important; cursor: pointer; display: flex; font-size: 19px; height: 32px; justify-content: center; line-height: 1; min-height: 32px; padding: 0 !important; position: absolute; right: 10px; text-decoration: none; top: 50%; transform: translateY(-50%); width: 32px; z-index: 1; }
.ptm-eliminate[hidden] { display: none !important; }
.ptm-eliminate:hover { background: var(--ptm-incorrect-soft-3) !important; border-color: var(--ptm-incorrect-border-2) !important; color: var(--ptm-red) !important; }

@media (pointer: coarse) {
  .ptm-eliminate { height: 40px; min-height: 40px; width: 40px; }
  .ptm-options:not(.is-ranking):not([role="group"]) .ptm-option { padding-right: 58px; }
}
.ptm-option-row.is-eliminated .ptm-option { background: var(--ptm-surface-sunken-12) !important; border-color: var(--ptm-border-strong-7) !important; box-shadow: none; opacity: .48; }
.ptm-option-row.is-eliminated .ptm-option-copy { text-decoration: line-through; }
.ptm-option-row.is-eliminated .ptm-eliminate,
.ptm-option-row.is-eliminated .ptm-eliminate:hover { background: var(--ptm-surface-sunken-10) !important; border-color: var(--ptm-border-strong-8) !important; color: var(--ptm-subtle-3) !important; }
.ptm-answer-actions { align-items: center; border-top: 1px solid var(--ptm-divider); display: flex; gap: 18px; justify-content: space-between; margin-top: 20px; padding-top: 16px; }
.ptm-hint { color: var(--ptm-subtle); font-size: 12px; margin: 0; }

.ptm-feedback { border-radius: 14px; margin-top: 28px; overflow: hidden; }
.ptm-feedback.is-correct { background: var(--ptm-correct-soft-2); border: 1px solid var(--ptm-correct-border-3); }
.ptm-feedback.is-incorrect { background: var(--ptm-incorrect-soft-4); border: 1px solid var(--ptm-incorrect-border-4); }
.ptm-feedback-title { align-items: center; display: flex; gap: 12px; padding: 18px 20px; }
.ptm-feedback-icon { align-items: center; background: var(--ptm-surface); border-radius: 50%; display: flex; font-size: 18px; font-weight: 850; height: 38px; justify-content: center; width: 38px; }
.is-correct .ptm-feedback-icon, .is-correct .ptm-feedback-title h3 { color: var(--ptm-green); }
.is-incorrect .ptm-feedback-icon, .is-incorrect .ptm-feedback-title h3 { color: var(--ptm-red); }
.ptm-feedback-title span:not(.ptm-feedback-icon) { color: var(--ptm-muted); font-size: 11px; font-weight: 750; letter-spacing: .05em; text-transform: uppercase; }
.ptm-feedback-title h3 { font-size: 23px; margin: 0; }
.ptm-explanation { background: var(--ptm-surface); border-top: 1px solid var(--ptm-divider); color: var(--ptm-ink-soft-2); line-height: 1.7; padding: 24px; }
.ptm-explanation h3 { color: var(--ptm-ink); font-size: 18px; margin: 0 0 12px; }
.ptm-revealed-topic { align-items: baseline; display: flex; gap: 6px; margin-bottom: 12px; }
.ptm-revealed-topic span { color: var(--ptm-muted); font-size: 10px; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.ptm-revealed-topic span::after { content: ' ·'; }
.ptm-revealed-topic strong { color: var(--ptm-ink); font-size: 13px; }
.ptm-explanation p:first-of-type { margin-top: 0; }
.ptm-explanation p:last-child, .ptm-review-explanation p:last-child { margin-bottom: 0; }
.ptm-explanation h4, .ptm-review-explanation h4 { color: var(--ptm-ink); font-size: 14px; margin: 0 0 7px; }
.ptm-explanation-summary { overflow-wrap: anywhere; }
.ptm-explanation-summary.is-sjt .ptm-sjt-rationale { display: grid; gap: 16px; }
.ptm-sjt-rationale > p, .ptm-sjt-rationale-section > p { margin: 0; }
.ptm-sjt-rationale-section { display: grid; gap: 8px; }
.ptm-explanation .ptm-sjt-rationale-section h4, .ptm-review-explanation .ptm-sjt-rationale-section h4 { font-size: 15px; margin: 0; }
.ptm-sjt-rationale-section ul, .ptm-sjt-option-comments { display: grid; gap: 7px; margin: 0; }
.ptm-sjt-rationale-section li, .ptm-sjt-option-comments li { padding-left: 3px; }
.ptm-explanation-summary > :last-child { margin-bottom: 0 !important; }
.ptm-section-label { color: var(--ptm-muted); display: block; font-size: 11px; font-weight: 800; letter-spacing: .07em; margin-bottom: 7px; text-transform: uppercase; }
.ptm-explanation p:empty, .ptm-review-explanation p:empty { display: none; }
.ptm-explanation br + br, .ptm-review-explanation br + br { display: none; }
.ptm-explanation ul, .ptm-explanation ol, .ptm-review-explanation ul, .ptm-review-explanation ol { margin: 8px 0; padding-left: 20px; }
.ptm-explanation li + li, .ptm-review-explanation li + li { margin-top: 4px; }
.ptm-explanation li.ptm-list-section, .ptm-review-explanation li.ptm-list-section { list-style: none; margin-left: -20px; }
.ptm-explanation li.ptm-list-section > h4, .ptm-review-explanation li.ptm-list-section > h4 { font-size: 14px; margin: 12px 0 6px; }
.ptm-explanation li.ptm-list-section > ul, .ptm-explanation li.ptm-list-section > ol, .ptm-review-explanation li.ptm-list-section > ul, .ptm-review-explanation li.ptm-list-section > ol { margin-left: 0; }
.ptm-explanation .ptm-legacy-subpoint, .ptm-review-explanation .ptm-legacy-subpoint { margin: 4px 0 4px 20px !important; padding-left: 14px; position: relative; }
.ptm-explanation .ptm-legacy-subpoint::before, .ptm-review-explanation .ptm-legacy-subpoint::before { content: '•'; left: 0; position: absolute; }
.ptm-explanation-disclosure { border-top: 1px solid var(--ptm-divider-2); margin-top: 10px; padding-top: 2px; }
.ptm-explanation-disclosure summary { color: var(--ptm-blue); cursor: pointer; font-size: 13px; font-weight: 750; padding: 10px 0 6px; }
.ptm-explanation-disclosure > div { overflow-wrap: anywhere; padding: 2px 0 8px; }
.ptm-explanation-disclosure.is-references > div { display: grid; gap: 8px; }
.ptm-explanation-disclosure.is-references > div > * { margin-bottom: 0 !important; margin-top: 0 !important; }
.ptm-explanation-callout { background: var(--ptm-surface-sunken-2); border: 1px solid var(--ptm-divider); border-radius: 10px; margin-top: 12px; padding: 12px 14px; }
.ptm-explanation-callout.is-exam-tip { border-left: 4px solid var(--ptm-blue); }
.ptm-explanation-callout.is-memory-aid { border-left: 4px solid var(--ptm-ui-warn-ink); }
.ptm-explanation-callout > :last-child { margin-bottom: 0 !important; }
.ptm-option-rationale { background: var(--ptm-surface-sunken-2); border-radius: 8px; color: var(--ptm-ink-soft-2); font-size: 13px; grid-column: 1 / -1; line-height: 1.55; margin-top: 9px; padding: 10px 12px; text-align: left; width: 100%; }
.ptm-option-rationale > strong { color: var(--ptm-ink); display: block; font-size: 12px; margin-bottom: 4px; }
.ptm-option-rationale > :last-child { margin-bottom: 0 !important; }
.ptm-review-option > .ptm-option-rationale { grid-column: 2 / -1; }
.ptm-explanation a, .ptm-review-explanation a { color: var(--ptm-blue) !important; overflow-wrap: anywhere; text-decoration: underline; text-underline-offset: 2px; }
.ptm-resource-links { background: var(--ptm-surface); border-top: 1px solid var(--ptm-border); display: flex; justify-content: flex-end; padding: 18px 24px; }
.ptm-resource-links a { background: var(--ptm-accent-soft); border: 1px solid var(--ptm-accent-border-2); border-radius: 8px; color: var(--ptm-blue) !important; font-size: 12px; font-weight: 750; padding: 9px 11px; text-decoration: none !important; }
.ptm-resource-links a:hover { background: var(--ptm-accent-soft-4); }

.ptm-complete { padding-top: 38px; }
.ptm-score-ring { align-items: center; background: conic-gradient(var(--ptm-green) 0 calc(var(--pct-correct,0) * 1%),var(--ptm-red) 0 calc((var(--pct-correct,0) + var(--pct-incorrect,0)) * 1%),var(--ptm-surface-muted-2) 0); border-radius: 50%; display: flex; height: 150px; justify-content: center; margin: 0 auto 28px; position: relative; width: 150px; }
.ptm-score-ring.is-score-hidden { background: var(--ptm-surface-muted-2); }
.ptm-score-ring::before { background: var(--ptm-surface); border-radius: 50%; content: ''; height: 124px; position: absolute; width: 124px; }
.ptm-score-ring div { align-items: center; display: flex; flex-direction: column; justify-content: center; position: relative; text-align: center; transform: translateY(-1px); z-index: 1; }
.ptm-score-ring strong { font-size: 30px; line-height: 1; }
.ptm-score-ring span { color: var(--ptm-muted); font-size: 13px; margin-top: 6px; }
.ptm-complete .ptm-coming { font-size: 13px; margin: 18px auto 0; }

.ptm-review { animation: ptm-enter .25s ease both; margin: 0 auto; max-width: 1120px; min-width: 0; width: 100%; }
.ptm-review-hero,
.ptm-review-intro,
.ptm-review-toolbar,
.ptm-review-toolbar-row,
.ptm-review-filters,
.ptm-review-toolbar-actions,
.ptm-review-item,
.ptm-review-question,
.ptm-review-question-copy,
.ptm-review-body,
.ptm-review-options,
.ptm-review-option,
.ptm-review-explanation { max-width: 100%; min-width: 0; }
.ptm-review-hero { align-items: center; background: var(--ptm-surface); border: 1px solid var(--ptm-border); border-radius: 18px; box-shadow: 0 14px 44px rgba(31,45,77,.08); display: grid; gap: 28px; grid-template-columns: 150px minmax(0,1fr) auto; padding: 30px; }
.ptm-review-score { align-items: center; display: grid; gap: 8px; justify-items: center; }
.ptm-review-hero .ptm-score-ring { height: 130px; margin: 0; width: 130px; }
.ptm-review-hero .ptm-score-ring::before { height: 106px; width: 106px; }
.ptm-review-hero .ptm-score-ring strong { font-size: 27px; }
.ptm-review-score-control { align-items: center; background: none; border: 0; color: var(--ptm-muted); cursor: pointer; display: inline-flex; font: inherit; font-size: 12px; gap: 5px; justify-content: center; min-height: 32px; padding: 3px 7px; }
.ptm-review-score-control svg { height: 16px; width: 16px; }
.ptm-review-intro h2 { color: var(--ptm-ink); font-size: clamp(25px,3vw,36px); letter-spacing: -.03em; line-height: 1.08; margin: 0 0 10px; white-space: nowrap; }
.ptm-review-intro p { color: var(--ptm-muted); font-size: 15px; margin: 0; }
.ptm-review-legend { align-items: center; display: flex; flex-wrap: wrap; gap: 12px 18px; margin: 0 0 9px; }
.ptm-review-legend span { align-items: center; color: var(--ptm-subtle-3); display: inline-flex; font-size: 13px; gap: 6px; }
.ptm-review-legend i { background: var(--ptm-muted-strong); border-radius: 3px; display: inline-block; height: 12px; width: 12px; }
.ptm-review-legend i.is-correct { background: var(--ptm-green); }
.ptm-review-legend i.is-incorrect { background: var(--ptm-red); }
.ptm-review-legend strong { color: var(--ptm-ink); font-variant-numeric: tabular-nums; }
.ptm-review-toolbar { background: var(--ptm-surface); border: 1px solid var(--ptm-border); border-radius: 12px; margin: 16px 0 14px; padding: 10px 12px; }
.ptm-review-filters { display: flex; flex-wrap: wrap; gap: 7px; }
.ptm-review-filters button, .ptm-review-expand, .ptm-review-score-toggle { background: var(--ptm-surface) !important; border: 1px solid var(--ptm-border-strong-2) !important; border-radius: 8px; color: var(--ptm-ink-soft-6) !important; cursor: pointer; font-size: 12px; font-weight: 750; min-height: 38px; padding: 7px 11px; }
.ptm-review-filters button span { align-items: center; background: var(--ptm-surface-muted); border-radius: 50%; display: inline-flex; font-size: 10px; height: 24px; justify-content: center; line-height: 1; margin-left: 5px; min-width: 24px; padding: 0; width: 24px; }
.ptm-review-filters button.is-active { background: var(--ptm-accent-soft) !important; border-color: var(--ptm-accent-border-5) !important; color: var(--ptm-blue) !important; }
.ptm-review-filters button.is-active span { background: var(--ptm-accent-soft-5); }
.ptm-review-filters button > i { font-style: normal; line-height: 1; }
/* A 40-question session wrapped to seven rows and pushed the review content
   off screen. The grid is capped at roughly three rows and scrolls beyond
   that, so the toolbar height is the same for a 5- and a 40-question session. */
/* Own full-width row, collapsed by default. Competing for space with the
   filters meant a 40-question session pushed the review content off screen. */
.ptm-review-jumps { border-top: 1px solid var(--ptm-border-strong-6); display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-start; padding: 12px 2px 2px; margin-top: 12px; max-height: 168px; overflow-y: auto; overscroll-behavior: contain; align-content: flex-start; }
.ptm-review-toolbar-row { align-items: center; display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-start; }

/* One size for every toolbar control: the score and expand buttons used to
   render taller than the filter chips beside them. */
.ptm-review-filters button,
.ptm-review-action { align-items: center; background: var(--ptm-surface) !important; border: 1px solid var(--ptm-border-strong) !important; border-radius: 10px; color: var(--ptm-ink-soft) !important; cursor: pointer; display: inline-flex; font-size: 14px; font-weight: 700; gap: 8px; height: 44px; justify-content: center; line-height: 1; padding: 0 14px !important; }
.ptm-review-filters button:hover,
.ptm-review-action:hover { background: var(--ptm-surface-sunken-7) !important; }
.ptm-review-action .ptm-review-chevron { fill: none; height: 16px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; transition: transform .15s ease; width: 16px; }
.ptm-review-action[aria-expanded="true"] .ptm-review-chevron { transform: rotate(180deg); }
.ptm-review-action > span[aria-hidden="true"] { font-size: 1rem; letter-spacing: -4px; margin-right: 3px; }
.ptm-review-action > b { font-size: inherit; }
.ptm-review-jump-select { align-items: center; display: inline-flex; }
.ptm-review-filter-select { display: none; }
.ptm-review-jump-select select { background: var(--ptm-surface); border: 1px solid var(--ptm-border-strong); border-radius: 10px; color: var(--ptm-ink); font: inherit; font-size: 13px; height: 44px; min-width: 154px; padding: 0 34px 0 10px; }

.ptm-review-jumps::-webkit-scrollbar { width: 6px; }
.ptm-review-jumps::-webkit-scrollbar-thumb { background: var(--ptm-border-strong); border-radius: 3px; }
.ptm-review-jumps button { align-items: center; background: var(--ptm-surface) !important; border: 1px solid var(--ptm-border-strong) !important; border-radius: 8px; color: var(--ptm-subtle-9) !important; cursor: pointer; display: flex; height: 38px; justify-content: center; padding: 0 !important; position: relative; width: 38px; }
.ptm-review-jumps button.is-correct { background: var(--ptm-correct-soft) !important; border-color: var(--ptm-correct-border-2) !important; color: var(--ptm-green) !important; }
.ptm-review-jumps button.is-incorrect { background: var(--ptm-incorrect-soft) !important; border-color: var(--ptm-incorrect-border-2) !important; color: var(--ptm-red) !important; }
.ptm-review-jumps button i { bottom: 1px; font-size: 9px; font-style: normal; line-height: 1; opacity: .8; position: absolute; right: 3px; }
.ptm-review-jumps button b { color: var(--ptm-warn-ink-4); font-size: 10px; line-height: 1; position: absolute; right: -3px; top: -4px; }
.ptm-review-toolbar-actions { display: flex; gap: 7px; justify-content: flex-end; margin-left: auto; }
.ptm-review-score-toggle { align-items: center; display: inline-flex; gap: 6px; white-space: nowrap; }
.ptm-review-list { display: grid; gap: 12px; min-width: 0; }
.ptm-review-item { background: var(--ptm-surface); border: 1px solid var(--ptm-border); border-left: 4px solid var(--ptm-muted-strong); border-radius: 14px; box-shadow: 0 8px 24px rgba(31,45,77,.05); overflow: hidden; }
.ptm-review-item.is-correct { border-left-color: var(--ptm-correct-strong); }
.ptm-review-item.is-incorrect { border-left-color: var(--ptm-incorrect-strong); }
.ptm-review-question { align-items: center; background: var(--ptm-surface) !important; border: 0 !important; color: var(--ptm-ink) !important; cursor: pointer; display: grid; gap: 14px; grid-template-columns: 42px minmax(0,1fr) auto; padding: 17px 18px !important; text-align: left; width: 100%; }
.ptm-review-question:hover { background: var(--ptm-accent-softer) !important; color: var(--ptm-ink) !important; }
.ptm-review-number { align-items: center; background: var(--ptm-surface-muted); border-radius: 9px; display: flex; font-size: 15px; font-weight: 800; height: 42px; justify-content: center; width: 42px; }
.ptm-review-question-copy { min-width: 0; }
.ptm-review-question-copy small { color: var(--ptm-blue); display: block; font-size: 10px; font-weight: 750; letter-spacing: .05em; overflow: hidden; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.ptm-review-question-copy strong { color: var(--ptm-ink); display: block; font-size: 15px; margin-top: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ptm-review-meta { align-items: center; display: flex; gap: 8px; justify-content: flex-end; min-width: 0; }
.ptm-review-meta em { border-radius: 999px; font-size: 10px; font-style: normal; font-weight: 800; padding: 4px 8px; }
.ptm-review-meta em:first-child { min-width: 76px; text-align: center; }
.ptm-review-meta em.is-correct { background: var(--ptm-correct-chip-2); color: var(--ptm-green); }
.ptm-review-meta em.is-incorrect { background: var(--ptm-incorrect-chip-2); color: var(--ptm-red); }
.ptm-review-meta em.is-unanswered { background: var(--ptm-surface-muted); color: var(--ptm-subtle-10); }
.ptm-review-meta em.is-flagged { background: var(--ptm-warn-soft-2); color: var(--ptm-warn-ink); }
.ptm-review-meta small { color: var(--ptm-muted); font-size: 10px; min-width: 46px; text-align: right; }
.ptm-review-chevron { align-items: center; background: var(--ptm-surface-sunken-6); border-radius: 50%; display: flex; font-size: 18px; font-weight: 700; height: 30px; justify-content: center; width: 30px; }
.ptm-review-body { border-top: 1px solid var(--ptm-divider); min-width: 0; padding: clamp(20px,3vw,32px); }
.ptm-review-body[hidden] { display: none !important; }
.ptm-review-stem { color: var(--ptm-ink-soft-3); font-size: 16px; line-height: 1.72; }
.ptm-review-stem p:first-child { margin-top: 0; }
.ptm-review-options { display: grid; gap: 8px; margin: 22px 0; min-width: 0; }
.ptm-review-option { align-items: center; border: 1px solid var(--ptm-border-strong-4); border-radius: 10px; display: grid; gap: 12px; grid-template-columns: 34px minmax(0,1fr) auto; min-height: 54px; padding: 10px 13px; }
.ptm-review-option > b { align-items: center; background: var(--ptm-surface-sunken-6); border-radius: 7px; color: var(--ptm-subtle-2); display: flex; height: 32px; justify-content: center; width: 32px; }
.ptm-review-option > div { color: var(--ptm-ink); line-height: 1.5; min-width: 0; overflow-wrap: anywhere; }
.ptm-review-option > div p { margin: 0; }
.ptm-review-option aside { display: flex; flex-wrap: wrap; gap: 5px; justify-content: flex-end; }
.ptm-review-option aside span { border-radius: 999px; font-size: 10px; font-weight: 800; padding: 4px 7px; white-space: nowrap; }
.ptm-review-option aside span.is-correct { background: var(--ptm-correct-chip); color: var(--ptm-green); }
.ptm-review-option aside span.is-selected { background: var(--ptm-accent-soft); color: var(--ptm-blue); }
.ptm-review-option.is-correct { background: var(--ptm-correct-soft); border-color: var(--ptm-correct-border-2); }
.ptm-review-option.is-selected-wrong { background: var(--ptm-incorrect-soft); border-color: var(--ptm-incorrect-border-2); }
.ptm-review-option.is-selected-wrong aside span.is-selected { background: var(--ptm-incorrect-chip); color: var(--ptm-red); }
.ptm-review-explanation { background: var(--ptm-surface-sunken-2); border: 1px solid var(--ptm-border-strong-6); border-radius: 11px; color: var(--ptm-ink-soft-2); line-height: 1.72; padding: 20px; }
.ptm-review-explanation h3 { color: var(--ptm-ink); font-size: 18px; margin: 0 0 12px; }
.ptm-review-explanation p:first-of-type { margin-top: 0; }
.ptm-review-resources { align-items: center; border-top: 1px solid var(--ptm-divider); display: flex; justify-content: flex-end; margin-top: 20px; padding-top: 18px; }
.ptm-review-resources a { background: var(--ptm-accent-soft); border: 1px solid var(--ptm-accent-border-2); border-radius: 8px; color: var(--ptm-blue) !important; font-size: 12px; font-weight: 750; padding: 9px 11px; text-decoration: none !important; }
.ptm-review-empty { align-items: center; background: var(--ptm-surface); border: 1px dashed var(--ptm-border-strong); border-radius: 12px; color: var(--ptm-muted); display: flex; flex-direction: column; gap: 6px; padding: 40px 20px; text-align: center; }
.ptm-review-empty strong { color: var(--ptm-ink); }

.ptm-sticky-action[hidden] { display: none !important; }
.ptm-sticky-action { align-items: center; backdrop-filter: blur(12px); background: var(--ptm-surface-veil); border: 1px solid var(--ptm-border); border-radius: 14px; bottom: 18px; box-shadow: 0 14px 38px rgba(31,45,77,.18); display: flex; justify-content: center; left: 50%; padding: 8px; position: fixed; transform: translateX(-50%); z-index: 99990; }
.ptm-sticky-action .ptm-button { min-height: 46px; }

@media (min-width: 1100px) {
  .ptm-options.is-many-options { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

/* The question bank is an application surface, not an article feed. */
.ptm-qbank-active .wpil-related-posts,
.ptm-qbank-active .wpil-related-posts-section,
.ptm-qbank-active .wpil_widget_related_posts,
.ptm-qbank-active #link-whisper-related-posts-widget,
.ptm-qbank-active .link-whisper-related-posts,
.ptm-qbank-active .lwrp,
.ptm-qbank-active .ast-related-posts-wrapper,
.ptm-qbank-active #jp-relatedposts { display: none !important; }
.ptm-qbank-active #ast-scroll-top,
.ptm-qbank-focus-page #ast-scroll-top,
.ptm-qbank-active .ast-scroll-top-icon,
.ptm-qbank-focus-page .ast-scroll-top-icon { display: none !important; }

@media (max-width: 980px) {
  .ptm-runner-layout, .ptm-runner-layout.is-rail-hidden { display: block; }
  .ptm-session-rail { bottom: 16px; box-shadow: 0 20px 70px rgba(14,24,44,.28); height: calc(100dvh - 32px); max-width: 380px; position: fixed; right: 16px; top: 16px; width: calc(100% - 32px); z-index: 999999; }
  .ptm-runner-layout.is-rail-hidden .ptm-session-rail { opacity: 0; transform: translateX(calc(100% + 32px)); }
  /* The desktop rule already lets the list absorb the remaining height, and
     on mobile the rail is fixed to the viewport, so the same estimate would be
     wrong here too. Nothing to override. */
  .ptm-review-hero { grid-template-columns: 130px minmax(0,1fr); }
  .ptm-review-hero > .ptm-button { grid-column: 1/-1; justify-self: center; }
  .ptm-review-toolbar { grid-template-columns: 1fr; }
  .ptm-review-jumps { border: 0; border-bottom: 1px solid var(--ptm-border-strong-6); border-top: 1px solid var(--ptm-border-strong-6); justify-content: flex-start; padding: 10px 0; }
  .ptm-review-toolbar-actions { justify-content: flex-start; }
}

@media (max-width: 700px) {
  .ptm-focus-content { padding: 10px; }
  .ptm-focus-bar-inner { gap: 6px; }
  .ptm-focus-context > span:not(.ptm-prefs) { display: none; }
  .ptm-focus-context { gap: 6px; }
  .ptm-focus-brand { min-height: 44px; }
  .ptm-focus-context a, .ptm-prefs-open { align-items: center; display: inline-flex; min-height: 44px; }
  .ptm-focus-brand > span { font-size: 14px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ptm-welcome { grid-template-columns: 1fr; padding: 26px 20px; }
  .ptm-question-card { border-radius: 12px; padding: 22px 16px; }
  .ptm-question-header { align-items: stretch; flex-direction: column; gap: 12px; }
  .ptm-question-header h2 { display: none; }
  .ptm-header-tools { display: grid; gap: 7px; grid-template-columns: repeat(3,minmax(0,1fr)); min-width: 0; width: 100%; }
  .ptm-header-tools > * { min-width: 0; white-space: nowrap; word-break: normal; }
  .ptm-header-tools button { min-height: 44px; }
  .ptm-header-tools .ptm-nav-icon:first-child { grid-column: 1; grid-row: 1; width: 100%; }
  .ptm-header-tools .ptm-overview-button { grid-column: 2; grid-row: 1; width: 100%; }
  .ptm-header-tools .ptm-nav-icon:nth-of-type(3) { grid-column: 3; grid-row: 1; width: 100%; }
  .ptm-header-tools .ptm-flag { grid-column: 1; grid-row: 2; justify-content: center; width: 100%; }
  .ptm-header-tools .ptm-help-open { grid-column: 2; grid-row: 2; }
  .ptm-header-tools .ptm-report-open { grid-column: 3; grid-row: 2; }
  .ptm-header-tools .ptm-help-open, .ptm-header-tools .ptm-report-open { border: 1px solid var(--ptm-border) !important; min-height: 44px; text-align: center; width: 100%; }
  .ptm-overview-button { min-width: 0; }
  .ptm-flag { margin-left: 0; }
  .ptm-eliminate { height: 40px; min-height: 40px; right: 8px; width: 40px; }
  .ptm-options:not(.is-ranking):not([role="group"]) .ptm-option { padding-right: 58px; }
  .ptm-answer-actions { align-items: stretch; flex-direction: column; }
  .ptm-answer-actions .ptm-button { width: 100%; }
  .ptm-hint { text-align: center; }
  .ptm-access-card, .ptm-complete { border-radius: 12px; margin: 16px auto; padding: 30px 20px; }
  .ptm-resource-links { justify-content: stretch; padding: 16px; }
  .ptm-resource-links a { text-align: center; width: 100%; }
  .ptm-review-hero { grid-template-columns: 1fr; padding: 24px 18px; text-align: center; }
  .ptm-review-score { justify-self: center; }
  .ptm-review-intro h2 { white-space: normal; }
  .ptm-review-hero > .ptm-button { grid-column: auto; justify-self: stretch; }
  .ptm-review-legend { display: grid; gap: 6px; grid-template-columns: repeat(3,auto); justify-content: center; }
  .ptm-review-legend span { font-size: 11px; gap: 4px; white-space: nowrap; }
  .ptm-review-legend i { height: 9px; width: 9px; }
  .ptm-review-toolbar { border-radius: 12px; margin: 10px 0 12px; padding: 7px; position: sticky; top: 68px; z-index: 40; }
  .ptm-review-toolbar-row { display: grid; gap: 6px; grid-template-columns: repeat(3,minmax(0,1fr)); width: 100%; }
  .ptm-review-filters { display: none; }
  .ptm-review-filter-select { display: block; grid-column: 1; min-width: 0; }
  .ptm-review-toolbar-actions { display: contents; }
  .ptm-review-jump-select { display: block; grid-column: 2; min-width: 0; }
  .ptm-review-filter-select > span { clip: rect(0 0 0 0); height: 1px; overflow: hidden; position: absolute; white-space: nowrap; width: 1px; }
  .ptm-review-filter-select select, .ptm-review-jump-select select { background: var(--ptm-surface); border: 1px solid var(--ptm-border-strong); border-radius: 10px; color: var(--ptm-ink); font: inherit; font-size: 12px; height: 44px; min-width: 0; padding: 0 25px 0 8px; width: 100%; }
  .ptm-review-action { grid-column: 3; height: 44px; min-width: 0; padding: 0 8px !important; width: 100%; }
  .ptm-review-expand, .ptm-review-score-toggle { justify-content: center; width: 100%; }
  .ptm-review-question { gap: 9px; grid-template-columns: 38px minmax(0,1fr) 28px; padding: 14px 12px !important; }
  .ptm-review-number { height: 38px; width: 38px; }
  .ptm-review-question-copy strong { display: -webkit-box; white-space: normal; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
  .ptm-review-meta { align-items: center; flex-wrap: wrap; grid-column: 2/4; grid-row: 2; justify-content: flex-start; }
  .ptm-review-meta em:first-child { min-width: 0; }
  .ptm-review-meta small { min-width: 0; text-align: left; }
  .ptm-review-option { align-items: start; grid-template-columns: 32px minmax(0,1fr); }
  .ptm-review-option aside { grid-column: 2; justify-content: flex-start; }
  .ptm-review-resources { align-items: stretch; flex-direction: column; }
  .ptm-review-resources a { text-align: center; }
  .ptm-sticky-action { bottom: calc(12px + env(safe-area-inset-bottom)); left: 12px; right: 12px; transform: none; }
  .ptm-sticky-action .ptm-button { min-height: 44px; width: 100%; }
  .ptm-session-dialog-backdrop { align-items: flex-end; padding: 10px; }
  .ptm-session-dialog { border-radius: 16px; max-height: calc(100dvh - 20px); }
  .ptm-session-dialog > header { padding: 20px 18px 16px; }
  .ptm-session-dialog h2 { font-size: 23px; }
  .ptm-session-dialog-progress { padding: 0 18px; }
  .ptm-session-dialog-progress span { font-size: 10px; padding: 10px 3px; }
  .ptm-session-dialog-progress strong { font-size: 16px; }
  .ptm-session-dialog-choices { padding: 16px 18px 10px; }
  .ptm-session-dialog-warning { margin: 4px 18px 18px; }
  .ptm-session-dialog-error { margin: -8px 18px 18px; }
}

@media (max-width: 782px) {
  .admin-bar .ptm-review-toolbar { top: 114px; }
}

@media (max-width: 360px) {
  .ptm-overview-button { padding-left: 8px; padding-right: 8px; }
  .ptm-overview-glyph { display: none; }
}

@media (max-width: 480px) {
  .ptm-focus-brand > span { display: none; }
}

/* Keep the focus shell intact while giving its three actions a dedicated row
   on the narrow phones where one flex row previously clipped the exit link. */
@media (max-width: 480px) {
  .ptm-focus-bar-inner { align-items: stretch; flex-wrap: wrap; padding: 6px 0; }
  .ptm-focus-brand { flex: 1 1 100%; justify-content: center; min-height: 38px; }
  .ptm-focus-brand > span { display: inline; font-size: 14px; max-width: calc(100vw - 72px); }
  .ptm-focus-context { display: grid; flex: 1 1 100%; gap: 6px; grid-template-columns: 44px minmax(0,1fr) minmax(0,1fr); width: 100%; }
  .ptm-focus-context .ptm-prefs { min-width: 0; }
  .ptm-focus-context .ptm-prefs-open,
  .ptm-focus-context a { justify-content: center; min-width: 0; overflow-wrap: anywhere; padding: 6px 7px; text-align: center; white-space: normal; width: 100%; }
}

@media (pointer: coarse) {
  .ptm-hint.is-keyboard-hint { display: none; }
}

@media (max-width: 782px) {
  .admin-bar .ptm-focus-bar { top: 46px; }
  .admin-bar.ptm-qbank-focus-page { scroll-padding-top: 122px; }
  .admin-bar .ptm-question-card { scroll-margin-top: 122px; }
}

@media (prefers-reduced-motion: reduce) {
  .ptm-player-shell *, .ptm-player-shell *::before, .ptm-player-shell *::after { animation-duration: .01ms !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
}


/* Report dialog (Stage 13) ------------------------------------------------ */
.ptm-report-open, .ptm-help-open { background: none !important; border: 0; border-radius: 8px; color: var(--ptm-subtle) !important; cursor: pointer; font-size: 13px; font-weight: 700; min-height: 40px; padding: 0 10px !important; }
.ptm-report-open:hover, .ptm-help-open:hover { background: var(--ptm-accent-soft) !important; color: var(--ptm-blue) !important; }

/* Runner help is intentionally a panel rather than a tooltip: it explains a
   workflow and remains usable with touch, keyboard and screen readers. */
.ptm-runner-help-backdrop { align-items: center; background: rgba(14,24,44,.64); display: flex; inset: 0; justify-content: center; padding: 20px; position: fixed; z-index: 1000001; }
.ptm-runner-help-panel { background: var(--ptm-surface); border: 1px solid var(--ptm-border); border-radius: 18px; box-shadow: 0 24px 80px rgba(14,24,44,.3); color: var(--ptm-ink); display: flex; flex-direction: column; max-height: calc(100dvh - 32px); max-width: 1160px; overflow: hidden; position: relative; width: 100%; }
.ptm-runner-help-panel > header { align-items: flex-start; border-bottom: 1px solid var(--ptm-divider); display: flex; gap: 18px; justify-content: space-between; padding: 15px 20px 13px; }
.ptm-runner-help-panel h2 { color: var(--ptm-ink); font-size: 23px; line-height: 1.15; margin: 0; }
.ptm-runner-help-panel h3 { color: var(--ptm-ink); font-size: 14px; letter-spacing: .02em; margin: 0 0 7px; }
.ptm-runner-help-panel [data-help-close]:not(.ptm-button) { align-items: center; background: var(--ptm-surface-sunken-8) !important; border: 0; border-radius: 50%; color: var(--ptm-ink) !important; cursor: pointer; display: flex; flex: 0 0 auto; font-size: 20px; height: 38px; justify-content: center; padding: 0; width: 38px; }
.ptm-runner-help-body { display: grid; gap: 20px; grid-template-columns: repeat(3,minmax(0,1fr)); min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 14px 20px 16px; }
.ptm-runner-help-body > section + section { border-left: 1px solid var(--ptm-divider); padding-left: 20px; }
.ptm-runner-help-body dl { display: grid; gap: 5px; margin: 0; }
.ptm-runner-help-body dl > div { border-top: 1px solid var(--ptm-divider); display: grid; gap: 2px; grid-template-columns: minmax(102px,.34fr) minmax(0,1fr); padding-top: 6px; }
.ptm-runner-help-body dt { font-size: 12px; font-weight: 750; }
.ptm-runner-help-body dd { color: var(--ptm-muted); font-size: 12px; line-height: 1.28; margin: 0; }
.ptm-runner-help-reference { display: grid; gap: 14px; }
.ptm-runner-help-statuses > div { display: flex; flex-wrap: wrap; gap: 7px 13px; }
.ptm-runner-help-statuses span { align-items: center; color: var(--ptm-muted); display: inline-flex; font-size: 12px; gap: 6px; }
.ptm-runner-help-statuses i { align-items: center; border-radius: 50%; display: inline-flex; font-style: normal; font-weight: 850; height: 22px; justify-content: center; width: 22px; }
.ptm-runner-help-statuses .is-correct i { background: var(--ptm-correct-chip-2); color: var(--ptm-green); }
.ptm-runner-help-statuses .is-partial i { background: var(--ptm-ui-warn-soft); color: var(--ptm-ui-warn-ink); }
.ptm-runner-help-statuses .is-incorrect i { background: var(--ptm-incorrect-chip-2); color: var(--ptm-red); }
.ptm-runner-help-statuses .is-unanswered i { background: var(--ptm-surface-muted); color: var(--ptm-subtle-5); }
.ptm-runner-help-panel > footer { border-top: 1px solid var(--ptm-divider); display: flex; justify-content: flex-end; padding: 10px 20px 12px; }
.ptm-runner-help-panel > footer .ptm-button { min-height: 40px; padding: 8px 18px; }
.ptm-runner-help-panel::after { background: linear-gradient(transparent,var(--ptm-surface)); bottom: 61px; content: ''; height: 42px; left: 0; opacity: 0; pointer-events: none; position: absolute; right: 0; transition: opacity .15s ease; }
.ptm-runner-help-panel.has-scroll-more::after { opacity: 1; }
@media (max-width: 860px) {
  .ptm-runner-help-backdrop { align-items: flex-end; padding: 10px; }
  .ptm-runner-help-panel { border-radius: 16px; max-height: calc(100dvh - 20px); }
  .ptm-runner-help-panel > header { padding: 19px 18px 15px; }
  .ptm-runner-help-panel h2 { font-size: 22px; }
  .ptm-runner-help-body { grid-template-columns: 1fr; padding: 17px 18px; }
  .ptm-runner-help-body > section + section { border-left: 0; border-top: 1px solid var(--ptm-divider); padding-left: 0; padding-top: 17px; }
  .ptm-runner-help-body dl > div { grid-template-columns: 1fr; }
  .ptm-runner-help-panel > footer { padding: 12px 18px 16px; }
  .ptm-runner-help-panel > footer .ptm-button { width: 100%; }
}
@media (pointer: coarse) {
  .ptm-runner-help-keyboard { display: none; }
}
@media (max-width: 480px) {
  .ptm-runner-help-statuses.is-clinical > div { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); width: 100%; }
  .ptm-runner-help-statuses.is-sjt > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); width: 100%; }
  .ptm-runner-help-statuses span { justify-content: center; min-width: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .ptm-runner-help-panel::after { transition: none; }
}
.ptm-report-open:hover { background: var(--ptm-surface-sunken-7) !important; color: var(--ptm-ink-soft) !important; }

.ptm-report-dialog { align-items: center; background: rgba(11, 31, 58, .55); display: flex; inset: 0; justify-content: center; padding: 16px; position: fixed; z-index: 9999; }
.ptm-report-panel { background: var(--ptm-surface); border-radius: 16px; max-height: 90vh; max-width: 460px; overflow-y: auto; padding: 24px; width: 100%; }
.ptm-report-panel h2 { font-size: 1.2rem; margin: 0 0 6px; }
.ptm-report-intro { color: var(--ptm-subtle); font-size: var(--ptm-ui-text-sm); margin: 0 0 16px; }
.ptm-report-types { display: grid; gap: 4px; margin-bottom: 14px; }
.ptm-report-type { align-items: center; border-radius: 10px; cursor: pointer; display: flex; gap: 10px; min-height: 44px; padding: 6px 10px; }
.ptm-report-type:hover { background: var(--ptm-surface-sunken-7); }
.ptm-report-type input { height: 20px; margin: 0; width: 20px; }
.ptm-report-note { display: block; font-size: .88rem; }
.ptm-report-note span { color: var(--ptm-subtle); display: block; margin-bottom: 6px; }
/* A textarea takes its background and colour from the browser, not its
   container, so a dark panel would otherwise hold a white field. */
.ptm-report-note textarea { background: var(--ptm-surface); border: 1px solid var(--ptm-border-strong); border-radius: 10px; color: var(--ptm-ink); font: inherit; padding: 10px; width: 100%; }
.ptm-report-note textarea::placeholder { color: var(--ptm-muted); opacity: 1; }
.ptm-report-note textarea:focus-visible { border-color: var(--ptm-blue); outline: 2px solid var(--ptm-blue); outline-offset: 1px; }
.ptm-report-status { color: var(--ptm-ink-soft); font-size: .88rem; margin: 12px 0 0; min-height: 20px; }
.ptm-report-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 16px; }

@media (max-width: 480px) {
  .ptm-report-actions { flex-direction: column-reverse; }
  .ptm-report-actions .ptm-button { width: 100%; }
}

/* Medical disclaimer (Stage 13) ------------------------------------------- */
.ptm-disclaimer {
  align-items: center;
  border-top: 1px solid var(--ptm-divider-3);
  color: var(--ptm-subtle);
  display: flex;
  font-size: var(--ptm-ui-text-xs);
  gap: 10px;
  line-height: 1.45;
  justify-content: center;
  margin: 14px auto 0;
  max-width: 1040px;
  padding: 10px 16px 12px;
  text-align: center;
}
.ptm-disclaimer-mark {
  background: var(--ptm-warn-soft-3);
  border-radius: 999px;
  color: var(--ptm-warn-ink-6);
  flex: 0 0 auto;
  font-weight: 700;
  height: 20px;
  line-height: 20px;
  text-align: center;
  width: 20px;
}

/* Colour tokens ------------------------------------------------------------
   Namespaced --ptm-ui-* because the player already declares names such as
   --ptm-surface-sunken with different values. Declared on the same elements
   these would win and silently recolour player surfaces — two of them did.

   Shared by the builder and the dashboard, so dark mode is a second set of
   values rather than a second set of rules. Both previously carried ad-hoc
   overrides — twenty-five between them, plus more in preferences.css — which is
   how one surface came to have two colour sources that could drift apart.

   Declared on the focus-page body as well as the shell, because custom
   properties do not inherit upwards and elements outside the shell would
   otherwise resolve nothing. An unresolvable var() drops its whole declaration
   silently; that removed two 1px borders in the player and took a release to
   find.

   One token per original colour, each keeping the exact value it replaced, so
   light mode is unchanged. Several tokens therefore share a role and differ
   only slightly. Dark consolidates a role onto one value. */
body.ptm-qbank-focus-page,
.ptm-focus-app,
.ptm-builder,
.ptm-dash {
  /* Shared component scale. Builder and dashboard CSS may consume these
     values but must never restate their literals. */
  --ptm-ui-radius-pill: 999px;
  --ptm-ui-radius-field: 10px;
  --ptm-ui-radius-card: 14px;

  --ptm-ui-control-h: 36px;
  --ptm-ui-control-h-lg: 44px;

  --ptm-ui-text-xs: .78rem;
  --ptm-ui-text-sm: .88rem;
  --ptm-ui-text-md: 1rem;
  --ptm-ui-text-card: 1.2rem;
  --ptm-ui-text-page: 2rem;

  --ptm-ui-card-pad: 16px;

  --ptm-ui-accent: #2b4bd8;
  /* Text on a saturated accent fill, and accent-coloured text on a plain
     surface. The same colour in light mode; they cannot be in dark, because a
     fill dark enough to carry white text is too dark to read as text itself. */
  --ptm-ui-on-accent: #fff;
  --ptm-ui-accent-text: #2b4bd8;

  --ptm-ui-accent-border: #c9d8f7;
  --ptm-ui-accent-border-2: #dfe6f2;

  --ptm-ui-accent-dark: #1f39ad;

  --ptm-ui-accent-soft: #eef2ff;
  --ptm-ui-accent-soft-2: #eef4ff;
  --ptm-ui-accent-soft-3: #dce7fb;

  --ptm-ui-bad-ink: #8a1c14;

  --ptm-ui-bad-soft: #fdeceb;

  --ptm-ui-bad-strong: #d8564a;

  --ptm-ui-border-strong: #cfd7e6;
  --ptm-ui-border-strong-2: #c3cbdb;

  --ptm-ui-divider: #e3e8ef;
  --ptm-ui-divider-2: #e2e8f0;
  --ptm-ui-divider-3: #dbe3ef;

  --ptm-ui-ink: #17233d;

  --ptm-ui-ink-soft: #33405a;
  --ptm-ui-ink-soft-2: #35415a;

  --ptm-ui-ok-ink: #14532d;
  --ptm-ui-ok-ink-2: #12653a;

  --ptm-ui-ok-soft: #eaf7ef;

  --ptm-ui-ok-strong: #17a673;
  --ptm-ui-ok-strong-2: #00a896;

  --ptm-ui-subtle: #5b6472;
  --ptm-ui-subtle-2: #667085;
  --ptm-ui-subtle-3: #667085;

  --ptm-ui-surface: #fff;
  --ptm-ui-surface-2: #ffffff;

  --ptm-ui-surface-muted: #eef2f8;
  --ptm-ui-surface-muted-2: #eef1f6;

  --ptm-ui-surface-sunken: #fafbfd;
  --ptm-ui-surface-sunken-2: #f7f9fd;
  --ptm-ui-surface-sunken-3: #f3f6fb;
  --ptm-ui-surface-sunken-4: #f6f8fa;
  --ptm-ui-surface-sunken-5: #f4f7fd;

  --ptm-ui-warn-border: #f0dcae;

  --ptm-ui-warn-ink: #7a4b09;
  --ptm-ui-warn-ink-2: #8a5a08;

  --ptm-ui-warn-soft: #fdf4e3;

  --ptm-ui-tile-coverage: #eaf4ff;
  --ptm-ui-tile-coverage-border: #c9e2fb;
  --ptm-ui-tile-accuracy: #eaf8f1;
  --ptm-ui-tile-accuracy-border: #c7ead8;
  --ptm-ui-tile-streak: #fff6df;
  --ptm-ui-tile-streak-border: #f2dfaa;
  --ptm-ui-tile-days: #f4efff;
  --ptm-ui-tile-days-border: #ddd0f7;

  /* SJT question types are categorical, not result states. */
  --ptm-ui-type-ranking-soft: #f5f6ff;
  --ptm-ui-type-ranking-strong: #e9edff;
  --ptm-ui-type-ranking-border: #d8ddfb;
  --ptm-ui-type-ranking-ink: #4554a8;
  --ptm-ui-type-selection-soft: #faf5ff;
  --ptm-ui-type-selection-strong: #f1e7ff;
  --ptm-ui-type-selection-border: #e5d7f8;
  --ptm-ui-type-selection-border-strong: #8c67ba;
  --ptm-ui-type-selection-ink: #7650a6;

  --ptm-ui-heat-volume-low: #b8ddf3;
  --ptm-ui-heat-volume-medium: #5fa8d3;
  --ptm-ui-heat-volume-high: #176b9d;
  --ptm-ui-heat-weak: #d86767;
  --ptm-ui-heat-amber: #d99636;
  --ptm-ui-heat-yellow: #dfc84d;
  --ptm-ui-heat-strong: #4c9d75;
}

html[data-ptm-theme="dark"] body.ptm-qbank-focus-page,
html[data-ptm-theme="dark"] .ptm-focus-app,
html[data-ptm-theme="dark"] .ptm-builder,
html[data-ptm-theme="dark"] .ptm-dash {
  --ptm-ui-accent: #4257c7;
  --ptm-ui-on-accent: #fff;
  --ptm-ui-accent-text: #93aaff;

  --ptm-ui-accent-border: #3f5596;
  --ptm-ui-accent-border-2: #3f5596;

  --ptm-ui-accent-dark: #5570e8;

  --ptm-ui-accent-soft: #1e2c52;
  --ptm-ui-accent-soft-2: #1e2c52;
  --ptm-ui-accent-soft-3: #1e2c52;

  --ptm-ui-bad-ink: #ff9b93;

  --ptm-ui-bad-soft: #3a1a1c;

  --ptm-ui-bad-strong: #e8736b;

  --ptm-ui-border-strong: #3a4a6d;
  --ptm-ui-border-strong-2: #3a4a6d;

  --ptm-ui-divider: #26324f;
  --ptm-ui-divider-2: #26324f;
  --ptm-ui-divider-3: #26324f;

  --ptm-ui-ink: #eef2fa;

  --ptm-ui-ink-soft: #cdd6e6;
  --ptm-ui-ink-soft-2: #cdd6e6;

  --ptm-ui-ok-ink: #7ee2ac;
  --ptm-ui-ok-ink-2: #7ee2ac;

  --ptm-ui-ok-soft: #12331f;

  --ptm-ui-ok-strong: #34c97f;
  --ptm-ui-ok-strong-2: #34c97f;

  --ptm-ui-subtle: #9aa6bd;
  --ptm-ui-subtle-2: #9aa6bd;
  --ptm-ui-subtle-3: #9aa6bd;

  --ptm-ui-surface: #17203a;
  --ptm-ui-surface-2: #17203a;

  --ptm-ui-surface-muted: #1e2942;
  --ptm-ui-surface-muted-2: #1e2942;

  --ptm-ui-surface-sunken: #131c30;
  --ptm-ui-surface-sunken-2: #131c30;
  --ptm-ui-surface-sunken-3: #131c30;
  --ptm-ui-surface-sunken-4: #131c30;
  --ptm-ui-surface-sunken-5: #131c30;

  --ptm-ui-warn-border: #7a6128;

  --ptm-ui-warn-ink: #f3d08a;
  --ptm-ui-warn-ink-2: #f3d08a;

  --ptm-ui-warn-soft: #33280f;

  --ptm-ui-tile-coverage: #17283b;
  --ptm-ui-tile-coverage-border: #2c4967;
  --ptm-ui-tile-accuracy: #172d29;
  --ptm-ui-tile-accuracy-border: #2e5148;
  --ptm-ui-tile-streak: #30291a;
  --ptm-ui-tile-streak-border: #594a27;
  --ptm-ui-tile-days: #282238;
  --ptm-ui-tile-days-border: #493d63;

  --ptm-ui-type-ranking-soft: #1d233c;
  --ptm-ui-type-ranking-strong: #242d53;
  --ptm-ui-type-ranking-border: #46527e;
  --ptm-ui-type-ranking-ink: #aeb9ff;
  --ptm-ui-type-selection-soft: #2a2038;
  --ptm-ui-type-selection-strong: #352749;
  --ptm-ui-type-selection-border: #644c80;
  --ptm-ui-type-selection-border-strong: #8465a6;
  --ptm-ui-type-selection-ink: #d0aff5;

  --ptm-ui-heat-volume-low: #28506a;
  --ptm-ui-heat-volume-medium: #347da5;
  --ptm-ui-heat-volume-high: #55a6d0;
  --ptm-ui-heat-weak: #a94f4f;
  --ptm-ui-heat-amber: #a86d25;
  --ptm-ui-heat-yellow: #a69234;
  --ptm-ui-heat-strong: #327955;
}

/* SJT page and controls --------------------------------------------------- */
.ptm-sjt-intro { display: grid; gap: 18px; grid-template-columns: minmax(0,1.15fr) minmax(320px,.85fr); margin: 0 auto 22px; max-width: 1180px; }
.ptm-sjt-intro[hidden] { display: none !important; }
.ptm-sjt-intro-copy, .ptm-sjt-matrix { background: var(--ptm-surface); border: 1px solid var(--ptm-border); border-radius: 16px; box-shadow: 0 12px 32px rgba(31,45,77,.06); padding: 22px; }
.ptm-sjt-intro-copy h2 { color: var(--ptm-ink); font-size: clamp(28px,4vw,42px); margin: 3px 0 12px; }
.ptm-sjt-intro-copy p { color: var(--ptm-muted); line-height: 1.55; margin: 8px 0; }
.ptm-sjt-matrix > summary { color: var(--ptm-ink); cursor: pointer; font-weight: 800; }
.ptm-sjt-matrix h2 { color: var(--ptm-ink); font-size: 17px; margin: 18px 0 7px; }
.ptm-sjt-matrix p, .ptm-sjt-matrix li { color: var(--ptm-muted); font-size: 13px; line-height: 1.45; }
.ptm-sjt-matrix-scroll { overflow-x: auto; }
.ptm-sjt-matrix table { border-collapse: collapse; font-size: 12px; margin-top: 12px; min-width: 390px; width: 100%; }
.ptm-sjt-matrix th, .ptm-sjt-matrix td { border: 1px solid var(--ptm-border); padding: 7px; text-align: center; }
.ptm-sjt-matrix th:first-child { text-align: left; }
.ptm-sjt-matrix td[data-score="4"], .ptm-sjt-scoring td[data-score="4"] { background: var(--ptm-correct-soft); color: var(--ptm-green); font-weight: 800; }
.ptm-sjt-matrix td[data-score="2"], .ptm-sjt-matrix td[data-score="3"], .ptm-sjt-scoring td[data-score="2"], .ptm-sjt-scoring td[data-score="3"] { background: var(--ptm-ui-warn-soft); color: var(--ptm-ui-warn-ink); }
.ptm-sjt-matrix td[data-score="0"], .ptm-sjt-matrix td[data-score="1"], .ptm-sjt-scoring td[data-score="0"], .ptm-sjt-scoring td[data-score="1"] { background: var(--ptm-incorrect-soft); color: var(--ptm-red); }
.ptm-sjt-performance { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 22px; }
.ptm-sjt-performance span { background: var(--ptm-surface); border: 1px solid var(--ptm-border); border-radius: 10px; color: var(--ptm-muted); display: grid; font-size: 12px; padding: 10px 13px; }
.ptm-sjt-performance strong { color: var(--ptm-ink); font-size: 18px; }
.ptm-sjt-dashboard { margin-bottom: 18px; }
.ptm-sjt-title { border-bottom: 1px solid var(--ptm-ui-divider); padding: 4px 2px 14px; }
.ptm-sjt-title h1 { color: var(--ptm-ink); }
.ptm-sjt-live-clock { color: var(--ptm-ui-ink-soft); font-size: var(--ptm-ui-text-sm); font-variant-numeric: tabular-nums; min-width: 192px; text-align: center; }
.ptm-sjt-tiles .ptm-overview-metrics span, .ptm-sjt-tiles .ptm-dash-tile-metric span { white-space: nowrap; }
.ptm-sjt-coverage { background: var(--ptm-ui-surface-muted); border-radius: 999px; height: 8px; overflow: hidden; }
.ptm-sjt-coverage span { background: var(--ptm-blue); display: block; height: 100%; }
.ptm-sjt-type-breakdown { display: grid; gap: 4px; }
.ptm-sjt-type-row { align-items: center; display: flex; gap: 8px; justify-content: space-between; padding: 0; }
.ptm-sjt-type-row > span { display: grid; gap: 2px; min-width: 0; }
.ptm-sjt-type-row strong { font-size: var(--ptm-ui-text-sm); }
.ptm-sjt-type-row.is-ranking strong { color: var(--ptm-ui-type-ranking-ink); }
.ptm-sjt-type-row.is-selection strong { color: var(--ptm-ui-type-selection-ink); }
.ptm-sjt-type-row small { color: var(--ptm-ui-subtle); font-size: var(--ptm-ui-text-xs); }
.ptm-sjt-neutral-score { background: var(--ptm-ui-surface-muted); border: 1px solid var(--ptm-ui-divider); border-radius: 999px; color: var(--ptm-ui-ink); flex: 0 0 auto; font-size: calc(var(--ptm-ui-text-page) * .75); font-variant-numeric: tabular-nums; font-weight: 600; line-height: 1; padding: 5px 9px; }
.ptm-sjt-resume-tile { min-height: 36px; padding: 7px 13px; }
.ptm-sjt-suggestion { align-items: center; background: var(--ptm-accent-softer); border: 1px solid var(--ptm-accent-border); border-radius: var(--ptm-ui-radius-field); display: flex; gap: 12px; justify-content: space-between; padding: 9px 12px; }
.ptm-sjt-suggestion span { color: var(--ptm-ui-ink-soft); font-size: .78rem; }
.ptm-sjt-suggestion button { background: none; border: 0; color: var(--ptm-blue); cursor: pointer; font: inherit; font-size: .78rem; font-weight: 750; padding: 4px 6px; }
.ptm-sjt-empty-summary { background: var(--ptm-accent-softer); border: 1px solid var(--ptm-accent-border); border-radius: var(--ptm-ui-radius-card); padding: clamp(22px,4vw,38px); text-align: center; }
.ptm-sjt-empty-summary h2 { color: var(--ptm-ink); font-size: var(--ptm-ui-text-card); margin: 0 0 8px; }
.ptm-sjt-empty-summary p { color: var(--ptm-muted); font-size: var(--ptm-ui-text-sm); line-height: 1.55; margin: 0 auto; max-width: 690px; }
.ptm-sjt-body, .ptm-sjt-support { margin-left: auto; margin-right: auto; max-width: 1280px; width: 100%; }
.ptm-sjt-body { align-items: stretch; display: grid; gap: 20px; grid-template-columns: minmax(0,1.62fr) minmax(300px,1fr); }
.ptm-sjt-body-left, .ptm-sjt-body-right { display: grid; gap: 20px; min-width: 0; }
.ptm-sjt-body-left { align-content: start; grid-auto-rows: max-content; }
.ptm-sjt-body-right { align-content: start; grid-auto-rows: max-content; }
.ptm-sjt-selector-companions { align-items: stretch; display: grid; gap: 12px; grid-template-columns: repeat(2,minmax(0,1fr)); min-width: 0; }
.ptm-sjt-selector-companions > .ptm-dash-panel { height: 100%; padding: 16px; }
.ptm-sjt-selector-companions .ptm-sjt-paper-entry { align-content: start; align-items: stretch; grid-template-columns: minmax(0,1fr) auto; }
.ptm-sjt-selector-companions .ptm-sjt-paper-entry > div { grid-column: 1 / -1; }
.ptm-sjt-selector-companions .ptm-sjt-paper-entry select { grid-column: 1; }
.ptm-sjt-selector-companions .ptm-sjt-paper-entry .ptm-button { font-size: var(--ptm-ui-text-sm); grid-column: 2; min-height: 36px; padding: 6px 11px; white-space: nowrap; }
.ptm-sjt-selector-companions .ptm-sjt-paper-note { grid-column: 1 / -1; }
.ptm-sjt-selector { align-content: start; display: grid; gap: 16px; }
.ptm-sjt-selector-head { align-items: center; display: flex; gap: 16px; justify-content: space-between; }
.ptm-sjt-selector-head > div { min-width: 0; }
.ptm-sjt-selector-title { display: grid; gap: 2px; }
.ptm-sjt-selector-head h2 { color: var(--ptm-ink); font-size: var(--ptm-ui-text-card); margin: 2px 0 5px; }
.ptm-sjt-selector-commands { align-items: center; display: flex; flex: 0 0 auto; gap: 8px; }
.ptm-sjt-selector-commands .ptm-button { border-radius: var(--ptm-ui-radius-pill); min-height: var(--ptm-ui-control-h); padding: 7px 13px; }
.ptm-sjt-type, .ptm-sjt-pool { border: 0; display: grid; gap: 8px; margin: 0; padding: 0; }
.ptm-sjt-filter-grid { display: grid; gap: 16px; grid-template-columns: minmax(0,1.22fr) minmax(0,1fr); }
.ptm-sjt-type legend, .ptm-sjt-pool legend { font-size: var(--ptm-ui-text-xs); font-weight: 600; margin-bottom: 0; }
.ptm-sjt-type { grid-template-columns: repeat(3,minmax(0,1fr)); }
.ptm-sjt-pool { grid-template-columns: repeat(4,minmax(0,1fr)); }
.ptm-sjt-type legend, .ptm-sjt-pool legend { grid-column: 1/-1; }
.ptm-sjt-type button, .ptm-sjt-pool button { align-items: center; background: var(--ptm-surface); border: 1px solid var(--ptm-border-strong); border-radius: 999px; color: var(--ptm-ink); display: flex; font: inherit; font-size: var(--ptm-ui-text-xs); gap: 5px; height: var(--ptm-ui-control-h); justify-content: center; min-height: var(--ptm-ui-control-h); padding: 0 7px; white-space: nowrap; }
.ptm-sjt-type button[data-sjt-type="sjt_rank"] { background: var(--ptm-ui-type-ranking-soft); border-color: var(--ptm-ui-type-ranking-border); }
.ptm-sjt-type button[data-sjt-type="sjt_best3"] { background: var(--ptm-ui-type-selection-soft); border-color: var(--ptm-ui-type-selection-border); }
.ptm-sjt-type button.is-active, .ptm-sjt-pool button.is-active { border-color: var(--ptm-blue); box-shadow: 0 0 0 1px var(--ptm-blue); }
.ptm-sjt-type button[data-sjt-type="sjt_rank"].is-active { background: var(--ptm-ui-type-ranking-strong); color: var(--ptm-ui-type-ranking-ink); }
.ptm-sjt-type button[data-sjt-type="sjt_best3"].is-active { background: var(--ptm-ui-type-selection-strong); border-color: var(--ptm-ui-type-selection-border-strong); box-shadow: 0 0 0 1px var(--ptm-ui-type-selection-border-strong); color: var(--ptm-ui-type-selection-ink); }
.ptm-sjt-type button .ptm-sjt-filter-label, .ptm-sjt-pool button .ptm-sjt-filter-label { color: inherit; font-size: inherit; min-width: 0; }
.ptm-sjt-type button .ptm-sjt-filter-count, .ptm-sjt-pool button .ptm-sjt-filter-count { color: var(--ptm-muted); font-size: 12px; font-variant-numeric: tabular-nums; }
.ptm-sjt-type button:disabled, .ptm-sjt-pool button:disabled { background: var(--ptm-disabled-bg) !important; border-color: var(--ptm-disabled-border) !important; color: var(--ptm-disabled-text) !important; cursor: not-allowed; opacity: 1; }
.ptm-sjt-domain { margin: 0; }
.ptm-sjt-domain details { border: 1px solid var(--ptm-divider); border-radius: var(--ptm-ui-radius-field); overflow: hidden; }
.ptm-sjt-domain summary { align-items: center; background: var(--ptm-surface); cursor: pointer; display: grid; font-size: var(--ptm-ui-text-xs); gap: 10px; grid-template-columns: auto minmax(0,1fr) auto; min-height: 44px; padding: 7px 11px; }
.ptm-sjt-domain summary::marker { color: var(--ptm-muted); }
.ptm-sjt-domain summary b { font-size: var(--ptm-ui-text-xs); font-weight: 600; }
.ptm-sjt-domain summary span { color: var(--ptm-muted); }
.ptm-sjt-domain summary i { font-style: normal; font-variant-numeric: tabular-nums; }
.ptm-sjt-domain summary em { color: var(--ptm-muted); font-size: var(--ptm-ui-text-xs); font-style: normal; }
.ptm-sjt-domain-table { border: 1px solid var(--ptm-divider); border-radius: var(--ptm-ui-radius-field); overflow: hidden; }
.ptm-sjt-domain details .ptm-sjt-domain-table { border-width: 1px 0 0; border-radius: 0; }
.ptm-sjt-domain-table label { align-items: center; background: var(--ptm-surface); border-bottom: 1px solid var(--ptm-divider); cursor: pointer; display: flex; gap: 12px; justify-content: space-between; min-height: 44px; padding: 8px 12px; }
.ptm-sjt-domain-table label:last-child { border-bottom: 0; }
.ptm-sjt-domain-table label.is-active { background: var(--ptm-accent-soft); }
.ptm-sjt-domain-table label.is-disabled { background: var(--ptm-surface-sunken); cursor: not-allowed; opacity: .65; }
.ptm-sjt-domain-table label > span { align-items: center; display: flex; gap: 9px; min-width: 0; }
.ptm-sjt-domain-table input { accent-color: var(--ptm-blue); height: 17px; margin: 0; width: 17px; }
.ptm-sjt-domain-table b { font-size: var(--ptm-ui-text-sm); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ptm-sjt-domain-table small { color: var(--ptm-muted); font-size: var(--ptm-ui-text-xs); }
.ptm-sjt-length { border: 0; margin: 0; padding: 0; }
.ptm-sjt-length > legend { font-size: var(--ptm-ui-text-xs); font-weight: 600; margin-bottom: 8px; }
.ptm-sjt-length-row { align-items: center; display: flex; flex-wrap: wrap; gap: 9px; justify-content: space-between; }
.ptm-sjt-lengths { display: flex; flex-wrap: wrap; gap: 6px; }
.ptm-sjt-lengths .ptm-chip { cursor: pointer; }
.ptm-sjt-lengths .ptm-chip input { opacity: 0; position: absolute; }
.ptm-sjt-lengths .ptm-chip span { align-items: center; background: var(--ptm-surface); border: 1px solid var(--ptm-border-strong); border-radius: 999px; display: inline-flex; font-size: 13px; font-weight: 750; height: 36px; justify-content: center; min-width: 44px; padding: 0 10px; }
.ptm-sjt-lengths .ptm-chip input:checked + span { background: var(--ptm-accent-soft); border-color: var(--ptm-blue); color: var(--ptm-blue-dark); }
.ptm-sjt-lengths .ptm-chip input:focus-visible + span { outline: 2px solid var(--ptm-blue); outline-offset: 2px; }
.ptm-sjt-custom { align-items: center; display: grid; gap: 7px; grid-template-columns: auto 92px; }
.ptm-sjt-custom label { color: var(--ptm-muted); font-size: 12px; }
.ptm-sjt-custom input { background: var(--ptm-surface); border: 1px solid var(--ptm-border-strong); border-radius: 10px; color: var(--ptm-ink); height: 36px; padding: 5px 9px; width: 100%; }
.ptm-sjt-paper-entry { align-items: center; display: grid; gap: 12px; grid-template-columns: minmax(0,1fr) minmax(190px,250px) auto; }
.ptm-sjt-paper-entry h2 { color: var(--ptm-ink); font-size: var(--ptm-ui-text-card); margin: 0; }
.ptm-sjt-paper-entry select { background: var(--ptm-surface); border: 1px solid var(--ptm-border-strong); border-radius: var(--ptm-ui-radius-field); color: var(--ptm-ink); height: var(--ptm-ui-control-h); min-width: 0; padding: 6px 10px; }
.ptm-sjt-paper-entry .ptm-button { border-radius: var(--ptm-ui-radius-pill); min-height: var(--ptm-ui-control-h); padding: 7px 14px; }
.ptm-sjt-paper-note { grid-column: 2/-1; }
.ptm-sjt-support { display: grid; gap: 20px; margin: 20px auto 0; max-width: 1280px; }
.ptm-sjt-scoring-row, .ptm-sjt-streak-paper-row { align-items: start; display: grid; gap: 20px; grid-template-columns: repeat(2,minmax(0,1fr)); }
.ptm-sjt-scoring-row { align-items: stretch; }
.ptm-sjt-scoring { display: grid; grid-template-rows: auto minmax(0,1fr); height: 100%; }
.ptm-sjt-scoring > [data-sjt-ranking-host], .ptm-sjt-scoring > [data-sjt-selection-host] { align-self: end; width: 100%; }
.ptm-sjt-streak-paper-row { align-items: stretch; }
.ptm-sjt-streak-paper-row > .ptm-dash-panel { height: 100%; }
.ptm-sjt-streak-paper-row .ptm-sjt-paper-entry { align-content: start; align-items: stretch; grid-template-columns: minmax(0,1fr) auto; }
.ptm-sjt-streak-paper-row .ptm-sjt-paper-entry > div { grid-column: 1 / -1; }
.ptm-sjt-streak-paper-row .ptm-sjt-paper-entry select { grid-column: 1; }
.ptm-sjt-streak-paper-row .ptm-sjt-paper-entry .ptm-button { grid-column: 2; }
.ptm-sjt-streak-paper-row .ptm-sjt-paper-note { grid-column: 1 / -1; }
.ptm-sjt-scoring .ptm-sjt-matrix { border: 0; border-radius: 0; box-shadow: none; padding: 0; }
.ptm-sjt-ranking-content, .ptm-sjt-selection-content { display: grid; gap: 12px; }
.ptm-sjt-formula { border: 0; color: var(--ptm-muted); font-size: var(--ptm-ui-text-xs) !important; margin: 0 !important; padding: 0; text-align: center; }
[data-sjt-ranking-host] table { border-collapse: collapse; font-size: var(--ptm-ui-text-xs); margin-top: 0; min-width: 390px; width: 100%; }
[data-sjt-ranking-host] th, [data-sjt-ranking-host] td { border: 1px solid var(--ptm-border); padding: 6px 8px; text-align: center; }
[data-sjt-ranking-host] th:first-child { text-align: left; }
.ptm-sjt-selection-matrix { overflow-x: auto; }
.ptm-sjt-selection-matrix table { border-collapse: collapse; font-size: var(--ptm-ui-text-xs); min-width: 330px; width: 100%; }
.ptm-sjt-selection-matrix th, .ptm-sjt-selection-matrix td { border: 1px solid var(--ptm-border); padding: 6px 8px; text-align: center; }
.ptm-sjt-selection-matrix th:first-child { text-align: left; }
.ptm-sjt-selection-matrix td[data-selection-score="12"], .ptm-sjt-scoring td[data-selection-score="12"] { background: var(--ptm-correct-soft); color: var(--ptm-green); font-weight: 800; }
.ptm-sjt-selection-matrix td[data-selection-score="8"], .ptm-sjt-selection-matrix td[data-selection-score="4"], .ptm-sjt-scoring td[data-selection-score="8"], .ptm-sjt-scoring td[data-selection-score="4"] { background: var(--ptm-ui-warn-soft); color: var(--ptm-ui-warn-ink); font-weight: 700; }
.ptm-sjt-selection-matrix td[data-selection-score="0"], .ptm-sjt-scoring td[data-selection-score="0"] { background: var(--ptm-incorrect-soft); color: var(--ptm-red); font-weight: 700; }
.ptm-sjt-selection-note { color: var(--ptm-muted); font-size: var(--ptm-ui-text-xs) !important; margin: 0 !important; text-align: center; }
.ptm-sjt-feedback-scoring { border-top: 1px solid var(--ptm-divider); margin-top: 22px; padding-top: 20px; }
.ptm-sjt-feedback-scoring > summary { color: var(--ptm-ink); cursor: pointer; font-size: 15px; font-weight: 800; list-style-position: outside; margin-left: 18px; }
.ptm-sjt-feedback-scoring[open] > summary { margin-bottom: 14px; }
.ptm-sjt-feedback-scoring .ptm-sjt-ranking-content,
.ptm-sjt-feedback-scoring .ptm-sjt-selection-content { background: var(--ptm-surface-sunken); border: 1px solid var(--ptm-divider); border-radius: 10px; padding: 14px; }
.ptm-sjt-feedback-scoring table { border-collapse: collapse; font-size: 12px; width: 100%; }
.ptm-sjt-feedback-scoring .ptm-sjt-ranking-content table { min-width: 390px; }
.ptm-sjt-feedback-scoring th, .ptm-sjt-feedback-scoring td { border: 1px solid var(--ptm-border); padding: 6px 8px; text-align: center; }
.ptm-sjt-feedback-scoring th:first-child { text-align: left; }
.ptm-sjt-paper-grid { display: grid; gap: 12px; grid-template-columns: repeat(3,minmax(0,1fr)); }
.ptm-sjt-paper-card { background: var(--ptm-accent-softer); border: 1px solid var(--ptm-accent-border); border-radius: var(--ptm-ui-radius-field); display: grid; gap: 6px; padding: 10px 12px; }
.ptm-sjt-paper-card.is-attempted { box-shadow: inset 4px 0 0 var(--ptm-blue); }
.ptm-sjt-paper-card.is-not-attempted { opacity: .9; }
.ptm-sjt-paper-card[hidden] { display: none !important; }
.ptm-sjt-paper-card-head { align-items: center; display: flex; gap: 10px; justify-content: space-between; }
.ptm-sjt-paper-card-head span { color: var(--ptm-ink); font-size: 1rem; font-weight: 850; }
.ptm-sjt-paper-card-head b { color: var(--ptm-muted); font-size: var(--ptm-ui-text-xs); }
.ptm-sjt-paper-composition, .ptm-sjt-paper-result { color: var(--ptm-muted); font-size: var(--ptm-ui-text-xs); margin: 0; }
.ptm-sjt-paper-composition { text-align: center; }
.ptm-sjt-paper-composition .is-ranking { color: var(--ptm-ui-type-ranking-ink); font-weight: 750; }
.ptm-sjt-paper-composition .is-selection { color: var(--ptm-ui-type-selection-ink); font-weight: 750; }
.ptm-sjt-paper-result strong { color: var(--ptm-ink); }
.ptm-sjt-paper-result.is-empty { font-style: normal; }
.ptm-sjt-paper-footer { align-items: center; display: flex; gap: 8px; justify-content: space-between; min-width: 0; }
.ptm-sjt-paper-card .ptm-button { font-size: 12px; height: 40px; justify-content: center; justify-self: end; min-height: 40px; padding: 0 12px; }
.ptm-sjt-paper-expand { align-items: center; display: flex; gap: 7px; justify-content: center; margin: 14px auto 0; }
.ptm-sjt-paper-expand span { font-size: 1rem; letter-spacing: -4px; margin-right: 4px; }
.ptm-sjt-recent-list { display: grid; gap: 7px; }
.ptm-sjt-recent-list button { align-items: center; background: var(--ptm-surface); border: 1px solid var(--ptm-border-strong); border-radius: 10px; color: var(--ptm-ink); display: flex; font: inherit; gap: 12px; justify-content: space-between; min-height: 52px; padding: 8px 11px; text-align: left; width: 100%; }
.ptm-sjt-recent-list button:hover { background: var(--ptm-accent-softer); border-color: var(--ptm-accent-border); }
.ptm-sjt-recent-list button > span { display: grid; gap: 2px; min-width: 0; }
.ptm-sjt-recent-list strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ptm-sjt-recent-list small { color: var(--ptm-muted); font-size: .78rem; }
.ptm-sjt-recent-meta { display: flex; flex-wrap: wrap; gap: 2px 8px; }
.ptm-sjt-recent-meta small { white-space: nowrap; }
.ptm-sjt-recent-meta small + small::before { content: '·'; margin-right: 8px; }
.ptm-sjt-recent-list b { background: var(--ptm-surface-muted); border-radius: 999px; flex: 0 0 auto; font-size: .88rem; padding: 5px 9px; }
.ptm-sjt-recent-pagination { align-items: center; display: flex; gap: 6px; justify-content: center; margin-top: 10px; }
.ptm-sjt-recent-pagination button { align-items: center; background: var(--ptm-surface); border: 1px solid var(--ptm-border-strong); border-radius: 999px; color: var(--ptm-muted); cursor: pointer; display: inline-flex; font: inherit; font-size: var(--ptm-ui-text-xs); height: 30px; justify-content: center; padding: 0; width: 30px; }
.ptm-sjt-recent-pagination button:hover, .ptm-sjt-recent-pagination button:focus-visible, .ptm-sjt-recent-pagination button.is-current { background: var(--ptm-accent-soft); border-color: var(--ptm-blue); color: var(--ptm-blue-dark); }
.ptm-sjt-recent-pagination button:disabled { background: var(--ptm-disabled-bg) !important; border-color: var(--ptm-disabled-border) !important; color: var(--ptm-disabled-text) !important; cursor: default; opacity: 1; }
.ptm-sjt-domain-performance { display: grid; gap: 7px; }
.ptm-sjt-domain-performance > div { align-items: center; border-bottom: 1px solid var(--ptm-divider); display: flex; gap: 10px; justify-content: space-between; padding: 5px 0 9px; }
.ptm-sjt-domain-performance > div:last-child { border-bottom: 0; }
.ptm-sjt-domain-performance span { display: grid; gap: 2px; }
.ptm-sjt-domain-performance small { color: var(--ptm-muted); font-size: var(--ptm-ui-text-xs); }
.ptm-sjt-domain-performance b { background: var(--ptm-surface-muted); border-radius: 999px; font-size: var(--ptm-ui-text-sm); padding: 5px 9px; }
.ptm-sjt-domain-panel .ptm-dash-empty { align-content: center; display: grid; gap: 5px; min-height: 156px; }
.ptm-sjt-domain-panel .ptm-dash-empty span { color: var(--ptm-muted); font-size: var(--ptm-ui-text-xs); line-height: 1.45; }
.ptm-sjt-tips ol { display: grid; gap: 8px; grid-template-columns: repeat(3,minmax(0,1fr)); list-style: none; margin: 0; padding: 0; }
.ptm-sjt-tips-caveat { color: var(--ptm-muted); font-size: var(--ptm-ui-text-xs); line-height: 1.45; margin: -3px 0 12px; }
.ptm-sjt-tips li { background: var(--ptm-surface-sunken); border: 1px solid var(--ptm-divider); border-radius: 10px; display: grid; gap: 3px; padding: 7px 9px; }
.ptm-sjt-tips li:last-child { grid-column: auto; }
.ptm-sjt-tips li strong { font-size: .88rem; }
.ptm-sjt-tips li span { color: var(--ptm-muted); font-size: .78rem; line-height: 1.4; }
.ptm-sjt-support .ptm-dash-heatmap h2, .ptm-sjt-support .ptm-dash-panel h2 { color: var(--ptm-ink); font-size: 1.2rem; margin: 0; }
.ptm-sjt-heat-stats { display: grid; gap: 8px; grid-template-columns: repeat(3,minmax(0,1fr)); margin: 0 0 12px; }
.ptm-sjt-heat-stats > div { display: grid; gap: 2px; padding: 4px 2px; }
.ptm-sjt-heat-stats span, .ptm-sjt-heat-stats small { color: var(--ptm-muted); font-size: var(--ptm-ui-text-xs); }
.ptm-sjt-heat-stats strong { font-size: var(--ptm-ui-text-sm); font-variant-numeric: tabular-nums; }
.ptm-sjt-heat-stats strong:only-child, .ptm-sjt-heat-stats strong.is-empty { color: var(--ptm-muted); font-size: var(--ptm-ui-text-xs); font-weight: 400; }
.ptm-sjt-heat-stats .ptm-sjt-trend { grid-column: span 2; }
.ptm-sjt-streak-strip { display: grid; gap: 7px; margin: 0; max-width: 100%; min-width: 0; width: 100%; }
.ptm-sjt-streak-actions { align-items: center; display: flex; gap: 6px; margin-left: auto; }
.ptm-sjt-streak-strip .ptm-streak-mini { grid-template-columns: repeat(7,minmax(0,1fr)); }
.ptm-sjt-streak-strip .ptm-streak-mini.is-window-30 { grid-template-columns: repeat(15,minmax(0,1fr)); }
.ptm-sjt-streak-strip .ptm-streak-mini { gap: 3px; max-width: 100%; min-width: 0; overflow: hidden; width: 100%; }
.ptm-sjt-streak-strip .ptm-streak-mini span { border-radius: calc(var(--ptm-ui-radius-field) * .4); height: 10px; min-width: 0; }
.ptm-sjt-streak-meta { color: var(--ptm-muted); display: flex; flex-wrap: wrap; font-size: .78rem; gap: 4px 12px; justify-content: space-between; min-width: 0; white-space: normal; }
.ptm-sjt-streak-meta strong { color: var(--ptm-ink); font-variant-numeric: tabular-nums; }
.ptm-sjt-trend.is-supported strong { color: var(--ptm-blue); }
.ptm-sjt-support .ptm-heat-grid.is-accuracy .ptm-heat-cell.is-unscored { background: var(--ptm-ui-surface-muted-2) !important; border-color: var(--ptm-ui-border-strong) !important; }
.ptm-options.is-ranking { gap: 9px; }
.ptm-ranking-row { align-items: stretch; display: grid; gap: 8px; grid-template-columns: 42px 34px minmax(0,1fr) auto; position: relative; }
.ptm-ranking-position { align-items: stretch; display: flex; }
.ptm-ranking-position input { appearance: textfield; background: var(--ptm-accent-soft); border: 1px solid var(--ptm-accent-border); border-radius: 10px; color: var(--ptm-blue-dark); font-family: inherit; font-size: 15px; font-weight: 850; line-height: 1; min-width: 0; padding: 0; text-align: center; width: 42px; }
.ptm-ranking-position input::-webkit-inner-spin-button, .ptm-ranking-position input::-webkit-outer-spin-button { appearance: none; margin: 0; }
.ptm-ranking-position input:focus { border-color: var(--ptm-blue); box-shadow: 0 0 0 2px var(--ptm-accent-soft-2); outline: 0; }
.ptm-ranking-drag { align-items: center; background: var(--ptm-surface-sunken-2); border: 1px solid var(--ptm-border-strong); border-radius: 8px; color: var(--ptm-subtle); cursor: grab; display: flex; font: 900 16px/1 monospace; justify-content: center; padding: 0; touch-action: none; }
.ptm-ranking-drag:active { cursor: grabbing; }
.ptm-ranking-row.is-dragging { opacity: .58; }
.ptm-ranking-row.is-drop-before::before, .ptm-ranking-row.is-drop-after::after { background: var(--ptm-blue); border-radius: 999px; content: ''; height: 3px; left: 0; position: absolute; right: 0; z-index: 2; }
.ptm-ranking-row.is-drop-before::before { top: -5px; }
.ptm-ranking-row.is-drop-after::after { bottom: -5px; }
.ptm-ranking-option { cursor: default; grid-template-columns: minmax(0,1fr); }
.ptm-ranking-controls { display: grid; gap: 4px; grid-template-rows: 1fr 1fr; }
.ptm-ranking-controls button { background: var(--ptm-surface); border: 1px solid var(--ptm-border-strong); border-radius: 7px; color: var(--ptm-ink); font-weight: 800; min-width: 38px; }
.ptm-ranking-controls button:disabled { background: var(--ptm-disabled-bg) !important; border-color: var(--ptm-disabled-border) !important; color: var(--ptm-disabled-text) !important; opacity: 1; }
.ptm-option.is-partial, .ptm-review-option.is-partial { background: var(--ptm-ui-warn-soft); border-color: var(--ptm-ui-warn-border); }
.ptm-option.is-partial .ptm-option-state, .is-partial .ptm-feedback-icon, .is-partial .ptm-feedback-title h3 { color: var(--ptm-ui-warn-ink); }
.ptm-feedback.is-partial { background: var(--ptm-ui-warn-soft); border: 1px solid var(--ptm-ui-warn-border); }
.ptm-sjt-award { color: var(--ptm-muted); font-size: 13px; margin: 3px 0 0; text-transform: none; }
.ptm-sjt-award strong { color: var(--ptm-ink); }
.ptm-review-legend i.is-partial { background: var(--ptm-ui-warn-ink); }
.ptm-sjt-score-note { color: var(--ptm-ui-warn-ink) !important; font-size: 12px !important; }
.ptm-review-mark { background: var(--ptm-surface-muted); color: var(--ptm-ink); }

@media (max-width: 780px) {
  .ptm-sjt-intro { grid-template-columns: 1fr; }
  .ptm-sjt-live-clock { min-width: 0; }
  .ptm-sjt-body, .ptm-sjt-scoring-row, .ptm-sjt-streak-paper-row { grid-template-columns: 1fr; }
  .ptm-sjt-selector-companions { grid-template-columns: 1fr; }
  .ptm-sjt-filter-grid { grid-template-columns: 1fr; }
  .ptm-sjt-paper-entry { align-items: stretch; grid-template-columns: minmax(0,1fr) auto; }
  .ptm-sjt-paper-entry > div { grid-column: 1 / -1; }
  .ptm-sjt-paper-entry select { grid-column: 1; }
  .ptm-sjt-paper-entry .ptm-button { grid-column: 2; }
  .ptm-sjt-paper-note { grid-column: 1 / -1; }
  .ptm-sjt-paper-grid { grid-template-columns: 1fr; }
  .ptm-sjt-selector-commands { justify-content: flex-end; }
  .ptm-ranking-row { gap: 6px; grid-template-columns: 38px 32px minmax(0,1fr) 34px; }
  .ptm-ranking-position input { width: 38px; }
}

@media (min-width: 781px) and (max-width: 1120px) {
  .ptm-sjt-paper-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ptm-sjt-selector-companions .ptm-sjt-paper-entry { grid-template-columns: 1fr; }
  .ptm-sjt-selector-companions .ptm-sjt-paper-entry > div,
  .ptm-sjt-selector-companions .ptm-sjt-paper-entry select,
  .ptm-sjt-selector-companions .ptm-sjt-paper-entry .ptm-button { grid-column: 1; }
  .ptm-sjt-selector-companions .ptm-sjt-paper-entry .ptm-button { justify-self: start; }
  .ptm-sjt-pool { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ptm-sjt-type button, .ptm-sjt-pool button { display: grid; font-size: 11px; gap: 0; grid-template-columns: minmax(0,1fr); height: 44px; line-height: 1.05; padding: 4px 6px; white-space: normal; }
  .ptm-sjt-type button .ptm-sjt-filter-count, .ptm-sjt-pool button .ptm-sjt-filter-count { font-size: 10px; }
}

@media (max-width: 600px) {
  .ptm-sjt-selector-head { flex-direction: column; }
  .ptm-sjt-selector-commands { align-items: stretch; flex-direction: column-reverse; width: 100%; }
  .ptm-sjt-selector-commands .ptm-info { align-self: flex-end; width: 32px; }
  .ptm-sjt-selector-commands .ptm-button { width: 100%; }
  .ptm-sjt-type { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .ptm-sjt-pool { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .ptm-sjt-type legend, .ptm-sjt-pool legend { grid-column: 1 / -1; }
  .ptm-sjt-type button, .ptm-sjt-pool button { display: grid; font-size: 11px; gap: 0; grid-template-columns: minmax(0,1fr); height: 44px; line-height: 1.05; padding: 4px 6px; white-space: normal; }
  .ptm-sjt-type button .ptm-sjt-filter-count, .ptm-sjt-pool button .ptm-sjt-filter-count { font-size: 10px; }
  .ptm-sjt-length-row { align-items: stretch; flex-direction: column; }
  .ptm-sjt-custom { grid-template-columns: auto 100px; justify-content: start; }
  .ptm-sjt-paper-entry { grid-template-columns: 1fr; }
  .ptm-sjt-paper-entry > div, .ptm-sjt-paper-entry select, .ptm-sjt-paper-entry .ptm-button { grid-column: 1; }
  .ptm-sjt-streak-paper-row .ptm-sjt-paper-entry { grid-template-columns: 1fr; }
  .ptm-sjt-streak-paper-row .ptm-sjt-paper-entry > div,
  .ptm-sjt-streak-paper-row .ptm-sjt-paper-entry select,
  .ptm-sjt-streak-paper-row .ptm-sjt-paper-entry .ptm-button { grid-column: 1; }
  .ptm-sjt-tips ol { grid-template-columns: 1fr; }
  .ptm-sjt-tips li:last-child { grid-column: 1; }
  .ptm-sjt-heat-stats { grid-template-columns: 1fr; }
  .ptm-sjt-heat-stats .ptm-sjt-trend { grid-column: 1; }
  .ptm-sjt-suggestion { align-items: stretch; flex-direction: column; }
}
.ptm-paper-countdown { color: var(--ptm-blue-dark); font-variant-numeric: tabular-nums; font-weight: 700; }
.ptm-paper-countdown.is-urgent { color: var(--ptm-red); }
.ptm-clinical-mocks { margin: 24px auto 0; max-width: 1100px; }
.ptm-clinical-mocks-head { margin-bottom: 16px; }
.ptm-clinical-mocks-head h2 { margin: 4px 0; }
.ptm-clinical-mocks-head p { color: var(--ptm-muted); margin: 0; }
.ptm-clinical-mock-grid { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit,minmax(270px,1fr)); }
.ptm-clinical-mock-card { background: var(--ptm-surface); border: 1px solid var(--ptm-border); border-radius: 14px; display: flex; flex-direction: column; gap: 18px; justify-content: space-between; padding: 18px; }
.ptm-clinical-mock-card > div:first-child > span { color: var(--ptm-blue); font-size: 12px; font-weight: 800; text-transform: uppercase; }
.ptm-clinical-mock-card em { background: var(--ptm-accent-soft); border-radius: 999px; color: var(--ptm-blue-dark); float: right; font-size: 11px; font-style: normal; font-weight: 800; padding: 3px 7px; }
.ptm-clinical-mock-card h3 { font-size: 18px; margin: 8px 0 5px; }
.ptm-clinical-mock-card p,.ptm-clinical-mock-card small { color: var(--ptm-muted); display: block; margin: 0; }
.ptm-clinical-mock-card > div:last-child { display: flex; flex-wrap: wrap; gap: 8px; }
