/* Скопировано без правок из vet-clinic docs/design/core/core.html, блок <style> (строки 4-394), коммит vet-clinic c23915b; с D-UI-4 (волна 1а) сведено к шкале: правила — vet-clinic/docs/uireview/design-review.md. */
  :root{
    --ground:#F7F8F9; --surface:#FFFFFF; --sunken:#F1F3F5; --shell:#EAEDF0;
    --ink:#15181B; --ink-2:#3A4149; --muted:#5B646D; --faint:#8A939C;
    --line:#E2E6EA; --line-2:#CFD5DB;
    --accent:#0F766E; --accent-ink:#0B5A54; --accent-soft:#E4F1F0; --accent-line:#9CCFC9;
    --crit:#B3261E; --crit-soft:#FCECEA; --crit-line:#E9A9A3;
    --warn:#9A5B00; --warn-soft:#FBF0DF; --warn-line:#E3C089;
    --ok:#166534; --ok-soft:#E6F2E9; --ok-line:#A8D5B8;
    --info:#1A5FB4; --accent-on:#FFFFFF;
    --f-doc:"Golos Text",-apple-system,"Segoe UI",sans-serif;
    --f-ui:"Inter",-apple-system,"Segoe UI",Roboto,sans-serif;
    --f-mono:"JetBrains Mono","SF Mono",Consolas,monospace;
    /* шкала (D-UI-4): отступы, шрифт, скругления, высоты элементов управления */
    --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px;
    --fs-11:11px; --fs-12:12px; --fs-13:13px; --fs-15:15px; --fs-17:17px; --fs-20:20px; --fs-24:24px;
    --r-sm:6px; --r-md:10px; --r-pill:999px;
    --h-ctl:36px; --h-sm:32px; --h-tap:44px;
  }
  @media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
    --ground:#0E1013; --surface:#16191D; --sunken:#1D2126; --shell:#20252A;
    --ink:#EBEEF1; --ink-2:#C0C7CE; --muted:#949DA6; --faint:#6B747D;
    --line:#282D33; --line-2:#383F47;
    --accent:#5FD9CD; --accent-ink:#8AE6DC; --accent-soft:#10322F; --accent-line:#1E514B;
    --crit:#F2A9A2; --crit-soft:#341917; --crit-line:#5C2B26;
    --warn:#E8BC72; --warn-soft:#31250F; --warn-line:#54401A;
    --ok:#86D9A2; --ok-soft:#14291B; --ok-line:#245334;
    --info:#8DB9F0; --accent-on:#0B211F;
  }}
  :root[data-theme="dark"]{
    --ground:#0E1013; --surface:#16191D; --sunken:#1D2126; --shell:#20252A;
    --ink:#EBEEF1; --ink-2:#C0C7CE; --muted:#949DA6; --faint:#6B747D;
    --line:#282D33; --line-2:#383F47;
    --accent:#5FD9CD; --accent-ink:#8AE6DC; --accent-soft:#10322F; --accent-line:#1E514B;
    --crit:#F2A9A2; --crit-soft:#341917; --crit-line:#5C2B26;
    --warn:#E8BC72; --warn-soft:#31250F; --warn-line:#54401A;
    --ok:#86D9A2; --ok-soft:#14291B; --ok-line:#245334;
    --info:#8DB9F0; --accent-on:#0B211F;
  }

  *{box-sizing:border-box;}
  body{background:var(--ground);color:var(--ink);font-family:var(--f-ui);font-size:var(--fs-15);
       line-height:1.6;-webkit-font-smoothing:antialiased;}
  /* правило 6: ссылки одного цвета, посещённые тоже (цвета браузера нет); :where — чтобы не перебивать цвет кнопок-ссылок */
  a,:where(a:visited){color:var(--accent-ink);}
  .page{max-width:1200px;margin:0 auto;padding:var(--s5) var(--s4) var(--s6);}

  .head{display:flex;align-items:flex-end;gap:var(--s4);flex-wrap:wrap;margin-bottom:var(--s3);}
  .head h1{font-family:var(--f-doc);font-weight:700;font-size:var(--fs-24);margin:0;letter-spacing:-.4px;}
  .head p{margin:0;color:var(--muted);font-size:var(--fs-13);max-width:56ch;}
  .demo-tag{border:1px solid var(--warn-line);background:var(--warn-soft);color:var(--warn);
            border-radius:var(--r-sm);padding:var(--s1) var(--s2);font-size:var(--fs-12);font-weight:600;}

  /* маршруты */
  .routes{display:flex;gap:var(--s2);flex-wrap:wrap;margin-bottom:var(--s2);}
  .rt-btn{border:1px solid var(--line-2);background:var(--surface);border-radius:var(--r-sm);
          padding:var(--s2) var(--s3);font-size:var(--fs-13);font-family:inherit;color:var(--ink-2);cursor:pointer;}
  .rt-btn.on{background:var(--ink);color:var(--ground);border-color:var(--ink);font-weight:600;}
  .steps{display:flex;gap:0;flex-wrap:wrap;align-items:center;margin-bottom:var(--s4);
         background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s2);}
  .step{border:0;background:none;font-family:inherit;font-size:var(--fs-13);color:var(--muted);
        cursor:pointer;padding:var(--s1) var(--s2);border-radius:var(--r-sm);display:inline-flex;align-items:center;gap:var(--s2);}
  .step .n{font-variant-numeric:tabular-nums;font-size:var(--fs-11);border:1px solid var(--line-2);
           border-radius:var(--r-sm);padding:0 var(--s1);}
  .step.on{background:var(--accent-soft);color:var(--accent-ink);font-weight:600;}
  .step.on .n{border-color:var(--accent-line);}
  .step.done{color:var(--ok);}
  .arrow{color:var(--faint);font-size:var(--fs-12);padding:0 1px;}

  /* приложение: правило 10 — занимает окно целиком, без рамки, тени и скругления */
  .app{overflow:hidden;background:var(--surface);font-size:var(--fs-13);line-height:1.45;}
  .page>.app{border:1px solid var(--line-2);border-radius:var(--r-md);}  /* вход и приглашение: карточка по центру страницы, а не оболочка */
  .app-bar{background:var(--shell);border-bottom:1px solid var(--line-2);padding:0 var(--s3);
           height:44px;display:flex;align-items:center;gap:var(--s3);}
  .app-bar .brand{font-weight:600;min-width:0;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .app-bar .sp{flex:1;}
  .hsearch{position:relative;width:340px;}
  .hsearch .inp{min-height:var(--h-sm);padding:var(--s1) var(--s2);}
  /* P7 волна В (Н16) и D-UI-4 (правило 10): шапка на узком окне — три строки: место и поиск, затем кнопки */
  @media (max-width:600px){
    .app-bar{height:auto;min-height:44px;flex-wrap:wrap;row-gap:var(--s1);column-gap:var(--s2);padding:var(--s1) var(--s2);}
    .app-bar .brand{max-width:40%;flex:none;}
    .hsearch{width:auto;flex:1 1 140px;}
    .hsearch .inp{min-height:var(--h-ctl);}
    .app-bar .sp{display:none;}
    .app-bar .mini,.app-bar button{white-space:nowrap;}
    .app-bar .st{display:block;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;}
  }
  .hres{position:absolute;top:34px;left:0;width:640px;max-width:90vw;max-height:60vh;overflow:auto;z-index:20;
        background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-sm);padding:var(--s2);}
  .app-bar .st{border-radius:var(--r-sm);}
  .st{display:inline-flex;align-items:center;gap:var(--s2);border:1px solid var(--line-2);
      padding:var(--s1) var(--s2);background:var(--surface);color:var(--ink-2);}
  .st.w{border-color:var(--warn-line);background:var(--warn-soft);color:var(--warn);}
  .st.g{border-color:var(--ok-line);background:var(--ok-soft);color:var(--ok);}
  .st .num{font-variant-numeric:tabular-nums;font-size:var(--fs-12);}
  .app-body{display:grid;grid-template-columns:184px 1fr;min-height:calc(100vh - 44px);}
  .rail{background:var(--sunken);border-right:1px solid var(--line);padding:var(--s3) var(--s2);}
  .rail .cap{font-size:var(--fs-11);text-transform:uppercase;letter-spacing:.09em;color:var(--muted);
             padding:0 var(--s2);margin:0 0 var(--s2);}
  .rail button{display:block;width:100%;text-align:left;padding:var(--s2);border-radius:var(--r-sm);
               color:var(--ink-2);border:0;background:none;font-family:inherit;font-size:var(--fs-13);
               cursor:pointer;margin-bottom:1px;}
  .rail button:hover{background:var(--line);}
  .rail button.on{background:var(--accent-soft);color:var(--accent-ink);font-weight:600;}
  .rail .gap{height:var(--s3);}
  .rail-why{font-size:var(--fs-11);line-height:1.45;color:var(--muted);padding:0 var(--s2);margin:0 0 var(--s2);}
  .rail-why b{color:var(--ink-2);}
  .work-col{min-width:0;display:flex;flex-direction:column;}
  .work{min-width:0;display:flex;flex-direction:column;flex:1;}

  /* Заголовки внутри приложения (правило 2): общий стиль, отступы по шкале */
  :where(.app) h1{font-size:var(--fs-20);font-weight:700;line-height:1.25;margin:0 0 var(--s3);}
  :where(.app) h2{font-size:var(--fs-17);font-weight:600;line-height:1.25;margin:var(--s4) 0 var(--s3);}
  :where(.app) h3{font-size:var(--fs-15);font-weight:600;line-height:1.25;margin:var(--s4) 0 var(--s3);}
  :where(.app) h4{font-size:var(--fs-13);font-weight:600;line-height:1.25;margin:var(--s4) 0 var(--s3);}
  :where(.app) :is(h2,h3,h4):first-child{margin-top:0;}

  /* Вкладки (правило 7) — один вид, таблетки: места, ресепшен и аптека — одно место (117), журнал исследований — вкладка приёма (116). */
  .tabs{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;padding:var(--s3) var(--s4);
        border-bottom:1px solid var(--line);}
  .tabs:empty{display:none;}
  .tab{border:1px solid var(--line-2);border-radius:var(--r-pill);padding:var(--s2) var(--s4);font-size:var(--fs-13);
       color:var(--ink-2);background:var(--surface);cursor:pointer;font-family:inherit;
       min-height:var(--h-ctl);display:inline-flex;align-items:center;gap:var(--s2);}
  .tab:hover{background:var(--sunken);}
  .tab.on{background:var(--ink);color:var(--ground);border-color:var(--ink);font-weight:600;}
  .tab.cur{background:var(--ink);color:var(--ground);border-color:var(--ink);font-weight:600;}
  .tab-why{margin-left:auto;font-size:var(--fs-11);color:var(--muted);padding-bottom:var(--s2);}

  /* Значки (правило 8): одна основа для девяти семейств; тоны ok / warn / crit / accent / neutral — из палитры */
  .st,.tag,.pill,.badge,.bdg,.st-badge,.tab-n,.cnt,.chipb{border-radius:var(--r-pill);font-size:var(--fs-12);line-height:1.25;white-space:nowrap;}
  .tab-n,.cnt,.tab .cnt{font-size:var(--fs-11);}
  .tab-n{display:inline-block;min-width:18px;padding:1px var(--s1);margin-left:2px;background:var(--accent);color:var(--surface);text-align:center;font-weight:600;}
  .tab-n[hidden]{display:none;}

  .crumb{padding:var(--s3) var(--s4);border-bottom:1px solid var(--line);display:flex;align-items:center;
         gap:var(--s3);flex-wrap:wrap;}
  .crumb .who{font-weight:600;font-size:var(--fs-15);}
  .crumb .meta{color:var(--muted);font-size:var(--fs-13);}
  .crumb .rt{margin-left:auto;display:flex;gap:var(--s2);}
  .tag{border:1px solid var(--line-2);padding:1px var(--s2);color:var(--muted);}
  .back{border:0;background:none;color:var(--accent-ink);font-family:inherit;font-size:var(--fs-13);
        cursor:pointer;padding:0;font-weight:400;}

  .pad{padding:var(--s3) var(--s4);}
  .toolbar{padding:var(--s3) var(--s4);border-bottom:1px solid var(--line);display:flex;gap:var(--s2);
           align-items:center;flex-wrap:wrap;}
  .srch{flex:1;min-width:180px;border:1px solid var(--line-2);border-radius:var(--r-sm);padding:var(--s2) var(--s3);
        color:var(--ink-2);background:var(--surface);font-family:inherit;font-size:var(--fs-13);}

  table.tbl{width:100%;border-collapse:collapse;font-size:var(--fs-13);}
  .tbl th{text-align:left;font-weight:600;font-size:var(--fs-12);color:var(--muted);padding:var(--s2) var(--s4);
          border-bottom:1px solid var(--line-2);white-space:nowrap;}
  .tbl td{padding:var(--s3) var(--s4);border-bottom:1px solid var(--line);color:var(--ink-2);vertical-align:top;}
  .tbl tr:last-child td{border-bottom:0;}
  .tbl tr.clickable{cursor:pointer;}
  .tbl tr.clickable:hover td{background:var(--sunken);}
  .tbl td.n{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right;}
  .tbl th.n{text-align:right;}
  /* правило 3: время, даты, суммы — гарнитура интерфейса, цифры одной ширины; моноширинный — только коды (серийные номера оборудования) */
  .tbl td.mn{font-variant-numeric:tabular-nums;white-space:nowrap;}
  .mn{font-variant-numeric:tabular-nums;}
  /* серийный номер оборудования (журнал оборудования: eq-, u-, c-) — код, а не число: моноширинный, чтобы 0/O и 1/l различались; правило 3 допускает моноширинный только для кодов */
  tr[id^="eq-"]>td.mn,tr[id^="u-"]>td.mn,tr[id^="c-"] span.mn{font-family:var(--f-mono);}
  tr[id^="c-"] span.mn{white-space:nowrap;}
  #debtors td.d-debt{font-family:var(--f-mono);}  /* оставлено: p7wg_browser_integration_test.go:80 требует моноширинную сумму долга на 1366 (противоречит правилу 3, см. отчёт) */
  .tbl td b{color:var(--ink);font-weight:600;}
  .tbl td .s{display:block;font-size:var(--fs-12);color:var(--muted);margin-top:1px;}

  .stickybar{position:sticky;bottom:0;background:var(--ground);padding:var(--s3) 0;border-top:1px solid var(--line-2);}

  .pill{display:inline-flex;align-items:center;gap:var(--s1);padding:2px var(--s2);
        font-weight:600;border:1px solid transparent;}
  .pill.wait{background:var(--sunken);color:var(--muted);border-color:var(--line-2);}
  .pill.now{background:var(--accent-soft);color:var(--accent-ink);border-color:var(--accent-line);}
  .pill.hold{background:var(--crit-soft);color:var(--crit);border-color:var(--crit-line);}
  .pill.soft{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-line);}
  .badge.debt{display:inline-block;padding:2px var(--s2);font-weight:600;background:var(--crit-soft);color:var(--crit);border:1px solid var(--crit-line);}
  .pill.done{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-line);}

  /* Кнопки (правило 5): три вида (главная pri, обычная = sec, опасная dang), размеры --h-ctl / --h-sm / --h-tap; текст не подчёркивается */
  .btn,.mini{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);border-radius:var(--r-sm);
       min-height:var(--h-ctl);padding:var(--s1) var(--s3);font-size:var(--fs-13);font-weight:600;font-family:inherit;
       background:var(--surface);color:var(--ink-2);border:1px solid var(--line-2);
       cursor:pointer;transition:filter .15s ease;}
  .btn:hover:not(:disabled),.mini:hover:not(:disabled){filter:brightness(.96);}
  .btn.pri,.btn.pri.sec,.mini.pri{background:var(--accent);color:var(--accent-on);border-color:var(--accent);}
  .btn.dang,.btn.dang.sec,.mini.dang{background:var(--surface);color:var(--crit);border-color:var(--crit-line);}
  .btn.sm,.mini{min-height:var(--h-sm);padding:var(--s1) var(--s3);font-size:var(--fs-13);}
  .btn.big,.btn.lg{min-height:var(--h-tap);}
  .btn:disabled,.btn.pri:disabled,.btn.dang:disabled,.btn.pri.sec:disabled,.btn.dang.sec:disabled,.mini:disabled,.mini.pri:disabled,.mini.dang:disabled{background:var(--sunken);color:var(--muted);border-color:var(--line);cursor:not-allowed;}
  .btn,a.btn,.mini,.btn:hover,a.btn:hover,a.btn:visited,a.btn:focus,.mini:hover,a.mini:visited{text-decoration:none;}
  @media (max-width:600px){.app-bar .mini{padding-inline:var(--s2);font-size:var(--fs-12);font-weight:400;}} /* D-UI-19 доп. 1: шапка на узком экране остаётся компактной (TestDS_Scale правило 8) */
  .app-bar #qnet{margin:0 var(--s3);white-space:nowrap;font-size:var(--fs-12);}
  @media (max-width:600px){.app-bar #qnet{white-space:normal;flex-basis:100%;min-width:0;overflow-wrap:anywhere;}} /* P7 волна В (Н16): after the rule above, same specificity */
  #qnet[data-link="down"]{color:var(--crit);}
  #qlist:empty{display:none;}
  details.blk>summary{cursor:pointer;display:flex;list-style:none;align-items:center;gap:var(--s2);}
  details.blk>summary::-webkit-details-marker{display:none;}
  details.blk>summary::before{content:"▾";color:var(--muted);}
  details.blk:not([open])>summary::before{content:"▸";}
  details.blk>summary h3{display:inline;margin:0;}

  .field{margin-bottom:var(--s3);}
  .form-w{max-width:780px;}
  /* правило 11: подпись над полем — 13 px, вес 600 у всех; подпись при флажке или радиокнопке — обычный вес */
  :where(.app) label{font-size:var(--fs-13);font-weight:600;}
  :where(.app) label:has(>input[type=checkbox],>input[type=radio]){font-weight:400;}
  .field label{display:flex;align-items:baseline;gap:var(--s2);font-size:var(--fs-13);color:var(--ink-2);
               margin-bottom:var(--s1);font-weight:600;}
  .field label:has(> .inp){flex-direction:column;align-items:stretch;}
  .field label .tmpl{margin-left:auto;color:var(--accent-ink);font-weight:500;font-size:var(--fs-12);}
  .inp{border:1px solid var(--line-2);border-radius:var(--r-sm);padding:var(--s2) var(--s3);background:var(--surface);
       color:var(--ink-2);min-height:var(--h-ctl);width:100%;font-family:inherit;font-size:var(--fs-13);}
  .inp:focus,.inp:focus-visible,.srch:focus,.app select:focus,.app textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent);}
  .inp[aria-invalid="true"]{border-color:var(--crit);}
  textarea.inp{min-height:54px;resize:vertical;}
  .inp.muted{color:var(--muted);}
  .two{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3);}
  .three{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--s3);}

  ol.steps{display:grid;gap:var(--s2);padding-left:var(--s4);}
  ol.steps>li{min-height:44px;}
  .banner{border-radius:var(--r-sm);padding:var(--s3);display:flex;gap:var(--s3);align-items:flex-start;margin:0 0 var(--s3);}
  .banner.info{background:var(--accent-soft);border:1px solid var(--accent-line);}
  .banner.warn{background:var(--warn-soft);border:1px solid var(--warn-line);}
  .banner.crit{background:var(--crit-soft);border:1px solid var(--crit-line);}
  .banner.ok{background:var(--ok-soft);border:1px solid var(--ok-line);}
  .banner div > b:first-child,.banner td > b:first-child{display:block;margin-bottom:2px;font-size:var(--fs-13);}
  .banner .dup-cand > b:first-child{display:inline;margin:0;font-size:inherit;}
  .banner.info b{color:var(--accent-ink);} .banner.warn b{color:var(--warn);}
  .banner.crit b{color:var(--crit);} .banner.ok b{color:var(--ok);}
  .banner.emerg{position:sticky;top:0;z-index:5;flex-direction:column;gap:var(--s2);}
  .banner.emerg[hidden]{display:none;}
  .banner.emerg .erow{display:flex;gap:var(--s3);align-items:center;flex-wrap:wrap;}
  .banner.emerg .erow b{display:inline;margin:0;font-size:var(--fs-15);}
  .banner p{margin:0;font-size:var(--fs-13);color:var(--ink-2);}

  .pay{padding:var(--s3) var(--s4);display:flex;gap:var(--s2);flex-wrap:wrap;align-items:center;border-top:1px solid var(--line);}
  .paysum{margin-right:auto;font-size:var(--fs-13);color:var(--muted);}
  .paysum b{font-size:var(--fs-20);color:var(--ink);font-variant-numeric:tabular-nums;display:block;font-weight:600;}

  .pip{width:8px;height:8px;border-radius:50%;flex:none;display:inline-block;}
  .pip.open{background:var(--warn);} .pip.shut{background:var(--ok);}

  .axes{display:grid;grid-template-columns:1.25fr 1fr;gap:1px;background:var(--line);flex:1;}
  .ax{background:var(--surface);}
  .ax-h{padding:var(--s3) var(--s4);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:var(--s2);}
  .ax-h .lab{font-weight:600;font-size:var(--fs-13);}
  .ax-h .state{margin-left:auto;font-size:var(--fs-12);color:var(--muted);}
  .ax-b{padding:var(--s3) var(--s4);}
  .lines{border-top:1px solid var(--line);}
  .ln{display:grid;grid-template-columns:1fr auto;gap:var(--s3);padding:var(--s2) 0;border-bottom:1px solid var(--line);align-items:baseline;}
  .ln .sub{display:block;font-size:var(--fs-12);color:var(--muted);margin-top:1px;}
  .ln .amt{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--ink);}
  .ln.tot{border-bottom:0;padding-top:var(--s3);font-weight:600;}
  .ln.tot .amt{font-size:var(--fs-15);}
  .addline{display:flex;align-items:center;gap:var(--s2);color:var(--accent-ink);padding:var(--s2) 0;
           font-weight:500;cursor:pointer;border:0;background:none;font-family:inherit;font-size:var(--fs-13);}
  .peers{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--sunken);padding:var(--s2) var(--s3);margin-top:var(--s3);}
  .peers .t{font-weight:600;font-size:var(--fs-13);color:var(--ink-2);margin-bottom:var(--s2);}
  .peer{display:flex;align-items:center;gap:var(--s2);padding:var(--s1) 0;color:var(--ink-2);}
  .peer .r{margin-left:auto;font-size:var(--fs-12);color:var(--muted);}
  .hint{font-size:var(--fs-12);color:var(--muted);margin-top:var(--s2);line-height:1.45;}
  .hint-block{font-size:var(--fs-15);color:var(--ink-2);}
  .flag-low{color:var(--info);}
  .flag-high{color:var(--crit);}
  .critical{color:var(--crit);font-weight:700;background:var(--crit-soft);}
  tr.overdue>td{background:var(--warn-soft);}
  tr.overdue>td:first-child{box-shadow:inset 4px 0 0 var(--warn);}
  #lab-views a.on{font-weight:700;}
  .preview{max-width:320px;max-height:240px;display:block;border:1px solid var(--line-2);border-radius:var(--r-sm);}
  .file{margin:var(--s2) 0;}
  form[data-wait="1"]::after{content:"ждёт отправки";font-size:var(--fs-12);color:var(--muted);}

  .sect{display:grid;grid-template-columns:auto 1fr auto;gap:var(--s3);padding:var(--s3) var(--s4);
        border-bottom:1px solid var(--line);align-items:center;}
  .sect.hold{background:var(--crit-soft);}
  .sect .amt{font-variant-numeric:tabular-nums;text-align:right;}

  .scanbox{margin:var(--s4);border:2px solid var(--accent);border-radius:var(--r-sm);background:var(--surface);
           padding:var(--s3) var(--s4);box-shadow:0 0 0 4px var(--accent-soft);}
  .scanbox .lb{font-weight:600;color:var(--accent-ink);margin-bottom:var(--s2);display:flex;
               align-items:center;gap:var(--s2);flex-wrap:wrap;}
  .scanbox .alt{margin-left:auto;font-weight:400;font-size:var(--fs-12);color:var(--muted);}

  .tab .cnt{background:var(--crit);color:var(--surface);padding:0 var(--s1);
            font-weight:700;min-width:17px;text-align:center;}
  .hour{display:grid;grid-template-columns:60px 1fr;border-top:1px solid var(--line);}
  .hour .hh{font-size:var(--fs-12);color:var(--muted);padding:var(--s3) 0 var(--s3) var(--s4);
            font-variant-numeric:tabular-nums;}
  .hour.now{background:var(--accent-soft);}
  .hour.now .hh{color:var(--accent-ink);font-weight:700;}
  .hour.late .hh{color:var(--crit);}
  .jobs{padding:var(--s2) var(--s4) var(--s3) 0;}
  .job{display:flex;align-items:center;gap:var(--s3);padding:var(--s2) 0;}
  .job + .job{border-top:1px dashed var(--line-2);}
  .job .txt{flex:1;min-width:0;}
  .job .p{font-weight:600;}
  .job .d{font-size:var(--fs-13);color:var(--muted);}
  .job .dn{font-size:var(--fs-12);color:var(--ok);display:flex;align-items:center;gap:var(--s1);}
  .tick{width:44px;height:44px;border:1.5px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);
        flex:none;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--muted);}
  .tick:hover{border-color:var(--accent);}
  .tick.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink);}
  .flag{font-size:var(--fs-12);font-weight:700;color:var(--crit);}

  .chk{display:flex;flex-wrap:wrap;gap:var(--s2);margin:var(--s2) 0 var(--s3);}
  .chk button{border:1.5px solid var(--line-2);background:var(--surface);border-radius:var(--r-sm);
              padding:var(--s2) var(--s3);font-size:var(--fs-13);color:var(--ink-2);cursor:pointer;font-family:inherit;
              min-height:40px;display:inline-flex;align-items:center;gap:var(--s2);}
  .chk button.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink);font-weight:600;}
  .drop{border:1.5px dashed var(--line-2);border-radius:var(--r-sm);padding:var(--s5);text-align:center;
        color:var(--muted);background:var(--sunken);}
  .drop b{display:block;color:var(--ink-2);margin-bottom:var(--s1);}
  .sw{display:flex;align-items:center;gap:var(--s3);padding:var(--s3) 0;border-bottom:1px solid var(--line);}
  .sw:last-child{border-bottom:0;}
  .sw .tx{flex:1;} .sw .tx b{display:block;font-weight:600;color:var(--ink);}
  .sw .tx span{font-size:var(--fs-13);color:var(--muted);}
  .knob{width:38px;height:22px;border-radius:var(--r-pill);background:var(--line-2);flex:none;position:relative;cursor:pointer;}
  .knob::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--surface);transition:left .18s ease;}
  .knob.on{background:var(--accent);} .knob.on::after{left:18px;}

  .empty{font-size:var(--fs-13);color:var(--muted);margin:0 0 var(--s3);}

  #toast{position:fixed;left:50%;bottom:var(--s5);transform:translateX(-50%);background:var(--ink);
         color:var(--ground);padding:var(--s3) var(--s4);border-radius:var(--r-sm);font-size:var(--fs-13);font-weight:500;
         box-shadow:0 8px 26px -8px rgba(0,0,0,.4);opacity:0;pointer-events:none;
         transition:opacity .22s ease,transform .22s ease;z-index:50;max-width:min(90vw,460px);}
  #toast.show{opacity:1;transform:translateX(-50%) translateY(-4px);}
  @media (prefers-reduced-motion:reduce){#toast,.knob::after{transition:none;}}

  svg.ic{width:15px;height:15px;flex:none;stroke:currentColor;fill:none;stroke-width:1.9;
         stroke-linecap:round;stroke-linejoin:round;}
  svg.ic.lg{width:22px;height:22px;}
  button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
  @media (max-width:900px){.app-body{grid-template-columns:1fr;}.rail{display:none;}
    .axes,.two,.three{grid-template-columns:1fr;}}

  /* ─── С1: боковая колонка «что происходит физически» ─── */
  .side{background:var(--sunken);border-left:1px solid var(--line);padding:var(--s3) var(--s3) var(--s4);
        display:flex;flex-direction:column;gap:var(--s3);}
  .side .cap{font-size:var(--fs-11);text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:0 0 var(--s1);}
  .card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s3);}
  .card .row{display:grid;grid-template-columns:64px 1fr;gap:var(--s2);padding:var(--s1) 0;
             border-bottom:1px solid var(--line);font-size:var(--fs-12);line-height:1.4;}
  .card .row:last-child{border-bottom:0;}
  .card .row .k{color:var(--muted);font-size:var(--fs-11);}
  .card .row .vv{color:var(--ink-2);}
  .card .row.gap-none{color:var(--crit);}

  /* ─── бейджи достоверности ─── */
  .bdg{display:inline-flex;align-items:center;gap:var(--s1);padding:1px var(--s2);
       font-weight:700;border:1px solid transparent;
       letter-spacing:.02em;vertical-align:middle;}
  .bdg.sim{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-line);}
  .bdg.out{background:var(--sunken);color:var(--muted);border-color:var(--line-2);}
  .bdg.no{background:var(--crit-soft);color:var(--crit);border-color:var(--crit-line);}
  .bdg.uc{background:var(--surface);color:var(--muted);border-color:var(--line-2);
          font-family:var(--f-mono);font-weight:500;}  /* идентификатор UC — код */
  /* метка изменений на шаге (D-139): «новое» / «исправлено по вашему ответу» */
  .chg{display:inline-flex;align-items:center;border-radius:var(--r-sm);padding:1px var(--s1);
       font-size:var(--fs-11);font-weight:700;border:1px solid transparent;vertical-align:middle;}
  .chg.new{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-line);}
  .chg.fix{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-line);}
  /* периметр: что войдёт в MVP, а что отложено (Processes v3.0 §1.4) */
  .bdg.mvp{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-line);}
  .bdg.half{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-line);}
  .bdg.p1{background:var(--sunken);color:var(--muted);border-color:var(--line-2);}
  .bdg.ov{background:var(--crit-soft);color:var(--crit);border-color:var(--crit-line);}
  /* требование, которого партнёр не называл — спрашиваем прямо */
  .unsourced{border:1px dashed var(--warn-line);background:var(--warn-soft);border-radius:var(--r-sm);
             padding:var(--s2) var(--s3);margin:var(--s3) 0;font-size:var(--fs-13);line-height:1.5;color:var(--ink-2);}
  .unsourced b{color:var(--warn);}
  /* Плашка раунда 4: предположение из Processes v4.0 §1.5, а не «мы ввели сами». */
  .unsourced.probe{border-color:var(--accent-line);background:var(--accent-soft);}
  .unsourced.probe b{color:var(--accent-ink);}
  .unsourced .ask{display:block;margin-top:var(--s1);color:var(--muted);font-style:italic;}
  /* вопрос задаётся по ходу шага, а не анкетой в конце: в прошлом раунде
     итоговая анкета собрала 0 ответов из 20 */
  .note.ask-here{border:1px solid var(--accent-line);background:var(--accent-soft);
                 border-radius:var(--r-sm);padding:var(--s2);}
  .note.ask-here .cap{color:var(--accent-ink);}
  .note.ask-here .ask-q{margin:0 0 var(--s2);font-size:var(--fs-13);line-height:1.5;color:var(--ink-2);font-weight:600;}
  .note.ask-here textarea{min-height:52px;}

  /* ─── полоса внешнего устройства (сырой вывод устройства — код, остаётся моноширинным) ─── */
  .dev{border:1px solid var(--line-2);border-left:3px solid var(--line-2);border-radius:var(--r-sm);
       background:var(--sunken);padding:var(--s3);margin:var(--s3) 0;font-family:var(--f-mono);font-size:var(--fs-12);}
  .dev .dh{display:flex;align-items:center;gap:var(--s2);margin-bottom:var(--s2);font-family:var(--f-ui);
           font-size:var(--fs-12);font-weight:600;color:var(--ink-2);}
  .dev .dh .sp{flex:1;}
  .dev pre{margin:0;white-space:pre-wrap;color:var(--ink-2);font-size:var(--fs-12);line-height:1.5;}
  .dev.no{border-left-color:var(--crit);background:var(--crit-soft);}
  .dev.sim{border-left-color:var(--warn);}

  /* ─── панель требований по «?» ─── */
  .spec{background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--r-sm);
        padding:var(--s3);margin:0 var(--s4) var(--s3);font-size:var(--fs-13);color:var(--ink-2);}
  .spec b{display:block;color:var(--accent-ink);margin-bottom:var(--s1);font-size:var(--fs-13);}
  .spec q{display:block;font-style:italic;margin-top:var(--s1);color:var(--muted);}
  .qbtn{border:1px solid var(--line-2);background:var(--surface);color:var(--muted);
        width:22px;height:22px;border-radius:50%;font-family:inherit;font-size:var(--fs-12);font-weight:700;
        cursor:pointer;line-height:1;padding:0;}
  .qbtn.on{background:var(--accent);border-color:var(--accent);color:var(--accent-on);}

  /* ─── развилки ─── */
  .branch{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);
          padding:var(--s2) var(--s3);margin:0 0 var(--s3);}
  .branch .bt{font-size:var(--fs-11);text-transform:uppercase;letter-spacing:.07em;color:var(--muted);
              margin-bottom:var(--s2);display:flex;align-items:center;gap:var(--s2);}
  .branch .opts{display:flex;gap:var(--s2);flex-wrap:wrap;}
  .branch .opts button{border:1.5px solid var(--line-2);background:var(--surface);border-radius:var(--r-sm);
        padding:var(--s2) var(--s3);font-size:var(--fs-13);color:var(--ink-2);cursor:pointer;font-family:inherit;}
  .branch .opts button.on{border-color:var(--accent);background:var(--accent-soft);
        color:var(--accent-ink);font-weight:600;}

  /* ─── аудит ─── */
  .aud{display:grid;grid-template-columns:78px 1fr;gap:var(--s3);padding:var(--s3) var(--s4);
       border-bottom:1px solid var(--line);font-size:var(--fs-13);}
  .aud .tm{font-variant-numeric:tabular-nums;font-size:var(--fs-12);color:var(--muted);}
  .aud b{display:block;color:var(--ink);font-weight:600;}
  .aud span{color:var(--muted);}

  /* ─── замечания ─── */
  .note textarea{width:100%;border:1px solid var(--line-2);border-radius:var(--r-sm);padding:var(--s2);
       background:var(--surface);color:var(--ink-2);font-family:inherit;font-size:var(--fs-12);
       min-height:60px;resize:vertical;}
  .note .cnt{font-size:var(--fs-11);color:var(--muted);margin-top:var(--s1);}
  dialog{border:1px solid var(--line-2);border-radius:var(--r-md);background:var(--surface);color:var(--ink);
         padding:0;max-width:min(94vw,620px);width:100%;box-shadow:0 20px 60px -20px rgba(0,0,0,.5);}
  dialog::backdrop{background:rgba(0,0,0,.35);}
  dialog textarea{width:100%;min-height:280px;border:1px solid var(--line-2);border-radius:var(--r-sm);
       padding:var(--s3);font-size:var(--fs-12);background:var(--sunken);
       color:var(--ink-2);resize:vertical;}

  /* ─── итоговые вопросы ─── */
  .qs{display:grid;gap:var(--s3);}
  .qs .q{border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s3);background:var(--surface);}
  .qs .q label{display:block;font-weight:600;font-size:var(--fs-13);margin-bottom:var(--s2);color:var(--ink);}

  .lead{color:var(--muted);font-size:var(--fs-13);margin:0 0 var(--s3);}
  table.kv{border-collapse:collapse;font-size:var(--fs-13);margin:0 0 var(--s3);}
  .kv th{text-align:left;font-weight:400;color:var(--muted);padding:var(--s1) var(--s4) var(--s1) 0;white-space:nowrap;vertical-align:top;}
  .kv td{padding:var(--s1) 0;color:var(--ink-2);vertical-align:top;}
  .flags{display:flex;gap:var(--s2);flex-wrap:wrap;margin-top:var(--s2);}
  .share{font-family:var(--f-mono);font-size:var(--fs-12);color:var(--muted);}  /* ссылка-идентификатор — код */
  @media (max-width:900px){.app-body{grid-template-columns:1fr;}}

  /* ─── ядро: замороженный экран и выпадающий выбор пользователя ─── */
  .work.frozen{position:relative;}
  .work.frozen .app,.work.frozen table,.work.frozen .pad,.work.frozen .toolbar,
  .work.frozen .tabs,.work.frozen .crumb{filter:saturate(.75);}
  .work.frozen button:not([data-act]),.work.frozen .tab,.work.frozen .tick,
  .work.frozen .knob,.work.frozen .srch{cursor:help;}
  .app-bar select{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);
    color:var(--ink);font-family:inherit;font-size:var(--fs-12);padding:var(--s1) var(--s2);max-width:230px;}
  .app-bar label{font-size:var(--fs-12);}
  .rail button .tag{opacity:.7;}
  @media (pointer:coarse){.btn,.btn.sm,.mini{min-height:var(--h-tap)}}
  /* правило 5: на узком окне любая кнопка и ссылка-кнопка — не ниже 44 px */
  @media (max-width:600px){.btn,.btn.sm,a.btn,.mini,button:not(.qbtn),.inp{min-height:var(--h-tap);}}
