
  :root{
    --ink:#14171A; --ink-soft:#4B5158; --ink-faint:#868D93;
    --line:#E1E4DF; --line-strong:#CBCFC7;
    --bg:#EEF1ED; --surface:#FFFFFF; --surface-2:#F5F6F3;
    --accent:#BD5A22; --accent-dark:#954618; --accent-soft:#FAE7D9;
    --free:#2E8C5A; --free-soft:#E3F3E9;
    --occupied:#2E6CA4; --occupied-soft:#E4EDF5;
    --warn:#B4841E; --warn-soft:#F6EEDA;
    --bad:#BE3B2E; --bad-soft:#F8E4E0;
    --maint:#6C7068; --maint-soft:#EAEBE7;
    --vacated:#B8631A; --vacated-soft:#FBE9D6;
    --blocked:#7A4FA0; --blocked-soft:#F0E7F7;
    --daily:#1B7F8C; --daily-soft:#DBF0F2;
    --font-display:'Space Grotesk',sans-serif;
    --font-head:'Space Grotesk',sans-serif;
    --font-body:'Inter',sans-serif;
    --font-mono:'JetBrains Mono',monospace;
  }
  body[data-theme="dark"]{
    --ink:#ECEEEA; --ink-soft:#AFB5AF; --ink-faint:#787E7C;
    --line:#2C3134; --line-strong:#3E4448;
    --bg:#0F1214; --surface:#181C1F; --surface-2:#1E2225;
    --accent:#E08A46; --accent-dark:#BD5A22; --accent-soft:#2C2015;
    --free:#4CAE7C; --free-soft:#15301F;
    --occupied:#6DA3D6; --occupied-soft:#17293B;
    --warn:#D9AC4C; --warn-soft:#2F2711;
    --bad:#E17064; --bad-soft:#36160F;
    --vacated:#E0A25C; --vacated-soft:#332412;
    --blocked:#B189D6; --blocked-soft:#271C34;
    --daily:#4FC4D4; --daily-soft:#153338;
  }
  body[data-theme="dark"] .cell.c-free{color:#4CAE7C;}
  body[data-theme="dark"] .cell.c-occupied{color:#6DA3D6;}
  body[data-theme="dark"] .cell.c-vacated{color:#E0A25C;}
  body[data-theme="dark"] .cell.c-blocked{color:#B189D6;}
  body[data-theme="dark"] .cell.c-daily{color:#4FC4D4;}
  *{box-sizing:border-box; margin:0; padding:0;}
  body{font-family:var(--font-body); background:var(--bg); color:var(--ink); font-size:14px; line-height:1.5; transition:background .15s, color .15s; -webkit-font-smoothing:antialiased;}
  ::selection{background:var(--accent-soft); color:var(--accent-dark);}
  .app{display:grid; grid-template-columns:232px 1fr; min-height:100vh;}
  .app.sidebar-collapsed{grid-template-columns:0 1fr;}
  .app.sidebar-collapsed .sidebar{display:none;}
  #sidebarExpandBtn{display:none; position:fixed; top:16px; left:16px; z-index:70; width:32px; height:32px; border-radius:8px; border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); cursor:pointer; font-size:15px; box-shadow:0 2px 8px rgba(0,0,0,.15); align-items:center; justify-content:center;}
  .app.sidebar-collapsed #sidebarExpandBtn{display:flex;}
  #sidebarCollapseBtn{background:none; border:1px solid #3A4145; color:#B7BEBA; width:24px; height:24px; border-radius:6px; cursor:pointer; font-size:12px; flex-shrink:0;}
  #sidebarCollapseBtn:hover{background:#1F2427; color:#fff;}

  .sidebar{background:var(--ink); color:#ECEEEA; padding:22px 14px; display:flex; flex-direction:column; position:sticky; top:0; height:100vh;}
  .brand{display:flex; align-items:center; gap:10px; margin-bottom:8px; padding:0 6px;}
  .brand-mark-img{width:34px; height:34px; border-radius:9px; object-fit:cover; flex-shrink:0;}
  .brand-name{font-family:var(--font-head); font-weight:700; font-size:18px; letter-spacing:-0.2px;}
  .brand-sub{font-size:10.5px; color:#8B9490; letter-spacing:0.3px; padding:0 6px 22px; border-bottom:1px solid #262B2E; margin-bottom:16px;}
  .nav{display:flex; flex-direction:column; gap:1px;}
  .nav-item{display:flex; align-items:center; gap:11px; padding:9px 12px; border-radius:8px; cursor:pointer; color:#B7BEBA; font-family:var(--font-body); font-weight:500; font-size:13.5px; letter-spacing:0.1px; transition:background .12s, color .12s; border-left:2px solid transparent;}
  .nav-item:hover{background:#1F2427; color:#fff;}
  .nav-item.active{background:#1F2427; color:#fff; border-left:2px solid var(--accent);}
  .nav-dot{width:6px; height:6px; border-radius:50%; background:currentColor; opacity:0.45; flex-shrink:0;}
  .nav-item.active .nav-dot{opacity:0; width:0;}
  .branch-nav{margin-top:10px; padding-top:10px; border-top:1px solid #262B2E; display:flex; flex-direction:column; gap:1px; max-height:340px; overflow-y:auto;}
  .branch-nav-item{padding:7px 12px; border-radius:6px; cursor:pointer; color:#8B9490; font-size:12px; font-family:var(--font-mono); display:flex; justify-content:space-between; gap:6px;}
  .branch-nav-item:hover{background:#1F2427; color:#fff;}
  .branch-nav-item.active{background:#242A2D; color:#fff;}
  .branch-nav-item .pct{color:var(--accent); font-weight:600;}
  .sidebar-foot{margin-top:auto; padding:14px 12px 0; border-top:1px solid #262B2E; font-size:11px; color:#767D7A; line-height:1.6;}

  .main{padding:30px 38px 60px; max-width:2000px;}
  .page-head{display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:24px; flex-wrap:wrap; gap:14px;}
  .eyebrow{font-family:var(--font-body); font-size:12.5px; font-weight:600; color:var(--accent-dark); margin-bottom:5px;}
  h1{font-family:var(--font-head); font-weight:700; font-size:28px; letter-spacing:-0.5px;}
  .subtitle{color:var(--ink-soft); font-size:13.5px; margin-top:4px;}
  .back-link{font-family:var(--font-body); font-weight:500; font-size:12.5px; color:var(--ink-soft); cursor:pointer; display:inline-flex; align-items:center; gap:6px; margin-bottom:10px;}
  .back-link:hover{color:var(--accent-dark);}

  .btn{font-family:var(--font-body); font-weight:600; font-size:13px; border:1px solid var(--line-strong); background:var(--surface); color:var(--ink); padding:8px 15px; border-radius:8px; cursor:pointer; transition:all .12s;}
  .btn:hover{border-color:var(--ink-faint); background:var(--surface-2);}
  .btn-sm{padding:5px 11px; font-size:12px; border-radius:6px;}

  .stat-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:28px;}
  .stat-grid.g3{grid-template-columns:repeat(3,1fr);}
  .stat-card{background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:17px 18px 15px; position:relative; overflow:hidden;}
  .stat-card::before{content:''; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--bar,var(--accent));}
  .stat-label{font-family:var(--font-body); font-size:11.5px; font-weight:600; color:var(--ink-faint); margin-bottom:8px;}
  .stat-value{font-family:var(--font-display); font-weight:700; font-size:28px; line-height:1; color:var(--ink); letter-spacing:-0.5px;}
  .stat-note{font-size:12px; color:var(--ink-soft); margin-top:6px;}

  section.block{background:var(--surface); border:1px solid var(--line); border-radius:12px; margin-bottom:18px; overflow:hidden;}
  .block-head{padding:15px 20px; border-bottom:1px solid var(--line); display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap;}
  .block-title{font-family:var(--font-head); font-weight:700; font-size:16px; letter-spacing:-0.2px;}
  .search-input{padding:8px 12px; border:1px solid var(--line-strong); border-radius:8px; font-family:var(--font-body); font-size:13px; background:var(--surface-2); min-width:220px;}
  .search-input:focus{outline:none; border-color:var(--accent); background:var(--surface);}

  table{width:100%; border-collapse:collapse; font-size:13px;}
  th{text-align:left; font-family:var(--font-body); font-size:11px; font-weight:600; color:var(--ink-faint); padding:10px 20px; border-bottom:1px solid var(--line); cursor:pointer; user-select:none;}
  th:hover{color:var(--ink);}
  td{padding:12px 20px; border-bottom:1px solid var(--line); vertical-align:middle;}
  tr:last-child td{border-bottom:none;}
  tbody tr:hover{background:var(--surface-2); cursor:pointer;}
  .mono{font-family:var(--font-mono);}
  .num{font-family:var(--font-mono); font-variant-numeric:tabular-nums;}

  .badge{display:inline-flex; align-items:center; gap:5px; font-family:var(--font-body); font-size:11.5px; font-weight:600; padding:3px 10px; border-radius:20px;}
  .badge-free{background:var(--free-soft); color:var(--free);}
  .badge-occupied{background:var(--occupied-soft); color:var(--occupied);}
  .badge-warn{background:var(--warn-soft); color:var(--warn);}
  .badge-maint{background:var(--maint-soft); color:var(--maint);}
  .badge-vacated{background:var(--vacated-soft); color:var(--vacated);}
  .badge-blocked{background:var(--blocked-soft); color:var(--blocked);}
  .badge-daily{background:var(--daily-soft); color:var(--daily);}
  .badge-bad{background:var(--bad-soft); color:var(--bad);}

  .bar-track{width:100%; height:6px; border-radius:4px; background:var(--surface-2); overflow:hidden;}
  .bar-fill{height:100%; border-radius:4px; background:var(--occupied);}

  .branch-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:12px;}
  .branch-card{background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:18px; cursor:pointer; transition:border-color .12s, transform .08s;}
  .branch-card:hover{border-color:var(--accent); transform:translateY(-1px);}
  .branch-card-title{font-family:var(--font-head); font-weight:700; font-size:17px; letter-spacing:-0.2px; margin-bottom:2px;}
  .branch-card-addr{font-size:12px; color:var(--ink-faint); margin-bottom:14px; font-family:var(--font-mono);}
  .branch-card-pct{font-family:var(--font-display); font-weight:700; font-size:32px; line-height:1; margin-bottom:2px; letter-spacing:-0.5px;}
  .branch-card-row{display:flex; justify-content:space-between; font-size:12.5px; color:var(--ink-soft); padding:5px 0; border-top:1px solid var(--line); margin-top:8px;}
  .branch-card-row .v{font-weight:600; color:var(--ink); font-family:var(--font-mono);}

  .map-layout{display:grid; grid-template-columns:1fr 340px; gap:16px; align-items:start;}
  .legend{display:flex; gap:16px; padding:14px 20px; flex-wrap:wrap; border-bottom:1px solid var(--line);}
  .carousel-row{display:flex; align-items:center; gap:6px; padding:0 20px;}
  .carousel-nav{flex-shrink:0; width:26px; height:26px; border-radius:50%; border:1.5px solid var(--line-strong); background:var(--surface); color:var(--ink-soft); cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:14px; font-weight:700; transition:all .15s ease;}
  .carousel-nav:hover{border-color:var(--accent); color:var(--accent);}
  .carousel-wrap{position:relative; margin:0 0 4px; flex:1; min-width:0;}
  .carousel-wrap::before, .carousel-wrap::after{content:''; position:absolute; top:0; bottom:0; width:24px; pointer-events:none; z-index:1;}
  .carousel-wrap::before{left:0; background:linear-gradient(90deg, var(--surface), transparent);}
  .carousel-wrap::after{right:0; background:linear-gradient(270deg, var(--surface), transparent);}
  .carousel{display:flex; gap:8px; overflow-x:auto; scroll-behavior:smooth; scroll-snap-type:x proximity; padding:12px 4px; -ms-overflow-style:none; scrollbar-width:none;}
  .carousel::-webkit-scrollbar{display:none;}
  .carousel-chip{flex-shrink:0; scroll-snap-align:start; display:flex; flex-direction:column; align-items:flex-start; gap:2px; padding:9px 15px; min-width:96px; border-radius:12px; border:1.5px solid var(--line-strong); background:var(--surface); cursor:pointer; white-space:nowrap; transition:all .15s ease;}
  .carousel-chip:hover{border-color:var(--accent); transform:translateY(-1px);}
  .carousel-chip.active{background:var(--accent); border-color:var(--accent);}
  .carousel-chip .cc-title{display:flex; align-items:center; gap:6px; font-size:12.5px; font-weight:700; color:var(--ink);}
  .carousel-chip.active .cc-title{color:#fff;}
  .carousel-chip .cc-sub{font-family:var(--font-mono); font-size:10.5px; color:var(--ink-faint);}
  .carousel-chip.active .cc-sub{color:rgba(255,255,255,0.85);}
  .carousel-label{flex-shrink:0; display:flex; align-items:center; font-family:var(--font-body); font-size:11px; font-weight:600; color:var(--ink-faint); width:60px;}
  .network-zone{margin-bottom:16px; border-radius:12px; background:var(--surface); border:1px solid var(--line); overflow:hidden;}
  .network-zone-head{padding:12px 18px; background:var(--surface-2); font-family:var(--font-head); font-weight:700; font-size:13.5px; display:flex; align-items:center; justify-content:space-between; cursor:default;}
  .network-zone-head .pct{font-family:var(--font-mono); font-size:11.5px; font-weight:600; color:var(--ink-faint);}
  .network-cell-grid{padding:16px 18px;}
  .legend-item{display:flex; align-items:center; gap:6px; font-size:12px; color:var(--ink-soft);}
  .legend-swatch{width:10px; height:10px; border-radius:3px;}
  .zone{padding:18px 20px 22px;}
  .zone-title{font-family:var(--font-body); font-size:12px; font-weight:600; color:var(--ink-faint); margin-bottom:10px; display:flex; align-items:center; gap:8px;}
  .zone-title::after{content:''; flex:1; height:1px; background:var(--line);}
  .cell-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(56px,1fr)); gap:6px; margin-bottom:20px;}
  .cell{aspect-ratio:1; border-radius:7px; display:flex; flex-direction:column; align-items:center; justify-content:center; cursor:pointer; font-family:var(--font-mono); font-size:11px; font-weight:600; border:1px solid transparent; transition:transform .08s, box-shadow .08s;}
  .cell:hover{transform:translateY(-1px); box-shadow:0 3px 8px rgba(20,23,26,0.12);}

  /* forms */
  .field{margin-bottom:0;}
  .field label{display:block; font-family:var(--font-body); font-size:11.5px; font-weight:600; color:var(--ink-faint); margin-bottom:6px;}
  .field input, .field select{width:100%; padding:10px 12px; border:1.5px solid var(--line-strong); border-radius:9px; font-family:var(--font-body); font-size:14px; background:var(--surface-2); color:var(--ink); transition:border-color .12s, background .12s;}
  .field input:focus, .field select:focus{outline:none; border-color:var(--accent); background:var(--surface); box-shadow:0 0 0 3px var(--accent-soft);}
  .form-grid{display:grid; grid-template-columns:1fr 1fr; gap:14px; padding:20px;}
  .form-grid.single{grid-template-columns:1fr;}
  .form-actions{grid-column:1/-1; display:flex; gap:10px; justify-content:flex-end; margin-top:4px;}
  .error-msg{grid-column:1/-1; color:var(--bad); font-size:12px; margin-top:-4px; display:none;}

  /* modal */
  .modal-backdrop{position:fixed; inset:0; background:rgba(20,23,26,0.5); backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px); display:flex; align-items:center; justify-content:center; z-index:100; padding:20px; animation:fadeIn .12s ease-out;}
  @keyframes fadeIn{from{opacity:0;} to{opacity:1;}}
  @keyframes modalIn{from{opacity:0; transform:translateY(10px) scale(.97);} to{opacity:1; transform:none;}}
  .modal-card{background:var(--surface); border-radius:18px; width:100%; max-width:440px; max-height:90vh; overflow-y:auto; box-shadow:0 24px 70px rgba(15,18,20,0.28); animation:modalIn .16s cubic-bezier(.2,.8,.3,1);}
  .modal-icon{width:50px; height:50px; border-radius:14px; background:var(--accent-soft); color:var(--accent-dark); display:flex; align-items:center; justify-content:center; margin:26px auto 2px;}
  .modal-head{text-align:center; padding:0 28px 6px;}
  .modal-head h2{font-family:var(--font-head); font-weight:700; font-size:22px; letter-spacing:-0.3px;}
  .modal-head p{font-size:12.5px; color:var(--ink-faint); margin-top:3px;}
  .modal-close{position:absolute; top:16px; right:16px; width:28px; height:28px; border-radius:50%; border:none; background:var(--surface-2); color:var(--ink-soft); font-size:16px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center;}
  .modal-close:hover{background:var(--line);}
  .modal-form{padding:18px 28px 8px; display:flex; flex-direction:column; gap:14px;}
  .modal-foot{padding:16px 28px 26px; display:flex; gap:10px;}
  .modal-foot .btn{flex:1;}
  .modal-danger-zone{margin:4px 28px 20px; padding-top:14px; border-top:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; gap:10px;}
  .modal-danger-zone span{font-size:12px; color:var(--ink-faint);}
  .btn-ghost-danger{background:none; border:none; color:var(--bad); font-size:12.5px; font-weight:600; cursor:pointer; padding:6px 8px; border-radius:6px;}
  .btn-ghost-danger:hover{background:var(--bad-soft);}
  .cell.selected{border-color:var(--ink); box-shadow:0 0 0 2px var(--surface), 0 0 0 3px var(--ink);}
  .cell.c-free{background:var(--free-soft); color:var(--free);}
  .cell.c-occupied{background:var(--occupied-soft); color:var(--occupied);}
  .cell.c-reserved{background:var(--warn-soft); color:var(--warn);}
  .cell.c-maint{background:var(--maint-soft); color:var(--maint);}
  .cell.c-vacated{background:var(--vacated-soft); color:var(--vacated);}
  .cell.c-blocked{background:var(--blocked-soft); color:var(--blocked);}
  .cell.c-daily{background:var(--daily-soft); color:var(--daily);}
  .cell-size{font-family:var(--font-body); font-weight:400; font-size:9px; opacity:0.75; margin-top:1px;}

  .detail-panel{background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:20px; position:sticky; top:30px;}
  .detail-empty{color:var(--ink-faint); font-size:13px; text-align:center; padding:40px 10px;}
  .detail-code{font-family:var(--font-display); font-weight:700; font-size:26px; letter-spacing:-0.3px; line-height:1;}
  .detail-row{display:flex; justify-content:space-between; padding:9px 0; border-bottom:1px solid var(--line); font-size:13px; gap:10px;}
  .detail-row:last-of-type{border-bottom:none;}
  .detail-row .k{color:var(--ink-soft);}
  .detail-row .v{font-weight:500; text-align:right;}

  .empty-state{text-align:center; padding:50px 20px; color:var(--ink-faint);}
  .empty-state .big{font-family:var(--font-head); font-weight:700; font-size:18px; color:var(--ink-soft); margin-bottom:6px;}

  /* toast */
  .toast-wrap{position:fixed; bottom:22px; right:22px; z-index:200; display:flex; flex-direction:column; gap:8px;}

  /* login gate */
  .login-gate{position:fixed; inset:0; background:var(--ink); display:flex; align-items:center; justify-content:center; z-index:500;}
  .login-card{background:var(--surface); border-radius:18px; padding:36px 34px; width:100%; max-width:340px; text-align:center; box-shadow:0 24px 70px rgba(0,0,0,0.4);}
  .login-logo{width:52px; height:52px; border-radius:15px; margin:0 auto 16px; display:block; object-fit:cover;}
  /* 01.11.2026: пока проверяется вход — только логотип, без мелькания старого окна «Кто вы?» */
  .login-gate.booting .login-card{display:none;}
  .login-gate.booting::after{content:""; width:76px; height:76px; border-radius:22px; background:#16A34A url(/m/icon-192.png) center/cover; box-shadow:0 14px 40px rgba(0,0,0,.35); animation:fadeIn .4s ease;}
  /* 01.11.2026: новое окно входа — только логин и пароль, фирменный зелёный */
  .login-gate{background:radial-gradient(900px 520px at 50% -8%, #22C55E 0%, #0F6B32 40%, #062012 80%) !important;}
  .login-gate::before{content:""; position:absolute; inset:0; background:radial-gradient(520px 300px at 88% 108%, rgba(255,214,10,.16), transparent 60%); pointer-events:none;}
  .login-card{position:relative; max-width:360px !important; margin:16px; padding:38px 30px 26px !important; border-radius:24px !important; box-shadow:0 30px 80px rgba(0,0,0,.45) !important;}
  .login-card .login-logo{width:68px; height:68px; border-radius:20px; box-shadow:0 10px 26px rgba(22,163,74,.40);}
  .login-card h2{font-size:26px !important;}
  .login-card #loginPassStepTitle{font-size:14px !important; color:var(--ink-soft) !important; margin-bottom:22px !important;}
  .login-card input{height:50px; border-radius:12px !important; background:var(--surface-2) !important; font-size:16px !important;}
  .login-card input:focus{border-color:#16A34A !important; background:var(--surface) !important; box-shadow:0 0 0 4px rgba(22,163,74,.15);}
  .login-card #loginSubmitBtn{height:50px; margin-top:10px !important; border-radius:12px !important; background:linear-gradient(135deg,#16A34A,#15803D) !important; border:0 !important; color:#fff !important; font-weight:700 !important; font-size:16px !important; box-shadow:0 10px 22px rgba(22,163,74,.35);}
  .login-card::after{content:"хранение вещей · Астана"; display:block; margin-top:20px; font-size:11.5px; color:var(--ink-faint); letter-spacing:.04em;}
  .login-gate.srv #loginRoleStep, .login-gate.srv #loginPassStep button[onclick="backToRoleStep()"]{display:none !important;}
  /* 01.11.2026: живой фон входа в стиле СкладОк — ряд ячеек с роллетами, которые открываются, и плывущие коробки */
  .lg-scene{position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:0;}
  .login-card, .login-gate.booting::after{z-index:1;} .login-gate.booting::after{position:relative;}
  .lg-boxes i{position:absolute; bottom:-60px; background:#C08A4B; border-radius:4px; opacity:.20; animation:lgFloat linear infinite; box-shadow:inset 0 -3px 0 rgba(0,0,0,.18);}
  .lg-boxes i::after{content:""; position:absolute; left:44%; top:0; width:12%; height:100%; background:rgba(255,255,255,.35);}
  @keyframes lgFloat{from{transform:translateY(0) rotate(0deg);} to{transform:translateY(-118vh) rotate(220deg);}}
  .lg-doors{position:absolute; left:50%; bottom:0; transform:translateX(-50%); height:112px; display:flex; gap:7px;}
  .lg-door{position:relative; flex:0 0 66px; height:100%; background:#03120a; border:3px solid #0d3b1f; border-bottom:0; border-radius:7px 7px 0 0; overflow:hidden;}
  .lg-door span{position:absolute; left:9px; bottom:8px; width:22px; height:18px; background:#C08A4B; border-radius:2px; box-shadow:25px 5px 0 -3px #A8743A, 12px -14px 0 -4px #B57F42;}
  .lg-door b{position:absolute; inset:0; background:repeating-linear-gradient(180deg,#1B9A4B 0 7px,#14763A 7px 9px); border-bottom:3px solid #FFD60A; animation:lgShutter ease-in-out infinite;}
  .lg-door b::after{content:""; position:absolute; left:50%; bottom:6px; width:14px; height:3px; margin-left:-7px; background:#0B3D1F; border-radius:2px;}
  @keyframes lgShutter{0%,34%{transform:translateY(0);} 46%,76%{transform:translateY(-80%);} 90%,100%{transform:translateY(0);}}
  .lg-ground{position:absolute; left:0; right:0; bottom:0; height:4px; background:#FFD60A; opacity:.55;}
  @media (prefers-reduced-motion: reduce){ .lg-scene *{animation:none !important;} }
  /* 01.11.2026: телефон — карточка не уходит под верхнюю панель, на маленьких экранах компактнее */
  .login-gate{align-items:flex-start !important; padding:64px 0 16px; box-sizing:border-box; overflow-y:auto;}
  .login-card{margin:auto 16px !important;} .login-gate.booting::after{margin:auto;}
  .login-card .login-error:empty{display:none;} .login-card #loginSubmitBtn{margin-top:14px !important;}
  @media (max-height:700px){ .login-card{padding:24px 24px 18px !important;} .login-card .login-logo{width:54px; height:54px; margin-bottom:10px;} .login-card h2{font-size:22px !important;} .login-card #loginPassStepTitle{margin-bottom:14px !important;} .login-card input{height:46px;} .login-card #loginSubmitBtn{height:46px;} .login-card::after{margin-top:12px;} .lg-doors{height:84px;} }
  .login-card h2{font-family:var(--font-head); font-weight:700; font-size:22px; letter-spacing:-0.3px; margin-bottom:4px;}
  .login-card p{font-size:12.5px; color:var(--ink-faint); margin-bottom:20px;}
  /* v3.64: обычные поля логина/пароля */
  .login-card input{width:100%; box-sizing:border-box; text-align:left; letter-spacing:normal; font-size:15px; line-height:1.3; padding:12px 14px; border:1.5px solid var(--line-strong); border-radius:10px; font-family:var(--font-body); color:var(--ink); background:var(--surface-2); margin-bottom:10px; transition:border-color .12s, background .12s;}
  .login-card input::placeholder{color:var(--ink-faint); letter-spacing:normal; font-family:var(--font-body);}
  .login-card input[inputmode="numeric"]{text-align:center; letter-spacing:6px; font-size:20px; font-family:var(--font-mono);}
  .login-card #loginSubmitBtn{padding:12px 14px; font-size:15px; border-radius:10px; margin-top:4px;}
  .login-card input:focus{outline:none; border-color:var(--accent); background:var(--surface);}
  .login-error{color:var(--bad); font-size:12px; margin-bottom:10px; min-height:16px;}
  .role-badge{display:inline-flex; align-items:center; gap:5px; font-family:var(--font-body); font-size:11px; font-weight:600; padding:4px 10px; border-radius:20px; background:#1F2427; color:#9AA0A2;}
  body[data-role="manager"] [data-admin-only="1"]{display:none !important;}

  /* custom confirm dialog (native confirm() can be blocked in sandboxed iframes) */
  .confirm-backdrop{position:fixed; inset:0; background:rgba(15,18,20,0.45); z-index:600; display:flex; align-items:center; justify-content:center;}
  .confirm-card{background:var(--surface); border-radius:16px; padding:26px 28px; max-width:340px; width:90%; box-shadow:0 20px 60px rgba(15,18,20,0.3);}
  .confirm-card p{font-size:14px; color:var(--ink); line-height:1.5; margin-bottom:20px;}
  .confirm-card .row{display:flex; gap:10px;}
  .confirm-card .row button{flex:1;}
  .toast{background:var(--ink); color:#fff; padding:12px 16px; border-radius:10px; font-size:13px; box-shadow:0 8px 24px rgba(0,0,0,0.25); display:flex; align-items:center; gap:10px; animation:toastIn .18s ease-out; max-width:320px;}
  @keyframes toastIn{from{opacity:0; transform:translateY(8px);} to{opacity:1; transform:none;}}
  .toast.toast-bad{background:var(--bad);}
  .toast.toast-good{background:var(--free);}

  /* bulk action bar */
  .bulk-bar{position:sticky; bottom:0; margin-top:14px; background:var(--ink); color:#fff; border-radius:12px; padding:12px 18px; display:flex; align-items:center; gap:12px; box-shadow:0 8px 24px rgba(0,0,0,0.2);}
  .bulk-bar .count{font-family:var(--font-head); font-weight:700; font-size:15px;}
  .bulk-bar button{background:#242A2D; color:#fff; border:none; padding:7px 12px; border-radius:8px; font-size:12.5px; cursor:pointer; font-family:var(--font-body); font-weight:600;}
  .bulk-bar button:hover{background:#2E3538;}
  .bulk-bar button.danger{background:var(--bad);}
  .cell.bulk-picked{outline:2px solid var(--accent); outline-offset:1px;}

  @media print{
    .sidebar, .btn, .search-input, .back-link, .bulk-bar, .modal-backdrop, #globalSearchResults{display:none !important;}
    .app{display:block;}
    .main{padding:0;}
    body{background:#fff;}
    .cell{border:1px solid #ccc !important;}
  }

  @media (max-width: 880px){
    .app{grid-template-columns:1fr;}
    .sidebar{position:relative; height:auto;}
    .stat-grid{grid-template-columns:1fr 1fr;}
    .map-layout{grid-template-columns:1fr;}
    .branch-grid{grid-template-columns:1fr;}
    .main{padding:20px;}
  }
  /* ===== Переписки ===== */
  .chat-wrap{display:grid; grid-template-columns:290px minmax(0,1fr) 330px; height:calc(100vh - 0px); background:var(--surface); border:1px solid var(--line); border-radius:10px; overflow:hidden;}
  .chat-col{min-width:0; display:flex; flex-direction:column; height:100%;}
  .chat-list{border-right:1px solid var(--line);}
  .chat-side{border-left:1px solid var(--line); padding:14px; overflow-y:auto; background:var(--surface-2);}
  .chat-head{padding:11px 14px; border-bottom:1px solid var(--line); display:flex; align-items:center; gap:10px; min-height:52px;}
  .chat-search{width:100%; padding:7px 11px; border:1px solid var(--line); border-radius:16px; background:var(--surface-2); font-family:var(--font-body); font-size:13px;}
  .chat-rows{flex:1; overflow-y:auto;}
  .chat-row{display:block; width:100%; text-align:left; background:none; border:0; border-bottom:1px solid var(--line); padding:10px 14px; cursor:pointer; font-family:var(--font-body);}
  .chat-row:hover{background:var(--surface-2);}
  .chat-row.sel{background:var(--accent-soft); box-shadow:inset 3px 0 0 var(--accent);}
  .chat-row-top{display:flex; justify-content:space-between; gap:8px; align-items:baseline;}
  .chat-row-name{font-weight:600; font-size:13px; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .chat-row-time{font-size:10.5px; color:var(--ink-faint); font-family:var(--font-mono); white-space:nowrap;}
  .chat-row-text{font-size:12px; color:var(--ink-faint); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .chat-tag{display:inline-block; font-size:10.5px; padding:1px 7px; border-radius:10px; margin-top:5px; font-weight:600;}
  .chat-tag.rent{background:var(--free-soft); color:var(--free);}
  .chat-tag.lead{background:var(--warn-soft); color:var(--warn);}
  .chat-tag.debt{background:var(--bad-soft); color:var(--bad);}
.chat-tag.ad{background:#e8f5d6; color:#2f6d05; margin-left:4px;}
  .chat-dot{background:var(--accent); color:#fff; font-size:10px; font-weight:700; min-width:17px; height:17px; border-radius:9px; display:inline-grid; place-items:center; padding:0 5px; font-family:var(--font-mono);}
  .chat-who{padding:8px 16px; font-size:12.5px; border-bottom:1px solid var(--line);}
  .chat-who.rent{background:var(--free-soft); color:var(--free);}
  .chat-who.lead{background:var(--warn-soft); color:var(--warn);}
  .chat-msgs{flex:1; overflow-y:auto; padding:14px 16px; display:flex; flex-direction:column; gap:7px; background:var(--bg);}
  .chat-msg{max-width:74%; padding:7px 11px; border-radius:11px; background:var(--surface); font-size:13px; line-height:1.45;}
  .chat-msg.out{align-self:flex-end; background:var(--accent-soft);}
  .chat-msg .m{font-size:10.5px; color:var(--ink-faint); margin-top:3px; font-family:var(--font-mono);}
  .chat-msg .lbl{font-size:10.5px; color:var(--accent); font-weight:700; margin-bottom:2px;}
  .chat-msg .b{white-space:pre-wrap; word-wrap:break-word;}
  .chat-compose{border-top:1px solid var(--line); padding:9px 12px; display:flex; gap:9px; align-items:flex-end; background:var(--surface);}
  .chat-compose textarea{flex:1; resize:none; border:1px solid var(--line); border-radius:16px; padding:8px 12px; min-height:36px; max-height:110px; font-family:var(--font-body); font-size:13px;}
  .chat-send{background:var(--accent); color:#fff; border:0; border-radius:17px; padding:0 16px; height:36px; font-weight:600; cursor:pointer; font-family:var(--font-body);}
  .chat-send:disabled{background:var(--ink-faint); cursor:default;}
  .chat-box{border:1px solid var(--line); border-radius:8px; padding:10px 12px; margin-bottom:9px; background:var(--surface);}
  .chat-box .h{font-weight:600; font-size:12.5px; margin-bottom:5px;}
  .chat-kv{display:flex; justify-content:space-between; font-size:12px; padding:2px 0; gap:10px;}
  .chat-kv span:first-child{color:var(--ink-faint);}
  .chat-hint{color:var(--ink-faint); font-size:11.5px; line-height:1.5;}
  .chat-empty{margin:auto; color:var(--ink-faint); font-size:13px; text-align:center; padding:28px 16px;}
  @media (max-width:1100px){
    .chat-wrap{grid-template-columns:1fr;}
    .chat-side{display:none;}
    .chat-wrap[data-view="conv"] .chat-list{display:none;}
    .chat-wrap[data-view="list"] .chat-col.chat-conv{display:none;}
    .chat-wrap[data-view="conv"] .chat-side{display:block; border-left:0; border-top:1px solid var(--line); max-height:34vh;}
  }

  .chat-filters{display:flex; gap:4px; padding:6px 10px; border-bottom:1px solid var(--line); overflow-x:auto;}
  .chat-filter{border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); font-size:11.5px; padding:3px 10px; border-radius:12px; cursor:pointer; white-space:nowrap; font-family:var(--font-body);}
  .chat-filter.on{background:var(--accent-soft); color:var(--accent-dark); border-color:var(--accent-soft); font-weight:600;}
  .chat-quick{display:flex; gap:6px; padding:7px 12px 0; background:var(--surface); overflow-x:auto;}
  .chat-quick button{border:1px solid var(--line); background:var(--surface-2); color:var(--ink); font-size:12px; padding:5px 11px; border-radius:14px; cursor:pointer; white-space:nowrap; font-family:var(--font-body);}
  .chat-quick button:hover{background:var(--accent-soft);}
  .chat-quick .edit{color:var(--ink-faint); background:none; border-color:transparent;}
  .chat-ai{margin-left:auto; display:flex; align-items:center; gap:7px; font-size:12px; color:var(--ink-soft); cursor:pointer; user-select:none;}
  .chat-ai .sw{width:34px; height:19px; border-radius:10px; background:var(--line-strong); position:relative; transition:background .15s;}
  .chat-ai .sw::after{content:''; position:absolute; top:2px; left:2px; width:15px; height:15px; border-radius:50%; background:#fff; transition:left .15s;}
  .chat-ai.on .sw{background:var(--free);}
  .chat-ai.on .sw::after{left:17px;}

  .chat-pick{margin-top:6px;}
  .chat-pick-row{display:flex; gap:6px; margin-bottom:6px;}
  .chat-pick select, .chat-pick input{flex:1; min-width:0; padding:6px 8px; border:1px solid var(--line); border-radius:7px; background:var(--surface); font-family:var(--font-body); font-size:12px;}
  .chat-pick-list{max-height:260px; overflow-y:auto; border:1px solid var(--line); border-radius:8px; background:var(--surface);}
  .chat-pick-item{display:flex; align-items:center; gap:8px; padding:7px 10px; border-bottom:1px solid var(--line); font-size:12px; cursor:pointer;}
  .chat-pick-item:last-child{border-bottom:0;}
  .chat-pick-item:hover{background:var(--surface-2);}
  .chat-pick-item.on{background:var(--accent-soft);}
  .chat-pick-item b{font-family:var(--font-mono); font-weight:600; min-width:34px;}
  .chat-pick-item .p{margin-left:auto; color:var(--ink-soft); white-space:nowrap;}
  .chat-pick-go{width:100%; margin-top:8px;}

  .chat-tag.out{background:var(--vacated-soft); color:var(--vacated);}
  .chat-out-form{margin-top:8px; padding-top:8px; border-top:1px dashed var(--line);}
  .chat-out-form label{display:block; font-size:11.5px; color:var(--ink-faint); margin:6px 0 3px;}
  .chat-out-form input[type=date]{width:100%; padding:6px 8px; border:1px solid var(--line); border-radius:7px; font-family:var(--font-body); font-size:12px; background:var(--surface);}
  .chat-out-form .chk{display:flex; align-items:center; gap:7px; font-size:12px; margin-top:6px; cursor:pointer;}
  .chat-out-btn{width:100%; margin-top:8px;}

  .chat-debt{margin-top:8px; padding:9px 10px; border-radius:8px; background:var(--bad-soft);}
  .chat-debt .t{font-size:12px; color:var(--bad); font-weight:700;}
  .chat-debt .d{font-size:11.5px; color:var(--ink-soft); margin-top:2px;}
  .chat-debt .steps{display:flex; gap:4px; margin:8px 0 6px;}
  .chat-debt .steps i{flex:1; height:4px; border-radius:2px; background:rgba(0,0,0,.12);}
  .chat-debt .steps i.on{background:var(--bad);}
  .chat-debt button{width:100%; margin-top:6px;}
  .chat-tag.gone{background:var(--blocked-soft); color:var(--blocked);}

  .chat-hist{margin-top:4px;}
  .chat-hist .row{display:flex; justify-content:space-between; gap:8px; font-size:12px; padding:5px 0; border-bottom:1px solid var(--line);}
  .chat-hist .row:last-child{border-bottom:0;}
  .chat-hist .row .when{color:var(--ink-faint); font-family:var(--font-mono); font-size:11px;}
  .chat-hist .ok{color:var(--free); font-weight:600; white-space:nowrap;}
  .chat-hist .bad{color:var(--bad); font-weight:600; white-space:nowrap;}
  .chat-who.former{background:var(--vacated-soft); color:var(--vacated);}
  .chat-who.badhist{background:var(--bad-soft); color:var(--bad);}
  .chat-tag.former{background:var(--vacated-soft); color:var(--vacated);}

  .chat-msg.call{align-self:center; max-width:100%; background:var(--warn-soft); color:var(--warn); font-size:12px; display:flex; gap:10px; align-items:center; padding:7px 14px; border-radius:16px;}
  .chat-msg.call a{color:var(--warn); font-weight:700; text-decoration:none; border:1px solid var(--warn); border-radius:12px; padding:2px 10px;}

  .chat-ava{width:30px; height:30px; min-width:30px; min-height:30px; max-width:30px; max-height:30px; aspect-ratio:1; border-radius:50%; flex:0 0 30px; object-fit:cover; object-position:center; background:var(--accent-soft); color:var(--accent-dark); font-weight:700; font-size:11px; display:grid; place-items:center; overflow:hidden;}
  .chat-ava.sm{width:26px; height:26px; min-width:26px; min-height:26px; max-width:26px; max-height:26px; flex-basis:26px; font-size:10px;}
  .chat-row{display:flex; gap:10px; align-items:flex-start;}
  .chat-row > div{min-width:0; flex:1;}

  .chat-msg .thumb{display:block; width:140px; height:140px; min-width:140px; min-height:140px; object-fit:cover; object-position:center; border-radius:7px; margin-top:4px; cursor:zoom-in;}
  .chat-msg .thumb-ph{width:140px; height:140px; min-width:140px; border-radius:7px; margin-top:4px; background:var(--surface-2); display:grid; place-items:center; font-size:11.5px; color:var(--ink-faint);}

  .chat-wrap{position:relative;}
  .chat-gutter{position:absolute; top:0; bottom:0; width:10px; margin-left:-5px; cursor:col-resize; z-index:5;}
  .chat-gutter::after{content:''; position:absolute; top:0; bottom:0; left:4px; width:2px; background:transparent; transition:background .12s;}
  .chat-gutter:hover::after, .chat-gutter.drag::after{background:var(--accent);}
  body.chat-resizing{cursor:col-resize; user-select:none;}
  body.chat-resizing .chat-wrap *{pointer-events:none;}
  @media (max-width:1100px){ .chat-gutter{display:none;} }

  .users-wrap{max-width:900px;}
  .users-table{width:100%; border-collapse:collapse; background:var(--surface); border:1px solid var(--line); border-radius:10px; overflow:hidden; font-size:13px;}
  .users-table th, .users-table td{padding:9px 12px; text-align:left; border-bottom:1px solid var(--line);}
  .users-table th{font-size:11px; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.04em; font-weight:600;}
  .users-table tr:last-child td{border-bottom:0;}
  .users-form{background:var(--surface); border:1px solid var(--line); border-radius:10px; padding:14px 16px; margin-top:14px; display:grid; grid-template-columns:1fr 1fr; gap:10px;}
  .users-form label{font-size:11.5px; color:var(--ink-faint); display:block; margin-bottom:3px;}
  .users-form input, .users-form select{width:100%; padding:7px 9px; border:1px solid var(--line); border-radius:7px; background:var(--surface-2); font-family:var(--font-body); font-size:13px;}
  .users-form .full{grid-column:1 / -1;}
  .users-branches{display:flex; flex-wrap:wrap; gap:6px;}
  .users-branches label{display:flex; align-items:center; gap:5px; font-size:12px; color:var(--ink); border:1px solid var(--line); border-radius:12px; padding:3px 9px; cursor:pointer; margin:0;}
  .users-branches input{width:auto;}
  .pill{display:inline-block; font-size:11px; padding:1px 8px; border-radius:10px; background:var(--surface-2); color:var(--ink-soft);}
  .pill.admin{background:var(--accent-soft); color:var(--accent-dark); font-weight:600;}
  .pill.off{background:var(--bad-soft); color:var(--bad);}
  @media (max-width:700px){ .users-form{grid-template-columns:1fr;} .users-table th:nth-child(4), .users-table td:nth-child(4){display:none;} }

  /* ===== Чат: фильтр филиала, быстрое заселение, мобильная версия ===== */
  .chat-search-head{display:grid; grid-template-columns:minmax(0,1fr); gap:7px; height:auto; align-items:stretch;}
  .chat-branch-filter{width:100%; padding:7px 10px; border:1px solid var(--line); border-radius:9px; background:var(--surface); color:var(--ink); font-family:var(--font-body); font-size:12px;}
  .chat-rent-box label{display:block; font-size:11.5px; color:var(--ink-faint); margin:8px 0 3px;}
  .chat-rent-box select,.chat-rent-box input{width:100%; padding:7px 8px; border:1px solid var(--line); border-radius:7px; background:var(--surface); color:var(--ink); font-family:var(--font-body); font-size:12px;}
  .chat-rent-confirm{width:100%; margin-top:10px; background:var(--free);}
  .chat-mobile-info{display:none; margin-left:auto; border:1px solid var(--line); background:var(--surface-2); color:var(--ink-soft); border-radius:8px; padding:5px 9px; font-size:12px; font-family:var(--font-body); cursor:pointer;}

  @media (max-width:700px){
    body{font-size:13px; overflow-x:hidden;}
    .app{display:block; min-height:100dvh;}
    .sidebar{position:sticky; top:0; z-index:50; width:100%; height:auto; min-height:0; padding:7px 8px; display:block; overflow:visible; box-shadow:0 2px 10px rgba(0,0,0,.12);}
    .sidebar .brand{padding:2px 4px 5px; min-height:34px;}
    .sidebar .brand-mark-img{width:30px; height:30px;}
    .sidebar .brand-name{font-size:17px;}
    .sidebar .brand-sub,.sidebar-foot,#globalSearch,#globalSearchResults{display:none !important;}
    .nav{display:flex; gap:5px; overflow-x:auto; padding:3px 0 1px; scrollbar-width:none; -webkit-overflow-scrolling:touch;}
    .nav::-webkit-scrollbar{display:none;}
    .nav-item{flex:0 0 auto; padding:7px 10px; border-radius:8px; font-size:12px; white-space:nowrap;}
    .nav-dot{display:none;}
    .main{padding:8px; min-height:calc(100dvh - 76px);}
    .page-head{gap:8px; margin-bottom:12px;}
    .page-head h1{font-size:22px;}
    .stat-grid{grid-template-columns:1fr 1fr; gap:8px;}
    .form-grid{grid-template-columns:1fr; padding:14px;}
    .chat-wrap{height:calc(100dvh - 83px); min-height:520px; border-radius:8px; border-left:0; border-right:0;}
    .chat-head{padding:9px 10px; min-height:48px;}
    .chat-search-head{padding:9px 10px;}
    .chat-search,.chat-branch-filter,.chat-compose textarea,.chat-rent-box select,.chat-rent-box input{font-size:16px;}
    .chat-row{padding:10px;}
    .chat-msgs{padding:10px;}
    .chat-msg{max-width:88%; font-size:13px;}
    .chat-quick{padding:6px 8px 0;}
    .chat-compose{padding:8px; gap:6px;}
    .chat-compose .chat-send{padding-left:10px; padding-right:10px;}
    .chat-ai{display:none !important;}
    .chat-mobile-info{display:block;}
    .chat-wrap[data-view="conv"] .chat-side{display:none !important;}
    .chat-wrap.mobile-side-open .chat-side{display:block !important; position:absolute; left:0; right:0; top:48px; bottom:0; max-height:none; z-index:25; border:0; padding:12px; overflow-y:auto; background:var(--surface-2);}
    .chat-wrap.mobile-side-open .chat-conv .chat-msgs,.chat-wrap.mobile-side-open .chat-conv .chat-quick,.chat-wrap.mobile-side-open .chat-conv .chat-compose,.chat-wrap.mobile-side-open #chatWho{visibility:hidden;}
    .toast-wrap{left:10px; right:10px; bottom:10px;}
    .toast{max-width:none;}
  }


  /* ===== Переписки v2: нормальный скролл + закреплённая строка ответа ===== */
  body.chat-page{overflow:hidden;}
  body.chat-page .main{min-width:0; min-height:0; overflow:hidden;}
  .chat-wrap{height:var(--chat-available-height, calc(100dvh - 60px)); min-height:280px;}
  .chat-col,.chat-list,.chat-conv{min-height:0;}
  .chat-conv{position:relative; overflow:hidden;}
  .chat-head,.chat-who,.chat-quick,.chat-compose{flex:0 0 auto;}
  .chat-msgs,.chat-rows,.chat-side{min-height:0; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; touch-action:pan-y;}
  .chat-msgs{scrollbar-gutter:stable; scroll-behavior:auto;}
  .chat-compose{position:relative; z-index:8; padding-bottom:max(9px, env(safe-area-inset-bottom)); box-shadow:0 -4px 14px rgba(20,28,32,.05);}
  .chat-compose textarea{box-sizing:border-box;}
  .chat-scroll-bottom{display:none; position:absolute; right:18px; bottom:92px; z-index:12; width:38px; height:38px; border-radius:50%; border:1px solid var(--line-strong); background:var(--surface); color:var(--ink); box-shadow:0 4px 16px rgba(0,0,0,.14); cursor:pointer; place-items:center; font-size:20px; line-height:1;}
  .chat-scroll-bottom.show{display:grid;}
  .chat-day{align-self:center; position:sticky; top:4px; z-index:2; margin:5px 0 2px; padding:3px 9px; border:1px solid var(--line); border-radius:12px; background:rgba(255,255,255,.92); color:var(--ink-faint); font-size:10.5px; font-weight:600; backdrop-filter:blur(5px);}
  .chat-row-wait{display:inline-flex; align-items:center; gap:4px; margin-top:4px; font-size:10.5px; color:var(--warn); font-weight:600;}
  .chat-row-wait::before{content:'•'; font-size:16px; line-height:8px;}
  .chat-row-wait.late{color:var(--bad);}
  @media (max-width:880px){ body.chat-page .main{padding-bottom:8px;} }
  @media (max-width:700px){
    body.chat-page{overscroll-behavior:none;}
    body.chat-page .main{padding-bottom:0;}
    .chat-wrap{height:var(--chat-available-height, calc(100dvh - 96px)); min-height:0;}
    .chat-msgs{padding-bottom:12px;}
    .chat-compose{padding-bottom:max(8px, env(safe-area-inset-bottom));}
    .chat-scroll-bottom{right:12px; bottom:90px; width:40px; height:40px;}
    .chat-day{top:2px;}
  }


  /* ERP 2026-09-19: unified navigation + richer chat */
  .hub-tabs{display:flex;gap:6px;margin:0 0 14px;flex-wrap:wrap;}
  .hub-tab{border:1px solid var(--line);background:var(--surface);border-radius:16px;padding:7px 13px;font:600 12px var(--font-body);cursor:pointer;color:var(--ink-soft);}
  .hub-tab.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-dark);}
  .demo-note{padding:9px 12px;margin:0 0 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);font-size:12px;color:var(--ink-soft);}
  .xlsx-card .rec{padding:7px 0;border-bottom:1px solid var(--line);font-size:12px;line-height:1.45;}
  .xlsx-card .rec:last-child{border-bottom:0;}
  .wa-state{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;padding:2px 7px;border-radius:10px;margin-left:5px;vertical-align:1px;}
  .wa-state.ok{background:var(--free-soft);color:var(--free);}
  .wa-state.unknown{background:var(--surface-2);color:var(--ink-faint);border:1px solid var(--line);}
  .chat-offer-edit{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:7px 0 2px;padding:7px;border-radius:7px;background:var(--surface-2);}
  .chat-offer-edit label{font-size:10px;color:var(--ink-faint);display:block;margin-bottom:2px;}
  .chat-offer-edit input{width:100%;padding:5px 6px;border:1px solid var(--line);border-radius:6px;background:var(--surface);font-size:12px;}
  .chat-sales-flow{border-color:var(--accent);background:linear-gradient(180deg,var(--accent-soft),var(--surface));}
  .chat-flow-steps{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin:7px 0 8px;}
  .chat-flow-steps span{font-size:10.5px;font-weight:600;color:var(--ink-faint);padding:3px 7px;border:1px solid var(--line);border-radius:12px;background:var(--surface);}
  .chat-flow-steps span.on{color:var(--accent-dark);border-color:var(--accent);background:var(--accent-soft);}
  .chat-flow-steps i{font-style:normal;color:var(--ink-faint);font-size:10px;}
  .chat-pick-primary{background:var(--accent);color:var(--accent-dark);border:1px solid var(--accent);font-weight:700;}
  .chat-offer-base{width:100%;margin:6px 0 0;padding:6px 7px;border-radius:6px;background:var(--surface-2);font-size:11px;color:var(--ink-soft);}
  .chat-offer-base b{font-family:var(--font-mono);color:var(--ink);}
  .chat-pick-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px;}
  .chat-pick-actions button{min-height:34px;border-radius:7px;font-family:var(--font-body);font-size:11.5px;font-weight:600;cursor:pointer;}
  .chat-pick-actions button:disabled{opacity:.45;cursor:not-allowed;}
  .chat-pick-secondary{border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);}
  .chat-pick-rent{grid-column:1/-1;border:1px solid var(--free);background:var(--free-soft);color:var(--free);}
  .chat-details{padding:0;overflow:hidden;}
  .chat-details summary{list-style:none;cursor:pointer;padding:10px 11px;font-size:12px;font-weight:600;color:var(--ink-soft);display:flex;align-items:center;justify-content:space-between;}
  .chat-details summary::-webkit-details-marker{display:none;}
  .chat-details summary span{font-family:var(--font-mono);font-size:10px;background:var(--surface-2);padding:2px 6px;border-radius:10px;}
  .chat-details[open]{padding:0 11px 10px;}
  .chat-details[open] summary{margin:0 -11px 5px;padding:10px 11px;border-bottom:1px solid var(--line);}


  .chat-pick-launch{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:9px;padding:11px;border-color:var(--line-strong);box-shadow:0 2px 10px rgba(25,35,30,.035);}
  .chat-pick-launch-icon{width:36px;height:36px;border-radius:10px;background:var(--accent-soft);color:var(--accent-dark);display:grid;place-items:center;font-size:22px;font-weight:700;}
  .chat-pick-launch-copy .h{margin:0 0 2px;}
  .chat-pick-launch-btn{border:0;border-radius:8px;background:var(--accent);color:var(--accent-dark);font:700 11.5px var(--font-body);padding:8px 11px;cursor:pointer;}
  .chat-pick-v3{padding:0;overflow:hidden;border-color:var(--line-strong);box-shadow:0 5px 18px rgba(28,40,32,.06);}
  .chat-pick-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:12px 12px 9px;border-bottom:1px solid var(--line);}
  .chat-pick-head .h{margin:0 0 2px;font-size:13px;}
  .chat-pick-close{width:28px;height:28px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink-soft);font-size:18px;line-height:1;cursor:pointer;}
  .chat-pick-filters{display:grid;gap:6px;padding:9px 10px;background:var(--surface-2);border-bottom:1px solid var(--line);}
  .chat-pick-filters select,.chat-pick-filters input{width:100%;padding:7px 8px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink);font:12px var(--font-body);}
  .chat-pick-size{display:grid;grid-template-columns:1fr auto 1fr;gap:5px;align-items:center;}
  .chat-pick-size span{color:var(--ink-faint);}
  .chat-pick-cards{border:0;border-radius:0;max-height:360px;background:var(--surface-2);padding:8px;}
  .chat-unit-card{border:1px solid var(--line);border-radius:10px;background:var(--surface);margin-bottom:7px;overflow:hidden;transition:.12s box-shadow,.12s border-color;}
  .chat-unit-card:last-child{margin-bottom:0;}
  .chat-unit-card.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft);}
  .chat-unit-main{width:100%;border:0;background:none;text-align:left;padding:10px;cursor:pointer;color:var(--ink);font-family:var(--font-body);}
  .chat-unit-top{display:flex;align-items:center;gap:7px;margin-bottom:5px;}
  .chat-unit-type{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-faint);background:var(--surface-2);padding:3px 6px;border-radius:7px;}
  .chat-unit-price{margin-left:auto;font:700 11.5px var(--font-mono);white-space:nowrap;}
  .chat-unit-location{font-size:12.5px;font-weight:700;line-height:1.3;margin-bottom:6px;}
  .chat-unit-meta{display:flex;gap:5px;flex-wrap:wrap;}
  .chat-unit-meta span{font-size:10.5px;color:var(--ink-soft);padding:2px 6px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);}
  .chat-unit-pick{display:inline-block;margin-top:8px;font-size:11px;font-weight:700;color:var(--accent-dark);}
  .chat-unit-offer{border-top:1px solid var(--line);padding:9px 10px;background:var(--accent-soft);}
  .chat-unit-offer-title{font-size:11px;font-weight:700;margin-bottom:6px;color:var(--accent-dark);}
  .chat-unit-offer .chat-offer-edit{margin:0;background:transparent;padding:0;}
  .chat-pick-empty{text-align:center;padding:24px 12px;color:var(--ink-soft);font-size:12px;line-height:1.5;}
  .chat-pick-empty span{color:var(--ink-faint);font-size:11px;}
  .chat-pick-actions-v3{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:9px 10px;border-top:1px solid var(--line);background:var(--surface);position:sticky;bottom:0;}
  .chat-pick-actions-v3 button{min-height:35px;border-radius:8px;font:700 11px var(--font-body);cursor:pointer;}
  .chat-action-message{grid-column:1/-1;border:0;background:var(--accent);color:var(--accent-dark);}
  .chat-action-book{border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);}
  .chat-action-rent{border:1px solid var(--free);background:var(--free-soft);color:var(--free);}
  .chat-rent-v3{border-color:var(--accent);padding:0 11px 11px;overflow:hidden;}
  .chat-rent-v3 .chat-pick-head{margin:0 -11px 10px;}
  .chat-rent-summary{padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2);margin-bottom:9px;}
  .chat-rent-location{font-size:12.5px;font-weight:700;margin-bottom:6px;}
  .chat-rent-back{width:100%;margin-top:6px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink-soft);padding:7px;font:600 11px var(--font-body);cursor:pointer;}

  /* Обновление 1.3 — фильтры, подбор, бронь */
  .chat-filter-panel{padding:10px;background:linear-gradient(180deg,#fff 0%,#F7F9F7 100%);gap:8px;border-bottom:1px solid var(--line);}
  .chat-filter-title{display:flex;align-items:baseline;justify-content:space-between;gap:8px;}
  .chat-filter-title span{font-family:var(--font-head);font-size:13px;font-weight:700;color:var(--ink);}
  .chat-filter-title small{font-size:10px;font-weight:500;color:var(--ink-faint);}
  .chat-search-field{display:flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:0 9px;box-shadow:0 1px 2px rgba(20,30,24,.03);}
  .chat-search-field>span{font-size:17px;color:var(--ink-faint);line-height:1;}
  .chat-search-field .chat-search{border:0;background:transparent;padding:8px 0;min-width:0;width:100%;outline:0;}
  .chat-filter-grid{display:grid;gap:6px;}
  .chat-filter-grid .chat-branch-filter{height:35px;border-color:var(--line);background:#fff;font-weight:600;color:var(--ink);box-shadow:0 1px 2px rgba(20,30,24,.025);}
  .chat-location-filter{font-weight:500!important;color:var(--ink-soft)!important;}

  .chat-pick-launch{border:1px solid #D9E0DA;background:linear-gradient(135deg,#FFFFFF 0%,#F3F7F4 100%);box-shadow:0 6px 18px rgba(29,48,36,.08);}
  .chat-pick-launch-icon{background:#E8F1EB;color:#27352D;}
  .chat-pick-launch-btn{background:#27352D;color:#FFFFFF;box-shadow:0 3px 9px rgba(39,53,45,.18);}
  .chat-pick-launch-btn:hover{background:#17251D;}
  .chat-pick-v3{border-color:#D6DDD7;box-shadow:0 10px 28px rgba(25,39,30,.10);}
  .chat-pick-head{background:#FFFFFF;}
  .chat-pick-filters{background:#F4F7F4;padding:10px;}
  .chat-pick-filters select,.chat-pick-filters input{height:36px;border-color:#D7DDD8;box-shadow:0 1px 2px rgba(20,30,24,.025);}
  .chat-pick-cards{max-height:390px;padding:9px;background:#F4F6F4;}
  .chat-unit-card{border-color:#DCE2DD;box-shadow:0 2px 7px rgba(26,40,31,.04);}
  .chat-unit-card:hover{border-color:#BAC8BD;box-shadow:0 5px 13px rgba(26,40,31,.08);}
  .chat-unit-card.on{border-color:#2E6CA4;box-shadow:0 0 0 2px #E4EDF5;}
  .chat-unit-pick{color:#2E6CA4;}
  .chat-unit-offer{background:#F1F6FA;}
  .chat-unit-offer-title{color:#2E6CA4;}
  .chat-pick-actions-v3{gap:7px;padding:10px;background:#FFFFFF;box-shadow:0 -5px 16px rgba(25,39,30,.05);}
  .chat-pick-actions-v3 button{min-height:39px;color:#fff;border:0;box-shadow:0 2px 7px rgba(20,30,24,.10);}
  .chat-action-message{background:#2E6CA4;color:#fff;}
  .chat-action-message:hover{background:#245985;}
  .chat-action-book{background:#B4841E;color:#fff;border:0;}
  .chat-action-book:hover{background:#946B16;}
  .chat-action-rent{background:#2E8C5A;color:#fff;border:0;}
  .chat-action-rent:hover{background:#237248;}

  .chat-who.reserved{background:#E8F1FA;color:#245985;border-color:#BFD3E6;}
  .chat-tag.reserved{background:#E4EDF5;color:#245985;}
  .chat-reservation-card{border-color:#BFD3E6;background:linear-gradient(135deg,#F6FAFE 0%,#EAF3FA 100%);box-shadow:0 5px 15px rgba(46,108,164,.08);}
  .chat-reservation-kicker{display:inline-flex;background:#2E6CA4;color:#fff;border-radius:12px;padding:3px 8px;font-size:10px;font-weight:700;margin-bottom:8px;}
  .chat-reservation-place{font-size:13px;font-weight:700;line-height:1.35;margin-bottom:7px;}
  .chat-reservation-price{font:700 13px var(--font-mono);margin-top:9px;color:#245985;}
  .chat-reservation-actions{display:grid;grid-template-columns:1fr auto;gap:6px;margin-top:10px;}
  .chat-reservation-actions button{border-radius:8px;min-height:35px;padding:7px 9px;font:700 11px var(--font-body);cursor:pointer;}
  .chat-reservation-rent{border:0;background:#2E8C5A;color:#fff;}
  .chat-reservation-cancel{border:1px solid #D0D8D2;background:#fff;color:var(--ink-soft);}

  .chat-pick-item{flex-wrap:wrap;}
  .chat-pick-main{display:flex;align-items:center;gap:8px;min-width:0;flex:1;}
  .chat-pick-meta{font-size:10.5px;color:var(--ink-faint);margin-left:42px;width:calc(100% - 42px);}
  .chat-attach{width:36px;height:36px;flex:0 0 36px;border:1px solid var(--line);border-radius:50%;background:var(--surface);cursor:pointer;font-size:17px;display:grid;place-items:center;}
  .chat-file-pending{display:none;gap:8px;align-items:center;padding:7px 12px;border-top:1px solid var(--line);background:var(--surface);font-size:12px;}
  .chat-file-pending.on{display:flex;}
  .chat-file-pending .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;}
  .chat-file-pending button{border:0;background:none;color:var(--bad);cursor:pointer;font-size:16px;}
  .chat-file-card{margin-top:5px;padding:8px 10px;border:1px solid var(--line);border-radius:7px;background:var(--surface-2);min-width:190px;}
  .chat-file-card .fn{font-weight:600;word-break:break-word;}
  .chat-file-actions{display:flex;gap:9px;margin-top:5px;font-size:11px;}
  .chat-file-actions a{color:var(--accent);text-decoration:none;font-weight:600;}
  .chat-tag.xlsx{background:#EEF4FF;color:#3F5F9C;}
  .chat-tag.dailyxlsx{background:var(--warn-soft);color:var(--warn);}
  @media(max-width:700px){.chat-offer-edit{grid-template-columns:1fr}.hub-tabs{position:sticky;top:0;z-index:3;background:var(--bg);padding:4px 0}.chat-file-card{min-width:0;}}

  /* Media viewer + mobile media */
  .chat-media-block{margin-top:5px;max-width:100%;}
  .chat-media-open{display:block;border:0;background:none;padding:0;cursor:zoom-in;max-width:100%;}
  .chat-video-preview{display:block;width:min(360px,100%);max-height:320px;border-radius:9px;background:#111;margin-top:4px;}
  .chat-file-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:5px;font-size:11px;}  .chat-file-actions a,.chat-file-actions button{border:0;background:none;padding:0;color:var(--accent-dark);font:600 11px var(--font-body);cursor:pointer;text-decoration:none;}
  .chat-file-card{margin-top:5px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);max-width:320px;}
  .chat-file-card .fn{font-weight:600;word-break:break-word;}
  .chat-media-viewer{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;padding:18px;}
  .chat-media-viewer.on{display:flex;}
  .chat-media-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.72);}
  .chat-media-dialog{position:relative;z-index:1;width:min(1000px,96vw);max-height:94dvh;background:#111;border-radius:12px;padding:42px 12px 12px;box-shadow:0 20px 70px rgba(0,0,0,.4);}
  .chat-media-title{position:absolute;left:14px;right:54px;top:12px;color:#fff;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .chat-media-close{position:absolute;right:10px;top:7px;width:34px;height:34px;border:0;border-radius:50%;background:rgba(255,255,255,.16);color:#fff;font-size:24px;cursor:pointer;}
  .chat-media-body{display:grid;place-items:center;max-height:calc(94dvh - 58px);overflow:auto;}
  .chat-media-body img{max-width:100%;max-height:calc(94dvh - 70px);object-fit:contain;}
  .chat-media-body video{width:100%;max-height:calc(94dvh - 70px);background:#000;}
  .chat-media-body audio{width:min(560px,90vw);}
  @media (max-width:700px){
    .chat-video-preview{width:100%;max-height:240px;}
    .chat-msg .thumb{width:min(64vw,260px);height:auto;aspect-ratio:1/1;min-width:0;min-height:0;}
    .chat-media-viewer{padding:0;align-items:stretch;}
    .chat-media-dialog{width:100vw;max-height:100dvh;height:100dvh;border-radius:0;padding:48px 0 0;}
    .chat-media-body{max-height:calc(100dvh - 48px);height:calc(100dvh - 48px);}
    .chat-media-body img,.chat-media-body video{max-height:calc(100dvh - 48px);}
    .chat-file-actions a,.chat-file-actions button{font-size:12px;padding:4px 0;}
  }
  .calls-wrap{max-width:1000px;}
  .calls-filters{display:flex; gap:6px; margin:0 0 12px;}
  .calls-filter{border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); font-size:12.5px; padding:5px 12px; border-radius:14px; cursor:pointer; font-family:var(--font-body);}
  .calls-filter.on{background:var(--accent-soft); color:var(--accent-dark); border-color:var(--accent-soft); font-weight:600;}
  .calls-search{width:100%; max-width:320px; padding:8px 12px; border:1px solid var(--line); border-radius:18px; background:var(--surface-2); font-family:var(--font-body); font-size:13px; margin-bottom:12px;}
  .calls-table{width:100%; border-collapse:collapse; background:var(--surface); border:1px solid var(--line); border-radius:10px; overflow:hidden; font-size:13px;}
  .calls-table th{font-size:11px; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.04em; font-weight:600; text-align:left; padding:9px 12px; border-bottom:1px solid var(--line);}
  .calls-table td{padding:9px 12px; border-bottom:1px solid var(--line); vertical-align:middle;}
  .calls-table tr:last-child td{border-bottom:0;}
  .calls-table tr:hover{background:var(--surface-2);}
  .call-dir{display:inline-flex; align-items:center; gap:6px; font-weight:600;}
  .call-dir.in{color:var(--free);}
  .call-dir.out{color:var(--accent);}
  .call-dir.missed{color:var(--bad);}
  .call-arr{font-size:15px;}
  .call-play{background:var(--accent-soft); color:var(--accent-dark); border:0; border-radius:8px; padding:4px 10px; cursor:pointer; font-size:12px; font-family:var(--font-body);}
  .call-play:hover{background:var(--accent); color:#fff;}
  .call-open{color:var(--accent); cursor:pointer; text-decoration:none; font-size:12px;}
  .calls-empty{padding:40px; text-align:center; color:var(--ink-faint);}
  .call-msg{align-self:center; max-width:100%; background:var(--surface-2); border:1px solid var(--line); border-radius:14px; padding:7px 14px; font-size:12.5px; display:flex; gap:10px; align-items:center; flex-wrap:wrap;}
  .call-msg.missed{background:var(--bad-soft); border-color:var(--bad-soft); color:var(--bad);}
  .call-tr{align-self:center; width:min(560px,94%); margin-top:-4px; background:var(--surface-2); border:1px solid var(--line); border-radius:12px; padding:6px 12px; font-size:12.5px;}
  .call-tr summary{cursor:pointer; font-weight:600; color:var(--ink-2,inherit); list-style-position:inside;}
  .call-tr-b{margin-top:6px; max-height:360px; overflow:auto; line-height:1.45; display:flex; flex-direction:column; gap:3px;}
  .call-tr-b .ctr-l.c b{color:#1f8a4c} .call-tr-b .ctr-l.m b{color:#2563eb}
  .call-tr-w{background:none; border:0; padding:0; text-align:center;} .call-tr-w small{color:var(--muted,#888);}
  #contractModal{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;display:flex;align-items:flex-start;justify-content:center;overflow:auto;padding:24px;}
  .ct-box{background:var(--surface);border-radius:14px;max-width:560px;width:100%;box-shadow:0 12px 40px rgba(0,0,0,.3);margin:auto;}
  .ct-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line);}
  .ct-head b{font-size:15px;}
  .ct-head button{background:none;border:0;font-size:18px;cursor:pointer;color:var(--ink-faint);}
  .ct-body{padding:16px 18px;max-height:70vh;overflow:auto;}
  .ct-sec{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint);font-weight:700;margin:14px 0 8px;}
  .ct-sec:first-child{margin-top:0;}
  .ct-types{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:10px;}
  .ct-type{border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:8px 9px;text-align:left;cursor:pointer;color:var(--ink);font:inherit;}
  .ct-type b{display:block;font-size:12.5px;}
  .ct-type span{display:block;font-size:11px;color:var(--ink-faint);margin-top:2px;}
  .ct-type.on{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent);}
  .ct-badge{font-size:10.5px;padding:1px 6px;border-radius:6px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-soft);white-space:nowrap;}
  @media (max-width:560px){.ct-types{grid-template-columns:1fr;}}
  .ct-f{display:block;margin-bottom:9px;}
  .ct-f>span{display:block;font-size:12px;color:var(--ink-soft);margin-bottom:3px;}
  .ct-f>span i{color:var(--ink-faint);font-style:normal;font-size:11px;}
  .ct-f input{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);font-family:var(--font-body);font-size:13.5px;}
  .ct-row{display:flex;gap:10px;}
  .ct-f.half{flex:1;}
  .ct-photo{margin-bottom:10px;}
  .ct-up{display:inline-block;background:var(--accent-soft);color:var(--accent-dark);padding:8px 14px;border-radius:8px;cursor:pointer;font-size:13px;}
  .ct-photo img{max-width:180px;border-radius:8px;display:block;margin-bottom:6px;border:1px solid var(--line);}
  .ct-photo button{background:none;border:1px solid var(--line);border-radius:7px;padding:3px 10px;cursor:pointer;font-size:12px;color:var(--ink-soft);}
  .ct-hint{font-size:11.5px;color:var(--ink-faint);margin-top:4px;}
  .ct-words{font-size:12px;color:var(--ink-soft);margin:2px 0 6px;font-style:italic;}
  .ct-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 18px;border-top:1px solid var(--line);}
  .ct-cancel{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:9px 16px;cursor:pointer;font-family:var(--font-body);font-size:13px;}
  .ct-make{background:var(--accent);color:#fff;border:0;border-radius:8px;padding:9px 18px;cursor:pointer;font-family:var(--font-body);font-size:13px;font-weight:600;}
  .ct-page{max-width:1000px;}
  .ct-table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden;font-size:13px;}
  .ct-table th{font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.04em;font-weight:600;text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);}
  .ct-table td{padding:9px 12px;border-bottom:1px solid var(--line);}
  .ct-table tr:last-child td{border-bottom:0;}
  .ct-table tr:hover{background:var(--surface-2);}
  .ct-empty{padding:40px;text-align:center;color:var(--ink-faint);}
  .ct-btn-card{background:var(--accent-soft);color:var(--accent-dark);border:0;border-radius:8px;padding:8px 12px;cursor:pointer;font-family:var(--font-body);font-size:12.5px;font-weight:600;width:100%;margin-top:6px;}
  .chat-rent-type{display:flex; gap:6px; margin-bottom:10px;}
  .chat-rent-type-btn{flex:1; padding:7px 8px; border-radius:8px; border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); font-size:12.5px; cursor:pointer; font-family:var(--font-body);}
  .chat-rent-type-btn.on{background:var(--accent-soft); color:var(--accent-dark); border-color:var(--accent-soft); font-weight:600;}
  .chat-rent-confirm-doc{width:100%; margin-top:6px; padding:9px; border-radius:8px; border:1px solid var(--accent); background:var(--surface); color:var(--accent); font-size:13px; cursor:pointer; font-family:var(--font-body); font-weight:600;}
  .chat-rent-confirm-doc:hover{background:var(--accent-soft);}
  .chat-side{padding-bottom:26px;}
  .clients-month-bar{background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:14px 16px; margin-bottom:18px;}
  .clients-month-nav{display:flex; align-items:center; justify-content:center; gap:14px; margin-bottom:12px;}
  .clients-month-arrow{width:28px; height:28px; border-radius:8px; border:1px solid var(--line); background:var(--surface-2); cursor:pointer; font-size:14px; color:var(--ink-soft); font-family:var(--font-body);}
  .clients-month-arrow:hover{background:var(--accent-soft); color:var(--accent-dark);}
  .clients-month-title{font-weight:700; font-size:15px; min-width:170px; text-align:center;}
  .clients-month-cards{display:grid; grid-template-columns:repeat(4,1fr); gap:10px;}
  .cms-card{border:1.5px solid var(--line); border-radius:10px; padding:10px 12px; cursor:pointer;}
  .cms-card.ok{border-color:var(--free);}
  .cms-card.warn{border-color:var(--warn);}
  .cms-card.bad{border-color:var(--bad);}
  .cms-card.none{border-color:var(--line);}
  .cms-num{font-size:22px; font-weight:700;}
  .cms-lbl{font-size:11px; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.03em; margin-top:2px;}
  @media (max-width:700px){ .clients-month-cards{grid-template-columns:1fr 1fr;} }

  /* ===== 1.6 — ТЗ 1.2 ===== */
  .app{transition:grid-template-columns .18s ease;}
  .app.sidebar-collapsed{grid-template-columns:minmax(0,1fr)!important;}
  .app.sidebar-collapsed .main{padding-left:64px;}
  body.chat-page .app.sidebar-collapsed .main{padding-left:60px;}
  @media (max-width:880px){ #sidebarCollapseBtn,#sidebarExpandBtn{display:none!important;} .app.sidebar-collapsed{grid-template-columns:1fr;} .app.sidebar-collapsed .sidebar{display:flex;} .app.sidebar-collapsed .main{padding-left:20px;} }
  /* правая панель переписки — одна прокрутка на всё, без вложенных окон */
  .chat-pick-list,.chat-pick-cards{max-height:none!important;overflow:visible!important;}
  .chat-side{overflow-y:auto;overflow-anchor:none;scrollbar-gutter:stable;}
  .chat-side > *{flex-shrink:0;}
  .chat-unit-card{transition:box-shadow .12s,border-color .12s;}
  .chat-unit-card,.chat-unit-card.on{border-width:1px;}
  .chat-unit-main{touch-action:manipulation;}
  .chat-rent-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 8px;}
  .chat-rent-grid .full{grid-column:1/-1;}
  .chat-rent-note{margin:4px 0 6px;}
  .chat-rent-total{display:flex;justify-content:space-between;align-items:center;margin:10px 0 2px;padding:9px 11px;border-radius:9px;background:var(--accent-soft);color:var(--accent-dark);font-size:12.5px;}
  .chat-rent-total b{font-family:var(--font-mono);font-size:14px;}
  .ct-foot .ct-make-alt{background:var(--surface)!important;color:var(--ink)!important;border:1px solid var(--line)!important;}
  /* раздел «Клиенты» — карточки */
  .mc-stat-on{outline:2px solid var(--bar);outline-offset:-2px;}
  .mc-wrap{margin-top:4px;}
  .mc-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--surface);margin-bottom:16px;position:sticky;top:0;z-index:5;box-shadow:0 4px 14px rgba(20,30,25,.05);}
  .mc-search{min-width:240px;flex:1;max-width:340px;}
  .mc-select{padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);font:500 12.5px var(--font-body);}
  .mc-chip{padding:8px 13px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink-soft);font:600 12px var(--font-body);cursor:pointer;}
  .mc-chip.on{background:var(--ink);color:var(--surface);border-color:var(--ink);}
  .mc-count{margin-left:auto;color:var(--ink-faint);font-size:12px;}
  .mc-group{margin-bottom:22px;}
  .mc-group-head{display:flex;align-items:center;gap:8px;margin:0 2px 10px;font-weight:700;font-size:13.5px;}
  .mc-group-head b{font:600 11px var(--font-mono);padding:2px 8px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-soft);}
  .mc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px;}
  .mc-card{--tone:var(--ink-soft);--tone-bg:var(--surface-2);background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px 14px;display:flex;flex-direction:column;gap:2px;box-shadow:0 1px 3px rgba(20,30,25,.04);transition:box-shadow .15s,transform .15s;}
  .mc-card:hover{box-shadow:0 8px 22px rgba(20,30,25,.09);transform:translateY(-1px);}
  .mc-bad{--tone:var(--bad);--tone-bg:rgba(200,60,50,.1);}
  .mc-warn{--tone:#B7791F;--tone-bg:rgba(214,158,46,.14);}
  .mc-daily{--tone:#7B4FA6;--tone-bg:rgba(123,79,166,.12);}
  .mc-book{--tone:var(--occupied);--tone-bg:rgba(46,108,164,.12);}
  .mc-info{--tone:var(--free);--tone-bg:rgba(47,133,90,.12);}
  .mc-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
  .mc-pill{font:700 10.5px var(--font-body);text-transform:uppercase;letter-spacing:.04em;padding:3px 9px;border-radius:999px;color:var(--tone);background:var(--tone-bg);}
  .mc-amount{font:700 14px var(--font-mono);}
  .mc-title{font-weight:700;font-size:15px;margin-bottom:2px;}
  .mc-task{font-size:12.5px;color:var(--ink-soft);margin-bottom:8px;}
  .mc-task small{display:block;color:var(--tone);font-weight:600;font-size:11.5px;}
  .mc-kv{display:flex;justify-content:space-between;gap:12px;font-size:12.5px;padding:3px 0;border-top:1px dashed var(--line);}
  .mc-kv span:first-child{color:var(--ink-faint);}
  .mc-kv span:last-child{text-align:right;}
  .mc-phone{font-family:var(--font-mono);font-weight:600;}
  .mc-contact span:last-child{color:var(--free);font-weight:600;}
  .mc-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;}
  .mc-btn{flex:1;min-width:84px;padding:9px 10px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:600 12px var(--font-body);cursor:pointer;}
  .mc-btn:hover{border-color:var(--ink-faint);}
  .mc-main{background:var(--accent);border-color:var(--accent);color:#fff;}
  .mc-main:hover{filter:brightness(.95);border-color:var(--accent);}
  .mc-ghost{color:var(--ink-soft);}
  .mc-more{display:block;margin:4px auto 20px;padding:11px 22px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font:600 13px var(--font-body);cursor:pointer;color:var(--ink);}
  .mc-empty{padding:40px;text-align:center;color:var(--ink-faint);border:1px dashed var(--line);border-radius:14px;}
  @media (max-width:700px){ .mc-grid{grid-template-columns:1fr;} .mc-toolbar{position:static;} .mc-search{max-width:none;min-width:0;width:100%;} .mc-count{margin-left:0;} }

  /* ===== 1.7 CRM ===== */
  .crm-alert{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px;border-radius:12px;background:var(--bad-soft,#FBE4E1);color:var(--bad);font-weight:600;margin-bottom:14px}
  .crm-alert.good{background:var(--free-soft);color:var(--free)}
  .crm-alert .btn{margin-left:auto}
  .crm-dot{width:8px;height:8px;border-radius:50%;background:var(--bad);animation:crmPulse 1.4s infinite}
  @keyframes crmPulse{50%{opacity:.3}}
  .crm-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:var(--surface);border:1px solid var(--line);border-radius:14px;margin-bottom:14px;overflow:hidden}
  .crm-kpis>div{padding:12px 16px;border-right:1px solid var(--line)} .crm-kpis>div:last-child{border-right:0}
  .crm-kpis span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint);font-weight:600}
  .crm-kpis b{font:700 21px var(--font-head,inherit)}
  .crm-toolbar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:10px}
  .crm-tab{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 13px;font:600 12.5px var(--font-body);color:var(--ink-soft);cursor:pointer}
  .crm-tab b{font:600 11px var(--font-mono);color:var(--ink-faint);margin-left:3px}
  .crm-tab.on{background:var(--ink);color:var(--surface);border-color:var(--ink)} .crm-tab.on b{color:var(--surface);opacity:.7}
  .crm-list{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden}
  .crm-row{display:grid;grid-template-columns:4px minmax(150px,1.1fr) minmax(0,2fr) 100px auto;gap:14px;align-items:center;padding:10px 14px 10px 0;border-bottom:1px solid var(--line);cursor:pointer}
  .crm-row:last-child{border-bottom:0} .crm-row:hover{background:var(--surface-2)}
  .crm-row>i{align-self:stretch;border-radius:0 3px 3px 0}
  .crm-who b{display:block} .crm-who span{font:12px var(--font-mono);color:var(--ink-faint)}
  .crm-what{font-size:12.5px;color:var(--ink-soft);min-width:0}
  .crm-pill{font-weight:700;font-size:12px}
  .crm-note{font-size:11.5px;color:var(--ink-faint);margin-top:2px}
  .crm-amt{text-align:right;font:600 13px var(--font-mono)}
  .crm-acts{display:flex;gap:5px;justify-content:flex-end;flex-wrap:wrap}
  .crm-modal{max-width:470px!important;text-align:left!important;max-height:calc(100vh - 40px);overflow:auto}
  .crm-modal label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink-faint);font-weight:600;margin-bottom:10px;flex:1}
  .crm-modal input,.crm-modal select{border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:var(--surface);color:var(--ink);font:400 13.5px var(--font-body)}
  .crm-modal .crm-chk{flex-direction:row;align-items:flex-start;gap:8px;font-weight:500;color:var(--ink-soft)}
  .crm-mh{font:700 18px var(--font-head,inherit);margin-bottom:2px} .crm-ms{font-size:12.5px;color:var(--ink-faint);margin-bottom:12px}
  .crm-sub{font-size:12px;color:var(--ink-faint);font-weight:600;margin:4px 0}
  .crm-opts{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:12px}
  .crm-opts.stars{grid-template-columns:repeat(6,1fr)}
  .crm-opt{border:1px solid var(--line);background:var(--surface-2);border-radius:9px;padding:8px 9px;text-align:left;font:500 12.5px var(--font-body);color:var(--ink);cursor:pointer}
  .crm-opts.stars .crm-opt{text-align:center;padding:8px 4px}
  .crm-opt.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-dark);font-weight:600}
  .crm-frow{display:flex;gap:8px}
  .crm-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}
  .crm-lead{border-color:var(--accent)} .crm-lead.lost{border-color:var(--bad)}
  .crm-lead-h{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-bottom:6px}
  .crm-src{border:1px solid var(--line);border-radius:7px;padding:3px 6px;font-size:11.5px;background:var(--surface);color:var(--ink)}
  .crm-steps{display:flex;gap:3px;margin-bottom:6px}
  .crm-step{flex:1;text-align:center;font-size:10.5px;font-weight:600;padding:4px 2px;border-radius:6px;background:var(--surface-2);color:var(--ink-faint)}
  .crm-step.past{background:var(--free-soft);color:var(--free)} .crm-step.on{background:var(--accent);color:#fff}
  .crm-lead-r{font-weight:600;color:var(--bad);font-size:12.5px;margin-bottom:4px}
  .crm-qr-h{margin-top:8px;font-size:11px;color:var(--ink-faint)}
  .crm-lb-row{display:flex;gap:6px;margin-top:8px}
  .crm-lb{flex:1 1 0;min-width:0;display:flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);padding:7px 9px;font:600 12px var(--font-body);cursor:pointer;text-align:left}
  .crm-lb span{color:var(--ink-faint);font-weight:500;flex:none}.crm-lb b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.crm-lb i{font-style:normal;color:var(--ink-faint);flex:none}
  .crm-lb:hover{border-color:var(--ink-faint)}.crm-lb-src.none b{color:var(--warn,#b54708)}.crm-lb-lost:hover{border-color:var(--bad);color:var(--bad)}
  .crm-pop{position:fixed;z-index:10000;min-width:210px;max-width:280px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(0,0,0,.18);padding:6px;display:flex;flex-direction:column}
  .crm-pop-h{font-size:11px;color:var(--ink-faint);padding:4px 8px 6px}
  .crm-pop button{display:flex;justify-content:space-between;align-items:center;border:0;background:none;text-align:left;padding:8px 10px;border-radius:8px;font:500 13px var(--font-body);color:var(--ink);cursor:pointer}
  .crm-pop button:hover{background:var(--surface-2)}.crm-pop button.on{font-weight:700}.crm-pop button i{font-style:normal;color:var(--good,#16a34a)}.crm-pop button.more{color:var(--ink-soft);border-top:1px solid var(--line);border-radius:0 0 8px 8px;margin-top:2px}
  .crm-qr{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
  .crm-qr button{border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink-soft);padding:4px 9px;font:600 11px var(--font-body);cursor:pointer}
  .crm-qr button:hover{border-color:var(--bad);color:var(--bad)}
  .crm-st-row{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin:0 0 8px}
  .crm-st-l{font-size:12px;color:var(--ink-faint);margin-right:2px}
  .crm-st-chip{font-size:12px;border:1px solid var(--line);border-radius:12px;padding:3px 9px;background:var(--surface)}
  .crm-lead-btn{width:100%;margin-top:6px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink-soft);padding:7px;font:600 11.5px var(--font-body);cursor:pointer}
  .crm-pipes{display:flex;gap:6px;align-items:stretch;margin-bottom:12px;overflow-x:auto}
  .crm-pipe{flex:1;min-width:190px;display:flex;align-items:center;gap:10px;text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:10px 12px;cursor:pointer;color:var(--ink)}
  .crm-pipe b{display:block;font:700 14px var(--font-head,inherit)} .crm-pipe small{font-size:11.5px;color:var(--ink-faint)}
  .crm-pipe-n{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--line);font:700 12px var(--font-mono);flex-shrink:0}
  .crm-pipe-c{margin-left:auto;font:600 13px var(--font-mono);color:var(--ink-soft)}
  .crm-pipe.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)} .crm-pipe.on .crm-pipe-n{background:var(--accent);color:#fff;border-color:var(--accent)}
  .crm-arrow{display:grid;place-items:center;color:var(--ink-faint)}
  .crm-board{display:grid;gap:10px;overflow-x:auto;padding-bottom:6px}
  .crm-col{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:8px;min-height:300px;display:flex;flex-direction:column;gap:7px}
  .crm-col.drop{outline:2px dashed var(--accent);outline-offset:-4px}
  .crm-col-h{display:flex;justify-content:space-between;font-weight:700;font-size:13px;padding:2px 4px 4px} .crm-col-h span{font:600 11px var(--font-mono);color:var(--ink-faint)}
  .crm-card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:9px 10px;cursor:pointer}
  .crm-card:hover{border-color:var(--ink-faint)}
  .crm-card b{font-size:13px}
  .crm-meta{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px;min-width:0}
  .crm-chip{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 10.5px var(--font-body);padding:2px 7px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-soft)}
  .crm-chip.ok{background:var(--free-soft);color:var(--free);border-color:transparent} .crm-chip.bad{background:var(--bad-soft,#FBE4E1);color:var(--bad);border-color:transparent}
  .crm-chip.acc{background:var(--accent-soft);color:var(--accent-dark);border-color:transparent} .crm-chip.info{background:var(--occupied-soft,#E2ECF6);color:var(--occupied);border-color:transparent}
  .crm-cfoot{font-size:11.5px;color:var(--ink-faint);display:flex;justify-content:space-between;align-items:center;gap:6px;margin-top:6px;flex-wrap:wrap}
  .crm-cfoot .btn{padding:3px 8px;font-size:11px}
  @media (max-width:880px){ .crm-kpis{grid-template-columns:1fr 1fr} .crm-kpis>div:nth-child(2){border-right:0} .crm-kpis>div:nth-child(-n+2){border-bottom:1px solid var(--line)}
    .crm-row{grid-template-columns:4px minmax(0,1fr) auto;row-gap:4px} .crm-what{grid-column:2/3} .crm-amt{grid-column:3;grid-row:1} .crm-acts{grid-column:2/-1;justify-content:flex-start}
    .crm-opts{grid-template-columns:1fr} .crm-opts.stars{grid-template-columns:repeat(3,1fr)} }

  /* 1.8 подбор: подгрузка */
  .chat-pick-more{display:block;width:100%;margin-top:4px;padding:9px;border:1px dashed var(--line-strong,var(--line));border-radius:10px;background:var(--surface);color:var(--ink-soft);font:600 12px var(--font-body);cursor:pointer}
  .chat-pick-more:hover{border-color:var(--accent);color:var(--accent-dark)}
  #chatSide .chat-pick{overflow:clip}
  .chat-pick-actions-v3{position:sticky;bottom:-26px;z-index:3;background:var(--surface);padding-top:8px;padding-bottom:8px;box-shadow:0 -6px 12px rgba(20,30,25,.06)}

  /* 1.9 */
  .crm-hub .hub-tab.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}
  .crm-hub .hub-tab b{font:600 10.5px var(--font-mono);margin-left:6px;padding:0 6px;border-radius:9px;background:var(--surface-2);color:var(--ink-soft)}
  .crm-hub .hub-tab b.bad{background:var(--bad);color:#fff}
  .chat-unit-h{display:flex;justify-content:space-between;align-items:center;gap:6px}
  .chat-unit-edit{border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:2px 8px;font:600 11px var(--font-body);color:var(--ink-soft);cursor:pointer}
  .chat-unit-edit:hover{border-color:var(--accent);color:var(--accent-dark)}
  .chat-unit-editbox{border-color:var(--accent)}
  .chat-pick-which{grid-column:1/-1;font-size:11.5px;color:var(--ink-faint);font-weight:600;margin-top:2px}
  .chat-pick-which-row{grid-column:1/-1;display:grid;grid-template-columns:1fr auto auto;gap:5px;align-items:center;font-size:12px}
  .chat-pick-which-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
  .chat-pick-which-row button{padding:6px 10px!important;min-height:0!important;font-size:11.5px!important}
  .chat-pick-actions-v3 .chat-action-message{grid-column:1/-1}

  /* 2.0 карточка ячейки */
  .uc-scrim{position:fixed;inset:0;background:rgba(15,18,20,.4);z-index:700}
  .uc-drawer{position:fixed;top:0;right:0;bottom:0;width:min(520px,100%);background:var(--bg);z-index:701;display:flex;flex-direction:column;box-shadow:-12px 0 30px rgba(0,0,0,.18)}
  .uc-head{display:flex;justify-content:space-between;gap:10px;padding:18px 20px 14px;background:var(--surface);border-bottom:1px solid var(--line)}
  .uc-head h2{margin:2px 0 4px;font:700 20px var(--font-head,inherit);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .uc-x{border:0;background:var(--surface-2);width:32px;height:32px;border-radius:8px;font-size:18px;cursor:pointer;color:var(--ink)}
  .uc-st{font:700 11px var(--font-body);padding:3px 9px;border-radius:999px}
  .uc-st.ok{background:var(--free-soft);color:var(--free)} .uc-st.occ{background:var(--occupied-soft,#E2ECF6);color:var(--occupied)}
  .uc-st.daily{background:#EFE6F7;color:#7B4FA6} .uc-st.warn{background:var(--accent-soft);color:var(--accent-dark)}
  .uc-st.bad{background:var(--bad-soft,#FBE4E1);color:var(--bad)} .uc-st.mute{background:var(--surface-2);color:var(--ink-faint)}
  .uc-body{flex:1;overflow-y:auto;padding:14px 20px 30px;display:flex;flex-direction:column;gap:12px}
  .uc-sec{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
  .uc-now{border-color:var(--accent)}
  .uc-h{font:700 13px var(--font-head,inherit);margin-bottom:8px}
  .uc-client{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:6px}
  .uc-client b{display:block;font-size:15px} .uc-client span{font:12px var(--font-mono);color:var(--ink-faint)}
  .uc-client .crm-chip{font-family:var(--font-body)}
  .uc-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
  .uc-hist{padding:8px 6px;border-top:1px dashed var(--line);cursor:pointer;border-radius:6px}
  .uc-hist:first-of-type{border-top:0} .uc-hist:hover{background:var(--surface-2)}
  .uc-hist-top{display:flex;justify-content:space-between;gap:8px;font-size:13px} .uc-hist-top span{font-size:12px;color:var(--ink-faint);white-space:nowrap}
  .uc-log{display:grid;grid-template-columns:48px 1fr auto;gap:8px;font-size:12px;padding:4px 0;border-top:1px dashed var(--line)} .uc-log span:first-child,.uc-log span:last-child{color:var(--ink-faint)}
  .uc-mini{display:flex;flex-direction:column;margin:2px 0 4px} .uc-mini span{font:12px var(--font-mono);color:var(--ink-faint)}
  .detail-panel .uc-sec{padding:10px 0 0;border:0;background:none;border-top:1px solid var(--line);border-radius:0;margin-top:12px}

  /* 2.1 цитаты */
  .chat-quote{display:flex;flex-direction:column;gap:1px;margin:0 0 5px;padding:5px 8px;border-left:3px solid var(--accent);background:rgba(0,0,0,.045);border-radius:6px;font-size:12px;cursor:pointer;max-width:100%}
  .chat-quote b{font-size:11px;color:var(--accent-dark)}
  .chat-quote span{color:var(--ink-soft);overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;white-space:pre-wrap}
  .chat-msg.out .chat-quote{background:rgba(255,255,255,.55)}
  @keyframes chatFlash{0%,60%{box-shadow:0 0 0 3px var(--accent)}100%{box-shadow:0 0 0 0 transparent}}
  .chat-flash{animation:chatFlash 1.6s ease-out}

  /* 2.2 ответ на сообщение */
  .chat-msg{position:relative}
  .chat-reply-btn{position:absolute;top:-10px;right:6px;display:none;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:2px 9px;font:600 11px var(--font-body);color:var(--ink-soft);cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.08);z-index:2}
  .chat-msg:hover .chat-reply-btn{display:block}
  .chat-reply-btn:hover{color:var(--accent-dark);border-color:var(--accent)}
  @media (hover:none){ .chat-reply-btn{display:block;position:static;margin:-2px 0 4px auto;padding:1px 8px;font-size:10.5px;box-shadow:none} }
  .chat-reply-bar{display:none;gap:8px;align-items:center;padding:7px 12px;border-top:1px solid var(--line);background:var(--surface)}
  .chat-reply-bar.on{display:flex}
  .chat-reply-q{flex:1;min-width:0;border-left:3px solid var(--accent);padding:3px 8px;background:var(--surface-2);border-radius:6px;display:flex;flex-direction:column;font-size:12px}
  .chat-reply-q b{font-size:11px;color:var(--accent-dark)} .chat-reply-q span{color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .chat-reply-bar button{border:0;background:var(--surface-2);width:28px;height:28px;border-radius:7px;font-size:16px;cursor:pointer;color:var(--ink-soft)}

  /* ===== 2.3 мобильная версия ===== */
  #mnavBtn, #mnavTitle, #mnavScrim{display:none}
  @media (max-width:1100px){ .chat-wrap{grid-template-columns:minmax(0,1fr)!important} .chat-wrap .chat-gutter{display:none!important} }
  @media (max-width:880px){
    html, body{overflow-x:hidden}
    .app{display:block!important; min-height:100dvh}
    /* верхняя панель */
    .sidebar{position:fixed!important; top:0; left:0; right:0; z-index:900; height:54px!important; min-height:0; width:auto!important;
      display:flex!important; flex-direction:row; align-items:center; padding:0 10px!important; overflow:hidden!important; box-shadow:0 2px 10px rgba(0,0,0,.18)}
    .sidebar > *:not(.brand){display:none!important}
    .sidebar .brand{margin:0!important; padding:0!important; min-height:0; gap:8px; width:100%; flex-wrap:nowrap}
    .sidebar .brand img{width:30px!important; height:30px!important}
    .sidebar .brand-name{font-size:16px!important; white-space:nowrap}
    #mnavBtn{display:grid; place-items:center; width:38px; height:38px; flex-shrink:0; border:1px solid #3A4145; background:#22282B; color:#fff; border-radius:9px; font-size:18px; cursor:pointer}
    #mnavTitle{display:block; margin-left:auto; min-width:0; max-width:48vw; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#B7BEBA; font:600 12.5px var(--font-body)}
    .main{padding:66px 12px 24px!important; min-width:0}
    body.chat-page .main{padding:62px 6px 0!important}
    /* открытое меню — выдвижная панель слева */
    body.mnav-open{overflow:hidden}
    body.mnav-open .sidebar{height:100dvh!important; bottom:0; right:auto; width:min(86vw,320px)!important; flex-direction:column; align-items:stretch;
      padding:12px 12px max(16px,env(safe-area-inset-bottom))!important; overflow-y:auto!important; animation:mnavIn .18s ease-out}
    body.mnav-open .sidebar > *:not(.brand){display:revert!important}
    body.mnav-open .sidebar > .nav{display:flex!important; flex-direction:column!important; overflow:visible!important; gap:2px}
    body.mnav-open .sidebar .sidebar-foot{display:block!important; margin-top:14px}
    body.mnav-open .sidebar .brand-sub{display:block!important; margin:6px 0 10px}
    body.mnav-open .sidebar .brand{margin-bottom:6px!important}
    body.mnav-open #mnavTitle{display:none}
    body.mnav-open .nav-item{flex:0 0 auto; padding:12px 14px!important; font-size:15px!important; border-radius:10px; white-space:normal}
    body.mnav-open .nav-dot{display:inline-block!important}
    body.mnav-open #mnavScrim{display:block; position:fixed; inset:0; z-index:899; background:rgba(10,14,12,.5)}
    @keyframes mnavIn{from{transform:translateX(-24px); opacity:.6} to{transform:none; opacity:1}}
    @media (prefers-reduced-motion:reduce){ body.mnav-open .sidebar{animation:none} }
    /* заголовки и кнопки переносятся, ничего не вылезает за экран */
    .page-head{flex-direction:column; align-items:stretch!important; gap:10px!important}
    .page-head > div + div, .page-head > div:last-child:not(:first-child){display:flex; flex-wrap:wrap; gap:6px}
    .page-head .btn{flex:1 1 auto}
    .page-head h1{font-size:22px!important; line-height:1.2}
    .legend, .crm-toolbar, .hub-tabs{flex-wrap:wrap}
    .search-input{min-width:0!important; width:100%; max-width:none!important}
    .stat-grid, .crm-kpis{grid-template-columns:1fr 1fr!important}
    .stat-value{font-size:22px!important; word-break:break-word}
    .map-layout, .branch-grid, .grid2, .form-grid{grid-template-columns:1fr!important}
    .detail-panel{position:static!important; top:auto!important}
    .block{overflow:hidden}
    .block table, .ct-table, section.block > table{display:block; overflow-x:auto; -webkit-overflow-scrolling:touch; max-width:100%}
    .block table th, .block table td{white-space:nowrap}
    .confirm-card{max-height:calc(100dvh - 32px); overflow-y:auto; padding:20px 18px!important}
    .cell-grid{grid-template-columns:repeat(auto-fill,minmax(58px,1fr))!important}
    input, select, textarea{font-size:16px}
    .crm-board{grid-template-columns:repeat(var(--cols,4),minmax(240px,82vw))!important}
    .uc-drawer{width:100%}
    .toast-wrap{left:10px; right:10px; bottom:10px}
  }
  @media (max-width:420px){
    .stat-grid{gap:8px}
    .crm-row{padding-right:10px}
    .hub-tab, .crm-tab{padding:7px 11px!important; font-size:12px!important}
  }

  /* ===== 2.4 шаблоны сообщений ===== */
  .tpl-page{max-width:1100px}
  .tpl-status{font-size:12px; color:var(--ink-faint); align-self:flex-end}
  .tpl-status.ok{color:var(--free)} .tpl-status.bad{color:var(--bad)}
  .tpl-top{display:flex; gap:12px; flex-wrap:wrap; align-items:flex-end; margin-bottom:12px}
  .tpl-search{flex:1 1 260px; border:1px solid var(--line); border-radius:9px; padding:9px 12px; background:var(--surface); color:var(--ink); font:400 14px var(--font-body)}
  .tpl-kaspi{display:flex; flex-direction:column; gap:4px; font-size:12px; font-weight:600; color:var(--ink-faint)}
  .tpl-kaspi input{border:1px solid var(--line); border-radius:9px; padding:8px 10px; background:var(--surface); color:var(--ink); font:500 14px var(--font-mono); width:200px}
  .tpl-help{font-size:12.5px; color:var(--ink-soft); background:var(--surface-2); border:1px solid var(--line); border-radius:10px; padding:10px 14px; line-height:1.55; margin-bottom:12px}
  .tpl-help code{font-family:var(--font-mono); background:var(--accent-soft); color:var(--accent-dark); padding:0 4px; border-radius:4px; font-size:12px}
  .tpl-jump{display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-bottom:14px}
  .tpl-changed-n{font-size:12px; color:var(--accent-dark); font-weight:600; margin-left:6px}
  .tpl-group{margin-bottom:16px; scroll-margin-top:12px}
  .tpl-when{font-size:12px; color:var(--ink-faint); margin-top:3px; line-height:1.45}
  .tpl-head-btns{display:flex; gap:6px; flex-wrap:wrap}
  .tpl-list, .tpl-cards{padding:12px 16px 4px; display:grid; gap:12px}
  .tpl-item, .tpl-card{border:1px solid var(--line); border-radius:10px; padding:12px; background:var(--surface)}
  .tpl-card.changed{border-color:var(--accent); box-shadow:inset 3px 0 0 var(--accent)}
  .tpl-badge{display:none; font-size:10.5px; font-weight:700; color:var(--accent-dark); background:var(--accent-soft); border-radius:8px; padding:1px 7px; margin-left:6px; vertical-align:middle}
  .tpl-card.changed .tpl-badge{display:inline-block}
  .tpl-item-top, .tpl-card-top{display:flex; gap:8px; justify-content:space-between; align-items:flex-start; margin-bottom:8px; flex-wrap:wrap}
  .tpl-card-title{font-weight:700; font-size:14px}
  .tpl-label{flex:1 1 180px; border:1px solid var(--line); border-radius:8px; padding:7px 10px; font:600 13.5px var(--font-body); background:var(--surface); color:var(--ink)}
  .tpl-item-btns{display:flex; gap:4px}
  .tpl-del{color:var(--bad)}
  .tpl-item textarea, .tpl-card textarea{width:100%; box-sizing:border-box; border:1px solid var(--line); border-radius:8px; padding:9px 11px; font:400 13.5px/1.5 var(--font-body); background:var(--surface-2); color:var(--ink); resize:vertical; min-height:52px}
  .tpl-item textarea:focus, .tpl-card textarea:focus, .tpl-label:focus, .tpl-search:focus, .tpl-kaspi input:focus{outline:none; border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft)}
  .tpl-vars{display:flex; gap:5px; flex-wrap:wrap; margin:7px 0}
  .tpl-var{border:1px dashed var(--line-strong); background:transparent; color:var(--ink-soft); border-radius:12px; padding:2px 9px; font:500 11.5px var(--font-mono); cursor:pointer}
  .tpl-var:hover{border-color:var(--accent); color:var(--accent-dark); background:var(--accent-soft)}
  .tpl-prev-wrap > span{font-size:11px; font-weight:600; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.3px}
  .tpl-prev{margin-top:4px; white-space:pre-wrap; font-size:13px; line-height:1.5; background:#E7F6E3; color:#1d2b1a; border-radius:10px 10px 10px 2px; padding:8px 11px; max-width:520px}
  body[data-theme="dark"] .tpl-prev{background:#1f3322; color:#dcefd8}
  @media (max-width:880px){
    .tpl-kaspi{flex:1 1 100%} .tpl-kaspi input{width:100%; box-sizing:border-box}
    .tpl-list, .tpl-cards{padding:10px 10px 2px}
    .tpl-item, .tpl-card{padding:10px}
  }

  /* ===== 2.5 договор в переписке ===== */
  .chat-ct-btn{margin-left:auto; flex:0 0 auto; border:1px solid var(--line); background:var(--surface-2); color:var(--ink-soft); border-radius:8px; padding:5px 10px; font:600 12px var(--font-body); cursor:pointer; white-space:nowrap}
  .chat-ct-btn.none{background:var(--bad-soft,#FBE4E1); color:var(--bad); border-color:var(--bad)}
  .chat-ct-btn.wait{background:var(--warn-soft); color:var(--warn); border-color:var(--warn)}
  .chat-ct-btn.ok{background:var(--free-soft); color:var(--free); border-color:var(--free)}
  .chat-ct-btn + .chat-mobile-info{margin-left:6px}
  .ct-flag{display:inline-block; font-size:11px; font-weight:700; border-radius:10px; padding:1px 8px; margin-left:4px; white-space:nowrap}
  .ct-flag.none{background:var(--bad); color:#fff; cursor:pointer}
  .ct-flag.wait{background:var(--warn-soft); color:var(--warn)}
  .ct-flag.ok{background:var(--free-soft); color:var(--free)}
  .ct-st{font-weight:600} .ct-st.none{color:var(--bad)} .ct-st.wait{color:var(--warn)} .ct-st.ok{color:var(--free)}
  .ct-kv span:last-child{text-align:right}
  .ct-acts{display:flex; gap:6px; flex-wrap:wrap; margin:6px 0 4px}
  .ct-docs{margin:4px 0 2px; padding:6px 8px; border-radius:8px; background:var(--surface-2); border:1px dashed var(--line)}
  .ct-docs .chat-kv span:last-child{text-align:right; overflow-wrap:anywhere}
  .ct-docs-src{font-size:10.5px; color:var(--ink-faint); text-align:right; margin-top:2px}
  .ct-foot-hint{padding:0 18px 14px; font-size:12px; color:var(--ink-faint); text-align:right}
  .ct-unit-line{padding:6px 0; border-bottom:1px solid var(--line)} .ct-unit-line:last-of-type{border-bottom:0}
  .ct-none{margin-bottom:16px}
  .ct-sel{border:1px solid var(--line); border-radius:8px; padding:6px 10px; background:var(--surface); color:var(--ink); font:500 13px var(--font-body)}
  .ct-none-list{padding:4px 20px 8px}
  .ct-none-row{display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap; padding:9px 0; border-bottom:1px solid var(--line)}
  .ct-none-row:last-child{border-bottom:0}
  .ct-none-row b{display:block; font-size:13.5px} .ct-none-row span{font-size:12px; color:var(--ink-faint)}
  .ct-none-row .ct-acts{margin:0}
  @media (max-width:700px){
    .chat-ct-btn span{display:none}
    .chat-ct-btn{padding:5px 8px}
    .ct-foot-hint{text-align:left}
    .ct-none-list{padding:4px 12px 8px}
  }

  /* ===== 2.6 срок договора ===== */
  .ct-st.soon, .ct-st.exp{color:var(--warn)}
  .ct-flag.soon, .ct-flag.exp{background:var(--warn-soft); color:var(--warn); cursor:pointer}
  .ct-exp{border-color:var(--warn)}

  /* ===== 2.7 даты договора ===== */
  .ct-f input[type=date]{cursor:pointer; min-height:38px}
  .ct-f span i{font-style:normal; font-weight:400; color:var(--ink-faint); font-size:11px}
  .crm-modal input[type=date]{cursor:pointer}

  /* ===== 2.8 адреса локаций ===== */
  .loc-block{margin-bottom:16px}
  .loc-list{padding:8px 20px 12px}
  .loc-row{display:grid; grid-template-columns:minmax(150px,1.1fr) 1fr 1.4fr auto; gap:10px; align-items:end; padding:10px 0; border-bottom:1px solid var(--line)}
  .loc-row.ok{opacity:.85}
  .loc-key b{display:block; font-size:13px} .loc-key span{font-size:11.5px; color:var(--ink-faint)}
  .loc-row label{display:flex; flex-direction:column; gap:3px; font-size:11px; font-weight:600; color:var(--ink-faint)}
  .loc-row input{border:1px solid var(--line); border-radius:8px; padding:7px 9px; background:var(--surface); color:var(--ink); font:400 13px var(--font-body)}
  .loc-ok{padding-bottom:4px; white-space:nowrap}
  .ct-warn{margin:-4px 0 10px; padding:7px 10px; border-radius:8px; background:var(--warn-soft); color:var(--warn); font-size:12px; font-weight:600}
  @media (max-width:880px){ .loc-row{grid-template-columns:1fr} .loc-list{padding:6px 12px 10px} }

  /* ===== 2.9 статусы и правки ===== */
  .chat-tick{font-family:var(--font-body); font-size:11px; letter-spacing:-2px; margin-left:3px; color:var(--ink-faint)}
  .chat-tick.read{color:#34B7F1; font-weight:700}
  .chat-tick.err{color:var(--bad); letter-spacing:0}
  .chat-edited{font-family:var(--font-body); font-style:italic; cursor:help}
  .kp-clk{cursor:pointer}
  .kp-sortable{cursor:pointer; user-select:none}
  .kp-sortable:hover,.kp-sortable.on{color:var(--accent)}
  .kp-clk:hover{text-decoration:underline; text-decoration-style:dotted}
  .chat-del-tag{font-size:11px; font-weight:600; color:#c0392b}
  .chat-del-txt{opacity:.65; text-decoration:line-through}
  .chat-old{font-size:11px; color:var(--ink-faint); margin-top:2px; text-decoration:line-through}

  /* ===== 3.1 каталог ===== */
  .cat-page{max-width:1150px}
  .cat-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:14px}
  .cat-card{background:var(--surface); border:1px solid var(--line); border-radius:12px; overflow:hidden; cursor:pointer; transition:box-shadow .15s, transform .15s}
  .cat-card:hover{box-shadow:0 8px 24px rgba(0,0,0,.08); transform:translateY(-1px)}
  .cat-card.off{opacity:.55}
  .cat-ph{position:relative; aspect-ratio:4/3; background:var(--surface-2); display:grid; place-items:center; overflow:hidden}
  .cat-ph img{width:100%; height:100%; object-fit:cover}
  .cat-ph span{font-size:34px}
  .cat-ph i{position:absolute; right:8px; bottom:8px; background:rgba(0,0,0,.6); color:#fff; font-style:normal; font-size:11px; padding:2px 7px; border-radius:10px}
  .cat-ph.sm{width:64px; height:64px; aspect-ratio:auto; border-radius:8px; flex:0 0 64px}
  .cat-body{padding:10px 12px; min-width:0}
  .cat-body b{display:block; font-size:13.5px; line-height:1.3}
  .cat-body span{display:block; font-size:12px; color:var(--ink-faint); margin-top:4px; line-height:1.4; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical}
  .cat-body em{font-style:normal; font-size:10.5px; font-weight:700; color:var(--free); background:var(--free-soft); border-radius:8px; padding:1px 7px; margin-right:4px}
  .cat-body em.off{color:var(--ink-faint); background:var(--surface-2)}
  .cat-tags{margin-top:6px}
  .cat-modal{max-width:560px!important; width:94%!important; text-align:left!important; max-height:calc(100dvh - 40px); overflow:auto}
  .cat-mh{display:flex; justify-content:space-between; align-items:center; margin-bottom:10px}
  .cat-mh b{font-size:16px} .cat-mh button{border:0; background:none; font-size:18px; cursor:pointer; color:var(--ink-faint)}
  .cat-photos{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:10px}
  .cat-pt{position:relative; width:86px; height:86px; border-radius:8px; overflow:hidden; background:var(--surface-2)}
  .cat-pt img{width:100%; height:100%; object-fit:cover}
  .cat-pt button{position:absolute; top:3px; right:3px; width:22px; height:22px; border-radius:50%; border:0; background:rgba(0,0,0,.6); color:#fff; cursor:pointer; font-size:11px}
  .cat-pt button.mv{right:auto; left:3px}
  .cat-pt .main{position:absolute; left:0; right:0; bottom:0; background:rgba(0,0,0,.55); color:#fff; font-size:10px; text-align:center; padding:2px}
  .cat-add{width:86px; height:86px; border:1.5px dashed var(--line-strong); border-radius:8px; display:grid; place-items:center; font-size:12px; color:var(--ink-soft); cursor:pointer}
  .cat-f{display:flex; flex-direction:column; gap:4px; font-size:12px; font-weight:600; color:var(--ink-faint); margin-bottom:10px}
  .cat-f input, .cat-f select, .cat-f textarea{border:1px solid var(--line); border-radius:9px; padding:8px 10px; background:var(--surface); color:var(--ink); font:400 13.5px/1.45 var(--font-body)}
  .cat-f textarea{resize:vertical}
  .cat-chk{display:flex; gap:8px; align-items:center; font-size:13px; color:var(--ink-soft); margin-bottom:12px}
  .cat-foot{display:flex; gap:8px; align-items:center}
  .cat-del{color:var(--bad)}
  .cat-row{display:flex; gap:10px; padding:10px 0; border-top:1px solid var(--line); align-items:flex-start}
  .cat-row .cat-body{padding:0; flex:1}
  .cat-acts{display:flex; gap:6px; flex-wrap:wrap; margin-top:6px}
  .chat-quick button.cat-q{background:var(--accent); color:#fff; border-color:var(--accent); font-weight:600}
  @media (max-width:880px){ .cat-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:10px} }

  /* ===== 3.2 ссылки каталога ===== */
  .cat-body em.wa{color:#128C7E; background:#DCF8C6}
  .cat-all{display:flex; gap:10px; align-items:center; justify-content:space-between; flex-wrap:wrap; background:var(--surface-2); border:1px solid var(--line); border-radius:10px; padding:8px 10px; margin-bottom:8px; font-size:12px; color:var(--ink-soft)}

  /* ===== 3.4 переписки ===== */
  .chat-msg-acts{position:absolute; top:-11px; right:6px; display:none; gap:4px; z-index:2}
  .chat-msg:hover .chat-msg-acts{display:flex}
  .chat-msg-acts button{border:1px solid var(--line); background:var(--surface); border-radius:999px; padding:2px 9px; font:600 11px var(--font-body); color:var(--ink-soft); cursor:pointer; box-shadow:0 2px 6px rgba(0,0,0,.08)}
  .chat-msg-acts button:hover{color:var(--accent-dark); border-color:var(--accent)}
  @media (hover:none){ .chat-msg-acts{display:flex; position:static; justify-content:flex-end; margin:-2px 0 4px} .chat-msg-acts button{padding:1px 8px; font-size:10.5px; box-shadow:none} }
  .chat-tr{margin-top:5px; padding:5px 8px; border-left:3px solid var(--occupied); background:var(--occupied-soft); border-radius:6px; font-size:12.5px; line-height:1.45}
  .chat-tr small{display:block; font:700 10px var(--font-body); color:var(--occupied); text-transform:uppercase; letter-spacing:.4px}
  .chat-tr .b2{white-space:pre-wrap}
  .chat-mini{margin-top:5px; border:1px solid var(--line-strong); background:var(--surface); color:var(--ink-soft); border-radius:12px; padding:2px 9px; font:600 11px var(--font-body); cursor:pointer}
  .chat-mini:hover{border-color:var(--accent); color:var(--accent-dark)}
  .chat-srch-btn{margin-left:auto} .chat-srch-btn + .chat-ct-btn{margin-left:6px}
  .chat-conv .chat-head > div:has(#chatName){flex:1 1 110px; min-width:100px!important}
  @media (max-width:1500px){ .chat-conv .chat-head .chat-ct-btn:not(.chat-srch-btn) span{display:none} .chat-conv .chat-head .chat-ai span{font-size:11px} } #chatPhone{white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
  .chat-srch-btn.on{border-color:var(--accent); color:var(--accent-dark); background:var(--accent-soft)}
  .chat-search-bar{display:flex; gap:6px; align-items:center; padding:7px 10px; border-bottom:1px solid var(--line); background:var(--surface-2)}
  .chat-search-bar[hidden]{display:none}
  .chat-search-bar input{flex:1; min-width:0; border:1px solid var(--line); border-radius:8px; padding:6px 10px; background:var(--surface); color:var(--ink); font:13.5px var(--font-body)}
  .chat-search-bar span{font:11.5px var(--font-mono); color:var(--ink-faint); min-width:62px; text-align:center}
  .chat-search-bar button{border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); border-radius:7px; width:30px; height:30px; cursor:pointer}
  mark.chat-hit{background:#FFE27A; color:inherit; border-radius:3px; padding:0 1px}
  mark.chat-hit.cur{outline:2px solid var(--accent); background:#FFC94A}
  body[data-theme="dark"] mark.chat-hit{background:#6B5A12}
  .chat-quick button.route-q{border-color:var(--accent); color:var(--accent-dark); background:var(--accent-soft); font-weight:600}
  .chat-quick button.ai-q{border-color:var(--occupied); color:var(--occupied); background:var(--occupied-soft); font-weight:600}
  #chatInput.ai-draft{border-color:var(--occupied); box-shadow:0 0 0 3px var(--occupied-soft)}
  .chat-kz{font:700 11px var(--font-body)!important; width:auto!important; padding:0 8px!important}
  .fwd-modal{max-width:480px!important; width:94%!important; text-align:left!important; max-height:calc(100dvh - 40px); overflow:auto}
  .fwd-what{font-size:12.5px; color:var(--ink-soft); background:var(--surface-2); border-radius:8px; padding:7px 10px; margin-bottom:8px; overflow-wrap:anywhere}
  .fwd-q{width:100%; border:1px solid var(--line); border-radius:9px; padding:8px 10px; background:var(--surface); color:var(--ink); font:13.5px var(--font-body); margin-bottom:6px}
  .fwd-list{max-height:260px; overflow:auto; border:1px solid var(--line); border-radius:9px; margin-bottom:10px}
  .fwd-it{padding:8px 10px; cursor:pointer; border-bottom:1px solid var(--line)} .fwd-it:last-child{border-bottom:0}
  .fwd-it:hover{background:var(--surface-2)} .fwd-it.sel{background:var(--accent-soft)}
  .fwd-it b{display:block; font-size:13px} .fwd-it span{font-size:11.5px; color:var(--ink-faint)}
  .route-row{display:flex; gap:10px; align-items:center; flex-wrap:wrap; padding:8px 0; border-top:1px solid var(--line)}
  .route-row img, .route-row video{width:84px; height:84px; object-fit:cover; border-radius:8px; background:#000}
  .route-cb{flex:1 1 180px; display:flex; gap:8px; align-items:center; font-size:13px}
  .route-up{font-size:12px; font-weight:600; color:var(--accent-dark); cursor:pointer}
  .route-save{display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin:-4px 0 12px}
  .ai-page{max-width:900px}
  .ai-row{display:flex; gap:10px; align-items:center; flex-wrap:wrap; padding:6px 0}
  .ai-keys, .ai-staff{padding:14px 20px}
  .ai-srow{display:grid; grid-template-columns:1.3fr 1fr auto; gap:8px; margin-bottom:8px}
  .ai-srow input{border:1px solid var(--line); border-radius:8px; padding:7px 10px; background:var(--surface); color:var(--ink); font:13.5px var(--font-body); min-width:0}
  @media (max-width:700px){ .ai-srow{grid-template-columns:1fr 1fr auto} }

  /* ===== 3.5 ИИ читает удостоверение ===== */
  .ct-shots{display:flex; gap:8px; flex-wrap:wrap; align-items:center}
  .ct-shot{position:relative}
  .ct-photo .ct-shot img{width:132px; height:88px; object-fit:cover; margin:0; display:block}
  .ct-photo .ct-shot button{position:absolute; top:4px; right:4px; width:22px; height:22px; padding:0; border-radius:50%; background:rgba(0,0,0,.55); color:#fff; border:0; font-size:11px; line-height:22px}
  .ct-up.off{opacity:.5; pointer-events:none}
  .ct-pdf{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:100%;height:100%;font-size:22px;background:#FEF2F2;color:#B91C1C}.ct-pdf small{font-size:9px;line-height:1.1;color:#7F1D1D;word-break:break-all;padding:0 2px}
  .ct-chatph{margin-top:8px}
  .ct-chatph small{display:block; font-size:11.5px; color:var(--ink-faint); margin-bottom:4px}
  .ct-chatph>div{display:flex; gap:6px; overflow-x:auto; padding-bottom:2px}
  .ct-photo .ct-chatph button{padding:0; border:1px solid var(--line); border-radius:8px; overflow:hidden; flex:0 0 auto; background:var(--surface-2)}
  .ct-photo .ct-chatph img{width:64px; height:64px; object-fit:cover; margin:0; border:0; border-radius:0; display:block}
  .ct-chatph button:hover{border-color:var(--accent)}
  .ct-scan{margin-top:8px; font-size:12.5px; border-radius:8px; padding:8px 10px; line-height:1.45}
  .ct-scan.busy{background:var(--accent-soft); color:var(--accent-dark); display:flex; align-items:center; gap:8px}
  .ct-scan.ok{background:#E9F7EF; color:#1E6B41}
  .ct-scan.ok .warn{color:#8A5A00}
  .ct-scan.err{background:#FDECEA; color:#9B2C22}
  .ct-photo .ct-scan.err button{margin-left:6px}
  .ct-spin{width:14px; height:14px; border:2px solid currentColor; border-right-color:transparent; border-radius:50%; animation:ctspin .8s linear infinite; flex:0 0 auto}
  @keyframes ctspin{to{transform:rotate(360deg)}}
  .ct-f.ai input{background:#EAF8EE; border-color:#7CC99A}
  .ct-f.ai>span::after{content:' · ИИ'; color:#2E8B57; font-size:11px; font-weight:600}
  body[data-theme="dark"] .ct-scan.ok{background:#16301f; color:#9fdcb4}
  body[data-theme="dark"] .ct-scan.ok .warn{color:#e8c070}
  body[data-theme="dark"] .ct-scan.err{background:#3a1c19; color:#f0a79e}
  body[data-theme="dark"] .ct-f.ai input{background:#16301f; border-color:#3f8a5c}

  /* ===== 3.6 каталог ===== */
  .catx-sum{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:12px; overflow:hidden; margin-bottom:16px}
  .catx-sum>div{background:var(--surface); padding:12px 16px}
  .catx-sum b{display:block; font-family:var(--font-display); font-size:22px; line-height:1.1; letter-spacing:-.3px; color:var(--ink); font-variant-numeric:tabular-nums}
  .catx-sum span{font-size:12px; color:var(--ink-faint)}
  .catx-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(290px,1fr)); gap:16px}
  .catx-card{background:var(--surface); border:1px solid var(--line); border-radius:14px; overflow:hidden; cursor:pointer; display:flex; flex-direction:column; transition:box-shadow .18s, transform .18s, border-color .18s}
  .catx-card:hover{box-shadow:0 12px 28px rgba(20,23,26,.10); transform:translateY(-2px); border-color:var(--line-strong)}
  .catx-card.off{opacity:.55}
  .catx-ph{position:relative; aspect-ratio:16/10; background:var(--surface-2); overflow:hidden}
  .catx-ph img{width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s}
  .catx-card:hover .catx-ph img{transform:scale(1.04)}
  .catx-ph::after{content:''; position:absolute; inset:0; background:linear-gradient(180deg,rgba(0,0,0,.35) 0%,rgba(0,0,0,0) 30%,rgba(0,0,0,0) 62%,rgba(0,0,0,.55) 100%); pointer-events:none}
  .catx-noph{position:absolute; inset:0; display:grid; place-items:center; font-size:38px}
  .catx-ov{position:absolute; left:10px; right:10px; top:10px; display:flex; gap:6px; align-items:center; z-index:1}
  .catx-br{background:rgba(255,255,255,.94); color:#14171A; font-size:11.5px; font-weight:700; padding:3px 9px; border-radius:999px; letter-spacing:.1px}
  .catx-br.off{background:rgba(20,23,26,.75); color:#fff}
  .catx-br.mine{background:var(--accent); color:#fff}
  .catx-n{background:rgba(20,23,26,.6); color:#fff; font-size:11px; padding:2px 8px; border-radius:999px}
  .catx-free{position:absolute; left:10px; bottom:10px; z-index:1; background:#2E8C5A; color:#fff; font-size:11.5px; font-weight:700; padding:3px 9px; border-radius:999px; font-variant-numeric:tabular-nums}
  .catx-free.none{background:rgba(20,23,26,.75)}
  .catx-b{padding:12px 14px 12px; display:flex; flex-direction:column; gap:7px; flex:1}
  .catx-b h3{margin:0; font-family:var(--font-display); font-size:16.5px; line-height:1.25; letter-spacing:-.2px; color:var(--ink); text-wrap:balance}
  .catx-addr{font-size:12.5px; color:var(--ink-soft); line-height:1.4}
  .catx-price{display:flex; align-items:baseline; gap:6px; flex-wrap:wrap; font-variant-numeric:tabular-nums}
  .catx-price strong{font-family:var(--font-display); font-size:19px; color:var(--accent-dark); letter-spacing:-.3px}
  .catx-price small{font-size:12px; color:var(--ink-faint); margin-left:-4px}
  .catx-price span{font-size:12.5px; color:var(--ink-soft)}
  .catx-price em{font-style:normal; font-size:11px; font-weight:700; color:var(--accent-dark); background:var(--accent-soft); padding:2px 7px; border-radius:999px}
  .catx-feat{display:flex; flex-wrap:wrap; gap:5px}
  .catx-feat span{font-size:11px; color:var(--ink-soft); background:var(--surface-2); border:1px solid var(--line); padding:2px 7px; border-radius:6px; white-space:nowrap}
  .catx-foot{display:flex; gap:6px; align-items:center; margin-top:auto; padding-top:8px; border-top:1px solid var(--line)}
  .catx-foot a, .catx-foot button{font:600 12px var(--font-body); color:var(--ink-soft); text-decoration:none; background:none; border:1px solid var(--line); border-radius:8px; padding:5px 10px; cursor:pointer}
  .catx-foot a:hover, .catx-foot button:hover{color:var(--accent-dark); border-color:var(--accent)}
  .catx-foot a.wa{color:#128C7E}
  .catx-modal{max-width:760px!important}
  .catx-mgrid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px}
  .catx-mc{border:1px solid var(--line); border-radius:12px; overflow:hidden; background:var(--surface); display:flex; flex-direction:column}
  .catx-mc.mine{border-color:var(--accent); box-shadow:0 0 0 1px var(--accent)}
  .catx-ph.sm{aspect-ratio:16/8}
  .catx-mc .catx-b{padding:9px 11px 11px; gap:5px}
  .catx-mc h3{font-size:14.5px}
  .catx-mc .catx-price strong{font-size:16px}
  .catx-macts{display:flex; gap:5px; margin-top:auto; padding-top:4px}
  .catx-macts .btn{flex:1; justify-content:center; white-space:nowrap; padding-left:6px; padding-right:6px}
  .catx-macts .btn:last-child{flex:0 0 auto}
  @media (max-width:640px){ .catx-mgrid{grid-template-columns:minmax(0,1fr)} .catx-grid{grid-template-columns:minmax(0,1fr)} .catx-sum b{font-size:18px} }
  body[data-theme="dark"] .catx-card:hover{box-shadow:0 12px 28px rgba(0,0,0,.4)}
  body[data-theme="dark"] .catx-foot a.wa{color:#4FC4A8}

  /* ===== 3.7 листалка фото ===== */
  .catx-sl{display:flex; width:100%; height:100%; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; overscroll-behavior-x:contain}
  .catx-sl::-webkit-scrollbar{display:none}
  .catx-sl img{flex:0 0 100%; width:100%; height:100%; object-fit:cover; scroll-snap-align:start}
  .catx-card:hover .catx-sl img{transform:none}
  .catx-arr{position:absolute; top:50%; transform:translateY(-50%); z-index:2; width:30px; height:30px; border-radius:50%; border:0; background:rgba(255,255,255,.9); color:#14171A; font-size:20px; line-height:28px; cursor:pointer; opacity:0; transition:opacity .15s; box-shadow:0 2px 8px rgba(0,0,0,.2)}
  .catx-arr.l{left:8px} .catx-arr.r{right:8px}
  .catx-ph:hover .catx-arr{opacity:1}
  @media (hover:none){ .catx-arr{display:none} }
  .catx-cnt{position:absolute; right:10px; bottom:10px; z-index:1; background:rgba(20,23,26,.65); color:#fff; font-size:11px; font-weight:600; padding:2px 8px; border-radius:999px; font-variant-numeric:tabular-nums}
  .catx-ph::after{z-index:1}

  /* ===== 3.8 статусы ячеек ===== */
  .us-card{max-width:560px!important; width:94%!important; text-align:left!important; max-height:calc(100dvh - 40px); overflow:auto}
  .us-head{display:flex; justify-content:space-between; align-items:flex-start; gap:10px; margin-bottom:6px}
  .us-head small{display:block; font-size:11.5px; color:var(--ink-faint)} .us-head b{font-size:17px}
  .us-head button{border:0; background:none; font-size:18px; cursor:pointer; color:var(--ink-faint)}
  .us-now{font-size:12.5px; color:var(--ink-soft); margin-bottom:10px}
  .us-grid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; margin-bottom:12px}
  .us-opt{display:grid; grid-template-columns:12px 1fr; column-gap:8px; row-gap:1px; align-items:center; text-align:left; border:1px solid var(--line); background:var(--surface); border-radius:10px; padding:8px 10px; cursor:pointer; font-family:var(--font-body)}
  .us-opt i{width:10px; height:10px; border-radius:50%; background:var(--c); grid-row:1/3}
  .us-opt b{font-size:13px; color:var(--ink)} .us-opt span{font-size:11px; color:var(--ink-faint); line-height:1.3}
  .us-opt:hover{border-color:var(--c)}
  .us-opt.on{border-color:var(--c); box-shadow:0 0 0 2px var(--c) inset; background:var(--surface-2)}
  .us-fields{display:flex; flex-direction:column; gap:8px}
  .us-row{display:flex; gap:8px} .us-row .us-f{flex:1; min-width:0}
  .us-f span{display:block; font-size:12px; color:var(--ink-soft); margin-bottom:3px}
  .us-f input, .us-f select{width:100%; padding:8px 10px; border:1px solid var(--line); border-radius:8px; background:var(--surface-2); font:13.5px var(--font-body); color:var(--ink)}
  .us-hint{font-size:12px; line-height:1.45; background:var(--blocked-soft); color:var(--blocked); border-radius:8px; padding:8px 10px}
  .us-hint.ok{background:var(--free-soft); color:var(--free)} .us-hint.warn{background:var(--warn-soft, #FFF4DC); color:#8A5A00; margin-top:8px}
  .us-foot{display:flex; justify-content:flex-end; gap:8px; margin-top:14px}
  .us-btn{display:flex; align-items:center; gap:8px; width:100%; border:1px solid var(--line); border-left:4px solid var(--c); background:var(--surface); border-radius:9px; padding:8px 10px; cursor:pointer; font:13px var(--font-body); color:var(--ink); margin-bottom:10px; text-align:left}
  .us-btn i{width:9px; height:9px; border-radius:50%; background:var(--c); flex:0 0 auto}
  .us-btn span{flex:1} .us-btn em{font-style:normal; font-size:12px; font-weight:600; color:var(--accent-dark)}
  .us-btn:hover{border-color:var(--c)}
  .us-svc{font-size:12px; color:var(--ink-soft); background:var(--maint-soft); border-radius:8px; padding:8px 10px; margin-bottom:10px; line-height:1.45}
  .us-log{margin-top:12px} .us-log-h{font-family:var(--font-mono); font-size:10.5px; letter-spacing:.6px; text-transform:uppercase; color:var(--ink-faint); margin-bottom:6px}
  .us-log-r{display:grid; grid-template-columns:74px 1fr auto; gap:6px; font-size:12px; padding:4px 0; border-top:1px solid var(--line); color:var(--ink-soft)}
  .us-log-r b{font-weight:600; color:var(--ink)} .us-log-r span:last-child{color:var(--ink-faint)}
  .us-lost{border:1px solid var(--blocked); background:var(--blocked-soft); border-radius:12px; padding:12px 14px; margin:0 0 16px; display:flex; flex-direction:column; gap:8px}
  .us-lost>div:first-child{display:flex; flex-direction:column; gap:2px} .us-lost b{color:var(--blocked); font-size:14px} .us-lost>div:first-child span{font-size:12.5px; color:var(--ink-soft)}
  .us-lost-list{display:flex; flex-direction:column; gap:4px}
  .us-lost-it{display:flex; align-items:center; gap:10px; flex-wrap:wrap; background:var(--surface); border-radius:8px; padding:6px 8px; font-size:12.5px}
  .us-lost-it button{border:1px solid var(--line); background:var(--surface-2); border-radius:7px; padding:3px 9px; font:600 12px var(--font-body); cursor:pointer; color:var(--ink)}
  .us-lost-it button.go{margin-left:auto; background:var(--free-soft); color:var(--free); border-color:var(--free)}
  .us-lost-it .d{color:var(--ink-faint)}
  @media (max-width:520px){ .us-grid{grid-template-columns:minmax(0,1fr)} .us-row{flex-direction:column} }

  /* ===== 3.9 раздел «Склады» ===== */
  .sk{min-width:0; max-width:100%}
  .sk-lostbtn{border:1px solid var(--blocked); background:var(--blocked-soft); color:var(--blocked); border-radius:10px; padding:8px 14px; cursor:pointer; font:600 13px var(--font-body)}
  .sk-lostbtn b{font:700 16px var(--font-display); margin-right:3px}
  .sk-fbar{display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:10px}
  .sk-ftog{display:flex; align-items:center; gap:7px; border:1px solid var(--line-strong); background:var(--surface); border-radius:10px; padding:7px 12px; font:700 13.5px var(--font-body); cursor:pointer; color:var(--ink)}
  .sk-ftog i{width:11px; height:11px; border-radius:50%; background:var(--c, var(--ink-faint))}
  .sk-ftog em{font-style:normal; font-size:10px; color:var(--ink-faint)}
  .sk-tabs{display:flex; gap:4px; background:var(--surface); border:1px solid var(--line); border-radius:11px; padding:4px}
  .sk-tabs button{border:0; background:none; padding:7px 12px; border-radius:8px; cursor:pointer; font:600 13px var(--font-body); color:var(--ink-soft)}
  .sk-tabs button.on{background:var(--ink); color:var(--surface)}
  .sk-crow{display:flex; align-items:center; gap:8px; margin-bottom:10px; min-width:0; max-width:100%}
  .sk-carr{flex:0 0 32px; height:32px; border-radius:50%; border:1px solid var(--line-strong); background:var(--surface); cursor:pointer; font-size:16px; color:var(--ink-soft)}
  .sk-car{display:flex; gap:10px; overflow-x:auto; scrollbar-width:none; padding:2px; flex:1 1 0; width:0; min-width:0; contain:inline-size}
  .sk-car::-webkit-scrollbar{display:none}
  .sk-csep{flex:0 0 1px; background:var(--line-strong); margin:4px}
  .sk-fch{flex:0 0 auto; text-align:left; border:1px solid var(--line-strong); background:var(--surface); border-radius:12px; padding:9px 16px 8px; cursor:pointer; min-width:130px; color:var(--ink)}
  .sk-fch b{display:flex; align-items:center; gap:7px; font:700 15px var(--font-body); white-space:nowrap}
  .sk-fch b i{width:11px; height:11px; border-radius:3px; background:var(--c)}
  .sk-fch span{display:block; font:500 11.5px var(--font-mono); color:var(--ink-faint); margin-top:3px; white-space:nowrap}
  .sk-fch:hover{border-color:var(--accent)}
  .sk-fch.on{background:var(--accent); border-color:var(--accent); color:#fff} .sk-fch.on span{color:rgba(255,255,255,.82)} .sk-fch.on b i{background:#fff}
  .sk-stbar{display:grid; grid-template-columns:repeat(auto-fit,minmax(118px,1fr)); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:12px; overflow:hidden; margin-bottom:16px}
  .sk-stc{background:var(--surface); padding:10px 12px; border:0; text-align:left; cursor:pointer; position:relative; color:var(--ink)}
  .sk-stc::before{content:''; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--c)}
  .sk-stc span{display:block; font-size:12px; font-weight:600; color:var(--ink-soft)}
  .sk-stc b{display:block; font:700 22px/1.15 var(--font-display); font-variant-numeric:tabular-nums}
  .sk-stc small{display:block; font:500 11.5px var(--font-mono); color:var(--ink-faint); margin-top:2px}
  .sk-stc.on{background:var(--surface-2); box-shadow:inset 0 0 0 2px var(--c)}
  .sk-brgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:12px}
  .sk-br{background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:14px 16px; cursor:pointer; text-align:left; display:flex; flex-direction:column; gap:10px; color:var(--ink)}
  .sk-br:hover{border-color:var(--line-strong); box-shadow:0 8px 22px rgba(20,23,26,.07)}
  .sk-br-top{display:flex; justify-content:space-between; gap:8px; align-items:baseline}
  .sk-br h3{margin:0; font:700 17px var(--font-display)} .sk-br small{color:var(--ink-faint); font-size:12px}
  .sk-pct{font:700 26px/1 var(--font-display)}
  .sk-mix{display:flex; height:8px; border-radius:99px; overflow:hidden; background:var(--surface-2)} .sk-mix i{display:block; height:100%}
  .sk-br-row{display:flex; gap:6px; flex-wrap:wrap}
  .sk-chip{font-size:11px; font-weight:600; padding:2px 8px; border-radius:99px; background:var(--s); color:var(--c); white-space:nowrap}
  .sk-verif{font-size:11.5px; color:var(--ink-soft); display:flex; align-items:center; gap:8px}
  .sk-bar{flex:1; height:4px; border-radius:99px; background:var(--surface-2); overflow:hidden} .sk-bar i{display:block; height:100%; background:var(--free)}
  .sk-layout{display:grid; grid-template-columns:minmax(0,1fr) 380px; gap:16px; align-items:start}
  .sk-panel{background:var(--surface); border:1px solid var(--line); border-radius:14px}
  .sk-gridwrap{padding:14px; min-width:0}
  .sk-tools{display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:10px}
  .sk-tools input{flex:1 1 100%; min-width:0; border:1px solid var(--line); background:var(--surface-2); border-radius:8px; padding:8px 10px; font:13px var(--font-body); color:var(--ink)}
  .sk-seg{display:flex; border:1px solid var(--line-strong); border-radius:9px; overflow:hidden}
  .sk-seg button{border:0; background:var(--surface); padding:5px 10px; font:600 12px var(--font-body); cursor:pointer; color:var(--ink-soft)}
  .sk-seg button.on{background:var(--ink); color:var(--surface)}
  .sk-tsel{border:1px solid var(--line-strong); background:var(--surface); border-radius:9px; padding:5px 8px; font:600 12px var(--font-body); color:var(--ink)}
  .sk-found{font-size:12.5px; color:var(--ink-soft); margin:0 0 8px}
  .sk-floor{font:600 11px var(--font-mono); letter-spacing:.6px; text-transform:uppercase; color:var(--ink-faint); margin:12px 0 6px}
  .sk-cells{display:grid; grid-template-columns:repeat(auto-fill,minmax(58px,1fr)); gap:6px}
  .sk-cell{aspect-ratio:1/1; border-radius:9px; border:1px solid transparent; background:var(--s); color:var(--c); cursor:pointer; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px; position:relative; padding:0; font-family:var(--font-body)}
  .sk-cell b{font:700 14px var(--font-display); max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding:0 2px}
  .sk-cell small{font-size:9.5px; opacity:.85; white-space:nowrap}
  .sk-cell.sel{box-shadow:0 0 0 2px var(--ink)} .sk-cell.dim{opacity:.22}
  .sk-cell .dot{position:absolute; top:4px; right:4px; width:7px; height:7px; border-radius:50%; background:var(--bad)}
  .sk-cell.unv{border:1.5px dashed var(--line-strong)} .sk-cell.ok::after{content:'✓'; position:absolute; bottom:2px; right:4px; font-size:9px; color:var(--free)}
  .sk-cell.pk{box-shadow:0 0 0 2px var(--accent)}
  .sk-bgroup{margin-bottom:14px} .sk-bgroup h3{font:700 15px var(--font-display); margin:6px 0; display:flex; gap:8px; align-items:baseline} .sk-bgroup h3 small{font:500 11.5px var(--font-mono); color:var(--ink-faint)} .sk-bgroup h3 button{margin-left:auto}
  .sk-card{position:sticky; top:12px; overflow:hidden}
  .sk-chead{padding:14px 16px 12px; border-bottom:1px solid var(--line)} .sk-chead small{font-size:12px; color:var(--ink-faint)}
  .sk-chead h2{font:700 20px var(--font-display); margin:2px 0 0}
  .sk-flr{font:600 12px var(--font-body); background:var(--surface-2); border:1px solid var(--line); border-radius:99px; padding:2px 9px; vertical-align:middle; margin-left:6px}
  .sk-meta{font-size:12.5px; color:var(--ink-soft); margin-top:4px}
  .sk-ctabs{display:flex; border-bottom:1px solid var(--line); padding:0 8px; overflow-x:auto}
  .sk-ctabs button{border:0; background:none; padding:10px; font:600 13px var(--font-body); color:var(--ink-faint); cursor:pointer; border-bottom:2px solid transparent; white-space:nowrap}
  .sk-ctabs button.on{color:var(--ink); border-color:var(--accent)}
  .sk-cbody{padding:14px 16px 18px; display:flex; flex-direction:column; gap:10px; max-height:calc(100vh - 260px); overflow:auto}
  .sk-kv{display:flex; justify-content:space-between; gap:10px; font-size:13px; padding:6px 0; border-bottom:1px solid var(--line)} .sk-kv span:first-child{color:var(--ink-soft)} .sk-kv span:last-child{font-weight:600; text-align:right}
  .sk-who{display:flex; gap:10px; align-items:center; background:var(--surface-2); border-radius:10px; padding:10px 12px} .sk-who b{display:block} .sk-who span{font-size:12px; color:var(--ink-faint)}
  .sk-av{width:36px; height:36px; border-radius:50%; background:var(--occupied-soft); color:var(--occupied); display:grid; place-items:center; font:700 13px var(--font-display); flex:0 0 auto}
  .sk-acts{display:flex; gap:6px; flex-wrap:wrap}
  .sk-note{font-size:12.5px; line-height:1.45; border-radius:9px; padding:9px 11px; background:var(--s); color:var(--c)}
  .sk-sum{display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line); border:1px solid var(--line); border-radius:10px; overflow:hidden}
  .sk-sum div{background:var(--surface); padding:9px 11px} .sk-sum b{display:block; font:700 17px var(--font-display)} .sk-sum span{font-size:11px; color:var(--ink-faint)}
  .sk-tlh{font:600 10.5px var(--font-mono); letter-spacing:.5px; text-transform:uppercase; color:var(--ink-faint)}
  .sk-tl{display:grid; grid-template-columns:repeat(12,1fr); gap:3px; margin-top:6px} .sk-tl i{height:20px; border-radius:4px; background:var(--surface-2)} .sk-tl i.o{background:var(--occupied)}
  .sk-hist{border:1px solid var(--line); border-radius:10px; padding:9px 11px; display:flex; flex-direction:column; gap:3px; cursor:pointer} .sk-hist.now{border-color:var(--occupied)}
  .sk-hist-top{display:flex; justify-content:space-between; gap:8px} .sk-hist-top b{font-size:13.5px} .sk-hist-top span{font-size:12px; color:var(--ink-faint); white-space:nowrap}
  .sk-hist-m{display:flex; gap:10px; flex-wrap:wrap; font-size:12px; color:var(--ink-soft)} .sk-hist-m b{color:var(--ink)}
  .sk-log{display:grid; grid-template-columns:74px 1fr; gap:2px 8px; font-size:12.5px; padding:6px 0; border-bottom:1px solid var(--line)} .sk-log span:first-child{color:var(--ink-faint); font:500 11px var(--font-mono); padding-top:2px} .sk-log small{grid-column:2; color:var(--ink-faint)}
  .sk-f{display:flex; flex-direction:column; gap:3px; font-size:12px; color:var(--ink-soft)}
  .sk-f input{border:1px solid var(--line); background:var(--surface-2); border-radius:8px; padding:7px 9px; font:13.5px var(--font-body); color:var(--ink); min-width:0}
  .sk-frow{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px}
  .sk-tags{display:flex; gap:6px; flex-wrap:wrap} .sk-tags button{border:1px solid var(--line); background:var(--surface); border-radius:99px; padding:4px 10px; font:12px var(--font-body); cursor:pointer; color:var(--ink)} .sk-tags button.on{background:var(--ink); color:var(--surface); border-color:var(--ink)}
  .sk-empty{padding:40px 20px; text-align:center; color:var(--ink-faint)}
  .sk-hint{background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:11px 14px; font-size:13px; color:var(--ink-soft); line-height:1.5; margin-bottom:12px} .sk-hint b{color:var(--ink)}
  .sk-bulk{display:flex; align-items:center; gap:8px; flex-wrap:wrap; background:var(--ink); color:var(--surface); border-radius:12px; padding:9px 14px; margin-bottom:12px; position:sticky; top:8px; z-index:5}
  .sk-bulk .btn{background:transparent; color:var(--surface); border-color:rgba(255,255,255,.35)}
  .sk-twrap{overflow-x:auto}
  .sk-table{width:100%; border-collapse:collapse; font-size:12.5px; font-variant-numeric:tabular-nums}
  .sk-table th{text-align:left; font:600 11px var(--font-mono); color:var(--ink-faint); padding:7px 8px; border-bottom:1px solid var(--line-strong); cursor:pointer; white-space:nowrap; user-select:none}
  .sk-table td{padding:7px 8px; border-bottom:1px solid var(--line); white-space:nowrap} .sk-table td.num{text-align:right}
  .sk-table tr{cursor:pointer} .sk-table tbody tr:hover{background:var(--surface-2)} .sk-table tr.on{background:var(--accent-soft)}
  .sk-old{margin-top:18px; font-size:12px; text-align:center} .sk-old a{color:var(--ink-faint)}
  @media (max-width:1100px){ .sk-layout{grid-template-columns:minmax(0,1fr)} .sk-card{position:static} .sk-cbody{max-height:none} }
  @media (max-width:600px){ .sk-frow{grid-template-columns:1fr 1fr} .sk-fch{min-width:110px; padding:8px 12px} }

  /* ===== 3.10 выселение ===== */
  .sk-evbtn{border-color:var(--bad); background:var(--bad-soft); color:var(--bad)}
  .sk-cell.ev{box-shadow:inset 0 0 0 2px var(--bad)}
  .sk-cell.ev.sel{box-shadow:inset 0 0 0 2px var(--bad), 0 0 0 2px var(--ink)}

  /* ===== 3.11 Instagram ===== */
  .ig-badge{display:inline-block; font-size:10.5px; padding:1px 7px; border-radius:10px; margin:5px 5px 0 0; font-weight:600; color:#fff; background:linear-gradient(90deg,#f58529,#dd2a7b 55%,#8134af); vertical-align:1px}
  #chatPhone .ig-badge{margin:0 4px 0 0; font-family:var(--font-sans, system-ui)}
  .ig-grid{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:20px; margin-top:12px}
  @media (max-width:900px){ .ig-grid{grid-template-columns:minmax(0,1fr)} }
  #igBox .cat-foot{flex-wrap:wrap; gap:8px}
  .ig-copy{display:grid; grid-template-columns:1fr auto; gap:2px 8px; align-items:center; padding:7px 0; border-bottom:1px dashed var(--line)}
  .ig-copy .chat-hint{grid-column:1 / -1}
  .ig-copy code{font-family:var(--font-mono); font-size:12px; overflow-wrap:anywhere; user-select:all}

  /* ===== 3.12 привязка телефона к Instagram ===== */
  .ig-jump{cursor:pointer; margin-left:6px; color:var(--accent, #c2410c); text-decoration:none; font-family:var(--font-sans, system-ui); font-weight:600; white-space:nowrap}
  .ig-jump:hover{text-decoration:underline}
  .ig-badge{white-space:nowrap}
  #chatPhone{white-space:normal!important; overflow:visible!important; line-height:1.5}
  #chatPhone .ig-jump{margin-left:4px}
  .ig-link .ig-link-acts .ig-badge{margin:0 4px 0 0}
  .ig-jump.warn{color:var(--warn)}
  .ig-link{border:1px dashed var(--warn); background:var(--warn-soft)}
  .ig-link.ok{border:1px solid var(--line); background:var(--surface)}
  .ig-link .chat-hint{display:block; margin:4px 0 8px; line-height:1.4}
  .ig-link-row{display:flex; gap:8px; align-items:center; flex-wrap:wrap}
  .ig-link-row input{flex:1 1 140px; min-width:0; padding:7px 9px; border:1px solid var(--line); border-radius:8px; font:inherit; background:var(--surface); color:var(--ink)}
  .ig-link-row input.flash{outline:2px solid var(--warn)}
  .ig-link-acts, .ig-sug{display:flex; gap:6px; flex-wrap:wrap; margin-top:8px}
  .ig-sug{margin:0 0 8px}

  /* ===== 3.13 окно ответа Instagram ===== */
  .ig-win{display:inline-block; font-size:10.5px; padding:1px 7px; border-radius:10px; margin:5px 5px 0 0; font-weight:600; white-space:nowrap}
  .ig-win.warn{background:var(--warn-soft); color:var(--warn)}
  .ig-win.hot{background:var(--bad-soft); color:var(--bad)}
  .ig-win.off{background:var(--line); color:var(--ink-faint)}
  .ig-badge.hot{background:var(--bad)}
  .ig-badge.closed{background:var(--ink-faint)}

  /* ===== 3.14 OLX ===== */
  .olx-badge{display:inline-block; font-size:10.5px; padding:1px 7px; border-radius:10px; margin:5px 5px 0 0; font-weight:700; color:#fff; background:#002f34; white-space:nowrap; vertical-align:1px}
  #chatPhone .olx-badge{margin:0 4px 0 0}
  .ig-link .ig-link-acts .olx-badge{margin:0 4px 0 0}
  .krisha-badge{display:inline-block; font-size:10.5px; padding:1px 7px; border-radius:10px; margin:5px 5px 0 0; font-weight:700; color:#fff; background:#0a8d4e; white-space:nowrap; vertical-align:1px}
  #chatPhone .krisha-badge{margin:0 4px 0 0}

  /* ===== 3.16 нет WhatsApp ===== */
  .nowa-badge{display:inline-block; font-size:10.5px; padding:1px 7px; border-radius:10px; margin:5px 5px 0 0; font-weight:700; color:var(--bad); background:var(--bad-soft); border:1px solid color-mix(in srgb, var(--bad) 35%, transparent); white-space:nowrap; vertical-align:1px}
  #chatPhone .nowa-badge{margin:0 0 0 4px; vertical-align:middle}
  h1 .nowa-badge, td .nowa-badge{margin:0 4px 0 0; vertical-align:middle}
  .nowa-box{border:1px solid color-mix(in srgb, var(--bad) 35%, transparent); background:var(--bad-soft)}
  .nowa-box .h{font-weight:700; margin-bottom:2px}
  .nowa-box.ask{border:1px dashed var(--line); background:var(--surface)}
  .nowa-box .chat-hint{display:block; line-height:1.4}
  .chat-compose .chat-call{text-decoration:none; display:inline-flex; align-items:center; gap:4px}
  .chat-compose textarea:disabled{background:var(--surface-2); color:var(--ink-faint)}
  a.nowa-call{text-decoration:none}

  /* ===== 3.17 написать по номеру ===== */
  .chat-new-btn{flex:0 0 auto; border:0; background:transparent; color:var(--accent, #c8531f); font-size:16px; line-height:1; padding:4px 2px 4px 6px; cursor:pointer; border-left:1px solid var(--line); margin-left:2px}
  .chat-new-btn:hover{color:var(--ink)}

  /* ===== 3.19 Мои задачи ===== */
  .todo-add{display:flex; gap:8px; padding:14px 20px; flex-wrap:wrap}
  .todo-add input[type=text], .todo-add input:not([type]){flex:1 1 260px; min-width:0; padding:10px 12px; border:1px solid var(--line); border-radius:9px; font:inherit; font-size:14px; background:var(--surface); color:var(--ink)}
  .todo-add input[type=date], .todo-row.edit input[type=date]{padding:9px 10px; border:1px solid var(--line); border-radius:9px; font:inherit; font-size:13px; background:var(--surface); color:var(--ink)}
  .todo-list{display:flex; flex-direction:column}
  .todo-row{display:flex; align-items:flex-start; gap:12px; padding:11px 20px; border-bottom:1px solid var(--line)}
  .todo-row:last-child{border-bottom:0}
  .todo-row.pri{box-shadow:inset 3px 0 var(--accent)}
  .todo-row.done .todo-text{text-decoration:line-through; color:var(--ink-faint)}
  .todo-row.edit{gap:8px; align-items:center; flex-wrap:wrap}
  .todo-row.edit input:not([type=date]){flex:1 1 240px; min-width:0; padding:8px 10px; border:1px solid var(--accent); border-radius:8px; font:inherit; font-size:14px; background:var(--surface); color:var(--ink)}
  .todo-chk{position:relative; flex:0 0 auto; margin-top:2px; cursor:pointer}
  .todo-chk input{position:absolute; opacity:0; width:0; height:0}
  .todo-chk span{display:block; width:20px; height:20px; border:2px solid var(--line-strong, var(--line)); border-radius:6px; background:var(--surface); transition:.12s}
  .todo-chk input:checked + span{background:var(--free, #1f9d5a); border-color:var(--free, #1f9d5a)}
  .todo-chk input:checked + span::after{content:''; position:absolute; left:6px; top:2px; width:5px; height:10px; border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg)}
  .todo-body{flex:1; min-width:0; cursor:default}
  .todo-text{font-size:14.5px; line-height:1.4; white-space:pre-wrap; word-wrap:break-word}
  .todo-meta{display:flex; gap:10px; font-size:12px; color:var(--ink-faint); margin-top:2px}
  .todo-due.over{color:var(--bad); font-weight:600}
  .todo-due.today{color:var(--accent); font-weight:600}
  .todo-due.soon{color:var(--warn)}
  .todo-acts{display:flex; gap:2px; flex:0 0 auto; opacity:.45; transition:.12s}
  .todo-row:hover .todo-acts{opacity:1}
  .todo-ib{border:0; background:transparent; width:28px; height:28px; border-radius:7px; cursor:pointer; color:var(--ink-soft); font-size:14px; font-weight:700; line-height:1}
  .todo-ib:hover{background:var(--surface-2); color:var(--ink)}
  .todo-ib.on{color:var(--accent); background:var(--accent-soft)}
  .todo-ib.del:hover{color:var(--bad); background:var(--bad-soft)}
  .todo-ib[data-sure]{width:auto; padding:0 8px; color:#fff; background:var(--bad); font-size:12px}
  @media(max-width:700px){ .todo-acts{opacity:1} .todo-add{padding:12px} .todo-row{padding:10px 12px} }

  /* ===== 3.19b описание задачи ===== */
  .todo-add textarea, .todo-row.edit textarea{flex:1 1 100%; width:100%; box-sizing:border-box; padding:9px 12px; border:1px solid var(--line); border-radius:9px; font:inherit; font-size:13.5px; background:var(--surface); color:var(--ink); resize:vertical; min-height:44px}
  .todo-row.edit textarea{border-color:var(--accent)}
  .todo-edit-acts{display:flex; gap:6px; flex:1 1 100%}
  .todo-text{font-weight:600}
  .todo-more{border:0; background:transparent; color:var(--ink-faint); cursor:pointer; font-size:10px; padding:0 4px; vertical-align:middle}
  .todo-more:hover{color:var(--ink)}
  .todo-desc{display:none; font-size:13.5px; line-height:1.45; color:var(--ink-soft); white-space:pre-wrap; word-wrap:break-word; margin:3px 0 4px; padding:8px 10px; background:var(--surface-2); border-radius:8px}
  .todo-desc.open{display:block}
  .todo-row.done .todo-desc{color:var(--ink-faint)}

  /* ===== 3.20 фильтры над схемой ===== */
  .sk-fwrap{flex:1 1 100%; display:flex; gap:8px; flex-wrap:wrap; align-items:center}
  .sk-fsel{flex:1 1 180px; min-width:0; max-width:100%; text-overflow:ellipsis; cursor:pointer; padding:7px 8px}
  .sk-fsel.sk-fsel-b{flex:2 1 300px}
  .sk-fsel.on{border-color:var(--accent); color:var(--accent-dark, var(--accent)); background:var(--accent-soft)}

  /* ===== 3.20c пилюли фильтров ===== */
  .sk-fwrap{flex:1 1 100%; display:flex; gap:8px; flex-wrap:wrap; align-items:center}
  .sk-pick{display:inline-flex; align-items:center; gap:7px; height:38px; padding:0 8px 0 11px; border:1px solid var(--line-strong); border-radius:11px; background:var(--surface); box-shadow:0 1px 2px rgba(20,30,24,.04); cursor:pointer; max-width:100%; transition:border-color .12s, box-shadow .12s}
  .sk-pick:hover{border-color:var(--ink-faint)}
  .sk-pick:focus-within{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft)}
  .sk-pick.on{border-color:var(--accent); background:var(--accent-soft)}
  .sk-pick i{font-style:normal; font-size:15px; line-height:1; opacity:.9}
  .sk-pick select{appearance:none; -webkit-appearance:none; border:0; background:transparent; font:700 13.5px var(--font-body); color:var(--ink); padding:0 20px 0 0; margin:0; outline:0; cursor:pointer; max-width:100%; text-overflow:ellipsis;
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2.5 4.5 6 8l3.5-3.5' fill='none' stroke='%23667085' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>"); background-repeat:no-repeat; background-position:right 2px center}
  .sk-pick-b select{min-width:200px}
  .sk-pick.on select{color:var(--accent-dark, var(--accent))}
  @media (max-width:600px){ .sk-pick{height:36px} .sk-pick-b{flex:1 1 100%} .sk-pick-b select{width:100%} }
.chat-row-wa{color:var(--ink-faint);font-weight:500;font-size:.88em;margin-left:4px}
