:root{color-scheme:light dark}
:root{--bg:#F6F7F9;--surface:#fff;--surface-2:#F0F2F5;--line:#E3E6EB;--text:#1B2230;--text-2:#4A5466;--text-3:#646C7B;
  --accent:#2C7AA3;--bad:#C2413A;--good:#277A4C;--warn:#93611A;--field:#8A93A1;
  --c1:#3C91BD;--c2:#DE653F;--c3:#5653A3;--c4:#CF985A;--c5:#A0456C;--hour:56px}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#12161D;--surface:#1A2029;--surface-2:#222A35;--line:#2E3744;--text:#E8ECF2;--text-2:#B4BCC9;--text-3:#8590A0;
  --c1:#3497CC;--c2:#E0693F;--c3:#8C88D9;--c4:#C08638;--c5:#C96B95}}
:root[data-theme="dark"]{--bg:#12161D;--surface:#1A2029;--surface-2:#222A35;--line:#2E3744;--text:#E8ECF2;--text-2:#B4BCC9;--text-3:#8590A0;
  --c1:#3497CC;--c2:#E0693F;--c3:#8C88D9;--c4:#C08638;--c5:#C96B95}
*{box-sizing:border-box}
body{margin:0;font:13px/1.4 Montserrat,system-ui,sans-serif;background:var(--bg);color:var(--text)}
button,select,input{font:inherit;color:inherit}
.wrap{max-width:1400px;margin:0 auto;padding:16px}
.note-top{background:var(--surface);border:1px dashed var(--line);border-radius:10px;padding:10px 14px;color:var(--text-2);margin-bottom:12px}
h1{font-size:20px;margin:0}
.hd{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.btn{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:6px 12px;cursor:pointer}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.seg button:first-child{border-radius:7px 0 0 7px}.seg button:last-child{border-radius:0 7px 7px 0}
.seg button{border:0;background:none;padding:6px 12px;cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--accent);color:#fff}
select{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:6px 8px}
.strip{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.card h3{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3)}
.sub-item{display:flex;justify-content:space-between;gap:8px;padding:5px 0;border-bottom:1px solid var(--line)}
.sub-item:last-child{border:0}
.tag{display:inline-block;padding:1px 8px;border-radius:99px;background:var(--surface-2);font-size:12px;margin:2px 4px 2px 0}
.legend{display:flex;gap:14px;flex-wrap:wrap;color:var(--text-2);font-size:12px;margin:8px 0}
.legend i{display:inline-block;width:22px;height:12px;border-radius:3px;vertical-align:-1px;margin-right:4px}
.grid{background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:auto}
.gt{display:grid;min-width:720px}
.gh{position:sticky;top:0;background:var(--surface);z-index:2;border-bottom:1px solid var(--line);padding:8px;font-weight:600;text-align:center}
.gh small{display:block;font-weight:400;color:var(--text-3)}
.times{border-right:1px solid var(--line)}
.times div{height:var(--hour);font-size:11px;color:var(--text-3);text-align:right;padding:2px 6px 0 0}
.col{position:relative;border-right:1px solid var(--line);background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--hour) - 1px),var(--line) calc(var(--hour) - 1px),var(--line) var(--hour))}
.col:last-child{border-right:0}
.col.today{background-color:color-mix(in srgb,var(--accent) 5%,transparent)}
.ev{position:absolute;left:3px;right:3px;border-radius:6px;padding:3px 6px;font-size:11.5px;line-height:1.25;overflow:hidden;cursor:pointer;
  border-left:4px solid var(--c);background:color-mix(in srgb,var(--c) 16%,var(--surface));color:var(--text)}
.ev:hover,.ev:focus-visible{outline:2px solid var(--c);z-index:3}
.ev b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev .m{color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev.oneoff{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--c) 22%,var(--surface)) 0 6px,color-mix(in srgb,var(--c) 10%,var(--surface)) 6px 12px)}
.ev.cancelled{opacity:1;text-decoration:line-through;border-left-style:dotted;background:var(--surface-2);color:var(--text-2)}
.ev.free{background:none;border:1.5px dashed var(--text-3);color:var(--text-3);text-decoration:none;opacity:1}
.ev.sub{box-shadow:inset 0 0 0 2px var(--warn)}
.ev .ic{float:right;font-size:11px;margin-left:4px}
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.25);opacity:0;pointer-events:none;transition:.2s}
.scrim.on{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;right:0;height:100%;width:min(420px,100%);background:var(--surface);border-left:1px solid var(--line);
  transform:translateX(100%);transition:transform .2s;z-index:10;display:flex;flex-direction:column}
