/* safe-area insets as variables: the real values come from env(); a test can set them (Chromium has no notch) */
:root{--sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px);--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);}
/* ===== Stage 1: frame, left menu, "Мои ПВЗ" ===== */
:root{--side-w:232px;--r:12px;}
body{font-family:Inter,-apple-system,"Segoe UI",Roboto,sans-serif;font-size:14px;}
.shell{display:flex;min-height:100vh;}
#sidebar{position:fixed;left:0;top:0;bottom:0;width:var(--side-w);background:var(--card);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 12px;z-index:30;overflow-y:auto;}
.side-logo{padding:4px 8px 16px;}
.side-logo img{display:block;width:184px;max-width:100%;height:auto;}
#sideNav{flex:1;}
.side-group{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:16px 10px 6px;}
.side-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:0;border-radius:10px;background:transparent;color:var(--text);font:inherit;font-weight:500;cursor:pointer;text-align:left;}
.side-item svg{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;color:var(--muted);}
.side-item:hover{background:var(--bg);}
.side-item.active{background:rgba(21,87,255,.10);color:var(--accent);font-weight:600;}
.side-item.active svg{color:var(--accent);}
.side-bottom{border-top:1px solid var(--border);padding-top:10px;margin-top:10px;}
.profile{display:flex;align-items:center;gap:10px;padding:10px 6px 0;}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;flex:none;}
.profile .pinfo{flex:1;min-width:0;}
.profile .pemail{font-size:12.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.content{flex:1;min-width:0;margin-left:var(--side-w);}
.topbar{display:flex;align-items:center;gap:12px;padding:20px 24px 0;}
.topbar h1{margin:0;font-size:22px;font-weight:700;}
#menuBtn{display:none;border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:10px;width:38px;height:38px;font-size:18px;cursor:pointer;}
main#app{padding:16px 24px 32px;max-width:1200px;margin:0;}
#sideBackdrop,#bottomNav{display:none;}
.card{border-radius:var(--r);}
/* Мои ПВЗ */
.pt-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px;}
.pt-head .count{color:var(--muted);font-size:13px;margin-right:auto;}
.pt-head input[type=search],.pt-head select{background:var(--card);}
.pt-head input[type=search]{min-width:220px;}
.seg{display:inline-flex;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--card);}
.seg button{border:0;background:transparent;color:var(--text);padding:8px 12px;font:inherit;cursor:pointer;}
.seg button.on{background:rgba(21,87,255,.10);color:var(--accent);font-weight:600;}
.city-h{display:flex;align-items:center;gap:8px;width:100%;border:0;background:transparent;color:var(--text);font:inherit;font-weight:600;padding:12px 4px 6px;cursor:pointer;text-align:left;}
.city-h .chev{transition:transform .15s;display:inline-block;color:var(--muted);}
.city-h.closed .chev{transform:rotate(-90deg);}
.city-h .n{color:var(--muted);font-weight:500;font-size:13px;}
.pt-list{background:var(--card);border:1px solid var(--border);border-radius:var(--r);overflow:visible;}
.pt-row{display:grid;grid-template-columns:minmax(200px,2.4fr) 1.1fr .8fr .8fr 1.1fr .9fr 40px;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border);}
.pt-row:last-child{border-bottom:0;}
.pt-row.hd{font-size:12px;color:var(--muted);font-weight:600;padding:8px 14px;background:var(--bg);border-radius:var(--r) var(--r) 0 0;}
.pt-name{font-weight:600;}
.pt-sub{color:var(--muted);font-size:12.5px;margin-top:2px;}
.pt-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;}
.pt-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:14px;position:relative;}
.pt-card .kv{display:flex;justify-content:space-between;font-size:13px;padding:4px 0;color:var(--muted);}
.pt-card .kv b{color:var(--text);font-weight:600;}
.st{display:inline-block;font-size:12px;font-weight:600;padding:2px 9px;border-radius:10px;}
.st.ok{background:rgba(22,163,74,.12);color:var(--ok);}
.st.part{background:rgba(217,119,6,.12);color:var(--amber);}
.st.none{background:rgba(107,114,128,.15);color:var(--muted);}
.dev{font-weight:600;}.dev.bad{color:var(--bad);}
.kebab{position:relative;}
.kebab>button{border:0;background:transparent;color:var(--muted);font-size:20px;line-height:1;cursor:pointer;border-radius:8px;width:32px;height:32px;}
.kebab>button:hover{background:var(--bg);}
.kmenu{position:absolute;right:0;top:34px;background:var(--card);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px rgba(9,27,54,.14);min-width:160px;z-index:20;padding:4px;}
.kmenu button{display:block;width:100%;text-align:left;border:0;background:transparent;color:var(--text);font:inherit;padding:8px 10px;border-radius:8px;cursor:pointer;}
.kmenu button:hover{background:var(--bg);}
.kmenu button.del{color:var(--danger);}
.pt-empty{padding:32px;text-align:center;color:var(--muted);}
/* side panel */
#panelBackdrop{display:none;position:fixed;inset:0;background:rgba(9,27,54,.35);z-index:40;}
#sidePanel{position:fixed;top:0;right:0;bottom:0;width:min(420px,100%);background:var(--card);border-left:1px solid var(--border);z-index:41;transform:translateX(100%);transition:transform .2s;display:flex;flex-direction:column;}
#sidePanel.open{transform:none;}
body.panel-open{overflow:hidden;}
#sidePanel [aria-invalid="true"]{border-color:var(--danger);}
.report-heading{margin-bottom:12px;}
#sidePanel .ph{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--border);font-weight:700;font-size:16px;}
#sidePanel .pb{padding:20px;overflow-y:auto;flex:1;}
#sidePanel .pf{padding:14px 20px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end;}
.fld{margin-bottom:14px;}
.fld label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;}
.fld input{width:100%;}
.fld .hint{font-size:12px;color:var(--muted);margin-top:4px;}
.iconbtn{border:0;background:transparent;color:var(--muted);font-size:20px;cursor:pointer;}
/* Ввод отчёта */
.ef-top{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:12px;}
.ef-top .fld{margin-bottom:0;}
.fld select,.fld textarea{width:100%;}
.ef-state{margin-top:12px;font-size:13px;}
.ef-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 16px;}
.ef-group .fld{margin-bottom:0;}
.ef-group textarea{width:100%;resize:vertical;}
.ef-err{color:var(--danger);font-size:12.5px;margin-top:4px;}
.ef-bar{position:sticky;bottom:0;display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap;background:var(--bg);padding:12px 0;border-top:1px solid var(--border);z-index:5;}
.ef-msg{margin-right:auto;font-size:13px;color:var(--muted);}
.ef-msg.ok{color:var(--ok);font-weight:600;}.ef-msg.bad{color:var(--danger);font-weight:600;}.ef-msg.warn{color:var(--amber);}
button:disabled,input:disabled,select:disabled,textarea:disabled{opacity:.55;cursor:not-allowed;}
@media (max-width:900px){
  .ef-grid,.ef-top{grid-template-columns:1fr;}
  .ef-bar{bottom:64px;}
  .ef-bar .btn{flex:1;}
  .ef-msg{flex:1 1 100%;}
  #sidebar{transform:translateX(-100%);transition:transform .2s;box-shadow:0 0 40px rgba(0,0,0,.2);}
  body.menu-open #sidebar{transform:none;}
  body.menu-open #sideBackdrop{display:block;position:fixed;inset:0;background:rgba(9,27,54,.35);z-index:25;}
  .content{margin-left:0;}
  #menuBtn{display:inline-block;}
  .topbar{padding:14px 16px 0;}.topbar h1{font-size:19px;}
  main#app{padding:12px 16px 88px;}
  #bottomNav{display:flex;position:fixed;left:0;right:0;bottom:0;background:var(--card);border-top:1px solid var(--border);z-index:20;padding:6px 4px calc(6px + var(--sab));}
  #bottomNav button{flex:1;border:0;background:transparent;color:var(--muted);font:inherit;font-size:11.5px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px 0;cursor:pointer;}
  #bottomNav button svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
  #bottomNav button.active{color:var(--accent);font-weight:600;}
  .pt-row.hd{display:none;}
  .pt-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;position:relative;}
  .pt-row>div:first-child{flex:1 1 100%;padding-right:36px;}
  .pt-row>.kebab{position:absolute;right:6px;top:8px;}
  .pt-row>div:nth-child(4)::before{content:'Рейтинг: ';color:var(--muted);}
  .pt-row>div:nth-child(6)::before{content:'Отклонения: ';color:var(--muted);}
  .pt-row .c-hours,.pt-row .c-area{display:none;}
  .pt-head input[type=search]{min-width:0;flex:1 1 100%;}
  .pt-filters{flex:1 1 100%;}
  .pt-filters>select,.pt-filters>.pt-multi{flex:1 1 140px;min-width:0;max-width:100%;}
  .pt-filters>.pt-multi>summary{width:100%;min-width:0;}
}
/* ===== Stage 2: registration, profile, users & rights ===== */
.authcard.wide{max-width:440px;}
.acct-types{display:grid;gap:8px;margin-bottom:12px;}
.acct{display:grid;grid-template-columns:20px 1fr;gap:2px 8px;align-items:start;border:1px solid var(--border);border-radius:12px;padding:11px 12px;cursor:pointer;background:var(--bg);}
.acct input{grid-row:span 2;margin:3px 0 0;width:auto!important;}
.acct span{font-size:12.5px;color:var(--muted);}
.acct.on{border-color:var(--accent);background:rgba(21,87,255,.06);}
.auth2{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.auth2 input{min-width:0;}
.profbtn{display:flex;align-items:center;gap:10px;flex:1;min-width:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;padding:4px;border-radius:10px;cursor:pointer;}
.profbtn:hover,.profbtn.active{background:var(--bg);}
.acc-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:start;}
.kvline{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--border);font-size:13.5px;}
.kvline b{text-align:right;}
.acc-inv{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:12px;}
.acc-inv select,.fld select{width:100%;}
.chk{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:14px;cursor:pointer;}
.chk input{width:18px;height:18px;flex:none;}
.chk-list{border:1px solid var(--border);border-radius:10px;padding:6px 10px;margin-top:6px;max-height:220px;overflow:auto;}
.acc-list{display:flex;flex-direction:column;}
.acc-row{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border);}
.acc-row:last-child{border-bottom:0;}
.acc-who{min-width:0;overflow-wrap:anywhere;}
.acc-act{white-space:nowrap;}
.ef-msg.ok{color:var(--ok);} .ef-msg.bad{color:var(--danger);}
.ob-step{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--border);}
.ob-n{width:30px;height:30px;border-radius:50%;background:rgba(21,87,255,.1);color:var(--accent);font-weight:700;display:flex;align-items:center;justify-content:center;flex:none;}
.ob-t{flex:1;min-width:0;}
@media (max-width:900px){
  .acc-grid,.acc-inv{grid-template-columns:1fr;}
  .acc-row{grid-template-columns:1fr;gap:4px;}
  .ob-step{flex-wrap:wrap;} .ob-step .btn{margin-left:42px;}
}
.kpis{margin-bottom:12px;}
.bars{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;align-items:end;height:190px;padding-top:4px;}
.bar-col{display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;min-width:0;}
.bar-val{font-size:12px;font-weight:600;}
.bar-track{flex:1;width:100%;max-width:44px;background:var(--bg);border-radius:8px;display:flex;align-items:flex-end;overflow:hidden;}
.bar-fill{width:100%;background:var(--accent);border-radius:8px 8px 0 0;min-height:2px;}
.bar-lbl{font-size:11.5px;color:var(--muted);white-space:nowrap;}
@media (min-width:901px){ .kpis{grid-template-columns:repeat(4,1fr);} }
/* ===== Stage 3: brand, themes, points, staff, documents, timesheet ===== */
:root:not([data-theme="dark"]) .logo-on-dark{display:none!important;}
:root[data-theme="dark"] .logo-on-light{display:none!important;}
:root[data-theme="dark"] .side-item.active,:root[data-theme="dark"] .seg button.on{background:rgba(76,125,255,.18);}
:root[data-theme="dark"] #panelBackdrop,:root[data-theme="dark"] body.menu-open #sideBackdrop{background:rgba(0,0,0,.55);}
:root[data-theme="dark"] .kmenu{box-shadow:0 8px 24px rgba(0,0,0,.5);}
:root[data-theme="dark"] input[type=date]::-webkit-calendar-picker-indicator,:root[data-theme="dark"] input[type=time]::-webkit-calendar-picker-indicator{filter:invert(.85);}
.theme-sw{display:flex;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--bg);margin:10px 4px 0;}
.theme-sw button{flex:1;border:0;background:transparent;color:var(--muted);font:inherit;font-size:12.5px;padding:7px 4px;cursor:pointer;}
.theme-sw button.on{background:var(--card);color:var(--accent);font-weight:600;box-shadow:inset 0 0 0 1px var(--border);}
.theme-sw-lg{margin:0;}
.theme-sw-lg button{font-size:14px;padding:10px 6px;}
/* report date */
.datefld{position:relative;}
.datebtn{display:flex;align-items:center;gap:10px;width:100%;padding:9px 11px;border-radius:9px;border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit;font-size:14px;cursor:pointer;text-align:left;}
.datebtn svg{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;color:var(--muted);margin-left:auto;}
.datebtn:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}
.date-native{position:absolute;left:0;bottom:0;width:100%;height:100%;opacity:0;pointer-events:none;border:0;padding:0;}
/* forms */
.fld-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 12px;}
.fld-row3{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,.7fr);gap:0 12px;}
.chip{display:inline-block;font-size:12px;padding:2px 9px;border-radius:10px;background:var(--bg);border:1px solid var(--border);margin:2px 4px 2px 0;white-space:nowrap;}
.chip.muted{color:var(--muted);}
.mp{display:inline-block;font-size:11px;font-weight:700;padding:1px 7px;border-radius:8px;margin-right:6px;vertical-align:1px;}
.mp-wb{background:rgba(197,26,203,.13);color:var(--pink);}
.mp-ozon{background:rgba(21,87,255,.12);color:var(--accent);}
/* employees */
.emp-row{display:grid;grid-template-columns:minmax(180px,1.4fr) minmax(0,1.6fr) minmax(150px,1fr);gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border);cursor:pointer;}
.emp-row:last-child{border-bottom:0;}
.emp-row:hover{background:var(--bg);}
.emp-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
.emp-pts{min-width:0;}
.emp-contact a{color:var(--accent);text-decoration:none;}
.ep-search{width:100%;}
.ep-chosen{margin-top:8px;font-size:13px;}
/* documents */
.doc-group{margin-top:14px;}
.doc-group h4{margin:0 0 6px;font-size:13px;}
.doc-row{display:flex;gap:10px;align-items:flex-start;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--border);}
.doc-row:last-child{border-bottom:0;}
.doc-row>div:first-child{min-width:0;overflow-wrap:anywhere;}
.doc-act{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;flex:none;}
/* timesheet */
.ts-head{gap:8px;}
.ts-month{display:flex;align-items:center;gap:6px;margin-right:auto;}
.ts-month b{min-width:128px;text-align:center;font-size:15px;}
.ts-head select{max-width:280px;}
.ts-sum{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-bottom:10px;}
.ts-k{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:10px 12px;}
.ts-k span{display:block;font-size:12px;color:var(--muted);}
.ts-k b{font-size:17px;}
.ts-k-main{border-color:var(--accent);}
.ts-warn,.ts-note{grid-column:1/-1;font-size:13px;border-radius:10px;padding:8px 12px;}
.ts-warn{background:rgba(217,119,6,.12);color:var(--amber);}
.ts-note{background:var(--bg);color:var(--muted);border:1px solid var(--border);}
.ts-legend{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;font-size:12.5px;margin-bottom:8px;}
.ts-legend>span{display:inline-flex;align-items:center;gap:6px;}
.ts-legend .ts-c{width:22px;height:22px;font-size:11px;cursor:default;}
.ts-wrap{overflow:auto;max-height:calc(100vh - 230px);border:1px solid var(--border);border-radius:var(--r);background:var(--card);-webkit-overflow-scrolling:touch;}
.ts-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:12.5px;}
.ts-table th,.ts-table td{padding:3px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);background:var(--card);text-align:center;}
.ts-table thead th{position:sticky;top:0;z-index:2;font-weight:600;}
.ts-table .ts-name{position:sticky;left:0;z-index:1;text-align:left;min-width:170px;max-width:220px;padding:4px 10px;white-space:normal;box-shadow:1px 0 0 var(--border);}
.ts-table thead .ts-name{z-index:3;}
.ts-table .ts-d{width:36px;min-width:36px;}
.ts-table thead .ts-d span{display:block;font-size:12.5px;}
.ts-table thead .ts-d small{display:block;font-size:10.5px;color:var(--muted);font-weight:500;}
.ts-table .ts-we{background:color-mix(in srgb,var(--bg) 70%,var(--border));}
.ts-table thead .ts-today{background:var(--accent);color:#fff;}
.ts-table thead .ts-today small{color:#fff;}
.ts-table td.ts-today{box-shadow:inset 2px 0 0 var(--accent),inset -2px 0 0 var(--accent);}
.ts-table .ts-t{padding:4px 10px;white-space:nowrap;text-align:right;}
.ts-table thead .ts-t{text-align:center;}
.ts-emp{border:0;background:transparent;color:var(--text);font:inherit;font-weight:600;padding:0;cursor:pointer;text-align:left;}
.ts-emp:hover{color:var(--accent);text-decoration:underline;}
.ts-c{display:inline-flex;align-items:center;justify-content:center;width:30px;height:28px;border-radius:7px;border:1px dashed var(--border);background:transparent;color:var(--text);font:inherit;font-size:12px;font-weight:600;cursor:pointer;padding:0;position:relative;}
.ts-c:hover{border-color:var(--accent);}
.ts-c:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}
.ts-c.ts-off{border-style:solid;color:var(--muted);background:var(--bg);}
.ts-c.ts-on{border:1px solid var(--accent);color:var(--accent);background:rgba(21,87,255,.10);}
.ts-c.ts-ok{border:1px solid transparent;background:rgba(22,163,74,.16);color:var(--ok);}
.ts-c.ts-multi::after{content:'';position:absolute;top:2px;right:2px;width:5px;height:5px;border-radius:50%;background:var(--accent);}
.ts-c.ts-norate{background:rgba(217,119,6,.16);color:var(--amber);}
.ts-norate-lbl{font-size:11px;color:var(--amber);font-weight:600;}
.ts-entries{margin-bottom:12px;}
.ts-entry{display:flex;gap:10px;justify-content:space-between;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--border);font-size:13.5px;}
.ts-entry.on{background:rgba(21,87,255,.06);margin:0 -8px;padding:9px 8px;border-radius:8px;}
.ts-form{box-shadow:none;}
.ts-form-h{font-weight:700;margin-bottom:10px;}
.ts-hist .ts-h{padding:8px 0;border-bottom:1px solid var(--border);font-size:13px;}
.ts-sum-sm{grid-template-columns:repeat(2,minmax(0,1fr));}
.ts-adj-list{margin-bottom:12px;}
@media (max-width:900px){
  .emp-row{grid-template-columns:1fr;gap:6px;}
  .ts-month{flex:1 1 100%;margin-right:0;}
  .ts-month b{flex:1;}
  .ts-head select{max-width:none;flex:1 1 100%;}
  .ts-head .btn{flex:1;}
  .ts-sum{grid-template-columns:repeat(2,minmax(0,1fr));}
  .ts-wrap{max-height:calc(100vh - 200px);}
  .ts-table .ts-name{min-width:118px;max-width:130px;padding:4px 6px;font-size:12px;}
}
@media (max-width:480px){ .fld-row,.fld-row3{grid-template-columns:1fr;} }
.doc-up{box-shadow:none;background:var(--bg);}
.doc-up input[type=file]{width:100%;background:var(--card);}
.ts-c.ts-flash{box-shadow:0 0 0 3px rgba(21,87,255,.45);}
input.time24{font-variant-numeric:tabular-nums;letter-spacing:.02em;}
input.bad{border-color:var(--danger);}
.ts-table .ts-we{background-image:linear-gradient(rgba(127,140,170,.13),rgba(127,140,170,.13));}
.ts-sum{grid-template-columns:repeat(auto-fit,minmax(128px,1fr));}
.ts-sum.ts-sum-sm{grid-template-columns:repeat(2,minmax(0,1fr));}
@media (max-width:900px){ .ts-sum{grid-template-columns:repeat(2,minmax(0,1fr));} .ts-k{padding:8px 10px;} .ts-k b{font-size:15px;} }
@media (max-width:600px){ .doc-row{flex-wrap:wrap;} .doc-row>div:first-child{flex:1 1 100%;} .doc-act{justify-content:flex-start;} .ts-entry{flex-wrap:wrap;} .ts-entry>div:first-child{flex:1 1 100%;} }

