:root{
  --bg:#FBF7F4; --bg2:#F5ECE8; --paper:#fff; --ink:#2A2224; --text2:#4E4346; --muted:#7E6F73;
  --line:#EADDD9; --line2:#F2E8E4;
  --accent:#9E2A63; --accent-lt:#C9578F; --accent-bg:#F6E3EC; --accent-ink:#7D1F4E;
  --side:#2A2224;
  --st-new:#EFE6E1;   --st-new-b:#B9A9A3;
  --st-conf:#E3F1E7;  --st-conf-b:#3E9B63;
  --st-wait:#FFF1D6;  --st-wait-b:#D99A1E;
  --st-chair:#F6E3EC; --st-chair-b:#9E2A63;
  --st-done:#F1EFEE;  --st-done-b:#A69C9E;
  --st-miss:#FCE8E6;  --st-miss-b:#D2483A;
  --green:#2F7A4C; --red:#B42D20; --amber:#A9740D;
  --f:'Montserrat','Segoe UI',system-ui,sans-serif;
  --row:17px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:var(--f);background:var(--bg);color:var(--ink);font-size:13px;-webkit-font-smoothing:antialiased;min-width:1180px}
button,input,select,textarea{font:inherit;color:inherit}
.app{display:grid;grid-template-columns:212px minmax(0,1fr);height:100vh}
[hidden]{display:none!important}