/* P4 шаг 7 (D-367): на узком окне итог и «В оплату» - в .bar.narrow, карточка итога в колонке скрыта (на широком .bar.narrow скрыт правилом stand.css) */
@container not (min-width:780px){#sale-side #sale-sum{display:none;}} /* exactly the complement of stand.css (min-width:780px): no width shows neither */
/* P19 шаг 6 (D-387): «Передаём в кассу…» видно только пока идёт запрос «В оплату» (htmx ставит htmx-request на форму), строка состояния в нижней панели без внешнего отступа */
#sale-sum .pay-going,#sale-bar .pay-going{display:none;}
#sale-sum form.htmx-request .pay-going,#sale-bar form.htmx-request .pay-going{display:inline;}
#sale-bar .banner{margin:0;}
#rec-items td{min-width:0;}
#rec-items td[data-l="Позиция"]{overflow-wrap:anywhere;}
/* P19 волна В (D-UI-2): Н11 - кличка и врач в «Рекомендациях врачей» не уже слова (anywhere сужал колонку до буквы; break-word переносит только в карточке); Н13 - на узком (условие .bar.narrow) поле скана выше рекомендаций, разметка прежняя */
#rec-items td[data-l="Рекомендовано для"],#rec-items td[data-l="Врач"]{overflow-wrap:break-word;}
@container not (min-width:780px){#sale-main>#scan-form{order:-1;}}
/* P4 шаг 2а (D-367): приёмка — сводка строки в одну строку с переносом, бейдж кодов, правая часть нижней панели */
.rc-line .rc-sum{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s1) var(--s1);}
.rc-line .rc-edit{margin-top:var(--s1);}
/* P19 шаг 1: обзвон - строка списка - details; в закрытой строке всё для звонка, в открытой - прививка и действия */
details.cbrow{border-top:1px solid var(--line-2);}
details.cbrow>summary{cursor:pointer;display:flex;flex-wrap:wrap;align-items:center;gap:var(--s1) var(--s3);list-style:none;padding:var(--s2) 0;min-height:36px;}
details.cbrow>summary::-webkit-details-marker{display:none;}
details.cbrow>summary::before{content:"▸";color:var(--muted);}
details.cbrow[open]>summary::before{content:"▾";}
details.cbrow .cbown{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--s1) var(--s2);}
details.cbrow .cbpet,details.cbrow .cbown{overflow-wrap:anywhere;min-width:0;}
details.cbrow .cbpet a{color:inherit;text-decoration:none;}
details.cbrow .cbpet a:hover{text-decoration:underline;}
details.cbrow .cbbody{padding:0 0 var(--s2) var(--s4);}
details.cbrow .cbbody p{margin:0 0 var(--s2);}
details.cbrow .cbact{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center;}
details.cbrow .cbact form{margin:0;}
@media (pointer:coarse){details.cbrow>summary{min-height:44px;}}
.badge.codes{display:inline-block;padding:1px var(--s2);font-weight:600;background:var(--crit-soft);color:var(--crit);border:1px solid var(--crit-line);}
.badge.codes.ok{background:var(--sunken);color:var(--ink-2);border-color:var(--line-2);}
#rc-bar .rc-act{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;justify-content:flex-end;}
#rc-bar .hint{margin-top:0;}
/* P4 шаг 4 (D-367), правки проверки: #batches умещается в 360 px без внутренней прокрутки; зона нажатия «подробнее» не меньше 44 px */
#batches details summary{display:flex;align-items:center;gap:var(--s1);min-height:44px;margin:0 0 calc(-1*var(--s3));cursor:pointer;list-style:none;color:var(--accent-ink);}
#batches details summary::-webkit-details-marker{display:none;}
#batches details summary::before{content:"▸";}
#batches details[open] summary::before{content:"▾";}
#batches td>.hint{margin:0;}
/* P4 шаг 5 (D-367): в .bar перемещения предупреждение о смене режима и «Понимаю» стоят рядом с «Провести» */
.bar #tr-post{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;}
.bar #tr-post .chkline{margin:0;}
/* P19 шаг 3 (D-386): «Моё оборудование» карточками, «По пунктам» панелью; журнал оборудования - фильтры в строку */
.eq-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(340px,100%),1fr));gap:var(--s3);margin-bottom:var(--s3)}
.eq-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s3) var(--s3);min-width:0;overflow-wrap:break-word}
.eq-today{margin:var(--s1) 0 var(--s2);font-size:var(--fs-13)}
.eq-today .ok{color:var(--ok)}
.eq-today .bad{color:var(--crit);font-weight:600}
.eq-today .was{color:var(--muted)}
.eq-acts{display:flex;flex-wrap:wrap;gap:var(--s2)}
.eq-acts form{display:inline;margin:0}
.eq-acts .btn{white-space:normal}
.eq-pts>summary{min-height:44px;display:inline-flex;align-items:center;gap:var(--s1);cursor:pointer;list-style:none}
.eq-pts>summary::-webkit-details-marker{display:none}
.eq-pts>summary::before{content:"▸";color:var(--muted)}
.eq-pts[open]>summary::before{content:"▾"}
.chk-panel{margin-top:var(--s2)}
.chk-form .chkline{margin:0;min-height:44px}
.chk-form .chkline label{flex:1;min-height:44px;display:flex;align-items:center;margin:0;cursor:pointer}
.chk-form .chkline input{width:22px;height:22px;flex:none;margin:0}
#ej-filter{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--s2) var(--s3);margin-bottom:var(--s3)}
#ej-filter label{display:flex;flex-direction:column;gap:var(--s1);min-width:0;max-width:100%}
#ej-filter .inp{width:auto;max-width:100%}
/* P4 волна А (К1, К2, D-378): форма документа с несохранённой правкой, на которую указала «Провести» */
form.unsaved{outline:2px solid var(--crit);outline-offset:3px;border-radius:var(--r-sm);}
/* P4 волна В (Н10): журнал сроков на узком окне - строка карточкой, подпись колонки из data-l */
@media (max-width:600px){
  .tbl.exp-tbl{overflow:visible;max-width:100%;}
  .tbl.exp-tbl,.tbl.exp-tbl>tbody,.tbl.exp-tbl tr,.tbl.exp-tbl td{display:block;width:auto;}
  .tbl.exp-tbl tr:has(>th){display:none;}
  .tbl.exp-tbl tr{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s2) var(--s3);margin-bottom:var(--s2);}
  .tbl.exp-tbl td{border:0;padding:var(--s1) 0;}
  .tbl.exp-tbl td:not([data-l=""])::before{content:attr(data-l) ": ";color:var(--muted);font-size:var(--fs-12);}
  .tbl.exp-tbl td[data-l="Позиция"]::before{content:none;}
  .tbl.exp-tbl details.wo summary{min-height:44px;display:flex;align-items:center;}
  .tbl.exp-tbl details.wo .inp{width:100%;}
  .tbl.exp-tbl details.wo .btn{width:100%;}
}
/* P4 волна В (Н14): рецептурная позиция без покупателя - строка текстом вместо формы */
.rx-need{margin:0 0 var(--s1);}

