[hidden]{display:none!important}
:root{--bg:#f6f6f7;--surface:#fff;--surface-2:#f4f4f5;--text:#18181b;--muted:#6b6b76;--subtle:#a1a1aa;--border:#e7e7ea;--border-strong:#d6d6db;--accent:#6d28d9;--accent-hover:#5b21b6;--accent-text:#6d28d9;--accent-soft:#f3effe;--on-accent:#fff;--ok:#15803d;--ok-soft:#e8f6ec;--warn:#a15c07;--warn-soft:#fdf3e1;--danger:#d92d20;--danger-soft:#fdeceb;--shadow-sm:0 1px 2px rgb(24 24 27/.05);--shadow-lg:0 24px 60px -16px rgb(24 24 27/.3);--radius:14px;--radius-sm:10px;color-scheme:light}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0c0c0f;--surface:#151518;--surface-2:#1c1c21;--text:#f4f4f5;--muted:#a1a1aa;--subtle:#71717a;--border:#26262b;--border-strong:#34343b;--accent:#7c3aed;--accent-hover:#6d28d9;--accent-text:#c4b5fd;--accent-soft:#221b33;--on-accent:#fff;--ok:#6ee7a0;--ok-soft:#0f2a1b;--warn:#fbbf24;--warn-soft:#2b2108;--danger:#f97066;--danger-soft:#2c1514;--shadow-sm:none;--shadow-lg:0 24px 60px -16px rgb(0 0 0/.7);color-scheme:dark}}
:root[data-theme=dark]{--bg:#0c0c0f;--surface:#151518;--surface-2:#1c1c21;--text:#f4f4f5;--muted:#a1a1aa;--subtle:#71717a;--border:#26262b;--border-strong:#34343b;--accent:#7c3aed;--accent-hover:#6d28d9;--accent-text:#c4b5fd;--accent-soft:#221b33;--on-accent:#fff;--ok:#6ee7a0;--ok-soft:#0f2a1b;--warn:#fbbf24;--warn-soft:#2b2108;--danger:#f97066;--danger-soft:#2c1514;--shadow-sm:none;--shadow-lg:0 24px 60px -16px rgb(0 0 0/.7);color-scheme:dark}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 Inter,system-ui,-apple-system,"Segoe UI",sans-serif;font-feature-settings:"cv11","ss01";-webkit-font-smoothing:antialiased;display:grid;grid-template-columns:228px minmax(0,1fr);min-height:100vh}
button,input,select{font:inherit;color:inherit}
svg{width:18px;height:18px;flex:none}
a{color:var(--accent-text)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.muted{color:var(--muted)}
.price-list{display:grid;gap:16px}
.push-switch{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;margin-bottom:16px;padding:12px 16px;border-radius:var(--radius);background:var(--warn-soft);color:var(--warn)}
.push-switch.on{background:var(--ok-soft);color:var(--ok)}
.push-switch div{display:grid;gap:2px;flex:1 1 260px}.push-switch span{font-size:12.5px;opacity:.9}
.price-base.markup{padding-top:0}.markup-note{font-size:12px;color:var(--muted);align-self:center;flex:1 1 220px}
.board-track .cell{display:flex;align-items:center;justify-content:center;padding:0;border-top:0;border-right:0;border-bottom:0;background:none;font:inherit;color:inherit}
.board-track .cell.we{background:var(--surface-2)}.board-track .cell.today{background:var(--accent-soft)}
.cell .pr{font-size:9.5px;font-variant-numeric:tabular-nums;color:var(--muted);letter-spacing:-.02em;pointer-events:none}
.cell .pr.sp{color:var(--accent-text);font-weight:650}
.board-track a.cell,.board-track a.cell:hover,.board-track a.cell:visited{text-decoration:none;color:var(--muted)}
.cell .pr small{display:block;font-size:8.5px;font-weight:500;line-height:1.1;opacity:.85}
.cell .pr{display:flex;flex-direction:column;align-items:center;line-height:1.15}
.board.prices .bar{pointer-events:none;opacity:.5}
.board.prices button.cell{cursor:pointer}.board.prices button.cell:disabled{cursor:default}
.board.prices button.cell:not(:disabled):hover,.board.prices .cell.sel{background:color-mix(in oklab,var(--accent) 22%,transparent)}
.pick-bar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;align-items:center;gap:10px;padding:10px max(16px,env(safe-area-inset-right,0px)) calc(10px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));background:var(--surface);border-top:1px solid var(--border);box-shadow:var(--shadow-lg);font-size:14px;font-weight:600}
.pick-bar span{flex:1;min-width:0}
@media(max-width:640px){.cell .pr{font-size:9px}}
.board-note{margin:0 0 10px;font-size:12px;color:var(--muted)}
.price-base,.price-add{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;padding:14px 16px}
.price-base .field{width:170px}.price-add .field{width:150px}.price-add .field.grow{flex:1 1 180px;width:auto}
.price-add{border-top:1px solid var(--border);background:var(--surface-2)}
.hint.bad{background:var(--danger-soft);color:var(--danger);margin-bottom:12px}
@media(max-width:640px){.price-base .field,.price-add .field{width:calc(50% - 6px)}.price-add .field.grow{flex-basis:100%}}
.avito-data{margin:2px 0 10px;font-size:12px;line-height:1.5}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}

