/* TEAS Math Practice: every rule is scoped to .tm so it won't affect your theme. */
.tm{
  --tm-paper:#F6F8FA; --tm-surface:#FFFFFF; --tm-ink:#15233B; --tm-muted:#56637A; --tm-rule:#DCE3EA;
  --tm-teal:#0F7B83; --tm-teal-soft:#E3F2F3; --tm-chip:#EEF2F6; --tm-focus:#0F7B83;
  --tm-good:#2F7D57; --tm-good-soft:#E6F3EC; --tm-warn:#9A6210; --tm-warn-soft:#FBF1E0; --tm-bad:#B4233A; --tm-bad-soft:#FBE9EC;
  box-sizing:border-box; width:100%; max-width:var(--tm-max,none); margin:0 auto 2rem; padding:clamp(1.25rem,4vw,2.5rem);
  background:var(--tm-paper); color:var(--tm-ink); border-radius:1rem;
  font-family:var(--tm-body); font-size:1.0625rem; line-height:1.6; text-align:left;
}
.tm:not(.tm-theme-fonts){
  --tm-body:"Atkinson Hyperlegible",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --tm-display:"Bricolage Grotesque","Atkinson Hyperlegible",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;
}
.tm.tm-theme-fonts{font-family:inherit}
.tm *,.tm *::before,.tm *::after{box-sizing:border-box}
.tm h2,.tm h3,.tm h4,.tm p,.tm ol,.tm ul,.tm li,.tm fieldset,.tm legend,.tm table{margin:0;padding:0;border:0;background:none}
.tm h2,.tm h3,.tm h4{line-height:1.2}
.tm:not(.tm-theme-fonts) h2,.tm:not(.tm-theme-fonts) h3,.tm:not(.tm-theme-fonts) h4{font-family:var(--tm-display);color:var(--tm-ink);text-transform:none;letter-spacing:normal}
.tm a{color:var(--tm-teal);text-decoration:underline;text-underline-offset:2px}
.tm a:focus-visible,.tm button:focus-visible,.tm select:focus-visible,.tm input:focus-visible,.tm summary:focus-visible{outline:3px solid var(--tm-focus);outline-offset:2px}
.tm .tm-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

.tm .tm-title{font-size:clamp(1.6rem,3.4vw,2.3rem);width:100%;text-align:left;text-wrap:balance}
.tm:not(.tm-theme-fonts) .tm-title{font-weight:750;letter-spacing:-.015em}
.tm .tm-lede{color:var(--tm-muted);max-width:48rem;margin-top:.75rem}

/* Tabs */
.tm .tm-tabs{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:2rem;border-bottom:2px solid var(--tm-rule)}
.tm .tm-tab{-webkit-appearance:none;appearance:none;font:inherit;font-size:1rem;line-height:1.3;text-transform:none;letter-spacing:normal;cursor:pointer;
  background:transparent;color:var(--tm-muted);border:0;border-bottom:3px solid transparent;margin:0 0 -2px;padding:.7rem 1rem;border-radius:0;box-shadow:none;width:auto}
.tm .tm-tab:hover{color:var(--tm-ink)}
.tm .tm-tab[aria-selected="true"]{color:var(--tm-ink);border-bottom-color:var(--tm-teal);font-weight:700}
.tm .tm-panel{padding-top:1.75rem}

