/* Поток — кабинет менеджера. Дополняет app.css (токены оттуда). Шаг отступов 4/8. */

/* ---------- шапка ---------- */
.tb-user{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}
.tb-name{font-weight:600;font-size:13px}
.tb-role{font-size:12px;color:var(--text-3)}
.btn:focus-visible,.input:focus-visible,a:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.btn:active{transform:translateY(1px)}

/* ---------- тосты ---------- */
.toasts{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;align-items:center;z-index:200;pointer-events:none;width:calc(100% - 32px);max-width:440px}
.toast-item{background:var(--text);color:var(--bg);padding:10px 16px;border-radius:10px;box-shadow:var(--shadow-lg);font-weight:500;font-size:14px;animation:tin .18s ease-out;pointer-events:auto;text-align:center}
.toast-error{background:var(--danger);color:#fff}
.toast-ok{background:var(--ok);color:#fff}
.toast-item.out{opacity:0;transition:opacity .2s}
@keyframes tin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.toast-item{animation:none}}

/* ---------- модалка ---------- */
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.modal-head h2{margin:0}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
.modal-actions:empty{display:none}

/* ---------- общие ---------- */
.page-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.page-head h1{margin:0}
.page-head .grow{flex:1}
.stage-pill{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:999px;font-size:12.5px;font-weight:600;background:color-mix(in srgb,var(--c) 14%,transparent);color:var(--text)}
.big-money{font-size:30px;font-weight:750;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}
.hint{font-size:13px;color:var(--text-3)}
.empty b{display:block;color:var(--text-2);margin-bottom:4px;font-size:15px}
.seg{display:inline-flex;background:var(--surface-2);border-radius:var(--radius-sm);padding:2px}
.seg button{border:0;background:transparent;font:inherit;font-weight:600;font-size:13px;color:var(--text-2);height:32px;padding:0 12px;border-radius:6px;cursor:pointer}
.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}
.loading{padding:48px;text-align:center;color:var(--text-3)}
.input.sm{height:30px;font-size:13px;padding:0 8px}
.err-text{color:var(--danger);font-size:13px;margin-top:4px}

/* ---------- вход ---------- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
.login-card{width:100%;max-width:380px;padding:32px 28px}
.login-card .logo{font-size:24px;margin-bottom:4px}
.login-card .logo i{width:28px;height:28px;border-radius:9px}
.login-card .sub{color:var(--text-2);margin:0 0 24px}
.demo-hint{margin-top:20px;padding:12px;border-radius:var(--radius-sm);background:var(--surface-2);font-size:13px;color:var(--text-2)}
.demo-hint button{border:0;background:none;padding:0;color:var(--brand);font:inherit;font-weight:600;cursor:pointer}

/* ---------- список сделок ---------- */
.stage-filters{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:16px;scrollbar-width:thin}
.sf{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:112px;padding:8px 12px;border-radius:10px;border:1px solid var(--border);background:var(--surface);cursor:pointer;font:inherit;color:var(--text);text-align:left}
.sf:hover{border-color:var(--border-strong)}
.sf .l{font-size:12.5px;color:var(--text-2);font-weight:600;display:flex;align-items:center}
.sf .v{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}
.sf .s{font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}
.sf.on{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset;background:var(--brand-soft)}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.toolbar .search{flex:1;min-width:200px;max-width:420px}
.kcol-head .sum{font-size:12px;color:var(--text-3);font-weight:500;font-variant-numeric:tabular-nums}
.kcol-head .ttl{display:flex;align-items:center}
.kcol .kempty{font-size:12.5px;color:var(--text-3);text-align:center;padding:16px 8px;border:1px dashed var(--border-strong);border-radius:10px}
.kcard{display:block;color:inherit;text-decoration:none}
.kcard:hover{text-decoration:none}
.kcard .top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:2px}
.kcard .n{font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}
.kcard .amt{font-weight:650;font-variant-numeric:tabular-nums;font-size:13.5px}
.kcard .m+.m{margin-top:2px}
.late{color:var(--danger);font-weight:600}
.badge-mini{font-size:11px;height:18px;padding:0 6px}
.list-wrap{overflow-x:auto}
#board .table tbody tr{cursor:pointer}
#board .table tbody tr:hover td{background:var(--surface-2)}