/* ---- Finance: payroll ---- */
.fin-tabs{margin-bottom:12px;flex-wrap:wrap;max-width:100%;}
.st.calc{background:rgba(21,87,255,.10);color:var(--accent);}
.st.bad{background:rgba(220,38,38,.12);color:var(--bad);}
#sidePanel.wide{width:min(920px,100%);}
.sc-h{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin:14px 0 6px;}
.sc-h h3{margin:0;}
.sc-sum{grid-template-columns:repeat(3,minmax(0,1fr));}
.acc-res{border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-bottom:10px;background:var(--bg);font-size:13.5px;}
.acc-res.approved,.acc-res.calculated{border-color:var(--ok);}
.acc-res.needs_data,.acc-res.needs_split,.acc-res.needs_calc{border-color:var(--amber);}
.acc-res.error{border-color:var(--bad);}
.acc-amt{font-size:22px;font-weight:700;margin:6px 0 4px;}
.ed-h{margin:18px 0 8px;font-size:15px;}
.ed-expr{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;width:100%;}
.ed-sample{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:0 10px;align-items:end;}
.fs-table td,.fs-table th{text-align:right;}
.fs-table .ts-name{text-align:left;}
@media (max-width:600px){
  .sc-sum{grid-template-columns:repeat(2,minmax(0,1fr));}
  .fin-tabs button{flex:1 1 auto;padding:8px 8px;font-size:13px;}
}

/* ---- Auth: sign in, sign up, confirmation, password recovery ---- */
.authwrap{padding:24px 16px;}
.authcard{max-width:400px;}
.authcard .afld{margin-bottom:12px;}
.authcard .afld label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;}
.authcard .afld input{width:100%;margin-bottom:0;min-height:44px;font-size:16px;}
.authcard input[aria-invalid=true]{border-color:var(--danger);}
.pw-wrap{position:relative;}
.pw-wrap input{padding-right:48px;}
.pw-eye{position:absolute;right:2px;top:50%;transform:translateY(-50%);width:44px;height:40px;border:0;background:transparent;color:var(--muted);cursor:pointer;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0;}
.pw-eye:hover{color:var(--text);}
.pw-eye svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.ferr{color:var(--danger);font-size:12.5px;margin-top:5px;}
.ferr:empty{display:none;}
.authcard .err{margin:0 0 10px;overflow-wrap:anywhere;}
.authcard .err:empty{display:none;}
.err.ok{color:var(--ok);}
.auth-main{width:100%;min-height:44px;}
.auth-links{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;margin-top:14px;font-size:13px;}
.auth-links .linkbtn{padding:6px 0;}
.linkbtn.muted-link{color:var(--muted);}
.authtabs button{min-height:40px;font-weight:600;font-size:14px;}
.auth-h{font-size:19px;margin:0 0 10px;outline:none;}
.authcard p{overflow-wrap:anywhere;}
.auth-email{overflow-wrap:anywhere;word-break:break-word;}
.auth-steps{padding-left:22px;margin:0 0 12px;}
.auth-steps li{margin:5px 0;}
.auth-state{text-align:center;margin-bottom:14px;}
.auth-ok,.auth-bad{display:inline-flex;width:46px;height:46px;border-radius:50%;align-items:center;justify-content:center;font-weight:700;font-size:22px;margin-bottom:8px;}
.auth-ok{background:rgba(22,163,74,.14);color:var(--ok);}
.auth-bad{background:rgba(220,38,38,.12);color:var(--danger);}
.auth-spin{display:inline-block;width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:authspin 1s linear infinite;margin-bottom:8px;}
@keyframes authspin{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion:reduce){.auth-spin{animation-duration:3s;}}
.authcard fieldset.acct-types{border:0;padding:0;margin:0 0 12px;min-width:0;}
.authcard #acctTypesErr{margin:-2px 0 10px;}
.authcard button:focus-visible,.authcard input:focus-visible,.authcard .acct:focus-within{outline:2px solid var(--accent);outline-offset:2px;}
.btn[aria-busy=true]{opacity:.75;cursor:progress;}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
@media (max-width:420px){
  .authcard{padding:20px 16px;border-radius:14px;}
  .auth2{grid-template-columns:1fr;gap:0;}
  .brand-logo--auth img{width:210px;}
}

/* ---- Cabinet switcher: Wildberries / Ozon (side menu on desktop, top bar on phones) ---- */
.cab-sw{display:flex;gap:4px;padding:3px;border:1px solid var(--border);border-radius:11px;background:var(--bg);}
.cab-sw button{flex:1;min-width:0;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;background:transparent;color:var(--muted);font:inherit;font-size:13px;font-weight:600;padding:7px 8px;border-radius:8px;cursor:pointer;white-space:nowrap;}
.cab-sw button small{font-size:11px;font-weight:600;padding:0 6px;border-radius:8px;background:var(--card);border:1px solid var(--border);color:var(--muted);line-height:16px;}
.cab-sw button:hover{color:var(--text);}
.cab-sw button:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}
.cab-sw button.cab-wb.on{background:var(--pink);color:#fff;}
.cab-sw button.cab-ozon.on{background:var(--accent);color:#fff;}
.cab-sw button.on small{background:rgba(255,255,255,.22);border-color:transparent;color:#fff;}
#cabSide{padding:10px 0 4px;}
#cabTop{display:none;margin-left:auto;}
.cab-warn{background:rgba(217,119,6,.12);color:var(--text);border:1px solid rgba(217,119,6,.35);border-radius:var(--r);padding:10px 14px;margin-bottom:12px;font-size:13.5px;}
.cab-warn h3{margin:0 0 4px;font-size:15px;}
.cab-warn .linkbtn{font-weight:600;}
.cab-note{margin-top:10px;font-size:13px;padding:8px 12px;border-radius:10px;background:rgba(21,87,255,.08);color:var(--accent);border:1px solid rgba(21,87,255,.2);}
.cab-loading{padding:32px;text-align:center;}
.pt-una{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:8px 0;border-top:1px solid rgba(217,119,6,.25);}
.pt-una-act{display:flex;gap:6px;align-items:center;flex-wrap:wrap;}
.pt-una-act select{background:var(--card);}
.ep-grp{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:8px 0 2px;}
.ep-grp:first-child{padding-top:2px;}
/* small dialog (save / discard / stay) */
.modal-back{position:fixed;inset:0;background:rgba(9,27,54,.45);z-index:60;display:flex;align-items:center;justify-content:center;padding:16px;}
.modal-card{background:var(--card);color:var(--text);border:1px solid var(--border);border-radius:14px;max-width:420px;width:100%;padding:18px 20px;box-shadow:0 16px 48px rgba(0,0,0,.25);}
.modal-card h3{margin:0 0 8px;font-size:17px;}
.modal-card p{margin:0 0 16px;color:var(--muted);font-size:14px;}
.modal-btns{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;}
@media (max-width:900px){
  .topbar{flex-wrap:wrap;row-gap:8px;}
  .topbar h1{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;}
  #cabTop{display:block;flex:0 1 auto;}
  #cabTop .cab-sw button{padding:6px 8px;font-size:12.5px;}
  .modal-btns .btn{flex:1 1 auto;}
}
@media (max-width:400px){
  #cabTop{flex:1 1 100%;margin-left:0;}
}

/* ---- Employee card: view, edit, point picker ---- */
.emp-row{grid-template-columns:minmax(180px,1.4fr) minmax(0,1.6fr) minmax(150px,1fr) auto;}
.emp-act{display:flex;justify-content:flex-end;}
.mp-none{background:rgba(107,114,128,.15);color:var(--muted);}
.ep-item{align-items:flex-start;padding:7px 6px;border-radius:8px;margin:0 -6px;}
.ep-item input{margin-top:2px;}
.ep-item.on{background:rgba(21,87,255,.08);}
.ep-txt{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 6px;min-width:0;}
.ep-txt b{font-weight:600;overflow-wrap:anywhere;}
.ep-txt .pt-sub{flex:1 1 100%;margin-top:0;}
#epList{max-height:260px;}
.ep-none{padding:8px 0;font-size:13px;}
.ep-chosen .chip,.emp-kv-pts .chip{white-space:normal;}
.emp-kv-pts b{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:2px;}
.emp-note{white-space:pre-wrap;overflow-wrap:anywhere;font-weight:500;}
.ok-note{margin-bottom:12px;font-size:13.5px;font-weight:600;padding:9px 12px;border-radius:10px;background:rgba(22,163,74,.12);color:var(--ok);border:1px solid rgba(22,163,74,.3);}
.emp-loading{padding:24px 0;text-align:center;}
#emForm textarea{width:100%;resize:vertical;}
#emForm [aria-invalid=true]{border-color:var(--danger);}
#emForm .fld label .muted{font-weight:500;}
#emTopErr:empty{display:none;}
#emTopErr{margin-bottom:12px;}
@media (max-width:900px){
  .emp-row{grid-template-columns:1fr;}
  .emp-act{justify-content:flex-start;}
  .emp-kv-pts{flex-direction:column;align-items:flex-start;}
  .emp-kv-pts b{justify-content:flex-start;}
}

/* ---- Employee documents: list, files, upload form, progress ---- */
.dc-head{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-start;justify-content:space-between;margin-bottom:12px;}
.dc-head .hint{font-size:12.5px;color:var(--muted);margin-top:3px;}
.dc-head>div{flex:1 1 260px;min-width:0;}
.dc-head .btn{flex:none;}
.dc-empty{text-align:center;padding:22px 12px;border:1px dashed var(--border);border-radius:var(--r);}
.dc-empty p{margin:0 0 12px;color:var(--muted);}
.dc-doc{border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;margin-bottom:10px;background:var(--card);}
.dc-doc-h{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:flex-start;justify-content:space-between;}
.dc-doc-h>div:first-child{flex:1 1 220px;min-width:0;overflow-wrap:anywhere;}
.dc-files{margin-top:6px;}
.dc-file{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;padding:7px 0;border-top:1px solid var(--border);}
.dc-kind{flex:none;font-size:10.5px;font-weight:700;padding:3px 6px;border-radius:6px;background:var(--bg);border:1px solid var(--border);color:var(--muted);}
.dc-fname{flex:1 1 180px;min-width:0;display:flex;flex-direction:column;overflow-wrap:anywhere;font-size:13.5px;}
.dc-fname .pt-sub{margin-top:1px;}
.dc-act{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;flex:none;}
.dc-sels{border:1px solid var(--border);border-radius:10px;padding:2px 10px;margin:-4px 0 10px;background:var(--card);}
.dc-sel{display:flex;gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid var(--border);}
.dc-sel:last-child{border-bottom:0;}
.dc-sel .dc-st{font-size:12px;color:var(--muted);white-space:nowrap;}
.dc-sel.done .dc-st{color:var(--ok);font-weight:600;}
.dc-sel.fail .dc-st,.bad-t{color:var(--danger);font-weight:600;}
.dc-sel .iconbtn{width:32px;height:32px;flex:none;}
.dc-prog{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12.5px;margin-top:6px;}
.dc-prog span{color:var(--muted);}
.dc-bar{flex:1 1 140px;height:6px;border-radius:4px;background:var(--bg);border:1px solid var(--border);overflow:hidden;}
.dc-bar i{display:block;height:100%;background:var(--accent);transition:width .15s;}
#dcForm{margin:8px 0 12px;}
#dcForm h3{margin:0 0 10px;font-size:15px;}
@media (max-width:600px){
  .dc-head .btn{width:100%;}
  .dc-doc-h .dc-act{flex:1 1 100%;justify-content:flex-start;}
  .dc-file .dc-fname{flex:1 1 calc(100% - 52px);}
  .dc-file .dc-act{flex:1 1 100%;justify-content:flex-start;}
  .dc-act .btn{flex:1 1 auto;}
  #dcForm .row .btn{flex:1;}
}

/* ---- Documents of a point: button in the card, the panel with three categories, versions ---- */
.pt-docs{margin-top:8px;}
.pt-docs .btn.sm{padding:6px 12px;font-size:13px;}
.pt-docs-panel{margin:0 0 12px;}
.pd-top{display:flex;gap:8px;flex-wrap:wrap;flex:none;}
.pd-cat{margin:0 0 16px;}
.pd-cat-h h4{margin:0 0 8px;font-size:14px;display:flex;align-items:center;gap:8px;}
.pd-n{font-size:11.5px;font-weight:600;padding:1px 8px;border-radius:999px;background:var(--bg);border:1px solid var(--border);color:var(--muted);}
.pd-none{font-size:13px;color:var(--muted);padding:8px 0 2px;border-top:1px dashed var(--border);}
.pd-comment{font-size:13px;margin-top:3px;overflow-wrap:anywhere;}
.pd-act{margin-top:8px;justify-content:flex-start;}
.pd-doc.archived{opacity:.85;border-style:dashed;}
.pd-hist{margin-top:8px;border-top:1px solid var(--border);}
.pd-ver{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--border);}
.pd-ver:last-child{border-bottom:0;}
.pd-picked{display:flex;gap:8px;align-items:center;margin-top:6px;}
.pd-picked .iconbtn{width:32px;height:32px;flex:none;}
#pdForm{margin:8px 0 12px;}
#pdForm h3{margin:0 0 10px;font-size:15px;}
#pdForm textarea{resize:vertical;}
@media (max-width:600px){
  .pd-top{width:100%;}
  .pd-top .btn{flex:1 1 auto;}
  .pd-act .btn{flex:1 1 calc(50% - 6px);}
  .pd-ver .dc-fname{flex:1 1 100%;}
  .pd-ver .dc-act{flex:1 1 100%;justify-content:flex-start;}
  .pd-form-btns .btn{flex:1;}
  .pt-docs .btn{width:100%;}
}

/* ---- Users and access: users, invitations, edit and invite panels, accepting an invitation ---- */
.acc-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:6px;}
.acc-head .seg button small{font-size:11px;font-weight:600;padding:0 6px;margin-left:4px;border-radius:8px;background:var(--bg);border:1px solid var(--border);color:var(--muted);}
.acc-sub{font-size:13px;margin:4px 0 12px;}
.acc-table{background:var(--card);border:1px solid var(--border);border-radius:var(--r);margin-bottom:12px;}
.acc-tr{display:grid;grid-template-columns:minmax(190px,1.5fr) 120px minmax(170px,1.7fr) minmax(130px,1.1fr) 120px minmax(150px,auto);gap:12px;align-items:start;padding:12px 14px;border-bottom:1px solid var(--border);}
.acc-inv-table .acc-tr{grid-template-columns:minmax(190px,1.5fr) minmax(110px,.9fr) minmax(170px,1.6fr) 140px minmax(130px,1fr) minmax(150px,auto);}
.acc-tr:last-child{border-bottom:0;}
.acc-th{font-size:12px;color:var(--muted);font-weight:600;padding:8px 14px;background:var(--bg);border-radius:var(--r) var(--r) 0 0;align-items:center;}
.acc-tr>div{min-width:0;overflow-wrap:anywhere;font-size:13.5px;}
.acc-who b{font-weight:600;}
.acc-lbl{display:none;}
.acc-pts .chip{white-space:normal;}
.chip.acc-all{background:rgba(217,119,6,.12);border-color:rgba(217,119,6,.35);color:var(--text);}
.acc-perms div{font-size:12.5px;}
.acc-act{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;}
.acc-ro{font-size:12.5px;}
.ok-t{color:var(--ok);font-size:12.5px;font-weight:600;}
.warn-t{color:var(--amber);font-size:12.5px;font-weight:600;}
button.danger-t{color:var(--danger);}
.acc-roles h3{margin-top:0;}
.acc-person{margin-top:0;}
#sidePanel fieldset.fld{border:0;padding:0;margin:0 0 14px;min-width:0;}
#sidePanel fieldset.fld legend{font-size:13px;font-weight:600;margin-bottom:6px;padding:0;}
.acc-scope .chk-list{max-height:240px;}
#sidePanel .acc-scope label.chk,#sidePanel .acc-pgrp label.chk{display:flex;font-weight:400;margin-bottom:0;font-size:14px;}
.acc-scope .ep-txt{flex:1;}
.acc-scope [hidden]{display:none!important;}
.acc-perm-list{max-height:none;}
.acc-pgrp+.acc-pgrp{border-top:1px solid var(--border);margin-top:6px;}
.acc-off{color:var(--muted);}
.acc-danger{border-top:1px solid var(--border)!important;padding-top:12px!important;}
.acc-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:70;max-width:min(520px,calc(100% - 32px));padding:10px 16px;border-radius:10px;font-size:14px;font-weight:600;box-shadow:0 8px 24px rgba(0,0,0,.18);}
.acc-toast.ok{background:var(--card);color:var(--ok);border:1px solid rgba(22,163,74,.4);}
.acc-toast.bad{background:var(--card);color:var(--danger);border:1px solid rgba(220,38,38,.4);}
#ivLink{width:100%;font-size:13px;}
@media (max-width:900px){
  .acc-th{display:none;}
  .acc-tr,.acc-inv-table .acc-tr{grid-template-columns:1fr;gap:6px;padding:12px;}
  .acc-lbl{display:inline-block;min-width:64px;font-size:12px;color:var(--muted);margin-right:6px;}
  .acc-act{justify-content:flex-start;}
  .acc-act .btn{flex:1 1 auto;}
  .acc-head .btn{flex:1 1 100%;}
  .acc-head .seg{flex:1 1 100%;}
  .acc-head .seg button{flex:1;}
  .acc-toast{bottom:80px;}
}