/* P7 шаг 1 (D-381): «Ещё ▾» во вкладках кассы и полоса кассы */
#tabs-more .menu{left:0;right:auto;}
.cash-strip{padding:var(--s1) var(--s3) 0;font-size:var(--fs-13);color:var(--ink-2);}
.cash-strip .cs-row{margin:0;overflow-wrap:break-word;}
.cash-strip .cs-link.ok{color:var(--ok);} .cash-strip .cs-link.wait{color:var(--warn);} .cash-strip .cs-link.off{color:var(--crit);font-weight:600;}

/* P7 шаг 7 (D-381): «Ящик» - сегменты «Внести размен | Сдать в сейф | Расход»; радиокнопки вне форм, видна одна форма, без сети */
/* Сегмент (правило 7): выбор внутри страницы — период, разрезы выручки, «Ресепшен / Зоомагазин», «Внести | Вернуть»; квадратные соседние кнопки, выбранная — --accent-soft */
.seg,.pseg,#work-tabs{display:flex;flex-wrap:wrap;gap:0;margin:var(--s2) 0 var(--s3);padding:0;border:0;}
.seg input{position:absolute;opacity:0;width:1px;height:1px;}
.seg label,.pseg a,#work-tabs .tab{border:1px solid var(--line-2);background:var(--surface);border-radius:0;padding:var(--s1) var(--s3);min-height:var(--h-ctl);
  font-size:var(--fs-13);font-weight:400;color:var(--ink-2);cursor:pointer;display:inline-flex;align-items:center;text-decoration:none;}