/* Боковая панель */
.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:2px;padding:16px 12px;background:var(--surface);border-right:1px solid var(--border)}
.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 18px;font-weight:700;font-size:15px;letter-spacing:-.01em}
.brand-mark{width:30px;height:30px;border-radius:9px;background:var(--accent);color:#fff;display:grid;place-items:center}
.brand-mark svg{width:17px;height:17px}
.nav{display:grid;gap:2px}
.nav-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;border-radius:9px;background:none;color:var(--muted);font-weight:500;text-decoration:none;text-align:left;cursor:pointer;white-space:nowrap}
.nav-item:hover{background:var(--surface-2);color:var(--text)}
.nav-item.active{background:var(--accent-soft);color:var(--accent-text)}
.sidebar-foot{margin-top:auto;display:grid;gap:2px;padding-top:10px;border-top:1px solid var(--border)}

/* Основная часть */
main{padding:20px 28px 28px;min-width:0;width:100%;max-width:1720px}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px 20px;flex-wrap:wrap;margin-bottom:16px}
.eyebrow{font-size:12px;font-weight:500;color:var(--muted)}
h1{margin:2px 0 0;font-size:24px;line-height:1.2;font-weight:650;letter-spacing:-.02em}
.sub{margin:3px 0 0;color:var(--muted);font-size:13px}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.toolbar form{display:contents}

/* Кнопки и поля */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:36px;padding:0 14px;border:1px solid transparent;border-radius:var(--radius-sm);font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.btn svg{width:16px;height:16px}
.btn.primary{background:var(--accent);color:var(--on-accent)}
.btn.primary:hover{background:var(--accent-hover)}
.btn.secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong)}
.btn.secondary:hover{background:var(--surface-2)}
.btn.ghost{background:transparent;color:var(--accent-text)}
.btn.ghost:hover{background:var(--accent-soft)}
.btn.danger{background:transparent;color:var(--danger);border-color:var(--border-strong)}
.btn.danger:hover{background:var(--danger-soft);border-color:transparent}
.btn.sm{height:30px;padding:0 10px;font-size:12px}
.btn.block{width:100%}
.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;padding:0;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer;text-decoration:none}
.icon-btn:hover{background:var(--surface-2)}
.icon-btn svg{width:16px;height:16px}
.icon-btn.quiet{width:30px;height:30px;border-color:transparent;background:transparent;color:var(--muted)}
.icon-btn.quiet:hover{background:var(--surface-2);color:var(--text)}
input,select{height:36px;padding:0 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);font-size:13px;min-width:0}
input:hover,select:hover{border-color:var(--subtle)}
input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 22%,transparent)}
input[type=date]{cursor:pointer}
input[type=checkbox]{width:16px;height:16px;margin:0;padding:0;accent-color:var(--accent);box-shadow:none}
.month-nav{display:flex;align-items:center;gap:4px}
.month-nav select{font-weight:600;min-width:148px}
.field{display:grid;gap:5px;font-size:12px;font-weight:500;color:var(--muted)}
.field input,.field select{width:100%;font-weight:400;color:var(--text)}
.check{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}

