:root{
  --bg:#f4f6f9; --card:#fff; --ink:#1c2430; --muted:#7a8698;
  --line:#e3e8ef; --accent:#1857b8; --ok:#17914f; --warn:#c8890a; --red:#c62f3a;
  --radius:14px;
}
*{box-sizing:border-box}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font:15px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  padding-bottom:40px;
}
a{color:var(--accent); text-decoration:none}
h1{font-size:20px; margin:0}
h3{font-size:15px; margin:18px 0 8px; color:var(--muted); text-transform:uppercase; letter-spacing:.4px}
.muted{color:var(--muted)}
.small{font-size:12px}

.topbar{
  display:flex; align-items:center; gap:16px; flex-wrap:wrap;
  padding:12px 16px; background:#fff; border-bottom:1px solid var(--line);
  position:sticky; top:0; z-index:20;
}
.brand{font-weight:700; font-size:17px}
.brand span{font-weight:400; color:var(--muted); margin-left:6px; font-size:13px}
.topbar nav{display:flex; gap:14px; flex:1}
.topbar nav a{color:var(--ink); font-size:14px}
.topbar nav a:hover{color:var(--accent)}
.userbox{display:flex; gap:10px; align-items:center}

main{max-width:1180px; margin:0 auto; padding:16px}

.stats{display:grid; grid-template-columns:repeat(auto-fit,minmax(110px,1fr)); gap:10px; margin-bottom:14px}
.stat{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:10px 12px}
.stat b{display:block; font-size:22px}
.stat span{color:var(--muted); font-size:12px}
.stat.red b{color:var(--red)}
.stat.warn b{color:var(--warn)}

.filters{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px; align-items:center}
.filters input[type=text],.filters input:not([type]),.filters select{
  padding:9px 11px; border:1px solid var(--line); border-radius:10px; background:#fff; font-size:14px;
}
.filters input:not([type]){flex:1; min-width:160px}
.chk{display:flex; align-items:center; gap:6px; font-size:13px; color:var(--muted)}

.btn{
  display:inline-block; padding:9px 14px; border:1px solid var(--line); background:#fff;
  border-radius:10px; cursor:pointer; font-size:14px; color:var(--ink); text-align:center;
}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--accent); border-color:var(--accent); color:#fff}
.btn.small{padding:6px 10px; font-size:13px}

.card{background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:14px; margin-bottom:12px}

.grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(330px,1fr)); gap:12px}
.booking{border-left:4px solid var(--line)}
.booking.warn{border-left-color:var(--warn)}
.booking.red{border-left-color:var(--red)}

.bhead{display:flex; gap:8px; align-items:baseline; flex-wrap:wrap; margin-bottom:4px}
.guest{color:var(--muted); font-size:13px}
.dates{font-size:13px; color:var(--muted); margin-bottom:10px}

.tag{font-size:11px; padding:3px 8px; border-radius:20px; background:#eef2f8; color:var(--muted)}
.tag.warn{background:#fdf3dd; color:var(--warn)}
.tag.red{background:#fde8ea; color:var(--red)}
.tag.sched{background:#e6f0fd; color:var(--accent)}

.toggles{display:grid; gap:6px; margin-bottom:10px}
.tg{display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:13px}
.tg span:first-child{min-width:104px; color:var(--muted)}
.tg em{font-style:normal; color:var(--muted); font-size:11px}
.pill{
  border:1px solid var(--line); background:#f7f9fc; border-radius:20px;
  padding:5px 12px; font-size:12px; cursor:pointer; color:var(--muted);
}
.pill.on{background:#e5f6ec; border-color:#bfe6cf; color:var(--ok)}
.pill.sched{background:#e6f0fd; border-color:#c3d9f7; color:var(--accent)}

.page-head{display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin-bottom:12px}
.two-col{display:grid; grid-template-columns:1fr 1fr; gap:12px}
@media(max-width:860px){ .two-col{grid-template-columns:1fr} .grid{grid-template-columns:1fr} }

table.kv{width:100%; border-collapse:collapse; font-size:14px}
table.kv td{padding:6px 0; border-bottom:1px solid var(--line); vertical-align:top}
table.kv td:first-child{color:var(--muted); width:110px}

.actions{display:flex; gap:8px; flex-wrap:wrap}
textarea{
  width:100%; padding:10px; border:1px solid var(--line); border-radius:10px;
  font:inherit; resize:vertical; margin-bottom:8px;
}

.chat{max-height:420px; overflow-y:auto; display:flex; flex-direction:column; gap:8px}
.msg{background:#f7f9fc; border-radius:12px; padding:8px 10px; font-size:13px}
.msg.бот{background:#e9f0fc}
.msg .who{font-size:11px; color:var(--muted); text-transform:uppercase; letter-spacing:.4px}
.msg .txt{white-space:pre-wrap; margin:2px 0}
.msg .time{font-size:11px; color:var(--muted)}

.logs{max-height:280px; overflow-y:auto; font-size:12px}
.logrow{padding:5px 0; border-bottom:1px solid var(--line)}
.logrow em{color:var(--muted); font-style:normal; display:block}

.feedrow{display:flex; gap:10px; padding:6px 0; border-bottom:1px solid var(--line); font-size:13px; flex-wrap:wrap}
.feedrow.guard b{color:var(--warn)}

.uploadrow{display:flex; gap:12px; justify-content:space-between; align-items:center; flex-wrap:wrap;
  padding:10px 0; border-bottom:1px solid var(--line)}
.inline{display:flex; gap:8px; align-items:center}
.inline select{padding:8px; border:1px solid var(--line); border-radius:10px}

.banner{padding:10px 12px; border-radius:10px; margin-bottom:10px; font-size:14px}
.banner.red{background:#fde8ea; color:var(--red)}

.login-wrap{max-width:340px; margin:60px auto}
.login-wrap h1{margin-bottom:2px}
.login-wrap label{display:block; margin-bottom:10px; font-size:13px; color:var(--muted)}
.login-wrap input{width:100%; padding:10px; border:1px solid var(--line); border-radius:10px;
  font:inherit; margin-top:4px}
.login-wrap button{width:100%}

.empty{text-align:center; color:var(--muted); padding:40px 0}

.toast{
  position:fixed; bottom:20px; left:50%; transform:translateX(-50%) translateY(80px);
  background:#1c2430; color:#fff; padding:11px 18px; border-radius:12px; font-size:14px;
  opacity:0; transition:.25s; pointer-events:none; z-index:50; max-width:90vw;
}
.toast.show{opacity:1; transform:translateX(-50%) translateY(0)}
.toast.err{background:var(--red)}
.toast.ok{background:var(--ok)}