.seg label:not(:first-of-type),.pseg a+a,#work-tabs .tab+.tab{margin-left:-1px;}
.seg label:first-of-type,.pseg a:first-child,#work-tabs .tab:first-child{border-radius:var(--r-sm) 0 0 var(--r-sm);}
.seg label:last-of-type,.pseg a:last-child,#work-tabs .tab:last-child{border-radius:0 var(--r-sm) var(--r-sm) 0;}
.seg label:only-of-type,.pseg a:only-child,#work-tabs .tab:only-child{border-radius:var(--r-sm);}
.seg input:checked+label,.pseg a[aria-current="true"],#work-tabs .tab.cur{background:var(--accent-soft);color:var(--accent-ink);border-color:var(--accent-line);font-weight:600;position:relative;}
.seg input:focus-visible+label{outline:2px solid var(--accent);}
@media (max-width:600px){.seg label,.pseg a,#work-tabs .tab{min-height:var(--h-tap);}}
.desk:has(.seg input[value="change"]:checked) .segf:not([data-seg="change"]),
.desk:has(.seg input[value="collect"]:checked) .segf:not([data-seg="collect"]),
.desk:has(.seg input[value="expense"]:checked) .segf:not([data-seg="expense"]){display:none;}
.desk{overflow-wrap:break-word;}

/* P7 шаг 9 (D-381): возврат - кто решает; журнал должников - итог и строки карточками на узком окне */
#refund-wait p{margin:var(--s1) 0 0;}
#refund-wait{overflow-wrap:break-word;}
#debtors-sum{margin:0 0 var(--s2);font-size:var(--fs-13);}
.d-need{color:var(--warn);font-weight:600;}
@media (max-width:600px){
  #debtors,#debtors>tbody,#debtors>tbody>tr,#debtors>tbody>tr>td{display:block;width:auto;}
  #debtors>tbody>tr:has(>th){display:none;}
  #debtors>tbody>tr{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s2) var(--s3);margin-bottom:var(--s2);}
  #debtors>tbody>tr>td{border:0;padding:var(--s1) 0;white-space:normal;}
  #debtors>tbody>tr>td.d-owner,#debtors>tbody>tr>td.d-patient{overflow-wrap:anywhere;}
  #debtors td.d-patient::before{content:"Пациент: ";color:var(--muted);}
  #debtors td.d-number::before{content:"Счёт: ";color:var(--muted);}
  #debtors td.d-date::before{content:"Ушёл не оплатив: ";color:var(--muted);}
  #debtors td.d-debt::before{content:"Долг: ";color:var(--muted);}
  #debtors td.d-call::before{content:"Звонок руководителю: ";color:var(--muted);}
  #debtors td.mn{font-family:inherit;font-size:inherit;color:inherit;}
  #debtors td.d-pay .btn{width:100%;min-height:44px;}
  #debtors .tbl td,#debtors .tbl th{padding:var(--s1) var(--s1);white-space:normal;}
}

/* P7 шаг 4а (D-381): колонка сумм оплаты */
#pay-form .ln[hidden],#pay-term[hidden]{display:none;}          /* .ln — grid, без этого hidden не прячет */
#pay-adv .ln,#pay-net{border-bottom:0;}
#pay-adv-rule{margin:var(--s1) 0 var(--s2);font-size:var(--fs-13);color:var(--ink-2);}
#pay-term{margin:calc(-1*var(--s1)) 0 var(--s3);padding:var(--s2) var(--s2);border:1px solid var(--accent-line);border-radius:var(--r-sm);background:var(--accent-soft);}
#pay-term p{margin:0 0 var(--s1);}
#pay-card{overflow-wrap:break-word;}
@container not (min-width:780px){#pay-form button[type=submit]{display:none;}}   /* на узком — только копия в .bar.narrow (чек-лист п. 56) */

/* P7 шаг 4б (D-381): плашка долга, закрывающий чек */
#debt-mark{overflow-wrap:break-word;}
#debt-mark form.inl{display:inline-block;margin:var(--s1) 0 0;}
#pay-closing{border-bottom:0;}
#pay-closing-why{margin:var(--s1) 0 var(--s3);font-size:var(--fs-13);color:var(--ink-2);}

/* P7 шаг 5 (D-381): скидка панелью */
#disc-panel:empty{display:none;}
#disc-panel #disc-box{margin:var(--s3) 0;padding:var(--s2) var(--s3);border:1px solid var(--accent-line);border-radius:var(--r-sm);background:var(--accent-soft);overflow-wrap:break-word;}
#disc-limit{margin:var(--s1) 0 var(--s2);}
#disc-why{margin:0 0 var(--s2);}
td.disc-act{white-space:nowrap;}
#pay-lines{overflow-x:auto;}
#pay-lines td:first-child{overflow-wrap:anywhere;}
#pay-lines td form.inl{margin-top:var(--s1);}
/* P7 волна В (Н5): строки счёта на узком окне - карточкой; подписи по номеру ячейки, разметка строк не меняется */
@media (max-width:600px){
  #pay-lines{overflow-x:visible;}
  #pay-lines table.tbl{overflow:visible;max-width:100%;}
  #pay-lines table.tbl,#pay-lines table.tbl>tbody,#pay-lines table.tbl tr,#pay-lines table.tbl td{display:block;width:auto;}
  #pay-lines table.tbl tr:has(>th){display:none;}
  #pay-lines table.tbl tr{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--s2) var(--s3);margin-bottom:var(--s2);}
  #pay-lines table.tbl td{border:0;padding:var(--s1) 0;}
  #pay-lines table.tbl td:first-child{padding-right:calc(var(--s6) + var(--s4));}
  #pay-lines table.tbl td:nth-child(2)::before{content:"Количество: ";color:var(--muted);font-size:var(--fs-12);}
  #pay-lines table.tbl td:nth-child(3)::before{content:"Цена: ";color:var(--muted);font-size:var(--fs-12);}
  #pay-lines table.tbl td:nth-child(4)::before{content:"Сумма: ";color:var(--muted);font-size:var(--fs-12);}
  #pay-lines table.tbl td:nth-child(5){font-weight:600;}
  #pay-lines table.tbl td:nth-child(5)::before{content:"К оплате: ";color:var(--muted);font-size:var(--fs-12);font-weight:400;}
  #pay-lines table.tbl td.disc-act{position:absolute;top:6px;right:8px;padding:0;}
  #pay-lines table.tbl td.n,#rev-doctors td.n{text-align:left;}
}

/* P7 шаг 2 (D-381): «Смена» — размен под открытой сменой, расхождение закрытых смен */
.cs-ws{margin-bottom:var(--s4);overflow-wrap:break-word;}
.chg-offer{align-items:flex-end;}
.chg-offer .field{flex:1 1 140px;max-width:220px;}
.tbl td.sdiff.bad{color:var(--crit);font-weight:600;}

/* P7 шаг 6 (D-381): «Аванс» — «Внести | Вернуть», видна одна форма; шаг терминала — при сумме по карте / способе «На карту» */
#adv{overflow-wrap:break-word;}
#adv:has(#adv-seg-in:checked) #adv-out,#adv:has(#adv-seg-out:checked) #adv-in{display:none;}
#adv-in:has(#in-card:placeholder-shown) #in-term{display:none;}
#adv-out:has(#out-m-cash:checked) #out-term{display:none;}
#in-term p,#out-term p,#adv-out-cond p{margin:0 0 var(--s1);}
#adv-last{align-items:center;}

/* P7 шаг 8 (D-381): закрытие смены - строки схождения под полями, подробный отчёт свёрнут и не растягивает страницу */
#close-sum{overflow-wrap:break-word;}
#close-rep-body{overflow-x:auto;}
.cdiff{margin:calc(-1*var(--s1)) 0 var(--s3);font-size:var(--fs-13);}
.cdiff:empty{display:none;}
.cdiff[data-state="ok"]{color:var(--ok);}
.cdiff[data-state="diff"],.cdiff[data-state="bad"]{color:var(--crit);font-weight:600;}
#close-form{overflow-wrap:break-word;}

/* P19 шаг 7 (D-386): главная руководителя */
#home-sum{display:flex;flex-direction:column;gap:var(--s3);margin-bottom:var(--s3);min-width:0;}
#home-sum section{min-width:0;overflow-wrap:break-word;}
#home-sum .card{padding:var(--s3) var(--s3);}
.home-launch{list-style:none;margin:0 0 var(--s2);padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s1);}
@media (min-width:601px){.home-launch{grid-template-columns:repeat(2,minmax(0,1fr));}}
.home-launch li.done{color:var(--ok);}
.home-jr-btns{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s2);}
#home-attn .banner{display:flex;justify-content:space-between;gap:var(--s2);overflow-wrap:break-word;}
#home-attn .banner>div{min-width:0;}
#home-attn .banner>a{flex:none;white-space:nowrap;}
#home-attn .banner>div>b{display:inline;margin:0;}
#home-others ul{list-style:none;margin:var(--s1) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--s1);}
#home-others li{overflow-wrap:break-word;}
details#home-sys{margin-top:var(--s3);}

