/* ITAM — «инвентарная бирка»: тёплая бумага склада + фирменный зелёный + сигнальный янтарь */
:root{
  --paper:#f4f2ed; --surface:#ffffff; --surface2:#edeae2; --ink:#23282b; --muted:#6b7076;
  --line:#ddd8cc; --line2:#c9c3b4;
  --green:#175e54; --green-dark:#0f2e29; --green-mid:#1a3a34; --green-soft:#e3ede9;
  --amber:#c47f17; --amber-soft:#f7ecd8;
  --blue:#2b5aa7; --blue-soft:#e6ecf5; --violet:#6b3fa0; --violet-soft:#efe8f6;
  --red:#b2392f; --red-soft:#f6e4e1; --ok:#2c7a4b; --ok-soft:#e2efe6;
  --mono:"Cascadia Mono","Consolas","SF Mono","Roboto Mono",monospace;
}
*{box-sizing:border-box}
[hidden]{display:none !important}
body{margin:0;background:var(--paper);color:var(--ink);
  font:14.5px/1.5 "Segoe UI",-apple-system,Roboto,Arial,sans-serif}
button{font:inherit;cursor:pointer}
input,select,textarea{font:inherit;color:var(--ink);background:var(--surface);
  border:1.5px solid var(--line2);border-radius:8px;padding:8px 11px}
input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{
  outline:2px solid var(--green);outline-offset:1px}
.muted{color:var(--muted)}

/* ---------- бирка (фирменный элемент): моноширинный номер с «отверстием» ---------- */
.tag{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:12.5px;
  letter-spacing:.04em;border:1.5px solid var(--line2);border-radius:5px;background:var(--surface);
  padding:2px 9px 2px 7px;white-space:nowrap;color:var(--ink)}
.tag::before{content:"";width:7px;height:7px;border-radius:50%;
  border:1.5px solid var(--line2);background:var(--paper);flex-shrink:0}
.tag.big{font-size:17px;padding:5px 14px 5px 10px;border-width:2px}
.tag.big::before{width:10px;height:10px;border-width:2px}

/* статусные «штампы» */
.st{display:inline-block;font-size:11.5px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;padding:2.5px 10px;border-radius:4px;white-space:nowrap;
  border:1.5px solid currentColor}