/* ── меню ── */
.side{background:var(--side);color:#E9DFDC;display:flex;flex-direction:column;padding:18px 12px;overflow-y:auto}
.logo{display:flex;align-items:center;gap:10px;padding:4px 8px 22px}
.logo-mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(140deg,var(--accent-lt),var(--accent));display:grid;place-items:center;flex:none}
.logo-name{font-family:'Cormorant',Georgia,serif;font-size:23px;font-weight:700;letter-spacing:.3px;color:#fff;line-height:1}
.logo-sub{font-size:10px;color:#A8999C;letter-spacing:1.4px;text-transform:uppercase;margin-top:3px}
.nav-sep{font-size:10px;text-transform:uppercase;letter-spacing:1.2px;color:#8E8083;padding:14px 12px 6px}
.nav a{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:10px;color:#CDBFC2;font-weight:500;font-size:13.5px;margin-bottom:2px;cursor:pointer;user-select:none;white-space:nowrap}
.nav a svg{width:18px;height:18px;flex:none;opacity:.85}
.nav a:hover{background:#3A3033}
.nav a.on{background:#fff;color:var(--ink);font-weight:600}
.nav a.on svg{color:var(--accent);opacity:1}
.nav .cnt{margin-left:auto;background:var(--accent);color:#fff;font-size:11px;font-weight:700;border-radius:20px;padding:1px 7px}
.nav a.on .cnt{background:var(--accent-bg);color:var(--accent-ink)}
.side .me{margin-top:auto;display:flex;align-items:center;gap:10px;padding:12px 10px 4px;border-top:1px solid #3E3437}
.ava{width:32px;height:32px;border-radius:50%;background:#4A3E41;display:grid;place-items:center;font-weight:600;font-size:12px;color:#fff;flex:none}
.me b{display:block;font-size:12.5px;color:#fff;font-weight:600}.me span{font-size:11px;color:#A8999C}

/* ── каркас экранов ── */
.main{min-width:0;min-height:0;position:relative}
.screen{display:none;flex-direction:column;height:100vh;min-width:0}
.screen.on{display:flex}
.top{display:flex;align-items:center;gap:12px;padding:0 22px;height:64px;border-bottom:1px solid var(--line);background:var(--bg);flex:none;flex-wrap:nowrap;min-width:0}
.top h1{font-size:19px;font-weight:700;letter-spacing:-.2px;white-space:nowrap}
.top .date{font-size:13px;color:var(--text2);font-weight:500;white-space:nowrap}
.body{flex:1;min-height:0;overflow:auto}
.pad{padding:16px 22px}
.btn{border:1px solid var(--line);background:var(--paper);border-radius:9px;padding:7px 12px;font-weight:600;font-size:12.5px;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;white-space:nowrap}
.btn:hover{border-color:#D9C6C0}
.btn.pri{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 2px 8px rgba(158,42,99,.25)}
.btn.pri:hover{background:var(--accent-ink)}
.btn.sm{padding:5px 9px;font-size:11.5px}
.btn.w{width:100%}
.btn.danger{color:var(--red)}
.seg{display:inline-flex;background:var(--bg2);border-radius:10px;padding:3px;flex:none}
.seg span{padding:6px 11px;border-radius:8px;font-weight:600;font-size:12px;color:var(--text2);cursor:pointer;white-space:nowrap}
.seg span.on{background:var(--paper);color:var(--ink);box-shadow:0 1px 3px rgba(42,34,36,.1)}
.search{display:flex;align-items:center;gap:8px;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:7px 12px;width:clamp(170px,18vw,270px);min-width:0;color:var(--muted);cursor:text;flex:0 1 auto}
.search span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search kbd{margin-left:auto;font:600 10.5px var(--f);background:var(--bg2);border-radius:5px;padding:2px 6px;color:var(--text2);white-space:nowrap}
.sp{flex:1;min-width:0}
.arrows{display:inline-flex;gap:4px;flex:none}
.arrows .btn{padding:7px 9px}
.card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:13px 14px}
.card h3,.h3{font-size:12px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:8px}
.card h3 .cnt{margin-left:auto;background:var(--accent);color:#fff;border-radius:20px;padding:1px 8px;font-size:11px;letter-spacing:0}
.panel{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:16px 18px}
table{width:100%;border-collapse:collapse}
th{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);text-align:left;font-weight:700;padding:8px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:9px 8px;border-bottom:1px solid var(--line2);font-size:12.5px;vertical-align:middle}
td.r,th.r{text-align:right}
th:last-child,td:last-child{padding-right:12px}
.tscroll{overflow-x:auto}
.pill{font-size:11px;font-weight:700;border-radius:20px;padding:3px 9px;white-space:nowrap;display:inline-block}
.pill.d{background:var(--st-conf);color:var(--green)}.pill.p{background:var(--st-wait);color:var(--amber)}.pill.n{background:var(--bg2);color:var(--text2)}.pill.x{background:var(--st-miss);color:var(--red)}.pill.k{background:var(--accent-bg);color:var(--accent-ink)}
.tn{display:inline-grid;place-items:center;min-width:28px;height:22px;border-radius:6px;background:var(--bg2);font-weight:700;font-size:11.5px;padding:0 4px}
.code{font-size:11px;color:var(--muted);display:block}
.li{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line2)}
.li:first-of-type{border-top:0;padding-top:0}
.li .ava{width:28px;height:28px;font-size:10.5px;background:var(--bg2);color:var(--text2)}
.li b{font-size:12.5px;display:block}.li span{font-size:11px;color:var(--muted)}
.li .go{margin-left:auto;font-size:11.5px;font-weight:700;color:var(--accent);cursor:pointer;white-space:nowrap}
.legend{display:flex;gap:6px 12px;flex-wrap:wrap;font-size:11px;color:var(--text2)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.ty{width:17px;height:17px;border-radius:5px;font-size:10px;font-weight:800;display:inline-grid;place-items:center;color:#fff;font-style:normal;flex:none}
.tyA{background:#3E9B63}.tyB{background:#5A7FB8}.tyC{background:#8B63B5}.tyD{background:#C27B2C}.tyE{background:#2C9BA8}
.bar{height:6px;border-radius:6px;background:var(--bg2);overflow:hidden;margin-top:6px;display:flex}
.bar i{display:block;height:100%}
.note{font-size:11px;color:var(--muted);line-height:1.45}
.stub{display:grid;place-items:center;text-align:center;color:var(--muted);min-height:220px;border:1.5px dashed var(--line);border-radius:16px;padding:30px;line-height:1.6}
.stub b{color:var(--ink);font-size:14px;display:block;margin-bottom:4px}
/* поля ввода */
.fi{width:100%;border:1px solid var(--line);border-radius:9px;padding:8px 11px;background:var(--paper);font-weight:600;font-size:13px;min-height:36px;outline:none}
.fi:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}
.fi::placeholder{color:var(--muted);font-weight:500}
select.fi{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 15px) 15px,calc(100% - 10px) 15px;background-size:5px 5px;background-repeat:no-repeat;padding-right:28px;cursor:pointer}
.lab{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:700;display:block;margin:10px 0 5px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.three{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}

/* ── расписание ── */
.sched-wrap{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 300px}
.sched{padding:10px 0 14px 22px;min-width:0;min-height:0;display:flex;flex-direction:column;gap:8px}
.scard{flex:1;min-height:0;background:var(--paper);border:1px solid var(--line);border-radius:14px;overflow:auto;box-shadow:0 1px 2px rgba(42,34,36,.04);position:relative}
.sgrid{display:grid;grid-template-columns:52px repeat(3,minmax(200px,1fr));min-width:680px;position:relative}
.colh{position:sticky;top:0;z-index:6;background:var(--paper);padding:10px 12px;border-bottom:1px solid var(--line);border-left:1px solid var(--line2);display:flex;gap:10px;align-items:center;height:56px;min-width:0}
.colh.tc{border-left:0;left:0;z-index:7}
.colh .ava{width:34px;height:34px;font-size:12px;background:var(--accent-bg);color:var(--accent-ink)}
.colh b{font-size:13px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.colh span{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.colh .cnt2{margin-left:auto;font-size:11px;color:var(--muted);white-space:nowrap;text-align:right}
.colh .cnt2 b{font-size:13px;color:var(--ink)}
.timecol{position:sticky;left:0;z-index:5;background:var(--paper);border-right:1px solid var(--line2);padding-top:6px}
.t{height:var(--row);font-size:10.5px;color:var(--muted);text-align:right;padding-right:7px;line-height:1;transform:translateY(-5px)}
.t.h{color:var(--text2);font-weight:600}
.colbody{position:relative;margin-top:6px}
.col{position:relative;border-left:1px solid var(--line2)}
.col .grid-bg{position:absolute;inset:6px 0 0 0;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--row)*4 - 1px),var(--line2) calc(var(--row)*4 - 1px),var(--line2) calc(var(--row)*4)),repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--row) - 1px),#F8F2EF calc(var(--row) - 1px),#F8F2EF var(--row))}
.col .off{position:absolute;left:0;right:0;background:repeating-linear-gradient(135deg,#FAF5F2 0 6px,#F1E9E5 6px 12px);display:grid;place-items:center;color:var(--muted);font-size:11px;font-weight:600}
.ap{position:absolute;left:5px;right:5px;border-radius:8px;padding:4px 8px 3px 11px;overflow:hidden;border:1px solid transparent;cursor:pointer;transition:box-shadow .15s;z-index:2;user-select:none}
.ap:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px}
.ap:hover{box-shadow:0 4px 14px rgba(42,34,36,.14)}
.ap .nm{font-weight:700;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:22px}
.ap .nm small{font-weight:500;color:var(--text2);font-size:11px}
.ap .ds{font-size:11px;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ap .tm{font-size:10.5px;color:var(--muted);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ap .ty{position:absolute;top:4px;right:6px}
.ap .stl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}
.ap.new{background:var(--st-new)}.ap.new:before{background:var(--st-new-b)}
.ap.conf{background:var(--st-conf)}.ap.conf:before{background:var(--st-conf-b)}.ap.conf .stl{color:var(--green)}
.ap.wait{background:var(--st-wait)}.ap.wait:before{background:var(--st-wait-b)}.ap.wait .stl{color:var(--amber)}
.ap.chair{background:var(--st-chair);border-color:#E9C3D6}.ap.chair:before{background:var(--st-chair-b)}.ap.chair .stl{color:var(--accent)}
.ap.done{background:var(--st-done)}.ap.done:before{background:var(--st-done-b)}.ap.done .nm,.ap.done .ds{color:#8E8486}
.ap.miss{background:repeating-linear-gradient(135deg,#FCE8E6 0 7px,#FFF4F2 7px 14px);border-color:#F3C9C3}.ap.miss:before{background:var(--st-miss-b)}.ap.miss .stl{color:#B9372A}.ap.miss .nm{text-decoration:line-through;color:#9C6A64}
.ap.svc{background:#4A3E41}.ap.svc:before{background:#2A2224}.ap.svc .nm{color:#fff}.ap.svc .ds{color:#CDBFC2}
.ap.cut{opacity:.45;outline:2px dashed var(--accent)}
.ap.sel{box-shadow:0 0 0 2px var(--accent),0 6px 18px rgba(42,34,36,.15)}
.ap.drag{z-index:20;box-shadow:0 12px 30px rgba(42,34,36,.25);opacity:.92}
.ghost{position:absolute;left:5px;right:5px;border:2px dashed var(--accent);border-radius:8px;background:rgba(246,227,236,.5);z-index:1;pointer-events:none}
.ghost.bad{border-color:var(--red);background:rgba(252,232,230,.6)}
.now{position:absolute;left:52px;right:0;height:0;border-top:2px solid var(--accent);z-index:4;pointer-events:none}
.now b{position:absolute;left:-50px;top:-9px;background:var(--accent);color:#fff;font-size:10px;font-weight:700;padding:2px 5px;border-radius:5px}
.now:after{content:"";position:absolute;left:-4px;top:-5px;width:8px;height:8px;border-radius:50%;background:var(--accent)}
.hovcard{position:fixed;z-index:50;width:272px;background:var(--paper);border-radius:14px;box-shadow:0 18px 50px rgba(42,34,36,.22),0 0 0 1px var(--line);padding:14px;pointer-events:none}
.hovcard .hd{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.hovcard .hd .ava{background:var(--accent-bg);color:var(--accent-ink)}
.hovcard b{font-size:13.5px}.hovcard small{display:block;color:var(--muted);font-size:11.5px}
.alert{display:flex;gap:6px;align-items:center;background:#FDECEA;color:var(--red);border-radius:8px;padding:6px 9px;font-size:11.5px;font-weight:700;margin-bottom:9px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;font-size:12px}
.kv span{color:var(--muted)}.kv b{font-size:12px;text-align:right}
.hint{font-size:11px;color:var(--muted);margin-top:10px;border-top:1px solid var(--line2);padding-top:8px}
.ctx{position:fixed;z-index:60;background:var(--paper);border-radius:12px;box-shadow:0 18px 50px rgba(42,34,36,.25),0 0 0 1px var(--line);padding:6px;min-width:240px}
.ctx div{padding:7px 10px;border-radius:8px;font-size:12.5px;font-weight:500;cursor:pointer;display:flex;gap:8px;align-items:center}
.ctx div:hover{background:var(--accent-bg);color:var(--accent-ink)}
.ctx hr{border:0;border-top:1px solid var(--line2);margin:4px 2px}
.ctx kbd{margin-left:auto;font:600 10px var(--f);color:var(--muted)}
.ctx i{width:9px;height:9px;border-radius:3px;display:inline-block}
.rp{border-left:1px solid var(--line);padding:12px 14px;display:flex;flex-direction:column;gap:12px;overflow-y:auto;min-height:0}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.stat b{font-size:22px;font-weight:700;letter-spacing:-.5px;display:block;line-height:1.1}
.stat span{font-size:11px;color:var(--muted)}
.stat.big{grid-column:1/-1;padding-top:8px;border-top:1px solid var(--line2)}
.stat.big b{font-size:16px;letter-spacing:0}
.fill{background:linear-gradient(160deg,#fff,#FBF0F5);border-color:#E9C3D6}
.fill p{font-size:12px;color:var(--text2);line-height:1.45;margin-bottom:10px}
.types{display:flex;gap:5px;flex-wrap:wrap}
.types span{display:inline-flex;gap:5px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:4px 7px;font-size:11.5px;font-weight:600;cursor:pointer}
.types span.on{border-color:var(--accent);background:#FFF8FB}
.found{border:1px solid var(--line);border-radius:10px;margin-top:4px;overflow:hidden;background:var(--paper);box-shadow:0 8px 20px rgba(42,34,36,.08)}
.found div{padding:7px 10px;font-size:12px;cursor:pointer;border-top:1px solid var(--line2)}
.found div:first-child{border-top:0}
.found div:hover{background:var(--accent-bg)}
.found div small{display:block;color:var(--muted);font-size:11px}
.chosen{display:flex;align-items:center;gap:10px;background:var(--accent-bg);border-radius:10px;padding:8px 10px}
.chosen .ava{width:30px;height:30px;font-size:11px;background:#fff;color:var(--accent-ink)}
.chosen b{font-size:12.5px;display:block}.chosen small{font-size:11px;color:var(--text2)}
.chosen .x{margin-left:auto;cursor:pointer;color:var(--muted);font-size:16px}
.err{background:#FDECEA;color:var(--red);border-radius:9px;padding:8px 10px;font-size:12px;font-weight:600;margin-top:10px}

/* ── карточка пациента ── */
.pat{padding:16px 22px;display:flex;flex-direction:column;gap:14px;min-height:100%}
.phead{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:14px 18px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.phead .ava{width:52px;height:52px;font-size:18px;background:linear-gradient(140deg,var(--accent-lt),var(--accent));color:#fff}
.phead .who{flex:1;min-width:300px}
.phead h2{font-size:20px;font-weight:700;letter-spacing:-.3px}
.phead .meta{font-size:12.5px;color:var(--text2);margin-top:3px;display:flex;gap:14px;flex-wrap:wrap}
.chips{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.chip{font-size:11.5px;font-weight:700;border-radius:20px;padding:4px 10px;display:inline-flex;gap:5px;align-items:center}
.chip.red{background:#FDECEA;color:var(--red)}.chip.pk{background:var(--accent-bg);color:var(--accent-ink)}.chip.ne{background:var(--bg2);color:var(--text2)}.chip.bl{background:#E6EEF8;color:#3D5E8E}
.kpis{display:flex;gap:22px}
.kpi b{display:block;font-size:16px;font-weight:700;white-space:nowrap}.kpi span{font-size:11px;color:var(--muted);display:block;white-space:nowrap}
.phead .acts{display:flex;gap:8px}
.tabs{display:flex;gap:0;border-bottom:1px solid var(--line);overflow-x:auto;flex:none;scrollbar-width:thin}
.tabs span{padding:9px 13px;font-weight:600;font-size:13px;color:var(--text2);cursor:pointer;border-bottom:2.5px solid transparent;margin-bottom:-1px;white-space:nowrap}
.tabs span.on{color:var(--accent);border-color:var(--accent)}
.tab{display:none}
.tab.on{display:block}
.row2{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:14px;align-items:start}
.chart-top{display:flex;align-items:center;gap:12px;margin-bottom:10px;flex-wrap:wrap}
.chart-top h3{font-size:15px;font-weight:700}
.jaws{width:100%;max-width:1120px;margin:0 auto;display:block}
.jaws .th{cursor:pointer}
.jaws .th:hover .hl{fill:#FBF0F5}
.jaws .th.sel .hl{fill:var(--accent-bg);stroke:var(--accent);stroke-width:2}
.jaws text{font-family:var(--f);font-size:12px;font-weight:700;fill:var(--muted)}
.jaws .th.sel text{fill:var(--accent)}
.jaws .lbl{font-size:10px;letter-spacing:1px;font-weight:600}
.jaws .tag{font-size:9.5px;font-weight:800;fill:#fff}
.jaws .faded{opacity:.28}
.leg2{display:flex;gap:6px 14px;flex-wrap:wrap;font-size:11.5px;color:var(--text2);margin-top:12px;padding-top:12px;border-top:1px solid var(--line2)}
.leg2 i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:6px;vertical-align:-1px;border:1px solid rgba(0,0,0,.08)}
.side2{display:flex;flex-direction:column;gap:12px}
.tp-h{display:flex;align-items:baseline;gap:8px}
.tp-h b{font-size:26px;font-weight:700;color:var(--accent)}
.tp-h span{font-size:12.5px;color:var(--text2)}
.diag{background:var(--st-wait);border-radius:10px;padding:9px 11px;font-size:12px;margin-top:8px}
.diag.ok{background:var(--st-conf)}.diag.pl{background:#E6EEF8}
.diag b{display:block;font-size:12.5px}.diag span{color:#7A5E28;font-size:11.5px}
.diag.ok span{color:#3F6B4F}.diag.pl span{color:#3D5E8E}
.hist{font-size:12px;color:var(--text2);margin-top:9px;line-height:1.6}
.hist b{color:var(--ink)}
.qgrp{font-size:11px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);font-weight:700;margin:10px 0 6px}
.qb{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.q{border:1px solid var(--line);border-radius:10px;padding:7px 9px;background:var(--paper);cursor:pointer}
.q b{display:block;font-size:12px;font-weight:600}.q span{font-size:11px;color:var(--muted)}
.q:hover{border-color:var(--accent);background:#FFF8FB}
.q.added{border-color:#3E9B63;background:var(--st-conf)}.q.added b{color:var(--green)}
.planstrip{display:flex;align-items:center;gap:14px;background:var(--side);color:#fff;border-radius:14px;padding:12px 16px}
.planstrip b{font-size:13px}.planstrip span{font-size:11.5px;color:#CDBFC2}
.planstrip .bar{flex:1;height:8px;background:#4A3E41;margin:0}
.planstrip .btn{background:#fff;border:0}
.variants{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.var{flex:1;min-width:200px;border:1.5px solid var(--line);border-radius:12px;padding:10px 13px;cursor:pointer}
.var.on{border-color:var(--accent);background:#FFF8FB}
.var small{font-size:11px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);font-weight:700}
.var b{display:block;font-size:14px;margin-top:2px}
.var .pr{font-size:19px;font-weight:700;margin-top:3px}
.var.on .pr{color:var(--accent)}
.agree{font-size:11.5px;color:var(--green);font-weight:700;margin-top:4px}
.ptools{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.stage td{background:var(--bg);font-weight:700;font-size:12px;color:var(--text2);padding:7px 8px}
.stage td span{font-weight:500;color:var(--muted);margin-left:8px}
tr.newrow td{background:#F3FAF5}
.sum{display:flex;flex-direction:column;gap:12px}
.sum .total small{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.7px;font-weight:700}
.sum .total b{display:block;font-size:30px;font-weight:700;letter-spacing:-1px}
.flow{display:flex;flex-direction:column;gap:9px}
.flow .rw{display:flex;justify-content:space-between;gap:10px;font-size:12.5px}
.flow .rw span{display:flex;align-items:center;gap:8px;color:var(--text2)}
.flow .rw i{width:10px;height:10px;border-radius:3px;display:inline-block;flex:none}
.flow .rw b{font-size:13px;white-space:nowrap}
.bigbar{height:10px;border-radius:8px;background:var(--bg2);display:flex;overflow:hidden}
.bigbar i{display:block;height:100%}
.due{background:var(--accent-bg);border-radius:12px;padding:11px 13px}
.due small{font-size:11px;color:var(--accent-ink);font-weight:700}
.due b{display:block;font-size:22px;color:var(--accent-ink)}
.form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 18px}
.form .full{grid-column:1/-1}
.hx{display:grid;grid-template-columns:270px minmax(0,1fr);gap:14px;align-items:start}
.visits{display:flex;flex-direction:column;gap:6px}
.vi{border-radius:11px;padding:9px 11px;border:1px solid transparent;cursor:pointer}
.vi:hover{background:var(--bg)}
.vi b{font-size:12.5px;display:block}.vi span{font-size:11.5px;color:var(--muted)}
.vi .dt{font-size:11px;font-weight:700;color:var(--text2)}
.vi.on{background:var(--accent-bg);border-color:#E9C3D6}.vi.on .dt{color:var(--accent)}
.vi.fut{border:1.5px dashed var(--line)}
.proto-h{display:flex;align-items:center;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--line2);flex-wrap:wrap}
.proto-h h3{font-size:16px}.proto-h span{font-size:12px;color:var(--muted)}
.tpl{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.tpl small{font-size:11px;color:var(--muted);font-weight:600;margin-right:2px}
.tpl i{font-style:normal;font-size:11.5px;font-weight:600;border:1px solid var(--line);border-radius:20px;padding:4px 10px;color:var(--text2);cursor:pointer}
.tpl i:hover{border-color:var(--accent);color:var(--accent)}
.fld{display:grid;grid-template-columns:150px minmax(0,1fr);gap:12px;padding:9px 0;border-bottom:1px dashed var(--line2);font-size:13px;line-height:1.5}
.fld>span{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:700;padding-top:2px}
.fld .empty{color:var(--muted);font-style:italic}
.dx{display:inline-flex;gap:6px;align-items:center;background:var(--st-wait);border-radius:8px;padding:2px 9px;font-weight:600;font-size:12.5px}
.sign{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--text2);padding-top:12px;margin-top:6px;flex-wrap:wrap}
.sign b{color:var(--green)}
.perio{border-collapse:separate;border-spacing:3px}
.perio td,.perio th{border:0;padding:0;text-align:center;font-size:11px}
.perio th{color:var(--muted);font-weight:700;padding:2px 0}
.perio td{width:40px;height:26px;border-radius:6px;background:var(--bg);font-weight:700}
.perio td.p4{background:var(--st-wait);color:var(--amber)}.perio td.p6{background:var(--st-miss);color:var(--red)}
.perio td.lbl{background:none;text-align:right;color:var(--muted);font-weight:600;width:auto;padding-right:6px;white-space:nowrap}
.perio td.mis{background:repeating-linear-gradient(135deg,#F5EEEA 0 4px,#fff 4px 8px);color:transparent}
.bleed{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--red);margin-left:2px;vertical-align:2px}
.xgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.xr{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--paper);cursor:pointer}
.xr:hover{border-color:var(--accent)}
.xr svg{display:block;width:100%;height:120px;background:#1E1A1C}
.xr div{padding:8px 10px}.xr b{font-size:12px;display:block}.xr span{font-size:11px;color:var(--muted)}
.xdate{font-size:12px;font-weight:700;color:var(--text2);margin:14px 0 8px}
.xdate:first-child{margin-top:0}
.docrow{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--line2)}
.docrow:first-child{border-top:0}
.docrow .di{width:34px;height:40px;border-radius:6px;background:var(--bg2);display:grid;place-items:center;font-size:10px;font-weight:800;color:var(--muted);flex:none}
.docrow b{font-size:13px;display:block}.docrow span{font-size:11.5px;color:var(--muted)}
.docrow .acts{margin-left:auto;display:flex;gap:6px;align-items:center}
.msgs{display:flex;flex-direction:column;gap:8px;max-width:720px}
.msg{max-width:72%;padding:9px 12px;border-radius:14px;font-size:12.5px;line-height:1.45}
.msg small{display:block;font-size:11px;color:var(--muted);margin-top:3px}
.msg.in{background:var(--bg2);align-self:flex-start;border-bottom-left-radius:4px}
.msg.out{background:var(--accent-bg);align-self:flex-end;border-bottom-right-radius:4px}
.msg.sys{align-self:center;background:none;color:var(--muted);font-size:11px;padding:2px}

/* ── графики врачей ── */
.work{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 310px}
.wk{padding:16px 22px;display:flex;flex-direction:column;gap:12px;min-width:0;overflow:auto}
.wtab{background:var(--paper);border:1px solid var(--line);border-radius:16px;overflow-x:auto}
.wtab table{table-layout:fixed;min-width:760px}
.wtab td,.wtab th{padding:10px 6px}
.wtab th{background:var(--bg)}
.wtab col.wd{width:auto}.wtab col.we{width:58px}.wtab col.dc{width:200px}
.we{background:repeating-linear-gradient(135deg,#FAF5F2 0 6px,#F5EEEA 6px 12px)!important;cursor:pointer}
.wdoc{display:flex;gap:10px;align-items:center;min-width:0}
.wdoc .ava{width:32px;height:32px;font-size:11px;background:var(--accent-bg);color:var(--accent-ink)}
.wdoc>div{overflow:hidden}.wdoc b{font-size:13px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wdoc span{font-size:11px;color:var(--muted);white-space:nowrap;display:block;overflow:hidden;text-overflow:ellipsis}
.sh{display:block;white-space:nowrap;border-radius:9px;padding:6px 7px;background:var(--st-conf);font-weight:700;font-size:12px;color:var(--green);cursor:pointer;border:2px solid transparent;overflow:hidden}
.sh small{display:block;font-weight:500;font-size:11px;color:#4E7A5E;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sh.ch{background:var(--st-wait);color:var(--amber)}.sh.ch small{color:#7A5E28}
.sh.off{background:repeating-linear-gradient(135deg,#FCE8E6 0 6px,#FFF4F2 6px 12px);color:#B9372A}.sh.off small{color:#B9372A}
.sh.sel{border-color:var(--accent)}
.ed{border-left:1px solid var(--line);padding:16px;overflow-y:auto}
.warn{background:#FFF1D6;border-radius:12px;padding:11px 13px;font-size:12px;color:#6E4C0E;line-height:1.45}

/* ── сегодня ── */
.kanban{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:12px;min-width:920px}
.kcol{background:var(--bg2);border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:8px}
.kcol h4{font-size:12px;text-transform:uppercase;letter-spacing:.7px;font-weight:700;color:var(--text2);display:flex;gap:8px;align-items:center;padding:4px 4px 2px}
.kcol h4 i{width:9px;height:9px;border-radius:3px}
.kcol h4 em{font-style:normal;margin-left:auto;background:var(--paper);border-radius:20px;padding:1px 8px;font-size:11px}
.kc{background:var(--paper);border-radius:11px;padding:10px 12px;box-shadow:0 1px 2px rgba(42,34,36,.06)}
.kc b{font-size:13px;display:block}.kc span{font-size:11.5px;color:var(--muted);display:block}
.kc .tm{font-size:11px;font-weight:700;color:var(--text2)}
.kc .btn{margin-top:8px}

/* ── модули ── */
.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.tile{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.tile span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;font-weight:700}
.tile b{display:block;font-size:24px;font-weight:700;letter-spacing:-.5px;margin-top:4px}
.tile small{font-size:11.5px;color:var(--muted)}
.grid2{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:14px;margin-top:14px;align-items:start}
.low td{background:#FFF7F5}
.rlist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.rep{display:flex;gap:12px;align-items:flex-start;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer}
.rep:hover{border-color:var(--accent)}
.rep i{width:10px;height:10px;border-radius:50%;margin-top:4px;flex:none}
.rep b{font-size:13px;display:block}.rep span{font-size:11.5px;color:var(--muted)}
.bars{display:flex;align-items:flex-end;gap:10px;height:150px;padding-top:10px}
.bars div{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:11px;color:var(--muted);height:100%;justify-content:flex-end}
.bars div i{width:100%;border-radius:6px 6px 0 0;background:var(--accent-lt);display:block}
.ch-ico{display:inline-flex;gap:4px;align-items:center;font-size:11px;font-weight:700;border-radius:20px;padding:3px 9px}
.tg{background:#E3F0FA;color:#22719E}.wa{background:#E3F4E8;color:#2A7D45}.mx{background:#EDE7FA;color:#5B3FA6}.sms{background:var(--bg2);color:var(--text2)}
.tplcard{border:1px solid var(--line);border-radius:12px;padding:11px 13px;margin-top:8px;font-size:12px;line-height:1.5;color:var(--text2)}
.tplcard b{display:block;color:var(--ink);margin-bottom:3px}

/* ── настройки ── */
.set{display:grid;grid-template-columns:220px minmax(0,1fr);gap:14px;align-items:start}
.setnav{display:flex;flex-direction:column;gap:2px}
.setnav span{padding:9px 12px;border-radius:10px;font-weight:600;font-size:13px;color:var(--text2);cursor:pointer}
.setnav span.on{background:var(--paper);color:var(--accent);box-shadow:0 0 0 1px var(--line)}
.mod{display:flex;gap:14px;align-items:center;padding:14px 4px;border-top:1px solid var(--line2)}
.mod:first-of-type{border-top:0}
.mod .mi{width:38px;height:38px;border-radius:11px;background:var(--bg2);display:grid;place-items:center;flex:none;color:var(--text2)}
.mod .mi svg{width:19px;height:19px}
.mod.on .mi{background:var(--accent-bg);color:var(--accent)}
.mod .mt{flex:1;min-width:0}
.mod .mt b{font-size:13.5px;display:block}
.mod .mt span{font-size:12px;color:var(--muted);line-height:1.45;display:block}
.mod .mt em{font-style:normal;font-size:11px;color:var(--amber);font-weight:600;display:block;margin-top:2px}
.sw{width:42px;height:24px;border-radius:20px;background:#D9CCC8;position:relative;cursor:pointer;flex:none;transition:background .15s}
.sw:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:left .15s}
.mod.on .sw{background:var(--accent)}
.mod.on .sw:after{left:21px}
.mod.dis{opacity:.6}.mod.dis .sw{cursor:not-allowed}
.core{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.swatch{display:inline-block;width:14px;height:14px;border-radius:4px;vertical-align:-2px;margin-right:6px}
.ok-line{display:flex;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line2);font-size:12.5px}
.ok-line:first-of-type{border-top:0}
.ok-line i{width:22px;height:22px;border-radius:50%;background:var(--st-conf);color:var(--green);display:grid;place-items:center;font-style:normal;font-weight:800;flex:none}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--side);color:#fff;padding:10px 16px;border-radius:12px;font-size:12.5px;font-weight:600;box-shadow:0 10px 30px rgba(0,0,0,.25);z-index:90;opacity:0;transition:opacity .2s;pointer-events:none;max-width:70vw;text-align:center;line-height:1.4}
.toast.on{opacity:1}

/* ноутбуки 1280–1440 */
@media (max-width:1440px){
  .sched-wrap{grid-template-columns:minmax(0,1fr) 270px}
  .row2{grid-template-columns:minmax(0,1fr) 300px}
  .tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
  .phead .acts .btn:not(.pri){display:none}
  .tabs span{padding:9px 9px;font-size:12.5px}
  .top .wday{display:none}
  .top{gap:10px}
  .work{grid-template-columns:minmax(0,1fr) 280px}
  .wtab col.dc{width:170px}
  .grid2{grid-template-columns:minmax(0,1fr) 290px}
  .sh{font-size:11.5px}
  .ed .seg span{padding:6px 6px}
}
@media (max-width:1300px){ .search kbd{display:none} .top .btn .lbl{display:none} }
@media (max-height:780px){ :root{--row:15px} }

/* ═══════ рабочая версия: дополнения к макету ═══════ */
.login{min-height:100vh;display:grid;place-items:center;background:var(--bg)}
.login-card{width:min(380px,92vw);background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:28px 26px;box-shadow:0 20px 60px rgba(42,34,36,.08)}
.login-card .logo{padding:0 0 18px}
.login-card .logo-name{color:var(--ink)}
.login-card .logo-sub{color:var(--muted)}
.login-card h2{font-size:17px;margin-bottom:4px}
.login-card p{font-size:12px;color:var(--muted);margin-bottom:12px}
textarea.fi{min-height:64px;resize:vertical;font-weight:500;line-height:1.5}
.fi[readonly]{background:var(--bg)}
.plist tr{cursor:pointer}
.plist tr:hover td{background:#FFF8FB}
.empty{padding:28px;text-align:center;color:var(--muted);font-size:12.5px}
.stbtns{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px}
.stbtns span{font-size:11.5px;font-weight:600;border:1px solid var(--line);border-radius:8px;padding:4px 8px;cursor:pointer;display:inline-flex;gap:6px;align-items:center}
.stbtns span i{width:10px;height:10px;border-radius:3px;display:inline-block;border:1px solid rgba(0,0,0,.1)}
.stbtns span.on{border-color:var(--accent);background:#FFF8FB;color:var(--accent-ink)}
.perio-in{width:30px;height:24px;border:1px solid var(--line);border-radius:6px;text-align:center;font:700 11.5px var(--f);background:var(--bg)}
.perio-in.p4{background:var(--st-wait);color:var(--amber)}.perio-in.p6{background:var(--st-miss);color:var(--red)}
.modstub{max-width:620px;margin:30px auto;text-align:center;color:var(--text2);line-height:1.6}
.modstub b{display:block;font-size:17px;color:var(--ink);margin-bottom:8px}
.badge-demo{margin:-12px 8px 14px;font-size:10.5px;color:#E7C9D7;background:#3A2F32;border-radius:8px;padding:6px 9px;line-height:1.35}
.closed-note{font-size:11.5px;color:var(--muted);margin-top:6px}
.inline-err{color:var(--red);font-size:12px;font-weight:600;margin-top:8px}
.rowacts{display:flex;gap:6px;justify-content:flex-end}
.sel-st{border:1px solid var(--line);border-radius:7px;padding:3px 6px;font:600 11px var(--f);background:var(--paper)}
.xr img{display:block;width:100%;height:120px;object-fit:cover;background:#1E1A1C}
.tag-site{font-size:10px;font-weight:700;background:#E3F0FA;color:#22719E;border-radius:10px;padding:1px 6px;margin-left:4px}
#print{display:none}
@media print{
  body{background:#fff}
  .vp,.app,.hovcard,.ctx,.toast{display:none!important}
  #print{display:block;font:12pt/1.45 'Montserrat',sans-serif;color:#000;padding:10mm}
  #print h1{font-size:16pt;margin-bottom:4mm}#print h2{font-size:12pt;margin:6mm 0 2mm}
  #print table{width:100%;border-collapse:collapse}#print td,#print th{border:1px solid #999;padding:2mm;font-size:10pt;text-align:left}
  #print .small{font-size:9pt;color:#444}
}

.tabs{overflow-y:hidden}
td.r{white-space:nowrap}
