:root{
  --brown:#5b3a29; --brown-d:#432a1d; --wood:#efe4d8; --wood-l:#f7f1ea;
  --line:#d9c6b3; --ink:#1f1a15; --grey:#6b5f52; --green:#2e6b3e; --red:#a5402f;
  --bg:#f3ece4;
}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,Segoe UI,Roboto,Inter,Arial,sans-serif;
  color:var(--ink);background:var(--bg);font-size:16px;line-height:1.5}
a{color:var(--brown);text-decoration:none}

/* ---- Логин ---- */
.login-body{min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#5b3a29,#835b41)}
.login-card{background:#fff;padding:32px 28px;border-radius:16px;width:min(92vw,380px);
  box-shadow:0 18px 50px rgba(0,0,0,.28);display:flex;flex-direction:column;gap:14px}
.login-brand{font-size:26px;font-weight:800;color:var(--brown)}
.login-sub{color:var(--grey);margin-top:-8px;font-size:14px}
.login-card label{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--grey)}
.login-card input{padding:12px;border:1.5px solid var(--line);border-radius:10px;font-size:16px}
.login-card input:focus{outline:none;border-color:var(--brown)}
.login-card button{margin-top:6px;padding:13px;border:0;border-radius:10px;background:var(--brown);
  color:#fff;font-size:16px;font-weight:700;cursor:pointer}
.login-card button:hover{background:var(--brown-d)}
.alert{background:#fbe9e6;color:var(--red);border:1px solid #e6b6ad;padding:10px 12px;border-radius:9px;font-size:14px}

/* ---- Раскладка ---- */
.layout{display:flex;min-height:100vh}
.sidebar{width:248px;background:var(--brown);color:#f4e9dd;display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh}
.brand{padding:20px 18px;font-weight:800;font-size:19px;border-bottom:1px solid rgba(255,255,255,.14)}
.brand span{display:block;font-size:12px;font-weight:600;opacity:.7;letter-spacing:2px}
.sidebar nav{display:flex;flex-direction:column;padding:8px;gap:2px;overflow:auto;flex:1}
.sidebar nav a{color:#eaddce;padding:11px 12px;border-radius:9px;font-size:15px}
.sidebar nav a:hover{background:rgba(255,255,255,.10)}
.sidebar nav a.on{background:#fff;color:var(--brown);font-weight:700}
.userbox{padding:14px 16px;border-top:1px solid rgba(255,255,255,.14);font-size:14px}
.uname{font-weight:700}.urole{opacity:.75;font-size:13px}
.logout{display:inline-block;margin-top:8px;color:#f0c9be;font-size:13px}
.content{flex:1;padding:26px 30px;max-width:1100px}

h1{margin:0 0 6px;font-size:27px;color:var(--brown)}
h2{font-size:20px;color:var(--brown);margin:0 0 10px}
.lead{color:var(--grey);margin:0 0 20px}

.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-bottom:24px}
.card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:16px;display:block;
  transition:transform .08s,box-shadow .08s}
.card:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(91,58,41,.12)}
.card-ico{font-size:26px}.card-t{font-weight:700;margin-top:6px}
.card-s{color:var(--grey);font-size:12.5px;margin-top:2px}

.panel{background:#fff;border:1px solid var(--line);border-radius:13px;padding:18px 20px;margin-bottom:18px}
.panel.muted{color:var(--grey)}
.panel ul{margin:6px 0 0;padding-left:20px}.panel li{margin:4px 0}

.tbl{width:100%;border-collapse:collapse}
.tbl th{text-align:left;font-size:13px;color:var(--grey);border-bottom:2px solid var(--line);padding:8px 10px}
.tbl td{padding:9px 10px;border-bottom:1px solid var(--wood)}
.tbl tr.off{opacity:.5}
.ok{color:var(--green);font-weight:600}.no{color:var(--red)}
.mini{padding:5px 10px;border:1px solid var(--line);background:var(--wood-l);border-radius:7px;cursor:pointer;font-size:13px}
.mini:hover{background:var(--wood)}

.grid-form{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.grid-form label{display:flex;flex-direction:column;gap:5px;font-size:14px;color:var(--grey)}
.grid-form input,.grid-form select{padding:10px;border:1.5px solid var(--line);border-radius:9px;font-size:15px}
.grid-form input:focus,.grid-form select:focus{outline:none;border-color:var(--brown)}
.form-actions{grid-column:1/-1}
.form-actions button{padding:11px 22px;border:0;border-radius:9px;background:var(--brown);color:#fff;font-weight:700;cursor:pointer;font-size:15px}
.form-actions button:hover{background:var(--brown-d)}
.muted{color:var(--grey)}

@media(max-width:720px){
  .layout{flex-direction:column}
  .sidebar{width:100%;height:auto;position:static;flex-direction:column}
  .sidebar nav{flex-direction:row;flex-wrap:wrap}
  .content{padding:18px}
  .grid-form{grid-template-columns:1fr}
}

/* ---- Очередь 1: клиенты/сделки/изделия ---- */
.crumbs{color:var(--grey);font-size:13px;margin-bottom:4px}
.crumbs a{color:var(--brown)}
.small{font-size:12.5px}
.searchbar{display:flex;gap:8px;margin-bottom:16px;max-width:460px}
.searchbar input{flex:1;padding:10px;border:1.5px solid var(--line);border-radius:9px;font-size:15px}
.searchbar button{padding:10px 16px;border:0;border-radius:9px;background:var(--brown);color:#fff;cursor:pointer}
.clickable{cursor:pointer}
.clickable:hover{background:var(--wood-l)}
.grid-form label.wide{grid-column:1/-1}
.inline-form{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.inline-form input,.inline-form select{padding:9px;border:1.5px solid var(--line);border-radius:8px;font-size:14px}
.inline-form input:not(.narrow){flex:1;min-width:180px}
.inline-form button{padding:9px 16px;border:0;border-radius:8px;background:var(--brown);color:#fff;cursor:pointer;font-weight:600}
.narrow{max-width:90px}

.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12.5px;background:var(--wood);color:var(--brown);font-weight:600}
.badge.s-active{background:#e2eefc;color:#1f5fa8}
.badge.s-done{background:#e0f0e4;color:var(--green)}
.badge.s-cancelled{background:#f1e2df;color:var(--red)}
.stage-pill{display:inline-block;padding:2px 10px;border-radius:20px;color:#fff;font-size:12.5px;font-weight:600}

/* доска */
.board{display:flex;gap:12px;overflow-x:auto;padding-bottom:12px}
.col{flex:0 0 210px;background:#fff;border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;max-height:75vh}
.col-head{padding:10px 12px;font-weight:700;color:var(--brown);border-bottom:2px solid var(--line);font-size:14px}
.col-cnt{float:right;background:var(--wood);border-radius:12px;padding:0 8px;font-size:12px}
.col-body{padding:8px;overflow:auto;display:flex;flex-direction:column;gap:8px}
.kcard{display:block;background:var(--wood-l);border:1px solid var(--line);border-radius:9px;padding:9px 10px}
.kcard:hover{border-color:var(--brown);box-shadow:0 3px 8px rgba(91,58,41,.12)}
.kcard-t{font-weight:700;font-size:14px}
.kcard-s{color:var(--grey);font-size:12px;margin-top:2px}
.kcard-p{color:var(--brown);font-size:11.5px;margin-top:4px;font-weight:600}
.col-empty{color:#c9b8a6;text-align:center;padding:8px;font-size:13px}

/* карточка изделия */
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.doc-designer{border-top:3px solid #6b7cb8}
.doc-technolog{border-top:3px solid #b8935b}
.att-list{list-style:none;padding:0;margin:6px 0}
.att-list li{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid var(--wood)}
.att-list a{flex:1}
.upload-form{display:flex;gap:8px;margin-top:10px;align-items:center;flex-wrap:wrap}
.upload-form button{padding:8px 14px;border:0;border-radius:8px;background:var(--brown);color:#fff;cursor:pointer}
.spec-form{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.spec-form input,.spec-form select{padding:9px;border:1.5px solid var(--line);border-radius:8px;font-size:14px}
.spec-form input[name=name]{flex:1;min-width:160px}
.spec-form button{padding:9px 15px;border:0;border-radius:8px;background:var(--brown);color:#fff;cursor:pointer;font-weight:600}
.mini.danger{color:var(--red);border-color:#e6b6ad}

.prod-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.prod-chk{padding:10px 16px;border:1.5px solid var(--line);background:#fff;border-radius:9px;cursor:pointer;font-size:14px;font-weight:600;color:var(--grey)}
.prod-chk.on{background:#e0f0e4;border-color:var(--green);color:var(--green)}
.prod-card .prod-head{display:flex;gap:12px;align-items:center;margin-bottom:8px;flex-wrap:wrap}

.history{list-style:none;padding:0;margin:0}
.history li{padding:6px 0;border-bottom:1px solid var(--wood);font-size:14px}

.stat-row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 20px;min-width:120px;text-align:center}
.stat:hover{box-shadow:0 6px 16px rgba(91,58,41,.12)}
.stat-n{font-size:28px;font-weight:800;color:var(--brown)}
.stat-l{color:var(--grey);font-size:13px;margin-top:2px}
.stat.warn .stat-n{color:var(--red)}

@media(max-width:720px){.two-col{grid-template-columns:1fr}}

/* ---- Очередь 2: закупки ---- */
.btn-row{display:flex;gap:12px;align-items:center;margin-bottom:16px;flex-wrap:wrap}
.btn{display:inline-block;padding:10px 16px;background:var(--brown);color:#fff;border-radius:9px;font-weight:600}
.btn:hover{background:var(--brown-d)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.chip{display:inline-flex;align-items:center;gap:5px;background:var(--wood-l);border:1px solid var(--line);
  border-radius:20px;padding:5px 12px;font-size:13px;cursor:pointer;color:var(--ink)}
.chip input{margin:0}
.edit-sup{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding:10px;background:var(--wood-l);border-radius:9px}
.edit-sup input{padding:8px;border:1.5px solid var(--line);border-radius:7px;font-size:14px}
.edit-sup button{padding:8px 14px;border:0;border-radius:7px;background:var(--brown);color:#fff;cursor:pointer;align-self:flex-start}
details summary{cursor:pointer}
details summary.mini{display:inline-block;padding:5px 10px;border:1px solid var(--line);background:var(--wood-l);border-radius:7px;font-size:13px;list-style:none}
details summary.mini::-webkit-details-marker{display:none}

.need-grp{margin-bottom:10px}
.need-dir{font-weight:700;color:var(--brown);border-bottom:1px solid var(--line);padding-bottom:3px;margin-bottom:4px}
.need-list{margin:0;padding-left:18px}
.need-list li{margin:2px 0}

.rfq-card{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:10px;background:var(--wood-l)}
.rfq-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.rfq-note{color:var(--red);font-size:13px;margin-top:4px}
.rfq-body{white-space:pre-wrap;background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px;font-size:13px;margin:6px 0;font-family:inherit}
.rfq-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}

.inv-card{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:12px}
.inv-card.inv-paid{border-left:4px solid var(--green)}
.inv-card.inv-to_pay{border-left:4px solid #b8935b}
.inv-card.inv-accepted{border-left:4px solid #5b8fb8}
.inv-card.inv-rejected{border-left:4px solid var(--red);opacity:.6}
.inv-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.inv-total{font-weight:800;color:var(--brown)}
.badge.s-new{background:#eef0f2;color:#555}
.badge.s-accepted{background:#e2eefc;color:#1f5fa8}
.badge.s-to_pay{background:#f7ecd8;color:#8a6a2a}
.badge.s-paid{background:#e0f0e4;color:var(--green)}
.badge.s-rejected{background:#f1e2df;color:var(--red)}
.inv-lines{margin:6px 0}
.inv-lines th{font-size:12px;padding:5px 8px}
.inv-lines td{padding:5px 8px}
.small-form input,.small-form select{font-size:13px}
.narrow2{max-width:120px}
.inv-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap;align-items:center}
.pay-form{display:flex;gap:6px;margin:0;align-items:center}
.pay-form select{padding:6px;border:1.5px solid var(--line);border-radius:7px;font-size:13px}
.mini.pay{background:var(--green);color:#fff;border-color:var(--green)}
.sub{font-size:16px;color:var(--brown);margin-top:14px}

.wh-card.overdue{border-left:4px solid var(--red)}
.wh-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.overdue-txt{color:var(--red);font-weight:700;font-size:13px}
.mini.receive{background:#e0f0e4;border-color:var(--green);color:var(--green)}

/* ---- Очередь 3: уведомления/доставка/календарь ---- */
.nav-badge{background:#e5484d;color:#fff;border-radius:12px;padding:0 7px;font-size:11px;font-weight:700;margin-left:4px}
.notif-list{list-style:none;padding:0;margin:0}
.notif-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 8px;border-bottom:1px solid var(--wood)}
.notif-list li.unread{background:#fbf6ee;border-left:3px solid var(--brown);padding-left:10px}
.notif-list li.k-overdue.unread{border-left-color:var(--red)}
.notif-list li.k-delivery.unread{border-left-color:var(--green)}
.notif-meta{color:var(--grey);font-size:12px;margin-top:2px}

.dg-card{border-left:4px solid var(--line)}
.dg-card.dg-planned{border-left-color:#5b8fb8}
.dg-card.dg-delivered{border-left-color:#b8935b}
.dg-card.dg-done{border-left-color:var(--green)}
.dg-card.dg-reclamation{border-left-color:var(--red)}
.dg-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.dg-items{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0}
.dg-item{background:var(--wood-l);border:1px solid var(--line);border-radius:8px;padding:4px 8px;font-size:13px;display:inline-flex;align-items:center;gap:4px}
.dg-note{background:#fbf6ee;border-radius:8px;padding:8px 10px;margin:8px 0;font-size:13px}
.dg-photos{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:8px 0}
.photo-item{font-size:13px;display:inline-flex;align-items:center;gap:4px}
.dg-actions{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.inline-min{display:inline-flex;gap:6px;align-items:center;margin:0}
.inline-min select,.inline-min input{padding:6px;border:1.5px solid var(--line);border-radius:7px;font-size:13px}
.badge.s-planned{background:#e2eefc;color:#1f5fa8}
.badge.s-delivered{background:#f7ecd8;color:#8a6a2a}
.badge.s-done{background:#e0f0e4;color:var(--green)}
.badge.s-reclamation{background:#f1e2df;color:var(--red)}

.cal-day{padding:12px 16px}
.cal-date{font-weight:700;color:var(--brown);border-bottom:2px solid var(--line);padding-bottom:5px;margin-bottom:8px}
.cal-event{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:6px 0;border-bottom:1px solid var(--wood)}
.cal-type{font-weight:600;min-width:110px}
.ev-deliv .cal-type{color:#1f5fa8}
.ev-assemb .cal-type{color:#8a6a2a}
