  :root {
    --blue: #1f5c9e;
    --blue-dark: #14406f;
    --blue-mid: #2e6da4;
    --blue-soft: #dbe6f2;
    --blue-pale: #eef4fa;
    --line: #b4c6da;
    --green: #9ec13c;
    --green-dark: #7ea22a;
    --pink: #cf5b8c;
    --grey: #6d7c8a;
    --ink: #23303c;
    --page-bg: #e9edf2;
    --sheet: #ffffff;
    --chrome-a: #1b4f87;
    --chrome-b: #14406f;
    --box-line: #7f8f9e;
    --hdr-text: #ffffff;
    --strip-a: #9ec13c;
    --strip-b: #cfe0a8;
    --strip-c: #dbe6f2;
    --strip-d: #cfd8e6;
    --badge-bg: #fdf0e2;
    --badge-fg: #a8600d;
    --badge-line: #e8c79a;
    --btn-hover: #14406f;
    --ghost-hover: #cbdcee;
    --ok: #2e7d32;
    --ok-bg: #e8f5e9;
    --bad: #c62828;
    --bad-bg: #fdeaea;
    --amber: #b26a00;
    --amber-bg: #fff3e0;
  }
  @media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
    --blue: #4a86c8;
    --blue-dark: #9ec6ea;
    --blue-mid: #8ab6df;
    --blue-soft: #24313f;
    --blue-pale: #1d2732;
    --line: #35434f;
    --green: #7d9e2f;
    --green-dark: #6b8a28;
    --pink: #c96b95;
    --grey: #93a3b2;
    --ink: #dfe7ee;
    --page-bg: #11161b;
    --sheet: #1b2229;
    --chrome-a: #16202b;
    --chrome-b: #101821;
    --box-line: #6c7d8d;
    --hdr-text: #ffffff;
    --strip-a: #6b8a28;
    --strip-b: #3c4a2b;
    --strip-c: #24313f;
    --strip-d: #1d2732;
    --badge-bg: #3a2c14;
    --badge-fg: #e0a44a;
    --badge-line: #5c4622;
    --btn-hover: #5f96d4;
    --ghost-hover: #2c3b4b;
    --ok: #6cc36f;
    --ok-bg: #1d3524;
    --bad: #ef8080;
    --bad-bg: #3b1f22;
    --amber: #e0a44a;
    --amber-bg: #3a2c14;
    }
  }
  :root[data-theme="dark"] {
    --blue: #4a86c8;
    --blue-dark: #9ec6ea;
    --blue-mid: #8ab6df;
    --blue-soft: #24313f;
    --blue-pale: #1d2732;
    --line: #35434f;
    --green: #7d9e2f;
    --green-dark: #6b8a28;
    --pink: #c96b95;
    --grey: #93a3b2;
    --ink: #dfe7ee;
    --page-bg: #11161b;
    --sheet: #1b2229;
    --chrome-a: #16202b;
    --chrome-b: #101821;
    --box-line: #6c7d8d;
    --hdr-text: #ffffff;
    --strip-a: #6b8a28;
    --strip-b: #3c4a2b;
    --strip-c: #24313f;
    --strip-d: #1d2732;
    --badge-bg: #3a2c14;
    --badge-fg: #e0a44a;
    --badge-line: #5c4622;
    --btn-hover: #5f96d4;
    --ghost-hover: #2c3b4b;
    --ok: #6cc36f;
    --ok-bg: #1d3524;
    --bad: #ef8080;
    --bad-bg: #3b1f22;
    --amber: #e0a44a;
    --amber-bg: #3a2c14;
  }

  * { box-sizing: border-box; }
  html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
  body {
    margin: 0;
    font-family: 'Helvetica Neue', Helvetica, Arial, 'Segoe UI', sans-serif;
    background: var(--page-bg);
    color: var(--ink);
    line-height: 1.5;
    display: flex;
    min-height: 100vh;
  }
  .gr { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; }

  /* ================= сайдбар ================= */
  .sidebar {
    width: 258px; flex: none;
    background: linear-gradient(180deg, var(--chrome-a) 0%, var(--chrome-b) 100%);
    color: #cfe0f0;
    display: flex; flex-direction: column;
    padding: 20px 14px 0;
    position: sticky; top: 0; height: 100vh;
  }
  .brand { display: flex; gap: 11px; align-items: center; padding: 0 8px 6px; }
  .brand .flag { font-size: 25px; }
  .brand .name { color: #fff; font-size: 19px; font-weight: 600; letter-spacing: .5px; }
  .brand .sub { font-size: 12.5px; color: #9dbcd8; }
  .nav-label {
    font-size: 10.5px; letter-spacing: 2.5px; color: #8fb0cd;
    text-transform: uppercase; margin: 24px 8px 9px; font-weight: 600;
  }
  .nav { display: flex; flex-direction: column; gap: 5px; }
  .nav-item {
    display: flex; gap: 11px; align-items: center;
    padding: 11px 13px; border-radius: 8px; color: #cfe0f0;
  }
  .nav-item .ico { font-size: 19px; width: 25px; text-align: center; }
  .nav-item .t { font-size: 15px; color: #fff; }
  .nav-item .s { font-size: 12px; color: #9dbcd8; }
  .nav-item.active { background: rgba(255,255,255,.12); }
  .nav-item.disabled { opacity: .5; }
  .side-bottom { margin-top: auto; padding: 14px 8px 16px; }
  .home-link {
    display: flex; gap: 10px; align-items: center; color: #cfe0f0;
    background: none; border: none; font: inherit; cursor: pointer; padding: 9px 6px;
    font-size: 14.5px; width: 100%; text-align: left; border-radius: 8px;
  }
  .home-link:hover { background: rgba(255,255,255,.08); color: #fff; }
  .theme-toggle {
    display: flex; gap: 10px; align-items: center; color: #cfe0f0;
    background: none; border: none; font: inherit; cursor: pointer; padding: 9px 6px;
    font-size: 14.5px; width: 100%; text-align: left; border-radius: 8px;
  }
  .theme-toggle:hover { background: rgba(255,255,255,.08); color: #fff; }
  .side-timer {
    border-top: 1px solid rgba(255,255,255,.15);
    padding: 13px 6px 4px; margin-top: 6px;
    font-size: 16px; color: #fff; display: none;
    font-variant-numeric: tabular-nums;
  }
  .side-timer.warn { color: #ffc46b; }
  .side-timer.over { color: #ff9a8a; }

  /* ================= основная область ================= */
  .content { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
  .topbar {
    background: var(--chrome-b); color: #fff;
    padding: 12px 26px; font-size: 15px; font-weight: 600;
    letter-spacing: 1px;
    display: flex; align-items: center; gap: 10px;
    position: sticky; top: 0; z-index: 5;
  }
  .container { max-width: 880px; width: 100%; margin: 0 auto; padding: 24px 20px 90px; }

  /* ================= главная ================= */
  .intro {
    background: var(--sheet); border: 1px solid var(--line); border-radius: 3px;
    padding: 20px 24px; margin-bottom: 16px; border-top: 4px solid var(--blue);
  }
  .intro h1 { font-size: 21px; margin: 0 0 8px; color: var(--blue-dark); }
  .intro p { margin: 7px 0; font-size: 15.5px; }
  .intro .meta { color: var(--grey); font-size: 14.5px; }
  .cards { display: grid; gap: 12px; }
  .vcard {
    background: var(--sheet); border: 1px solid var(--line); border-radius: 3px;
    padding: 16px 20px; display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  }
  .vcard h2 { margin: 0; font-size: 18px; color: var(--blue-dark); }
  .hard-badge {
    display: inline-block; margin-left: 10px; vertical-align: 2px;
    background: var(--badge-bg); color: var(--badge-fg); border: 1px solid var(--badge-line);
    font-size: 10.5px; font-weight: 700; letter-spacing: .6px;
    text-transform: uppercase; padding: 2px 8px; border-radius: 2px;
  }
  .vcard .sub { color: var(--grey); font-size: 14px; margin-top: 3px; }
  .vcard .best { font-size: 14px; margin-top: 6px; }
  .vcard .inwork { color: var(--amber); font-weight: 600; }
  .best .ok { color: var(--ok); font-weight: 600; }
  .best .fail { color: var(--bad); font-weight: 600; }
  .vcard .grow { flex: 1 1 auto; min-width: 190px; }

  button.btn {
    font: inherit; font-size: 15.5px; font-weight: 600;
    border-radius: 3px; border: none; cursor: pointer;
    background: var(--blue); color: #fff; padding: 10px 22px;
    letter-spacing: .5px;
  }
  button.btn:hover { background: var(--btn-hover); }
  button.btn.ghost { background: var(--blue-soft); color: var(--blue-dark); }
  button.btn.ghost:hover { background: var(--ghost-hover); }

  /* ================= лист задания ================= */
  .sheet {
    background: var(--sheet); border: 1px solid var(--line);
    margin-bottom: 26px; position: relative;
    box-shadow: 0 1px 3px rgba(20,64,111,.10);
  }
  .sheet-strip { height: 8px; background: linear-gradient(90deg, var(--strip-a) 0%, var(--strip-b) 22%, var(--strip-c) 55%, var(--strip-d) 100%); }
  .sheet-head {
    display: flex; align-items: stretch; gap: 12px;
    padding: 0 0 0 0; border-bottom: 1px solid var(--line);
  }
  .lvl {
    background: linear-gradient(180deg, #4a7fb5, #1f5c9e); color: #fff;
    padding: 10px 12px 12px; text-align: center; flex: none; min-width: 62px;
  }
  .lvl span { display: block; font-size: 7.5px; letter-spacing: 2px; opacity: .9; }
  .lvl b { display: block; font-size: 24px; line-height: 1.05; font-weight: 700; }
  .sheet-titles { flex: 1 1 auto; padding: 12px 8px; min-width: 0; }
  .exam-name {
    color: var(--blue); font-weight: 700; font-size: 16.5px; letter-spacing: 3px;
  }
  .exam-sub { color: var(--grey); font-size: 10.5px; letter-spacing: 2px; margin-top: 3px; }
  .sheet-num {
    background: var(--green); color: var(--hdr-text); font-size: 26px; font-weight: 700;
    padding: 6px 16px; display: flex; align-items: center; flex: none;
  }

  .sheet-body { padding: 20px 26px 24px; }

  .qhead { margin-bottom: 14px; }
  .qno { color: var(--blue); font-weight: 700; font-size: 15px; letter-spacing: 3px; }
  .qpts { color: var(--grey); font-size: 13px; letter-spacing: 1.5px; margin-left: 6px; }

  .instr { font-size: 16.5px; text-align: justify; margin-bottom: 14px; }
  .instr p { margin: 0; }
  .instr p::first-letter {
    font-size: 3.2em; float: left; line-height: .82; font-weight: 700;
    color: var(--blue); padding: 2px 7px 0 0;
  }

  .prosexte {
    display: flex; gap: 14px; margin: 0 0 20px auto; max-width: 460px;
    color: var(--blue-mid); font-size: 14px; line-height: 1.45;
  }
  .prosexte .pl {
    font-weight: 700; letter-spacing: 1.5px; color: var(--blue);
    text-align: right; flex: none; padding-top: 1px; font-size: 13.5px;
  }
  .prosexte .pt { border-left: 2px solid var(--blue); padding-left: 12px; text-align: justify; }

  /* ================= текст ================= */
  .keimeno-label {
    font-size: 10px; letter-spacing: 3px; color: var(--grey); font-weight: 700;
    margin: 0 0 8px; text-align: center;
  }
  .keimeno { font-size: 16.5px; margin-bottom: 20px; line-height: 1.68; }
  .keimeno p { margin: 9px 0; text-align: justify; text-indent: 18px; }
  .keimeno p:first-of-type { margin-top: 0; }
  .ktitle {
    font-size: 17.5px; margin: 0 0 14px; text-align: center;
    color: var(--blue-dark); font-weight: 700;
  }

  /* нумерованные пункты (задание 1) */
  .starts { list-style: none; margin: 14px 0 0; padding: 0; }
  .starts li { display: flex; gap: 12px; padding: 6px 0; align-items: baseline; }
  .starts .sn { font-weight: 700; color: var(--blue); flex: none; width: 24px; font-size: 16.5px; }
  .starts li.example-start .sn { color: var(--grey); }
  .starts .st { flex: 1 1 auto; text-align: justify; }
  .starts .dots { color: var(--grey); letter-spacing: 1px; }

  /* пропуски (задание 4) */
  .blank {
    display: inline-block; border-bottom: 1px solid var(--ink); min-width: 112px;
    text-align: center; color: var(--blue); font-weight: 700; margin: 0 4px;
    text-indent: 0;
  }
  .blank.ex { color: var(--grey); }

  /* таблица «фраза/слово + номер» (задания 1 и 4) */
  .phrases { border: 1px solid var(--line); border-bottom: none; margin-bottom: 8px; }
  .ph-row {
    display: flex; align-items: stretch; border-bottom: 1px solid var(--line);
    min-height: 42px;
  }
  .ph-row .ph { flex: 1 1 auto; font-size: 15.5px; padding: 11px 14px; align-self: center; }
  .ph-row.example-row .ph { font-weight: 700; }
  .ph-row .abox {
    flex: none; width: 92px; border-left: 1px solid var(--line);
    background: var(--blue-pale); display: flex; align-items: center;
    justify-content: center; gap: 6px; padding: 4px;
  }
  .ph-row.example-row .abox { background: var(--blue-soft); flex-direction: column; gap: 0; }
  .ph-row .exnum { color: var(--blue); font-weight: 700; font-size: 17px; line-height: 1.1; }
  .cap { display: block; font-size: 7px; letter-spacing: 1px; color: var(--blue-dark); font-weight: 700; }
  .ph-row.right { background: var(--ok-bg); }
  .ph-row.wrong { background: var(--bad-bg); }
  .ph-row .corr { color: var(--ok); font-weight: 700; font-size: 13px; align-self: center; padding-right: 10px; }

  select {
    font: inherit; font-size: 15.5px; font-weight: 700; color: var(--ink);
    padding: 5px 7px; border-radius: 2px; border: 1px solid var(--line); background: var(--sheet);
  }
  select:focus-visible { outline: 2px solid var(--blue); outline-offset: 1px; }
  select.right-sel { border-color: var(--ok); background: var(--ok-bg); }
  select.wrong-sel { border-color: var(--bad); background: var(--bad-bg); }

  /* объявления (задание 2) */
  .angelies { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; margin-bottom: 20px; }
  .angelia { border: 1px solid var(--line); border-radius: 10px; background: var(--sheet); }
  .angelia:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .angelia .angelia-name {
    background: #2e5f96; color: #fff; text-align: center;
    padding: 8px 12px; font-weight: 700; font-size: 15px; letter-spacing: 1px;
    border-radius: 9px 9px 0 0;
  }
  .angelia:nth-child(2) .angelia-name { background: #7b6cae; }
  .angelia:nth-child(3) .angelia-name { background: #4a8c5f; }
  .angelia:nth-child(4) .angelia-name { background: #3f5b8a; }
  .angelia:nth-child(5) .angelia-name { background: #b4577f; }
  .angelia .angelia-text {
    padding: 12px 15px; font-size: 14.5px; text-align: center; line-height: 1.55;
    color: var(--ink); background: var(--sheet); border-radius: 0 0 9px 9px;
  }
  .angelia .angelia-text p { margin: 0; text-indent: 0; }

  /* таблица с галочками (задание 2) */
  .mwrap { overflow-x: auto; margin-bottom: 8px; -webkit-overflow-scrolling: touch; }
  .scroll-hint { display: none; font-size: 12px; color: var(--grey); margin: 0 0 6px 2px; }
  table.mtable { border-collapse: separate; border-spacing: 0; width: 100%; min-width: 520px; }
  table.mtable th, table.mtable td {
    border-right: 1px solid var(--line); border-bottom: 1px solid var(--line);
    padding: 8px 8px; text-align: center;
  }
  table.mtable tr > *:first-child { border-left: 1px solid var(--line); }
  table.mtable thead th { border-top: 1px solid var(--line); }
  table.mtable thead th {
    background: var(--blue-soft); color: var(--blue-dark);
    font-size: 13px; font-weight: 700; letter-spacing: .5px;
  }
  table.mtable thead th:first-child { position: sticky; left: 0; z-index: 2; background: var(--sheet); }
  table.mtable tbody th {
    text-align: left; font-weight: 400; font-size: 14.5px; background: var(--blue-pale);
    min-width: 140px; position: sticky; left: 0; z-index: 1; color: var(--ink);
  }
  table.mtable td { width: 15%; background: var(--sheet); }
  table.mtable td.cell-ok { background: var(--ok-bg); }
  table.mtable td.cell-bad { background: var(--bad-bg); }
  table.mtable td.cell-miss { background: var(--amber-bg); }
  table.mtable td .miss { color: var(--amber); font-weight: 700; }
  .ex-cell { background: var(--blue-soft) !important; font-weight: 700; color: var(--blue); }

  /* Σωστό / Λάθος (задание 3) */
  table.tftable { border-collapse: separate; border-spacing: 0; width: 100%; }
  table.tftable td, table.tftable th {
    border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 9px 11px;
  }
  table.tftable tr > *:first-child { border-left: 1px solid var(--line); }
  table.tftable thead th { border-top: 1px solid var(--line); font-size: 13px; letter-spacing: 2px; }
  table.tftable thead th.blank-h { border: none; background: transparent; }
  table.tftable thead th.sosto { background: var(--blue); color: var(--hdr-text); width: 82px; }
  table.tftable thead th.lathos { background: var(--pink); color: var(--hdr-text); width: 82px; }
  table.tftable td.ncell {
    width: 32px; text-align: center; font-weight: 700; color: var(--blue-dark);
    background: var(--blue-soft); font-size: 16px;
  }
  table.tftable td.qcell { font-size: 15.5px; border-left: 5px solid var(--strip, var(--blue)); }
  table.tftable td.tfcell { text-align: center; width: 82px; background: var(--sheet); }
  table.tftable tr.right td.qcell, table.tftable tr.right td.tfcell { background: var(--ok-bg); }
  table.tftable tr.wrong td.qcell, table.tftable tr.wrong td.tfcell { background: var(--bad-bg); }
  table.tftable tr.example-row td.qcell { background: var(--blue-pale); font-weight: 700; }
  table.tftable tr.example-row td.tfcell { background: var(--blue-pale); color: var(--blue); font-weight: 700; }
  table.tftable td .corr-mark { color: var(--ok); font-weight: 700; }
  table.tftable td .cap { margin-top: 2px; }

  label.cb { cursor: pointer; display: inline-flex; }
  label.cb input { position: absolute; opacity: 0; width: 0; height: 0; }
  .xbox {
    display: inline-block; width: 23px; height: 23px;
    border: 1px solid var(--box-line); border-radius: 2px; background: var(--sheet);
    text-align: center; line-height: 21px; font-weight: 700; font-size: 15px;
    color: var(--blue);
  }
  label.cb input:checked + .xbox::after { content: '✓'; }
  label.cb input:focus-visible + .xbox { outline: 2px solid var(--blue); outline-offset: 2px; }
  label.cb input:disabled + .xbox { border-color: var(--line); }

  .sheet-foot {
    text-align: right; font-size: 9px; letter-spacing: 2px; color: var(--grey);
    padding: 0 26px 14px; font-weight: 700;
  }

  /* результаты */
  #resultBox { border: 2px solid; padding: 20px 24px; margin-bottom: 22px; background: var(--sheet); }
  #resultBox.pass { background: var(--ok-bg); border-color: var(--ok); }
  #resultBox.fail { background: var(--amber-bg); border-color: var(--amber); }
  #resultBox h2 { margin: 0 0 6px; font-size: 19px; }
  #resultBox .time-note { font-size: 14px; color: var(--grey); margin-top: 4px; }
  #resultBox .score { font-size: 32px; font-weight: 700; }
  #resultBox.pass .score { color: var(--ok); }
  #resultBox.fail .score { color: var(--amber); }
  #resultBox table { border-collapse: collapse; margin-top: 10px; font-size: 15px; }
  #resultBox td { padding: 3px 14px 3px 0; }

  .actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 10px; }
  .footer-note { color: var(--grey); font-size: 13.5px; text-align: center; margin-top: 26px; }



  /* ================= разбор ответов ================= */
  .review { background: var(--sheet); border: 1px solid var(--line); border-top: 4px solid var(--blue);
            padding: 20px 24px 26px; }
  .review-head h1 { font-size: 20px; margin: 0 0 6px; color: var(--blue-dark); }
  .review-head .meta { color: var(--grey); font-size: 14.5px; margin: 0 0 6px; }
  .attempts { font-size: 14px; color: var(--grey); margin: 10px 0 4px; display: flex;
              flex-wrap: wrap; gap: 6px; align-items: center; }
  .attempts .att { font: inherit; font-size: 13.5px; cursor: pointer; padding: 4px 10px;
                   border: 1px solid var(--line); background: var(--sheet); color: var(--ink); border-radius: 2px; }
  .attempts .att.cur { background: var(--blue-soft); color: var(--blue-dark); font-weight: 700; }
  h2.rv-part { font-size: 15px; color: var(--blue); letter-spacing: 1px;
               margin: 22px 0 8px; text-transform: uppercase; }
  table.rvtable { border-collapse: collapse; width: 100%; }
  table.rvtable th, table.rvtable td { border: 1px solid var(--line); padding: 7px 9px;
                                       font-size: 14.5px; vertical-align: top; text-align: left; }
  table.rvtable thead th { background: var(--blue-soft); color: var(--blue-dark);
                           font-size: 12.5px; letter-spacing: .5px; }
  table.rvtable .c-mark { width: 28px; text-align: center; font-weight: 700; }
  table.rvtable tr.rv-ok { background: var(--ok-bg); }
  table.rvtable tr.rv-ok .c-mark { color: var(--ok); }
  table.rvtable tr.rv-bad { background: var(--bad-bg); }
  table.rvtable tr.rv-bad .c-mark { color: var(--bad); }

  /* ================= печать ================= */
  #printAll { display: none; }
  @page { margin: 12mm 10mm; }
  /* бланк для ответов существует только на печати */
  #blankSheet { display: none; }

  @media print {
    /* печатаем всегда в светлой палитре, даже если на экране ночная тема */
    :root, :root[data-theme="dark"], :root:not([data-theme="light"]) {
      --blue: #1f5c9e; --blue-dark: #14406f; --blue-mid: #2e6da4;
      --blue-soft: #dbe6f2; --blue-pale: #eef4fa; --line: #b4c6da;
      --green: #9ec13c; --pink: #cf5b8c; --grey: #6d7c8a; --ink: #23303c;
      --page-bg: #ffffff; --sheet: #ffffff; --box-line: #7f8f9e; --hdr-text: #ffffff;
      --strip-a: #9ec13c; --strip-b: #cfe0a8; --strip-c: #dbe6f2; --strip-d: #cfd8e6;
      --ok: #2e7d32; --ok-bg: #ffffff; --bad: #c62828; --bad-bg: #ffffff;
      --amber: #b26a00; --amber-bg: #ffffff;
    }
    body { display: block; background: #fff; }
    .sidebar, .topbar, .actions, .scroll-hint, #resultBox,
    .footer-note, .intro, .cards, .attempts { display: none !important; }
    .review { border: none; padding: 0; }
    table.rvtable tr.rv-ok, table.rvtable tr.rv-bad { background: #fff; }
    table.rvtable th, table.rvtable td { font-size: 10pt; padding: 5px 7px; }
    h2.rv-part { break-after: avoid; page-break-after: avoid; }
    table.rvtable { break-inside: auto; }
    table.rvtable tr { break-inside: avoid; page-break-inside: avoid; }
    .content { display: block; }
    .container { max-width: none; width: auto; margin: 0; padding: 0; }
    body.printing-all #app { display: none !important; }
    body.printing-all #printAll { display: block !important; }

    /* Бланк: один лист, только номера, короткие подписи и пустые поля */
    body.printing-blank .topbar,
    body.printing-blank #app { display: none !important; }
    body.printing-blank #blankSheet { display: block !important; }
    #blankSheet { color: #000; font-size: 9.4pt; line-height: 1.3; }
    #blankSheet .bl-head {
      font-size: 10pt; border-bottom: 1.5px solid #000; padding-bottom: 2mm; margin-bottom: 2mm;
    }
    #blankSheet .bl-score { float: right; letter-spacing: 0.5px; }
    #blankSheet .bl-part {
      font-weight: 700; font-size: 9pt; letter-spacing: 0.6px;
      margin: 3mm 0 1.5mm; border-bottom: 1px solid #000; padding-bottom: 0.8mm;
    }
    #blankSheet .bl-part span { float: right; font-weight: 400; }
    #blankSheet table.bl { width: 100%; border-collapse: collapse; }
    #blankSheet table.bl td, #blankSheet table.bl th { padding: 1.1mm 1.5mm; vertical-align: bottom; }
    #blankSheet .bl-no { width: 6mm; text-align: right; color: #444; }
    /* линейка продолжает строку вопроса и тянется до правого поля */
    #blankSheet .bl-q { display: flex; align-items: flex-end; gap: 2mm; }
    #blankSheet .bl-q > span { flex: 0 1 auto; }
    #blankSheet .bl-fill {
      flex: 1 0 32mm; border-bottom: 0.5px solid #000; height: 6mm;
      font-style: normal; padding-left: 1mm;
    }
    #blankSheet .bl-ex td { color: #555; font-style: italic; }
    #blankSheet .bl-ex .bl-fill { border-bottom-style: dotted; color: #555; }
    #blankSheet .bl-tab .bl-col {
      font-size: 8pt; font-weight: 700; text-align: center; width: 18mm;
      border-bottom: 1px solid #000; vertical-align: bottom; line-height: 1.1;
    }
    #blankSheet .bl-tab .bl-cell {
      border: 0.5px solid #000; height: 6mm; text-align: center; font-size: 10pt;
    }
    #blankSheet .bl-tab tr td.bl-lab { padding-right: 2mm; }
    #blankSheet table.bl tr { break-inside: avoid; page-break-inside: avoid; }

    .sheet {
      box-shadow: none; margin: 0 0 6mm;
      break-inside: avoid; page-break-inside: avoid;
    }
    .sheet + .sheet { break-before: page; page-break-before: always; }
    .sheet-body { padding: 8mm 7mm 6mm; }
    .sheet-foot { padding: 0 7mm 4mm; }

    /* таблицы целиком на странице, без горизонтальной прокрутки */
    .mwrap { overflow: visible; }
    table.mtable { min-width: 0; }
    table.mtable tbody th, table.mtable thead th:first-child { position: static; }
    .angelies { grid-template-columns: repeat(2, 1fr); }

    /* поля для ответа печатаются пустыми рамками */
    select { appearance: none; -webkit-appearance: none; background: #fff;
             border: 1px solid var(--box-line); width: 54px; height: 26px; color: transparent; }
    .xbox { border-color: var(--box-line); }
    label.cb input:checked + .xbox::after { content: '✓'; }

    /* размеры под бумагу */
    .keimeno { font-size: 11.5pt; line-height: 1.45; }
    .instr { font-size: 11pt; }
    .prosexte { font-size: 9.5pt; }
    .ph-row .ph { font-size: 10.5pt; padding: 6px 10px; }
    .ph-row { min-height: 0; }
    .angelia .angelia-text { font-size: 9.5pt; padding: 7px 10px; }
    table.mtable th, table.mtable td { padding: 5px 6px; font-size: 9.5pt; }
    table.tftable td.qcell { font-size: 10.5pt; }
    table.tftable td, table.tftable th { padding: 6px 8px; }
    .ktitle { font-size: 12pt; }
    .exam-name { font-size: 11pt; }
  }

  @media (max-width: 900px) {
    body { flex-direction: column; }
    .sidebar {
      width: 100%; max-width: 100%; height: auto; position: static;
      flex-direction: row; align-items: center; flex-wrap: wrap;
      padding: 10px 12px; gap: 6px; overflow-x: hidden;
    }
    .brand { padding: 0; flex: 1 1 auto; }
    .nav-label, .nav .nav-item.disabled { display: none; }
    /* строка разделов должна переноситься, иначе она растягивает всю страницу */
    .nav { flex-direction: row; flex-wrap: wrap; min-width: 0; }
    .nav-item { padding: 7px 9px; min-width: 0; }
    .nav-item .t { font-size: 14px; }
    .nav-item .s { display: none; }
    .side-bottom { margin: 0; padding: 0; display: flex; align-items: center; gap: 8px; }
    .home-link { width: auto; }
    .side-timer { border: none; padding: 0 6px; margin: 0; }
    .container { padding: 16px 8px 60px; }
    .sheet-body { padding: 16px 13px 18px; }
    .sheet-foot { padding: 0 13px 12px; }
    .exam-name { font-size: 13.5px; letter-spacing: 1.2px; }
    .exam-sub { font-size: 9.5px; letter-spacing: 1.2px; }
    .angelies { grid-template-columns: 1fr; }
    .angelia:last-child:nth-child(odd) { grid-column: auto; }
    .scroll-hint { display: block; font-size: 13.5px; }
    .keimeno p { text-indent: 0; }

    /* на телефоне всё крупнее: читать приходится по сорок минут подряд */
    .qno { font-size: 16px; letter-spacing: 2px; }
    .qpts { font-size: 13.5px; }
    .instr { font-size: 17.5px; text-align: left; }
    .prosexte { max-width: none; font-size: 15.5px; gap: 10px; }
    .prosexte .pt { text-align: left; padding-left: 10px; }
    .prosexte .pl { font-size: 14px; }
    .keimeno { font-size: 18.5px; line-height: 1.72; }
    .keimeno p { text-align: left; }
    .ktitle { font-size: 18.5px; }
    .starts .sn { font-size: 18px; width: 26px; }
    .starts .st { text-align: left; }
    .ph-row { min-height: 50px; }
    .ph-row .ph { font-size: 17px; padding: 12px 12px; }
    .ph-row .abox { width: 84px; }
    .angelia .angelia-name { font-size: 16px; }
    .angelia .angelia-text { font-size: 16px; line-height: 1.6; }
    table.mtable { min-width: 470px; }
    table.mtable tbody th { min-width: 138px; font-size: 15.5px; }
    table.mtable thead th { font-size: 13.5px; }
    table.tftable td.qcell { font-size: 17px; }
    table.tftable td.ncell { font-size: 17px; }
    table.tftable thead th { font-size: 13px; letter-spacing: 1px; }
    /* 16px и больше — иначе iOS Safari зумит страницу при фокусе на поле */
    select { font-size: 16.5px; padding: 7px 8px; }
    .xbox { width: 27px; height: 27px; line-height: 25px; font-size: 17px; }
    .blank { min-width: 92px; }
    button.btn { font-size: 16.5px; padding: 12px 22px; }
    .intro h1 { font-size: 21px; }
    .intro p { font-size: 16.5px; }
    .intro .meta { font-size: 15.5px; }
    .vcard h2 { font-size: 19px; }
    .vcard .sub, .vcard .best { font-size: 15px; }
    .footer-note { font-size: 14px; }
    .review { padding: 16px 12px 20px; }
    table.rvtable th, table.rvtable td { font-size: 15px; padding: 8px 7px; }
    .review-head h1 { font-size: 19px; }
  }