/* Показатели */
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.kpi{padding:13px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);min-width:0}
.kpi-label{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;font-weight:500;color:var(--muted)}
.kpi-value{margin-top:4px;font-size:22px;font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi-note{margin-top:1px;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi.accent{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.kpi.accent .kpi-label,.kpi.accent .kpi-note{color:rgb(255 255 255/.78)}
.kpi.accent .badge{background:rgb(255 255 255/.16);color:#fff}

/* Карточки и таблицы */
.report-grid{display:grid;grid-template-columns:minmax(0,1fr) 336px;gap:16px;align-items:start}
.col{display:grid;gap:16px;min-width:0}
.split{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);min-width:0;overflow:hidden}
.card-head{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:50px;padding:8px 10px 8px 16px;border-bottom:1px solid var(--border)}
.card-head h2{margin:0;font-size:14px;font-weight:650}
.card-head p{margin:0;font-size:12px;color:var(--muted)}
.table-wrap{position:relative;overflow:auto}
table{width:100%;border-collapse:collapse}
th{padding:7px 16px;background:var(--surface-2);color:var(--muted);font-size:12px;font-weight:500;text-align:left;white-space:nowrap}
td{padding:8px 16px;border-top:1px solid var(--border);font-size:13px;vertical-align:middle}
tbody tr:first-child td{border-top:0}
tbody tr:hover td{background:color-mix(in oklab,var(--surface-2) 60%,transparent)}
th.num{text-align:right}
td.dates{white-space:nowrap}
td.act{width:1%;padding:4px 10px 4px 0;text-align:right}
td a{color:inherit;text-decoration-color:var(--border-strong);text-underline-offset:3px}
td a:hover{color:var(--accent-text)}
tfoot td{background:var(--surface-2);font-weight:650;border-top:1px solid var(--border)}
.cell-sub{display:block;font-size:12px;color:var(--muted)}
.list-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 10px 7px 16px;border-top:1px solid var(--border)}
.list-row:first-child{border-top:0}
.list-row .amount{margin-left:auto;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.list-row small{display:block;font-size:12px;color:var(--muted)}
.empty{padding:12px 16px;color:var(--muted);font-size:13px}
td.empty{padding:12px 16px}

/* Расчёт */
.calc dl{margin:0;padding:8px 16px}
.calc dl>div{display:flex;justify-content:space-between;gap:12px;padding:5px 0;font-size:13px}
.calc dt{color:var(--muted)}
.calc dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.calc .divider{margin:3px 0;border-top:1px dashed var(--border-strong)}
.calc .strong dt{color:var(--text);font-weight:600}
.calc-section{display:grid;gap:10px;padding:12px 16px;border-top:1px solid var(--border)}
.calc .adj-list{border-top:1px solid var(--border)}
.calc .adj-list .list-row{padding:5px 10px 5px 16px}
.due{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:11px 14px;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent-text)}
.due span{font-size:13px;font-weight:600}
.due b{font-size:20px;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap}

/* Метки */
.badge{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:99px;background:var(--surface-2);color:var(--muted);font-size:11.5px;font-weight:600;white-space:nowrap}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}
.login-alt{margin:4px 0 0;text-align:center;font-size:13px;color:var(--muted)}
.login-alt a{color:var(--accent-text);font-weight:600}
.badge.ok,.badge.booked,.badge.carry{background:var(--ok-soft);color:var(--ok)}
.badge.wait,.badge.request{background:var(--accent-soft);color:var(--accent-text)}
.badge.todo,.badge.over{background:var(--warn-soft);color:var(--warn)}
.badge.canceled{background:var(--danger-soft);color:var(--danger)}
.chip{display:inline-flex;align-items:center;gap:6px}
.chip b{letter-spacing:.14em;font-variant-numeric:tabular-nums}

/* Диалоги */
dialog{width:min(460px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:0;border:0;border-radius:16px;background:var(--surface);color:var(--text);box-shadow:var(--shadow-lg)}
dialog::backdrop{background:rgb(9 9 11/.45);backdrop-filter:blur(2px)}
dialog[open]{animation:pop .16s ease-out}
@keyframes pop{from{opacity:0;transform:translateY(6px) scale(.985)}}
.sheet{display:flex;flex-direction:column;max-height:inherit}
.sheet-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 14px 4px 20px}
.sheet-head h2{margin:0;font-size:16px;font-weight:650}
.sheet-head p{margin:2px 0 0;font-size:12px;color:var(--muted)}
.sheet-body{display:grid;gap:12px;padding:12px 20px;overflow:auto}
.sheet-foot{display:flex;gap:8px;justify-content:flex-end;padding:12px 20px 18px}
.sheet-foot .push{margin-right:auto}
.sheet-section{border-top:1px solid var(--border)}
.sheet-section .list-row{padding:8px 20px}
.section-label{margin:14px 20px 4px;font-size:12px;font-weight:600;color:var(--muted)}
.hint{padding:8px 10px;border-radius:8px;background:var(--accent-soft);color:var(--accent-text);font-size:12px;line-height:1.45}
.hint:empty{display:none}
.code-box{padding:14px;border-radius:12px;background:var(--surface-2);text-align:center;color:var(--muted);font-size:12px}
.code-box b{display:block;margin-top:2px;color:var(--text);font-size:28px;letter-spacing:.24em;font-variant-numeric:tabular-nums}

/* Плашка о несохранённой форме */
.banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;padding:10px 12px 10px 16px;border-radius:var(--radius-sm);background:var(--warn-soft);color:var(--warn);font-size:13px}
.banner[hidden]{display:none}
.banner span{flex:1;min-width:220px}