.drawer.on{transform:none}
.drawer header{display:flex;justify-content:space-between;gap:8px;padding:14px 16px;border-bottom:1px solid var(--line)}
.drawer h2{margin:0;font-size:16px}
.drawer .ds{color:var(--text-3);font-size:12px}
.db{padding:14px 16px;overflow:auto;display:flex;flex-direction:column;gap:14px}
.db h4{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3)}
.x{border:0;background:var(--surface-2);border-radius:8px;width:44px;height:44px;flex-shrink:0;cursor:pointer;font-size:16px}
.st{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}
.st .left{min-width:0}.st small{color:var(--text-3)}
.marks{display:flex;gap:4px;flex-shrink:0}
.marks button{border:1px solid var(--field);background:var(--surface);border-radius:7px;padding:4px 7px;cursor:pointer;font-size:12px}
.marks button[aria-pressed="true"]{background:var(--good);border-color:var(--good);color:#fff}
.marks button.exc[aria-pressed="true"]{background:var(--warn);border-color:var(--warn)}
.marks button.abs[aria-pressed="true"]{background:var(--bad);border-color:var(--bad)}
.fld{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--text-2)}
.fld input,.fld select{border:1px solid var(--field);border-radius:8px;padding:7px 8px;background:var(--surface)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.hint{font-size:12px;color:var(--text-3)}
.err{color:var(--bad);font-size:12px;min-height:16px}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:var(--text);color:var(--bg);padding:9px 16px;border-radius:9px;opacity:0;transition:.2s;pointer-events:none;z-index:20}
.toast.on{opacity:1}
.mlist{display:none}
@media (max-width:760px){
  .wrap{padding:12px 16px}.strip{grid-template-columns:1fr}
  .grid.desk{display:none}.mlist{display:flex;flex-direction:column;gap:8px}
  .mitem{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--c);border-radius:10px;padding:10px 12px;cursor:pointer}
  .mitem.cancelled{opacity:.5;text-decoration:line-through}
  .mitem .t{font-weight:600}.mitem .m{color:var(--text-2);font-size:12px}
}
/* поверх макета: верхняя полоса, формы новой записи, загрузка */
.top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--line)}
.top b{font-size:15px}.top a{color:var(--text-2);text-decoration:none;margin-left:12px}
.loading{opacity:.55;pointer-events:none}
.pick{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:8px;max-height:180px;overflow:auto}
.pick button{border:0;border-bottom:1px solid var(--line);background:var(--surface);text-align:left;padding:6px 8px;cursor:pointer}
.pick button:last-child{border-bottom:0}
.chip{display:inline-flex;gap:6px;align-items:center;padding:2px 4px 2px 10px;border-radius:99px;background:var(--surface-2);margin:2px 4px 2px 0}
.chip button{border:0;background:none;cursor:pointer;color:var(--text-3)}
.empty{padding:24px;text-align:center;color:var(--text-3)}

[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
button:disabled{opacity:.6;cursor:progress}
.btn.danger{color:var(--bad-text,var(--bad));border-color:var(--bad-text,var(--bad))}
.bad,.err{color:var(--bad-text,var(--bad))}.warn{color:var(--warn-text,var(--warn))}
.warnbox{border-color:var(--warn)}
.confirm{margin:8px 0;padding:10px 12px;border:1px solid var(--accent);border-radius:10px;background:color-mix(in srgb,var(--accent) 8%,var(--surface))}
.chk{display:flex;gap:6px;align-items:flex-start;margin-top:8px}
.flags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.flag{font-size:12px;padding:1px 8px;border-radius:99px;background:var(--surface-2);color:var(--text-2)}
.mitem.sub{box-shadow:inset 0 0 0 2px var(--warn)}
#loadErr{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0}
@media (max-width:760px){
  .marks{gap:8px}.marks button{min-height:44px;padding:10px 12px}
  .st{flex-wrap:wrap}.st .marks{width:100%;justify-content:flex-start}
  .btn{min-height:40px}
  #bywrap{display:none!important}
}
@media (prefers-reduced-motion:reduce){.drawer,.scrim,.toast{transition:none}}
.linkbtn{border:0;background:none;padding:6px 0;min-height:24px;color:var(--text-2);text-decoration:underline;cursor:pointer;font-size:12px;display:block}
.warnline:not(:empty){margin:6px 0;padding:8px 12px;border:1px solid var(--warn);border-radius:10px;color:var(--warn-text,var(--warn))}
#dt:focus{outline:none}
/* тёмная тема: тексты предупреждений и ошибок светлее заливок (AA на тёмном фоне) */
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--warn-text:#E0A84E;--bad-text:#F07A72;--field:#8A93A1}}
:root[data-theme="dark"]{--warn-text:#E0A84E;--bad-text:#F07A72;--field:#8A93A1}
@media (max-width:760px){.linkbtn{min-height:44px}}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
