@font-face{font-family:'MS';src:url('/static/fonts/MoscowSans-Light.otf') format('opentype');font-weight:300;}
@font-face{font-family:'MS';src:url('/static/fonts/MoscowSans-Regular.otf') format('opentype');font-weight:400;}
@font-face{font-family:'MS';src:url('/static/fonts/MoscowSans-Medium.otf') format('opentype');font-weight:500;}
@font-face{font-family:'MS';src:url('/static/fonts/MoscowSans-Bold.otf') format('opentype');font-weight:700;}

:root{
  --teal:#038681; --navy:#2A3043; --red:#F34C3F; --warn:#d97706;
  --mint:#92DAD9; --green:#1a9e5c;
  --txt:#2A3043; --txt2:#6b7280; --txt3:#9aa3ae;
  --line:#d0dada; --line2:#e0e8e8;
  --bg:#fff; --bg2:#f8fafa; --hover:#f4f8f8;
  --teal-10:#eaf5f4; --red-10:#fef1f0; --warn-10:#fdf6e8; --green-10:#ecf8f1;
  --r:12px;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'MS',system-ui,sans-serif;font-weight:400;background:var(--bg);color:var(--txt);min-height:100vh;font-size:15px;-webkit-font-smoothing:antialiased;}

/* status dots */
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.dot.green{background:var(--green);}
.dot.yellow{background:var(--warn);}
.dot.red{background:var(--red);}

/* layout */
.app{display:flex;min-height:100vh;}
.sidebar{width:256px;background:var(--bg);border-right:.5px solid var(--line);flex-shrink:0;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;}
.sb-logo{padding:22px 22px 16px;}
.sb-logo img{height:30px;display:block;}
.sb-logo .t{font-size:11px;font-weight:500;letter-spacing:1px;text-transform:uppercase;margin-top:10px;color:var(--txt3);}
.nav{padding:6px 12px;overflow-y:auto;flex:1;}
.nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:var(--txt);text-decoration:none;font-size:14.5px;font-weight:400;margin-bottom:1px;}
.nav a:hover{background:var(--hover);}
.nav a.on{background:var(--teal-10);color:var(--teal);font-weight:500;}
.nav .grp{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:1px;color:var(--txt3);padding:18px 12px 8px;}
.nav .cnt{margin-left:auto;font-size:12px;font-weight:400;color:var(--txt3);}
.nav a.on .cnt{color:var(--teal);}
.sb-user{padding:16px 22px;border-top:.5px solid var(--line);font-size:13px;color:var(--txt2);}
.sb-user b{display:block;font-size:14px;font-weight:500;color:var(--txt);}
.sb-user .role{font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:var(--txt3);}
.sb-user a{color:var(--teal);text-decoration:none;font-size:12.5px;}
.main{flex:1;padding:34px 44px;max-width:1360px;background:var(--bg);}

/* headings */
h1.pg{font-size:26px;font-weight:500;color:var(--txt);margin-bottom:4px;display:flex;align-items:center;gap:12px;}
h1.pg .dot{width:10px;height:10px;}
.pg-sub{font-size:14.5px;font-weight:300;color:var(--txt2);margin-bottom:26px;}
.lbl{font-size:12px;font-weight:500;color:var(--txt3);text-transform:uppercase;letter-spacing:1px;margin:26px 0 12px;}

/* kpi */
.kpi-row{display:flex;gap:14px;flex-wrap:wrap;}
.kpi{background:var(--bg);border:.5px solid var(--line);border-radius:var(--r);padding:16px 22px;min-width:140px;}
.kpi-num{font-size:30px;font-weight:300;color:var(--txt);line-height:1.1;}
.kpi-lbl{font-size:13px;font-weight:400;color:var(--txt2);margin-top:4px;}
.kpi.alert .kpi-num{color:var(--red);}
.kpi.warn .kpi-num{color:var(--warn);}

/* panels */
.panel{background:var(--bg);border:.5px solid var(--line);border-radius:var(--r);padding:6px 20px;margin-bottom:16px;}
.panel.pad{padding:18px 20px;}

/* table */
table.dt{width:100%;border-collapse:collapse;font-size:14.5px;}
table.dt th{text-align:left;font-size:11.5px;font-weight:500;color:var(--txt3);text-transform:uppercase;letter-spacing:.8px;padding:12px 10px 10px;border-bottom:.5px solid var(--line);}
table.dt td{padding:12px 10px;border-bottom:.5px solid var(--line2);vertical-align:middle;font-weight:300;}
table.dt tr:last-child td{border-bottom:none;}
table.dt td.nm{font-weight:400;}
table.dt tr.hp td{background:transparent;}
table.dt tr.rowlink{cursor:pointer;}
table.dt tr.rowlink:hover td{background:var(--hover);}

/* badges */
.b{display:inline-flex;align-items:center;font-size:12.5px;font-weight:400;padding:3px 10px;border-radius:20px;white-space:nowrap;}
.b-ok{background:var(--green-10);color:var(--green);}
.b-pr{background:var(--warn-10);color:var(--warn);}
.b-bad{background:var(--red-10);color:var(--red);}
.b-na{background:var(--line2);color:var(--txt3);}