/* Вход и страница ошибки */
.login{display:grid;place-items:center;grid-template-columns:1fr;padding:16px}
.login form{display:grid;gap:12px;width:min(360px,100%);padding:32px 28px;background:var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow-lg);text-align:center}
.login h1{font-size:22px}
.login p{margin:0;color:var(--muted)}
.login input{width:100%;height:40px}
.login button{height:40px;border:0;border-radius:var(--radius-sm);background:var(--accent);color:var(--on-accent);font-weight:600;cursor:pointer}
.login small{color:var(--danger)}
.login .mark{margin:0 auto 4px;width:44px;height:44px;border-radius:12px;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:22px}

/* Адаптивность */
@media(max-width:1200px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.report-grid{grid-template-columns:minmax(0,1fr) 300px}.split{grid-template-columns:1fr}}
@media(max-width:980px){body{grid-template-columns:64px minmax(0,1fr)}
.sidebar{padding:16px 10px;align-items:center}
.brand{padding:4px 0 18px}
.brand .label,.nav-item .label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.nav-item{justify-content:center;padding:9px}
.report-grid{grid-template-columns:1fr}}
@media(max-width:640px){body{display:block}
.sidebar{position:sticky;z-index:5;height:auto;flex-direction:row;align-items:center;gap:2px;padding:8px 10px;border-right:0;border-bottom:1px solid var(--border);overflow-x:auto}
.brand{padding:0 6px 0 0}
.nav{display:flex}
.sidebar-foot{display:flex;margin:0 0 0 auto;padding:0;border:0}
main{padding:16px}
.page-head{display:grid}
.kpis{gap:8px}
.kpi{padding:11px 12px}
.kpi-value{font-size:18px}
.split{grid-template-columns:1fr}}