.st-in_stock{color:var(--ok);background:var(--ok-soft)}
.st-issued{color:var(--blue);background:var(--blue-soft)}
.st-repair{color:var(--amber);background:var(--amber-soft)}
.st-reserve{color:var(--violet);background:var(--violet-soft)}
.st-written_off{color:var(--red);background:var(--red-soft)}
.st-cancelled{color:#6b7280;background:#f3f4f6;text-decoration:line-through}
.st.stamp{transform:rotate(-2deg);font-size:13px;padding:4px 14px}

/* аватарки-инициалы */
.av{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;
  border-radius:50%;font-size:11px;font-weight:700;color:#fff;flex-shrink:0;user-select:none}
.who{display:inline-flex;align-items:center;gap:8px}

/* ---------- login ---------- */
#login-screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
  background:
    radial-gradient(circle at 15% 20%, rgba(23,94,84,.08), transparent 40%),
    radial-gradient(circle at 85% 80%, rgba(196,127,23,.07), transparent 40%),
    var(--paper)}
.login-card{background:var(--surface);border:1.5px solid var(--line2);border-radius:14px;
  padding:34px 34px 30px;width:340px;display:flex;flex-direction:column;gap:13px;
  box-shadow:0 12px 40px rgba(30,40,35,.10)}
.login-logo{font-family:var(--mono);font-size:30px;font-weight:700;letter-spacing:.06em}
.login-logo span{color:var(--green)}
.login-card p{margin:-8px 0 6px}
.fld{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.fld span{text-transform:uppercase;letter-spacing:.06em}
.error{color:var(--red);font-size:13px}

/* ---------- каркас ---------- */
#app{display:grid;grid-template-columns:206px 1fr;min-height:100vh}
aside{background:var(--green-dark);color:#c9dcd6;display:flex;flex-direction:column;
  padding:18px 0;position:sticky;top:0;height:100vh}
.logo{font-family:var(--mono);font-size:22px;font-weight:700;letter-spacing:.06em;
  padding:0 20px 16px;color:#fff}
.logo span{color:#e8b45a}
nav{display:flex;flex-direction:column;gap:1px}
nav a{display:flex;align-items:center;gap:10px;color:#c9dcd6;text-decoration:none;
  padding:10px 20px;border-left:3px solid transparent;font-size:14px}
nav a svg{width:17px;height:17px;fill:currentColor;flex-shrink:0;opacity:.85}
nav a:hover{background:var(--green-mid)}
nav a.active{background:var(--green-mid);border-left-color:#e8b45a;color:#fff}
.sidebar-footer{margin-top:auto;padding:14px 20px;font-size:12px;display:flex;flex-direction:column;gap:6px}
.linkbtn{background:none;border:0;color:#8fb5ac;text-align:left;padding:0;text-decoration:underline}
.main-col{min-width:0;display:flex;flex-direction:column}
main{padding:20px 28px 60px;min-width:0}

/* topbar: глобальный поиск */
.topbar{position:sticky;top:0;z-index:20;background:var(--paper);
  padding:14px 28px 10px;border-bottom:1px dashed var(--line2)}
.gsearch{position:relative;max-width:640px}
.gsearch>svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);
  width:17px;height:17px;fill:var(--muted);pointer-events:none}
.gsearch input{width:100%;padding:10px 14px 10px 38px;border-radius:10px;font-size:15px;
  background:var(--surface)}
.gsearch-drop{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--surface);
  border:1.5px solid var(--line2);border-radius:12px;box-shadow:0 14px 38px rgba(30,40,35,.14);
  max-height:60vh;overflow-y:auto;z-index:30}
.gs-group{padding:8px 14px 3px;font-size:10.5px;font-weight:700;color:var(--muted);
  text-transform:uppercase;letter-spacing:.08em;border-top:1px dashed var(--line);}
.gs-group:first-child{border-top:0}
.gs-item{display:flex;align-items:center;gap:10px;padding:8px 14px;cursor:pointer}
.gs-item:hover,.gs-item.sel{background:var(--green-soft)}
.gs-item small{color:var(--muted);margin-left:auto;white-space:nowrap}
.gs-empty{padding:16px;color:var(--muted);text-align:center}

/* ---------- общие блоки ---------- */
h2{margin:0 0 4px;font-size:21px}
.sub{color:var(--muted);margin:0 0 18px;font-size:13.5px}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;align-items:center}
.toolbar input[type=search]{min-width:210px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.fchip{border:1.5px solid var(--line2);background:var(--surface);border-radius:20px;
  padding:5px 14px;font-size:13px;color:var(--muted)}
.fchip b{font-variant-numeric:tabular-nums;font-weight:600;margin-left:4px}
.fchip:hover{border-color:var(--green);color:var(--green)}
.fchip.on{background:var(--green);border-color:var(--green);color:#fff}

.tiles{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0 22px}
.tile{background:var(--surface);border:1.5px solid var(--line2);border-radius:12px;
  padding:14px 20px;min-width:138px;position:relative}
.tile b{display:block;font-size:26px;font-family:var(--mono);font-variant-numeric:tabular-nums;line-height:1.2}
.tile span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.tile .dot{position:absolute;top:12px;right:12px;width:9px;height:9px;border-radius:50%}
.tile.clickable{cursor:pointer}
.tile.clickable:hover{border-color:var(--green);box-shadow:0 4px 14px rgba(23,94,84,.10)}

.qa{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 26px}
.qa button{display:flex;align-items:center;gap:9px;border:1.5px solid var(--green);
  background:var(--surface);color:var(--green);border-radius:11px;padding:11px 18px;
  font-size:14.5px;font-weight:600}
.qa button svg{width:17px;height:17px;fill:currentColor}
.qa button:hover{background:var(--green);color:#fff}
.qa button.amber{border-color:var(--amber);color:var(--amber)}
.qa button.amber:hover{background:var(--amber);color:#fff}

.tblwrap{background:var(--surface);border:1.5px solid var(--line2);border-radius:12px;overflow-x:auto}
table{border-collapse:collapse;width:100%}
th{background:var(--surface2);color:var(--muted);font-size:10.5px;text-transform:uppercase;
  letter-spacing:.07em;font-weight:700;text-align:left;padding:9px 13px;
  border-bottom:1.5px solid var(--line2);white-space:nowrap}
td{padding:9px 13px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:last-child td{border-bottom:0}
tbody tr:hover{background:var(--green-soft)}
tbody tr.rowlink{cursor:pointer}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;font-family:var(--mono);font-size:13px}
td.dt{white-space:nowrap;color:var(--muted);font-size:13px}

.empty{padding:44px 20px;text-align:center;color:var(--muted)}
.empty .big{font-size:34px;margin-bottom:8px}
.pager{display:flex;gap:10px;align-items:center;margin-top:12px;color:var(--muted);font-size:13px}
.pager button{border:1.5px solid var(--line2);background:var(--surface);border-radius:8px;padding:5px 14px}
.pager button:disabled{opacity:.35;cursor:default}
.pager button:not(:disabled):hover{border-color:var(--green);color:var(--green)}

/* лента движений («путевой лист») */
.feed{background:var(--surface);border:1.5px solid var(--line2);border-radius:12px;padding:6px 0}
.feed-item{display:flex;gap:12px;padding:10px 18px;align-items:flex-start;position:relative}
.feed-item+.feed-item{border-top:1px dashed var(--line)}
.feed-ic{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;
  justify-content:center;flex-shrink:0;font-size:14px}
.feed-body{min-width:0}
.feed-body .t{line-height:1.4}
.feed-body small{color:var(--muted)}

/* ---------- кнопки ---------- */
.btn{border:1.5px solid var(--line2);background:var(--surface);border-radius:9px;padding:7px 14px}
.btn:hover{border-color:var(--green);color:var(--green)}
.btn.primary{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}
.btn.primary:hover{filter:brightness(1.08);color:#fff}
.btn.danger{color:var(--red)}
.btn.danger:hover{border-color:var(--red);background:var(--red-soft)}
.btn.sm{padding:4px 11px;font-size:12.5px;border-radius:7px}
.btn.big{padding:11px 18px;font-size:15px;border-radius:10px}
.btn svg{width:15px;height:15px;fill:currentColor;vertical-align:-2px;margin-right:5px}

/* ---------- модалки ---------- */
#modal-root:not(:empty){position:fixed;inset:0;background:rgba(18,30,26,.5);
  display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.modal{background:var(--surface);border-radius:16px;max-width:700px;width:100%;
  max-height:90vh;overflow-y:auto;padding:26px 28px;border:1.5px solid var(--line2)}
.modal h3{margin:0 0 16px;font-size:18px}
.mhead{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.mhead .title{font-size:17px;font-weight:600;line-height:1.35;flex:1;min-width:200px}
.modal .form{display:flex;flex-direction:column;gap:12px}
.modal .row{display:flex;gap:10px;flex-wrap:wrap}
.modal .row>*{flex:1;min-width:140px}
.modal .actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px;flex-wrap:wrap}
.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 14px;margin:14px 0;font-size:14px}
.kv dt{color:var(--muted)}
.kv dd{margin:0}

/* таймлайн истории — перфорированный маршрут */
.tl{margin:18px 0 0;padding:0 0 0 4px;list-style:none;position:relative}
.tl::before{content:"";position:absolute;left:10px;top:6px;bottom:6px;border-left:2px dashed var(--line2)}
.tl li{position:relative;padding:0 0 14px 30px}
.tl li:last-child{padding-bottom:0}
.tl .pt{position:absolute;left:3px;top:3px;width:15px;height:15px;border-radius:50%;
  border:2.5px solid var(--green);background:var(--surface)}
.tl li.neg .pt{border-color:var(--red)}
.tl li.warn .pt{border-color:var(--amber)}
.tl .when{font-size:12px;color:var(--muted);font-family:var(--mono)}

/* автокомплит */
.ac{position:relative}
.ac input{width:100%}
.ac-list{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--surface);
  border:1.5px solid var(--line2);border-radius:10px;max-height:240px;overflow-y:auto;z-index:60;
  box-shadow:0 10px 30px rgba(30,40,35,.14)}
.ac-item{display:flex;align-items:center;gap:9px;padding:8px 12px;cursor:pointer}
.ac-item:hover,.ac-item.sel{background:var(--green-soft)}
.ac-item .sub2{display:block;color:var(--muted);font-size:12px}
.ac-item .grow{min-width:0}

/* toast */
.toast{position:fixed;bottom:22px;right:22px;background:var(--green-dark);color:#fff;
  padding:12px 20px;border-radius:10px;z-index:99;opacity:0;transition:opacity .2s,transform .2s;
  transform:translateY(6px);max-width:340px;box-shadow:0 10px 30px rgba(0,0,0,.25)}
.toast.show{opacity:1;transform:none}
.toast.err{background:var(--red)}

/* скелетоны */
.skel{border-radius:8px;background:linear-gradient(90deg,var(--surface2) 25%,#f7f5f0 50%,var(--surface2) 75%);
  background-size:200% 100%;animation:sk 1.1s infinite linear;height:16px}
@keyframes sk{to{background-position:-200% 0}}
@media (prefers-reduced-motion: reduce){.skel{animation:none}}

/* приветствие */
.hello{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.hello .date{font-family:var(--mono);color:var(--muted);font-size:13px}

/* ---------- мобильная ---------- */
@media (max-width: 920px){
  #app{grid-template-columns:1fr}
  aside{position:sticky;top:0;height:auto;flex-direction:row;align-items:center;
    padding:8px 10px;z-index:25;overflow-x:auto}
  .logo{padding:0 12px 0 6px;font-size:18px}
  nav{flex-direction:row}
  nav a{padding:8px 10px;border-left:0;border-bottom:3px solid transparent;font-size:13px}
  nav a.active{border-left:0;border-bottom-color:#e8b45a}
  nav a svg{display:none}
  .sidebar-footer{margin:0 0 0 auto;padding:0 8px;flex-direction:row;gap:10px;white-space:nowrap}
  .topbar{padding:10px 14px 8px}
  main{padding:14px 14px 50px}
  .kv{grid-template-columns:120px 1fr}
  .tile{min-width:calc(50% - 6px)}
}