/* Settings */
.tm .tm-settings-wrap{margin-bottom:1.75rem;padding-bottom:1.25rem;border-bottom:1px solid var(--tm-rule)}
.tm .tm-settings-sum{cursor:pointer;display:flex;flex-wrap:wrap;gap:.25rem .9rem;align-items:baseline;list-style:none;padding:.1rem 0}
.tm .tm-settings-sum::-webkit-details-marker{display:none}
.tm .tm-sum-title{font-weight:700}
.tm .tm-sum-detail{font-size:.92rem;color:var(--tm-muted)}
.tm .tm-sum-edit{font-size:.92rem;color:var(--tm-teal);text-decoration:underline;text-underline-offset:2px}
.tm .tm-when-open{display:none}
.tm details[open] > .tm-settings-sum .tm-when-open{display:inline}
.tm details[open] > .tm-settings-sum .tm-when-closed{display:none}
.tm .tm-settings{display:grid;gap:1.25rem;margin-top:1rem}
.tm .tm-legend{font-family:var(--tm-display);font-weight:600;font-size:1.15rem;margin-bottom:.6rem;color:var(--tm-ink);float:none;width:auto}
.tm .tm-levels{display:grid;gap:.9rem}
.tm .tm-level-name{font-size:.9rem;color:var(--tm-muted);margin-bottom:.35rem}
.tm .tm-chips{display:flex;flex-wrap:wrap;gap:.45rem}
.tm .tm-chip{position:relative;display:inline-block;margin:0;padding:0;font-weight:400}
.tm .tm-chip input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer;-webkit-appearance:none;appearance:none}
.tm .tm-chip span{display:block;padding:.45rem .85rem;border-radius:999px;background:var(--tm-chip);color:var(--tm-ink);border:2px solid transparent;font-size:.95rem;line-height:1.3;cursor:pointer}
.tm .tm-chip input:checked + span{background:var(--tm-ink);color:var(--tm-paper);border-color:var(--tm-ink)}
.tm .tm-chip input:hover + span{border-color:var(--tm-rule)}
.tm .tm-chip input:focus-visible + span{outline:3px solid var(--tm-focus);outline-offset:2px}
.tm .tm-inline-btns{display:flex;gap:1rem;margin-top:.6rem}
.tm .tm-method{max-width:22rem}
.tm .tm-label{display:block;font-size:.92rem;color:var(--tm-muted);margin:0 0 .35rem;font-weight:400}
.tm .tm-select{width:100%;max-width:none;height:auto;font:inherit;font-size:1rem;line-height:1.4;padding:.55rem .75rem;border-radius:.5rem;border:2px solid var(--tm-rule);background-color:var(--tm-surface);color:var(--tm-ink);box-shadow:none;margin:0}
.tm .tm-row{display:flex;flex-wrap:wrap;gap:1rem 1.5rem;align-items:flex-start;margin-top:1rem}
.tm .tm-row > div{flex:1 1 12rem;max-width:24rem}
.tm .tm-check label,.tm .tm-radio{display:flex;gap:.55rem;align-items:center;font-size:.98rem;margin:.3rem 0;font-weight:400;cursor:pointer}
.tm .tm-check input,.tm .tm-radio input{width:1.15rem;height:1.15rem;margin:0;accent-color:var(--tm-teal);flex:none}
.tm .tm-modes{margin-top:1rem}

