/*
 * 99 Percentiler — Obsidian
 * A dark presentation layer for the production student portal.
 * Existing routes, data, answer states and handlers remain host-owned.
 */
:root {
  color-scheme: dark;
  --canvas: #020304;
  --surface: #090b0e;
  --ink: #f5f7fa;
  --muted: #c8cdd5;
  --line: #20262d;
  --orange: #ff702a;
  --orange-soft: #2b1b13;
  --green: #ff8a4c;
  --obsidian-surface: #090b0e;
  --obsidian-raised: #0d1014;
  --obsidian-line: #20262d;
  --obsidian-soft: #c8cdd5;
  --obsidian-orange: #ff702a;
  --obsidian-orange-light: #ffb184;
}
html { background: #020304; }
body { background: #020304; color: var(--ink); }
::selection { background: #8e3b19; color: #fff4eb; }
.boot-state { background: #020304; }
.skip-link { background: #231a15; color: #ffe5d3; border: 1px solid #9e532e; border-radius: 8px; }

/* Natural atmosphere is isolated in a decorative custom element. The portal
 * retains its existing stacking context and opaque content surfaces. */
.portal-shell {
  position: relative;
  isolation: isolate;
  background: #020304;
  color: var(--ink);
}
.portal-shell .app-body { background: transparent; }
.portal-shell .workspace-main { padding-top: 34px; }

/* Navigation is a quiet dark rail, with clear selected and keyboard states. */
.portal-shell > .sidebar {
  background: linear-gradient(155deg, rgb(26 17 13 / 94%) 0, #101010 27%, #0e0e0e 72%);
  border-right: 1px solid #2b2521;
  color: #c1bbb4;
  scrollbar-color: #4a3a2f transparent;
}
.portal-shell .sidebar > .brand { color: #f6f1eb; }
.portal-shell .sidebar .brand-number,
.portal-shell .sidebar .brand-dot { color: #ff702a; }
.portal-shell .workspace-label { color: #9c9289; font-size: 9px; letter-spacing: .16em; }
.portal-shell .sidebar .nav-item {
  color: #bbb4ac;
  min-height: 46px;
  border: 1px solid transparent;
  border-radius: 10px;
  font-weight: 500;
  transition: color .18s, background-color .18s, border-color .18s;
}
.portal-shell .sidebar .nav-item:hover { background: #1e1b18; color: #fff3e8; border-color: #3a2e25; }
.portal-shell .sidebar .nav-item.active {
  color: #ffb184;
  background: linear-gradient(100deg, #392015, #231912);
  border-color: #5c3420;
  box-shadow: inset 2px 0 #ff702a, 0 1px 0 #ffffff03;
  font-weight: 600;
}
.portal-shell .sidebar .nav-item.active svg { color: #ff9355; }
.portal-shell .sidebar .nav-item b { color: #d8c5b8; background: #382a21; }
.portal-shell .sidebar-sections,
.portal-shell .sidebar-bottom { border-color: #2c2520; }
.portal-shell .section-link { min-height: 46px; color: #b5ada4; border: 1px solid transparent; border-radius: 9px; }
.portal-shell .section-link:hover { color: #f5e9df; background: #211a15; }
.portal-shell .section-short { color: #c6b8ad; background: #1b1714; border-color: #403228; }
.portal-shell .section-link[aria-current="page"] { color: #ffd5b8; background: #231a14; border-color: #3c2c20; }
.portal-shell .section-link[aria-current="page"] .section-short { color: #ffb184; background: #352218; border-color: #754328; }
.portal-shell .sidebar-account strong { color: #d6cec6; }
.portal-shell .sidebar .local-status { color: #a59b91; }
.portal-shell .account-status-dot { background: #a68f7c; }
.portal-shell .is-signed-in > .account-status-dot { background: #d89154; box-shadow: 0 0 0 3px #e68b3612; }
.portal-shell .app-header {
  background: rgb(10 10 10 / 98%);
  border-bottom: 1px solid #2c241f;
  box-shadow: 0 1px 0 #ffffff02;
  backdrop-filter: none;
}
.portal-shell .breadcrumb-root { color: #a69b91; }
.portal-shell .breadcrumb-divider { color: #655549; }
.portal-shell .breadcrumb > strong { color: #e9ded4; }
.portal-shell .preview-label { color: #a89a8e; }
.portal-shell .preview-label.is-signed-in::before { background: #e79a58; }
.portal-shell .app-header .account-action { color: #ffc49f; min-height: 44px; }
.portal-shell .app-header .account-action:hover { color: #ffe2cc; }
.portal-shell .app-header .avatar { background: #251b14; border-color: #59402c; color: #ffba8e; }
.portal-shell .app-header .avatar:hover { background: #382419; border-color: #96613e; }
.portal-shell .mobile-menu,
.portal-shell .sidebar-close { color: #e1c5b0; }
.portal-shell .mobile-menu:hover,
.portal-shell .sidebar-close:hover { color: #ffca9f; background: #2b2018; }

/* Shared controls and surfaces, including the genuine overview/history routes. */
.portal-shell :is(h1,h2,h3,h4) { color: #f2ede7; }
.portal-shell :is(.page-heading p,.section-heading p,.card > p,.access-card > p,.empty-state p,.quiet-empty,.muted,.footnote,.small-copy) { color: #aca39a; }
.portal-shell .eyebrow,
#app-dialog .eyebrow { color: #d4966c; }
.portal-shell :is(.card,.stat,.daily-focus-row,.practice-shortcuts > a,.sectional-surface,.question-item,.bank-row,.related-row,.related-tray) {
  background: #121211;
  border-color: #302b25;
  box-shadow: 0 1px 0 #ffffff03;
}
.portal-shell .card { border-radius: 14px; }
.portal-shell .stat { border-radius: 12px; background: linear-gradient(145deg,#191715,#121211 70%); }
.portal-shell .stat > strong { color: #f2e7de; }
.portal-shell .stat > span { color: #b5a99e; }
.portal-shell .stat > small { color: #a5988c; }
.portal-shell .stat.accent { border-color: #674027; background: linear-gradient(130deg,#2c1c12,#171310); }
.portal-shell .practice-shortcuts > a { border-radius: 12px; transition: background .18s,border-color .18s; }
.portal-shell .practice-shortcuts > a:hover { background: #211910; border-color: #775032; }
.portal-shell :is(.practice-shortcuts small,.recent-row small,.daily-focus-row p,.sectional-note,.bank-row p,.bank-row-copy > small,.recent-score > strong > span) { color: #a99c91; }
.portal-shell :is(.section-token,.session-symbol,.source-tag,.difficulty,.free-tag) { color: #d3bca9; background: #28201a; border-color: #4c3727; }
.portal-shell .recent-row,
.portal-shell .settings-lines > div { border-color: #302922; }
.portal-shell .daily-meter,
.portal-shell .topic-meter { background: #30271f; }
.portal-shell .daily-meter i,
.portal-shell .topic-meter i { background: #f58b4c; }
.portal-shell .settings-lines :is(strong,span) { color: #cbbdb1; }
.portal-shell .btn,
#app-dialog .btn { min-height: 44px; border-radius: 9px; font-weight: 600; transition: background .18s,border-color .18s,color .18s,box-shadow .18s,transform .18s; }
.portal-shell .btn.primary,
#app-dialog .btn.primary {
  background: linear-gradient(180deg,#ff8b4c,#ff7430);
  border-color: #ff965b;
  color: #241107;
  box-shadow: inset 0 1px 0 #ffd0a83d, 0 2px 5px #0002;
}
.portal-shell .btn.primary:hover,
#app-dialog .btn.primary:hover { background: linear-gradient(180deg,#ff9b62,#ff8444); border-color: #ffb17e; box-shadow: 0 4px 16px #d66a2020; }
.portal-shell .btn.outline,
#app-dialog .btn.outline { color: #d9c4b4; background: #191512; border-color: #4d3828; }
.portal-shell .btn.outline:hover,
#app-dialog .btn.outline:hover { background: #2a1f16; border-color: #93613e; color: #ffe0c6; }
.portal-shell .btn.soft { color: #ffc096; background: #342113; border-color: #604022; }
.portal-shell .btn.ink { color: #f7e3d2; background: #392619; border-color: #6b482d; }
.portal-shell .text-link,
#app-dialog .text-link { color: #ffad7b; }
.portal-shell .text-link:hover,
#app-dialog .text-link:hover { color: #ffd1b1; }
.portal-shell .icon-btn { color: #c8b5a6; }
.portal-shell .icon-btn:hover { background: #2b2119; color: #ffbf92; }
.portal-shell .btn:active:not(:disabled),
#app-dialog .btn:active:not(:disabled) { transform: translateY(0); }
.portal-shell .btn:disabled,
#app-dialog .btn:disabled { opacity: .42; box-shadow: none; transform: none; }
.portal-shell :is(a,button,input,select,summary):focus-visible,
#app-dialog :is(a,button,input,select):focus-visible,
.portal-shell .app-header button:focus-visible {
  outline: 2px solid #ffb987;
  outline-offset: 4px;
}
.portal-shell input[type="checkbox"],
.portal-shell input[type="radio"],
#app-dialog input[type="checkbox"] { accent-color: #ff8b4c; }
.portal-shell :is(select,input:not([type="range"]):not([type="checkbox"]):not([type="radio"]),textarea),
#app-dialog :is(select,input:not([type="checkbox"]):not([type="radio"]),textarea) {
  color: #e9d9cd;
  background-color: #171310;
  border-color: #514032;
}
.portal-shell input::placeholder,
#app-dialog input::placeholder { color: #9e8e81; opacity: 1; }
.portal-shell :is(.notice,.notice.subtle) { color: #c4ae9b; background: #20180f; border: 1px solid #493320; border-radius: 10px; }
.portal-shell .notice p { color: #b9a493; }
.portal-shell .notice strong { color: #e6c2a3; }
.portal-shell .is-saved { color: #ffb88d !important; background: #3b2518 !important; }
.portal-shell .is-saved svg { fill: #ff9d5d24; }

/* Section tabs are visible on every screen. Three useful, tactile controls,
 * balanced against a fine border and a restrained orange selected state. */
.practice-catalogue {
  --catalogue-ink: #f5f7fa;
  --catalogue-muted: #c8cdd5;
  --catalogue-line: #20262d;
  --catalogue-orange: #ff702a;
  --catalogue-emerald: #ff9256;
  color: var(--catalogue-ink);
}
.practice-catalogue .catalogue-heading { margin-bottom: 24px; }
.practice-catalogue .catalogue-heading .eyebrow { color: #d8986f; font-size: 10px; letter-spacing: .17em; }
.practice-catalogue .catalogue-heading h1 { color: #f7f0e9; font-weight: 700; letter-spacing: -.045em; }
.practice-catalogue .catalogue-heading p { color: #b4a599; }
.practice-catalogue .catalogue-tabs {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 5px;
  padding: 5px;
  margin: 0 0 5px;
  border: 1px solid #3b2c22;
  border-radius: 13px;
  background: rgb(15 12 10 / 84%);
  box-shadow: inset 0 1px 0 #ffffff03;
}
.practice-catalogue .catalogue-tabs button,
.practice-catalogue .catalogue-tabs button:first-child {
  min-height: 53px;
  justify-content: flex-start;
  padding: 12px 18px;
  gap: 11px;
  border: 1px solid transparent;
  border-radius: 9px;
  background: transparent;
  transition: background .18s,border-color .18s,color .18s;
}
.practice-catalogue .catalogue-tabs button::after { display: none; }
.practice-catalogue .catalogue-tabs button strong { color: #d2bba9; font-size: 13px; font-weight: 650; }
.practice-catalogue .catalogue-tabs button span { color: #aa9788; font-size: 11px; line-height: 1.4; }
.practice-catalogue .catalogue-tabs button:hover { background: #241b14; border-color: #4d3524; }
.practice-catalogue .catalogue-tabs button.active {
  background: linear-gradient(115deg,#402415,#2b1c12);
  border-color: #8b4a27;
  box-shadow: inset 0 1px 0 #ffad6320, 0 2px 5px #0002;
}
.practice-catalogue .catalogue-tabs button.active strong { color: #ffae77; }
.practice-catalogue .catalogue-tabs button.active span { color: #ead0bb; }
.practice-catalogue .catalogue-topline { border-top: 0; border-bottom-color: #33271e; color: #aa9a8d; padding: 15px 0; margin-bottom: 17px; }
.practice-catalogue .catalogue-topline strong { color: #ecd8c7; }
.practice-catalogue .catalogue-topline > div > span { color: #71543f; }
.practice-catalogue .catalogue-topline > span { padding: 3px 8px; border: 1px solid #493320; border-radius: 5px; color: #c6a687; background: #20170f; }
.practice-catalogue .catalogue-categories { gap: 7px; margin-bottom: 18px; }
.practice-catalogue .catalogue-categories button {
  min-height: 40px;
  padding: 9px 13px;
  color: #b5a697;
  border: 1px solid #342a22;
  border-radius: 8px;
  background: #14110e;
  font-size: 11px;
  font-weight: 550;
}
.practice-catalogue .catalogue-categories button:hover { color: #f6d6b9; background: #271b12; border-color: #715035; }
.practice-catalogue .catalogue-categories button[aria-pressed="true"] {
  color: #ffc49a;
  background: #382315;
  border-color: #96552d;
  box-shadow: inset 0 1px 0 #ffffff06;
}
.practice-catalogue .catalogue-categories button span { color: #b39983; opacity: 1; font-size: 10px; }
.practice-catalogue .catalogue-categories button[aria-pressed="true"] span { color: #e3af88; }
.practice-catalogue .catalogue-tools { gap: 20px; margin-bottom: 28px; }
.practice-catalogue .catalogue-tools .search-box {
  color: #b39b88;
  min-height: 46px;
  border: 1px solid #4a3526;
  border-radius: 10px;
  background: #15110e;
  box-shadow: inset 0 1px 2px #0003;
}
.practice-catalogue .catalogue-tools .search-box:focus-within { border-color: #c57743; box-shadow: 0 0 0 3px #ff8b3612; }
.practice-catalogue .catalogue-tools .search-box input { min-height: 44px; color: #f1dfcf; background: transparent; border: 0; font-size: 12px; }
.practice-catalogue .catalogue-tools .search-box input::placeholder { color: #ab9685; }
.practice-catalogue .catalogue-tools .search-box input:focus-visible { outline: 0; }
.practice-catalogue .catalogue-access { color: #b7a08e; min-height: 44px; font-size: 11px; gap: 8px; }
.practice-catalogue .catalogue-access input { width: 16px; height: 16px; accent-color: #ff8b4c; }
.practice-catalogue .mega-difficulty { flex: 0 0 300px; min-width: 250px; max-width: 310px; }
.practice-catalogue .topic-catalogue { gap: 35px; }
.practice-catalogue .topic-group { background: transparent; border: 0; }
.practice-catalogue .topic-group-heading { padding-bottom: 16px; background: transparent; border: 0; }
.practice-catalogue .topic-group-heading h2 { color: #ede3d9; font-size: 19px; font-weight: 650; }
.practice-catalogue .topic-group-heading > span { color: #a28e7c; }
.practice-catalogue .chapter-grid { gap: 18px; }
.practice-catalogue .chapter-card {
  background: #121110;
  border: 1px solid #38302a;
  border-radius: 15px;
  box-shadow: 0 2px 4px #0002, inset 0 1px 0 #ffffff03;
  transition: border-color .22s,box-shadow .22s,transform .22s;
}
.practice-catalogue .chapter-card:hover {
  border-color: #87552e;
  box-shadow: 0 12px 24px #0004, 0 0 0 1px #ff8b3210;
  transform: translateY(-3px);
}
.practice-catalogue .chapter-card:focus-within { border-color: #c88047; box-shadow: 0 0 0 3px #ff8b3612; }
.practice-catalogue .chapter-art {
  min-height: 111px;
  padding: 15px 20px;
  color: #cbbdae;
  background: radial-gradient(ellipse at 18% 20%,#58321b42,transparent 67%),linear-gradient(115deg,#1b1714,#121110 80%);
  border-bottom: 1px solid #38302a;
}
.practice-catalogue .chapter-art > svg { width: 108px; height: 81px; }
.practice-catalogue .art-accent { stroke: #ff995b; }
.practice-catalogue .art-fill { fill: #ff8c3822; }
.practice-catalogue .chapter-count {
  top: 16px; right: 16px;
  padding: 5px 8px;
  border-radius: 6px;
  border-color: #624329;
  background: #21170fee;
  color: #d6b496;
  font-size: 10px;
  font-weight: 500;
}
.practice-catalogue .chapter-body { padding: 20px 20px 17px; }
.practice-catalogue .chapter-body h3 { color: #f0eae4; font-size: 16px; font-weight: 650; }
.practice-catalogue .chapter-body h3 a:hover { color: #ffb17f; }
.practice-catalogue .chapter-description { color: #b3a69a; font-size: 12px; line-height: 1.75; margin: 7px 0 14px; }
.practice-catalogue .chapter-meta { color: #b0a090; font-size: 11px; line-height: 1.7; gap: 5px 13px; }
.practice-catalogue .chapter-progress { padding-top: 19px; }
.practice-catalogue .progress-segments span { background: #302923; }
.practice-catalogue .progress-segments i { background: #e99152; }
.practice-catalogue .chapter-progress-label { color: #b0a090; margin-top: 8px; }
.practice-catalogue .chapter-actions { margin-top: 17px; padding-top: 14px; border-color: #332c26; }
.practice-catalogue .chapter-explore { color: #c6a58a; min-height: 44px; font-size: 11px; }
.practice-catalogue .chapter-explore:hover { color: #ffbc8a; }
.practice-catalogue .chapter-actions .btn { min-height: 42px; padding: 9px 13px; border-radius: 8px; font-size: 11px; }
.practice-catalogue .btn.primary { color: #241107; background: linear-gradient(180deg,#ff8b4c,#ff7430); border-color: #ff965b; }
.practice-catalogue .btn.primary:hover { background: linear-gradient(180deg,#ff9b62,#ff8444); border-color: #ffb17e; }
.practice-catalogue .btn.outline { background: #1d160f; border-color: #644227; color: #e3c1a3; }
.practice-catalogue .btn.outline:hover { background: #322115; border-color: #a46a3e; color: #ffe1c7; }
.practice-catalogue .catalogue-bottom { border-color: #39291d; color: #b49c87; margin-top: 36px; }
.practice-catalogue .catalogue-bottom .text-link { color: #e8ae7f; }
.practice-catalogue .footnote { color: #a68e7a; font-size: 11px; }
.practice-catalogue .empty-state { background: #16110d; border-color: #5b3a23; color: #d4b89f; }
.practice-catalogue :is(a,button,input):focus-visible { outline-color: #ffb987; }
.practice-catalogue .catalogue-resume { background: #2a1b10; border-color: #6c4225; }
.practice-catalogue .catalogue-resume strong { color: #f2cead; }
.practice-catalogue .catalogue-resume small { color: #c1a184; }
.practice-catalogue .catalogue-notice { background: #2d1d10; border-color: #79502c; color: #f2c38f; }

/* Chapter overview: the same material, with measured orange depth. */
.practice-catalogue .topic-back { color: #d4aa88; min-height: 40px; }
.practice-catalogue .topic-back:hover { color: #ffca9b; }
.practice-catalogue .topic-hero {
  padding: 34px;
  border: 1px solid #6c4227;
  border-radius: 17px;
  color: #f5e9df;
  background: radial-gradient(ellipse at 5% 0%,#6f3b1d55,transparent 65%),linear-gradient(120deg,#1c1713,#100f0e);
  box-shadow: inset 0 1px 0 #ffd9b20a,0 10px 35px #0002;
}
.practice-catalogue .topic-hero-art { color: #dfc2a8; background: #2c1c1266; border-color: #765033; border-radius: 12px; }
.practice-catalogue .topic-hero-art .art-accent { stroke: #ffa164; }
.practice-catalogue .topic-hero-art .art-fill { fill: #ff995326; }
.practice-catalogue .topic-hero-copy .eyebrow { color: #e9a574; }
.practice-catalogue .topic-hero-copy h1 { color: #f6eadd; }
.practice-catalogue .topic-hero-copy p { color: #c2a78f; }
.practice-catalogue .topic-hero-copy .chapter-meta { color: #b7977b; }
.practice-catalogue .topic-hero-actions .btn { min-height: 44px; border-radius: 9px; }
.practice-catalogue .topic-hero-actions .btn.outline { border-color: #765032; color: #e7c5a6; background: #25180f; }
.practice-catalogue .topic-hero-actions .btn.outline:hover { background: #3c2515; border-color: #ac7348; }
.practice-catalogue .topic-hero-actions > span { color: #b99a7c; }
.practice-catalogue .topic-detail-stats { border-color: #46301e; }
.practice-catalogue .topic-detail-stats > div { border-color: #46301e; }
.practice-catalogue .topic-detail-stats strong { color: #f2ddc9; }
.practice-catalogue .topic-detail-stats :is(span,small) { color: #b59a81; }
.practice-catalogue .topic-detail-stats strong small { color: #c4a589; }
.practice-catalogue .topic-difficulty-section :is(p,span),
.practice-catalogue .topic-difficulty-section > .topic-group-heading :is(p,span) { color: #b09a85; }
.practice-catalogue .topic-difficulty-list { background: #13110f; border-color: #4a382a; border-radius: 13px; }
.practice-catalogue .topic-difficulty-row { border-color: #39281b; }
.practice-catalogue .topic-difficulty-row.selected { background: linear-gradient(95deg,#312015,#1b1612); }
.practice-catalogue .topic-difficulty-row.selected::before { width: 3px; background: #f59751; }
.practice-catalogue .topic-difficulty-copy h3 { color: #e7cdb5; font-size: 14px; }
.practice-catalogue .topic-difficulty-copy p { color: #b79b81; }
.practice-catalogue .topic-difficulty-copy small { color: #c0a07d; }
.practice-catalogue .topic-difficulty-copy .difficulty-current { color: #ffbd85; background: #57321a; border: 1px solid #8a512b; border-radius: 4px; }
.practice-catalogue .topic-difficulty-progress small { color: #b2967c; }
.practice-catalogue .topic-difficulty-row > .btn { min-height: 44px; border-radius: 8px; }
.practice-catalogue .topic-format-note { color: #bea184; background: #21160d; border-color: #5b3b21; border-radius: 11px; }
.practice-catalogue .topic-format-note strong { color: #e0b78e; }

/* Completed test analysis and saved-question review. Status colors still carry
 * their existing meaning; large panels and control treatments use the theme. */
.portal-shell :is(.history-type-tabs,.analysis-tabs,.review-mode-tabs,.source-filter) { border-color: #3d2e22; }
.portal-shell :is(.history-type-tabs > a,.analysis-tabs button,.review-mode-tabs button,.source-filter button) {
  min-height: 44px; color: #bc9e84; border: 1px solid transparent; border-radius: 8px; background: transparent; padding-inline: 15px;
}
.portal-shell :is(.history-type-tabs > a,.analysis-tabs button,.review-mode-tabs button,.source-filter button):hover { color: #f0c8a5; background: #281a10; }
.portal-shell :is(.history-type-tabs > a.active,.analysis-tabs button.active,.review-mode-tabs button.active,.source-filter button.active) { color: #ffc28d; background: #3a2413; border-color: #85532d; box-shadow: none; }
.portal-shell .result-stats > div { background: #141210; border-color: #3e3024; }
.portal-shell .result-stats > div > span { color: #c5a386; }
.portal-shell .result-stats :is(p,strong small) { color: #b69a81; }
.portal-shell .result-stats strong { color: #efdbc8; }
.portal-shell .result-stats > .result-score { background: linear-gradient(135deg,#422612,#20140c); color: #ffddba; }
.portal-shell .result-stats > .result-score strong { color: #ffca94; }
.portal-shell .result-stats > .result-score > span { color: #e0ab78; }
.portal-shell .result-stats > .result-score p { color: #c8a685; }
.portal-shell .score-breakdown b.green { color: #89cfaa; }
.portal-shell .score-breakdown b.red { color: #f3a18e; }
.portal-shell .score-breakdown small { color: #b39c88; }
.portal-shell .section-performance > div { border-color: #49301d; }
.portal-shell .section-performance :is(p,small) { color: #b99b7e; }
.portal-shell .section-performance h3 { color: #e5c7ac; }
.portal-shell .review-rail-heading { border-color: #43301e; }
.portal-shell .review-rail-heading span { color: #ceac8a; }
.portal-shell .review-question-list > button { border-color: #38291d; color: #c4aa92; }
.portal-shell .review-question-list > button:hover { background: #251a11; }
.portal-shell .review-question-list > button.active { background: #3b2515; border-color: #88532c; }
.portal-shell .review-question-list strong { color: #dec2a8; }
.portal-shell .review-question-list small { color: #b89b80; }
.portal-shell .review-passage { background: #151311; border-color: #3c3026; }
.portal-shell .review-passage > h3 { color: #e9ad7a; }
.portal-shell .review-passage-copy { color: #dac5b3; }
.portal-shell .review-question-header { border-color: #4a321f; }
.portal-shell .review-question-header h2 { color: #ead5c1; }
.portal-shell :is(.review-question-meta,.review-question-tools,.review-pagination > span,.review-solution-label) { color: #bda084; }
.portal-shell .review-pagination { border-color: #4b321e; }
.portal-shell .solution-options > div { color: #dacfc4; border-color: #44372c; background: #191512; }
.portal-shell .solution-options > div > span { background: #312115; color: #e3be9b; border-color: #725033; }
.portal-shell .solution-options .right { background: #14251c; border-color: #406f52; color: #bce0c5; }
.portal-shell .solution-options .wrong { background: #311b16; border-color: #8a4d39; color: #edb7a9; }
.portal-shell .solution-options .right small { color: #a0d1b0; }
.portal-shell .solution-options .wrong small { color: #efae96; }
.portal-shell .solution-options p,
.portal-shell .explanation p { color: #dac3ae; }
.portal-shell .explanation { background: #191512; border-color: #3f3126; }
.portal-shell .numeric-review > div { background: #21170e; border-color: #5d3e24; color: #ddbb98; }
.portal-shell :is(.mistake-label,.field-note,.parent-test-link) { color: #baa084; }
.portal-shell .answer-status.correct { background: #152a1c; color: #b1dbb9; border-color: #466a4b; }
.portal-shell .answer-status.incorrect { background: #311c15; color: #efb39a; border-color: #84503b; }
.portal-shell .answer-status.skipped { background: #282017; color: #ceb79b; border-color: #65523a; }
.portal-shell .set-table th { background: #2c1d11; color: #e2c5a5; }
.portal-shell .set-table td { color: #ccb49b; }
.portal-shell .set-table :is(th,td) { border-color: #765238; }
.portal-shell .data-table th { background: #1c140e; color: #c5a484; border-color: #583d26; }
.portal-shell .data-table td { color: #d1b79d; border-color: #432f1e; }
.portal-shell .data-table td strong { color: #e9cdb1; }
.portal-shell .data-table td small { color: #b79a7b; }
.portal-shell .data-table tbody tr:hover { background: #261a10; }
.portal-shell .table-label { color: #bb9776; border-color: #4d341e; }
.portal-shell .filter-bar { background: #17100b; border-color: #4e321d; }
.portal-shell .filter-bar .search-box { background: #20160e; color: #bda084; border-color: #67452b; }
.portal-shell .question-status.correct,
.portal-shell .status-pill.correct { background: #1d3525; color: #a8d7b6; }
.portal-shell .question-status.incorrect,
.portal-shell .status-pill.incorrect { background: #3d241b; color: #f0b49d; }
.portal-shell .question-status.skipped,
.portal-shell .status-pill.skipped { background: #33281b; color: #d2ba98; }
.portal-shell .pagination { border-color: #4a321f; color: #bc9f82; }

/* Preparation and confirmation stay native dialogs, with readable form states. */
#app-dialog {
  color-scheme: dark;
  background: linear-gradient(140deg,#21170f,#110e0b 70%);
  color: #ecd9c7;
  border-color: #7a4c2a;
  border-radius: 18px;
  box-shadow: 0 30px 100px #000b, inset 0 1px 0 #ffc18b14;
  scrollbar-width: thin;
  scrollbar-color: #67452d transparent;
}
#app-dialog::backdrop { background: #030201bb; backdrop-filter: blur(7px); }
#app-dialog h2 { color: #f5e4d3; }
#app-dialog :is(p,.form-label,.form-grid label,.check-line,.instructions,.small-copy,.muted) { color: #c5aa90; }
#app-dialog .dialog-close { color: #d2a77f; border: 1px solid #5b3d27; background: #2c1d11; }
#app-dialog :is(select,input:not([type="checkbox"]):not([type="radio"]),textarea) { min-height: 44px; color: #edd6bf; background: #1b120b; border-color: #785435; }
#app-dialog .question-preview .reading-passage { color: #ddc6ae; background: #1f160d; }
#app-dialog .question-preview :is(h3,ol) { color: #e2c7ab; }
#app-dialog .field-error { color: #ffb18f; }
#toast { color: #ffe0c3; background: #332113; border: 1px solid #a06a3e; box-shadow: 0 12px 36px #0007; }
.student-auth { border-color: #5d3a22; background: #120f0c; }
.student-auth .auth-tabs { background: #20170f; border-color: #513721; }
.student-auth .auth-tabs button { color: #c5a587; }
.student-auth .auth-tabs button[aria-selected=true] { background: #3b2413; border-color: #85522b; color: #ffca96; }

/* Deep-neutral finish. Orange is an action/selection accent, rather than a
 * brown wash across panels. Text stays close to white even as the tide changes.
 * Sidebar-specific symbols and grouping are owned by sidebar-premium.css. */
.portal-shell .app-header { background: rgb(3 4 5 / 98%); border-color: #20262d; }
.portal-shell .breadcrumb-root,
.portal-shell .preview-label { color: #c8cdd5; }
.portal-shell .breadcrumb-divider { color: #747d89; }
.portal-shell .breadcrumb > strong { color: #f5f7fa; }
.portal-shell .app-header .avatar { background: #0d1014; border-color: #343c47; color: #f0f3f7; }
.portal-shell .app-header .avatar:hover { background: #171d24; border-color: #5f6d7e; }
.portal-shell .mobile-menu { color: #f5f7fa; }
.portal-shell :is(h1,h2,h3,h4) { color: #f5f7fa; }
.portal-shell :is(.page-heading p,.section-heading p,.card > p,.access-card > p,.empty-state p,.quiet-empty,.muted,.footnote,.small-copy) { color: #c8cdd5; }
.portal-shell :is(.card,.stat,.daily-focus-row,.practice-shortcuts > a,.sectional-surface,.question-item,.bank-row,.related-row,.related-tray) { background: #090b0e; border-color: #252c35; }
.portal-shell .stat { background: #090b0e; }
.portal-shell .stat > strong { color: #f5f7fa; }
.portal-shell .stat > span { color: #d2d7de; }
.portal-shell .stat > small { color: #b3bbc6; }
.portal-shell .stat.accent { background: #0c0e12; border-color: #53402e; }
.portal-shell .practice-shortcuts > a:hover { background: #11161c; border-color: #56616f; }
.portal-shell :is(.practice-shortcuts small,.recent-row small,.daily-focus-row p,.sectional-note,.bank-row p,.bank-row-copy > small,.recent-score > strong > span) { color: #c0c7d1; }
.portal-shell :is(.section-token,.session-symbol,.source-tag,.difficulty,.free-tag) { color: #d7dde5; background: #131820; border-color: #303b48; }
.portal-shell .recent-row,
.portal-shell .settings-lines > div { border-color: #262e37; }
.portal-shell .settings-lines :is(strong,span) { color: #d5dbe3; }
.portal-shell .daily-meter,
.portal-shell .topic-meter { background: #252d38; }
.portal-shell .btn.outline,
#app-dialog .btn.outline { color: #e7ebf0; background: #0d1014; border-color: #39424e; }
.portal-shell .btn.outline:hover,
#app-dialog .btn.outline:hover { background: #161c23; border-color: #707d8d; color: #fff; }
.portal-shell .icon-btn { color: #d7dde5; }
.portal-shell .icon-btn:hover { background: #171d25; color: #fff; }
.portal-shell :is(select,input:not([type="range"]):not([type="checkbox"]):not([type="radio"]),textarea),
#app-dialog :is(select,input:not([type="checkbox"]):not([type="radio"]),textarea) { color: #f0f3f7; background-color: #0a0e13; border-color: #394552; }
.portal-shell input::placeholder,
#app-dialog input::placeholder { color: #b2bbc7; }
.portal-shell :is(.notice,.notice.subtle) { color: #d0d7e0; background: #0c1015; border-color: #333e4c; }
.portal-shell .notice p { color: #c2ccd7; }
.portal-shell .notice strong { color: #edf1f6; }

.portal-shell .practice-catalogue .catalogue-heading h1 { color: #f5f7fa; }
.portal-shell .practice-catalogue .catalogue-heading p { color: #c8cdd5; }
.portal-shell .practice-catalogue .catalogue-tabs { background: #070a0e; border-color: #29313b; }
.portal-shell .practice-catalogue .catalogue-tabs button strong { color: #e9edf3; }
.portal-shell .practice-catalogue .catalogue-tabs button span { color: #c0c9d4; }
.portal-shell .practice-catalogue .catalogue-tabs button:hover { background: #131a23; border-color: #424f60; }
.portal-shell .practice-catalogue .catalogue-tabs button.active { background: #211810; border-color: #8c532e; }
.portal-shell .practice-catalogue .catalogue-tabs button.active strong { color: #ffb17d; }
.portal-shell .practice-catalogue .catalogue-tabs button.active span { color: #f5e9df; }
.portal-shell .practice-catalogue .catalogue-topline { color: #c8cdd5; border-color: #27303a; }
.portal-shell .practice-catalogue .catalogue-topline strong { color: #f5f7fa; }
.portal-shell .practice-catalogue .catalogue-topline > div > span { color: #8894a3; }
.portal-shell .practice-catalogue .catalogue-topline > span { color: #d2dae4; border-color: #344152; background: #10161e; }
.portal-shell .practice-catalogue .catalogue-categories button { color: #d1d8e2; background: #0a0e13; border-color: #283340; }
.portal-shell .practice-catalogue .catalogue-categories button:hover { color: #f4f7fc; background: #151d27; border-color: #637287; }
.portal-shell .practice-catalogue .catalogue-categories button[aria-pressed="true"] { color: #ffc195; background: #251a12; border-color: #8d522d; }
.portal-shell .practice-catalogue .catalogue-categories button span { color: #afbac9; }
.portal-shell .practice-catalogue .catalogue-categories button[aria-pressed="true"] span { color: #e9b38b; }
.portal-shell .practice-catalogue .catalogue-tools .search-box { color: #c3cedc; border-color: #394859; background: #090d12; }
.portal-shell .practice-catalogue .catalogue-tools .search-box input { color: #f5f7fa; background: transparent; }
.portal-shell .practice-catalogue .catalogue-tools .search-box input::placeholder { color: #b5c0cf; }
.portal-shell .practice-catalogue .catalogue-access { color: #c8cdd5; }
.portal-shell .practice-catalogue .topic-group-heading h2 { color: #f5f7fa; }
.portal-shell .practice-catalogue .topic-group-heading > span { color: #bdc6d1; }
.portal-shell .practice-catalogue .chapter-card { background: #090b0e; border-color: #29323d; }
.portal-shell .practice-catalogue .chapter-card:hover { border-color: #77583f; }
.portal-shell .practice-catalogue .chapter-art { color: #d0d9e4; background: linear-gradient(120deg,#0e131a,#080b0f); border-color: #27303a; }
.portal-shell .practice-catalogue .chapter-count { color: #d4dde7; background: #0c1118; border-color: #3d4b5d; }
.portal-shell .practice-catalogue .chapter-body h3 { color: #f5f7fa; }
.portal-shell .practice-catalogue .chapter-description { color: #c8cdd5; }
.portal-shell .practice-catalogue .chapter-meta { color: #bdc6d1; }
.portal-shell .practice-catalogue .progress-segments span { background: #28313c; }
.portal-shell .practice-catalogue .chapter-progress-label { color: #b9c3d0; }
.portal-shell .practice-catalogue .chapter-actions { border-color: #27303b; }
.portal-shell .practice-catalogue .chapter-explore { color: #dae2ec; }
.portal-shell .practice-catalogue .chapter-explore:hover { color: #ffc19a; }
.portal-shell .practice-catalogue .btn.outline { color: #e3eaf3; background: #10161d; border-color: #435164; }
.portal-shell .practice-catalogue .btn.outline:hover { color: #fff; background: #1b2531; border-color: #6c7d94; }
.portal-shell .practice-catalogue .catalogue-bottom { border-color: #2c3744; color: #c8cdd5; }
.portal-shell .practice-catalogue .footnote { color: #b2bfce; }
.portal-shell .practice-catalogue .empty-state { background: #090d12; border-color: #44536a; color: #e4ebf4; }
.portal-shell .practice-catalogue .catalogue-resume { background: #10141a; border-color: #645039; }
.portal-shell .practice-catalogue .catalogue-resume strong { color: #f2f5fa; }
.portal-shell .practice-catalogue .catalogue-resume small { color: #c5cfdb; }
.portal-shell .practice-catalogue .topic-back { color: #dae2ec; }
.portal-shell .practice-catalogue .topic-back:hover { color: #ffc19a; }
.portal-shell .practice-catalogue .topic-hero { background: linear-gradient(120deg,#0d1219,#070a0e); border-color: #3d4651; color: #f5f7fa; }
.portal-shell .practice-catalogue .topic-hero-art { color: #d4deea; background: #111922; border-color: #425267; }
.portal-shell .practice-catalogue .topic-hero-copy h1 { color: #f5f7fa; }
.portal-shell .practice-catalogue .topic-hero-copy p { color: #c8cdd5; }
.portal-shell .practice-catalogue .topic-hero-copy .chapter-meta { color: #bcc8d7; }
.portal-shell .practice-catalogue .topic-hero-actions > span { color: #bbc8d8; }
.portal-shell .practice-catalogue .topic-detail-stats,
.portal-shell .practice-catalogue .topic-detail-stats > div { border-color: #2e3947; }
.portal-shell .practice-catalogue .topic-detail-stats strong { color: #f5f7fa; }
.portal-shell .practice-catalogue .topic-detail-stats :is(span,small) { color: #c1ccda; }
.portal-shell .practice-catalogue .topic-difficulty-section :is(p,span),
.portal-shell .practice-catalogue .topic-difficulty-section > .topic-group-heading :is(p,span) { color: #c1ccd9; }
.portal-shell .practice-catalogue .topic-difficulty-list { background: #090c10; border-color: #344153; }
.portal-shell .practice-catalogue .topic-difficulty-row { border-color: #293442; }
.portal-shell .practice-catalogue .topic-difficulty-row.selected { background: #19150f; }
.portal-shell .practice-catalogue .topic-difficulty-copy h3 { color: #f1f5fb; }
.portal-shell .practice-catalogue .topic-difficulty-copy p,
.portal-shell .practice-catalogue .topic-difficulty-progress small { color: #c2cfde; }
.portal-shell .practice-catalogue .topic-difficulty-copy small { color: #b7c4d5; }
.portal-shell .practice-catalogue .topic-difficulty-copy .difficulty-current { color: #ffc396; background: #3a2517; border-color: #966239; }
.portal-shell .practice-catalogue .topic-format-note { color: #c5d0de; background: #0d131b; border-color: #36465b; }
.portal-shell .practice-catalogue .topic-format-note strong { color: #e5edf7; }

.portal-shell :is(.history-type-tabs,.analysis-tabs,.review-mode-tabs,.source-filter) { border-color: #303c4c; }
.portal-shell :is(.history-type-tabs > a,.analysis-tabs button,.review-mode-tabs button,.source-filter button) { color: #d0d9e5; }
.portal-shell :is(.history-type-tabs > a,.analysis-tabs button,.review-mode-tabs button,.source-filter button):hover { color: #f7faff; background: #121b27; }
.portal-shell .result-stats > div { background: #090d12; border-color: #2f3d50; }
.portal-shell .result-stats > div > span { color: #d0dbe8; }
.portal-shell .result-stats :is(p,strong small) { color: #bdccde; }
.portal-shell .result-stats strong { color: #f5f7fa; }
.portal-shell .result-stats > .result-score { background: #14130f; color: #f5f7fa; border-color: #6a5339; }
.portal-shell .result-stats > .result-score p { color: #c8cdd5; }
.portal-shell .score-breakdown small { color: #c8cdd5; }
.portal-shell .section-performance > div { border-color: #303d50; }
.portal-shell .section-performance :is(p,small) { color: #c8cdd5; }
.portal-shell .section-performance h3 { color: #f1f5fb; }
.portal-shell .review-rail-heading { border-color: #344155; }
.portal-shell .review-rail-heading span { color: #c8cdd5; }
.portal-shell .review-question-list > button { border-color: #2d394a; color: #c8cdd5; }
.portal-shell .review-question-list > button:hover { background: #111b29; }
.portal-shell .review-question-list > button.active { background: #221a11; border-color: #85532c; }
.portal-shell .review-question-list strong { color: #f0f4fa; }
.portal-shell .review-question-list small { color: #bdc9d9; }
.portal-shell .review-passage { background: #0c1016; border-color: #303d50; }
.portal-shell .review-passage-copy { color: #e0e6ee; }
.portal-shell .review-question-header { border-color: #344155; }
.portal-shell .review-question-header h2 { color: #f5f7fa; }
.portal-shell :is(.review-question-meta,.review-question-tools,.review-pagination > span,.review-solution-label) { color: #c8d2df; }
.portal-shell .review-pagination { border-color: #344155; }
.portal-shell .solution-options > div { color: #e3eaf3; border-color: #3b4a60; background: #0d131c; }
.portal-shell .solution-options > div > span { color: #eaf1fa; border-color: #536680; background: #172131; }
.portal-shell .solution-options .right { background: #11251a; border-color: #406f52; color: #d1efda; }
.portal-shell .solution-options .wrong { background: #301a16; border-color: #8a4d39; color: #f3c3b6; }
.portal-shell .solution-options p,
.portal-shell .explanation p { color: #e0e7f0; }
.portal-shell .explanation { background: #0d131c; border-color: #35455c; }
.portal-shell .numeric-review > div { background: #121b28; border-color: #41556f; color: #e5edf8; }
.portal-shell :is(.mistake-label,.field-note,.parent-test-link) { color: #c8d2df; }
.portal-shell .set-table th { background: #141e2c; color: #e9eff7; }
.portal-shell .set-table td { color: #d4dfed; }
.portal-shell .set-table :is(th,td) { border-color: #506680; }
.portal-shell .data-table th { background: #101722; color: #d9e3f1; border-color: #41536b; }
.portal-shell .data-table td { color: #d9e3f1; border-color: #303e52; }
.portal-shell .data-table td strong { color: #f0f5fc; }
.portal-shell .data-table td small { color: #c2cede; }
.portal-shell .data-table tbody tr:hover { background: #131d2b; }
.portal-shell .table-label { color: #c5d3e5; border-color: #3e506b; }
.portal-shell .filter-bar { background: #0b1017; border-color: #36465e; }
.portal-shell .filter-bar .search-box { background: #121b28; color: #d0deef; border-color: #4a607e; }
.portal-shell .pagination { border-color: #37485f; color: #ccd9ea; }

#app-dialog { background: #080b0f; color: #e8eff8; border-color: #455971; }
#app-dialog h2 { color: #f5f7fa; }
#app-dialog :is(p,.form-label,.form-grid label,.check-line,.instructions,.small-copy,.muted) { color: #c8d3e1; }
#app-dialog .dialog-close { color: #dbe7f6; border-color: #435a78; background: #172232; }
#app-dialog :is(select,input:not([type="checkbox"]):not([type="radio"]),textarea) { color: #edf3fc; background: #101824; border-color: #526b8a; }
#app-dialog .question-preview .reading-passage { color: #dce6f3; background: #111a27; }
#app-dialog .question-preview :is(h3,ol) { color: #e6eef9; }
#toast { color: #f0f5fc; background: #141e2b; border-color: #5d7695; }
.student-auth { background: #080b0f; border-color: #39495e; }
.student-auth .auth-tabs { background: #111923; border-color: #3a4c64; }
.student-auth .auth-tabs button { color: #c8d4e3; }

@media (min-width: 951px) and (max-width: 1180px) {
  .practice-catalogue .catalogue-tools { gap: 14px; }
  .practice-catalogue .mega-difficulty { flex-basis: 250px; min-width: 230px; }
  .practice-catalogue .catalogue-tabs button,
  .practice-catalogue .catalogue-tabs button:first-child { gap: 8px; padding-inline: 12px; }
  .practice-catalogue .catalogue-tabs button span { font-size: 10px; }
}
@media (max-width: 950px) {
  .portal-shell > .sidebar { background: linear-gradient(150deg,#20150e,#101010 45%); }
  .portal-shell > .sidebar.is-open { box-shadow: 20px 0 80px #000b; }
  .portal-shell .sidebar-backdrop:not([hidden]) { background: #030201b3; }
  .practice-catalogue .topic-hero { padding: 27px; }
}
@media (max-width: 700px) {
  .portal-shell .workspace-main { padding-top: 27px; }
  .portal-shell::before,
  .portal-shell::after,
  .portal-shell .app-body::before,
  .portal-shell .app-body::after { inset: -7vh -12vw; }
  .practice-catalogue .catalogue-heading { margin-bottom: 20px; }
  .practice-catalogue .catalogue-tabs { gap: 4px; padding: 4px; border-radius: 11px; }
  .practice-catalogue .catalogue-tabs button,
  .practice-catalogue .catalogue-tabs button:first-child {
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    min-height: 60px;
    padding: 10px 11px;
    gap: 4px;
    border-radius: 7px;
  }
  .practice-catalogue .catalogue-tabs button span { display: block; font-size: 10px; line-height: 1.4; }
  .practice-catalogue .catalogue-tabs button strong { font-size: 12px; }
  .practice-catalogue .catalogue-categories button { min-height: 40px; padding-inline: 12px; font-size: 11px; }
  .practice-catalogue .catalogue-tools { gap: 16px 12px; }
  .practice-catalogue .mega-difficulty { min-width: 0; width: 100%; max-width: none; background: #18110b; border: 1px solid #573820; border-radius: 11px; }
  .practice-catalogue .chapter-body { padding: 19px; }
  .practice-catalogue .topic-hero { padding: 24px 20px; }
  .practice-catalogue .topic-difficulty-row { padding: 19px; }
  .practice-catalogue .topic-format-note { padding: 17px; }
  .portal-shell .review-passage { border-right-color: #4b321f; }
}
@media (max-width: 520px) {
  .practice-catalogue .catalogue-heading h1 { font-size: 25px; max-width: none; }
  .practice-catalogue .catalogue-heading > .btn { min-height: 42px; padding: 9px 11px; font-size: 11px; }
  .practice-catalogue .catalogue-tabs button,
  .practice-catalogue .catalogue-tabs button:first-child { padding: 10px 8px; }
  .practice-catalogue .catalogue-tabs button span { font-size: 9px; }
  .practice-catalogue .catalogue-topline { margin-bottom: 15px; padding: 12px 0; }
  .practice-catalogue .catalogue-tools { margin-bottom: 27px; }
  .practice-catalogue .chapter-grid { gap: 17px; }
  .practice-catalogue .chapter-art { min-height: 111px; }
  .practice-catalogue .chapter-art > svg { width: 108px; height: 81px; }
  .practice-catalogue .chapter-body h3 { font-size: 17px; }
  .practice-catalogue .chapter-actions .btn { min-height: 44px; padding: 10px 16px; }
  .practice-catalogue .chapter-explore { font-size: 12px; }
  .practice-catalogue .topic-hero { padding: 21px 18px; gap: 15px; }
  .practice-catalogue .topic-detail-stats { gap: 16px; }
  .practice-catalogue .topic-detail-stats > div { border: 0; }
  .practice-catalogue .topic-difficulty-row > .btn { min-width: 91px; }
  .practice-catalogue .topic-difficulty-copy h3 { flex-wrap: wrap; gap: 5px 8px; }
}
@media (prefers-reduced-motion: reduce) {
  .portal-shell::before,
  .portal-shell::after,
  .portal-shell .app-body::before,
  .portal-shell .app-body::after { animation: none !important; will-change: auto; transform: none; opacity: 0; }
  .portal-shell::before { opacity: .5; }
  .portal-shell *,
  #app-dialog *,
  .student-auth * { scroll-behavior: auto !important; transition: none !important; }
  .portal-shell .chapter-card:hover,
  .portal-shell .btn:hover { transform: none; }
  .portal-shell .app-header,
  #app-dialog::backdrop { backdrop-filter: none; }
}
@media (forced-colors: active) {
  .portal-shell::before,
  .portal-shell::after,
  .portal-shell .app-body::before,
  .portal-shell .app-body::after { display: none; }
  .practice-catalogue .chapter-card,
  .practice-catalogue .catalogue-tabs,
  .practice-catalogue .catalogue-tabs button,
  .practice-catalogue .catalogue-categories button { border: 1px solid ButtonText; }
  .practice-catalogue .catalogue-tabs button.active,
  .practice-catalogue .catalogue-categories button[aria-pressed="true"] { outline: 2px solid Highlight; outline-offset: -3px; }
}
