:root { --ink:#10223b; --blue:#1e5b8f; --pale:#edf4f8; --line:#d8e2ea; --green:#127a5c; --red:#b53a3a; }
* { box-sizing:border-box; } body { margin:0; background:#f7f9fb; color:var(--ink); font-family:Inter,Segoe UI,Arial,sans-serif; }
.topbar { min-height:70px; display:flex; align-items:center; justify-content:space-between; gap:18px; padding:0 max(28px, calc((100vw - 1240px)/2)); background:#fff; border-bottom:1px solid var(--line); }
.brand { color:var(--ink); text-decoration:none; font-weight:800; font-size:19px; } .brand span { color:var(--blue); font-weight:600; }
.topbar-actions { display:flex; align-items:center; justify-content:flex-end; gap:12px; }.current-user { color:#536273; font-size:13px; font-weight:700; }.admin-link { color:var(--blue); font-size:13px; font-weight:800; text-decoration:none; }.logout-form { margin:0; }.logout { background:transparent; border:1px solid #bfcdda; color:#445568; padding:7px 10px; font-size:12px; }
.connection,.status { border-radius:99px; padding:7px 11px; font-size:12px; font-weight:700; } .ready,.completed { background:#e0f5eb; color:var(--green); } .warning,.failed { background:#fff0e8; color:#9a421f; }
main { max-width:1240px; margin:0 auto; padding:56px 28px 80px; }.hero { max-width:720px; margin-bottom:35px; }.eyebrow { letter-spacing:.12em; font-size:11px; font-weight:800; color:var(--blue); margin:0 0 10px; }.hero h1,.report-heading h1 { font-size:42px; margin:0 0 14px; letter-spacing:-.035em; }.hero p:not(.eyebrow),.report-card p { color:#5a6b7e; line-height:1.55; }
.card { background:#fff; border:1px solid var(--line); border-radius:16px; box-shadow:0 8px 28px rgba(20,49,74,.05); }.report-card { padding:28px; display:grid; grid-template-columns:1fr auto; gap:24px; align-items:center; }.report-card h2,.history h2,.error h2 { margin:0; }.period-form { display:flex; align-items:end; gap:12px; }.period-form label { display:grid; gap:6px; font-size:12px; font-weight:700; color:#536273; }.period-form input,.period-form select { border:1px solid #bfcdda; border-radius:8px; padding:10px; font:inherit; }.warehouse-select { min-width:220px; }.warehouse-note { color:#5a6b7e; font-size:12px; }.materials-form { flex-wrap:wrap; justify-content:flex-end; }.materials-form button { margin-left:auto; } button,.download { background:var(--blue); color:white; border:0; padding:12px 16px; border-radius:8px; font-weight:800; text-decoration:none; cursor:pointer; } button:disabled { opacity:.45; cursor:not-allowed; }.notice { grid-column:1/-1; margin:0; font-size:13px; }.history { margin-top:48px; }.section-title { margin-bottom:15px; }.empty,.error { background:#fff; border:1px dashed #bdcbd7; border-radius:12px; padding:26px; color:#5a6b7e; }.error { border-color:#e7b1ae; color:#8e322e; }
.table-wrap { overflow:auto; } table { width:100%; border-collapse:collapse; font-size:14px; background:#fff; } th { text-align:left; color:#526476; font-size:12px; } th,td { padding:14px 16px; border-bottom:1px solid #e7edf2; white-space:nowrap; } tbody tr:last-child td { border-bottom:0; } td a { color:var(--blue); font-weight:700; text-decoration:none; }.osv { min-width:1080px; table-layout:fixed; }.osv col.account-code { width:86px; }.osv col.account-title { width:300px; }.osv col.amount { width:116px; }.osv th,.osv td { padding:13px 10px; }.osv td:nth-child(2) { white-space:normal; }.osv th:not(:nth-child(-n+2)),.osv td:not(:nth-child(-n+2)),.materials th:nth-child(n+3),.materials td:nth-child(n+3) { text-align:right; font-variant-numeric:tabular-nums; }.materials { min-width:900px; }.materials td:nth-child(2) { white-space:normal; }.materials thead th { background:#eff5f9; }.materials tfoot th { background:#d9e8f2; color:var(--ink); }.osv thead th { background:#eff5f9; }.osv .group-total td { background:#e8f1f7; color:var(--ink); font-weight:800; border-top:1px solid #c3d5e1; }.osv .subaccount td:first-child { padding-left:26px; color:#526476; }.osv tfoot th { background:#d9e8f2; color:var(--ink); }.back { display:inline-block; color:var(--blue); text-decoration:none; font-weight:700; margin-bottom:28px; }.report-heading { display:flex; justify-content:space-between; align-items:start; margin-bottom:26px; }.report-heading p:not(.eyebrow) { color:#5a6b7e; margin:0; }
.user-create { padding:28px; display:grid; grid-template-columns:1fr 2fr; gap:24px; align-items:start; }.user-create h2 { margin:0; }.user-form { display:grid; grid-template-columns:1fr 1fr auto; gap:12px; align-items:end; }.user-form label { display:grid; gap:6px; color:#536273; font-size:12px; font-weight:700; }.user-form input,.user-form select,.inline-form input { min-width:0; border:1px solid #bfcdda; border-radius:8px; padding:10px; font:inherit; }.inline-form { display:flex; gap:8px; }.inline-form button,.secondary,.danger { padding:9px 11px; font-size:12px; }.secondary { background:#64748b; }.danger { background:var(--red); }.message { padding:12px 16px; border-radius:8px; background:#e0f5eb; color:var(--green); font-weight:700; }.invite-link { display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; margin:0 0 24px; padding:18px; border:1px solid #9bc9b7; border-radius:12px; background:#f1faf5; color:#285a47; }.invite-link p { grid-column:1/-1; margin:0; }.invite-link input { min-width:0; border:1px solid #b7d9c8; border-radius:8px; padding:10px; color:#1f4c3b; font:inherit; background:#fff; }.invite-link a { color:#fff; background:var(--blue); text-decoration:none; font-weight:800; border-radius:8px; padding:11px 14px; }
.login-page { display:grid; min-height:100vh; place-items:center; padding:24px; }.login-main { width:min(100%, 440px); padding:0; margin:0; }.login-card { padding:34px; }.login-card h1 { margin:0 0 10px; font-size:34px; letter-spacing:-.035em; }.login-card p:not(.eyebrow) { color:#5a6b7e; }.login-form { display:grid; gap:16px; margin-top:26px; }.login-form label { display:grid; gap:7px; color:#536273; font-size:13px; font-weight:700; }.login-form input { border:1px solid #bfcdda; border-radius:8px; padding:12px; font:inherit; }.login-error { padding:11px 13px; border-radius:8px; background:#fff0e8; color:#9a421f; font-weight:700; }
@media (max-width:760px) { main { padding:34px 16px; }.topbar { padding:12px 16px; align-items:flex-start; flex-direction:column; }.topbar-actions { width:100%; justify-content:space-between; flex-wrap:wrap; }.brand span { display:none; }.hero h1,.report-heading h1 { font-size:32px; }.report-card,.user-create { grid-template-columns:1fr; }.period-form { align-items:stretch; flex-direction:column; }.user-form { grid-template-columns:1fr; }.report-heading { gap:20px; flex-direction:column; } }
.osv-compare { min-width:900px; table-layout:fixed; }.osv-compare col.account-code { width:110px; }.osv-compare col.amount { width:130px; }
.osv-compare th,.osv-compare td { padding:11px 8px; }.osv-compare td:nth-child(2) { white-space:normal; }
.osv-compare thead th { background:#eff5f9; }.osv-compare thead tr:first-child th { border-bottom:1px solid #c3d5e1; }
.osv-compare th:not(:nth-child(-n+2)),.osv-compare td:not(:nth-child(-n+2)) { text-align:right; font-variant-numeric:tabular-nums; }
.osv-compare tr.diff td { background:#fff6f1; }.osv-compare tr.diff td:first-child { color:#b53a3a; font-weight:800; }
.osv-compare tr.group-total td { background:#e8f1f7; color:var(--ink); font-weight:800; border-top:1px solid #c3d5e1; }
.osv-compare tr.subaccount td:first-child { padding-left:26px; color:#526476; }
.osv-compare td.neg { color:#b53a3a; }.osv-compare tfoot th { background:#d9e8f2; color:var(--ink); }
.filter-note { color:#5a6b7e; font-size:13px; margin:0 0 12px; }.filter-note a { color:var(--blue); font-weight:700; text-decoration:none; }
.section-link { display:inline-block; background:var(--blue); color:#fff; text-decoration:none; font-weight:800; border-radius:8px; padding:12px 16px; white-space:nowrap; }
.period-preset-label { min-width:190px; }.period-preset { min-width:190px; }
.materials-compare { min-width:1200px; }
.materials-compare td:nth-child(4),.materials-compare td:nth-child(5) { white-space:normal; }
.materials-compare th:not(:nth-child(-n+5)),.materials-compare td:not(:nth-child(-n+5)) { text-align:right; font-variant-numeric:tabular-nums; }
.materials-compare tr.diff td { background:#fff6f1; }.materials-compare tr.diff td:first-child { color:#b53a3a; font-weight:800; }
.materials-compare tr.only td { background:#fdf3e2; }.materials-compare tr.only td:first-child { color:#9a6a1f; font-weight:800; }
.materials-compare tr.ok td { color:#444; }
.materials-compare td.neg { color:#b53a3a; }.materials-compare tfoot th { background:#d9e8f2; color:var(--ink); }
.materials-compare thead th { background:#eff5f9; }
.match-note { color:#8a94a3; font-size:11px; font-weight:600; }
.task-form-card { padding:24px; margin-bottom:26px; }.task-form-card h2 { margin:0 0 14px; }
.task-form { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px; align-items:end; }
.task-form label { display:grid; gap:6px; color:#536273; font-size:12px; font-weight:700; }
.task-form label.wide { grid-column:1/-1; }
.task-form input,.task-form select,.task-form textarea { border:1px solid #bfcdda; border-radius:8px; padding:9px; font:inherit; min-width:0; }
.task-form button { justify-self:start; }
.toolbar { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.toolbar input,.toolbar select { border:1px solid #bfcdda; border-radius:8px; padding:9px; font:inherit; }
.tasks { min-width:1200px; }.tasks td:nth-child(2),.tasks td:nth-child(8) { white-space:normal; }
.tasks th:not(:first-child):not(:nth-child(2)):not(:nth-child(8)) { white-space:nowrap; }
.task-title { font-weight:700; }.task-comment { color:#5a6b7e; font-size:12px; margin-top:4px; white-space:normal; }
.task-meta { color:#8a94a3; font-size:11px; margin-top:3px; }
.task-status { border-radius:999px; padding:4px 9px; font-size:12px; font-weight:700; background:#eef5fb; color:#234c73; white-space:nowrap; }
.task-решено .task-status,.task-закрыто .task-status { background:#e0f5eb; color:#127a5c; }
.task-в-работе .task-status,.task-ожидает-заказчика .task-status { background:#fff2cc; color:#9a6700; }
.task-открытый-вопрос .task-status,.task-требует-решения .task-status { background:#fce4d6; color:#9a421f; }
.inline-form { display:inline-flex; gap:6px; }.edit-actions { display:flex; gap:8px; grid-column:1/-1; }
.task-edit-row td { background:#f4f8fc; }
.stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:14px; margin:0 0 24px; }.stats > div { background:#fff; border:1px solid var(--line); border-radius:12px; padding:18px 20px; }.stats span,.stats small { display:block; color:#5a6b7e; font-size:12px; }.stats strong { display:block; margin:5px 0; font-size:25px; }.wagon-cost { min-width:780px; }.wagon-cost th:last-child,.wagon-cost td:last-child { text-align:right; font-variant-numeric:tabular-nums; }.wagon-cost tbody tr.depth-0 td { background:#e8f1f7; font-weight:800; }.wagon-cost tbody tr.depth-1 td { font-weight:700; }.wagon-cost tfoot th { background:#d9e8f2; color:var(--ink); }