/* Buttons */
.tm .tm-btn{-webkit-appearance:none;appearance:none;font:inherit;font-size:.98rem;line-height:1.3;text-transform:none;letter-spacing:normal;cursor:pointer;border-radius:.5rem;padding:.6rem 1.05rem;border:2px solid var(--tm-ink);background:transparent;color:var(--tm-ink);box-shadow:none;margin:0;width:auto}
.tm .tm-btn:hover{background:var(--tm-chip)}
.tm .tm-btn-solid{background:var(--tm-ink);color:var(--tm-paper)}
.tm .tm-btn-solid:hover{background:var(--tm-teal);border-color:var(--tm-teal);color:#fff}
.tm .tm-btn-quiet{border-color:var(--tm-rule);font-size:.93rem;padding:.45rem .85rem}
.tm .tm-btn.is-flagged{border-color:var(--tm-warn);background:var(--tm-warn-soft);color:var(--tm-warn)}
.tm .tm-btn:disabled{opacity:.4;cursor:not-allowed;background:transparent;color:var(--tm-ink)}
.tm .tm-link-btn{-webkit-appearance:none;appearance:none;font:inherit;font-size:.92rem;background:none;border:0;padding:0;margin:0;color:var(--tm-teal);text-decoration:underline;text-underline-offset:2px;cursor:pointer;box-shadow:none;width:auto;text-transform:none;letter-spacing:normal}
.tm .tm-actions{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-top:1.1rem}

/* Question card */
.tm .tm-card{background:var(--tm-surface);border:1px solid var(--tm-rule);border-radius:1rem;padding:1.4rem 1.3rem;margin-bottom:1.1rem}
.tm .tm-card > p + p{margin-top:.6rem}
.tm .tm-h3{font-size:1.25rem;margin-bottom:.6rem}
.tm:not(.tm-theme-fonts) .tm-h3{font-weight:600}
.tm .tm-q-meta{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.8rem}
.tm .tm-pill{font-size:.82rem;font-weight:700;padding:.15rem .6rem;border-radius:999px;background:var(--tm-teal-soft);color:var(--tm-teal)}
.tm .tm-pill-area{background:var(--tm-chip);color:var(--tm-muted);font-weight:400}
.tm .tm-q-text{font-size:1.12rem;line-height:1.55;max-width:46rem}
.tm .tm-q-round{font-size:.92rem;color:var(--tm-muted);margin-top:.4rem}
.tm .tm-fig{margin:1rem 0 .4rem;max-width:30rem;overflow-x:auto}
.tm .tm-fig-svg{display:block;width:100%;height:auto;max-width:100%}
.tm .tm-data{border-collapse:collapse;font-size:.98rem;min-width:16rem}
.tm .tm-data caption{font-weight:700;text-align:left;padding-bottom:.4rem;caption-side:top}
.tm .tm-data th,.tm .tm-data td{border:1px solid var(--tm-rule);padding:.4rem .9rem;text-align:left;background:none}
.tm .tm-data th{background:var(--tm-chip)}
.tm .tm-choices{display:grid;gap:.5rem;margin-top:1rem;max-width:34rem}
.tm .tm-choice{position:relative;display:flex;align-items:center;gap:.75rem;margin:0;padding:.6rem .85rem;border:2px solid var(--tm-rule);border-radius:.6rem;background:var(--tm-surface);cursor:pointer;font-weight:400}
.tm .tm-choice input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer;-webkit-appearance:none;appearance:none}
.tm .tm-choice:hover{border-color:var(--tm-muted)}
.tm .tm-letter{display:inline-grid;place-items:center;flex:none;width:1.8rem;height:1.8rem;border-radius:50%;border:2px solid var(--tm-rule);font-weight:700;font-size:.9rem}
.tm .tm-choice-text{font-variant-numeric:tabular-nums}
.tm .tm-choice:has(input:checked){border-color:var(--tm-ink);background:var(--tm-chip)}
.tm .tm-choice:has(input:checked) .tm-letter{background:var(--tm-ink);border-color:var(--tm-ink);color:var(--tm-paper)}
.tm .tm-choice:has(input:focus-visible){outline:3px solid var(--tm-focus);outline-offset:2px}
.tm .tm-choices .tm-choice.is-right{border-color:var(--tm-good);background:var(--tm-good-soft)}
.tm .tm-choices .tm-choice.is-right .tm-letter{background:var(--tm-good);border-color:var(--tm-good);color:#fff}
.tm .tm-choices .tm-choice.is-picked{border-color:var(--tm-bad);background:var(--tm-bad-soft)}
.tm .tm-choices .tm-choice.is-picked .tm-letter{background:var(--tm-bad);border-color:var(--tm-bad);color:#fff}
.tm .tm-choice input:disabled{cursor:default}
.tm .tm-answer{display:flex;align-items:center;gap:.5rem;margin-top:1rem;flex-wrap:wrap}
.tm .tm-input{font:inherit;font-size:1.15rem;font-variant-numeric:tabular-nums;width:11rem;max-width:100%;height:auto;padding:.55rem .75rem;border:2px solid var(--tm-rule);border-radius:.5rem;background:var(--tm-surface);color:var(--tm-ink);box-shadow:none;margin:0}
.tm .tm-input:focus{border-color:var(--tm-teal)}
.tm .tm-input:disabled{background:var(--tm-chip)}
.tm .tm-unit{font-weight:700}
.tm .tm-hint{margin-top:1rem;padding:.7rem .9rem;border-radius:.6rem;background:var(--tm-teal-soft);font-size:.97rem}

/* Feedback */
.tm .tm-feedback{margin-top:1.2rem;padding:1rem 1.1rem;border-radius:.75rem;border-left:5px solid}
.tm .tm-feedback p + p{margin-top:.4rem}
.tm .tm-feedback.is-correct{background:var(--tm-good-soft);border-color:var(--tm-good)}
.tm .tm-feedback.is-close{background:var(--tm-warn-soft);border-color:var(--tm-warn)}
.tm .tm-feedback.is-wrong{background:var(--tm-bad-soft);border-color:var(--tm-bad)}
.tm .tm-feedback.is-revealed{background:var(--tm-teal-soft);border-color:var(--tm-teal)}
.tm .tm-fb-title{font-weight:700;font-size:1.05rem}
.tm .tm-mistake{font-size:.98rem}
.tm .tm-sol{margin-top:1rem}
.tm .tm-sol h4{font-family:var(--tm-body);font-size:.98rem;font-weight:700;color:var(--tm-ink);margin-bottom:.35rem;text-transform:none;letter-spacing:normal}
.tm .tm-steps{padding-left:1.4rem;font-variant-numeric:tabular-nums}
.tm .tm-steps li{margin:.15rem 0;list-style:decimal}
.tm .tm-tip{font-size:.95rem;color:var(--tm-muted);margin-top:.7rem}
.tm .tm-tip b{color:var(--tm-ink)}
.tm .tm-review .tm-mistake{margin-top:.5rem}
.tm .tm-inline-msg{font-size:.93rem;color:var(--tm-bad);margin-top:.6rem}
.tm .tm-copy-msg{font-size:.93rem;color:var(--tm-good);word-break:break-all}
.tm .tm-score{font-size:.95rem;color:var(--tm-muted);margin-bottom:.8rem}
.tm .tm-score b{color:var(--tm-ink)}
.tm .tm-empty{border:2px dashed var(--tm-rule);border-radius:.75rem;padding:1.4rem;color:var(--tm-muted);margin-bottom:1rem}
.tm .tm-hint-small{font-size:.88rem;color:var(--tm-muted);margin-top:.4rem}

/* Calculator */
.tm .tm-tools{display:flex;gap:.5rem;margin-top:1.1rem;padding-top:1rem;border-top:1px solid var(--tm-rule)}
.tm .tm-calc{margin-top:.8rem;width:15.5rem;max-width:100%;padding:.75rem;border-radius:.8rem;background:var(--tm-ink)}
.tm .tm-calc-disp{display:block;text-align:right;font-size:1.5rem;font-variant-numeric:tabular-nums;padding:.35rem .6rem;border-radius:.4rem;background:#F4F7F9;color:var(--tm-ink);overflow:hidden;white-space:nowrap;min-height:2.6rem}
.tm .tm-calc-keys{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem;margin-top:.6rem}
.tm .tm-ck{-webkit-appearance:none;appearance:none;font:inherit;font-size:1.1rem;line-height:1;padding:.7rem 0;border:0;border-radius:.4rem;background:#2B3B55;color:#fff;cursor:pointer;box-shadow:none;margin:0;width:auto;text-transform:none}
.tm .tm-ck:hover{background:#3A4D6B}
.tm .tm-ck-op{background:var(--tm-teal)}
.tm .tm-ck-op:hover{background:#13939C}
.tm .tm-ck-fn{grid-column:span 2;font-size:.95rem;background:#4A5A73}

/* Exam */
.tm .tm-exam-head{display:flex;justify-content:space-between;gap:1rem;font-size:.98rem;margin-bottom:.5rem}
.tm .tm-timer{font-variant-numeric:tabular-nums;color:var(--tm-muted)}
.tm .tm-timer-line{font-size:.95rem;color:var(--tm-muted)}
.tm .tm-progress{height:.4rem;border-radius:1rem;background:var(--tm-chip);overflow:hidden;margin-bottom:1rem}
.tm .tm-progress span{display:block;height:100%;background:var(--tm-teal)}
.tm .tm-nav-grid{margin-top:.4rem}
.tm .tm-grid{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.6rem}
.tm .tm-gcell{-webkit-appearance:none;appearance:none;font:inherit;font-size:.85rem;font-variant-numeric:tabular-nums;width:2.3rem;height:2.3rem;padding:0;border-radius:.4rem;border:2px solid var(--tm-rule);background:var(--tm-surface);color:var(--tm-ink);cursor:pointer;position:relative;box-shadow:none;margin:0;text-transform:none}
.tm .tm-gcell.is-answered{background:var(--tm-teal-soft);border-color:var(--tm-teal)}
.tm .tm-gcell.is-current{outline:2px solid var(--tm-ink);outline-offset:1px}
.tm .tm-gcell.is-flagged::after{content:"";position:absolute;top:-4px;right:-4px;width:.6rem;height:.6rem;border-radius:50%;background:var(--tm-warn);border:2px solid var(--tm-surface)}
.tm .tm-result{border-left:6px solid}
.tm .tm-result.is-pass{border-left-color:var(--tm-good)}
.tm .tm-result.is-fail{border-left-color:var(--tm-warn)}
.tm .tm-big{font-size:1.4rem;font-weight:700;line-height:1.3}
.tm .tm-bars{margin-bottom:1.6rem}
.tm .tm-bar-row{display:grid;grid-template-columns:minmax(9rem,15rem) 1fr 3rem auto;gap:.75rem;align-items:center;padding:.35rem 0;font-size:.95rem}
.tm .tm-bar{display:block;height:.6rem;border-radius:1rem;background:var(--tm-chip);overflow:hidden}
.tm .tm-bar span{display:block;height:100%;background:var(--tm-good);border-radius:1rem}
.tm .tm-bar.is-weak span{background:var(--tm-warn)}
.tm .tm-bar-val{font-variant-numeric:tabular-nums;color:var(--tm-muted)}
.tm .tm-stats{margin-top:.5rem}
.tm .tm-stats summary,.tm .tm-preview summary{cursor:pointer;color:var(--tm-teal);font-size:.95rem}
.tm .tm-stats[open] summary{margin-bottom:.6rem}
.tm .tm-review{display:grid;gap:.6rem;margin-bottom:1rem}
.tm .tm-rev{background:var(--tm-surface);border:1px solid var(--tm-rule);border-radius:.75rem;padding:.8rem 1rem;border-left:5px solid}
.tm .tm-rev.is-correct{border-left-color:var(--tm-good)}
.tm .tm-rev.is-wrong{border-left-color:var(--tm-bad)}
.tm .tm-rev summary{cursor:pointer;display:flex;gap:.75rem;align-items:center;font-weight:700}
.tm .tm-rev[open] summary{margin-bottom:.7rem}
.tm .tm-rev > p{margin-top:.5rem}
.tm .tm-rev-num{display:inline-grid;place-items:center;min-width:1.7rem;height:1.7rem;border-radius:50%;background:var(--tm-chip);font-size:.85rem}
.tm .tm-rev-status{margin-left:auto;font-weight:400;font-size:.9rem;color:var(--tm-muted)}
.tm .tm-history{display:grid;gap:.3rem;margin-top:.6rem}
.tm .tm-hist-row{display:grid;grid-template-columns:4.5rem 9rem 1fr 3rem;gap:.75rem;align-items:center;font-size:.93rem}

/* Worksheet */
.tm .tm-load{margin-top:1.4rem;padding-top:1.2rem;border-top:1px solid var(--tm-rule)}
.tm .tm-load-row{display:flex;gap:.5rem;flex-wrap:wrap}
.tm .tm-code-input{width:15rem;font-size:1rem;text-transform:uppercase}
.tm .tm-code{letter-spacing:.04em;background:var(--tm-chip);padding:.1rem .45rem;border-radius:.35rem}
.tm .tm-preview{margin-top:1rem}
.tm .tm-preview ol{padding-left:1.4rem;margin-top:.6rem}
.tm .tm-preview li{list-style:decimal;margin:.3rem 0;font-size:.95rem}

/* Reference */
.tm .tm-ref{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:1rem}
.tm .tm-ref .tm-card{margin:0}
.tm .tm-table{width:100%;border-collapse:collapse;font-size:.96rem}
.tm .tm-table td{padding:.45rem .3rem;border:0;border-bottom:1px solid var(--tm-rule);vertical-align:top;background:none}
.tm .tm-table td:first-child{font-weight:700;width:40%;padding-right:.8rem}
.tm .tm-table tr:last-child td{border-bottom:0}
.tm .tm-list{padding-left:1.2rem}
.tm .tm-list li{list-style:disc;margin:.3rem 0;font-size:.96rem}

.tm .tm-related{margin-top:1.6rem;font-size:.95rem}
.tm .tm-disclaimer{font-size:.86rem;color:var(--tm-muted);border-top:1px solid var(--tm-rule);margin-top:1.6rem;padding-top:1.1rem}
.tm .tm-hint-nojs{font-size:.92rem;color:var(--tm-muted)}

@media (max-width:600px){
  .tm .tm-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .tm .tm-tabs::-webkit-scrollbar{display:none}
  .tm .tm-tab{padding:.6rem .7rem;font-size:.95rem;white-space:nowrap;flex:none}
  .tm .tm-bar-row{grid-template-columns:1fr 3rem}
  .tm .tm-bar-row .tm-bar{grid-column:1 / -1;grid-row:2}
  .tm .tm-hist-row{grid-template-columns:4rem 1fr 3rem}
  .tm .tm-hist-row .tm-bar{display:none}
  .tm .tm-card{padding:1.1rem 1rem}
}
@media (prefers-reduced-motion: no-preference){
  .tm .tm-feedback{animation:tm-in .25s ease-out both}
}
@keyframes tm-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* How to use this tool */
.tm .tm-howto{margin-top:1.25rem;max-width:44rem;background:var(--tm-surface);border:1px solid var(--tm-rule);border-left:4px solid var(--tm-teal);border-radius:.6rem;padding:0}
.tm .tm-howto-sum{cursor:pointer;list-style:none;display:flex;align-items:center;gap:.55rem;padding:.7rem 1rem;font-weight:700;color:var(--tm-ink)}
.tm .tm-howto-sum::-webkit-details-marker{display:none}
.tm .tm-howto-sum::before{content:"+";display:inline-grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:50%;background:var(--tm-teal);color:#fff;font-size:1.05rem;line-height:1;flex:none}
.tm details[open] > .tm-howto-sum::before{content:"\2212"}
.tm .tm-howto-sum:focus-visible{outline:3px solid var(--tm-teal);outline-offset:2px}
.tm .tm-howto-body{padding:0 1.1rem 1rem 1.1rem;font-size:1.05rem;line-height:1.55}
.tm .tm-howto-body p{margin:0 0 .5rem}
.tm .tm-howto-what{color:var(--tm-muted)}
.tm .tm-howto-body ol{margin:0 0 .6rem;padding-left:1.6rem}
.tm .tm-howto-body li{list-style:decimal;margin:.35rem 0;padding-left:.2rem}
.tm .tm-howto-body li::marker{font-weight:700;color:var(--tm-teal)}
.tm .tm-howto-tips{margin-top:.6rem !important;padding-top:.6rem;border-top:1px solid var(--tm-rule)}
.tm .tm-howto-sub{margin-top:.6rem !important}