/* D-UI-4 волна 1а: правило 12 — карточки в столбик (касса «К оплате / Ждём врача / Долг», правая колонка ресепшена) не слипаются */
section[id^="qg-"]+section[id^="qg-"],#rec-money>section+section{margin-top:var(--s3);}
/* правило 10: полоса вкладок на узком окне — одна строка с прокруткой и подсказкой у края; вкладки с «Ещё ▾» переносятся (меню раскрывается из полосы) */
@media (max-width:600px){
  .tabs:not(:has(#tabs-more)){flex-wrap:nowrap;overflow-x:auto;padding-right:var(--s5);-webkit-mask-image:linear-gradient(to right,black calc(100% - var(--s5)),transparent);mask-image:linear-gradient(to right,black calc(100% - var(--s5)),transparent);}
  .tabs:not(:has(#tabs-more))>*{flex:none;}
}
/* Волна Б1: деньги (D-UI-12) */
.btn,a.btn,.mini{white-space:nowrap;}
@media (max-width:600px){#batches details .mini{padding-left:var(--s1);padding-right:var(--s1);}} /* nowrap кнопки „Списать…“ не должен раздвигать таблицу партий шире 360 px (P4, D-367) */
/* Волна В1: таблица шире места (D-UI-15) */
.tbl,.tscroll{background-repeat:no-repeat;background-attachment:local,local,scroll,scroll;background-position:left center,right center,left center,right center;background-size:24px 100%,24px 100%,12px 100%,12px 100%;background-image:linear-gradient(to right,var(--tbl-bg,var(--surface)),var(--tbl-bg,var(--surface))),linear-gradient(to left,var(--tbl-bg,var(--surface)),var(--tbl-bg,var(--surface))),linear-gradient(to right,color-mix(in srgb,var(--ink) 14%,transparent),transparent),linear-gradient(to left,color-mix(in srgb,var(--ink) 14%,transparent),transparent);}
.tbl :is(td,th).act{position:sticky;right:0;z-index:1;background:linear-gradient(to right,color-mix(in srgb,var(--ink) 14%,transparent),transparent 8px),var(--tbl-bg,var(--surface));}
.tbl :is(td,th).act:has(details[open]){z-index:2;}
/* цвет заслонок подсказки = цвет фона контейнера, в котором лежит таблица (у .tbl своего фона нет) */
.banner.info{--tbl-bg:var(--accent-soft);}.banner.warn{--tbl-bg:var(--warn-soft);}.banner.crit{--tbl-bg:var(--crit-soft);}.banner.ok{--tbl-bg:var(--ok-soft);}
.panel{--tbl-bg:var(--accent-soft);}.prev{--tbl-bg:var(--warn-soft);}.peers{--tbl-bg:var(--sunken);}#disc-box{--tbl-bg:var(--accent-soft);}
.cal-wrap[data-ovf]{padding-right:var(--s5);-webkit-mask-image:linear-gradient(to right,black calc(100% - var(--s5)),transparent);mask-image:linear-gradient(to right,black calc(100% - var(--s5)),transparent);} /* подсказка календаря — угасание справа, как у полос вкладок, только при переполнении (data-ovf ставит ui.js); запас справа, чтобы в конце прокрутки последняя колонка не угасала */
.nw{white-space:nowrap;}
