:root{--bg:#f6f8fb;--paper:#fff;--line:#e8edf3;--ink:#172333;--muted:#7b8798;--primary:#14745b;--deep:#102331;--green:#14815f;--blue:#2d6ca8;--amber:#a96b18;--radius:14px}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--ink);font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:not-allowed}.hidden{display:none!important}.shell{display:flex;min-height:100vh}.sidebar{width:238px;background:#152634;color:#d7e2e7;display:flex;flex-direction:column;flex-shrink:0;min-height:100vh;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:11px;padding:26px 20px 37px}.brandmark{width:40px;height:40px;border-radius:12px;background:#fff;color:#172b34;font-weight:900;font-size:24px;display:flex;align-items:center;justify-content:center;letter-spacing:-3px;padding-right:4px}.brandmark span{color:#28a87d}.brand strong{font-size:16px;letter-spacing:.5px}.brand em{font-style:normal;font-weight:450;color:#8ea9ac}.brand small{display:block;color:#8499a5;font-size:11px;margin-top:1px}.sidebar-head{font-size:10px;letter-spacing:1.7px;font-weight:750;color:#728999;margin:0 21px 11px}.sidebar nav{padding:0 11px 28px}.sidebar nav button{width:100%;border:0;background:none;color:#b8c5cf;text-align:left;padding:12px 14px;display:flex;align-items:center;gap:13px;border-radius:9px;margin:2px 0;font-weight:530}.sidebar nav button:hover{background:#243845;color:#fff}.sidebar nav button.active{background:#274b47;color:#e5fff3}.ico{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;font-size:21px;font-weight:400}.sidebar-bottom{margin:auto 18px 25px;border-top:1px solid #334652;padding-top:21px;display:flex;gap:10px;align-items:flex-start}.sidebar-bottom b{font-size:12px;color:#dce9ef}.sidebar-bottom small{display:block;font-size:11px;color:#8ba3b0;line-height:1.7;margin-top:3px}.online-dot{background:#44c78f;width:7px;height:7px;border-radius:50%;margin-top:7px;flex-shrink:0}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--line);padding:0 36px;display:flex;justify-content:space-between;align-items:center;gap:12px}.top-left,.top-controls{display:flex;align-items:center;gap:14px}.top-kicker{font-size:12px;font-weight:750;color:#788594;letter-spacing:.8px}.slash{color:#cbd3d9}#crumb{font-weight:600;color:#354557}.devlabel{font-size:10px;color:#a47935;letter-spacing:.7px;padding:6px 9px;border-radius:5px;background:#fcf3e4;font-weight:760}.top-controls select{border:1px solid #e2e7ed;border-radius:8px;padding:9px 29px 9px 11px;background-color:#fff;color:#334454;font-weight:550;max-width:240px}.avatar{height:35px;width:35px;border-radius:50%;background:#d7eee4;color:#206a50;display:grid;place-items:center;font-weight:800}.menu-toggle{display:none;border:0;background:transparent}.content{padding:32px 36px 48px;max-width:1620px;width:100%;margin:0 auto;flex:1}.page-intro{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:25px}.eyebrow{letter-spacing:1.55px;font-size:10px;color:var(--primary);font-weight:800;margin-bottom:7px}.page-intro h1{font-size:30px;margin:0 0 5px;font-weight:720;letter-spacing:-.8px}.page-intro p{color:var(--muted);margin:0;font-size:13px}.btn{border-radius:9px;padding:9px 15px;border:1px solid var(--line);background:#fff;color:#344958;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap}.btn:hover{border-color:#b3cec1}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:#0f6049}.btn-ghost{border:0;background:#f1f5f7}.btn-small{font-size:12px;padding:6px 10px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:23px}.stat{border:1px solid var(--line);background:#fff;border-radius:var(--radius);padding:21px 22px;min-height:132px}.stat-label{color:#7d8b9a;font-size:12px;font-weight:550}.stat-value{font-size:35px;font-weight:740;letter-spacing:-1.2px;margin-top:5px}.stat-foot{color:#90a0aa;font-size:11px;margin-top:3px}.grid-main{display:grid;grid-template-columns:1.48fr 1fr;gap:20px;margin-bottom:20px}.card{border:1px solid var(--line);background:#fff;border-radius:var(--radius);overflow:hidden}.card-head{padding:20px 21px 15px;display:flex;justify-content:space-between;gap:12px;align-items:center}.card-title{font-size:15px;font-weight:730}.card-sub{color:var(--muted);font-size:12px;margin-top:3px}.card-link{border:0;background:transparent;color:var(--primary);font-weight:700;font-size:12px}.card-body{padding:0 21px 20px}.mini-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #eef1f4}.mini-row:last-child{border-bottom:0}.mini-ident{flex:1;min-width:0}.mini-ident strong{font-size:13px}.mini-ident small{display:block;color:var(--muted);font-size:11px;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.num{border-radius:8px;background:#ecf3f4;color:#52717a;font-weight:720;font-size:12px;padding:6px;min-width:48px;text-align:center}.status{font-size:11px;border-radius:20px;padding:4px 9px;background:#eff2f5;color:#677484;font-weight:650;white-space:nowrap}.status[data-status="Договор"]{background:#e9f8f1;color:#238562}.status[data-status="Замер"],.status[data-status="Замер выполнен"]{background:#eaf2fb;color:#3876b6}.status[data-status="Отказ"]{background:#fff0ec;color:#bf6752}.status[data-status="Принято"]{background:#f4f1ff;color:#7962a8}.status[data-status="Офис"]{background:#fff5e6;color:#a9782a}.pill{font-size:10px;background:#f0f4f6;padding:3px 8px;border-radius:20px;color:#738697;font-weight:660}.brandpill{font-size:10px;font-weight:800;border-radius:4px;padding:3px 6px}.brandpill.k{background:#edf8ec;color:#3a8a4f}.brandpill.f{background:#fff1e4;color:#b47736}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;min-width:800px;background:#fff}.data-table th{font-size:10px;letter-spacing:.7px;text-transform:uppercase;color:#95a2b0;font-weight:700;text-align:left;background:#fbfcfd;border-bottom:1px solid var(--line);padding:13px 16px;white-space:nowrap}.data-table td{padding:13px 16px;border-bottom:1px solid #eef1f4;font-size:12.5px;max-width:260px}.data-table tbody tr{cursor:pointer}.data-table tbody tr:hover{background:#f8fbfa}.data-table .name{font-weight:690;color:#263849}.data-table .muted{color:#8b99a6;font-size:11px}.toolbar{padding:15px 19px;display:flex;align-items:center;justify-content:space-between;gap:13px;flex-wrap:wrap;border-bottom:1px solid var(--line)}.filters{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.input,.select,.textarea{border:1px solid #e1e6ed;background:#fff;border-radius:8px;color:#273d4d;padding:9px 11px;outline:none;min-width:0}.input:focus,.select:focus,.textarea:focus{border-color:#54a187;box-shadow:0 0 0 3px #dcefe8}.search{min-width:260px;width:300px}.field label{display:block;font-size:11px;font-weight:700;color:#81909d;margin-bottom:7px}.field .input,.field .select,.field .textarea{width:100%}.field .textarea{min-height:85px;resize:vertical}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid.one{grid-template-columns:1fr}.form-grid .full{grid-column:1/-1}.helper{color:#8d98a7;font-size:11px}.empty{color:#96a2ad;font-size:13px;text-align:center;padding:35px 20px}.empty strong{display:block;color:#637789;margin-bottom:5px}.progress-row{display:flex;align-items:center;gap:12px;margin:12px 0}.progress-label{width:142px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.progress-rail{flex:1;height:8px;background:#ecf1f1;border-radius:20px;overflow:hidden}.progress-fill{background:#438e77;height:100%;border-radius:20px}.progress-n{font-size:11px;color:#91a0a8;width:25px;text-align:right}.overview-footer{display:grid;grid-template-columns:1fr 1fr;gap:20px}.overlay{position:fixed;inset:0;background:rgba(12,23,32,.44);display:flex;justify-content:flex-end;z-index:25}.drawer{width:min(680px,100vw);background:#fff;box-shadow:-14px 0 50px #10232f20;height:100vh;overflow:auto;padding:28px 30px 70px}.drawer-close{border:0;background:#f0f3f6;width:32px;height:32px;border-radius:7px;font-size:20px;color:#7c8792}.drawer-title{display:flex;justify-content:space-between;align-items:start;gap:12px;margin-bottom:20px}.drawer-title h2{margin:4px 0 5px;font-size:24px;line-height:1.25}.tabs{display:flex;gap:7px;flex-wrap:wrap;margin:20px 0;border-bottom:1px solid var(--line);padding-bottom:10px}.tabs button{border:0;background:transparent;padding:9px 11px;color:#788998;font-size:12px;font-weight:650;border-radius:7px}.tabs button.active{background:#ebf5f0;color:#196b4f}.drawer-section{padding:18px 0 24px;border-bottom:1px solid #eef1f3}.drawer-section h3{font-size:14px;margin:0 0 16px}.source-note{padding:11px 12px;background:#f4f7f8;border-radius:8px;font-size:11px;color:#728392}.timeline{border-left:1px solid #dce7e5;margin-left:7px;padding-left:18px}.event{position:relative;margin-bottom:19px}.event:before{content:"";height:8px;width:8px;position:absolute;left:-23px;top:6px;background:#55a087;border:2px solid #fff;border-radius:50%}.event small{color:#9aa7b2;font-size:11px}.event p{margin:4px 0 0;white-space:pre-wrap;word-break:break-word;font-size:12.5px}.flex{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.spread{justify-content:space-between}.top-gap{margin-top:15px}.checkbox{accent-color:#197b5e;height:16px;width:16px;cursor:pointer}.task-done{text-decoration:line-through;color:#94a4ad}.cal-layout{display:grid;grid-template-columns:1fr 1fr;gap:18px}.day-label{margin:0 0 12px;font-size:15px;font-weight:710}.calendar-day{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden;margin:0 0 16px}.calendar-day .dayhead{font-weight:700;background:#f8fafb;padding:11px 15px;color:#52707b;font-size:12px}.calendar-event{padding:12px 15px;display:flex;gap:14px;border-top:1px solid #f0f3f5}.calendar-event .hour{min-width:95px;font-size:12px;color:#32806a;font-weight:760}.calendar-event .hour small{color:#9fadb7;font-size:10px;display:block}.calendar-event strong{font-size:12px}.calendar-event small{font-size:11px;color:#8c99a3;display:block}.quality{border-left:3px solid #e8ac4a;padding:12px 15px;background:#fdfbf6;margin-bottom:8px;border-radius:5px}.quality strong{font-size:12px}.quality p{font-size:12px;color:#7f8790;margin:4px 0}.money{font-weight:700;color:#297759}.actions-row{display:flex;justify-content:flex-end;margin-top:16px;gap:9px}.modal-backdrop{position:fixed;inset:0;background:#0d1c2980;display:grid;place-items:center;z-index:40;padding:20px}.modal{width:min(520px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:16px;padding:25px 27px;box-shadow:0 20px 60px #10203230}.modal h2{font-size:20px;margin:0 0 6px}.modal p{color:#8392a0;margin:0 0 20px;font-size:12px}.toast{position:fixed;bottom:23px;right:23px;background:#193a32;color:#fff;padding:13px 18px;border-radius:11px;box-shadow:0 12px 35px #12252630;z-index:80;font-size:12.5px;max-width:420px}.toast.error{background:#9b453d}.footer{padding:19px 36px;border-top:1px solid var(--line);color:#97a3b0;font-size:10px;display:flex;justify-content:space-between;gap:16px}.skeleton{padding:44px;text-align:center;color:#8e9ba7}.rows-scroll{max-height:460px;overflow:auto}.notice{padding:12px 14px;border:1px solid #f3e1be;background:#fffbf1;border-radius:10px;color:#926f31;font-size:12px;margin-bottom:20px}
@media(max-width:1120px){.stats{grid-template-columns:repeat(2,1fr)}.grid-main{grid-template-columns:1fr}.sidebar{width:207px}.content{padding:24px}.topbar{padding:0 23px}.search{width:230px;min-width:175px}.top-kicker{display:none}}@media(max-width:760px){.sidebar{position:fixed;z-index:18;transform:translateX(-101%);transition:transform .2s}.sidebar.show{transform:translateX(0)}.main{width:100%}.menu-toggle{display:inline-block}.topbar{padding:0 16px;height:62px}.top-controls{gap:7px}.top-controls select{max-width:155px;font-size:11px}.devlabel{display:none}.avatar{display:none}.content{padding:20px 13px}.page-intro h1{font-size:24px}.page-intro{align-items:flex-start;flex-direction:column}.stats{gap:9px}.stat{min-height:110px;padding:16px}.stat-value{font-size:30px}.grid-main,.overview-footer,.cal-layout{grid-template-columns:1fr}.search{min-width:0;width:100%}.toolbar{align-items:stretch}.filters{width:100%}.filters .select{flex:1}.drawer{padding:21px 17px 60px}.form-grid{grid-template-columns:1fr}.footer span{display:none}}
/* v0.2: календарь, сбор замечаний, защищённая страница входа */
.feedback-fab{position:fixed;z-index:400;right:22px;bottom:22px;padding:13px 18px;border:0;border-radius:12px;background:#176e60;color:white;box-shadow:0 8px 28px #163f3833;font-weight:700;cursor:pointer}
.feedback-fab:hover{background:#12574b}.feedback-picking *{cursor:crosshair!important}.feedback-picking .feedback-hover{outline:3px solid #21a787!important;outline-offset:2px;background-color:#e1faf3!important}
.feedback-entry{padding:17px 0;border-bottom:1px solid #e8edf3}.feedback-entry:last-child{border-bottom:0}.feedback-entry p{white-space:pre-wrap;line-height:1.6;font-size:14px}.feedback-reply{background:#f2f6f9;border-left:3px solid #83ada3;padding:8px 12px;margin:8px 0;border-radius:4px}.feedback-reply small{display:block;margin-top:5px}.feedback-entry .flex{flex-wrap:wrap;gap:10px;align-items:center;margin:10px 0}
.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 20px;border-bottom:1px solid #e7edf1}.calendar-toolbar .flex{align-items:center;gap:7px;flex-wrap:wrap}.calendar-toolbar strong{margin-left:16px;font-size:17px;text-transform:capitalize}
.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));overflow:auto}.cal-weekday{text-align:center;padding:11px 3px;background:#f6f8fa;font-weight:750;font-size:12px;color:#536879;border-bottom:1px solid #e7edf1}.cal-cell{min-width:0;min-height:120px;border-bottom:1px solid #e8edf3;border-right:1px solid #e8edf3;padding:5px 7px;position:relative}.cal-cell.dim{background:#f8fafb;color:#96a3ad}.cal-cell.today{box-shadow:inset 0 0 0 2px #187760}.cal-date{display:flex;justify-content:space-between;align-items:center;font-weight:700}.cal-date span{display:inline-flex;width:27px;height:27px;align-items:center;justify-content:center}.cal-cell.today .cal-date span{background:#14745b;color:white;border-radius:50%}.cal-add{width:23px;height:23px;border:0;border-radius:5px;background:#f0f5f5;color:#34736a;opacity:0}.cal-cell:hover .cal-add,.cal-add:focus{opacity:1}.cal-event{display:block;text-align:left;width:100%;border:0;border-left:3px solid #278a74;background:#e5f4ed;color:#174e42;padding:5px;border-radius:4px;margin:3px 0;line-height:1.25;font-size:11px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cal-event small{display:block;opacity:.8;text-overflow:ellipsis;overflow:hidden}.cal-event.cancelled{background:#eee;color:#888;text-decoration:line-through;border-color:#bbb}.cal-more{font-size:10px;color:#6d7686}.event-detail{line-height:1.7;color:#425363;padding:10px 0 16px}
.login-pane{position:fixed;inset:0;background:linear-gradient(140deg,#102331,#20483e);z-index:900;display:grid;place-items:center;padding:18px}.login-card{background:#fff;padding:33px;border-radius:20px;width:min(100%,410px);box-shadow:0 20px 80px #0003}.login-card h1{font-size:26px;margin:18px 0 4px}.login-card p{color:#637484}.login-card .brandmark{background:#102331;color:white}.login-card label{display:block;font-weight:700;margin:14px 0 6px}.login-card .input,.login-card .select{width:100%}.login-card small{display:block;margin-top:14px;color:#8c9299}.login-card .login-error{color:#b11e29;min-height:20px}
.btn-small{font-size:12px;padding:6px 10px}.top-controls #logoutBtn{margin-left:8px}.sidebar nav:has([data-page="feedback"]){padding-bottom:16px}
@media(max-width:840px){.calendar-grid{min-width:670px}.calendar-toolbar strong{font-size:14px}.feedback-fab{right:12px;bottom:12px;padding:10px 13px}}