/* milestones */
.mss{display:flex;gap:12px;flex-wrap:wrap;}
.ms{background:var(--bg);border:.5px solid var(--line);padding:12px 16px;border-radius:10px;min-width:160px;flex:1;}
.ms.alert{border-color:#f6cfcb;background:var(--red-10);}
.ms.done{opacity:.5;}
.ms .ml{font-size:11px;font-weight:500;color:var(--txt3);text-transform:uppercase;letter-spacing:.6px;}
.ms.alert .ml{color:var(--red);}
.ms .mv{font-size:14.5px;font-weight:400;margin-top:3px;line-height:1.35;}

/* note */
.note{background:var(--bg2);border:.5px solid var(--line);padding:14px 18px;border-radius:10px;margin:12px 0;font-size:14.5px;font-weight:300;line-height:1.55;color:var(--txt);}

/* forms */
.filters{display:flex;gap:10px;margin-bottom:18px;align-items:center;flex-wrap:wrap;}
.filters select,.filters input,form.inline select,form.inline input{font-family:inherit;font-weight:400;font-size:14px;padding:8px 12px;border:.5px solid var(--line);border-radius:8px;background:var(--bg);color:var(--txt);outline:none;}
.filters select:focus,form.inline select:focus,form.inline input:focus,textarea:focus{border-color:var(--teal);}
.filters a{color:var(--teal);font-size:13.5px;text-decoration:none;}
textarea{width:100%;font-family:inherit;font-weight:300;font-size:14.5px;padding:12px 14px;border:.5px solid var(--line);border-radius:10px;min-height:72px;outline:none;color:var(--txt);}
.btn{display:inline-block;background:var(--teal);color:#fff;font-family:inherit;font-size:14px;font-weight:400;border:none;border-radius:8px;padding:9px 20px;cursor:pointer;}
.btn:hover{filter:brightness(1.06);}

/* kanban */
.board{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;align-items:start;}
.kcol{background:var(--bg2);border:.5px solid var(--line2);border-radius:var(--r);padding:10px;min-height:120px;}
.kcol h4{font-size:11.5px;font-weight:500;text-transform:uppercase;letter-spacing:.8px;color:var(--txt3);padding:4px 6px 10px;display:flex;justify-content:space-between;}
.kcol.drag{outline:1.5px dashed var(--teal);}
.card{background:var(--bg);border:.5px solid var(--line);border-radius:10px;padding:11px 13px;margin-bottom:8px;cursor:grab;}
.card:hover{border-color:#d5dede;}
.card.p-high{border-left:3px solid var(--red);}
.card.p-medium{border-left:3px solid var(--mint);}
.card.p-low{border-left:3px solid var(--line);}
.card .t{font-size:14px;font-weight:400;line-height:1.35;}
.card .m{font-size:12px;font-weight:300;color:var(--txt2);margin-top:7px;display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.card .tag{color:var(--teal);font-weight:400;}
.card .due-over{color:var(--red);font-weight:500;}
.card.locked{cursor:default;opacity:.85;}

/* load matrix */
.load td.pct{text-align:center;font-weight:300;}
.load td.zero{color:#d3dada;}
.load td.tot{font-weight:500;}
.load td.over{color:var(--red);}
.load td.free{color:var(--txt3);}

/* events */
.ev{font-size:14px;font-weight:300;padding:10px 0;border-bottom:.5px solid var(--line2);display:flex;gap:14px;}
.ev:last-child{border-bottom:none;}
.ev b{font-weight:400;}
.ev .ts{color:var(--txt3);font-size:12.5px;white-space:nowrap;min-width:110px;padding-top:1px;}

/* login */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg2);}
.login-box{background:var(--bg);border:.5px solid var(--line);border-radius:16px;padding:38px 42px;width:360px;}
.login-box img{height:34px;margin-bottom:16px;}
.login-box h1{font-size:19px;font-weight:500;margin-bottom:20px;}
.login-box input{width:100%;font-family:inherit;font-weight:300;font-size:15px;padding:11px 14px;border:.5px solid var(--line);border-radius:10px;margin-bottom:12px;outline:none;}
.login-box input:focus{border-color:var(--teal);}
.err{color:var(--red);font-size:13.5px;margin-bottom:12px;}

form.inline{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}

/* org */
.org-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;}
.org-card{background:var(--bg);border:.5px solid var(--line);border-radius:var(--r);padding:16px 18px;}
.org-name{font-size:15px;font-weight:500;color:var(--teal);padding-bottom:10px;border-bottom:.5px solid var(--line2);margin-bottom:10px;}
.org-head{display:flex;flex-direction:column;margin-bottom:8px;}
.org-head .who{font-size:14.5px;font-weight:500;}
.org-head.vacant .who{color:var(--txt3);font-weight:300;}
.org-head .post,.org-member .post{font-size:12px;font-weight:300;color:var(--txt3);}
.org-member{font-size:14px;font-weight:300;padding:5px 0;border-top:.5px solid var(--line2);}
.org-member.empty{color:var(--txt3);}

/* monitoring (стрим «Мониторинг создания поезда») */
.mon-method summary{font-size:14.5px;font-weight:500;color:var(--teal);cursor:pointer;user-select:none;}
.mon-method[open] summary{margin-bottom:12px;}
.mon-method p{font-size:14px;font-weight:300;line-height:1.55;color:var(--txt2);margin-bottom:10px;}
.mon-method ul{padding-left:20px;display:flex;flex-direction:column;gap:8px;}
.mon-method li{font-size:14px;font-weight:300;line-height:1.55;color:var(--txt2);}
.mon-report{font-size:13px;font-weight:500;color:var(--teal);text-decoration:none;white-space:nowrap;}
.mon-report:hover{text-decoration:underline;}
