/* Study classes set display on buttons and sections; the hidden attribute must win. */
.omp-page [hidden]{display:none!important}
/* ОМП page: Study design tokens and trainer styles come from study.css. */
.omp-main{max-width:960px;margin:0 auto;padding:16px}
.omp-head h1{margin:4px 0 8px}
.omp-team{margin:0;color:var(--c-pencil,#55607A);font-size:14px}
.omp-status{margin:12px 0;font-weight:600}
.omp-note{margin:0 0 12px;color:var(--c-pencil,#55607A);font-size:14px}
.omp-modules{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:12px 0}
.omp-module{border:1px solid var(--c-rule,#7A8499);border-radius:12px;padding:16px;background:#fff}
.omp-module h2{margin:0 0 6px;font-size:20px}.omp-module p{margin:0 0 8px}.omp-module-fact{color:var(--c-green,#136F4E);font-weight:600;min-height:1.2em}
.omp-back{margin:8px 0}
.omp-login{max-width:420px;margin:16px 0}.omp-hint{margin:0 0 12px;font-size:17px}.omp-login .btn-primary{width:100%;margin-top:12px}
.omp-consent{margin:10px 0 0;color:var(--c-pencil,#55607A);font-size:13px;line-height:1.4}
.omp-login label{display:block;margin:14px 0 6px;font-weight:600}.omp-login input[type=text]{width:100%;padding:12px;font-size:18px;border:1px solid var(--c-rule,#7A8499);border-radius:12px}
.omp-nav{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.omp-team-view ul{list-style:none;padding:0;margin:8px 0}
.omp-team-view li{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 0;border-bottom:1px solid var(--c-rule,#7A8499)}
.omp-mate{font-weight:700;min-width:120px}.omp-mate-facts{flex:1;min-width:200px;color:var(--c-pencil,#55607A)}.omp-me{background:#f0f7f3}
.omp-coach-team{margin:16px 0}.omp-link-out{display:flex;flex-direction:column;gap:6px}.omp-link-input{width:100%;padding:8px;font-size:13px}
.omp-foot{margin:24px 0 8px;text-align:right}.omp-logout{background:none;border:0;color:var(--c-pencil,#55607A);text-decoration:underline;cursor:pointer}
/* BC-OMP-RESULT-20261107: compact result card (study_trainers.js options.compact) and the week row. Green pen: growth in green, the rest neutral. */
.omp-result{margin:0 0 12px;padding:14px 16px;border:1px solid var(--c-green-line,#A9D5BF);border-radius:12px;background:var(--c-sheet,#fff);scroll-margin-top:8px}
.omp-result-title{margin:0;font-size:18px;line-height:1.3}.omp-result-sub{margin:2px 0 0;color:var(--c-pencil,#55607A);font-size:13px}
.omp-result-big{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;margin:8px 0 4px}.omp-result-big b{font-size:44px;line-height:1.05;font-variant-numeric:tabular-nums;color:var(--c-ink,#1B2540)}
.omp-result-big span{color:var(--c-pencil,#55607A);font-size:14px}
.omp-result-line{margin:0 0 8px;font-size:15px;line-height:1.35}.omp-result-line.is-up{color:var(--c-green,#136F4E);font-weight:700}
.omp-bars{display:flex;align-items:flex-end;gap:6px;height:56px;max-width:320px;margin:6px 0 2px}
.omp-bar{flex:1;min-width:0;border-radius:4px 4px 0 0;background:var(--c-line,#E1E5EC)}.omp-bar.is-now{background:var(--c-blue-line,#C3D0F2)}.omp-bar.is-best{background:var(--c-green,#136F4E)}
.omp-result-best{margin:0 0 8px;font-size:13px;color:var(--c-green,#136F4E)}
.omp-result .trainer-controls{margin:8px 0 6px}.omp-result-today{margin:4px 0 0;font-size:13px;color:var(--c-pencil,#55607A)}
.omp-week{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;margin:0 0 12px;padding:10px 12px;border-radius:12px;background:var(--c-sheet,#fff);border:1px solid var(--c-line,#E1E5EC)}
.omp-week-days{display:flex;gap:6px}.omp-day{display:flex;flex-direction:column;align-items:center;gap:2px;width:30px}
.omp-day i{width:14px;height:14px;border-radius:50%;border:2px solid var(--c-rule,#7A8499);box-sizing:border-box}.omp-day.is-on i{background:var(--c-green,#136F4E);border-color:var(--c-green,#136F4E)}
.omp-day.is-today small{font-weight:700;color:var(--c-ink,#1B2540)}.omp-day small{font-size:11px;color:var(--c-pencil,#55607A)}.omp-week-total{margin:0;font-weight:700}
@media (max-width:420px){.omp-result{padding:12px}.omp-result-big b{font-size:38px}.omp-day{width:26px}}
/* BC-OMP-REACTION-20261107: тренажёры реакции. Цвет всегда с формой и подписью; ошибки не красим. */
.omp-rx-mode{padding:12px 0;border-bottom:1px solid var(--c-line,#E1E5EC)}.omp-rx-mode h3{margin:0 0 4px}.omp-rx-mode p{margin:0 0 8px}
.omp-rx-hint{padding:8px 10px;border-radius:8px;background:var(--c-blue-tint,#EBF0FC)}
.omp-rx-count{margin:0 0 6px;font-variant-numeric:tabular-nums;color:var(--c-pencil,#55607A)}
.omp-rx-stage{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;height:min(52vh,360px);border-radius:16px;background:#8A8F99;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;cursor:pointer}
.omp-rx-sign{width:0;height:0}.omp-rx-sign.is-circle{width:140px;height:140px;border-radius:50%}.omp-rx-sign.is-square{width:130px;height:130px;border-radius:10px}
.omp-rx-sign.is-cross{width:140px;height:140px;background:transparent!important;position:relative}
.omp-rx-sign.is-cross::before,.omp-rx-sign.is-cross::after{content:'';position:absolute;left:58px;top:-6px;width:24px;height:152px;border-radius:6px;background:#C62828;transform:rotate(45deg)}.omp-rx-sign.is-cross::after{transform:rotate(-45deg)}
.omp-rx-cap{margin:12px 0 0;min-height:1.4em;font-size:20px;font-weight:800;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.4)}
.omp-rx-keys{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}
.omp-rx-key{min-height:76px;font-size:20px;font-weight:800;border-radius:14px;border:2px solid var(--c-rule,#7A8499);background:var(--c-sheet,#fff);color:var(--c-ink,#1B2540);touch-action:manipulation;user-select:none;-webkit-user-select:none}
.omp-rx-note{min-height:1.4em;margin:4px 0;color:var(--c-pencil,#55607A)}.omp-rx-quality{margin:0 0 8px;font-size:13px;color:var(--c-amber,#9A5B0B)}
.omp-rx-back{margin-top:4px;background:none;border:0;color:var(--c-blue,#2448B8);text-decoration:underline;cursor:pointer}
/* BC-OMP7-20261107: тренажёры одним списком по 3 в ряд; Нейрогимнастика. */
.omp-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px}
.omp-tile{display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:6px;min-height:84px;padding:10px;border:1px solid var(--c-line,#E1E5EC);border-radius:12px;background:var(--c-sheet,#fff);color:var(--c-ink,#1B2540);text-align:left;cursor:pointer;font:inherit}
.omp-tile b{font-size:15px;line-height:1.2;overflow-wrap:anywhere;hyphens:auto}.omp-tile-fact{font-size:12px;color:var(--c-green,#136F4E)}
.omp-tile:focus-visible{outline:3px solid var(--c-blue,#2448B8);outline-offset:2px}
@media (max-width:360px){.omp-tile{min-height:72px;padding:8px}.omp-tile b{font-size:13px}}
.omp-neuro-list{margin:6px 0 8px 20px;padding:0}.omp-neuro-name{margin:12px 0 4px;font-size:32px;font-weight:800;line-height:1.15}
.omp-neuro-step,.omp-neuro-left{margin:0 0 6px;color:var(--c-pencil,#55607A)}.omp-neuro progress{width:100%;height:10px;margin:6px 0 10px}
/* BC-OMP-HOME-20261107: главный экран. Только шрифт и палитра Study (переменные study.css); тема — body.light-edu-theme.
   Один акцент — полоса недели (как доска смен): сегодня синей ручкой, сделанное зелёной; остальное спокойно. */
.omp-main{width:100%;padding:var(--sp-3) var(--sp-4) var(--sp-6)}
.omp-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3);margin:0 0 var(--sp-3)}
.omp-head h1{margin:0;font-size:var(--fs-4);line-height:1.15;letter-spacing:-0.01em}
.omp-team{font-size:var(--fs-1);color:var(--c-pencil)}
.omp-status:empty{display:none}.omp-status{margin:var(--sp-2) 0;font-size:var(--fs-1)}
/* Вкладки — сегментированная панель. */
.omp-nav{display:flex;gap:2px;padding:3px;margin:0 0 var(--sp-3);border-radius:var(--radius-md);background:var(--c-line);width:fit-content;max-width:100%}
.omp-seg{flex:1 1 auto;min-height:40px;padding:0 var(--sp-4);border:0;border-radius:calc(var(--radius-md) - 2px);background:transparent;color:var(--c-pencil);font-size:var(--fs-1);font-weight:600;cursor:pointer;white-space:nowrap}
.omp-seg[aria-current="page"]{background:var(--c-sheet);color:var(--c-ink);box-shadow:var(--shadow-raised)}
.omp-seg:active{background:var(--c-blue-tint)}
@media (max-width:420px){.omp-nav{width:100%}.omp-seg{padding:0 var(--sp-2)}}
/* Полоса недели. */
.omp-week{display:block;margin:0 0 var(--sp-4);padding:var(--sp-3);border:1px solid var(--c-line);border-radius:var(--radius-lg);background:var(--c-sheet)}
.omp-week-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.omp-day{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:96px;padding:6px 2px;border:1px solid transparent;border-radius:var(--radius-md);background:var(--c-paper);color:var(--c-ink);font:inherit;cursor:pointer;width:auto}
.omp-day small{font-size:12px;color:var(--c-pencil)}.omp-day b{font-size:var(--fs-3);line-height:1;font-variant-numeric:tabular-nums}
.omp-day i{display:none}
.omp-day-icons{display:flex;flex-wrap:wrap;justify-content:center;gap:1px;min-height:20px;font-size:14px;line-height:1.3}
.omp-day-icons span{opacity:.55}.omp-day-icons .is-done{opacity:1}
.omp-day-count{font-size:11px;font-weight:700;color:var(--c-green);min-height:1.2em;font-variant-numeric:tabular-nums}
.omp-day.is-on{background:var(--c-green-tint)}
.omp-day.is-today{border-color:var(--c-blue);border-width:2px;padding:5px 1px}.omp-day.is-today small{color:var(--c-blue);font-weight:700}
.omp-day.is-past{cursor:default}.omp-day.is-past b{color:var(--c-pencil)}
.omp-day.is-open{box-shadow:0 0 0 3px var(--c-blue-line)}
.omp-day:disabled{cursor:default;opacity:1}
.omp-day:active:not(:disabled){background:var(--c-blue-tint)}
.omp-week-total{margin:var(--sp-2) 0 0;font-weight:700}
.omp-plan-empty{display:block;width:100%;margin:var(--sp-3) 0 0;min-height:48px;border:1px dashed var(--c-blue-line);border-radius:var(--radius-md);background:var(--c-blue-tint);color:var(--c-blue);font-weight:700;cursor:pointer}
.omp-plan-edit{margin:var(--sp-3) 0 0;padding-top:var(--sp-3);border-top:1px solid var(--c-line)}
.omp-plan-edit h3{margin:0 0 var(--sp-2);font-size:var(--fs-2)}
.omp-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:0 0 var(--sp-2)}
.omp-chip{min-height:40px;padding:0 var(--sp-3);border:1px solid var(--c-rule);border-radius:999px;background:var(--c-sheet);color:var(--c-ink);font-size:var(--fs-1);cursor:pointer}
.omp-chip[aria-pressed="true"]{border-color:var(--c-blue);background:var(--c-blue-tint);color:var(--c-blue);font-weight:700}
.omp-plan-past{margin:0 0 var(--sp-2);padding-left:var(--sp-4)}.omp-plan-past .is-done{color:var(--c-green);font-weight:600}
/* Плитки тренажёров: телефон — 2 колонки, шире — 3–4. */
.omp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2);margin:0 0 var(--sp-4)}
@media (min-width:600px){.omp-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:900px){.omp-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.omp-tile{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:var(--sp-2);row-gap:2px;align-items:center;align-content:center;min-height:72px;padding:var(--sp-3);border:1px solid var(--c-line);border-radius:var(--radius-lg);background:var(--c-sheet);color:var(--c-ink);text-align:left;cursor:pointer;font:inherit;box-shadow:none;transition:background-color .12s,border-color .12s}
.omp-tile-icon{grid-row:1 / span 3;font-size:26px;line-height:1}
.omp-tile b{font-size:var(--fs-2);line-height:1.2;overflow-wrap:break-word;hyphens:auto}
.omp-tile-fact{font-size:13px;color:var(--c-pencil)}.omp-tile-fact:empty{display:none}
.omp-tile-plan{font-size:12px;font-weight:700;color:var(--c-blue)}.omp-tile-plan.is-done{color:var(--c-green)}
.omp-tile.is-planned{border-color:var(--c-blue-line)}
.omp-tile:active{background:var(--c-blue-tint);border-color:var(--c-blue)}
.omp-tile:focus-visible,.omp-day:focus-visible,.omp-chip:focus-visible,.omp-seg:focus-visible,.omp-plan-empty:focus-visible{outline:3px solid var(--c-blue);outline-offset:2px}
@media (max-width:360px){.omp-tile{padding:var(--sp-2)}.omp-tile b{font-size:15px}.omp-day{min-height:88px}.omp-day b{font-size:var(--fs-2)}}
.omp-modules{display:block;margin:0}
/* ОМП-10: Радуга во время раунда — поле занимает экран под строкой кнопок (вне полного экрана). */
.omp-page .raduga-active .trainer-raduga-frame{height:calc(100vh - 150px);height:calc(100dvh - 150px);min-height:320px;max-height:none}
.omp-page .raduga-active .trainer-controls{margin:4px 0 8px}
/* ОМП-11: Письмо — круговой циферблат обратного отсчёта, ввод числа, фото листа. Палитра Study. */
.omp-writing-step{margin:0 0 var(--sp-2);font-weight:700}.omp-writing-how{margin:0 0 var(--sp-3);color:var(--c-pencil)}
.omp-dial{display:block;width:min(64vw,240px);height:auto;margin:var(--sp-2) auto var(--sp-3)}
.omp-dial-track{fill:none;stroke:var(--c-line);stroke-width:10}.omp-dial-arc{fill:none;stroke:var(--c-blue);stroke-width:10;stroke-linecap:round;transition:stroke-dashoffset .2s linear}
.omp-dial-text{font-size:26px;font-weight:800;fill:var(--c-ink);font-variant-numeric:tabular-nums}
.omp-writing-stop{margin:var(--sp-3) 0;font-size:var(--fs-3);font-weight:800;color:var(--c-blue)}
.omp-writing-label{display:flex;flex-direction:column;gap:var(--sp-2);margin:0 0 var(--sp-2);font-weight:600}
.omp-writing-count{max-width:160px;min-height:48px;padding:0 var(--sp-3);font-size:var(--fs-4);border:1px solid var(--c-rule);border-radius:var(--radius-md)}
.omp-writing-shot{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:48px;overflow:hidden;cursor:pointer}
.omp-writing-file{position:absolute;inset:0;opacity:0;cursor:pointer}
.omp-writing-preview img,.omp-writing-thumb{display:block;max-width:100%;max-height:260px;margin:var(--sp-3) 0;border-radius:var(--radius-md);border:1px solid var(--c-line)}
.omp-photos{display:flex;flex-wrap:wrap;gap:var(--sp-2);width:100%}.omp-photo{width:96px;height:96px;object-fit:cover;border-radius:var(--radius-md);border:1px solid var(--c-line)}
@media (prefers-reduced-motion:reduce){.omp-dial-arc{transition:none}}
/* ОМП-13: Тоник (подход — тёплый акцент дуги) и Золотое сечение (поле 100×100). Палитра Study. */
.omp-dial.is-pull .omp-dial-arc{stroke:var(--c-green)}
.omp-golden-field{display:block;width:min(100%,520px);aspect-ratio:1;margin:var(--sp-2) auto;border:1px solid var(--c-line);border-radius:var(--radius-lg);background:var(--c-sheet);touch-action:manipulation;cursor:crosshair}
.omp-golden-line{stroke:var(--c-ink);stroke-width:1.1;stroke-linecap:round}.omp-golden-end{fill:var(--c-ink)}
.omp-golden-mark{fill:none;stroke:var(--c-green);stroke-width:.8}.omp-golden-tap{fill:var(--c-blue)}
.omp-golden-note{min-height:1.4em;margin:0 0 var(--sp-2);font-weight:600}
/* ОМП-14: Тоник — подсказки отдыха; последние 5 с цвет меняется (готовься к подходу). */
.omp-tonic-cue{min-height:3em;margin:0 0 var(--sp-2);font-size:var(--fs-3);font-weight:700;line-height:1.3}
.omp-tonic-cue.is-ready{color:var(--c-green)}
.omp-tonic.is-ready{background:var(--c-green-tint);transition:background-color .3s}
.omp-dial.is-ready .omp-dial-arc{stroke:var(--c-green)}
@media (prefers-reduced-motion:reduce){.omp-tonic.is-ready{transition:none}}
/* ОМП-15: Золотое сечение — гистограмма отклонений и динамика. */
.omp-hist-title{margin:var(--sp-3) 0 var(--sp-1);font-size:13px;font-weight:700;color:var(--c-pencil)}
.omp-hist{display:grid;gap:4px;max-width:360px}.omp-hist-row{display:grid;grid-template-columns:7.5em 1fr 2em;align-items:center;gap:var(--sp-2);font-size:13px}
.omp-hist-track{height:10px;border-radius:5px;background:var(--c-line);overflow:hidden}.omp-hist-bar{display:block;height:100%;background:var(--c-blue-line)}.omp-hist-bar.is-good{background:var(--c-green)}
.omp-hist-row b{text-align:right;font-variant-numeric:tabular-nums}
/* ОМП-16: Камень. */
.omp-stone-field{display:block;width:min(100%,520px);aspect-ratio:1;margin:var(--sp-2) auto;border:1px solid var(--c-line);border-radius:var(--radius-lg);background:var(--c-sheet);touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;cursor:pointer}
.omp-stone-line{stroke:var(--c-ink);stroke-width:1.2;stroke-linecap:round}.omp-stone-rock{fill:var(--c-pencil)}
.omp-stone-rock.is-exact{fill:var(--c-green)}.omp-stone-rock.is-close{fill:var(--c-blue)}.omp-stone-rock.is-far{fill:var(--c-amber)}
/* BC-OMP-RAINBOW-20261108: Радуга — одна компактная строка кнопок, поле на всю оставшуюся высоту, маленькая «назад». Только ОМП. */
.omp-back.is-compact{min-height:44px;padding:0 10px;margin:0 0 4px;border:0;background:none;color:var(--c-blue);font-size:var(--fs-1);text-decoration:underline;width:auto}
.omp-mic-help{min-width:44px;min-height:44px;margin:0 0 4px 4px;border:1px solid var(--c-line);border-radius:999px;background:var(--c-sheet);color:var(--c-pencil);font-weight:700;cursor:pointer}
.omp-page .raduga-active{padding:var(--sp-2)}
.omp-page .raduga-active>.trainer-feedback:empty{display:none}
.omp-page .raduga-active .trainer-raduga-micline{margin:0 0 4px;font-size:13px;color:var(--c-pencil);min-height:1.2em}
.omp-page .raduga-active>.trainer-controls{display:flex;flex-wrap:nowrap;gap:6px;margin:0 0 6px}
.omp-page .raduga-active>.trainer-controls>button{flex:1 1 auto;min-height:44px;padding:0 10px;font-size:14px;width:auto;white-space:nowrap}
/* «Завершить упражнение» → «Готово» на кнопке (полное название остаётся для экранного диктора). */
.omp-page .raduga-active>.trainer-controls>button:nth-child(3){font-size:0}.omp-page .raduga-active>.trainer-controls>button:nth-child(3)::after{content:'Готово';font-size:14px}
.omp-page .raduga-active .trainer-raduga-frame{height:calc(100vh - 120px);height:calc(100dvh - 120px);min-height:300px;max-height:none;border:0;border-radius:var(--radius-md);background:#10141F}
/* ОМП-18 (Malik 2026-11-08): в Радуге рабочее поле сверху, строка микрофона и кнопки — под ним. Порядок меняет только CSS. */
.omp-page .raduga-active{display:flex;flex-direction:column}
.omp-page .raduga-active>.trainer-raduga-stage{order:-1;margin:0 0 6px}
.omp-page .raduga-active>.trainer-controls{margin:0 0 4px}
.omp-page .raduga-active .trainer-raduga-frame{height:calc(100vh - 110px);height:calc(100dvh - 110px)}
/* ОМП-19 (Malik 2026-11-08): чистое рабочее поле в Шульте, арифметике, корректурке и матрице — ряд «На весь экран / Пауза / Закончить»
   скрыт во время раунда; появляется, если 30 с нет касаний (data-omp-ctl) — и после раунда. Микрофон арифметики — в своём ряду, остаётся. */
.omp-page .schulte-active>.trainer-controls:has(>[data-full-toggle]),.omp-page .kelly-sheet-active .trainer-controls:has(>[data-full-toggle]),
.omp-page .proof-active>.trainer-controls:has(>[data-full-toggle]),.omp-page .matrix-active>.trainer-controls:has(>[data-full-toggle]){display:none}
.omp-page [data-omp-ctl] .trainer-controls:has(>[data-full-toggle]),.omp-page [data-omp-ctl]>.trainer-controls:has(>[data-full-toggle]){display:flex}
.omp-page .schulte-active>.trainer-feedback,.omp-page .proof-active>.trainer-feedback{min-height:0}
/* ОМП-20 (Malik 2026-11-08): единый стиль кнопок во время раунда.
   Тренажёры Study (Шульте, Арифметика, Корректурка, Матрица, Совпадения, Радуга): ряд кнопок скрыт; «⋯» над полем показывает его;
   показанные кнопки — под полем и мельче; во время раунда над полем ничего (шапка и подписи скрыты). */
.omp-page .schulte-active>.trainer-controls:has(>[data-full-toggle]),.omp-page .kelly-sheet-active .trainer-controls:has(>[data-full-toggle]),
.omp-page .proof-active>.trainer-controls:has(>[data-full-toggle]),.omp-page .matrix-active>.trainer-controls:has(>[data-full-toggle]),
.omp-page .nback-active>.trainer-controls:has(>[data-full-toggle]),.omp-page .raduga-active>.trainer-controls{display:none}
.omp-page [data-omp-ctl].schulte-active>.trainer-controls:has(>[data-full-toggle]),.omp-page [data-omp-ctl].kelly-sheet-active .trainer-controls:has(>[data-full-toggle]),
.omp-page [data-omp-ctl].proof-active>.trainer-controls:has(>[data-full-toggle]),.omp-page [data-omp-ctl].matrix-active>.trainer-controls:has(>[data-full-toggle]),
.omp-page [data-omp-ctl].nback-active>.trainer-controls:has(>[data-full-toggle]),.omp-page [data-omp-ctl].raduga-active>.trainer-controls{display:flex}
/* Показанные кнопки — под полем (как в ОМП-19), компактно. Радуга: поле, кнопки, строка «слышу ответы». */
.omp-page [data-omp-ctl] .trainer-controls{flex-wrap:wrap;gap:6px;margin:6px 0}
.omp-page [data-omp-ctl] .trainer-controls>button{min-height:36px;padding:0 10px;font-size:13px;width:auto}
.omp-page .raduga-active>.trainer-controls>button{min-height:36px;font-size:13px}
.omp-page .raduga-active>.trainer-controls>button:nth-child(3)::after{font-size:13px}
/* Во время раунда над полем ничего лишнего. «⋯» — маленькая круглая кнопка в правом нижнем углу. */
body.omp-in-round .omp-head,body.omp-in-round #ompStatus,body.omp-in-round #ompNav,body.omp-in-round #ompAccess,body.omp-in-round #ompMicNote,body.omp-in-round #ompMicHelp{display:none!important}
.omp-ctl-toggle{position:fixed;right:12px;bottom:max(12px,env(safe-area-inset-bottom));z-index:50;width:44px;height:44px;margin:0;padding:0;border:1px solid var(--c-line);border-radius:50%;background:var(--c-sheet);color:var(--c-pencil);font-size:20px;line-height:1;box-shadow:var(--shadow-raised);cursor:pointer}
.omp-ctl-toggle[aria-expanded="true"]{color:var(--c-blue);border-color:var(--c-blue-line)}
/* Тренажёры ОМП: кнопки мельче во время раунда. */
.omp-tonic-active .trainer-controls>button,.omp-writing-active .trainer-controls>button,.omp-neuro-active .trainer-controls>button,.omp-stone-active .trainer-controls>button,.omp-golden-active .trainer-controls>button,.omp-rx-active .trainer-controls>button{min-height:40px;padding:0 12px;font-size:14px;width:auto}
/* ОМП-21 (Malik 2026-11-08): верх экрана «Тренажёры».
   Шапка — одна строка, один шрифт и размер: «ОМП · имя · команда»; имя не обрезается, команда — с многоточием. */
.omp-head{display:flex;flex-wrap:nowrap;align-items:baseline;gap:0;min-width:0;margin:0 0 var(--sp-2);white-space:nowrap;overflow:hidden}
.omp-head h1{flex:none;margin:0;font-size:var(--fs-2);line-height:1.3;font-weight:700;letter-spacing:0}
.omp-head .omp-team{display:flex;min-width:0;margin:0;font-size:var(--fs-2);line-height:1.3;color:var(--c-pencil)}
.omp-head .omp-team[hidden]{display:none}
.omp-who-name{flex:none;color:var(--c-ink);font-weight:600}.omp-who-name::before,.omp-who-team::before{content:' · ';white-space:pre;color:var(--c-pencil);font-weight:400}
.omp-who-team{min-width:0;overflow:hidden;text-overflow:ellipsis}
/* Вкладки — отдельной строкой, заметнее. */
.omp-nav{width:100%;padding:4px;margin:0 0 var(--sp-3)}
.omp-seg{min-height:44px;font-size:var(--fs-2)}
.omp-seg[aria-current="page"]{background:var(--c-blue);color:#fff;box-shadow:none}
/* Подтверждение сохранения: сверху, не над кнопками; успех — зелёное, ошибка — заметное и не уходит. */
.omp-toast{position:fixed;left:50%;top:max(8px,env(safe-area-inset-top));transform:translateX(-50%);z-index:60;width:max-content;max-width:min(92vw,520px);margin:0;padding:10px 14px;border-radius:var(--radius-md);font-size:var(--fs-1);font-weight:600;box-shadow:var(--shadow-overlay);white-space:normal}
.omp-toast.is-ok{background:var(--c-green-tint);color:var(--c-green);border:1px solid var(--c-green-line)}
.omp-toast.is-err{background:var(--c-error-tint);color:var(--c-error);border:2px solid var(--c-error)}
.omp-toast[hidden]{display:none}
/* Дни недели: минуты под датой; нет занятий / меньше 15 мин / 15 и больше (зелёный, как было). Будущие — нейтральные. */
.omp-day-min{min-height:1.2em;font-size:11px;font-weight:700;color:var(--c-pencil);font-variant-numeric:tabular-nums}
.omp-day.is-part{background:color-mix(in srgb,var(--c-green-tint) 40%,var(--c-paper))}
.omp-day.is-full .omp-day-min{color:var(--c-green)}
.omp-day.is-future b{color:var(--c-pencil)}.omp-day.is-future{background:var(--c-paper)}
/* ОМП-22: «← Все тренажёры» рядом со «Старт / Поехали» — до начала упражнения. */
.omp-back-inline{min-height:44px;padding:0 12px;border:0;background:none;color:var(--c-blue);font:inherit;font-size:var(--fs-1);text-decoration:underline;cursor:pointer;width:auto}
/* План v2 (BC-OMP-PLAN2-20261108): уровни часов практики, своё время. Палитра Study. */
.omp-levels{margin:var(--sp-3) 0 0;padding-top:var(--sp-3);border-top:1px solid var(--c-line)}.omp-levels h3{margin:0 0 var(--sp-2);font-size:var(--fs-2)}
.omp-level{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;min-height:56px;margin:0 0 var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--c-line);border-radius:var(--radius-md);background:var(--c-paper);color:var(--c-ink);text-align:left;cursor:pointer;font:inherit}
.omp-level b{font-size:var(--fs-2)}.omp-level span{font-size:var(--fs-1);color:var(--c-pencil)}.omp-level.is-current{border-color:var(--c-blue);background:var(--c-blue-tint)}
.omp-week-facts{display:flex;flex-wrap:wrap;gap:4px 16px;margin:4px 0 0;font-size:var(--fs-1);color:var(--c-pencil)}
.omp-time-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);padding:var(--sp-2) 0;border-bottom:1px solid var(--c-line)}
.omp-time-name{min-width:9em;font-weight:600}.omp-time{min-height:44px;padding:0 10px;font:inherit;font-size:var(--fs-2);border:1px solid var(--c-rule);border-radius:var(--radius-md);background:var(--c-sheet);color:var(--c-ink)}
.omp-time-row .omp-chips{margin:0}.omp-time-row .omp-chip{min-height:36px;padding:0 10px}
.omp-sched{margin:0 0 var(--sp-3)}.omp-move{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;padding:var(--sp-2) 0}

/* omp.asit.kz: первый экран новичка и конец пробной недели (Malik 2026-11-08) */
.omp-intro{margin:0 0 16px;padding:14px 16px;border:1px solid var(--c-rule,#7A8499);border-radius:14px}
.omp-intro h2{margin:0 0 8px;font-size:20px}
.omp-intro-lead{margin:0 0 8px;font-size:16px;line-height:1.4}.omp-intro-src{color:var(--c-pencil,#55607A);font-size:13px}
.omp-intro ul{margin:0 0 8px;padding-left:20px;line-height:1.45}.omp-intro-note{margin:0;font-size:14px;color:var(--c-pencil,#55607A)}
.omp-locked-bridge{margin:10px 0;line-height:1.4}
.omp-continue{display:block;text-align:center;text-decoration:none;margin-top:12px;max-width:420px}
/* Кнопки «Матрицы» на телефоне (Malik 2026-11-09, BC-OMP-PAD): только страница ОМП, Study не меняется.
   Цифры и картинки — 5 в ряд (1–5, 6–9), стрелки — 4 в ряд; без скролла вбок.
   «Стереть» и «Подтвердить» — отдельной строкой под ними, без цифр и стрелок. Без переноса текста, высота ≥ 48 px.
   Портрет и ландшафт, в том числе «На весь экран» (там блок справа от поля, ширину задаёт study.css). */
 .omp-page .trainer-matrix-pad{grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:minmax(48px,auto);gap:8px}
 .omp-page .trainer-matrix-pad button{min-width:0;min-height:48px;height:100%;padding:0 4px;white-space:nowrap;overflow:hidden;text-overflow:clip;overflow-wrap:normal;word-break:normal;line-height:1.1}
 .omp-page .trainer-matrix-pad .pad-erase{grid-column:1/span 2;font-size:16px}
 .omp-page .trainer-matrix-pad .btn-primary{grid-column:span 3}
 .omp-page .trainer-matrix-pad:has(.matrix-arrow){grid-template-columns:repeat(4,minmax(0,1fr))}
 .omp-page .trainer-matrix-pad:has(.matrix-arrow) .btn-primary{grid-column:span 2}
/* Устный счёт (Malik 2026-11-09, BC-OMP-FINISHED): кнопки «Начать голосовой проход», «Задачи решены», «Я закончил говорить» — под примерами, а не над ними
   (и в обычном виде, и «На весь экран»); на телефоне в портрете — два столбца вместо одного. Только страница ОМП, Study не меняется. */
.omp-page .kelly-sheet-active{display:flex;flex-direction:column}
.omp-page .kelly-sheet-active>:has(~.trainer-kelly-sheet){order:0}
.omp-page .kelly-sheet-active>.trainer-kelly-sheet{order:1}
.omp-page .kelly-sheet-active>.trainer-sheet-controls{order:2;position:static;margin:0 0 8px}
.omp-page .kelly-sheet-active>.trainer-kelly-sheet~*{order:3}
@media (max-width:700px){
 /* Malik 2026-11-09: два столбца по 15 (1–15 | 16–30), а не 10 + 10 + 10 ниже. Колонки листа «растворяются» (display:contents),
    строки идут сплошным потоком в два столбца по порядку 1→30. */
 .omp-page .trainer-kelly-sheet{display:block;column-count:2;column-gap:10px;padding:8px}
 .omp-page .trainer-kelly-sheet>.kelly-column{display:contents}
 .omp-page .trainer-kelly-sheet .kelly-row{break-inside:avoid;margin:0 0 6px}
 .omp-page .study-trainers .kelly-row{grid-template-columns:minmax(0,1fr) 56px;gap:4px}
 .omp-page .kelly-row span{font-size:16px;white-space:nowrap}
}
/* Арифметика · вписывай на скорость (BC-OMP-ARITH-20261109): выбор способа, пример крупно, кнопки 0–9 как в «Матрице» (5 в ряд), «Стереть» и «Дальше» — своей строкой. */
.omp-arith-ways{display:grid;gap:6px;margin:8px 0 12px;max-width:460px}.omp-arith-ways small{color:var(--c-pencil);margin:0 0 8px}
.omp-arith-bar{display:flex;justify-content:space-between;align-items:center;gap:8px}.omp-arith-time{font-variant-numeric:tabular-nums;font-weight:700;font-size:var(--fs-2)}
.omp-arith-task{display:flex;align-items:center;justify-content:center;gap:12px;margin:16px 0 8px;font-size:clamp(32px,9vw,48px);font-weight:700;font-variant-numeric:tabular-nums}
.omp-arith-answer{min-width:2.5em;padding:0 8px;border-bottom:3px solid var(--c-blue);text-align:center;white-space:pre}
.omp-arith-prev{margin:0 0 8px;text-align:center;color:var(--c-pencil);font-size:var(--fs-1);font-variant-numeric:tabular-nums}
.omp-arith-pad{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:minmax(56px,auto);gap:8px;width:min(100%,460px);margin:0 auto 12px}
.omp-arith-pad button{min-width:0;min-height:56px;height:100%;margin:0;padding:0 4px;font-size:24px;font-weight:700;white-space:nowrap;touch-action:manipulation;user-select:none;-webkit-user-select:none}
.omp-arith-pad .omp-arith-erase{grid-column:1/span 2;font-size:16px}.omp-arith-pad .omp-arith-next{grid-column:span 3;font-size:18px}
.omp-arith-rows{list-style:none;columns:2;column-gap:16px;margin:8px 0;padding:0;font-variant-numeric:tabular-nums;font-size:var(--fs-1)}
.omp-arith-rows li{break-inside:avoid;padding:2px 0}.omp-arith-rows li.is-ok{color:var(--c-green);font-weight:600}.omp-arith-rows small{color:var(--c-pencil)}