/* Пакетный ввод и быстрое добавление */
.grid-3{display:grid;grid-template-columns:1fr 88px 1fr;gap:12px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.sheet-foot .before{order:-1}
.kbd-hint{order:-2;white-space:nowrap;font-size:11.5px;color:var(--subtle);align-self:center}
dialog.wide{width:min(820px,calc(100vw - 32px))}
textarea{width:100%;min-height:150px;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:13px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace;resize:vertical}
textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 22%,transparent)}
.help{margin:0;font-size:12px;line-height:1.5;color:var(--muted)}
.help code{padding:1px 5px;border-radius:5px;background:var(--surface-2);color:var(--text);font-size:11.5px}
.preview{border:1px solid var(--border);border-radius:var(--radius-sm);max-height:260px;overflow:auto}
.preview:empty{display:none}
.preview table{width:100%;border-collapse:collapse;font-size:12.5px}
.preview td{padding:6px 10px;border-top:1px solid var(--border);vertical-align:top}
.preview tr:first-child td{border-top:0}
.preview td.ln{width:28px;color:var(--subtle);font-variant-numeric:tabular-nums}
.preview td.kd{width:96px;white-space:nowrap}
.preview tr.err{background:var(--danger-soft)}
.preview tr.err .why{display:block;color:var(--danger);font-weight:600}
.preview tr.skip{color:var(--subtle)}
.voice-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.voice-live{flex:1;min-width:200px;font-size:12.5px;color:var(--muted)}
#voice-btn.rec{color:var(--danger);border-color:var(--danger);background:var(--danger-soft)}
#voice-btn.rec svg{animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{50%{opacity:.35}}
@media(prefers-reduced-motion:reduce){#voice-btn.rec svg{animation:none}}
.batch-status{margin-right:auto;align-self:center;font-size:12.5px;color:var(--muted)}
.batch-status.bad{color:var(--danger);font-weight:600}
.toast{position:fixed;left:50%;bottom:24px;z-index:50;transform:translateX(-50%);display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:99px;background:var(--text);color:var(--bg);font-size:13px;font-weight:500;box-shadow:var(--shadow-lg);transition:opacity .3s,transform .3s}
.toast.hide{opacity:0;transform:translate(-50%,8px);pointer-events:none}
.copy-empty{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
@media(max-width:640px){.grid-3{grid-template-columns:1fr 1fr}.grid-3 .nights{grid-column:1/-1;order:3}.kbd-hint{display:none}.preview td.kd{width:1%}.preview td{padding:6px 8px}}
.title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.lock-chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:1px solid var(--border-strong);border-radius:99px;background:var(--surface);color:var(--muted);font:inherit;font-size:12px;cursor:pointer}
.lock-chip:hover{color:var(--text);border-color:var(--subtle)}
.lock-chip svg{width:14px;height:14px}
.lock-chip b{color:var(--text);font-weight:650;letter-spacing:.14em;font-variant-numeric:tabular-nums}

/* Импорт из RealtyCalendar */
.import-upload{max-width:720px}
.steps{margin:0;padding-left:20px;display:grid;gap:6px;font-size:13px;color:var(--muted)}
.steps b{color:var(--text);font-weight:600}
.banner.bad{background:var(--danger-soft);color:var(--danger);font-weight:600}
.map-table td{vertical-align:top}
.map-table select{min-width:240px}
.new-obj{display:grid;grid-template-columns:2fr 2fr 1fr 1fr;gap:8px;margin-top:8px;max-width:640px}
.rc-card{margin-top:16px;margin-bottom:84px}
.rc-table{font-size:12.5px}
.rc-table td{padding:5px 4px;vertical-align:middle}
.rc-table input,.rc-table select{height:30px;padding:0 7px;font-size:12.5px}
.rc-table input[type=date]{width:110px;padding:0 4px}
.rc-table .w-src{width:82px}.rc-table .w-num{width:76px;text-align:right}.rc-table .w-clean{width:62px;text-align:right}.rc-table .w-comment{width:100%;min-width:80px}
.rc-table td.clean{white-space:nowrap}.rc-table td.clean input[type=checkbox]{margin-right:6px;vertical-align:middle}
.rc-table td.ln{color:var(--subtle);font-variant-numeric:tabular-nums}
.rc-table td.obj{white-space:nowrap;max-width:110px;overflow:hidden;text-overflow:ellipsis}
.rc-table td.net{font-weight:600;white-space:nowrap}
.rc-table tr.sub td{padding-top:0;border-top:0}.rc-table td.note{padding:0 4px 7px;color:var(--muted);font-size:12px;line-height:1.4}
.rc-table tbody tr:not(.sub){border-top:1px solid var(--border)}.rc-table tbody td{border-top:0}
.rc-table .act{width:122px;font-weight:600}
.rc-table .badge{margin-top:3px}
.badge.deleted{background:var(--danger-soft);color:var(--danger)}
.rc-table tr.act-skip td:not(:nth-child(2)){opacity:.5}
.rc-table tr.act-new .act{color:var(--ok)}.rc-table tr.act-update .act,.rc-table tr.act-replace .act{color:var(--accent-text)}.rc-table tr.act-cancel .act,.rc-table tr.act-delete .act{color:var(--danger)}
.rc-table tr.err{background:var(--danger-soft)}.rc-table tr.err td{opacity:1!important}
.rc-table .why{color:var(--danger);margin-right:8px}
.hide-skip tr.act-skip:not(.err){display:none}
.apply-bar{position:fixed;left:228px;right:0;bottom:0;z-index:20;display:flex;align-items:center;gap:8px;padding:12px 24px;background:color-mix(in oklab,var(--surface) 92%,transparent);backdrop-filter:blur(8px);border-top:1px solid var(--border)}
.apply-stats{display:flex;flex-wrap:wrap;gap:6px;margin-right:auto}
.pill{padding:3px 10px;border-radius:99px;background:var(--surface-2);font-size:12px;font-weight:600;color:var(--muted)}
.pill.act-new{background:var(--ok-soft);color:var(--ok)}.pill.act-update,.pill.act-replace{background:var(--accent-soft);color:var(--accent-text)}.pill.act-cancel,.pill.act-delete,.pill.bad{background:var(--danger-soft);color:var(--danger)}
@media(max-width:980px){.apply-bar{left:64px}}
@media(max-width:640px){.apply-bar{left:0;padding:10px 16px}.new-obj{grid-template-columns:1fr 1fr}.map-table select{min-width:0;width:100%}}

/* Тестовый экземпляр */
.test-strip{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:-4px 0 14px;padding:8px 14px;border-radius:var(--radius-sm);background:repeating-linear-gradient(-45deg,var(--warn-soft),var(--warn-soft) 12px,transparent 12px,transparent 24px),var(--warn-soft);border:1px dashed var(--warn);color:var(--warn);font-size:12.5px}
.test-strip b{text-transform:uppercase;letter-spacing:.06em}
.test-tag{display:inline-block;padding:1px 8px;border-radius:99px;background:var(--warn-soft);color:var(--warn);font-size:12px}

/* Статистика */
:root{--series-1:#2a78d6;--series-1-hover:#1c5cab;--chart-grid:#ececef;--chart-base:#d6d6db}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--series-1:#3987e5;--series-1-hover:#6da7ec;--chart-grid:#232328;--chart-base:#34343b}}
:root[data-theme=dark]{--series-1:#3987e5;--series-1-hover:#6da7ec;--chart-grid:#232328;--chart-base:#34343b}
.stats-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px}
.seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);overflow:hidden}
.seg a{display:inline-flex;align-items:center;height:34px;padding:0 11px;font-size:13px;font-weight:500;color:var(--muted);text-decoration:none;border-left:1px solid var(--border)}
.seg a:first-child{border-left:0}
.seg a:hover{background:var(--surface-2);color:var(--text)}
.seg a.on{background:var(--accent-soft);color:var(--accent-text);font-weight:600}
.range{display:inline-flex;align-items:center;gap:6px;color:var(--muted)}
.dropdown{position:relative}
.dropdown summary{list-style:none}
.dropdown summary::-webkit-details-marker{display:none}
.dropdown-body{position:absolute;z-index:6;top:calc(100% + 6px);left:0;max-width:calc(100vw - 32px);display:grid;gap:10px;min-width:220px;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg)}
.delta{font-weight:600}
.delta.up{color:var(--ok)}
.delta.down{color:var(--danger)}
.kpi.accent .delta{color:#fff}
.stats-prev{margin:-6px 0 16px;font-size:12px}
.chart-card{margin-bottom:16px}
.chart{position:relative;padding:14px 16px 4px;outline-offset:-2px}
.chart svg{display:block;width:100%;height:auto}
.chart .grid{stroke:var(--chart-grid);stroke-width:1}
.chart .base{stroke:var(--chart-base);stroke-width:1}
.chart .tick{fill:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}
.chart .bar{fill:var(--series-1)}
.chart .bar.on{fill:var(--series-1-hover)}
.chart .hover{fill:var(--text);opacity:.05}
.chart-tip{position:absolute;top:6px;z-index:2;min-width:150px;max-width:260px;padding:8px 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);font-size:12px;pointer-events:none}
.tip-head{font-size:14px;font-weight:650;font-variant-numeric:tabular-nums}
.tip-sub{margin-bottom:4px;color:var(--muted)}
.tip-row{display:flex;justify-content:space-between;gap:12px;color:var(--muted)}
.tip-row b{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}
.chart-table{border-top:1px solid var(--border)}
.chart-table summary{padding:9px 16px;font-size:12.5px;color:var(--muted);cursor:pointer}
.chart-table .table-wrap{max-height:320px}
.stats-split{margin-bottom:16px}
.share-col{width:120px}
.nowrap{white-space:nowrap}
.share{display:inline-block;width:56px;height:6px;margin-right:8px;border-radius:3px;background:var(--surface-2);vertical-align:middle;overflow:hidden}
.share-bar{display:block;height:100%;background:var(--series-1);border-radius:3px}
.share-val{font-variant-numeric:tabular-nums;color:var(--muted);font-size:12.5px}
@media(max-width:640px){.kpis .kpi-note{white-space:normal}.range input{width:132px}.seg{max-width:100%;overflow-x:auto}.seg a{padding:0 9px;white-space:nowrap}.chart{padding:10px 8px 2px}}