/* ---- Metrics: list, form with type-specific settings and preview; report fields of every type ---- */
.mt-table .acc-tr,.mt-tr{grid-template-columns:minmax(150px,1.6fr) minmax(96px,.9fr) minmax(112px,1.2fr) 108px minmax(96px,1fr) minmax(100px,1fr) 176px;}
.mt-tr .acc-act{flex-wrap:nowrap;}
.mt-tr .acc-act .btn{min-width:36px;}
.mt-plain{margin:0;padding-left:18px;}
.mt-plain li{margin:4px 0;}
.mf .fld-row3{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);}
#sidePanel .mf label.chk{display:flex;font-weight:400;margin-bottom:0;font-size:14px;align-items:flex-start;}
#sidePanel .mf label.chk input{margin-top:1px;}
.mf [hidden]{display:none!important;}
.mf textarea{width:100%;resize:vertical;}
.mf [aria-invalid=true]{border-color:var(--danger);}
.mf #mfErr:empty{display:none;}
.mf #mfErr{margin-bottom:12px;}
.mf-opt{display:flex;gap:8px;align-items:center;margin-bottom:6px;flex-wrap:wrap;}
.mf-opt input{flex:1 1 180px;min-width:0;}
.mf-opt.off input{color:var(--muted);text-decoration:line-through;}
.mf-prev{background:var(--bg);box-shadow:none;margin:6px 0 14px;}
.mf-prev-h{font-weight:700;margin-bottom:10px;}
.mf-prev .ef-grid{grid-template-columns:1fr;}
.mf-hist{margin:0 0 14px;font-size:13.5px;}
.mf-hist summary{cursor:pointer;font-weight:600;}
.mf-hist ul{margin:8px 0 0;padding-left:18px;}
.mf-arch{display:flex;flex-direction:column;gap:8px;margin-top:6px;}
.mf-arch-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.mf-pay{margin:0 0 14px;}
.ef-num{display:flex;align-items:center;gap:8px;}
.ef-num input{flex:1;min-width:0;}
.ef-unit{color:var(--muted);font-size:13px;white-space:nowrap;}
.ef-req{color:var(--danger);}
.ef-wide{grid-column:1/-1;}
.ef-wide textarea{width:100%;resize:vertical;}
.ef-ro{padding:9px 11px;border:1px dashed var(--border);border-radius:9px;color:var(--text);background:var(--bg);overflow-wrap:anywhere;}
.ef-stale label{color:var(--muted);}
.stat.sel{outline:2px solid var(--accent);outline-offset:-2px;}
@media (max-width:900px){
  .mt-table .acc-tr,.mt-tr{grid-template-columns:1fr;}
  .mf .fld-row3{grid-template-columns:1fr 1fr;}
  .mf .fld-row3 .fld:first-child{grid-column:1/-1;}
}

/* ===== Stage 7: filling the daily report ===== */
html{scroll-padding-bottom:150px;}
.ef-head .ef-back{margin-bottom:10px;}
.ef-state{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;}
#entryTz{margin-top:8px;}
.ef-prog-t{margin-top:12px;font-size:14px;}
.ef-prog{height:8px;border-radius:6px;background:var(--border);overflow:hidden;margin-top:6px;}
.ef-prog>div{height:100%;background:var(--ok);border-radius:6px;transition:width .2s;}
.ef-left{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:13px;}
.chip{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:14px;padding:5px 12px;font:inherit;font-size:13px;min-height:32px;cursor:pointer;}
.chip:hover{border-color:var(--accent);}
.ef-group .fld,.ef-err{scroll-margin-bottom:150px;}
.ef-group input[type=text],.ef-group select,.ef-group textarea{min-height:44px;font-size:16px;}
.seg{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.seg-opt{position:relative;flex:1 1 90px;max-width:160px;margin:0;}
.seg-opt input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer;}
.seg-opt span{display:flex;align-items:center;justify-content:center;min-height:44px;border:1px solid var(--border);border-radius:10px;background:var(--bg);font-weight:600;}
.seg-opt input:checked+span{background:var(--accent);border-color:var(--accent);color:#fff;}
.seg-opt input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px;}
.seg-clear{border:0;background:none;color:var(--muted);text-decoration:underline;font:inherit;font-size:13px;min-height:44px;padding:0 8px;cursor:pointer;}
[aria-invalid=true]{border-color:var(--danger)!important;}
.seg[aria-invalid=true] .seg-opt span{border-color:var(--danger);}
.ef-confirm{border-color:var(--ok);background:rgba(22,163,74,.07);}
.ef-confirm-l{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin-top:8px;font-size:14px;}
.ef-confirm-l span:nth-child(odd){color:var(--muted);}
.ef-conflict{border-color:var(--amber);background:rgba(217,119,6,.07);}
.ef-conflict-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
.ef-diff{width:100%;border-collapse:collapse;font-size:13.5px;}
.ef-diff th,.ef-diff td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--border);vertical-align:top;}
.ef-bar{padding-bottom:calc(12px + var(--sab));}
#entryRetrySave{margin-left:8px;}
.rp-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:8px;}
.rp-grid .fld{margin-bottom:0;}
.rp-list{padding:0;}
.rp-row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1.6fr) auto;gap:6px 14px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border);}
.rp-row:last-child{border-bottom:0;}
.rp-main,.rp-meta{display:flex;flex-direction:column;gap:3px;min-width:0;overflow-wrap:anywhere;}
.rp-meta{align-items:flex-start;}
.rp-rule summary{cursor:pointer;font-weight:600;}
@media (max-width:900px){
  .rp-grid{grid-template-columns:1fr 1fr;}
  .rp-row{grid-template-columns:1fr;}
  .rp-row .btn{width:100%;min-height:44px;}
  .ef-confirm-l{grid-template-columns:1fr;}
  .ef-confirm-l span:nth-child(odd){margin-top:4px;}
  .ef-bar .btn{min-height:46px;}
}
@media (max-width:420px){ .rp-grid{grid-template-columns:1fr;} }
.ef-bar[hidden]{display:none;}

/* ===== Stage 8: analytics ===== */
.an-filters .an-cab{margin-bottom:8px;}
.an-presets{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff;}
.an-points summary{cursor:pointer;font-weight:600;min-height:44px;display:flex;align-items:center;}
.an-plist{display:flex;flex-direction:column;gap:2px;padding:4px 0 8px;}
.an-plist .chk{min-height:40px;display:flex;align-items:center;gap:8px;}
.an-head{font-size:15px;line-height:1.5;}
.an-cov{display:flex;flex-wrap:wrap;gap:8px;}
.an-cards{display:flex;flex-direction:column;gap:10px;margin-bottom:12px;}
.an-card{background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden;}
.an-card.open{border-color:var(--accent);}
.an-card-h{all:unset;box-sizing:border-box;display:grid;grid-template-columns:1fr auto;gap:2px 12px;width:100%;padding:12px 14px;cursor:pointer;min-height:44px;}
.an-card-h:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
.an-name{font-weight:600;}
.an-val{font-weight:700;font-size:16px;text-align:right;}
.an-sub,.an-delta,.an-tg{grid-column:1/-1;font-size:12.5px;color:var(--muted);}
.an-tg.bad{color:var(--danger);font-weight:600;}.an-tg.ok{color:var(--ok);}
.an-src{padding:0 14px 12px;}
.an-more{margin:6px 0;}
.an-more summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:600;}
@media (min-width:901px){.an-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));}}

.ts-c.ts-plan{background:transparent;border:1px dashed var(--accent);color:var(--accent);font-weight:600;}

/* ===== Stage 10: purchases ===== */
.nav-badge{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--danger);color:#fff;font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;}
.nav-badge[hidden]{display:none;}
.pu-top{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px;}
.pu-top h3{margin:0;}
.pu-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;}
.pu-mine{margin:0 0 8px;}
.pu-row{all:unset;box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1.6fr);gap:6px 14px;width:100%;padding:12px 16px;border-bottom:1px solid var(--border);cursor:pointer;min-height:44px;}
.pu-row:last-child{border-bottom:0;}
.pu-row:hover{background:color-mix(in srgb,var(--bg) 60%,var(--card));}
.pu-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
.pu-main,.pu-meta{display:flex;flex-direction:column;gap:4px;min-width:0;overflow-wrap:anywhere;}
.pu-meta{align-items:flex-start;}
.pu-quick{display:flex;flex-wrap:wrap;gap:6px;}
.pu-chip{cursor:pointer;min-height:36px;font-size:14px;}
.pu-item{border:1px solid var(--border);border-radius:12px;padding:10px;margin-bottom:10px;}
.pu-qty{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:end;}
.pu-form input,.pu-form select,.pu-form textarea,.pu-detail input,.pu-detail select{min-height:44px;font-size:16px;width:100%;}
.pu-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0;}
.pu-actions .btn{min-height:44px;}
.pu-chips{display:flex;gap:6px;margin-bottom:8px;}
.pu-items{width:100%;border-collapse:collapse;}
.pu-items th,.pu-items td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--border);}
.pu-expense{margin:8px 0;}
@media (max-width:900px){ .pu-grid{grid-template-columns:1fr 1fr;} .pu-row{grid-template-columns:1fr;} }
@media (max-width:420px){ .pu-grid{grid-template-columns:1fr;} }

/* ===== Stage 11: tasks and repairs ===== */
.tk-head{display:flex;flex-direction:column;gap:10px;}
.tk-seg{display:flex;gap:8px;}
.tk-seg .chip{min-height:40px;font-size:15px;padding:6px 18px;cursor:pointer;}
.tk-actions{display:flex;gap:8px;}
.tk-card{all:unset;box-sizing:border-box;display:block;width:100%;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:12px 14px;margin-bottom:10px;cursor:pointer;min-height:44px;}
.tk-card:hover{border-color:var(--accent);}
.tk-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.tk-card.overdue{border-left:4px solid var(--danger);}
.tk-top{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
.tk-meta{margin-top:6px;overflow-wrap:anywhere;}
.tk-late{color:var(--danger);font-weight:600;}
.tk-done{text-decoration:line-through;color:var(--muted);}
.tk-form input,.tk-form select,.tk-form textarea,.tk-detail input[type=text],.tk-detail input[type=url],.tk-detail input[type=date],.tk-detail select{min-height:44px;font-size:16px;width:100%;}
.tk-form .chk{align-items:flex-start;gap:10px;min-height:44px;line-height:1.5;}
.tk-form .chk input[type=checkbox]{width:18px;height:18px;min-height:18px;flex:none;margin:2px 0 0;}
.tk-check .chk{min-height:44px;}
.tk-check .iconbtn{margin-left:auto;}

/* ===== Stage 12: chats ===== */
.ch-wrap{display:grid;grid-template-columns:320px minmax(0,1fr);gap:0;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--card);height:calc(100vh - 150px);min-height:420px;}
.ch-list{border-right:1px solid var(--border);overflow-y:auto;min-width:0;}
.ch-list-h{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--card);z-index:1;}
.ch-room{all:unset;box-sizing:border-box;display:block;width:100%;padding:12px 14px;border-bottom:1px solid var(--border);cursor:pointer;min-height:44px;}
.ch-room:hover,.ch-room.on{background:color-mix(in srgb,var(--accent) 10%,var(--card));}
.ch-room:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
.ch-room-t{display:flex;justify-content:space-between;gap:8px;align-items:center;}
.ch-room-l{display:block;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;}
.ch-pad{padding:14px;}
.ch-thread{display:flex;flex-direction:column;min-width:0;min-height:0;position:relative;}
.ch-empty{margin:auto;padding:20px;}
.ch-head{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border);}
.ch-title{display:flex;flex-direction:column;min-width:0;flex:1;}
.ch-title b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ch-back{display:none;}
.ch-msgs{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:6px;min-height:0;overscroll-behavior:contain;}
.ch-day{align-self:center;font-size:12px;color:var(--muted);margin:8px 0 2px;}
.ch-msg{max-width:min(78%,560px);padding:8px 12px;border-radius:14px;background:color-mix(in srgb,var(--bg) 60%,var(--card));border:1px solid var(--border);overflow-wrap:anywhere;}
.ch-msg.mine{align-self:flex-end;background:color-mix(in srgb,var(--accent) 14%,var(--card));border-color:color-mix(in srgb,var(--accent) 35%,var(--border));}
.ch-msg.failed{border-color:var(--danger);}
.ch-author{font-size:12px;font-weight:600;color:var(--accent);margin-bottom:2px;}
.ch-body{white-space:pre-wrap;}
.ch-time{font-size:11.5px;color:var(--muted);margin-top:2px;text-align:right;}
.ch-fail{color:var(--danger);}
.ch-retry{all:unset;color:var(--accent);text-decoration:underline;cursor:pointer;min-height:24px;}
.ch-more{align-self:center;}
.ch-new{position:absolute;left:50%;transform:translateX(-50%);bottom:86px;border:0;border-radius:18px;padding:8px 16px;background:var(--accent);color:#fff;font:inherit;font-weight:600;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.25);min-height:40px;}
.ch-new[hidden]{display:none;}
.ch-composer{display:flex;gap:8px;align-items:flex-end;padding:10px 12px calc(10px + var(--sab));border-top:1px solid var(--border);background:var(--card);flex-wrap:wrap;}
.ch-composer textarea{flex:1;min-width:0;resize:none;min-height:44px;max-height:140px;font-size:16px;}
.ch-composer .btn{min-height:44px;}
.ch-denied{flex:1 1 100%;color:var(--danger);font-weight:600;font-size:13px;}
.ch-denied[hidden]{display:none;}
.ch-member{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border);}
@media (max-width:900px),(pointer:coarse) and (max-height:500px){
  .ch-wrap{grid-template-columns:1fr;height:calc(100vh - 225px);height:calc(100dvh - 225px);min-height:360px;}
  .ch-wrap .ch-thread{display:none;}
  .ch-wrap.ch-open .ch-list{display:none;}
  .ch-wrap.ch-open .ch-thread{display:flex;}
  .ch-back{display:inline-flex;}
  .ch-msg{max-width:88%;}
  .ch-new{bottom:96px;}
}

/* ===== Stage 13: chat comfort ===== */
.ch-msg{position:relative;}
.ch-menu{position:absolute;top:2px;right:4px;border:0;background:transparent;color:var(--muted);font-size:20px;line-height:1;min-width:32px;min-height:32px;cursor:pointer;border-radius:8px;opacity:.65;}
.ch-msg:hover .ch-menu,.ch-menu:focus-visible{opacity:1;}
.ch-pop{position:absolute;right:6px;top:34px;z-index:5;background:var(--card);border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.25);padding:4px;display:flex;flex-direction:column;min-width:190px;}
.ch-pop button{all:unset;box-sizing:border-box;padding:10px 14px;min-height:44px;cursor:pointer;border-radius:8px;}
.ch-pop button:hover,.ch-pop button:focus-visible{background:color-mix(in srgb,var(--accent) 12%,var(--card));}
.ch-quote{all:unset;box-sizing:border-box;display:block;width:100%;border-left:3px solid var(--accent);padding:3px 8px;margin-bottom:4px;font-size:13px;color:var(--muted);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ch-quote.gone{font-style:italic;cursor:default;}
.ch-mention{background:color-mix(in srgb,var(--accent) 20%,transparent);border-radius:4px;padding:0 2px;font-weight:600;}
.ch-files,.ch-links{display:flex;flex-direction:column;gap:4px;margin-top:4px;}
.ch-file{all:unset;box-sizing:border-box;display:block;padding:6px 8px;border:1px dashed var(--border);border-radius:8px;cursor:pointer;min-height:32px;overflow-wrap:anywhere;}
.ch-chip{all:unset;box-sizing:border-box;display:inline-block;padding:4px 10px;border-radius:12px;background:color-mix(in srgb,var(--accent) 12%,var(--card));color:var(--accent);font-size:13px;cursor:pointer;min-height:28px;}
.ch-pin-mark{font-size:12px;color:var(--muted);}
.ch-msg.pinned{border-color:var(--amber);}
.ch-msg.flash{box-shadow:0 0 0 3px var(--accent);}
.ch-pins{display:flex;gap:8px;align-items:center;padding:6px 12px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--amber) 8%,var(--card));}
.ch-pins[hidden],.ch-search[hidden],.ch-bar[hidden]{display:none;}
.ch-pin-top{all:unset;box-sizing:border-box;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;min-height:36px;display:flex;align-items:center;}
.ch-pin-item{all:unset;box-sizing:border-box;display:block;width:100%;padding:10px 12px;border-bottom:1px solid var(--border);cursor:pointer;min-height:44px;overflow-wrap:anywhere;}
.ch-search{padding:8px 12px;border-bottom:1px solid var(--border);}
.ch-search input{width:100%;min-height:44px;font-size:16px;}
.ch-sres{max-height:240px;overflow-y:auto;}
.ch-composer{flex-direction:column;align-items:stretch;}
.ch-row{display:flex;gap:8px;align-items:flex-end;min-width:0;}
.ch-composer>*{min-width:0;}
@media(max-width:480px){.ch-row{flex-wrap:wrap;}.ch-row textarea{order:-1;flex:1 1 100%;}.ch-row #chSend{margin-left:auto;}}
.ch-tool{min-width:44px;padding:0 8px;}
.ch-bar{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:6px 10px;border-left:3px solid var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--card));border-radius:8px;font-size:13px;}
.ch-x{border:0;background:transparent;color:var(--muted);font-size:16px;min-width:32px;min-height:32px;cursor:pointer;}
.ch-atts{display:flex;flex-direction:column;gap:4px;}
.ch-att{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:4px 8px;border:1px solid var(--border);border-radius:8px;font-size:13px;}
.ch-att.failed{border-color:var(--danger);}
.ch-limits{margin:0;}

