:root{--bg: #f4f5f7;--surface: #ffffff;--text: #222222;--text-sub: #555555;--border: #d4d7dd;--border-strong: #b8bcc4;--accent: #2f6fb3;--accent-hover: #285f99;--danger: #b3402f;--danger-hover: #99372a;--row-alt: #f0f2f5;--row-head: #e7eaef}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Segoe UI,Arial,sans-serif;font-size:14px;line-height:1.45}h1{font-size:20px;font-weight:600;margin:0 0 4px}h2{font-size:16px;font-weight:600;margin:0 0 12px}.app-header{background:var(--surface);border-bottom:1px solid var(--border);padding:10px 20px;display:flex;align-items:center;justify-content:space-between}.app-header .brand{font-weight:600;font-size:15px}.page{max-width:960px;margin:0 auto;padding:24px 20px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:20px}.login-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;padding:20px}.login-box{width:100%;max-width:360px;background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:28px 24px}.login-box h1{text-align:center;margin-bottom:20px}.field{margin-bottom:14px}.field label{display:block;font-size:13px;font-weight:600;color:var(--text-sub);margin-bottom:4px}.field input{width:100%;padding:8px 10px;font-size:14px;font-family:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:3px}.field input:focus{outline:none;border-color:var(--accent)}.btn{display:inline-block;padding:9px 16px;font-size:14px;font-family:inherit;font-weight:600;color:#fff;background:var(--accent);border:1px solid var(--accent);border-radius:3px;cursor:pointer}.btn:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-block{width:100%}.btn-secondary{color:var(--text);background:var(--surface);border:1px solid var(--border-strong)}.btn-secondary:hover{background:var(--row-alt);border-color:var(--border-strong)}.btn-danger{background:var(--danger);border-color:var(--danger)}.btn-danger:hover{background:var(--danger-hover);border-color:var(--danger-hover)}.error-msg{background:#fbecea;border:1px solid #e2b3ab;color:var(--danger);padding:8px 10px;border-radius:3px;font-size:13px;margin-bottom:14px}.data-table{width:100%;border-collapse:collapse;font-size:14px}.data-table th,.data-table td{text-align:left;padding:8px 12px;border:1px solid var(--border)}.data-table th{background:var(--row-head);font-weight:600;width:200px;color:var(--text-sub)}.data-table tbody tr:nth-child(2n) td{background:var(--row-alt)}.status{display:inline-flex;align-items:center;gap:6px}.dot{width:9px;height:9px;border-radius:50%;display:inline-block}.dot-green{background:#3f9142}.dot-grey{background:#9aa0a8}.dot-amber{background:#d69a2d}.dot-purple{background:#7a5aa6}.dot-blue{background:#2f6fb3}.dot-dark{background:#55606e}.dot-red{background:var(--danger)}.dot-cyan{background:#2d8fa3}.dot-orange{background:#c96f2d}.dot-teal{background:#2d9a7a}.checkbox-label{display:inline-flex;align-items:center;gap:6px;cursor:pointer}.checkbox-label input[type=checkbox]{width:16px;height:16px}.link{color:var(--accent);text-decoration:underline}.client-search{position:relative;flex:1}.client-search input{width:100%}.client-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:none;background:transparent;color:var(--text-sub);cursor:pointer;font-size:14px;line-height:1}.client-dropdown{position:absolute;z-index:20;left:0;right:0;top:calc(100% + 2px);margin:0;padding:4px 0;list-style:none;background:var(--surface, #fff);border:1px solid var(--border-strong, #c2c8d0);border-radius:6px;box-shadow:0 4px 14px #141e301f;max-height:260px;overflow-y:auto}.client-dropdown li{padding:7px 12px;cursor:pointer;font-size:14px}.client-dropdown li:hover{background:var(--surface-2, #f4f5f7)}.reward-block{border-top:1px dashed var(--border, #d8dce2);padding-top:12px;margin-top:4px}.radio-inline{display:inline-flex;align-items:center;gap:5px;margin-right:18px;font-weight:400;cursor:pointer}.comment-add{display:flex;gap:8px;align-items:flex-start}.comment-add textarea{flex:1;resize:vertical}.comment-list{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}.comment-list li{border-left:3px solid var(--border-strong, #c2c8d0);padding:4px 0 4px 12px}.comment-meta{display:flex;gap:10px;align-items:baseline;font-size:13px}.comment-text{white-space:pre-wrap;margin-top:2px}.pill{display:inline-block;font-size:12px;font-weight:600;padding:2px 9px;border-radius:20px;margin-left:12px;vertical-align:middle}.pill-primary{background:#e7eef7;color:#2f6fb3}.pill-repeat{background:#f7edd8;color:#b7791f}.grid-table tr.row-warn td{background:#fdf4dd}.grid-table tr.row-overdue td{background:#fbe4e0}.grid-table tr.row-warn:hover td{background:#f8ecc9}.grid-table tr.row-overdue:hover td{background:#f6d6d0}.deadline-flag{margin-left:8px;font-size:11px;font-weight:600;padding:1px 7px;border-radius:10px;white-space:nowrap}.flag-warn{background:#f5e6b8;color:#7a5a10}.flag-overdue{background:#f2c9c1;color:#8a2b1c}.suborder-bar{display:flex;flex-wrap:wrap;gap:24px;background:var(--surface, #fff);border:1px solid var(--border, #d8dce2);border-radius:8px;padding:10px 16px;margin-bottom:14px;font-size:14px}.suborder-bar .link{cursor:pointer}.shop-order{margin-bottom:16px}.shop-order-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}.shop-order-num{font-size:22px;font-weight:700}.shop-order-title{font-size:20px}.shop-order-head .muted{font-size:16px;margin-top:4px}.shop-progress{font-size:26px;font-weight:700;color:var(--accent);white-space:nowrap}.shop-steps{display:flex;flex-wrap:wrap;gap:12px}.shop-step{display:flex;align-items:center;gap:12px;flex:1 1 180px;min-height:64px;padding:12px 16px;border:1px solid var(--border);background:#fff;font-size:20px;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none}.shop-step input[type=checkbox]{width:32px;height:32px;flex-shrink:0;accent-color:var(--accent);cursor:pointer}.shop-step.done{background:#e8f2e9;border-color:#3f9142;color:#2c5e2e}.shop-step.readonly{cursor:default;opacity:.85}.shop-step.locked{opacity:.45;background:var(--bg)}.matrix-table .matrix-col{width:86px;text-align:center}.matrix-cell{text-align:center;font-size:16px;font-weight:700}.matrix-cell.m-done{background:#e8f2e9;color:#2c5e2e}.matrix-cell.m-current{background:#e7eef7;color:var(--accent)}.matrix-cell.m-wait{color:var(--text-dim)}.report-h2{font-size:17px;margin:22px 0 10px}.stage-cards{display:flex;flex-wrap:wrap;gap:10px}.stage-card{flex:1 1 120px;max-width:170px;background:#fff;border:1px solid var(--border);padding:10px 12px}.stage-card.empty{opacity:.55}.stage-card-count{font-size:26px;font-weight:700}.stage-card-label{font-size:13px;color:var(--text-sub);display:flex;align-items:center;gap:6px;margin-top:2px}.overdue-row .overdue-days{color:var(--danger);font-weight:700}.shop-empty{font-size:18px;padding:8px}.success-msg.shop-flash{font-size:20px;font-weight:700}.success-msg{background:#e8f2e9;border:1px solid #3f9142;color:#2c5e2e;padding:10px 14px;margin-bottom:14px;border-radius:6px}.muted{color:var(--text-sub)}.app-header-left{display:flex;align-items:center;gap:24px}.app-header-right{display:flex;align-items:center;gap:14px}.nav{display:flex;gap:4px}.nav-link{padding:6px 12px;font-size:14px;color:var(--text-sub);text-decoration:none;border-radius:3px}.nav-link:hover{background:var(--row-alt)}.nav-link.active{color:var(--text);font-weight:600;background:var(--row-head)}.user-chip{font-size:13px;color:var(--text);text-decoration:none}.user-chip:hover{text-decoration:underline}.page-wide{max-width:1180px}.page-title-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:14px}.toolbar-search{flex:1;min-width:200px;padding:8px 10px;font-size:14px;font-family:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:3px}.toolbar-search:focus{outline:none;border-color:var(--accent)}.toolbar select{padding:8px 10px;font-size:14px;font-family:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:3px}.toolbar-count{font-size:13px;white-space:nowrap}.panel-table{padding:0;overflow-x:auto}.grid-table{width:100%;border-collapse:collapse;font-size:14px}.grid-table thead th{text-align:left;padding:8px 12px;background:var(--row-head);border-bottom:1px solid var(--border-strong);font-weight:600;color:var(--text-sub);white-space:nowrap}.grid-table tbody td{padding:7px 12px;border-bottom:1px solid var(--border)}.grid-table tbody tr:nth-child(2n) td{background:var(--row-alt)}.grid-table .num{text-align:right;white-space:nowrap}.row-click{cursor:pointer}.row-click:hover td{background:#e9eef5!important}.empty-row{text-align:center;padding:24px 12px!important}.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.form-narrow{max-width:640px}.card-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.field-row{display:flex;gap:16px}.field-row .field{flex:1}.form-actions{display:flex;gap:10px;margin-top:8px}.subform{border-top:1px solid var(--border);margin-top:16px;padding-top:16px}.status-change{display:flex;align-items:center;gap:10px}.status-change select{padding:8px 10px;font-size:14px;font-family:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:3px}.field textarea,.field select{width:100%;padding:8px 10px;font-size:14px;font-family:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:3px}.field textarea:focus,.field select:focus{outline:none;border-color:var(--accent)}.panel-estimate{margin-top:20px}.btn-sm{padding:2px 8px;font-size:13px;line-height:1.4}.row-actions{display:flex;gap:6px;white-space:nowrap}.estimate-add{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.estimate-add select,.estimate-add input{padding:6px 8px;border:1px solid var(--border-strong);border-radius:2px;font-size:14px;font-family:inherit}.estimate-add .estimate-name{flex:1 1 220px}.estimate-add .estimate-unit{width:80px}.estimate-add .estimate-qty,.estimate-add .estimate-price{width:100px;text-align:right}.estimate-add select:focus,.estimate-add input:focus{outline:none;border-color:var(--accent)}.estimate-actions{display:flex;align-items:center;gap:12px;margin-top:14px}.field input:focus-visible,.field textarea:focus-visible,.field select:focus-visible,.toolbar-search:focus-visible,.toolbar select:focus-visible,.status-change select:focus-visible,.estimate-add input:focus-visible,.estimate-add select:focus-visible,.client-search input:focus-visible,.btn:focus-visible,.btn-secondary:focus-visible,.nav-link:focus-visible,.link:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.row-click:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.row-click:focus-visible td{background:#e9eef5}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:6px;border:3px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:#9aa0a8}@media print{.app-header,.toolbar,.form-actions,.panel-head .btn,.btn{display:none!important}body{background:#fff}.page,.page-wide{max-width:none;padding:0}.panel{border:none;padding:0}.panel-table{overflow:visible}}
