/* Общий язык записи: цветные блоки, дроби, корни, скобки.
   Этим пользуются несколько модулей, поэтому набор живёт отдельно от них.
   Ни одного хекса: только токены из theme/palette.css. */

/* смысловые псевдонимы: в формулах важна роль величины, а не оттенок */
:root{
  --t1:var(--c-red);   --f1:var(--on-red);     /* простое */
  --t2:var(--c-brown); --f2:var(--on-brown);   /* разные простые */
  --t3:var(--c-blue);  --f3:var(--on-blue);    /* полный квадрат */
  --t4:var(--c-green); --f4:var(--on-green);   /* произведение квадратов */
  --t5:var(--c-violet);--f5:var(--on-violet);  /* квадрат × простые */

  --v-a:var(--c-red);    --on-a:var(--on-red);
  --v-a2:var(--c-orange);--on-a2:var(--on-orange);
  --v-b:var(--c-blue);   --on-b:var(--on-blue);
  --v-m:var(--c-green);  --on-m:var(--on-green);
  --v-n:var(--c-yellow); --on-n:var(--on-yellow);
  --v-c:var(--c-violet); --on-c:var(--on-violet);
}

/* ===== плитки ===== */
.v{display:inline-block;width:1.5em;height:1.5em;border-radius:7px;vertical-align:-.34em;margin:0 2px}
.v.sm{width:1.08em;height:1.08em;border-radius:5px;vertical-align:-.22em;margin:0 1px}
.v.w{display:inline-flex;align-items:center;gap:.15em;width:auto;min-width:0;height:auto;
  min-height:1.12em;padding:0 .4em;font:700 1em/1 system-ui,sans-serif;
  letter-spacing:.02em;vertical-align:-.22em;margin:0 2px}
.fr .v.w:has(.fr){vertical-align:baseline}
.v.w .dsg{flex:none;font:inherit;line-height:1}
.v sub{font-size:.6em;line-height:0;vertical-align:-.28em}

.v-a{background:var(--v-a);color:var(--on-a)}
.v-a2{background:var(--v-a2);color:var(--on-a2)}
.v-b{background:var(--v-b);color:var(--on-b)}
.v-m{background:var(--v-m);color:var(--on-m)}
.v-n{background:var(--v-n);color:var(--on-n)}
.v-c{background:var(--v-c);color:var(--on-c)}

/* ===== обозначения величин ===== */
.q-a{background:var(--c-blue);color:var(--on-blue)}
.q-b{background:var(--c-red);color:var(--on-red)}
.q-c{background:var(--c-pink);color:var(--on-pink)}
.q-X{background:var(--c-yellow);color:var(--on-yellow)}
.q-D{background:var(--c-grey);color:var(--on-grey)}
.q-X1{background:var(--c-orange);color:var(--on-orange)}
.q-X2{background:var(--c-violet);color:var(--on-violet)}
.q-Xv{background:var(--c-brown);color:var(--on-brown)}
.q-Yv{background:var(--c-cyan);color:var(--on-cyan)}
.q-Y{background:var(--c-green);color:var(--on-green)}

/* ===== операторы, скобки, дроби ===== */
.o{font-weight:700;margin:0 .25em}
.cs{color:var(--mut);font:700 .78em/1 system-ui,sans-serif;margin-right:.5em;vertical-align:.12em}
.pw{white-space:nowrap}

.g{display:inline-block;position:relative;padding:0 .34em;vertical-align:middle;margin:0 .1em}
.g::before,.g::after{content:'';position:absolute;top:-.1em;bottom:-.1em;width:.3em;
  border:2px solid var(--mut)}
.g::before{left:0;border-right:0;border-radius:100% 0 0 100%/50% 0 0 50%}
.g::after{right:0;border-left:0;border-radius:0 100% 100% 0/0 50% 50% 0}

.fr{display:inline-flex;flex-direction:column;align-items:center;vertical-align:middle;
  margin:0 .2em;line-height:1.2}
.fr .fn{padding:0 .3em .2em;border-bottom:2px solid var(--mut)}
.fr .fd{padding:.2em .3em 0}
.v.w .fr .fn{border-bottom-color:currentColor}

/* корень: знак тянется по высоте подкоренного */
.rd{display:inline-flex;align-items:stretch;vertical-align:middle;margin:0 .1em}
.rd .rs{flex:none;width:.62em;height:auto;align-self:stretch;overflow:visible;fill:none;
  stroke:currentColor;stroke-width:1.5;stroke-linejoin:miter}
.rd .rs path{vector-effect:non-scaling-stroke}
.rd .sqr{display:block;margin-left:0;border-top-width:1.5px;padding:.12em .2em 0}

/* ===== знак корня из обычного шрифта (виджет корней) ===== */
.rad{white-space:nowrap}
.ov{border-top:.07em solid currentColor;padding:0 .14em;margin-left:.04em}

/* ===== степень и формульный чип ===== */
.px{font-size:.66em;vertical-align:.5em;margin-left:.04em}
.qe{font-size:.62em;vertical-align:.45em;margin-left:.04em}
.sqr{border-top:.07em solid currentColor;padding:.02em .14em 0;margin-left:.08em}

/* ===== строка режима над карточками: общая для нескольких модулей ===== */
.qbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px}
.qhint{font-size:14px;color:var(--mut)}

/* Формульный чип: заливается только основание, показатель — снаружи.
   Раньше класс назывался .chip и дрался с чипами-фильтрами: те становились
   фиолетовыми все подряд. Теперь у формул своё имя. */
.mchip{display:inline-block;padding:.08em .3em;border-radius:7px;
  background:var(--c-violet);color:var(--on-violet);
  font-size:.88em;vertical-align:-.14em;margin:0 1px 0 2px;white-space:nowrap}
.mchip + sup{margin-left:.06em}