/* Шахматка */
:root{--src-avito:#2f6fde;--src-sutochno:#1f9d55;--src-cian:#0891b2;--src-bronevik:#d97706;--src-direct:#7c3aed;--src-other:#71717a;--cell:36px;--name-w:170px;--occ-w:76px}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--src-avito:#6ea0ff;--src-sutochno:#4cc483;--src-cian:#38bdd8;--src-bronevik:#f5a524;--src-direct:#a78bfa;--src-other:#a1a1aa}}
:root[data-theme=dark]{--src-avito:#6ea0ff;--src-sutochno:#4cc483;--src-cian:#38bdd8;--src-bronevik:#f5a524;--src-direct:#a78bfa;--src-other:#a1a1aa}
.src-avito{--c:var(--src-avito)}.src-sutochno{--c:var(--src-sutochno)}.src-cian{--c:var(--src-cian)}.src-bronevik{--c:var(--src-bronevik)}.src-direct{--c:var(--src-direct)}.src-other{--c:var(--src-other)}
.board-legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0 0 10px;font-size:12px;color:var(--muted)}
.board-legend span{display:inline-flex;align-items:center;gap:6px}
.board-legend i{width:14px;height:10px;border-radius:3px;background:color-mix(in oklab,var(--c) 22%,var(--surface));border-left:3px solid var(--c)}
.board-legend .clash-key i{background:var(--danger-soft);border:1.5px solid var(--danger)}
.board-wrap{overflow-x:auto;overscroll-behavior-x:contain}
.board{display:grid;width:max-content;min-width:100%}
.board-row{display:grid;grid-template-columns:var(--name-w) calc(var(--cell)*var(--days)) var(--occ-w);border-bottom:1px solid var(--border)}
.board-row:last-child{border-bottom:0}
.board-name{position:sticky;left:0;z-index:3;display:flex;flex-direction:column;justify-content:center;gap:1px;padding:8px 12px;background:var(--surface);border-right:1px solid var(--border);min-width:0}
.board-name a{color:var(--text);font-weight:600;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.board-name a:hover{color:var(--accent-text)}
.board-name a .short{display:none}
.board-name>span{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.board-track{position:relative;display:grid;grid-template-columns:repeat(var(--days),var(--cell));min-height:48px}
.board-day{border-left:1px solid var(--border);display:block}
.board-day:first-child{border-left:0}
.board-day.we{background:var(--surface-2)}
.board-day.today{background:var(--accent-soft);box-shadow:inset 1.5px 0 0 var(--accent),inset -1.5px 0 0 var(--accent)}
a.board-day:hover{background:color-mix(in oklab,var(--accent) 10%,transparent)}
.board-head{position:sticky;top:0;z-index:4;background:var(--surface)}
.board-head .board-name{font-size:12px;font-weight:600;color:var(--muted)}
.board-head .board-track{min-height:0}
.board-head .board-day{display:flex;flex-direction:column;align-items:center;padding:3px 0 5px;font-size:10.5px;color:var(--muted);line-height:1.25}
.board-head .board-day b{font-size:13px;color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}
.board-head .board-day .m{position:relative;z-index:1;height:13px;font-size:10px;font-weight:600;color:var(--accent-text);white-space:nowrap;align-self:flex-start;padding-left:4px;overflow:visible}
.board-head .board-day.today b{color:var(--accent-text)}
.board-occ{display:flex;flex-direction:column;justify-content:center;align-items:flex-end;padding:6px 12px;border-left:1px solid var(--border);font-variant-numeric:tabular-nums}
.board-occ b{font-size:13px}
.board-occ span{font-size:11px;color:var(--muted);white-space:nowrap}
.board-head .board-occ{font-size:12px;font-weight:600;color:var(--muted)}
.bar{position:absolute;z-index:2;top:9px;bottom:9px;left:calc(var(--cell)*var(--l) + 2px);width:calc(var(--cell)*var(--w) - 4px);display:flex;align-items:center;padding:0 7px;border-radius:7px;background:color-mix(in oklab,var(--c) 20%,var(--surface));border-left:3px solid var(--c);color:var(--text);font-size:11.5px;font-weight:600;text-decoration:none;overflow:hidden;white-space:nowrap}
.bar span{overflow:hidden;text-overflow:ellipsis}
.bar:hover{background:color-mix(in oklab,var(--c) 32%,var(--surface))}
.bar.open-l{border-top-left-radius:0;border-bottom-left-radius:0;left:calc(var(--cell)*var(--l))}
.bar.open-r{border-top-right-radius:0;border-bottom-right-radius:0}
.bar.request{background:repeating-linear-gradient(135deg,color-mix(in oklab,var(--c) 18%,var(--surface)) 0 6px,var(--surface) 6px 10px)}
.bar.clash{border:1.5px solid var(--danger);border-left-width:3px;background:var(--danger-soft);color:var(--danger)}
@media(max-width:640px){:root{--name-w:64px;--occ-w:52px;--cell:32px}.board-name{padding:6px 8px}.board-name>span,.board-name a .full{display:none}.board-name a .short{display:inline}.board-occ{padding:6px 8px}.board-occ span{display:none}}
