/* ═══════════════════════════════════════════════════════════════
   Jylu — стили CRM, общие для обеих версий.
   Всё под .crm; цвета — из токенов приложения:
   --bg --card --ink --soft --line --acc --acc-d --acc-l --sand --ok --danger
   ═══════════════════════════════════════════════════════════════ */
.crm{color:var(--ink);font-size:16px;line-height:1.45}
.crm *,.crm *::before,.crm *::after{box-sizing:border-box}
.crm button,.crm input,.crm select{font:inherit;color:inherit}
.crm h2{font-size:13.5px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;margin:0}
.crm .muted{color:var(--soft);font-size:14px;margin:0}
.crm .muted.small{font-size:12.5px;margin-top:12px;line-height:1.5}
.crm .empty{color:var(--soft);padding:20px 0;text-align:center;margin:0}
.crm .lnk{border:0;background:transparent;color:var(--acc-d);font-weight:600;font-size:14px;cursor:pointer;padding:6px 0;-webkit-tap-highlight-color:transparent}
.crm .lnk.danger{color:var(--danger);display:block;margin:6px auto 0}

/* блоки */
.crm .blk{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:16px;margin-bottom:12px;box-shadow:var(--shadow,none)}
.crm .bh{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}

/* поля */
.crm input[type=text],.crm input[type=tel],.crm input[type=number],.crm input[type=password],.crm input[type=search],.crm input[type=date],.crm .sel{width:100%;border:1.5px solid var(--line);border-radius:12px;background:var(--bg);padding:12px 13px;font-size:16px;min-width:0;margin:0}
.crm input:focus,.crm .sel:focus{outline:none;border-color:var(--acc);background:#fff}
.crm input[type=number]{-moz-appearance:textfield;font-weight:700}
.crm input::-webkit-outer-spin-button,.crm input::-webkit-inner-spin-button{-webkit-appearance:none}
.crm input[type=date],.crm .sel{-webkit-appearance:none;appearance:none}
.crm .sel{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:16px;padding-right:36px;flex:1;max-width:60%}
.crm .fld{display:block;margin-top:12px;min-width:0}
.crm .fld:first-child{margin-top:0}
.crm .fld span{display:block;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--soft);font-weight:600;margin-bottom:5px}
.crm .fld[hidden]{display:none}
.crm .row2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.crm .row2 .fld{margin-top:12px}
.crm .frow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-top:1px solid var(--line);margin-top:8px}
.crm .frow[hidden]{display:none}
.crm .fl{font-size:14.5px;flex:0 0 auto}
.crm .seg{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:5px}
.crm .seg button{min-height:38px;padding:0 13px;border:1.5px solid var(--line);border-radius:10px;background:var(--bg);font-weight:600;font-size:13.5px;cursor:pointer;transition:.15s;-webkit-tap-highlight-color:transparent}
.crm .seg button.on{background:var(--acc);border-color:var(--acc);color:#fff}
.crm .err{color:var(--danger);font-size:14px;margin:10px 0 0}

/* кнопки */
.crm .acts{margin-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.crm .acts.three{grid-template-columns:1fr 1fr 1fr}
@media(max-width:355px){.crm .acts.three{grid-template-columns:1fr 1fr}.crm .acts.three .btn.primary{grid-column:1/-1}}
.crm .btn{display:flex;align-items:center;justify-content:center;min-height:48px;border-radius:12px;border:1.5px solid var(--line);background:var(--bg);font-weight:700;font-size:14.5px;text-decoration:none;color:var(--ink);cursor:pointer;-webkit-tap-highlight-color:transparent;padding:0 10px}
.crm .btn.wa{background:var(--ok);border-color:var(--ok);color:#fff}
.crm .acts:not(.three) .btn.wa{grid-column:1/-1}
.crm .acts.three .btn.wa{grid-column:auto}
.crm .btn.primary{background:var(--acc);border-color:var(--acc);color:#fff}
.crm .btn.primary:active{background:var(--acc-d)}
.crm .btn.wide{width:100%;margin-top:10px}
.crm .btn.dis{opacity:.45;pointer-events:none}

/* вход */
.crm.login{position:fixed;inset:0;z-index:60;background:var(--bg);display:flex;align-items:center;justify-content:center;padding:24px 16px}
.crm.login[hidden]{display:none}
.crm .lbox{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line);border-radius:22px;padding:26px 22px 20px;box-shadow:0 1px 2px rgba(0,0,0,.04),0 12px 32px rgba(0,0,0,.06)}
.crm .lbox h1{font-size:22px;margin:18px 0 4px;font-weight:700}
.crm .lbox .ldesc{color:var(--soft);font-size:14px;margin:0 0 6px}
.crm .lbox .btn{width:100%;margin-top:18px}
.crm .lbrand{display:flex;align-items:center;gap:12px}
.crm .lbrand .logo{width:48px;height:48px;display:block;flex:0 0 auto}
.crm .lbrand .mark{width:48px;height:48px;border-radius:14px;background:var(--acc);display:inline-block;position:relative}
.crm .lbrand .mark::after{content:"";position:absolute;inset:12px;border-radius:50%;border:4px solid #fff;border-bottom-color:transparent;transform:rotate(45deg)}
.crm .lbrand b{font-size:22px;font-weight:900;letter-spacing:.04em;color:var(--acc);display:block;line-height:1.1}
.crm .lbrand i{font-style:normal;color:var(--soft);font-size:13px;display:block}

/* списки клиентов и работников */
.crm .list{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card)}
.crm .cl{display:grid;grid-template-columns:40px minmax(0,1fr) auto 14px;gap:1px 12px;align-items:center;border:0;border-top:1px solid var(--line);padding:11px 12px 11px 14px;margin:0;text-align:left;width:100%;background:transparent;cursor:pointer;font:inherit;color:inherit;-webkit-tap-highlight-color:transparent}
.crm .cl:first-child{border-top:0}
.crm .cl:active{background:var(--sand)}
.crm .cl .av{grid-row:1/3;width:40px;height:40px;border-radius:50%;background:var(--acc-l);color:var(--acc-d);display:grid;place-items:center;font-weight:700;font-size:14px;letter-spacing:.02em}
.crm .cl b{font-size:15px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crm .cl i{font-style:normal;font-size:12.5px;color:var(--soft);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crm .cl i .pill{margin:0 2px 0 0;font-size:10px;padding:1px 6px}
.crm .cl .r{grid-row:1/3;grid-column:3;align-self:center;text-align:right;white-space:nowrap}
.crm .cl .r b{font-size:14px;color:var(--ink)}
.crm .cl .r i{font-size:11.5px}
.crm .cl::after{content:"";grid-row:1/3;grid-column:4;width:8px;height:8px;border-right:2px solid var(--line);border-top:2px solid var(--line);transform:rotate(45deg);justify-self:end;filter:brightness(.85)}
.crm .cl.off{opacity:.55}
/* вторая половина подписи (адрес, логин…) — только на широком экране, чтобы не было обрывков */
@media(max-width:899px){.crm .cl i .sub2{display:none}
.crm .cl i .pill + .ph{display:none}}   /* на телефоне при статусе телефон не показываем — без обрывков */
.crm .pill,.crm-pill{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.04em;padding:2px 8px;border-radius:999px;background:var(--sand);color:var(--acc-d);vertical-align:1px;margin-left:4px}
.crm .pill.pct{background:#e5f3ea;color:#1d7a45}
.crm .pill.st-new,.pill.st-new{background:var(--sand);color:var(--soft)}
.crm .pill.st-work,.pill.st-work{background:var(--acc-l);color:var(--acc-d)}
.crm .pill.st-done,.pill.st-done{background:#e5f3ea;color:#1d7a45}
.crm .pill.st-lost,.pill.st-lost{background:#f3e5e3;color:#a63b2c}

/* плитки статистики */
.crm .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.crm .stats[hidden]{display:none}
.crm .tile{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 13px}
.crm .tile span{display:block;font-size:12.5px;color:var(--soft);font-weight:600}
.crm .tile b{display:block;font-size:19px;font-weight:700;letter-spacing:-.01em;margin-top:4px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.crm .tile.acc{background:var(--acc);border-color:var(--acc);color:#fff}
.crm .tile.acc span{color:rgba(255,255,255,.8)}
@media(max-width:400px){.crm .stats{grid-template-columns:1fr 1fr}.crm .stats .tile:first-child{grid-column:1/-1}}

/* заказы в карточках */
.crm .ord{border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-top:8px;background:var(--bg)}
.crm .ord .oh{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.crm .ord .oh b{font-size:15px;white-space:nowrap}
.crm .ord .oh i{font-style:normal;font-size:13px;color:var(--soft)}
.crm .ord .om{font-size:12.5px;color:var(--soft);margin-top:2px}
.crm .ord .om b{color:#1d7a45;font-weight:700}
.crm .ord .seg{justify-content:flex-start;margin-top:8px}
.crm .ord .seg button{min-height:32px;padding:0 10px;font-size:12.5px;border-radius:8px}
.crm .ord .oa{display:flex;gap:8px;margin-top:8px}
.crm .ord .oa button{flex:1;min-height:38px;border:1.5px solid var(--line);border-radius:10px;background:var(--card);font-weight:600;font-size:13.5px;cursor:pointer}
.crm .ord .oa button.del{flex:0 0 auto;color:var(--danger);padding:0 12px}

/* модалки */
.crm.modal{position:fixed;inset:0;z-index:40;background:var(--bg);display:flex;flex-direction:column}
/* экраны разделов (клиенты, работники, прайс, статистика) — под шапкой приложения, если оно задало --crm-top;
   карточки клиента и работника — поверх экранов, выдача доступа — поверх карточек */
.crm.modal[id^="crmScreen"]{top:var(--crm-top,0);left:var(--crm-left,0);z-index:40}
#crmClientModal,#crmStaffModal{z-index:42}
.crm.modal[hidden]{display:none}
.crm .mhead{display:flex;justify-content:space-between;align-items:center;padding:10px 8px 10px 16px;padding-top:calc(10px + env(safe-area-inset-top));background:var(--card);border-bottom:1px solid var(--line);font-size:17px;flex:0 0 auto}
.crm .mhead b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crm .mhead .ico{width:44px;height:44px;border:0;background:transparent;border-radius:50%;font-size:26px;color:var(--soft);cursor:pointer;flex:0 0 auto;display:grid;place-items:center}
.crm .mbody{overflow:auto;padding:14px 14px calc(40px + env(safe-area-inset-bottom));max-width:600px;width:100%;margin:0 auto;flex:1 1 auto}
.crm.modal.sheetm{background:rgba(0,0,0,.5);align-items:center;justify-content:center;padding:20px 16px;z-index:45;left:var(--crm-left,0)}
.crm .mcard{background:var(--card);border-radius:22px;padding:22px 20px;width:100%;max-width:380px}
.crm .mcard h2{margin-bottom:6px}
.crm .mcard .acts{margin-top:0}
.crm .cred{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;align-items:center;background:var(--sand);border-radius:14px;padding:12px 16px;margin-top:4px}
.crm .cred span{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--soft);font-weight:600}
.crm .cred b{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:17px;letter-spacing:.04em;user-select:all}
.crm .cred.big{margin:14px 0}
.crm .cred.big b{font-size:22px}

/* прайс */
.crm .pr{display:grid;grid-template-columns:minmax(0,1fr) 110px;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
.crm .pr:first-child{border-top:0}
.crm .pr .n{font-size:14px;line-height:1.3}
.crm .pr .n i{display:block;font-style:normal;font-size:12px;color:var(--soft)}
.crm .pr input{text-align:right;padding:8px 10px;font-size:15px}
.crm .pr.changed .n::after{content:" ●";color:var(--acc)}
.crm .prh{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--acc-d);font-weight:700;margin:14px 0 4px}
.crm .prh:first-child{margin-top:0}

/* подсказки клиентов под полем имени (в расчёте, вне .crm) */
.crm-sugwrap{position:relative}
.crm-sug{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:15;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.14);overflow:hidden}
.crm-sug[hidden]{display:none}
.crm-sug button{display:block;width:100%;text-align:left;border:0;background:transparent;padding:10px 13px;border-top:1px solid var(--line);cursor:pointer;font:inherit;color:inherit;font-size:14.5px}
.crm-sug button:first-child{border-top:0}
.crm-sug button i{display:block;font-style:normal;font-size:12.5px;color:var(--soft)}

.crm-toast{position:fixed;left:50%;bottom:calc(104px + env(safe-area-inset-bottom));transform:translateX(-50%);background:var(--ink);color:#fff;padding:11px 18px;border-radius:999px;font-size:14px;z-index:70;white-space:nowrap}
.crm-toast[hidden]{display:none}

/* подробности заказа */
.crm .ord .oa button[data-more]{flex:0 0 auto;padding:0 12px}
.crm .odet{margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
.crm .odet[hidden]{display:none}
.crm .spec .sr{display:grid;grid-template-columns:96px minmax(0,1fr);gap:8px;font-size:12.5px;padding:4px 0;border-bottom:1px dashed var(--line)}
.crm .spec .sr span{color:var(--soft)}
.crm .spec .sr b{font-weight:500;overflow-wrap:anywhere}
.crm .og{margin-top:10px}
.crm .ogh{display:flex;justify-content:space-between;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--acc-d);font-weight:700;padding:4px 0}
.crm .ol{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 8px;font-size:12.5px;padding:4px 0;border-top:1px solid var(--line)}
.crm .ol span{grid-row:1/3}
.crm .ol span i{display:block;font-style:normal;font-size:11px;color:var(--soft)}
.crm .ol > i{font-style:normal;font-size:11px;color:var(--soft);text-align:right;white-space:nowrap}
.crm .ol b{text-align:right;white-space:nowrap}
.crm .ol.work span::before{content:"⚒ ";color:var(--acc-d)}
.crm .ot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px 12px;margin-top:10px;padding-top:8px;border-top:2px solid var(--line);font-size:12.5px;color:var(--soft)}
.crm .ot b{color:var(--ink)}
.crm .ot .all b{font-size:15px;color:var(--acc-d)}

/* статистика */
.crm .periods{justify-content:flex-start;margin-bottom:12px}
.crm .tile i{display:block;font-style:normal;font-size:11.5px;color:var(--soft);margin-top:6px;padding-top:6px;border-top:1px solid var(--line)}
.crm .tile.acc i{color:rgba(255,255,255,.8);border-top-color:rgba(255,255,255,.25)}
.crm .chart{width:100%;height:auto;display:block}
.crm .hb .hr{display:grid;grid-template-columns:minmax(0,38%) 1fr auto;gap:8px;align-items:center;padding:5px 0;font-size:13px}
.crm .hb.wide .hr{grid-template-columns:minmax(0,56%) 1fr auto}
.crm .hb .hr span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crm .hb .hr span i{display:block;font-style:normal;font-size:11px;color:var(--soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crm .hb .hr > div{height:12px;background:var(--sand);border-radius:6px;overflow:hidden}
.crm .hb .hr .bar{height:100%;border-radius:6px;min-width:2px}
.crm .hb .hr b{font-size:12.5px;white-space:nowrap;text-align:right}
.crm .stack{display:flex;height:16px;border-radius:8px;overflow:hidden;gap:2px;background:var(--sand)}
.crm .stack i{display:block;height:100%}
.crm .legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:8px;font-size:12.5px;color:var(--soft)}
.crm .legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}

/* ═════════ компьютер: разделы шире, статистика в две колонки, карточки — диалогом ═════════ */
.crm .charts{display:grid;gap:12px}
@media(min-width:900px){
  .crm .mbody{max-width:1120px;padding:24px 24px calc(48px + env(safe-area-inset-bottom))}
  .crm .stats{grid-template-columns:repeat(6,1fr)}
  .crm .charts{grid-template-columns:1fr 1fr}
  .crm .charts .blk{margin-bottom:0}
  .crm .charts .blk.full{grid-column:1/-1}
  .crm .chart{max-width:640px}
  .crm .cl{padding:12px 16px}
  .crm .cl .r b{font-size:15px}
  .crm .hb .hr{grid-template-columns:minmax(0,30%) 1fr auto}
  .crm .hb.wide .hr{grid-template-columns:minmax(0,40%) 1fr auto}
  .crm #priceList{columns:2;column-gap:32px}
  .crm #priceList .prh{break-after:avoid;break-inside:avoid}
  .crm #priceList .pr{break-inside:avoid}
  .crm #equipList{columns:2;column-gap:32px}
  .crm #equipList .prh{break-after:avoid}
  .crm #equipList .pr{break-inside:avoid}
  /* карточка клиента / работника — диалог по центру с затемнением (тень-подложка на весь экран) */
  #crmClientModal,#crmStaffModal{left:calc(50% + var(--crm-left,0px)/2);right:auto;top:32px;bottom:32px;width:min(700px,calc(100% - var(--crm-left,0px) - 64px));transform:translateX(-50%);border-radius:20px;overflow:hidden;box-shadow:0 0 0 100vmax rgba(22,41,45,.45),0 24px 60px rgba(0,0,0,.25);border:1px solid var(--line)}
  #crmClientModal .mbody,#crmStaffModal .mbody{padding:20px 22px 32px}
  #crmClientModal .mhead,#crmStaffModal .mhead{padding-top:10px}
  .crm .row2{gap:12px}
  .crm .spec .sr{grid-template-columns:130px minmax(0,1fr)}
  .crm .login .lbox{max-width:420px;padding:32px 28px 24px}
}