/* ---------- сделка ---------- */
.deal-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.deal-head h1{margin:0}
.deal-head .sub{color:var(--text-2);font-size:14px}
.deal-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr) minmax(0,.9fr);gap:16px;align-items:start}
.deal-grid>div>.card+.card{margin-top:16px}
.form-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:4px}
.save-state{font-size:12.5px;color:var(--text-3);margin-right:auto}
.checks{display:flex;flex-wrap:wrap;gap:8px 16px;margin:4px 0 12px}
.rooms-table{width:100%;border-collapse:collapse;font-size:13px}
.rooms-table th{font-size:11.5px;color:var(--text-3);font-weight:600;text-align:left;padding:4px;text-transform:uppercase;letter-spacing:.03em}
.rooms-table td{padding:4px;vertical-align:middle}
.rooms-table td.c{text-align:center}
.rooms-table .input{height:32px;font-size:13px;padding:0 6px}
.rooms-table .w-area{width:64px}.rooms-table .w-ppl{width:52px}
.rooms-foot{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.calc-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.calc-bar .meta{font-size:13px;color:var(--text-3)}
.warn-list{margin:12px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.warn-list li{background:var(--warn-soft);color:var(--warn);border-radius:var(--radius-sm);padding:8px 12px;font-size:13.5px;font-weight:500}
.variants{display:flex;flex-direction:column;gap:12px;margin-top:12px}
.variant{border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;background:var(--surface);cursor:pointer;transition:border-color .15s,box-shadow .15s}
.variant:hover{border-color:var(--border-strong)}
.variant.on{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset}
.variant .vh{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.variant .vt{font-weight:650;font-size:16px}
.variant .vn{font-size:13px;color:var(--text-2);margin-top:2px}
.variant .radio{width:20px;height:20px;border-radius:50%;border:2px solid var(--border-strong);flex:0 0 auto;margin-top:2px;display:flex;align-items:center;justify-content:center}
.variant.on .radio{border-color:var(--brand)}
.variant.on .radio::after{content:"";width:10px;height:10px;border-radius:50%;background:var(--brand)}
.vlines{width:100%;border-collapse:collapse;font-size:13px;margin:12px 0 8px}
.vlines td,.vlines th{padding:4px 0;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums}
.vlines th{font-size:11.5px;color:var(--text-3);font-weight:600;text-align:left;text-transform:uppercase;letter-spacing:.03em}
.vlines .r{text-align:right;white-space:nowrap;padding-left:8px}
.vlines tr:last-child td{border-bottom:0}
.vfoot{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}
.vtotal{font-size:24px;font-weight:750;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.air{display:flex;flex-direction:column;gap:4px;min-width:160px;flex:1;max-width:260px}
.air .lbl{font-size:12.5px;color:var(--text-2)}
.air .bar{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden}
.air .bar i{display:block;height:100%;border-radius:3px;background:var(--ok)}
.air.low .bar i{background:var(--warn)}
.air.low .lbl b{color:var(--warn)}
.air .lbl b{color:var(--ok)}
.disc-limits{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.disc-box{padding:10px 12px;border-radius:var(--radius-sm);background:var(--surface-2);font-size:14px}
.disc-box.rec{background:var(--brand-soft)}
.disc-box.rec ul{margin:4px 0 0;padding-left:18px;color:var(--text-2);font-size:13px}
.disc-row{display:grid;grid-template-columns:120px 1fr;gap:8px}
.disc-range{width:100%;accent-color:var(--brand);margin:4px 0 12px}
.disc-total{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:8px 0 12px}
.disc-total .was{color:var(--text-3);font-size:14px;font-variant-numeric:tabular-nums}
.disc-total .lbl{font-size:12.5px;color:var(--text-2);font-weight:600}
.kp-actions{display:flex;gap:8px;flex-wrap:wrap}
.btn-wa{background:#1fa855;border-color:#1fa855;color:#fff}
.btn-wa:hover{background:#178a45}
.stage-now{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}
.stage-now .stage-pill{height:30px;font-size:14px;padding:0 12px}
.stage-track{display:flex;gap:4px;margin-bottom:12px}
.stage-track span{flex:1;height:4px;border-radius:2px;background:var(--surface-2)}
.stage-track span.on{background:var(--c)}
.stage-ctrl{display:flex;flex-direction:column;gap:8px}
.stage-ctrl .row2{display:flex;gap:8px}
.stage-ctrl .row2>*{flex:1}
.assign{display:grid;grid-template-columns:1fr;gap:4px;margin-bottom:12px}
.assign .pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px}
.photo{position:relative;aspect-ratio:1;border-radius:var(--radius-sm);overflow:hidden;background:var(--surface-2);display:block}
.photo img{width:100%;height:100%;object-fit:cover;display:block}
.photo .k{position:absolute;left:4px;bottom:4px;font-size:11px;font-weight:600;background:rgba(0,0,0,.55);color:#fff;border-radius:6px;padding:1px 6px}
.photo-up{display:flex;gap:8px;margin-top:12px;align-items:center}
.photo-up select{flex:0 0 120px}
.comments{display:flex;flex-direction:column;gap:12px;margin-bottom:12px}
.cmt .h{font-size:12.5px;color:var(--text-3)}
.cmt .h b{color:var(--text-2);font-weight:600}
.cmt .t{white-space:pre-wrap;font-size:14px;margin-top:2px}
.cmt-form{display:flex;gap:8px;align-items:flex-end}
.cmt-form textarea{min-height:40px}
.hist-toggle{width:100%;justify-content:space-between}
.hist{list-style:none;margin:8px 0 0;padding:0;font-size:13px}
.hist li{padding:6px 0;border-bottom:1px solid var(--border)}
.hist li:last-child{border-bottom:0}
.hist .when{color:var(--text-3);font-size:12px}
.lost-box{background:var(--danger-soft);color:var(--danger);border-radius:var(--radius-sm);padding:8px 12px;font-size:13.5px;margin-bottom:12px}

/* ---------- калькулятор ---------- */
.calc-grid{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:16px;align-items:start}
.calc-result{position:sticky;top:68px}
.from-price{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.from-price .lbl{color:var(--text-2);font-weight:600}
.need-line{color:var(--text-2);font-size:14px;margin-top:4px}
.calc-cta{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.type-seg{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:var(--surface-2);border-radius:var(--radius-sm);padding:2px;margin-bottom:12px}
.type-seg button{border:0;background:transparent;font:inherit;font-weight:600;color:var(--text-2);height:36px;border-radius:6px;cursor:pointer}
.type-seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}
.opt-rooms summary{cursor:pointer;font-weight:600;color:var(--brand);padding:4px 0;list-style:none}
.opt-rooms summary::-webkit-details-marker{display:none}
.is-busy{opacity:.55;transition:opacity .15s}

/* ---------- настройки ---------- */
.price-note{display:flex;gap:12px;align-items:center;background:var(--warn-soft);color:var(--warn);border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);border-radius:var(--radius);padding:12px 16px;font-weight:600;margin-bottom:16px}
.price-note .ico{font-size:20px}
.settings-tabs{margin-bottom:16px}
.cat-group td.gh{background:var(--surface-2);font-weight:650;font-size:13px;color:var(--text-2)}
.cell-input{width:120px;text-align:right;font-variant-numeric:tabular-nums}
.table tr.off td{color:var(--text-3)}
.saved-flash{animation:sf 1s ease-out}
@keyframes sf{from{background:var(--ok-soft)}to{background:transparent}}
.rule-row{display:grid;grid-template-columns:1fr 90px 160px 36px;gap:8px;align-items:center;margin-bottom:8px}
.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}

/* ---------- мобильная ---------- */
@media (max-width:1100px){
  .deal-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .deal-grid>.col-right{grid-column:1 / -1}
}
@media (max-width:720px){
  .deal-grid,.calc-grid,.settings-grid{grid-template-columns:1fr}
  .calc-result{position:static}
  .tb-user{display:none}
  .topbar .logo{font-size:0;gap:0}
  .toolbar .search{min-width:0;max-width:none;flex:1 1 100%}
  .rooms-table .hide-m{display:none}
  .big-money{font-size:26px}
  .rule-row{grid-template-columns:1fr 70px;}
  .rule-row select{grid-column:1}
  .modal-actions{flex-wrap:wrap}
  .modal-actions .btn{flex:1}
  .cell-input{width:96px}
}

/* форма объекта: поля по типу */
.obj-form[data-type="commercial"] .only-live{display:none}
.obj-form:not([data-type="commercial"]) .only-com{display:none}
.obj-form:not([data-type="house"]) .only-house{display:none}
@media (max-width:480px){.vlines .hide-s{display:none}}
.is-disabled{opacity:.45;cursor:not-allowed}
.save-state.late{color:var(--danger)}
@media (max-width:720px){.table .hide-m{display:none}}

/* --- правки после скриншотов --- */
[hidden]{display:none!important}
.room-list{display:flex;flex-direction:column;gap:8px}
.room{border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px;background:var(--surface)}
.room-l1{display:grid;grid-template-columns:1fr 128px 32px;gap:8px;align-items:center}
.room-l2{display:flex;gap:12px;align-items:center;margin-top:8px;flex-wrap:wrap}
.room .input{height:32px;font-size:13.5px;padding:0 8px}
.room-del{width:32px;padding:0;color:var(--text-3)}
.room-del:hover{color:var(--danger)}
.mini{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--text-2)}
.mini .input{width:64px;text-align:right}
.assign .pair{grid-template-columns:1fr}
.cmt-form{flex-direction:column;align-items:stretch}
.cmt-form .btn{align-self:flex-end}
.cmt-form textarea{min-height:64px}
@media (max-width:720px){
  .deal-grid{display:flex;flex-direction:column;gap:12px}
  .deal-grid>div{display:contents}
  .deal-grid .card+.card{margin-top:0}
  #cStage{order:0} #cClient{order:1} #cObject{order:2} #cRooms{order:3} #cCalc{order:4} #cDiscount{order:5} #cKp{order:6}
  #cAssign{order:7} #cPhotos{order:8} #cComments{order:9} #cHistory{order:10}
  .room-l1{grid-template-columns:1fr 112px 32px}
}
@media (max-width:720px){
  .topbar .nav{flex:1;min-width:0;overflow-x:auto;scrollbar-width:none;margin-left:0}
  .topbar .nav::-webkit-scrollbar{display:none}
  .topbar .nav a{white-space:nowrap}
  .topbar .spacer{display:none}
  .settings-tabs{display:flex;overflow-x:auto;max-width:100%;scrollbar-width:none}
  .settings-tabs button{white-space:nowrap;flex:0 0 auto}
}