/* ===== Stage 14: notification centre ===== */
.nt-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:12px;}
.nt-sum .card{margin-bottom:0;}
.nt-block h3{margin:0 0 8px;font-size:15px;}
.nt-row{all:unset;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:8px 0;border-bottom:1px solid var(--border);cursor:pointer;min-height:44px;flex-wrap:wrap;}
.nt-row:last-child{border-bottom:0;}
.nt-row:focus-visible,.nt-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
.nt-filters{display:flex;flex-direction:column;gap:8px;}
.nt-item{all:unset;box-sizing:border-box;display:grid;grid-template-columns:14px minmax(0,1fr) auto;gap:10px;align-items:start;width:100%;padding:12px 16px;border-bottom:1px solid var(--border);cursor:pointer;min-height:44px;}
.nt-item:last-child{border-bottom:0;}
.nt-item.unread{background:color-mix(in srgb,var(--accent) 8%,var(--card));}
.nt-item.unread b{font-weight:700;}
.nt-item.gone b,.nt-item.gone{color:var(--muted);}
.nt-dot{width:10px;height:10px;border-radius:50%;margin-top:6px;background:transparent;}
.nt-item.unread .nt-dot{background:var(--accent);}
.nt-main{display:flex;flex-direction:column;gap:2px;min-width:0;overflow-wrap:anywhere;}
.nt-when{font-size:12.5px;white-space:nowrap;}
.nt-err{color:var(--danger);font-size:13px;}
.nt-act{display:inline-block;margin-top:4px;font-size:13px;font-weight:600;color:var(--accent,#7c3aed);}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
@media (max-width:900px){.nt-sum{grid-template-columns:1fr;}}

/* Stage 15: contrast and touch targets found by tests/stage18_ui_audit.mjs (palette and logo stay the same; only text/background pairs that were below 4.5:1 are adjusted) */
.mp-wb{color:#9B139F;}
:root[data-theme="dark"] .mp-wb{color:#F08AF3;}
:root[data-theme="dark"] .side-item.active,:root[data-theme="dark"] .side-item.active svg,:root[data-theme="dark"] .seg button.on,:root[data-theme="dark"] .ts-c.ts-on,:root[data-theme="dark"] .linkbtn:not(.muted-link),:root[data-theme="dark"] .bn-item.active{color:#8FB1FF;}
:root[data-theme="dark"] button.btn:not(.secondary):not(.danger),:root[data-theme="dark"] .chip.on{background:linear-gradient(90deg,#3466EE,#2A58D8);border-color:#3466EE;color:#fff;}   /* primary only: «secondary» (outlined) and «danger» keep their own look in the dark theme */
:root[data-theme="dark"] .nav-badge{background:#C62828;}
:root[data-theme="dark"] .ts-c.ts-ok{color:#5FDB8F;}
@media (max-width:600px){
  #logoutBtn,#panelClose,button.btn.sm,button.btn.secondary.sm,#ntAll,.ts-emp,#tsPrev,#tsNext,#fsPrev,#fsNext,#saveExpBtn,#chNewGroup,#orgSaveBtn{min-height:32px;min-width:32px;}
  .linkbtn{padding:7px 0;}
  .cab-warn .linkbtn{display:inline-block;}
}
:root:not([data-theme="dark"]){--ok-text:#0E7A37;--amber-text:#8F4A00;}
:root:not([data-theme="dark"]) .st.ok,:root:not([data-theme="dark"]) .badge.pr-low,:root:not([data-theme="dark"]) .badge.st-done,:root:not([data-theme="dark"]) .ts-c.ts-ok{color:var(--ok-text);}
:root:not([data-theme="dark"]) .badge.pr-med,:root:not([data-theme="dark"]) .ts-c.ts-norate{color:var(--amber-text);}
:root:not([data-theme="dark"]) .badge.role{color:#9B139F;}
:root:not([data-theme="dark"]) .ts-c.ts-on,:root:not([data-theme="dark"]) .badge.st-progress{color:#1248D8;}
:root[data-theme="dark"] .ts-table thead .ts-today{background:#3466EE;}
:root:not([data-theme="dark"]){--ok-text:#0A6A2E;}

/* Stage 16: PWA notices */
.pwa-banner{position:fixed;left:12px;right:12px;bottom:calc(12px + var(--sab));z-index:60;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;border-radius:12px;background:var(--card);color:var(--text);border:1px solid var(--border);box-shadow:0 6px 24px rgba(0,0,0,.18);max-width:560px;margin:0 auto;}
.pwa-banner.warn{border-color:var(--amber);}
.pwa-banner span{flex:1 1 200px;font-size:14px;}
body:has(#bottomNav) .pwa-banner{bottom:calc(68px + var(--sab));}
.pwa-steps{margin:12px 0 0;padding-left:20px;color:var(--muted);font-size:14px;}
.pwa-steps li{margin:4px 0;}
[hidden]{display:none!important;}

/* Stage 17: notification settings */
.ps-row{margin:0 0 14px;}
.ps-row .row{margin-top:6px;}
.ps-cats{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:6px;}
.chk{display:flex;align-items:center;gap:8px;min-height:32px;}
.ps-hr{border:0;border-top:1px solid var(--border);margin:16px 0;}

/* Stage 22: installation offer, how-to sheet, permanent entry in the profile */
.pwa-offer{position:fixed;left:12px;right:12px;bottom:calc(12px + var(--sab));z-index:55;display:grid;grid-template-columns:40px 1fr;gap:10px 12px;align-items:start;padding:12px 14px;border-radius:14px;background:var(--card);color:var(--text);border:1px solid var(--border);box-shadow:0 8px 28px rgba(0,0,0,.2);max-width:440px;margin:0 auto;}
body:has(#bottomNav) .pwa-offer{bottom:calc(76px + var(--sab));}
/* the install offer never covers a place where the person types: the chat composer and the report form (their send/save buttons sit at the bottom) */
body:has(#chWrap) .pwa-offer,body:has(#entryDate) .pwa-offer{display:none;}
.pwa-offer img{width:40px;height:40px;border-radius:9px;}
.pwa-offer-t{display:flex;flex-direction:column;gap:2px;font-size:14px;line-height:1.35;}
.pwa-offer-t span{color:var(--muted);}
.pwa-offer-b{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;}
@media (min-width:901px){.pwa-offer{left:auto;right:24px;bottom:24px;margin:0;width:400px;}}
.pwa-sheet-back{position:fixed;inset:0;z-index:90;background:rgba(9,27,54,.45);display:flex;align-items:flex-end;justify-content:center;}
:root[data-theme="dark"] .pwa-sheet-back{background:rgba(0,0,0,.6);}
.pwa-sheet{background:var(--card);color:var(--text);width:100%;max-width:520px;max-height:92vh;overflow:auto;border-radius:18px 18px 0 0;padding:16px 16px calc(18px + var(--sab));border:1px solid var(--border);}
@media (min-width:601px){.pwa-sheet-back{align-items:center;}.pwa-sheet{border-radius:16px;}}
.pwa-sheet-h{display:flex;align-items:center;gap:12px;margin-bottom:12px;}
.pwa-sheet-h img{width:40px;height:40px;border-radius:9px;}
.pwa-sheet-h h2{flex:1;margin:0;font-size:18px;}
.pwa-tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap;}
.pwa-tabs button{border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit;font-size:13.5px;padding:7px 12px;min-height:36px;border-radius:999px;cursor:pointer;}
.pwa-tabs button.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600;}
.pwa-tabs button:focus-visible,.pwa-sheet button:focus-visible,#pwaPanel:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.pwa-steps2{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:10px;counter-reset:s;}
.pwa-steps2 li{display:grid;grid-template-columns:36px 1fr;gap:10px;align-items:start;font-size:14.5px;line-height:1.4;counter-increment:s;}
.pwa-ic{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;background:var(--bg);border:1px solid var(--border);color:var(--accent);}
.pwa-ic.ok{width:28px;height:28px;color:#0A6A2E;}
:root[data-theme="dark"] .pwa-ic{color:#8FB1FF;}
:root[data-theme="dark"] .pwa-ic.ok{color:#5FDB8F;}
.pwa-warn{background:rgba(217,119,6,.12);border:1px solid rgba(217,119,6,.35);border-radius:10px;padding:10px 12px;font-size:14px;margin-bottom:10px;}
.pwa-note,.pwa-sub{font-size:13px;margin:12px 0 0;}
.pwa-foot{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:14px;}
.pwa-open{display:flex;align-items:center;gap:8px;margin:0 0 10px;}
.pwa-open[hidden]{display:none;}
@media (max-width:600px){.pwa-steps2 li{font-size:15px;}}
#standBadge{position:fixed;top:0;left:50%;transform:translateX(-50%);z-index:95;background:#8F4A00;color:#fff;font-size:11px;font-weight:700;letter-spacing:.03em;padding:2px 10px;border-radius:0 0 8px 8px;pointer-events:none;white-space:nowrap;}
:root[data-theme="dark"] .pwa-tabs button.on{background:#3466EE;border-color:#3466EE;}

/* ===== Stage 23: one geometry system =====
   Same heights for the same kinds of controls, the same gaps, labels above fields, nothing is shrunk to fit: blocks are rebuilt by the width they get. */
:root{--ctl-h:40px;--ctl-h-sm:32px;--gap:12px;--gap-s:8px;--panel-pad:20px;}
@media (max-width:900px),(pointer:coarse){:root{--ctl-h:44px;--ctl-h-sm:36px;--panel-pad:16px;}}
input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]):not([type=hidden]),select{min-height:var(--ctl-h);box-sizing:border-box;line-height:1.25;}
select{text-overflow:ellipsis;padding-right:30px;}
textarea{box-sizing:border-box;line-height:1.35;}
button.btn{min-height:var(--ctl-h);box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:6px;line-height:1.2;}
button.btn.sm{min-height:var(--ctl-h-sm);}
input,select,textarea,button{max-width:100%;}
.card,.fld,.hint,.muted,.ef-msg,.ts-warn,.pt-name,.pt-sub,.kvline,.cab-warn{min-width:0;overflow-wrap:anywhere;}
.fld label{line-height:1.3;}
.fld .hint{line-height:1.35;}
html{overflow-x:clip;}
/* the side panel: header, scrolling body, footer that always stays reachable; it follows the visible screen (keyboard) and the phone's safe areas */
#sidePanel{max-width:100%;}
#sidePanel .ph{padding:14px var(--panel-pad);gap:12px;min-height:56px;box-sizing:border-box;}
#sidePanel .ph #panelTitle{min-width:0;overflow-wrap:anywhere;}
#sidePanel .ph .iconbtn{width:var(--ctl-h);height:var(--ctl-h);flex:none;border-radius:10px;}
#sidePanel .pb{padding:var(--panel-pad);min-height:0;overscroll-behavior:contain;scroll-padding-bottom:96px;}
#sidePanel .pf{padding:12px var(--panel-pad) calc(12px + var(--sab));flex-wrap:wrap;align-items:center;gap:var(--gap-s);background:var(--card);}
#sidePanel .pf .ef-msg{flex:1 1 100%;margin-right:0;order:-1;}
#sidePanel .pf>span[style*="flex:1"]{display:none;}
@media (max-width:600px){#sidePanel .pf .btn{flex:1 1 0;min-width:0;}}
@media (max-width:900px){#sidePanel{top:var(--vvt,0px);bottom:auto;height:var(--vvh,100dvh);max-height:100dvh;}}
/* the editor of a pay scheme */
.ed-h{margin:22px 0 10px;font-size:16px;line-height:1.3;}
.ed-h:first-of-type{margin-top:14px;}
.ed-params,.ed-lines,.ed-comps{container-type:inline-size;container-name:ed;}
.ed-head{display:none;}
.ed-prow,.ed-lrow{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--gap-s) var(--gap);align-items:start;padding:12px;margin-bottom:10px;border:1px solid var(--border);border-radius:12px;background:var(--bg);}
.ed-cell{display:flex;flex-direction:column;gap:4px;min-width:0;position:relative;}
.ed-lab{font-size:12.5px;font-weight:600;color:var(--muted);line-height:1.2;}
.ed-cell input,.ed-cell select{width:100%;min-width:0;flex:none;}
.ed-pv{display:flex;align-items:center;min-height:var(--ctl-h);font-size:13px;color:var(--muted);line-height:1.3;}
.ed-c-act{display:flex;gap:var(--gap-s);justify-content:flex-end;align-items:center;}
.ed-del,.ed-moreb{display:inline-flex;align-items:center;gap:6px;min-width:var(--ctl-h);min-height:var(--ctl-h);justify-content:center;border:1px solid var(--border);border-radius:10px;font:inherit;font-size:13.5px;font-weight:600;color:var(--text);background:var(--card);padding:0 12px;cursor:pointer;box-sizing:border-box;}
.ed-del-t,.ed-moreb-t{font-size:13.5px;font-weight:600;}
.ed-moreb-i{display:none;font-size:18px;line-height:1;}
.ed-moreb[aria-expanded="true"]{border-color:var(--accent);color:var(--accent);}
.ed-del:hover{border-color:var(--danger);color:var(--danger);}
.ed-del:focus-visible,.ed-moreb:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.ed-more-b{grid-column:1/-1;font-size:13px;padding:8px 10px;border-radius:10px;background:var(--card);border:1px dashed var(--border);overflow-wrap:anywhere;line-height:1.4;}
.ed-more-b[hidden]{display:none;}
.ed-code{font-size:12px;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:2px 6px;overflow-wrap:anywhere;}
.ed-comp{border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:10px;background:var(--bg);}
.ed-comp-h{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--gap-s) var(--gap);align-items:start;}
.ed-comp-b{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:var(--gap-s) var(--gap);margin-top:var(--gap-s);}
.ed-expr{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;width:100%;}
.ed-sample{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:0 var(--gap);align-items:end;}
.ed-lrow{grid-template-columns:minmax(0,1fr);}
/* middle width: two columns inside the card (unit | how it is set), the rest full width */
@container ed (min-width:430px) and (max-width:759px){
  .ed-prow{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
  .ed-prow .ed-c-name,.ed-prow .ed-c-val,.ed-prow .ed-c-act,.ed-prow .ed-more-b{grid-column:1/-1;}
  .ed-c-act .ed-moreb,.ed-c-act .ed-del{flex:1 1 0;}
}
@container ed (max-width:429px){
  .ed-c-act .ed-moreb,.ed-c-act .ed-del{flex:1 1 0;}
}
/* wide editor (container query: it is the width of the editor that matters, not of the screen): one grid, headings once, equal columns in every row */
@container ed (min-width:760px){
  .ed-head{display:grid;grid-template-columns:minmax(180px,2fr) minmax(170px,1.1fr) minmax(190px,1.2fr) minmax(120px,.9fr) 96px;gap:var(--gap);padding:0 12px 6px;font-size:12.5px;font-weight:600;color:var(--muted);}
  .ed-prow{grid-template-columns:minmax(180px,2fr) minmax(170px,1.1fr) minmax(190px,1.2fr) minmax(120px,.9fr) 96px;align-items:center;padding:8px 12px;margin-bottom:8px;}
  .ed-prow .ed-lab,.ed-lrow .ed-lab{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
  .ed-del,.ed-moreb{padding:0;}.ed-del-t,.ed-moreb-t{display:none;}.ed-moreb-i{display:inline;}
  .ed-lrow{grid-template-columns:minmax(0,1fr) minmax(0,2fr) 96px;align-items:center;padding:8px 12px;}
  .ed-comp-h{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) auto;align-items:end;}
}
@media (max-width:480px){.ed-prow,.ed-lrow,.ed-comp{padding:12px 10px;}}
/* the phone menu: a modal panel */
@media (max-width:900px){
  #sidebar{width:min(88vw,400px);max-width:100%;padding:12px 12px calc(12px + var(--sab));z-index:60;overflow:hidden;overscroll-behavior:contain;}
  body.menu-open #sideBackdrop{z-index:55;touch-action:none;}
  body.menu-open{overflow:hidden;}
  html:has(body.menu-open){overflow:hidden;}
  .side-logo{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 12px;}
  .side-logo .brand-logo{flex:0 1 auto;min-width:0;}
  .side-logo img{width:min(184px,100%);}
  .side-close{display:inline-flex;align-items:center;justify-content:center;flex:none;width:var(--ctl-h);height:var(--ctl-h);border:1px solid var(--border);border-radius:10px;color:var(--text);background:var(--card);font-size:18px;}
  #cabSide{margin:0 4px 6px;}
  #sideNav{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-right:2px;}
  .side-bottom{flex:none;background:var(--card);margin-top:6px;}
  .side-item{padding:10px 10px;min-height:var(--ctl-h);}
  .side-item span{min-width:0;overflow-wrap:anywhere;line-height:1.25;}
  .side-item svg{align-self:flex-start;margin-top:1px;}
  .pwa-banner{z-index:58;}
}
@media (max-height:520px){
  #sidebar{overflow-y:auto;}
  #sideNav{flex:none;overflow:visible;}
}
.side-close{display:none;}
@media (max-width:900px){.side-close{display:inline-flex;}}
/* both segments: same height, same symmetric padding; the label and its counter are one centred group with one gap; a segment never gets narrower than its content
   (so «Wildberries» is neither clipped nor smaller than «Ozon»): with room the two segments are equal; when space is short the wider label keeps its content width, the padding stays */
.cab-sw button{flex:1 1 0;min-width:auto;min-height:var(--ctl-h-sm);padding:6px 8px;gap:6px;white-space:nowrap;}
.cab-sw button small{flex:none;padding:0 5px;}

/* ---- Expenses: label and amount sit next to each other (no wide empty gap) ---- */
.exp-card{max-width:760px;}
.exp-grid{display:grid;grid-template-columns:minmax(150px,260px) minmax(130px,190px);column-gap:16px;align-items:start;}
.exp-row{display:contents;}
.exp-row label{align-self:center;min-height:var(--ctl-h);display:flex;align-items:center;font-size:13.5px;border-bottom:1px solid var(--border);}
.exp-row input{min-height:var(--ctl-h);margin:4px 0;text-align:right;}
.exp-row .exp-err{grid-column:1 / -1;margin:-2px 0 4px;}
.exp-util{margin:14px 0 6px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r);background:var(--bg);}
.exp-util-h{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;justify-content:space-between;margin-bottom:8px;}
.exp-lines{margin-top:6px;}
.exp-line{display:grid;grid-template-columns:minmax(120px,260px) minmax(110px,170px) auto;column-gap:16px;align-items:center;padding:2px 0;}
.exp-line input{min-height:var(--ctl-h);margin:4px 0;}
.exp-line input[type=text].exp-lbl[readonly]{background:transparent;border-color:transparent;padding-left:0;}
.exp-line input:not(.exp-lbl){text-align:right;}
.exp-line .exp-err{grid-column:1 / -1;margin:-2px 0 4px;}
.exp-add{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px;}
.exp-note{margin-top:8px;font-size:12.5px;}
.exp-sum{margin-top:10px;font-size:14px;}
.exp-util-sum{display:inline-block;vertical-align:top;margin:3px 3px 0 0;}
.exp-util-sum summary{cursor:pointer;list-style:none;}
.exp-util-sum summary::-webkit-details-marker{display:none;}
.exp-util-sum[open]{display:block;}
@media (max-width:560px){
  .exp-grid{grid-template-columns:minmax(0,1fr) minmax(110px,150px);column-gap:10px;}
  .exp-line{grid-template-columns:minmax(0,1fr) minmax(100px,130px) auto;column-gap:8px;}
  .exp-util{padding:10px;}
}
#shiftTable th{text-align:center;white-space:nowrap;}
#shiftTable th .sh-wd{display:block;font-size:11px;font-weight:600;opacity:.75;}
#shiftTable th .sh-dm{display:block;}
.sh-mh{margin:14px 0 6px;font-size:14px;}
.sh-mh:first-child{margin-top:0;}

/* ---- employee card: checkbox beside its text, wider panel on a computer, hints do not stretch the row ---- */
.fld label.chk,#sidePanel .fld label.chk{display:flex;align-items:flex-start;gap:10px;font-size:14px;font-weight:400;margin-bottom:0;}
.fld label.chk input{width:18px;height:18px;flex:none;margin:2px 0 0;}
@media (min-width:901px){#sidePanel:has(#emForm){width:min(600px,100%);}}
#emForm .fld-row{align-items:start;gap:12px 14px;}
#emForm .fld-row > .fld{margin-bottom:12px;}
#emForm .fld .hint{margin-top:3px;max-width:60ch;}
#emForm .fld label{margin-bottom:5px;}
.exp-line{grid-template-columns:minmax(120px,260px) minmax(110px,190px) 44px;}
.exp-line .btn{width:auto;min-width:0;justify-self:start;padding:0 12px;min-height:var(--ctl-h);}
@media (max-width:560px){.exp-line{grid-template-columns:minmax(0,1fr) minmax(100px,130px) 44px;}}

/* ---- Mobile geometry (iPhone Safari) ---------------------------------------------------------------------------------------------------------------
   1) Да / Нет (one shared component, every form): two EQUAL columns with equal inner padding, the label row above carries «Очистить» (so the row never shifts),
      the answer buttons fill the row on phones/tablets (compact 2×160 px on wide screens); each answer is centred both ways inside its own frame; no outer frame.
   2) Date / month / time fields: native Safari date inputs have their own minimum width and centre the value. Every one gets min-width 0, max-width 100%, border-box,
      the standard control height and a left-aligned value; pairs of fields sit in auto-fit columns and fall under each other when two do not fit (no clipping anywhere).
   3) Bottom bar: five equal slots (the middle one is «Чаты» with the unread counter on its icon), the real height is published as --bn-h; content and the sticky
      save/send bar stay above it (incl. the iPhone home-indicator inset); while the keyboard is up (body.kb-open) the bar steps aside. */
.fld[data-bool] .bool-h{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:6px;}
.fld[data-bool] .bool-h label{margin:0;flex:1 1 auto;min-width:0;}
.fld[data-bool] .bool-h .seg-clear{flex:none;min-height:0;padding:0;line-height:1.3;font-size:13px;}
.fld[data-bool] .seg{display:grid;grid-template-columns:repeat(2,minmax(0,160px));gap:8px;border:0;border-radius:0;background:transparent;overflow:visible;padding:0;}
.fld[data-bool] .seg-opt{max-width:none;min-width:0;margin:0;}
.fld[data-bool] .seg-opt span{box-sizing:border-box;width:100%;min-height:44px;padding:0 12px;line-height:1.2;text-align:center;}
@media (max-width:900px){ .fld[data-bool] .seg{grid-template-columns:repeat(2,minmax(0,1fr));} }

input[type=date]:not(.date-native),input[type=month],input[type=time]{box-sizing:border-box;min-width:0;max-width:100%;min-height:var(--ctl-h);-webkit-appearance:none;appearance:none;text-align:left;}
input[type=date]:not(.date-native)::-webkit-date-and-time-value,input[type=month]::-webkit-date-and-time-value,input[type=time]::-webkit-date-and-time-value{text-align:left;min-height:1.25em;margin:0;}
.fld input[type=date]:not(.date-native),.fld input[type=month],.fld input[type=time]{display:block;width:100%;}
.fld,.rp-grid>*,.fld-row>*,.fld-row3>*,.ef-top>*{min-width:0;}
.datebtn{min-height:var(--ctl-h);box-sizing:border-box;}
@media (max-width:900px){ .rp-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));} }

@media (max-width:900px){
  #bottomNav.bn5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:stretch;padding-left:2px;padding-right:2px;}
  #bottomNav.bn5 button,#bottomNav.bn5 .bn-gap{min-width:0;}
  #bottomNav button{justify-content:flex-start;min-height:48px;}
  #bottomNav .bn-ico{position:relative;display:inline-flex;width:22px;height:22px;flex:none;}
  #bottomNav .bn-ico svg{width:22px;height:22px;}
  #bottomNav .bn-lbl{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.2;font-size:11px;font-weight:500;}   /* the active item changes colour only: a bolder label would be wider than its slot */
  #bottomNav button.active .bn-lbl{font-weight:500;}
  #bottomNav .nav-badge{position:absolute;top:-7px;left:calc(100% - 9px);margin:0;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;font-size:11px;line-height:1;border:2px solid var(--card);}
  main#app{padding-bottom:calc(var(--bn-h,64px) + 24px);}
  .ef-bar{bottom:var(--bn-h,64px);}
  .ch-wrap{height:calc(100vh - 161px - var(--bn-h,64px));height:calc(100dvh - 161px - var(--bn-h,64px));}   /* was a fixed «225px» that assumed a 64 px bar */
  body.kb-open #bottomNav{display:none;}
  body.kb-open main#app{padding-bottom:24px;}
  body.kb-open .ef-bar{bottom:0;}
}

/* ---- Import of points from Excel (js/points-import.js): wide side panel; the table becomes cards on phones ---- */
.imp{display:flex;flex-direction:column;gap:12px;min-width:0;}
.imp-lead{margin:0;font-weight:600;}
.imp-steps{margin:0;padding-left:20px;color:var(--muted);font-size:13.5px;line-height:1.45;}
.imp-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:stretch;}
.imp-actions .btn{text-decoration:none;box-sizing:border-box;min-height:var(--ctl-h);display:inline-flex;align-items:center;justify-content:center;padding:9px 16px;border-radius:9px;border:1px solid transparent;font:inherit;font-size:14px;font-weight:600;cursor:pointer;background:linear-gradient(90deg,var(--accent),var(--accent2));color:#fff;}
.imp-actions .btn.secondary{background:transparent;border-color:var(--border);color:var(--text);}
.imp-file{position:relative;cursor:pointer;overflow:hidden;}
.imp-file input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;font-size:0;}
.imp-file:focus-within{outline:2px solid var(--accent);outline-offset:2px;}
.imp-status{min-height:0;font-size:13.5px;color:var(--muted);}
.imp-status:empty{display:none;}
.imp-status.bad{color:var(--danger);background:rgba(220,38,38,.08);border:1px solid rgba(220,38,38,.3);border-radius:10px;padding:10px 12px;}
.imp-sum{display:flex;gap:8px 14px;flex-wrap:wrap;font-size:13.5px;}
.imp-sum span{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:4px 10px;}
.imp-s-ok{color:var(--ok);} .imp-s-warn{color:var(--amber);} .imp-s-bad{color:var(--danger);}
.imp-hint{font-size:13px;background:rgba(21,87,255,.07);border:1px solid rgba(21,87,255,.2);border-radius:10px;padding:8px 12px;}
.imp-tbl-wrap{min-width:0;border:1px solid var(--border);border-radius:12px;overflow-x:auto;}
.imp-tbl{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed;}
.imp-tbl th,.imp-tbl td{white-space:normal;text-align:left;}
.imp-tbl th:nth-child(1){width:60px;} .imp-tbl th:nth-child(2){width:112px;} .imp-tbl th:nth-child(3){width:17%;} .imp-tbl th:nth-child(4){width:9%;} .imp-tbl th:nth-child(5){width:12%;} .imp-tbl th:nth-child(6){width:23%;}
.imp-tbl th{text-align:left;font-weight:600;background:var(--bg);padding:8px 10px;border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0;}
.imp-tbl td{padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top;overflow-wrap:anywhere;}
.imp-tbl td:first-child,.imp-tbl th:first-child{position:static;text-align:left;}
.imp-tbl tr:last-child td{border-bottom:0;}
.imp-n{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--muted);}
.imp-row.bad{background:rgba(220,38,38,.06);} .imp-row.warn{background:rgba(217,119,6,.08);} .imp-row.skipped{opacity:.65;}
.imp-errs,.imp-match ul{margin:4px 0 0;padding-left:18px;}
.imp-errs{color:var(--danger);} .imp-match b{color:var(--amber);}
.imp-ok{color:var(--ok);} .imp-warn{color:var(--amber);font-size:12px;margin-top:4px;}
.ei-src{font-size:12px;line-height:1.35;margin-top:4px;color:var(--muted);} .ei-src.pt{color:var(--ok);} .ei-src.none{color:var(--amber);}
.ei-reset{background:none;border:0;padding:4px 0;margin-left:4px;font:inherit;font-size:12px;font-weight:600;color:inherit;text-decoration:underline;cursor:pointer;min-height:28px;}
.imp-dec{border:0;padding:0;margin:6px 0 0;min-width:0;display:flex;flex-direction:column;gap:4px;}
.imp-dec label.chk{display:flex;align-items:center;gap:8px;font-weight:400;font-size:13.5px;margin:0;min-height:36px;}
.imp-rent-body{min-width:0;} .imp-rent-line{font-size:13px;} .imp-rent-first{font-size:12.5px;margin-top:2px;} .imp-rent-exp{font-size:12.5px;margin-top:4px;color:var(--amber);} .imp-rent-fut{font-size:12.5px;margin-top:4px;color:var(--muted);}
.imp-rent-months{margin-top:4px;font-size:12.5px;} .imp-rent-months summary{cursor:pointer;color:var(--muted);margin:0;} .imp-rent-months ul{margin:4px 0 0;padding-left:18px;}
.imp-done{background:rgba(22,163,74,.1);border:1px solid rgba(22,163,74,.35);border-radius:12px;padding:14px 16px;font-size:15px;line-height:1.5;}
#sidePanel .pf .btn{min-height:var(--ctl-h);}
@media (max-width:760px){
  #sidePanel .pf{flex-wrap:wrap;}
  #sidePanel .pf .btn{flex:1 1 140px;}
  .imp-tbl-wrap{border:0;overflow:visible;}
  .imp-tbl,.imp-tbl tbody,.imp-tbl tr,.imp-tbl td{display:block;width:100%;box-sizing:border-box;}
  .imp-tbl thead{display:none;}
  .imp-tbl tr{border:1px solid var(--border);border-radius:12px;margin-bottom:10px;padding:6px 0;background:var(--card);}
  .imp-tbl td{border:0;padding:4px 12px;display:grid;grid-template-columns:104px minmax(0,1fr);gap:8px;text-align:left;white-space:normal;}
  .imp-tbl th:nth-child(n){width:auto;}
  .imp-tbl td::before{content:attr(data-l);color:var(--muted);font-size:12px;}
}

/* ---- Employees, step 1: actions of the row/card, the dismissal window ---- */
.emp-act{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;align-items:center;min-width:0;}
.emp-act .btn{white-space:nowrap;}
.emp-fired{margin-left:6px;vertical-align:middle;font-size:11.5px;}
.emp-foot{display:flex;flex-wrap:wrap;gap:8px;align-items:center;width:100%;min-width:0;}
.emp-foot .btn{min-height:var(--ctl-h);}
.emp-foot-sp{flex:1 1 auto;}
button.btn.danger-t,.btn.secondary.danger-t{color:var(--danger);border-color:rgba(220,38,38,.45);}
.emp-modal{max-width:520px;max-height:calc(100dvh - 32px);overflow-y:auto;}
.emp-modal .fld{margin:0 0 12px;}
.emp-m-name{margin:0 0 10px;font-size:15px;color:var(--text);overflow-wrap:anywhere;}
.emp-cons{margin:0 0 12px;padding-left:20px;font-size:13.5px;line-height:1.45;color:var(--text);}
.emp-cons li{margin-bottom:6px;overflow-wrap:anywhere;}
.emp-m-fut{font-size:13px;margin:0 0 12px;} .emp-m-fut ul{margin:6px 0 0;padding-left:20px;}
.emp-future{background:rgba(217,119,6,.1);border:1px solid rgba(217,119,6,.4);border-radius:12px;padding:10px 12px;margin-top:12px;font-size:13.5px;}
.emp-future p{margin:4px 0;} .emp-future ul{margin:6px 0 8px;padding-left:20px;}
.emp-modal .modal-btns .btn{min-height:var(--ctl-h);}
@media (max-width:900px){
  .emp-act{justify-content:flex-start;}
  .emp-act .btn{flex:1 1 auto;min-height:var(--ctl-h-sm);}
  .emp-foot .btn{flex:1 1 140px;}
  .emp-foot-sp{display:none;}
  .emp-modal{max-width:none;}
  .emp-modal .modal-btns{flex-direction:column-reverse;}
  .emp-modal .modal-btns .btn{width:100%;}
}

/* ---- stage 25: rent of a point ---- */
.rent-box{margin:14px 0 4px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--card);}
.rent-box .fld{margin:0 0 10px;}
.rent-when{margin:0 0 8px;padding:10px;border-radius:10px;background:var(--bg,rgba(0,0,0,.03));}
.rent-mode{border:1px solid var(--border);border-radius:10px;margin:8px 0 0;padding:8px 10px;}
.rent-mode legend{padding:0 6px;font-size:13px;color:var(--muted);}
.rent-opt{display:flex;gap:8px;align-items:flex-start;margin:6px 0;font-size:14px;line-height:1.35;cursor:pointer;}
.rent-opt input{margin-top:3px;flex:none;}
.rent-info{font-size:14px;line-height:1.45;}
.rent-hist{margin-top:6px;font-size:13px;color:var(--muted);}
.rent-hist ul{margin:6px 0 0;padding-left:18px;}
.rent-need{margin-top:10px;padding:10px;border:1px solid var(--warn,#d99a00);border-radius:10px;}
.rent-conf{margin:8px 0;font-size:14px;line-height:1.4;}
.rent-act{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;}
.rc-first{margin:10px 0;padding:10px;border-radius:10px;background:rgba(0,120,60,.08);font-size:15px;}
.rc-list{margin:6px 0 0;padding-left:18px;font-size:14px;}
.rent-hint{margin-top:4px;}
@media (max-width:600px){ .rent-act .btn{flex:1 1 100%;min-height:var(--ctl-h,44px);} .rent-opt{padding:4px 0;} }

/* ===== Claims and deductions (part 1) ===== */
.cl-top{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px;}
.cl-top h3{margin:0;}
.cl-tabs{display:flex;gap:8px;margin-bottom:10px;}
.cl-tabs .chip.on{background:var(--accent);color:#fff;border-color:var(--accent);}
.cl-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;}
.cl-totals{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;}
.cl-row .pu-meta{align-items:flex-start;}
.cl-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px;}
.cl-sec{border-top:1px solid var(--border);padding:12px 0;}
.cl-sec h4{margin:0 0 8px;}
.cl-kv{display:flex;justify-content:space-between;gap:12px;padding:3px 0;}
.cl-sums{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:8px;}
.cl-sums div{border:1px solid var(--border);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;}
.cl-sums span{font-size:12px;color:var(--muted);}
.cl-line{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--border);}
.cl-line:last-child{border-bottom:0;}
.cl-void{opacity:.55;text-decoration:line-through;}
.cl-itemctl{display:flex;gap:6px;align-items:center;flex-shrink:0;}
.cl-add{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;align-items:flex-start;}
.cl-add textarea,.cl-add input[type=text],.cl-add input[type=url]{flex:1 1 160px;min-width:0;}
.cl-note{padding:6px 0;border-bottom:1px solid var(--border);}
.cl-log{font-size:13px;padding:2px 0;}
.cl-status{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.cl-item{border:1px solid var(--border);border-radius:10px;padding:8px;margin-bottom:8px;}
.cl-qty{display:flex;gap:8px;align-items:flex-end;}
@media (max-width:900px){.cl-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width:560px){.cl-grid{grid-template-columns:minmax(0,1fr);}.cl-line{flex-direction:column;align-items:flex-start;}}
.cl-table{width:100%;border-collapse:collapse;font-size:14px;margin:6px 0;}
.cl-table th,.cl-table td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--border);}
.cl-modal{max-width:640px;width:calc(100% - 24px);max-height:calc(100vh - 32px);overflow:auto;}
.cl-share{display:flex;gap:8px;margin-bottom:6px;align-items:center;}
.cl-share select{flex:2 1 160px;min-width:0;}
.cl-share input{flex:1 1 100px;min-width:0;}
.cf-row .cl-itemctl{flex-wrap:wrap;justify-content:flex-end;}
.cf-up{margin-top:8px;}
.cl-mine{background:color-mix(in srgb,var(--accent) 6%,transparent);border-radius:8px;padding:6px 8px;}
.ef-fine .chk{margin-top:6px;}
@media (max-width:560px){.cl-share{flex-wrap:wrap;}.cf-row{align-items:flex-start;}}
/* ===== Chats on a phone (stage 1): an open dialog is a screen of its own ===== */
.ch-send-i{display:none;}
.ch-limits{display:block;}
.ch-composer textarea{overflow-y:hidden;}
@media (max-width:900px),(pointer:coarse) and (max-height:500px){
  .ch-limits{display:none;margin:0;}
  .ch-limits.show{display:block;}
  /* only inside an open dialog: the shared bar with the menu and the cabinet switch, the warnings, the install banners and the bottom bar step aside */
  body.chat-dialog{overflow:hidden;overscroll-behavior:none;}
  body.chat-dialog .topbar,body.chat-dialog #bottomNav,body.chat-dialog main#app>.cab-warn,body.chat-dialog .pwa-banner,body.chat-dialog .pwa-offer{display:none;}
  body.chat-dialog main#app{padding:0;max-width:none;}
  /* it follows the VISIBLE part of the screen (--vvh/--vvt come from visualViewport), so the field stays above the keyboard; the heights fall back to dvh */
  body.chat-dialog .ch-wrap.ch-open{position:fixed;left:0;right:0;top:var(--vvt,0px);height:var(--vvh,100dvh);max-height:100dvh;min-height:0;z-index:35;border:0;border-radius:0;background:var(--card);}
  body.chat-dialog .ch-wrap.ch-open .ch-head{padding:calc(8px + var(--sat)) calc(10px + var(--sar)) 8px calc(10px + var(--sal));flex:none;}
  body.chat-dialog .ch-wrap.ch-open .ch-msgs{padding-left:calc(12px + var(--sal));padding-right:calc(12px + var(--sar));-webkit-overflow-scrolling:touch;}
  body.chat-dialog .ch-wrap.ch-open .ch-composer{flex:none;padding:8px calc(10px + var(--sar)) calc(8px + var(--sab)) calc(10px + var(--sal));gap:6px;}
  body.chat-dialog.kb-open .ch-wrap.ch-open .ch-composer{padding-bottom:8px;}   /* the keyboard covers the home indicator */
  body.chat-dialog .ch-wrap.ch-open .ch-new{bottom:calc(var(--ch-comp-h,76px) + 12px);}
  body.chat-dialog .ch-wrap.ch-open .ch-pins{flex:none;}
  body.chat-dialog .ch-wrap.ch-open .ch-search{flex:none;}
  body.chat-dialog .ch-wrap.ch-open .ch-sres{max-height:30vh;}
}
@media (max-width:480px){
  /* one row: clip, mention, field, send (an arrow instead of the word; the accessible name stays «Отправить») */
  body.chat-dialog .ch-row{flex-wrap:nowrap;align-items:flex-end;}
  body.chat-dialog .ch-row textarea{order:0;flex:1 1 auto;min-width:0;}
  body.chat-dialog .ch-row #chSend{margin-left:0;min-width:44px;padding:0 10px;}
  body.chat-dialog .ch-send-t{display:none;}
  body.chat-dialog .ch-send-i{display:inline;font-size:18px;}
  body.chat-dialog .ch-tool{min-width:40px;padding:0 6px;}
}

/* the test-stand badge (a fixed strip at the very top) must not cover the header of an open dialog: the dialog starts below it. The badge exists only on the test stand and previews. */
body:has(#standBadge){--stand-h:20px;}
@media (max-width:900px),(pointer:coarse) and (max-height:500px){
  body.chat-dialog .ch-wrap.ch-open{top:calc(var(--vvt,0px) + var(--stand-h,0px));height:calc(var(--vvh,100dvh) - var(--stand-h,0px));max-height:calc(100dvh - var(--stand-h,0px));}
  body.chat-dialog:has(#standBadge) .ch-wrap.ch-open .ch-head{padding-top:8px;}   /* the badge already takes the top inset */
}

/* Chats stage 2: a name on every message. One line with an ellipsis (the full name is in the title); room is kept on the right for the «⋯» button. */
.ch-author{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:30px;}
.ch-msg.mine .ch-author{color:var(--muted);}

/* Chats stage 3: the list of rooms - avatar, name, time of the last message, a short last line with the author, a visible unread counter */
.ch-room{display:flex;align-items:center;gap:12px;}
.ch-room-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
.ch-room-t,.ch-room-b{display:flex;align-items:center;gap:8px;min-width:0;}
.ch-room-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ch-room-time{flex:none;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;}
.ch-room-b .ch-room-l{flex:1;min-width:0;margin:0;}
.ch-av{flex:none;width:44px;height:44px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;letter-spacing:.01em;color:#fff;}
.ch-av-wb{background:var(--pink);}
.ch-av-ozon{background:var(--accent);}
.ch-av-n{background:color-mix(in srgb,var(--muted) 22%,var(--card));color:var(--muted);}
.ch-av-n svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.ch-unread{flex:none;margin-left:0;min-width:24px;height:24px;padding:0 7px;border-radius:12px;font-size:13px;font-weight:800;line-height:1;box-shadow:0 0 0 2px color-mix(in srgb,var(--danger) 22%,transparent);}
.ch-room.has-unread .ch-room-name{font-weight:800;}
.ch-room.has-unread .ch-room-l{color:var(--text);font-weight:600;}
.ch-room.has-unread .ch-room-time{color:var(--danger);font-weight:700;}

/* Chats stage 4: photos in the dialog. The place of a thumbnail is reserved (fixed proportions), so a picture arriving never moves the message that is being read. */
.ch-thumbs{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;}
.ch-thumb{all:unset;box-sizing:border-box;position:relative;display:block;width:220px;max-width:100%;aspect-ratio:4/3;border-radius:10px;overflow:hidden;background:color-mix(in srgb,var(--muted) 16%,var(--card));border:1px solid var(--border);}
button.ch-thumb{cursor:zoom-in;}
button.ch-thumb:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.ch-thumb img{display:block;width:100%;height:100%;object-fit:cover;}
.ch-thumb-sk{position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,color-mix(in srgb,var(--muted) 22%,transparent) 50%,transparent 70%);background-size:200% 100%;animation:ch-sk 1.3s linear infinite;}
@keyframes ch-sk{from{background-position:200% 0}to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.ch-thumb-sk{animation:none;}}
.ch-thumb.bad{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:10px;text-align:center;font-size:13px;}
.ch-thumb-msg{color:var(--text);font-weight:600;}
.ch-thumb-name{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;}
.ch-thumb-retry{border:1px solid var(--border);background:var(--card);color:var(--accent);font:inherit;font-weight:600;border-radius:8px;min-height:36px;padding:0 14px;cursor:pointer;}
.ch-viewer{position:fixed;inset:0;z-index:90;background:rgba(5,10,20,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:calc(56px + var(--sat)) 12px calc(48px + var(--sab));}
.ch-viewer-stage{flex:1;min-height:0;width:100%;display:flex;align-items:center;justify-content:center;}
.ch-viewer-stage img{max-width:100%;max-height:100%;object-fit:contain;}
.ch-viewer-cap{position:absolute;left:12px;right:12px;bottom:calc(12px + var(--sab));text-align:center;color:#e8edf5;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ch-viewer-x{position:absolute;top:calc(8px + var(--sat));right:12px;width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.35);background:rgba(20,28,45,.85);color:#fff;font-size:20px;line-height:1;cursor:pointer;}
.ch-viewer-x:focus-visible{outline:2px solid #fff;outline-offset:2px;}

/* Chats: the composer is ONE column of rows and never wraps (a wrapping column put the input row into a second column on the right, off the screen). The note is a calm row of its own above the input row. */
.ch-composer{flex-wrap:nowrap;}
.ch-composer>*{flex:none;}
.ch-composer .ch-row{width:100%;box-sizing:border-box;}
.ch-note{box-sizing:border-box;width:100%;padding:8px 10px;border-radius:8px;border-left:3px solid var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--card));color:var(--text);font-size:13px;font-weight:500;line-height:1.35;overflow-wrap:anywhere;word-break:break-word;}
.ch-note[hidden]{display:none;}
.ch-note.ch-denied{border-left-color:var(--danger);background:color-mix(in srgb,var(--danger) 9%,var(--card));font-weight:600;}
.ch-composer textarea{width:100%;}

/* ===== Chats: the look of the dialog (as in the MAX references) =====
   Incoming on the left with a round avatar at the bottom edge, own on the right; a compact name on every message; photos fill the width of the bubble (no frame in a frame); an album of 2-5 photos of ONE message is
   one block with narrow gaps; the time lies on a photo that has no caption. The pictures behind the messages are the GURU PVZ motif, calm, only in the area of the dialog. */
.ch-msgs{--chat-bg-color:#EEF1F8;--chat-bg-img:url(/brand/chat-bg-light.svg);background-color:var(--chat-bg-color);background-image:var(--chat-bg-img);background-size:480px 480px;background-repeat:repeat;gap:4px;padding-top:10px;}
:root[data-theme="dark"] .ch-msgs{--chat-bg-color:#111622;--chat-bg-img:url(/brand/chat-bg-dark.svg);}
.ch-day{background:color-mix(in srgb,var(--card) 90%,transparent);color:var(--muted);padding:2px 12px;border-radius:12px;border:1px solid var(--border);font-weight:600;}
.ch-msg{padding:5px 10px 4px;border-radius:16px;background:var(--card);border:1px solid var(--border);box-shadow:0 1px 1px rgba(9,27,54,.06);}
.ch-msg.other{margin-left:40px;max-width:min(calc(100% - 44px),560px);border-bottom-left-radius:6px;}
.ch-msg.mine{max-width:min(88%,560px);border-bottom-right-radius:6px;background:color-mix(in srgb,var(--accent) 16%,var(--card));border-color:color-mix(in srgb,var(--accent) 30%,var(--border));}
.ch-av-u{position:absolute;left:-40px;bottom:-1px;width:32px;height:32px;border-radius:50%;background:hsl(var(--ah,210) 50% 42%);color:#fff;font-size:12px;font-weight:700;line-height:32px;text-align:center;letter-spacing:.02em;pointer-events:none;}
.ch-author{font-size:12.5px;font-weight:700;line-height:1.25;margin-bottom:1px;}
.ch-msg.other .ch-author{color:hsl(var(--ah,210) 62% 34%);}
:root[data-theme="dark"] .ch-msg.other .ch-author{color:hsl(var(--ah,210) 78% 72%);}
.ch-msg.mine .ch-author{color:var(--muted);}
.ch-time{font-size:11px;line-height:1.3;}
/* photos */
.ch-msg.has-media{padding:0;}
.ch-msg.has-media>.ch-author{padding:6px 34px 3px 10px;margin:0;}
.ch-msg.has-media>.ch-body,.ch-msg.has-media>.ch-quote,.ch-msg.has-media>.ch-files,.ch-msg.has-media>.ch-links,.ch-msg.has-media>.ch-pin-mark{margin-left:10px;margin-right:10px;width:auto;}
.ch-msg.has-media>.ch-body{padding-top:4px;}
.ch-msg.has-media>.ch-time{padding:0 10px 4px;}
.ch-media{display:block;position:relative;overflow:hidden;line-height:0;background:color-mix(in srgb,var(--muted) 14%,var(--card));}
.ch-media.single{--maxh:min(60vh,460px);--bw:calc(250px + 110px * clamp(0, (var(--r) - .75) / .75, 1));width:min(var(--bw),calc(100vw - 104px),calc(var(--maxh) * var(--r)));aspect-ratio:var(--r);}
@supports (height:1dvh){.ch-media.single{--maxh:min(60dvh,460px);}}
.ch-media .ch-thumb{width:100%;max-width:none;aspect-ratio:auto;border:0;border-radius:0;background:transparent;min-width:0;min-height:0;}
.ch-media.single .ch-thumb{position:absolute;inset:0;height:100%;}
.ch-media .ch-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.ch-media.single .ch-thumb img{object-fit:cover;}
.ch-media.album{display:grid;gap:2px;width:min(360px,calc(100vw - 104px));}
.ch-media.album .ch-thumb{position:relative;height:100%;}
.ch-media.album.n2{grid-template-columns:1fr 1fr;aspect-ratio:3/2;}
.ch-media.album.n3{grid-template-columns:1fr 1fr;grid-template-rows:2fr 1fr;aspect-ratio:1/1;}
.ch-media.album.n3>:first-child{grid-column:1/3;}
.ch-media.album.n4{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;aspect-ratio:1/1;}
.ch-media.album.n5{grid-template-columns:repeat(6,1fr);grid-template-rows:3fr 2fr;aspect-ratio:1/1;}
.ch-media.album.n5>:nth-child(-n+2){grid-column:span 3;}
.ch-media.album.n5>:nth-child(n+3){grid-column:span 2;}
.ch-media.album .ch-thumb.bad{font-size:11px;padding:4px;gap:3px;}
.ch-media.album .ch-thumb.bad .ch-thumb-name{display:none;}
.ch-media.album .ch-thumb-retry{min-height:30px;padding:0 8px;font-size:12px;}
.ch-msg.media-only .ch-media{border-radius:0 0 15px 15px;}
.ch-msg.other.media-only .ch-media{border-bottom-left-radius:5px;}
.ch-msg.mine.media-only .ch-media{border-bottom-right-radius:5px;}
.ch-msg.media-only>.ch-time{position:absolute;right:8px;bottom:8px;margin:0;padding:1px 7px;border-radius:10px;background:rgba(8,12,22,.55);color:#fff;line-height:1.5;}
.ch-msg.media-only>.ch-time .muted,.ch-msg.media-only>.ch-time .ch-fail{color:inherit;}
/* the header of the room */
.ch-head .ch-av{width:38px;height:38px;font-size:13px;}
.ch-head{gap:8px;}
/* the full-size view: walking through an album */
.ch-viewer-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:64px;border:0;border-radius:12px;background:rgba(20,28,45,.7);color:#fff;font-size:30px;line-height:1;cursor:pointer;z-index:2;}
.ch-viewer-prev{left:8px;}.ch-viewer-next{right:8px;}
.ch-viewer-nav[hidden]{display:none;}
.ch-viewer-wait{color:#e8edf5;font-size:15px;display:flex;flex-direction:column;align-items:center;gap:10px;}
@media (max-width:480px){.ch-viewer-nav{width:36px;height:56px;background:rgba(20,28,45,.5);}}
/* the bubble of a photo is as wide as the photo: the name and the caption wrap/cut inside that width and never widen it */
.ch-msg.has-media{width:fit-content;}
.ch-msg.has-media>.ch-author,.ch-msg.has-media>.ch-body,.ch-msg.has-media>.ch-quote,.ch-msg.has-media>.ch-files,.ch-msg.has-media>.ch-links{width:0;min-width:calc(100% - 20px);box-sizing:border-box;}
.ch-msg.has-media>.ch-author{min-width:100%;}

/* ===== Chats: rotation of a phone (landscape = a short, wide screen) ===== */
/* A phone turned sideways is a SHORT screen (about 320-430 px high) that can be wider than 900 px (Plus / Pro Max: 926-932). The chat layout therefore follows the touch + short height as well, not the width alone. */
@media (min-width:901px) and (max-height:520px){
  .ch-wrap{height:calc(100vh - 130px);height:calc(100dvh - 130px);min-height:220px;}
}
@media (pointer:coarse) and (max-height:500px){
  /* the list: the sidebar of the wide layout keeps its own scroll; the list gets a usable height, the page scrolls for the rest */
  .ch-wrap{min-height:240px;}
  .ch-wrap:not(.ch-open){height:max(240px,calc(100dvh - 130px));}
  /* the side insets of the notch / home indicator in landscape */
  main#app{padding-left:max(16px,var(--sal));padding-right:max(16px,var(--sar));}
  .topbar{padding-left:max(16px,var(--sal));padding-right:max(16px,var(--sar));}
  #bottomNav{padding-left:max(4px,var(--sal));padding-right:max(4px,var(--sar));}
  /* a compact dialog: fewer paddings, the field is a single row */
  body.chat-dialog .ch-wrap.ch-open .ch-head{padding-top:calc(4px + var(--sat));padding-bottom:4px;}
  body.chat-dialog .ch-wrap.ch-open .ch-composer{padding-top:6px;}
  body.chat-dialog .ch-row{flex-wrap:nowrap;align-items:flex-end;}
  body.chat-dialog .ch-row textarea{order:0;flex:1 1 auto;min-width:0;}
  body.chat-dialog .ch-row #chSend{margin-left:0;min-width:44px;padding:0 10px;}
  body.chat-dialog .ch-send-t{display:none;}
  body.chat-dialog .ch-send-i{display:inline;font-size:18px;}
  body.chat-dialog .ch-tool{min-width:40px;padding:0 6px;}
  body.chat-dialog .ch-wrap.ch-open .ch-msg{max-width:min(88%,640px);}
  /* the viewer: the buttons sit in the corners, the picture takes the whole height between the insets */
  .ch-viewer{padding:calc(8px + var(--sat)) calc(64px + var(--sar)) calc(28px + var(--sab)) calc(64px + var(--sal));}
  .ch-viewer-x{top:calc(6px + var(--sat));right:calc(8px + var(--sar));}
  .ch-viewer-prev{left:calc(8px + var(--sal));}.ch-viewer-next{right:calc(8px + var(--sar));}
  .ch-viewer-cap{bottom:calc(6px + var(--sab));left:calc(12px + var(--sal));right:calc(12px + var(--sar));}
  /* a single photo or album in a message: no taller than the visible part of the dialog */
  .ch-media.single{--maxh:min(58vh,460px);}
  @supports (height:1dvh){.ch-media.single{--maxh:min(58dvh,460px);}}
  .ch-media.album{width:min(300px,calc(100vw - 104px - var(--sal) - var(--sar)),58vh);width:min(300px,calc(100vw - 104px - var(--sal) - var(--sar)),58dvh);}   /* a square album is as high as wide */
}

/* ===== Chats: one list for Ozon and WB, switcher «Все / Ozon / WB» and a search over the list ===== */
.ch-list-top{position:sticky;top:0;z-index:2;background:var(--card);border-bottom:1px solid var(--border);}
.ch-list-top .ch-list-h{position:static;border-bottom:0;padding-bottom:8px;}
.ch-fs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:0 14px 10px;}
.ch-filter{display:inline-flex;gap:4px;padding:3px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--bg) 60%,var(--card));}
.ch-chip-f{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border-radius:9px;cursor:pointer;font-size:14px;font-weight:600;color:var(--muted);}
.ch-chip-f.on{background:var(--accent2);color:#fff;}   /* accent2: white text stays ≥ 4.5:1 in the dark theme too */
.ch-chip-f:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.ch-chip-n{min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:9px;background:var(--danger);color:#fff;font-size:11px;line-height:18px;text-align:center;}
.ch-lq{flex:1 1 140px;min-width:0;min-height:40px;font-size:16px;}
.ch-none{text-align:center;}
@media (pointer:coarse) and (max-height:500px){
  /* a short screen: «Чаты» + «+ Группа», the switcher and the search share one row, so more rooms fit */
  .ch-list-top{display:flex;flex-wrap:wrap;align-items:center;}
  .ch-list-top .ch-list-h{flex:none;padding:8px 8px 8px 14px;gap:12px;}
  .ch-list-top .ch-fs{flex:1 1 320px;padding:8px 14px 8px 0;}
}

/* ===== Chats on a wide phone in landscape (Plus / Pro Max, 926-932 px): the shell of a phone, not the desktop side panel =====
   Only while the «Чаты» section is open (body.tab-chats, set by chSyncMode): the side panel becomes the same off-canvas menu as on a narrow phone, the top bar and the bottom bar are the phone ones,
   so the list and the dialog use the whole width inside the safe-area. Other sections keep the layout they have. */
@media (min-width:901px) and (pointer:coarse) and (max-height:500px){
  body.tab-chats #sidebar{width:min(88vw,400px);max-width:100%;transform:translateX(-100%);transition:transform .2s;box-shadow:0 0 40px rgba(0,0,0,.2);z-index:60;overflow:hidden;overscroll-behavior:contain;padding:12px 12px var(--sab);}
  body.tab-chats.menu-open #sidebar{transform:none;}
  body.tab-chats.menu-open #sideBackdrop{display:block;position:fixed;inset:0;background:rgba(9,27,54,.35);z-index:55;touch-action:none;}
  body.tab-chats.menu-open{overflow:hidden;}
  body.tab-chats .content{margin-left:0;}
  body.tab-chats #menuBtn{display:inline-block;}
  body.tab-chats .side-logo{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 12px;}
  body.tab-chats .side-close{display:inline-flex;align-items:center;justify-content:center;flex:none;width:var(--ctl-h,44px);height:var(--ctl-h,44px);border:1px solid var(--border);border-radius:10px;color:var(--text);background:var(--card);font-size:18px;}
  body.tab-chats #cabSide{margin:0 4px 6px;}
  body.tab-chats #sideNav{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-right:2px;}
  body.tab-chats .side-bottom{flex:none;background:var(--card);margin-top:6px;}
  body.tab-chats .topbar{padding-top:14px;}
  body.tab-chats .topbar h1{font-size:19px;}
  body.tab-chats #cabTop{display:block;flex:0 1 auto;}
  body.tab-chats #cabTop .cab-sw button{padding:6px 8px;font-size:12.5px;}
  body.tab-chats main#app{padding-top:12px;padding-bottom:calc(var(--bn-h,64px) + 24px);}
  body.tab-chats #bottomNav{display:flex;position:fixed;left:0;right:0;bottom:0;background:var(--card);border-top:1px solid var(--border);z-index:20;padding-top:6px;padding-bottom:calc(6px + var(--sab));}
  body.tab-chats #bottomNav.bn5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:stretch;}
  body.tab-chats #bottomNav button{flex:1;border:0;background:transparent;color:var(--muted);font:inherit;font-size:11px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:3px;padding:4px 0;min-height:48px;min-width:0;cursor:pointer;}
  body.tab-chats #bottomNav button.active{color:var(--accent);font-weight:600;}
  body.tab-chats #bottomNav .bn-ico{position:relative;display:inline-flex;width:22px;height:22px;flex:none;}
  body.tab-chats #bottomNav .bn-ico svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
  body.tab-chats #bottomNav .bn-lbl{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.2;}
  body.tab-chats #bottomNav .nav-badge{position:absolute;top:-7px;left:calc(100% - 9px);margin:0;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;font-size:11px;line-height:1;border:2px solid var(--card);}
  body.tab-chats.kb-open #bottomNav{display:none;}
  body.tab-chats.kb-open main#app{padding-bottom:24px;}
  body.tab-chats .ch-wrap:not(.ch-open){height:max(240px,calc(100dvh - 150px - var(--bn-h,64px)));}
}

/* ===== Photo viewer: the caption of the message and the counter only (no file name, no size) ===== */
.ch-viewer-cap[hidden]{display:none;}
.ch-viewer-cap span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ch-viewer-cap-n{opacity:.8;font-size:12.5px;}
.ch-viewer.has-cap-t{padding-bottom:calc(68px + var(--sab));}
@media (pointer:coarse) and (max-height:500px){ .ch-viewer.has-cap-t{padding-bottom:calc(50px + var(--sab));} }
/* legal entities (stage 25) */
.pt-filters{display:flex;flex-wrap:wrap;gap:var(--gap-s,8px) 10px;align-items:stretch;}   /* one row of equal controls: City, Report, Legal entity; wraps on narrow screens, no empty slot when the legal filter is hidden */
.pt-filters>select,.pt-filters>.pt-multi>summary{min-height:var(--ctl-h);height:var(--ctl-h);box-sizing:border-box;padding:0 11px;border:1px solid var(--border);border-radius:9px;background:var(--card);color:var(--text);font-size:14px;font-family:inherit;line-height:1.25;}
.pt-filters>.pt-multi{display:flex;}
.pt-filters>.pt-multi>summary{margin-top:0;}   /* the global «details summary» rule adds 8px on top */
.pt-multi{position:relative;}
.pt-multi>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;white-space:nowrap;}
.pt-multi>summary::after{content:'';margin-left:auto;width:6px;height:6px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg) translateY(-2px);flex:none;}
.pt-multi>summary b{font-weight:600;overflow:hidden;text-overflow:ellipsis;max-width:200px;display:inline-block;vertical-align:bottom;}
.pt-multi>summary::-webkit-details-marker{display:none;}
.pt-multi-pop{position:absolute;z-index:20;top:calc(100% + 4px);left:0;min-width:280px;max-width:min(92vw,420px);max-height:320px;overflow:auto;background:var(--card);border:1px solid var(--border);border-radius:var(--r);box-shadow:0 8px 24px rgba(0,0,0,.14);padding:8px 10px;display:flex;flex-direction:column;gap:6px;}
.pt-legal{margin-top:2px;}
.pf-legal-new{margin-top:10px;}
.pf-legal-new>summary{cursor:pointer;color:var(--accent);font-weight:600;}
.pf-legal-box{margin-top:10px;padding:12px;border:1px dashed var(--border);border-radius:var(--r);}
.lg-row{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--border);}
.lg-row.lg-arch{opacity:.75;}
.lg-act{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;}
@media (max-width:720px){ .lg-row{flex-direction:column;} .lg-act{justify-content:flex-start;} .pt-multi-pop{position:fixed;left:16px;right:16px;top:auto;bottom:84px;max-width:none;max-height:50vh;} }
/* Сотрудники → Импорт из Excel (stage 29): the table is editable; the cells use the whole width of the cell */
.ei-tbl input[type=text],.ei-tbl select{width:100%;min-width:0;box-sizing:border-box;min-height:36px;font-size:13px;}
.ei-tbl th:nth-child(1){width:54px;} .ei-tbl th:nth-child(2){width:19%;} .ei-tbl th:nth-child(3),.ei-tbl th:nth-child(4){width:11%;} .ei-tbl th:nth-child(5){width:13%;} .ei-tbl th:nth-child(6),.ei-tbl th:nth-child(7){width:9%;} .ei-tbl th:nth-child(8){width:auto;}

/* stage 30b: «Из настроек ПВЗ» / «Индивидуально» */
.emp-mode{border:1px solid var(--border);border-radius:12px;padding:10px 12px;min-width:0;}
.emp-mode legend{padding:0 6px;font-weight:600;font-size:13.5px;}
.emp-mode .chk{display:flex;align-items:center;gap:8px;min-height:36px;margin:0;font-weight:400;}
.emp-mode input[type=text]{width:100%;box-sizing:border-box;margin-top:6px;}
.emp-inh{margin-top:6px;font-size:13px;display:flex;flex-direction:column;gap:4px;}
.emp-inh-line{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.emp-inh-line span{min-width:0;overflow-wrap:anywhere;}
.emp-kv-inh{flex-direction:column;align-items:stretch;}


/* ---- Расходы → Платежи за аренду (js/rent-payments.js) ---- */
.exp-tabs{margin:0 0 12px;} .exp-tabs .seg{max-width:100%;} .exp-tabs .seg button{min-height:40px;white-space:nowrap;}
.rp-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 12px;} .rp-filters .fld{margin-bottom:0;min-width:0;} .rp-filters select,.rp-filters input{width:100%;min-width:0;}
.rp-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0;}
.rp-tile{background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:10px 14px;display:flex;flex-direction:column;gap:4px;min-width:0;}
.rp-tile span{font-size:12.5px;color:var(--muted);} .rp-tile b{font-size:18px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;} .rp-tile.ok b{color:var(--ok);} .rp-tile.bad b{color:var(--bad);}
.rp-list{display:flex;flex-direction:column;gap:8px;}
.rp-row{display:grid;grid-template-columns:minmax(140px,1.5fr) minmax(120px,1.2fr) 108px 112px minmax(130px,1fr) minmax(130px,1fr) minmax(280px,auto);gap:10px;align-items:start;background:var(--card);border:1px solid var(--border);border-radius:var(--r);padding:10px 14px;font-size:13.5px;}
.rp-row.rp-head{background:transparent;border:0;padding:0 14px;font-size:12px;color:var(--muted);font-weight:600;} .rp-row.overdue{border-color:rgba(220,38,38,.45);}
.rp-c{min-width:0;overflow-wrap:anywhere;} .rp-row .r{text-align:right;font-variant-numeric:tabular-nums;} .rp-sub,.rp-when{font-size:12px;color:var(--muted);margin-top:2px;}
.rp-act{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;} .rp-act .btn{min-width:84px;min-height:36px;}
.rp-empty{text-align:center;padding:22px 14px;} .rp-foot{margin:14px 0;} .rp-foot .btn{min-height:40px;}
.rp-pay-h{margin-bottom:8px;} .rp-rc{border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;margin-top:10px;} .rp-rc.cancelled{opacity:.7;} .rp-rc-act{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;} .rp-rc-act .btn{min-height:36px;}
.rp-inline{margin-top:8px;} .rp-hist{margin-top:8px;font-size:12.5px;} .rp-hist ul{margin:6px 0 0;padding-left:18px;}
.rp-newcp{border:1px dashed var(--border);border-radius:var(--r);padding:8px 12px;margin:0 0 12px;} .rp-newcp summary{cursor:pointer;color:var(--accent);font-weight:600;min-height:32px;display:flex;align-items:center;}
.rp-ptrow{display:grid;grid-template-columns:minmax(0,1fr) 130px;gap:10px;align-items:center;padding:6px 0;border-bottom:1px solid var(--border);} .rp-ptrow input{min-width:0;} .rp-total{margin-top:8px;font-size:14px;}
@media (max-width:1100px){ .rp-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);} .rp-row.rp-head{display:none;} .rp-row .r{text-align:left;} .rp-act{grid-column:1/-1;justify-content:flex-start;}
  .rp-c[data-l]::before{content:attr(data-l);display:block;font-size:11.5px;color:var(--muted);margin-bottom:2px;} }
@media (max-width:760px){ .rp-filters{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 10px;} .rp-filters .fld{margin-bottom:8px;} .rp-summary{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
  .rp-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 12px;padding:12px;} .rp-pts{grid-column:1/-1;font-size:14.5px;} .rp-act{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;} .rp-act .btn{min-width:0;width:100%;padding-left:6px;padding-right:6px;}
  .exp-tabs .seg{display:flex;width:100%;} .exp-tabs .seg button{flex:1;padding:8px 6px;font-size:14px;white-space:normal;} .rp-ptrow{grid-template-columns:minmax(0,1fr) 110px;} }
.rp-help{margin:0 0 10px;font-size:13px;} .rp-help summary{cursor:pointer;color:var(--accent);font-weight:600;min-height:32px;display:flex;align-items:center;} .rp-help p{margin:4px 0;color:var(--muted);}
.rp-prepay{margin:8px 0;} .rp-merge{margin-top:12px;padding-top:8px;border-top:1px dashed var(--border);} .rp-merge-h{font-weight:600;margin-bottom:2px;} .rp-ptrow.other .rp-sub{display:block;} .rp-move{grid-column:1/-1;font-size:12.5px;color:var(--amber);margin:2px 0 4px;}

/* Employees: separate filters, readable point details and predictable card actions. */
.emp-toolbar{margin-bottom:16px;}
.emp-toolbar-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px;}
.emp-toolbar .count{font-size:13px;color:var(--muted);}
.emp-toolbar-actions{display:flex;gap:8px;flex-wrap:wrap;}
.emp-toolbar-actions > button.btn{width:200px;min-width:0;height:var(--ctl-h);padding:0 14px;}
.emp-filters{display:grid;grid-template-columns:minmax(220px,2fr) minmax(160px,1fr) minmax(140px,1fr);gap:12px;}
.emp-filters label{display:flex;flex-direction:column;gap:6px;min-width:0;margin:0;}
.emp-filters label > span{font-size:12px;color:var(--muted);font-weight:500;}
.emp-filters input,.emp-filters select{width:100%;min-width:0;margin:0;background:var(--card);}
.emp-pts,.emp-point-list{display:flex;flex-direction:column;gap:10px;min-width:0;}
.emp-point-detail{display:flex;flex-direction:column;gap:3px;min-width:0;text-align:left;line-height:1.4;}
.emp-point-market{font-size:11px;font-weight:600;}
.emp-point-market.mp-wb{color:var(--wb,#a855f7);}
.emp-point-market.mp-ozon{color:var(--accent);}
.emp-point-unset{color:var(--muted);}
.emp-point-address{font-size:13px;font-weight:500;overflow-wrap:anywhere;}
#empTabBody > .kvline{display:grid;grid-template-columns:130px minmax(0,1fr);align-items:start;gap:12px;padding:10px 0;line-height:1.45;}
#empTabBody > .kvline > span:first-child{color:var(--muted);overflow-wrap:normal;}
#empTabBody > .kvline > b{text-align:left;min-width:0;}
#empTabBody > .emp-kv-pts,#empTabBody > .emp-kv-inh{display:flex;flex-direction:column;align-items:stretch;gap:8px;}
#empTabBody .emp-point-list{padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:10px;}
.emp-value{display:flex;flex-direction:column;gap:3px;min-width:0;}
.emp-value b{text-align:left;}
.emp-value-note{display:block;color:var(--muted);font-size:12px;font-weight:400;line-height:1.4;}
.emp-foot{display:flex;flex-direction:column;align-items:stretch;gap:10px;}
.emp-foot-primary,.emp-foot-secondary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.emp-foot-secondary{padding-top:10px;border-top:1px solid var(--border);}
.emp-foot .btn{width:100%;min-width:0;margin:0;}
@media (min-width:901px) and (max-width:1400px){
  .emp-row{grid-template-columns:minmax(150px,1fr) minmax(180px,1.3fr) minmax(150px,1fr);}
  .emp-row .emp-act{grid-column:1/-1;justify-content:flex-end;}
}
@media (max-width:600px){
  .emp-toolbar-top{align-items:stretch;}
  .emp-toolbar-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;}
  .emp-toolbar-actions > button.btn{min-width:0;width:100%;height:auto;min-height:var(--ctl-h);padding:9px 8px;font-size:13px;}
  .emp-toolbar-actions > #empAddBtn{grid-column:1/-1;}
  .emp-filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
  .emp-filter-search{grid-column:1/-1;}
  #empTabBody > .kvline{grid-template-columns:110px minmax(0,1fr);}
}

/* Employee invitation and marketplace labels, including the point picker. */
.emp-act button.btn.secondary[data-emp-invite]{background:#e7f6ed;border-color:#9bcbae;color:#17613a;}
.emp-act button.btn.secondary[data-emp-invite]:hover{background:#d6efdf;border-color:#409868;}
:root[data-theme="dark"] .emp-act button.btn.secondary[data-emp-invite]{background:#183b30;border-color:#35775c;color:#98e6ba;}
:root[data-theme="dark"] .emp-act button.btn.secondary[data-emp-invite]:hover{background:#224e3e;border-color:#54a780;}
.emp-point-market,#epList .ep-txt > .mp{display:inline-flex;align-items:center;align-self:flex-start;width:fit-content;max-width:100%;min-height:22px;box-sizing:border-box;padding:2px 8px;margin:0;border-radius:6px;font-size:11px;font-weight:600;line-height:1.4;}
.emp-point-market.mp-wb,#epList .ep-txt > .mp-wb{background:#f5e7f8;color:#86198f;}
.emp-point-market.mp-ozon,#epList .ep-txt > .mp-ozon{background:#e8efff;color:#2455c5;}
:root[data-theme="dark"] .emp-point-market.mp-wb,:root[data-theme="dark"] #epList .ep-txt > .mp-wb{background:#38213f;color:#f0b0ed;}
:root[data-theme="dark"] .emp-point-market.mp-ozon,:root[data-theme="dark"] #epList .ep-txt > .mp-ozon{background:#1d315b;color:#aac8ff;}
.emp-point-detail{gap:5px;}
.emp-selected-label{display:block;color:var(--muted);font-size:12px;margin-bottom:8px;}
.emp-selected-list{display:flex;flex-direction:column;gap:6px;}
.emp-selected-point{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;padding:9px 12px;background:var(--bg);border:1px solid var(--border);border-radius:8px;line-height:1.4;min-width:0;}
.emp-selected-point .emp-point-market{flex:0 0 auto;align-self:center;}
.emp-selected-address{flex:1 1 160px;min-width:0;font-size:13px;overflow-wrap:anywhere;}
#epList .ep-txt{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;min-width:0;}
#epList .ep-txt > b{min-width:0;overflow-wrap:anywhere;}
#epList .ep-txt > .pt-sub{flex:1 1 100%;margin:0;}


/* Reports and rent use independent filter layouts. */
.report-filters{display:block;}
.report-filters h3{margin:0 0 16px;}
.report-filters .rp-grid{grid-template-columns:repeat(2,minmax(180px,1fr)) minmax(220px,1.5fr) minmax(180px,1fr);gap:14px;}
.report-filters input,.report-filters select{width:100%;min-width:0;box-sizing:border-box;}
.report-filters #rpSummary{margin-top:12px;line-height:1.5;}
#sidePanel .rent-dates{grid-template-columns:1fr;}
#sidePanel .fld label,#sidePanel .fld legend{height:auto;white-space:normal;overflow-wrap:anywhere;line-height:1.4;}
#sidePanel .fld-row,#sidePanel .fld-row3{row-gap:12px;align-items:start;}
#sidePanel .mf .fld-row3{grid-template-columns:1fr;}
#sidePanel .cl-card .cl-sec{min-width:0;}
#sidePanel .cl-card .cl-sec>.btn{margin:0 0 18px;}
#sidePanel .cl-card .cl-status{gap:10px;}
#sidePanel .cl-card .hint{margin-top:8px;line-height:1.5;overflow-wrap:anywhere;}
#sidePanel .cl-card .cl-kv{gap:12px;}
#sidePanel .cl-form .fld-row,#sidePanel .cl-card .fld-row{grid-template-columns:1fr;}
#sidePanel .mf .chk{gap:8px;line-height:1.5;min-width:0;}
#sidePanel .mf .chk input{flex:none;}
@media(max-width:1100px){.report-filters .rp-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:600px){.report-filters .rp-grid{grid-template-columns:1fr;}}

.activity-row{padding:14px 0;border-bottom:1px solid var(--border);line-height:1.5;overflow-wrap:anywhere;}
[hidden]#rsTransfer{display:none!important;}

/* Points directory: actions, labeled filters and list controls occupy separate rows. */
.pt-toolbar{margin-bottom:18px;display:grid;gap:18px;}
.pt-toolbar-top,.pt-toolbar-bottom,.pt-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.pt-toolbar-top{justify-content:space-between;}
.pt-toolbar .count{color:var(--muted);font-size:13px;}
.pt-actions .btn{font-size:13px;padding:9px 13px;}
.pt-filter-grid{display:grid;grid-template-columns:minmax(240px,1.4fr) repeat(3,minmax(160px,1fr));gap:12px;padding:16px;background:var(--card);border:1px solid var(--border);border-radius:var(--r);}
.pt-filter{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:12px;color:var(--muted);}
.pt-filter input,.pt-filter select,.pt-filter .pt-multi>summary{width:100%;min-width:0;max-width:100%;height:42px;min-height:42px;margin:0;padding:0 12px;font-size:14px;box-sizing:border-box;background:var(--bg);border:1px solid var(--border);border-radius:9px;color:var(--text);}
.pt-filter .pt-multi>summary b{max-width:none;min-width:0;font-weight:400;}
.pt-filter .pt-multi-pop{min-width:100%;width:340px;}
.pt-toolbar-bottom .pt-view{margin-left:auto;}
.pt-toolbar .seg small{margin-left:5px;opacity:.7;}
.pt-list .pt-row{grid-template-columns:minmax(200px,2fr) 80px minmax(140px,1fr) 154px;gap:18px;min-height:76px;padding:14px 16px;}
.pt-list.pt-with-legal .pt-row{grid-template-columns:minmax(210px,1.8fr) minmax(150px,1.1fr) 70px minmax(125px,1fr) 154px;}
.pt-list .pt-row.hd{min-height:0;padding:10px 16px;}
.pt-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;}
.pt-row-actions .btn{font-size:12px;padding:7px 10px;}
.pt-row-legal{font-size:13px;overflow-wrap:anywhere;}
.pt-row-legal .pt-inn{display:block;font-size:12px;}
.pt-row .pt-sub{margin-top:5px;}
.pt-status{font-size:12px;}
.pt-card .kv{gap:12px;}
.pt-card .kv b{text-align:right;min-width:0;overflow-wrap:anywhere;}
@media(max-width:1150px){
 .pt-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
 .pt-list .pt-row,.pt-list.pt-with-legal .pt-row{grid-template-columns:minmax(160px,1.5fr) minmax(100px,1fr) 62px minmax(115px,1fr) 154px;gap:10px;}
 .pt-list:not(.pt-with-legal) .pt-row{grid-template-columns:minmax(160px,1.5fr) 62px minmax(115px,1fr) 154px;}
}
@media(max-width:800px){
 .pt-list .pt-row.hd{display:none;}
 .pt-list .pt-row,.pt-list.pt-with-legal .pt-row,.pt-list:not(.pt-with-legal) .pt-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;}
 .pt-list .pt-row>div:first-child{grid-column:1/-1;padding:0;}
 .pt-list .pt-row>div::before{content:none;}
 .pt-list .pt-row .pt-row-legal{grid-column:1/-1;}
 .pt-list .pt-row [data-label]::before{content:attr(data-label) ': ';color:var(--muted);}
 .pt-row-actions{grid-column:1/-1;border-top:1px solid var(--border);padding-top:10px;}
 .pt-row-actions .kebab{position:relative;top:auto;right:auto;}
 .pt-row-actions .btn{width:auto;}
 .pt-status{text-align:right;}
}
@media(max-width:520px){
 .pt-toolbar-top{align-items:stretch;flex-direction:column;}
 .pt-actions{display:grid;grid-template-columns:1fr 1fr;}
 .pt-actions #ptLegalDir{grid-column:1/-1;}
 .pt-actions .btn{width:100%;padding:10px 8px;}
 .pt-filter-grid{gap:12px;padding:12px;}
 .pt-search,.pt-filter:has(.pt-multi){grid-column:1/-1;}
 .pt-filter-grid>.pt-filter:last-child{grid-column:2;grid-row:2;}
 .pt-filter .pt-multi-pop{width:auto;min-width:0;}
 .pt-toolbar-bottom{gap:12px;}
 .pt-toolbar-bottom .pt-view{margin-left:0;}
}

@media(max-width:800px){.pt-list .pt-row.hd,.pt-list.pt-with-legal .pt-row.hd,.pt-list:not(.pt-with-legal) .pt-row.hd{display:none;}}
.report-heading,.entry-manage,.er-request-title{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.entry-manage{justify-content:flex-start;margin-top:12px;}
.er-request{border:1px solid var(--border);border-radius:12px;padding:14px;margin:12px 0;display:grid;gap:10px;}
.er-request .fld{margin:0;}
.er-comment{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;}
.er-values table{width:100%;font-size:13px;}
.er-values td,.er-values th{white-space:normal;overflow-wrap:anywhere;min-width:100px;vertical-align:top;}
#entryManage .hint{margin-top:10px;}
@media(max-width:520px){.report-heading>.btn{width:100%;}.er-request .entry-manage>.btn{width:100%;}}

/* Daily report rows are independent of rent-payment rows using the older rp-row name. */
.rp-list .rp-row{grid-template-columns:minmax(0,1.3fr) minmax(0,1.3fr) minmax(160px,auto);align-items:center;}
.report-row-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
@media(max-width:720px){.rp-list .rp-row{grid-template-columns:minmax(0,1fr);}.report-row-actions{display:grid;grid-template-columns:1fr 1fr;}.report-row-actions .btn{min-width:0;white-space:normal;}}

/* ---- ежедневный отчёт в чате ---- */
.ch-report-btn{white-space:nowrap}
.cr-form,.cr-head{display:grid;gap:12px}
.cr-head{grid-template-columns:1fr;align-items:end}
.cr-row{border:1px solid var(--line,#e5e7eb);border-radius:12px;padding:10px 12px;margin:8px 0;display:grid;gap:6px;background:var(--card)}
.cr-row-h{display:flex;justify-content:space-between;gap:8px;align-items:center;flex-wrap:wrap}
.cr-row-w{font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.cr-row-b{display:flex;gap:8px;flex-wrap:wrap}
.cr-prog{margin:8px 0;font-weight:600}
.cr-late,.cr-decision{border-radius:10px;padding:10px 12px;background:color-mix(in srgb,#f59e0b 16%,var(--card));border:1px solid color-mix(in srgb,#f59e0b 45%,var(--card));overflow-wrap:anywhere}
.cr-night{border-radius:10px;padding:10px 12px;background:color-mix(in srgb,var(--accent) 12%,var(--card));border:1px solid color-mix(in srgb,var(--accent) 40%,var(--card));overflow-wrap:anywhere}
.cr-decision p{margin:0 0 8px}
.cr-dbtns{display:flex;gap:8px;flex-wrap:wrap}
.cr-radio{border:1px solid var(--line,#e5e7eb);border-radius:10px;padding:8px 12px;display:grid;gap:8px}
.cr-radio label{display:flex;gap:8px;align-items:center;min-height:36px}
.cr-photos{display:flex;gap:8px;flex-wrap:wrap}
.cr-ph{position:relative;width:88px;height:88px;border-radius:10px;overflow:hidden;background:color-mix(in srgb,var(--accent) 8%,var(--card));border:1px solid var(--line,#e5e7eb)}
.cr-ph img{width:100%;height:100%;object-fit:cover;display:block}
.cr-ph.failed{border-color:#dc2626}
.cr-ph-x{position:absolute;top:2px;right:2px;width:28px;height:28px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;cursor:pointer;line-height:1}
.cr-ph-s{position:absolute;left:0;right:0;bottom:0;background:rgba(0,0,0,.65);color:#fff;font-size:11px;padding:2px 4px;overflow-wrap:anywhere}
.cr-ph-s.err{background:rgba(185,28,28,.9)}
.cr-retry{all:unset;text-decoration:underline;cursor:pointer}
.cr-add{display:flex;align-items:center;justify-content:center;width:88px;height:88px;border:2px dashed color-mix(in srgb,var(--accent) 50%,var(--card));border-radius:10px;cursor:pointer;color:var(--accent);font-weight:600;text-align:center}
.cr-add input{position:absolute;opacity:0;width:1px;height:1px}
.cr-add:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.cr-card{display:grid;gap:4px;min-width:0;overflow-wrap:anywhere}
.cr-card-h{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.cr-badge{border-radius:8px;padding:1px 8px;font-size:12px;font-weight:600}
.cr-badge.late{background:color-mix(in srgb,#f59e0b 22%,var(--card));color:inherit}
.cr-grp-t{font-size:13px;font-weight:600;margin:6px 0 2px}
.cr-card-m{font-size:13px}
.cr-src ul{margin:0;padding-left:18px;display:grid;gap:8px}
.cr-from{font-size:12px;margin-top:2px}
.cr-corr{font-size:13px;overflow-wrap:anywhere}
@media (min-width:700px){.cr-head{grid-template-columns:1fr 240px}}


/* Legal directory is a narrow side panel even on desktop. */
#lgList .lg-row{display:flex;flex-direction:column;align-items:stretch;gap:14px;padding:16px;border:1px solid var(--border);border-radius:12px;margin-bottom:12px;background:var(--card);}
#lgList .lg-info,#lgList .lg-heading{min-width:0;}
#lgList .pt-name{white-space:normal;overflow-wrap:anywhere;line-height:1.45;}
.lg-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.lg-fields{display:grid;gap:8px;margin:12px 0 0;}
.lg-field{display:grid;grid-template-columns:minmax(0,110px) minmax(0,1fr);gap:10px;font-size:13px;line-height:1.5;}
.lg-field dt{color:var(--muted);}
.lg-field dd{margin:0;min-width:0;overflow-wrap:anywhere;font-variant-numeric:tabular-nums;}
.lg-bank summary{padding:8px 0;min-height:40px;color:var(--accent);}
#lgList .lg-act{display:flex;justify-content:flex-start;gap:8px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--border);}
#lgList .lg-act .btn{flex:1 1 130px;min-height:44px;white-space:normal;line-height:1.35;}
.lg-toolbar{display:flex;flex-direction:column;align-items:stretch;gap:12px;margin-bottom:16px;}
.lg-toolbar input[type=search]{width:100%;min-width:0;box-sizing:border-box;}
.lg-toolbar .chk{min-height:32px;}
@media(max-width:380px){.lg-field{grid-template-columns:minmax(0,1fr);gap:2px;}}


/* A separate non-scrolling row below the point chat header. */
.ch-report-strip{flex:none;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--card);}
.ch-report-cta{display:flex;align-items:center;gap:12px;width:100%;min-height:60px;padding:10px 14px;border:1px solid var(--accent);border-radius:12px;background:var(--accent);color:#fff;text-align:left;font:inherit;cursor:pointer;}
.ch-report-copy{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0;}
.ch-report-copy strong{font-size:15px;line-height:1.3;}
.ch-report-copy>span{font-size:12px;line-height:1.4;overflow-wrap:anywhere;}
.ch-report-icon{font-size:24px;flex:none;}
.ch-report-arrow{font-size:28px;line-height:1;flex:none;}
.ch-report-cta:focus-visible{outline:3px solid var(--text);outline-offset:3px;}
.ch-report-cta.is-complete{background:var(--card);color:var(--text);border-color:var(--ok);}
.ch-report-cta.is-complete .ch-report-icon{color:var(--ok);}
:root[data-theme="dark"] .ch-report-cta:not(.is-complete){background:#204ac6;border-color:#668dff;}
@media(max-width:720px){.ch-report-strip{padding:8px calc(10px + var(--sar)) 8px calc(10px + var(--sal));}.ch-report-cta{min-height:58px;padding:9px 12px;}}

/* ===== WB rating inside «Рейтинг» ===== */
.wb-rat{border:0;background:transparent;padding:2px 0;min-height:28px;font:inherit;font-weight:700;color:var(--accent);cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px;}
.wb-rat:hover{text-decoration-style:solid;}
.wb-rat:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px;}
.wb-rat-note{margin-top:2px;line-height:1.3;}
.pt-rating-kv .pt-rating{text-align:right;min-width:0;}
.wb-rat-src{margin-top:12px;font-size:12.5px;}
.wb-entry-src{margin-top:6px;}
.wb-entry-src .linkbtn{margin-left:4px;}
@media (max-width:900px){.wb-rat{min-height:36px;}}
/* ===== Menu 2026-10: five groups, collapsible, calm active state, profile always in reach ===== */
#sidebar{overflow:hidden;}                                   /* the list scrolls inside, the logo, the cabinet switch and the profile stay in place */
.side-logo{flex:none;padding-bottom:10px;}
#cabSide{flex:none;padding:2px 0 6px;}
#sideNav{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 2px 6px 0;scrollbar-width:thin;}
.side-bottom{flex:none;background:var(--card);margin-top:6px;padding-top:8px;}
.nav-grp+.nav-grp{margin-top:2px;}
.side-group{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;margin:0;padding:14px 10px 6px;border:0;background:transparent;font:inherit;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);text-align:left;}
button.side-grp-h{cursor:pointer;border-radius:8px;}
button.side-grp-h>span:first-child{flex:1 1 auto;min-width:0;}
button.side-grp-h:hover{color:var(--text);}
button.side-grp-h:focus-visible,.side-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
.side-grp-h .chev{width:14px;height:14px;flex:none;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s;}
.nav-grp.open>.side-grp-h .chev{transform:rotate(180deg);}
.nav-grp:not(.open)>.side-grp-body{display:none;}
.grp-badge{position:static;margin:0;flex:none;}
.side-item{position:relative;gap:10px;padding:8px 10px;min-height:36px;box-sizing:border-box;font-size:14px;line-height:1.25;}
.side-item span{min-width:0;flex:1 1 auto;overflow-wrap:anywhere;}
.side-item .nav-badge{flex:none;margin-left:auto;}
.side-item.side-kid{padding-left:38px;font-size:13px;font-weight:500;color:var(--muted);}
.side-item.side-kid svg{width:16px;height:16px;}
.side-item.active{background:rgba(21,87,255,.12);color:var(--accent);font-weight:600;}
.side-item.active::before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--accent);}
.side-item.side-kid.active{color:var(--accent);}
:root[data-theme="dark"] .side-item.active{background:rgba(76,125,255,.22);color:#B3CAFF;}
:root[data-theme="dark"] .side-item.active svg,:root[data-theme="dark"] .side-item.side-kid.active{color:#B3CAFF;}
:root[data-theme="dark"] .side-item.active::before{background:#8FB1FF;}
@media (forced-colors:active){.side-item.active{outline:2px solid Highlight;}}
.report-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
@media (max-width:520px){.report-actions{width:100%;}.report-actions>.btn{flex:1 1 auto;}}
/* small screens in height: the theme switch (also in the profile) steps aside, the profile stays visible */
@media (max-height:640px){#sidebar .side-bottom .theme-sw{display:none;}.logo-on-light,.logo-on-dark{max-height:34px;width:auto;}.side-logo{padding-bottom:4px;}}
/* the phone bar always fills its width, whatever the number of slots */
#bottomNav.bn5,body.tab-chats #bottomNav.bn5{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);}
@media (max-width:900px){
  .side-grp-body{display:block!important;}                      /* the «Ещё» sheet shows every group opened */
  #cabSide{display:none;}                                        /* one WB / Ozon switch on the phone: the one in the top bar */
  .side-item.bn-dup{display:none;}                               /* what the bottom bar already holds is not repeated */
  .nav-grp:not(:has(.side-item:not(.bn-dup))){display:none;}
  .side-item{min-height:var(--ctl-h);}
  #bottomNav .bn-lbl{font-size:11px;}
}
@media (min-width:901px) and (pointer:coarse) and (max-height:500px){
  body.tab-chats .side-item.bn-dup{display:none;}
  body.tab-chats .nav-grp:not(:has(.side-item:not(.bn-dup))){display:none;}
  body.tab-chats #cabSide{display:none;}
}
@media (max-width:900px) and (max-height:760px){#sidebar .side-bottom .theme-sw{display:none;}}

/* ===== Navigation fixes 2026-10b: «Заполнить отчёт» button, bell, one-column profile ===== */
.side-item.side-cta{background:var(--accent);color:#fff;font-weight:600;margin:4px 0 6px;border-radius:10px;}
.side-item.side-cta:hover{filter:brightness(1.08);}
.side-item.side-cta.active{background:var(--accent);color:#fff;box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--accent);}
.side-item.side-cta.active::before{display:none;}
:root[data-theme="dark"] .side-item.side-cta,:root[data-theme="dark"] .side-item.side-cta.active{background:#3A66E8;color:#fff;}
:root[data-theme="dark"] .side-item.side-cta.active{box-shadow:0 0 0 2px var(--card),0 0 0 4px #8FB1FF;}
:root[data-theme="dark"] .side-item.side-cta.active svg{color:#fff;}
.side-item.side-cta svg{stroke:currentColor;}
.nav-grp[data-grp-box="daily"]{padding-top:4px;}
.nav-grp[data-grp-box="team"]>.side-group{padding-top:10px;}
.nav-grp[data-grp-box="network"]{margin-top:6px;}
.bell-btn{position:relative;flex:none;margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:10px;cursor:pointer;padding:0;}
.bell-btn svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.bell-btn:hover{background:var(--bg);}
.bell-btn.active{border-color:var(--accent);color:var(--accent);background:rgba(21,87,255,.1);}
:root[data-theme="dark"] .bell-btn.active{color:#B3CAFF;background:rgba(76,125,255,.22);border-color:#8FB1FF;}
.bell-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.bell-btn .nav-badge{position:absolute;top:-7px;right:-7px;margin:0;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;font-size:11px;line-height:1;border:2px solid var(--bg);}
#bottomNav .bn-cta .bn-ico{color:var(--accent);}
#bottomNav .bn-cta .bn-lbl{color:var(--accent);font-weight:600;}
:root[data-theme="dark"] #bottomNav .bn-cta .bn-ico,:root[data-theme="dark"] #bottomNav .bn-cta .bn-lbl{color:#B3CAFF;}
#bottomNav button.active .bn-lbl{font-weight:600;}
@media (max-width:900px){
  .bell-btn{margin-left:0;}
  #cabTop{margin-left:auto;}
  #cabTop+.bell-btn{margin-left:0;}
}
@media (max-width:400px){
  .topbar h1{order:1;}
  .bell-btn{order:2;margin-left:auto;}
  #cabTop{order:3;}
}
/* profile: one column, readable width, blocks in a fixed order */
.prof-col{display:flex;flex-direction:column;gap:14px;max-width:720px;margin:0 auto 0 0;}
.prof-sec{display:flex;flex-direction:column;gap:12px;}
.prof-sec>h2{margin:4px 2px 0;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);}
.prof-col .card{margin:0;}

/* Employees grouped like «Мои ПВЗ» (js/employees-groups.js) */
.eg-pt{margin:0 0 10px;}
.eg-pt-h{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;padding:8px 14px 4px;font-size:13.5px;}
.eg-pt-h .n{color:var(--muted);font-size:12.5px;}
.emp-filters{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));}
.emp-filters .emp-filter-search{grid-column:1 / -1;}
.emp-legal{display:flex;flex-direction:column;gap:4px;}
.emp-legal > span{font-size:12.5px;color:var(--muted);}
.emp-toolbar .pt-toolbar-bottom{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:12px;}
/* the legal-entity list inside the employees filters: rows, not columns; small checkboxes (the generic .emp-filters label/input rules would stretch them) */
.emp-filters .pt-multi .chk{flex-direction:row;align-items:center;gap:8px;margin:0;}
.emp-filters .pt-multi .chk input{width:18px;height:18px;min-height:0;flex:none;padding:0;}
.emp-filters .pt-multi .chk > span{font-size:14px;color:var(--text);font-weight:400;}
