@import "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800&display=swap";:root{--sidebar:#0d2c47;--sidebar-2:#0a233a;--accent:#ffbf12;--bg:#f2f4f8;--card:#fff;--text:#1d2733;--muted:#7a8699;--border:#e6eaf0;--blue-badge-bg:#e7f0fb;--blue-badge-fg:#2563a8;--orange-badge-bg:#fdeede;--orange-badge-fg:#c2691a;--shadow:0 1px 3px #0d2c470f, 0 4px 12px #0d2c470f;--shadow-hover:0 6px 20px #0d2c471f}*{box-sizing:border-box}html,body,#root{width:100%;min-height:100vh;margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Montserrat,system-ui,sans-serif}button{cursor:pointer;font-family:inherit}.app{min-height:100vh;display:flex}.sidebar{background:var(--sidebar);color:#fff;z-index:20;flex-direction:column;width:210px;height:100vh;padding:26px 0;display:flex;position:fixed;top:0;left:0}.logo{border-bottom:1px solid #ffffff14;margin-bottom:18px;padding:0 24px 28px}.logo-main{letter-spacing:1px;font-size:19px;font-weight:800;line-height:1.15}.logo-main span{color:var(--accent)}.logo-sub{letter-spacing:2.5px;color:#ffffff80;margin-top:8px;font-size:9.5px;font-weight:600}.nav{flex-direction:column;gap:4px;padding:0 14px;display:flex}.nav-item{color:#ffffffb8;text-align:left;background:0 0;border:none;border-radius:9px;align-items:center;gap:10px;padding:11px 14px;font-size:14px;font-weight:600;transition:background .15s,color .15s;display:flex}.nav-item:hover{color:#fff;background:#ffffff0f}.nav-item.active{background:var(--accent);color:var(--sidebar)}.nav-icon{font-size:16px}.main{flex:1;max-width:1280px;margin-left:210px;padding:34px 40px 60px}.page-head{justify-content:space-between;align-items:center;margin-bottom:26px;display:flex}.page-head-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.page-title{margin:0;font-size:26px;font-weight:800}.page-sub{color:var(--muted);margin-top:4px;font-size:13px}.btn{border:none;border-radius:10px;padding:10px 18px;font-size:13.5px;font-weight:700;transition:transform .12s,box-shadow .15s,background .15s}.btn-primary{background:var(--accent);color:var(--sidebar)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 14px #ffbf1266}.btn-ghost{color:var(--sidebar);border:1px solid var(--border);background:#fff}.btn-ghost:hover{border-color:var(--accent)}.btn-dark{background:var(--sidebar);color:#fff}.btn-dark:hover{background:var(--sidebar-2)}.back-link{color:var(--muted);background:0 0;border:none;align-items:center;gap:6px;margin-bottom:18px;padding:0;font-size:13px;font-weight:600;display:inline-flex}.back-link:hover{color:var(--sidebar)}.grid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px;display:grid}.proj-grid{grid-template-columns:1fr}.card{background:var(--card);box-shadow:var(--shadow);border:1px solid #0000;border-radius:12px;padding:20px;transition:transform .15s,box-shadow .15s;position:relative}.card.clickable{cursor:pointer;color:inherit;text-decoration:none}.card.clickable:hover{box-shadow:var(--shadow-hover);border-color:var(--border);transform:translateY(-2px)}.proj-top{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.proj-name{margin:0;font-size:17px;font-weight:700}.proj-desc{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:38px;margin:0 0 14px;font-size:13px;line-height:1.45;display:-webkit-box;overflow:hidden}.proj-bottom{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;padding-top:13px;display:flex}.proj-dates{color:var(--muted);font-size:12.5px;font-weight:600}.proj-stats{gap:28px;display:flex}.proj-meta{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:flex-start;gap:10px 28px;padding-top:13px;display:flex}.meta-block{flex-direction:column;gap:2px;display:flex}.meta-val{font-size:15px;font-weight:700}.meta-label{letter-spacing:.5px;text-transform:uppercase;color:var(--muted);font-size:10.5px;font-weight:600}.worker-card{text-align:center;flex-direction:column;align-items:center;display:flex}.avatar{background:var(--sidebar);width:56px;height:56px;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-bottom:12px;font-size:24px;font-weight:800;display:flex}.avatar.lg{width:76px;height:76px;font-size:32px}.worker-name{margin:0 0 2px;font-size:16px;font-weight:700}.worker-rate{color:var(--muted);margin-bottom:14px;font-size:12.5px}.worker-stats{border-top:1px solid var(--border);justify-content:space-around;width:100%;padding-top:13px;display:flex}.detail-head{background:var(--card);box-shadow:var(--shadow);border-radius:14px;margin-bottom:24px;padding:26px;position:relative}.card-edit-btn{background:var(--sidebar);color:#fff;border:none;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;transition:background .15s;display:flex}.card-edit-btn:hover{background:var(--sidebar-2)}.pay-links-list{flex-direction:column;gap:6px;margin-bottom:8px;display:flex}.pay-link-row{border:1px solid var(--border);background:#fafbfd;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:7px 10px;display:flex}.pay-link-name{color:var(--sidebar);word-break:break-all;font-size:14px;text-decoration:none}.pay-link-name:hover{text-decoration:underline}.pay-link-actions{flex-shrink:0;gap:4px;display:flex}.pay-link-edit{flex-wrap:wrap;gap:8px;display:flex}.pay-link-edit input{flex:160px}.inhome-addr-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-top:6px;display:flex}.maps-link{color:var(--sidebar);font-size:13px;font-weight:600;text-decoration:none}.maps-link:hover{text-decoration:underline}.maps-wrap{display:inline-block;position:relative}.maps-dropdown{z-index:50;border:1px solid var(--border);background:#fff;border-radius:10px;flex-direction:column;min-width:140px;padding:6px;display:flex;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 8px 24px #0000001f}.maps-dropdown-item{color:var(--sidebar);border-radius:6px;padding:8px 10px;font-size:13px;font-weight:600;text-decoration:none}.maps-dropdown-item:hover{background:#f1f5f9}.maps-modal-list{flex-direction:column;gap:10px;display:flex}.inhome-paid-hint{font-size:13px}.stage-payment{flex-direction:column;gap:4px;margin-top:4px;margin-bottom:20px;display:flex}.inhome-line{margin:0 0 8px;font-size:14px}.inhome-amount{color:var(--sidebar);margin:4px 0 12px;font-size:16px;font-weight:700}.pay-links-pub{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.paid-notice{color:#1c7c4a;margin:6px 0 0;font-size:14px;font-weight:600}.est-section{flex-direction:column;gap:20px;margin-bottom:8px;display:flex}.est-contract{margin-bottom:0}.est-doc{border:1px solid var(--border);background:#fafbfd;border-radius:8px;padding:12px}.est-doc-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.est-current-head{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;display:flex}.est-ver{color:var(--text);font-size:14px;font-weight:700}.est-status{border-radius:4px;padding:2px 8px;font-size:12px;font-weight:600}.est-status-pending{color:#8a6d1a;background:#fff4d6}.est-status-approved{color:#1c7c4a;background:#e3f5ea}.est-status-changes_requested{color:#b3261e;background:#fde8e8}.est-comment{color:var(--text);margin:4px 0 8px;font-size:13px;font-style:italic}.est-comment-inline{font-size:12px;font-style:italic}.est-history{border-top:1px solid var(--border);margin-top:12px;padding-top:8px}.est-history-title{text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:11px}.est-history-row{flex-wrap:wrap;align-items:center;gap:8px;padding:4px 0;font-size:13px;display:flex}.est-file-actions{align-items:center;gap:6px;display:inline-flex}.est-pub-head{align-items:center;gap:8px;margin-bottom:10px;display:flex}.est-pub-file{margin-bottom:14px}.est-pub-file-label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:6px;font-size:12px;font-weight:600}.est-pub-file-actions{gap:6px;margin-top:6px;display:flex}.est-pub-invite{margin:4px 0 12px;font-size:14px}.est-pub-actions{flex-direction:column;gap:8px;display:flex}.est-pub-comment{width:100%;min-height:70px}.est-pub-btns{justify-content:flex-end;gap:8px;display:flex}.est-pub-history{border-top:1px solid var(--border);margin-top:16px;padding-top:10px}.est-pub-old-head{cursor:pointer;text-align:left;background:0 0;border:none;flex-wrap:wrap;align-items:center;gap:8px;width:100%;padding:8px 0;display:flex}.est-pub-caret{color:var(--muted)}.est-pub-old-body{padding:6px 0 10px}.contacts-section+.contacts-section{border-top:1px solid var(--border);margin-top:18px;padding-top:18px}.client-name-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=767px){.client-name-row{grid-template-columns:1fr}}.copy-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;align-items:center;padding:2px 4px;display:inline-flex}.copy-btn:hover{color:var(--sidebar);background:#eef2f7}.copy-ok{color:#1c7c4a;font-size:11px;font-weight:600}.multi-input{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.multi-input-row{align-items:center;gap:6px;width:100%;display:flex}.multi-input-row input{flex:1}.designers:not(:empty){margin-top:12px}.designers-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.designers-head .section-title{margin:0;font-size:14px}.modal-actions.start{justify-content:flex-start}.designer-list{flex-direction:column;gap:8px;margin-bottom:8px;display:flex}.designer-row{border:1px solid var(--border);background:#fafbfd;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.designer-info{flex-direction:column;gap:3px;min-width:0;display:flex}.designer-name{font-size:14px;font-weight:700}.designer-contact{align-items:center;gap:4px;font-size:13px;display:flex}.designer-contact a{color:var(--sidebar);word-break:break-all;text-decoration:none}.designer-contact a:hover{text-decoration:underline}.designer-actions{flex-shrink:0;gap:4px;display:flex}.designer-edit{border:1px solid var(--border);background:#fafbfd;border-radius:8px;padding:10px}.designer-pick-list{flex-direction:column;gap:6px;max-height:220px;margin:8px 0;display:flex;overflow-y:auto}.designer-pick-row{border:1px solid var(--border);background:#fff;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;display:flex}.designer-tab-list{flex-direction:column;gap:8px;display:flex}.designer-tab-row{justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.designer-tab-main{flex-direction:column;gap:3px;min-width:0;display:flex}.designer-tab-meta{color:var(--muted);font-size:12.5px}.tier-badge{background:var(--orange-badge-bg);color:var(--orange-badge-fg);white-space:nowrap;border-radius:999px;flex-shrink:0;padding:3px 9px;font-size:12px;font-weight:700}.tier-badge.tier-high{color:#1f7a47;background:#e3f4ea}.designer-detail{flex-direction:column;gap:12px;margin-bottom:14px;display:flex}.designer-website-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.designer-website-row input{flex:1;min-width:180px}.tier-year-head{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;display:flex}.tier-year-label{color:var(--sidebar);font-weight:700}.tier-year-vol{color:var(--text);font-size:13px}.tier-bar{background:var(--border);border-radius:999px;height:10px;overflow:hidden}.tier-bar-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .2s}.tier-bar-fill.tier-high{background:#2ba46a}.tier-hint{margin-top:6px;font-size:12px}.tier-past{border-top:1px solid var(--border);flex-direction:column;gap:6px;margin-top:14px;padding-top:12px;display:flex}.tier-past-row{align-items:center;gap:10px;display:flex}.tier-past-row .tier-year-vol{margin-left:auto}.designer-projects{flex-direction:column;gap:6px;display:flex}.designer-proj-link{border:1px solid var(--border);font:inherit;text-align:left;cursor:pointer;color:inherit;background:#fff;border-radius:6px;justify-content:space-between;align-items:center;gap:10px;padding:9px 12px;text-decoration:none;display:flex}.designer-proj-link:hover{border-color:var(--accent)}.designer-proj-name{color:var(--sidebar);font-weight:600}.designer-proj-meta{color:var(--muted);font-size:12.5px}.est-upload{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.est-label-input{width:220px;max-width:100%}.est-label{color:var(--sidebar);font-size:12.5px;font-weight:600}.stage-pay-buttons{flex-wrap:wrap;gap:8px;display:flex}.stage-pay{flex-direction:column;gap:8px;display:flex}.stage-ext{border:1px solid var(--border);background:#fafbfd;border-radius:8px;flex-direction:column;gap:8px;padding:10px;display:flex}.stage-ext-input{width:100%}.stage-ext-actions{flex-wrap:wrap;gap:8px;display:flex}.stage-paid-block{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.stage-paid-block .paid-notice{margin:0}.fab-consume{flex-direction:column;gap:10px;display:flex}.fab-consume-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.fab-consume-form{border:1px solid var(--border);background:#fafbfd;border-radius:8px;flex-direction:column;gap:8px;padding:10px;display:flex}.fab-consume-row{gap:8px;display:flex}.fab-consume-row input{flex:1}.fab-consume-actions{gap:8px;display:flex}.fab-consume-list{flex-direction:column;gap:6px;display:flex}.fab-consume-line{border:1px solid var(--border);background:#fafbfd;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:10px;padding:8px 10px;display:flex}.fab-consume-info{flex-direction:column;gap:2px;min-width:0;display:flex}.fab-consume-name{color:var(--sidebar);font-size:14px;font-weight:600}.fab-consume-meta{color:#4b5563;font-size:13px}.fab-consume-line-actions{flex-shrink:0;gap:4px;display:flex}.fab-consume-summary{border:1px solid var(--border);background:#fff;border-radius:8px;padding:10px 12px}.fab-summary-title{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:8px;font-size:12px;font-weight:700}.fab-summary-row{justify-content:space-between;align-items:center;gap:10px;padding:2px 0;font-size:13px;display:flex}.fab-summary-total{border-top:1px solid var(--border);color:var(--sidebar);justify-content:space-between;align-items:center;gap:10px;margin-top:8px;padding-top:8px;font-size:13.5px;font-weight:700;display:flex}.mat-stage{flex-direction:column;gap:18px;display:flex}.mat-block{flex-direction:column;gap:8px;display:flex}.mat-block-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.mat-h{color:var(--sidebar);margin:0;font-size:14px;font-weight:700}.mat-head-actions{flex-wrap:wrap;gap:8px;display:flex}.mat-checklist,.mat-list{flex-direction:column;gap:6px;display:flex}.mat-check-row,.mat-row{border:1px solid var(--border);background:#fafbfd;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:10px;padding:8px 10px;display:flex}.mat-check-main,.mat-row-main{flex-direction:column;gap:3px;min-width:0;display:flex}.mat-row-name{color:var(--sidebar);font-size:14px;font-weight:600}.defect-check{vertical-align:-2px;width:15px;height:15px;margin-right:7px}.mat-row-meta{color:#4b5563;font-size:13px}.mat-from{font-size:12px}.mat-link{color:var(--sidebar);word-break:break-word;font-size:14px;font-weight:600;text-decoration:none}.mat-check-actions,.mat-row-actions{flex-shrink:0;align-items:center;gap:6px;display:flex}.mat-allset{color:#1c7c4a;margin:2px 0 0;font-size:13px;font-weight:600}.mat-badge{border-radius:4px;width:fit-content;padding:2px 8px;font-size:11.5px;font-weight:700;display:inline-block}.mat-received{color:#1c7c4a;background:#e3f5ea}.mat-short{color:#8a6100;background:#fff2cc}.mat-awaiting,.mat-todo{color:#51607a;background:#eef1f6}.mat-free{color:#2563a8;background:#e7f0fb}.modal-wide{max-width:640px}.modal.modal-xwide{max-width:720px}.mat-lines-label{letter-spacing:.04em;text-transform:uppercase;color:#51607a;margin:12px 0 6px;font-size:12px;font-weight:700;display:block}.mat-lines{flex-direction:column;gap:10px;display:flex}.mat-line{border:1px solid var(--border);background:#fafbfd;border-radius:8px;padding:10px}.mat-line-off{opacity:.55}.mat-line-top{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.mat-line-inc{color:var(--sidebar);align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.mat-line-name{flex:1}.li-cols-order-v2{grid-template-columns:130px 1fr 100px 80px 110px 110px 40px}.li-cols-checkline{grid-template-columns:130px 1fr 100px 80px 110px auto}.li-cols-checkline-v2{grid-template-columns:130px 1fr 100px 80px 110px 110px auto}.li-cols-order-v3{grid-template-columns:130px 1fr 100px 80px 110px 50px 110px 40px}.li-com{justify-content:center;align-items:center;display:flex}.order-item-card{border:1px solid var(--border);background:#fafbfd;border-radius:12px;margin-bottom:12px;padding:14px}.order-item-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.order-item-num{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:13px;font-weight:700}.order-item-r1{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.order-item-r2{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto minmax(0,1fr);align-items:end;gap:12px;margin-top:12px;display:grid}.order-item-card .field{min-width:0;margin-bottom:0}.order-item-com{align-items:center}.order-item-com input{width:18px;height:18px}.order-add-row{grid-template-columns:1fr 1fr;gap:14px;display:grid}@media (width<=767px){.order-item-r1,.order-item-r2,.order-add-row{grid-template-columns:1fr}}.inv-picker{flex-direction:column;gap:4px;display:flex}.inv-picker-resolved{align-items:center;gap:6px;font-size:13px;display:flex}.inv-picker-resolved .inv-picker-name{word-break:break-word;font-weight:600}.inv-picker-new{color:#1c7c4a}.inv-picker-actions{gap:6px;display:flex}.recv-progress{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:600}.recv-progress.done{color:#1c7c4a}.checkline-actions{gap:8px;display:flex}.combo{flex-wrap:wrap;align-items:center;gap:6px;display:flex;position:relative}.combo-field{flex:auto;min-width:0;position:relative}.combo-input{width:100%;padding-right:36px}.combo-chevron{cursor:pointer;color:var(--sidebar);background:0 0;border:none;padding:4px 6px;font-size:18px;line-height:0;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.combo-list{z-index:60;border:1px solid var(--border);background:#fff;border-radius:10px;max-height:220px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 2px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0000001f}.combo-li{align-items:center;display:flex}.combo-option{text-align:left;cursor:pointer;color:var(--sidebar);background:0 0;border:none;border-radius:6px;flex:1;min-width:0;padding:8px 10px;font-size:14px;display:block}.combo-option:hover{background:#f1f5f9}.combo-item-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:6px;display:flex}.combo-item-btn:hover{color:var(--sidebar);background:#f1f5f9}.combo-add-row{flex:1 0 100%}.field-error{color:#dc2626;margin-top:4px;font-size:12px}.checkline-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.checkline-modal-actions{gap:10px;margin-top:18px;display:flex}@media (width<=767px){.checkline-fields{grid-template-columns:1fr}}.li-cols-delivery{grid-template-columns:96px 96px 116px 104px 1fr}.modal-scroll{flex-direction:column;max-height:90vh;display:flex}.modal-scroll-body{flex:auto;min-height:0;overflow-y:auto}.delivery-item-fields{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.delivery-item-fields .field,.delivery-item-inv{margin-bottom:0}.delivery-item-inv{margin-top:12px}@media (width<=767px){.delivery-item-fields{grid-template-columns:1fr}}.order-expand{margin:2px 0 6px;padding-bottom:4px;overflow-x:auto}.mat-order-totals{justify-content:space-between;gap:16px;margin-top:10px;font-size:13px;display:flex}.mat-order-invoice{margin-top:8px;font-size:13px}.lineitem-head,.lineitem-grid{align-items:center;gap:10px;display:grid}.lineitem-head{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);padding:0 12px 4px;font-size:12px;font-weight:700}.lineitem-head.li-cols-delivery{padding:0 10px 4px}.lineitem-row{border-bottom:1px solid var(--border);padding:10px 12px}.lineitem-row:last-child{border-bottom:none}.lineitem-grid input,.lineitem-grid select{width:100%}.li-cell{min-width:0}.li-trash{justify-content:center;display:flex}@media (width<=767px){.lineitem-head{display:none}.lineitem-grid{grid-template-columns:1fr;gap:10px}.li-cell:before{content:attr(data-label);text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:6px;font-size:12px;font-weight:700;display:block}.li-name-cell:before,.li-trash:before{content:none}.lineitem-row{border:1px solid var(--border);background:#fafbfd;border-radius:10px;padding:14px 12px;position:relative}.lineitem-row .li-name-cell{padding-right:40px}.lineitem-row .li-trash{position:absolute;top:12px;right:8px}}.section-head{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.btn-danger{color:#fff;background:#e3342f;justify-content:center;align-items:center;gap:8px;display:flex}.btn-danger:hover{background:#c92a26}.btn-block{width:100%;margin-top:8px}.detail-title{margin:0 0 8px;font-size:24px;font-weight:800}.detail-desc{color:var(--muted);max-width:640px;margin:0 0 12px;font-size:14px;line-height:1.55}.detail-date{color:var(--muted);font-size:12.5px;font-weight:600}.worker-detail-head{align-items:center;gap:20px;display:flex}.worker-detail-head .info{flex:1}.section{margin-bottom:28px}.section-title{letter-spacing:.2px;margin:0 0 14px;font-size:15px;font-weight:700}.pills{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:28px;display:grid}.pill{background:var(--card);box-shadow:var(--shadow);border-radius:12px;padding:18px}.pill-val{margin-bottom:4px;font-size:22px;font-weight:800}.pill-label{letter-spacing:.7px;text-transform:uppercase;color:var(--muted);font-size:10.5px;font-weight:600}.table-wrap{background:var(--card);box-shadow:var(--shadow);border-radius:12px;overflow:hidden}table{border-collapse:collapse;width:100%}thead th{text-align:left;letter-spacing:.6px;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border);background:#fafbfd;padding:13px 18px;font-size:10.5px;font-weight:700}tbody td{border-bottom:1px solid var(--border);padding:14px 18px;font-size:13.5px}tbody tr:last-child td{border-bottom:none}tbody tr.clickable{cursor:pointer}tbody tr.clickable:hover{background:#f8fafc}.td-name{font-weight:600}.td-right,.th-right{text-align:right}.th-sort{cursor:pointer;-webkit-user-select:none;user-select:none}.th-sort:hover{color:var(--sidebar)}.th-sort-caret{margin-left:4px}.week-nav{align-items:center;gap:12px;display:flex}.week-nav button{border:1px solid var(--border);width:32px;height:32px;color:var(--sidebar);background:#fff;border-radius:8px;justify-content:center;align-items:center;font-size:15px;font-weight:700;display:flex}.week-nav button:hover:not(:disabled){border-color:var(--accent);background:#fffdf5}.week-nav button:disabled{opacity:.35;cursor:not-allowed}.week-nav .week-name{text-align:center;min-width:96px;font-size:13px;font-weight:700}.week-header{background:var(--sidebar);color:#fff;border-radius:12px 12px 0 0;justify-content:space-between;align-items:center;padding:18px 22px;display:flex}.week-header .wh-block{flex-direction:column;gap:3px;display:flex}.week-header .wh-val{font-size:22px;font-weight:800}.week-header .wh-val.accent{color:var(--accent)}.week-header .wh-label{letter-spacing:.8px;text-transform:uppercase;color:#ffffff8c;font-size:10px;font-weight:600}.week-pay{background:var(--card);border-left:1px solid var(--border);border-right:1px solid var(--border);flex-direction:column;gap:10px;padding:12px 22px;display:flex}.week-pay-figures{color:var(--muted);flex-wrap:wrap;gap:18px;font-size:13px;display:flex}.week-pay-figures strong{color:var(--text);font-size:15px}.week-pay-figures strong.pos{color:#1f7a47}.week-pay-figures strong.neg{color:#c0392b}.week-pay-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.week-pay-advance{align-items:center;gap:6px;display:flex}.week-pay-advance input{width:150px}.week-pay-badge{color:#1f7a47;background:#e3f4ea;border-radius:999px;align-self:flex-start;padding:4px 10px;font-size:13px;font-weight:700}.week-pay-list{border-top:1px solid var(--border);flex-direction:column;gap:4px;padding-top:8px;display:flex}.week-pay-row{justify-content:space-between;align-items:center;gap:12px;font-size:13px;display:flex}.pay-summary,.payroll-breakdown{flex-direction:column;gap:6px;margin:10px 0;display:flex}.payroll-breakdown{padding:4px 2px}.pay-row{justify-content:space-between;gap:16px;font-size:14px;display:flex}.pay-row-total{border-top:1px solid var(--border);padding-top:6px;font-weight:700}.week-body{background:var(--card);box-shadow:var(--shadow);border-radius:0 0 12px 12px;overflow:hidden}.day-group{border-bottom:1px solid var(--border)}.day-group:last-child{border-bottom:none}.day-head{background:#fafbfd;justify-content:space-between;align-items:center;padding:13px 22px;display:flex}.day-name{font-size:13.5px;font-weight:700}.day-totals{color:var(--muted);gap:18px;font-size:12.5px;font-weight:600;display:flex}.day-totals .strong{color:var(--text)}.entry{border-top:1px solid var(--border);align-items:center;gap:14px;padding:13px 22px;display:flex}.entry-proj{flex:1;min-width:0;font-size:13.5px;font-weight:600}.badges{align-items:center;gap:8px;display:flex}.badge{white-space:nowrap;border-radius:20px;padding:4px 10px;font-size:11.5px;font-weight:700}.badge.in{background:var(--blue-badge-bg);color:var(--blue-badge-fg)}.badge.out{background:var(--orange-badge-bg);color:var(--orange-badge-fg)}.badge.progress{color:#1f9d57;background:#eafaf1}.entry-dur{text-align:right;min-width:56px;font-size:13px;font-weight:700}.arrow{color:var(--muted)}.loading{min-height:100vh;color:var(--muted);justify-content:center;align-items:center;font-size:16px;font-weight:600;display:flex}.empty{background:var(--card);box-shadow:var(--shadow);text-align:center;border-radius:14px;padding:56px 24px}.empty .emoji{margin-bottom:14px;font-size:42px}.empty .empty-title{margin:0 0 6px;font-size:17px;font-weight:700}.empty .empty-msg{color:var(--muted);max-width:360px;margin:0 auto;font-size:13.5px;line-height:1.5}.modal-backdrop{z-index:70;background:#0000006b;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-backdrop-top{z-index:80}.modal{background:#fff;border-radius:16px;width:100%;max-width:460px;padding:28px;box-shadow:0 20px 60px #00000040}.modal-title{margin:0 0 20px;font-size:19px;font-weight:800}.field{margin-bottom:16px}.field label{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:7px;font-size:12px;font-weight:700;display:block}:where(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]):not([type=color]),textarea,select){border:1px solid var(--border);color:var(--text);background:#fafbfd;border-radius:9px;padding:11px 13px;font-family:inherit;font-size:14px;transition:border-color .15s,background .15s}:where(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]):not([type=color]),textarea,select):focus{border-color:var(--accent);background:#fff;outline:none}:where(textarea){resize:vertical;min-height:80px}.field input,.field textarea,.field select{width:100%}.pw-field{position:relative}.pw-field input{padding-right:40px}.pw-toggle{position:absolute;top:50%;right:6px;transform:translateY(-50%)}.pw-toggle:hover{color:var(--sidebar);background:0 0}.modal-actions{justify-content:flex-end;align-items:center;gap:10px;margin-top:24px;display:flex}.modal-actions .btn{padding:10px 18px;font-size:13.5px}.modal-error{color:#c0392b;background:#fdeaea;border-radius:9px;margin-bottom:16px;padding:10px 13px;font-size:12.5px;font-weight:600}.form-success{color:#1e7e44;background:#e7f6ec;border-radius:9px;margin-bottom:16px;padding:10px 13px;font-size:12.5px;font-weight:600}.settings-form{max-width:460px}.muted{color:var(--muted)}.field-note{color:var(--muted);margin-top:6px;font-size:12px}.login-section{border-top:1px solid var(--border);margin-top:4px;padding-top:14px}.login-status{color:var(--text);font-size:13px;font-weight:700}.login-status.connected{color:#2f9e57}.login-error{margin-top:10px}.inv-row.low{box-shadow:inset 3px 0 0 var(--accent);background:#ffbf1212}.inv-low-badge{letter-spacing:.4px;text-transform:uppercase;color:#b88600;border:1.5px solid var(--accent);vertical-align:middle;border-radius:5px;margin-left:8px;padding:1px 6px;font-size:10px;font-weight:800;display:inline-block}.inv-tag{letter-spacing:.3px;white-space:nowrap;border:1.5px solid #0000;border-radius:6px;align-items:center;padding:3px 9px;font-size:11px;font-weight:700;display:inline-flex}.inv-tag.project{border-color:var(--accent);color:#b88600}.inv-tag.studio{border-color:var(--border);color:var(--muted)}.inv-actions-cell{white-space:nowrap}.inv-actions-cell .icon-btn+.icon-btn{margin-left:6px}.inv-row.archived td{color:var(--muted);background:#fcfcfd}.inv-archived-tag{letter-spacing:.4px;text-transform:uppercase;color:var(--muted);border:1.5px solid var(--border);vertical-align:middle;border-radius:5px;margin-left:8px;padding:1px 6px;font-size:10px;font-weight:800;display:inline-block}.inv-tabs{width:fit-content;margin:0 0 14px}.inv-group-head{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-top:1px solid var(--border);background:#fafbfc;padding:10px 12px 6px;font-size:12px;font-weight:700}.inv-detail-actions{justify-content:space-between}.inv-detail-actions-left{gap:10px;display:flex}.fin-panel{padding:22px}.fin-contract{margin-bottom:18px}.fin-contract-edit{gap:10px;max-width:320px;display:flex}.fin-contract-edit input{flex:1}.fin-figures{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}.fin-figure{flex-direction:column;gap:4px;display:flex}.fin-figure-val{color:var(--text);font-size:20px;font-weight:800}.fin-figure-val.pos{color:#2f9e57}.fin-figure-val.neg{color:#c0392b}.fin-figure-label{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-size:10.5px;font-weight:700}.fin-figure-info{color:var(--muted);cursor:pointer;vertical-align:middle;background:0 0;border:none;margin-left:5px;padding:0;display:inline-flex}.fin-figure-info:hover{color:var(--accent)}.fin-figure-info svg{width:14px;height:14px}.breakdown-total-cell{border-top:2px solid var(--border)}.breakdown-total-bar{justify-content:space-between;align-items:center;padding-top:10px;font-weight:700;display:flex}.breakdown-total-empty{border-top:2px solid var(--border);margin-top:4px}.fin-add{margin-bottom:16px;padding:18px}.fin-form-modal .fin-add{box-shadow:none;background:0 0;border:none;margin-bottom:0;padding:0}.budget-sub{margin-top:18px}.budget-sub:first-of-type{margin-top:0}.budget-sub-title{color:var(--sidebar);margin:0;font-size:14px;font-weight:700}.budget-head{margin-bottom:12px}.budget-head .section-title{margin:0}.budget-head-actions{align-items:center;gap:4px;display:flex}.budget-quickadd{display:inline-flex;position:relative}.quickmenu-backdrop{z-index:40;cursor:default;background:0 0;border:none;padding:0;position:fixed;inset:0}.budget-quickmenu{z-index:41;border:1px solid var(--border);background:#fff;border-radius:10px;flex-direction:column;min-width:160px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #00000024}.quickmenu-item{text-align:left;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:9px 11px;font-family:inherit;font-size:13.5px;font-weight:600}.quickmenu-item:hover{background:#f4f6f9}.budget-details-modal{max-width:760px;max-height:86vh;overflow-y:auto}.budget-details-modal table{width:100%}.budget-details-modal th,.budget-details-modal td{white-space:nowrap}.budget-details-modal .td-note{white-space:normal;min-width:180px}.fin-add-row{grid-template-columns:1fr 1fr 1fr;gap:14px;display:grid}.fin-hint{color:var(--muted);margin:0 0 12px;font-size:12px}.fin-check{color:var(--text);align-items:center;gap:8px;font-size:14px;font-weight:500;display:flex}.fin-check input{width:16px;height:16px}.fin-pos{color:#2f9e57}.fin-neg{color:#c0392b}.attach-list{flex-wrap:wrap;gap:10px;margin-bottom:10px;display:flex}.attach-item{position:relative}.attach-remove{border:1px solid var(--border);width:20px;height:20px;color:var(--text);cursor:pointer;background:#fff;border-radius:50%;padding:0;font-size:14px;line-height:18px;position:absolute;top:-7px;right:-7px;box-shadow:0 1px 3px #0d2c472e}.attach-remove:hover{background:#fde8e8;border-color:#e7a3a3}.attach-remove:disabled{opacity:.5;pointer-events:none}.attach-name{color:var(--text);word-break:break-all;font-size:13px}.attach-thumb{object-fit:cover;border:1px solid var(--border);cursor:pointer;background:#fafbfd;border-radius:8px;width:90px;height:90px}.attach-tile{border:1px solid var(--border);width:90px;height:90px;color:var(--muted);cursor:pointer;background:#fafbfd;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:6px;display:flex}.attach-tile-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:10px;overflow:hidden}.attach-pick{cursor:pointer;align-items:center;gap:7px;display:inline-flex}.attach-pick.is-disabled{opacity:.5;pointer-events:none}.attach-pick.attach-drag{border:1px dashed var(--sidebar);color:var(--sidebar);background:#eef3fb}.io-menu-wrap{display:inline-flex;position:relative}.io-menu-backdrop{z-index:40;position:fixed;inset:0}.io-menu{z-index:41;border:1px solid var(--border);background:#fff;border-radius:8px;flex-direction:column;min-width:140px;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 6px 20px #141e321f}.io-menu-item{text-align:left;cursor:pointer;color:var(--text);background:0 0;border:none;border-radius:6px;padding:8px 10px;font-size:14px}.io-menu-item:hover{background:#eef2f7}.io-help,.io-template,.io-counts{margin:0 0 12px}.io-template{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.io-counts{flex-wrap:wrap;gap:6px;font-size:13px;display:flex}.io-preview{max-height:40vh;margin-bottom:12px;overflow:auto}.io-result-line{margin:0 0 8px}.io-status-ok{color:#1c7c4a;font-weight:600}.io-status-skip{color:var(--muted)}.attach-modal{max-width:720px;max-height:88vh;overflow-y:auto}.attach-modal-head{word-break:break-all}.attach-preview-img{border-radius:8px;max-width:100%;display:block}.attach-preview-frame{border:1px solid var(--border);border-radius:8px;width:100%;height:70vh}.attach-viewer-list{flex-direction:column;gap:16px;display:flex}.attach-viewer-item{border:1px solid var(--border);background:#fafbfd;border-radius:8px;padding:10px}.attach-viewer-media{justify-content:center;display:flex}.attach-viewer-item .attach-preview-img{object-fit:contain;max-height:48vh}.attach-viewer-item .attach-preview-frame{height:48vh}.attach-viewer-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:8px;display:flex}.attach-viewer-links{gap:6px;display:flex}@media (width<=767px){.fin-figures{grid-template-columns:1fr 1fr}.fin-add-row{grid-template-columns:1fr;gap:0}}.filter-select{border:1px solid var(--border);color:var(--text);box-shadow:var(--shadow);background:#fff;border-radius:10px;padding:11px 14px;font-family:inherit;font-size:14px}.filter-select:focus{border-color:var(--accent);outline:none}.ref-select{align-items:stretch;gap:8px;display:flex}.ref-select select{flex:1}.ref-btn{border:1px solid var(--border);width:38px;color:var(--sidebar);cursor:pointer;background:#fff;border-radius:9px;flex:none;font-size:17px;font-weight:700;line-height:1}.ref-btn:hover:not(:disabled){border-color:var(--accent);background:#fffdf5}.ref-btn:disabled{opacity:.45;cursor:default}.ref-btn.ok{color:#2f9e57}.ref-add{gap:8px;margin-top:8px;display:flex}.ref-add input{flex:1}.ref-msg{color:#c0392b;background:#fdeaea;border-radius:8px;margin-top:8px;padding:8px 10px;font-size:12px;line-height:1.4}.managed-list{flex-direction:column;gap:10px;display:flex}.managed-row-actions{flex:none;gap:8px;display:flex}.managed-edit{flex-direction:column;gap:10px;padding:4px 0;display:flex}.managed-add{border-bottom:2px solid var(--border);flex-direction:column;margin-bottom:6px;padding-bottom:14px;display:flex}.inv-form-row{grid-template-columns:1fr 1fr;gap:14px;display:grid}.inv-detail{max-width:560px;max-height:86vh;overflow-y:auto}.inv-detail-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.inv-summary{gap:26px;padding:6px 0 2px;display:flex}.inv-summary-item{flex-direction:column;align-items:flex-start;gap:5px;display:flex}.inv-summary-val{color:var(--text);font-size:18px;font-weight:800}.inv-summary-label{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-size:10.5px;font-weight:700}.inv-meta{color:var(--text);flex-direction:column;gap:5px;margin-top:14px;font-size:13px;display:flex}.inv-meta b{color:var(--muted);font-weight:700}.inv-mv-groups{flex-wrap:wrap;gap:18px;display:flex}.inv-mv-group{flex-direction:column;gap:8px;min-width:150px;display:flex}.inv-mv-group-label{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-size:10.5px;font-weight:700}.inv-mv-group-btns{flex-direction:column;align-items:stretch;gap:8px;display:flex}.inv-mv-list{flex-direction:column;display:flex}.inv-mv-row{border-bottom:1px solid var(--border);padding:11px 0}.inv-mv-row:last-child{border-bottom:none}.inv-mv-main{justify-content:space-between;align-items:center;gap:12px;display:flex}.inv-mv-type{font-size:13.5px;font-weight:600}.inv-mv-right{align-items:center;gap:8px;display:flex}.inv-mv-qty{font-size:13.5px;font-weight:800}.inv-mv-qty.pos{color:#2f9e57}.inv-mv-qty.neg{color:#c0392b}.inv-mv-sub{color:var(--muted);flex-wrap:wrap;gap:6px;margin-top:3px;font-size:12px;display:flex}@media (width<=767px){.inv-form-row{grid-template-columns:1fr;gap:0}.inv-summary{gap:18px}}.toolbar{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:22px;display:flex}.search-input{border:1px solid var(--border);min-width:220px;color:var(--text);box-shadow:var(--shadow);background:#fff;border-radius:10px;flex:1;padding:11px 14px;font-family:inherit;font-size:14px}.search-input:focus{border-color:var(--accent);outline:none}.search-suggest-wrap{flex:1;min-width:220px;position:relative}.search-suggest-wrap .search-input{box-sizing:border-box;width:100%;min-width:0;padding-right:34px}.search-clear{cursor:pointer;color:var(--muted);z-index:10;background:0 0;border:none;border-radius:6px;padding:2px 4px;font-size:18px;line-height:1;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.search-clear:hover{color:var(--sidebar)}.search-suggest{z-index:20;border:1px solid var(--border);box-shadow:var(--shadow);background:#fff;border-radius:10px;max-height:240px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.search-suggest-item{cursor:pointer;border-radius:8px;padding:8px 12px;font-size:14px}.search-suggest-item:hover,.search-suggest-item.active{background:var(--accent);color:var(--sidebar)}.filter-group{border:1px solid var(--border);box-shadow:var(--shadow);background:#fff;border-radius:10px;padding:3px;display:flex}.filter-btn{color:var(--muted);background:0 0;border:none;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600;transition:background .15s,color .15s}.filter-btn:hover{color:var(--sidebar)}.filter-btn.active{background:var(--accent);color:var(--sidebar)}.status-badge{letter-spacing:.3px;white-space:nowrap;border:1.5px solid #0000;border-radius:6px;flex-shrink:0;align-items:center;padding:3px 10px;font-size:11px;font-weight:700;display:inline-flex}.status-badge.progress{border-color:var(--accent);color:#b88600;background:0 0}.status-badge.completed{color:#fff;background:#2f9e57;border-color:#2f9e57}.detail-actions{align-items:center;gap:12px;display:flex;position:absolute;top:18px;right:18px}.detail-head:not(.worker-detail-head) .detail-title{padding-right:160px}.td-icon{white-space:nowrap;text-align:right;width:1%}.icon-btn{border:1px solid var(--border);color:var(--muted);background:#fff;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.icon-btn:hover{color:var(--sidebar);border-color:var(--accent);background:#fffdf5}.delete-row{justify-content:flex-start;margin-top:8px;display:flex}.btn-danger.btn-sm,.btn-sm{gap:7px;width:auto;padding:9px 16px;font-size:13px}.modal-confirm{text-align:center;max-width:400px}.modal-confirm .modal-title{text-align:center}.confirm-text{color:var(--text);margin:0 0 4px;font-size:14px;line-height:1.5}.modal-confirm .modal-actions{justify-content:center}.row-highlight td{background:#fff7da;animation:1.6s ease-out flash-row}@keyframes flash-row{0%{background:var(--accent)}to{background:#fff7da}}.worker-row{text-align:left;align-items:center;gap:18px;display:flex}.worker-row-info{min-width:150px}.worker-row-info .worker-name{margin:0 0 2px}.worker-row-info .worker-rate{margin:0}.worker-row-stats{flex-wrap:wrap;gap:30px;margin-left:auto;display:flex}.worker-row-action{border-left:1px solid var(--border,#e2e6ee);flex-direction:column;flex-shrink:0;gap:8px;padding-left:18px;display:flex}.worker-row-action .btn{white-space:nowrap}.deactivated-banner{color:#8a5a00;background:#fff7e6;border:1px solid #f5d58a;border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;padding:12px 16px;font-weight:600;display:flex}.stepper-card,.donut-card{padding:24px}.stepper{flex-direction:column;gap:0;display:flex}.step{text-align:left;background:0 0;border:none;border-radius:0;flex-direction:row;align-items:flex-start;gap:16px;width:100%;padding:12px;display:flex;position:relative}.step:hover{background:#f8fafc}.step:before,.step:after{content:"";background:var(--border);z-index:0;width:2px;position:absolute;left:30px}.step:before{height:31px;top:0}.step:after{top:31px;bottom:0}.step:first-child:before,.step:last-child:after{display:none}.step.done:before,.step.filled:before,.step.current:before,.step.active:before,.step.done:after,.step.filled:after{background:var(--accent)}.step-dot{z-index:1;border:2px solid var(--border);width:38px;height:38px;color:var(--muted);background:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:700;transition:all .15s;display:flex;position:relative}.step-text{flex-direction:column;gap:2px;padding-top:3px;display:flex}.step-label{color:var(--muted);font-size:13px;font-weight:600;line-height:1.3}.step-duration{color:var(--muted);font-size:11px;font-weight:500}.step-status{color:var(--muted);font-size:11px;font-weight:600;line-height:1.2}.step.done .step-status,.step.filled .step-status{color:#b8860b}.step.current .step-status,.step.active .step-status{color:#2563eb}.step.done .step-dot{background:var(--accent);border-color:var(--accent);color:var(--sidebar)}.step.done .step-label{color:var(--text)}.step.current .step-dot{background:var(--sidebar);border-color:var(--sidebar);color:#fff;box-shadow:0 0 0 4px #0d2c471f}.step.current .step-label{color:var(--sidebar);font-weight:700}.donut-wrap{flex-wrap:wrap;align-items:center;gap:64px;display:flex}.donut-center{fill:var(--muted);font-size:11px;font-weight:600}.donut-center-big{fill:var(--text);font-size:20px;font-weight:800}.donut-legend{flex-direction:column;gap:10px;display:flex}.donut-legend.two-col{grid-template-columns:1fr 1fr;gap:10px 32px;display:grid}.donut-wrap-stack{flex-direction:column;align-items:center;gap:14px}.donut-caption{text-align:center;max-width:240px;margin:0}.cat-donuts{flex-wrap:wrap;gap:32px;margin-top:20px;display:flex}.cat-donut{flex:320px;min-width:0}.cat-donut-title{margin-bottom:12px;font-size:14px;font-weight:700}.legend-item{align-items:center;gap:10px;font-size:13px;display:flex}.legend-dot{border-radius:3px;flex-shrink:0;width:12px;height:12px}.legend-name{min-width:130px;font-weight:600}.legend-meta{color:var(--muted);font-weight:600}.head-btns{flex-shrink:0;gap:10px;display:flex}.td-caret{color:var(--muted);text-align:center;width:28px;font-size:11px}.expand-row>td{background:#f7f9fc;padding:0}.inner-table{border-collapse:collapse;width:100%}.inner-table thead th{background:#eef2f7}.inner-table td{font-size:12.5px}.subtotal-row td{color:var(--text);background:#fbfcfe;font-weight:700}.badge.manual{color:#5b6675;background:#eef0f4}.month-list{flex-direction:column;gap:10px;display:flex}.month-row{background:var(--card);box-shadow:var(--shadow);border-radius:12px;overflow:hidden}.month-head{background:0 0;border:none;align-items:center;gap:12px;width:100%;padding:15px 20px;font-family:inherit;display:flex}.month-head:hover{background:#f8fafc}.month-caret{color:var(--muted);font-size:12px}.month-label{font-size:14px;font-weight:700}.month-meta{color:var(--muted);margin-left:auto;font-size:13px;font-weight:700}.month-row .week-body{box-shadow:none;border-top:1px solid var(--border);border-radius:0}.sidebar-footer{border-top:1px solid #ffffff14;margin-top:auto;padding:16px 14px 0}.logout-link{color:#ffffff8c;text-align:left;background:0 0;border:none;border-radius:9px;align-items:center;gap:10px;width:100%;padding:10px 14px;font-size:13px;font-weight:600;transition:background .15s,color .15s;display:flex}.logout-link:hover{color:#fff;background:#ffffff0f}.step.readonly{cursor:default}.step.readonly:hover{background:0 0}.copy-row{gap:8px;display:flex}.copy-row input{color:var(--muted);flex:1;font-size:12.5px}.copy-row .btn{flex-shrink:0}.login-screen{background:var(--sidebar);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:#fff;border-radius:16px;width:100%;max-width:380px;padding:34px 30px;box-shadow:0 24px 70px #00000059}.login-logo{letter-spacing:1px;color:var(--sidebar);text-align:center;font-size:22px;font-weight:800}.login-logo span{color:var(--accent)}.login-sub{text-align:center;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin:8px 0 26px;font-size:11px;font-weight:600}.login-btn{justify-content:center;width:100%;margin-top:6px}.noaccess-card{text-align:center}.noaccess-title{color:var(--sidebar);margin-top:14px;font-size:18px;font-weight:700}.noaccess-msg{color:var(--muted);margin:8px 0 20px;font-size:14px;line-height:1.5}.public-screen{background:var(--bg);max-width:760px;min-height:100vh;margin:0 auto;padding:40px 20px 60px}.public-logo{letter-spacing:1px;color:var(--sidebar);text-align:center;margin-bottom:26px;font-size:18px;font-weight:800}.public-logo span{color:var(--accent)}.public-card{background:var(--card);box-shadow:var(--shadow);border-radius:14px;margin-bottom:20px;padding:26px}.public-head{justify-content:space-between;align-items:center;gap:14px;margin-bottom:10px;display:flex}.drawer-backdrop{z-index:60;background:#0000006b;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer{background:#fff;width:33vw;min-width:320px;height:100vh;padding:26px;animation:.22s ease-out drawer-in;overflow-y:auto;box-shadow:-12px 0 40px #0000002e}@keyframes drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:22px;display:flex}.drawer-eyebrow{letter-spacing:1px;text-transform:uppercase;color:var(--accent);margin-bottom:4px;font-size:11px;font-weight:700}.drawer-title{margin:0;font-size:20px;font-weight:800}.drawer-close{color:var(--muted);background:0 0;border:none;padding:4px;font-size:18px;line-height:1}.drawer-close:hover{color:var(--text)}.drawer-body{flex-direction:column;display:flex}.drawer-field{border-bottom:1px solid var(--border);flex-direction:column;gap:4px;padding:14px 0;display:flex}.drawer-label{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-size:11px;font-weight:700}.drawer-value{color:var(--text);white-space:pre-wrap;font-size:14px}.drawer-actions{gap:10px;margin-top:22px;display:flex}.task-card{flex-direction:column;display:flex}.task-actions{gap:8px;display:flex;position:absolute;top:14px;right:14px}.task-title{margin:0 0 6px;padding-right:104px;font-size:15px;font-weight:700}.task-notes{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 14px;font-size:13px;line-height:1.45;display:-webkit-box;overflow:hidden}.task-foot{align-items:center;margin-top:auto;display:flex}.task-avatars{display:flex}.task-avatar{background:var(--sidebar);width:30px;height:30px;color:var(--accent);border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;margin-left:-8px;font-size:13px;font-weight:800;display:flex}.task-avatar:first-child{margin-left:0}.task-unassigned{font-size:12.5px;font-weight:600}.task-tabs{width:fit-content;margin:0 0 16px}.task-stage-group{margin-bottom:18px}.task-group-head{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:0 0 10px;font-size:12px;font-weight:700}.task-stage-chip{color:var(--sidebar);background:#eef1f6;border-radius:4px;align-self:flex-start;margin-bottom:8px;padding:2px 8px;font-size:11px;font-weight:700}.task-card.task-done{opacity:.7}.task-card.task-done .task-title{text-decoration:line-through}.task-done-tag{color:#1c7c4a;margin-left:auto;font-size:11.5px;font-weight:700}.task-claim{border:1px solid var(--border);background:#fffdf5;border-radius:8px;flex-direction:column;gap:8px;margin:0 0 12px;padding:10px;display:flex}.task-claim-label{align-self:flex-start}.task-claim-actions{gap:8px;display:flex}.task-title-btn{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:none;font-family:inherit;display:block}.task-title-btn:hover{color:var(--accent)}.task-detail-modal{max-width:540px;max-height:88vh;overflow:hidden auto}.task-detail-head{margin-bottom:18px}.task-detail-stage{color:var(--sidebar);background:#eef1f6;border-radius:4px;margin-bottom:8px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.task-detail-titlerow{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.task-detail-title{margin:0 0 6px}.task-detail-headbtns{flex-shrink:0;gap:8px;display:flex}.task-detail-edit{flex-shrink:0}.task-detail-completed{margin:0 0 6px;font-size:12.5px}.task-detail-claim{margin-bottom:16px}.task-detail-assigned,.task-detail-empty{margin:0;font-size:13px}.subtask-list{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.subtask-row{border:1px solid var(--border);background:#fafbfd;border-radius:9px;flex-wrap:wrap;align-items:center;gap:8px 10px;max-width:100%;padding:9px 11px;display:flex}.subtask-main{flex-direction:column;flex:140px;gap:1px;min-width:0;display:flex}.subtask-title{text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:600;overflow:hidden}.subtask-assignee{font-size:11.5px}.subtask-status{white-space:nowrap;border-radius:5px;flex-shrink:0;padding:2px 8px;font-size:11px;font-weight:700}.subtask-status--todo{color:#5b6472;background:#eceff3}.subtask-status--in_progress{color:#1d5fbf;background:#e7f0fd}.subtask-status--review{color:#9a6700;background:#fdf3dd}.subtask-status--completed{color:#1c7c4a;background:#e6f4ec}.subtask-row-actions{flex-shrink:0;align-items:center;gap:4px;display:flex}.subtask-edit{flex-wrap:wrap}.subtask-edit input{flex:100%;width:auto;min-width:0}.subtask-edit-controls{flex-wrap:wrap;flex:100%;gap:8px;display:flex}.subtask-edit-controls select{flex:130px;width:auto;min-width:0}.subtask-edit .subtask-row-actions{flex:100%;justify-content:flex-end}.subtask-add{flex-wrap:wrap;align-items:center;gap:8px;max-width:100%;display:flex}.subtask-add input{flex:200px;width:auto;min-width:0}.subtask-add select{flex:130px;width:auto;min-width:0}.subtask-add .btn{flex:none}.board-head-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.board-filter{min-width:150px}.task-board{grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:14px;display:grid}.board-col{border:1px solid var(--border);background:#f4f6f9;border-radius:12px;min-width:0;padding:10px;transition:background .15s,border-color .15s}.board-col--dragover{border-color:var(--accent);background:#e9f0fb}.board-col-head{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);justify-content:space-between;align-items:center;padding:4px 6px 10px;font-size:12px;font-weight:800;display:flex}.board-col-count{color:var(--sidebar);background:#e2e7ef;border-radius:20px;padding:1px 8px;font-size:11px}.board-col-body{flex-direction:column;gap:10px;min-height:24px;display:flex}.board-col-empty{text-align:center;margin:0;padding:10px 0;font-size:12.5px}.board-card{border:1px solid var(--border);cursor:grab;background:#fff;border-radius:10px;padding:11px 12px;box-shadow:0 1px 3px #0000000d}.board-card:active{cursor:grabbing}.board-card-dragging{opacity:.5}.board-card .task-stage-chip{margin-bottom:7px;display:inline-block}.board-card-title{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:none;margin-bottom:8px;padding:0;font-family:inherit;font-size:14px;font-weight:700;line-height:1.35;display:block}.board-card-title:hover{color:var(--accent)}.board-card-meta{color:var(--muted);flex-wrap:wrap;gap:4px 8px;margin-bottom:10px;font-size:11.5px;display:flex}.board-card-foot{justify-content:space-between;align-items:center;gap:8px;display:flex}.board-task-card{border-left:3px solid var(--sidebar)}.board-done-count{color:var(--sidebar);white-space:nowrap;background:#eef1f6;border-radius:5px;padding:2px 7px;font-size:11px;font-weight:700}.board-completed-date{margin:8px 0 0;font-size:11px}.board-card-highlight{animation:2.2s ease-out board-card-pulse}@keyframes board-card-pulse{0%,60%{border-color:var(--sidebar);box-shadow:0 0 0 3px #0d2c4747,0 1px 3px #0000000d}to{box-shadow:0 1px 3px #0000000d}}.board-subtask-card{border-left:3px solid var(--muted);cursor:pointer;background:#f7f9fc}.board-subtask-parent{text-transform:uppercase;letter-spacing:.4px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px;font-size:10.5px;font-weight:700;display:block;overflow:hidden}.board-subtask-title{text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:9px;font-size:13px;font-weight:700;line-height:1.3;display:-webkit-box;overflow:hidden}.board-subtask-foot{justify-content:space-between;align-items:center;gap:8px;display:flex}.board-subtask-avatar{width:24px;height:24px;margin-left:0;font-size:11px}.board-subtask-foot .subtask-status{flex-shrink:0}@media (width<=900px){.task-board{scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;padding-bottom:6px;display:flex;overflow-x:auto}.board-col{scroll-snap-align:start;flex:0 0 78%;max-width:320px}}.te-pending-tag{text-transform:uppercase;letter-spacing:.4px;color:#8a6100;background:#fff2cc;border-radius:4px;margin-left:8px;padding:1px 6px;font-size:10.5px;font-weight:700;display:inline-block}.wb-pending .te-amount{color:var(--muted);opacity:.6}.te-paid-tag{text-transform:uppercase;letter-spacing:.4px;color:#1f7a47;background:#e3f4ea;border-radius:4px;margin-left:8px;padding:1px 6px;font-size:10.5px;font-weight:700;display:inline-block}.wb-paid{background:#f4faf6}.te-self-tag{cursor:help;color:var(--muted);margin-left:6px;font-size:11px;display:inline-block}.wb-check-cell{text-align:center;width:28px}.wb-day-mark{margin-left:auto}.wb-approve{margin-right:4px}.proj-pending-badge{color:#8a6100;vertical-align:middle;background:#fff2cc;border:1px solid #f1d27a;border-radius:4px;margin-left:8px;padding:1px 7px;font-size:11px;font-weight:700;display:inline-block}.filter-count{color:#fff;background:#e3342f;border-radius:9px;min-width:16px;margin-left:6px;padding:0 5px;font-size:11px;font-weight:800;display:inline-block}.worker-pending-dot{vertical-align:middle;background:#e3342f;border-radius:50%;width:9px;height:9px;margin-left:8px;display:inline-block}.stage-tasks-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.stage-tasks-actions{flex-wrap:wrap;gap:8px;display:flex}.stage-task-tabs{flex-wrap:wrap;width:fit-content;max-width:100%;margin:0 0 12px}.stage-tasks-empty{margin:0;font-size:13px}.stage-task-list{flex-direction:column;gap:8px;display:flex}.stage-task-row{text-align:left;border:1px solid var(--border);cursor:pointer;background:#fafbfd;border-radius:9px;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:9px 11px;font-family:inherit;display:flex}.stage-task-row:hover{border-color:var(--accent)}.stage-task-title{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13.5px;font-weight:600;overflow:hidden}.stage-task-meta{flex-shrink:0;align-items:center;gap:8px;display:flex}.stage-task-icons{flex-shrink:0;align-items:center;gap:2px;display:flex}.stage-task-date{white-space:nowrap;font-size:11.5px}.fab-instr-list{flex-direction:column;gap:8px;margin-bottom:10px;display:flex}.fab-instr-row{border:1px solid var(--border);background:#fafbfd;border-radius:9px;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:8px 11px;display:flex}.fab-instr-name{text-overflow:ellipsis;white-space:nowrap;flex:140px;min-width:0;font-size:13.5px;font-weight:600;overflow:hidden}.fab-instr-badge{cursor:pointer;border:none;flex-shrink:0;font-family:inherit}.fab-instr-name-input{flex:1;min-width:0}.fab-instr-actions{flex-shrink:0;align-items:center;gap:4px;display:flex}.fab-instr-add{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.fab-instr-add .fab-instr-name-input{flex:200px}.checkbox-list{border:1px solid var(--border);background:#fafbfd;border-radius:9px;flex-direction:column;gap:2px;max-height:200px;padding:6px;display:flex;overflow-y:auto}.checkbox-item{cursor:pointer;border-radius:7px;align-items:center;gap:10px;padding:8px 10px;font-size:13.5px;font-weight:600;display:flex}.checkbox-item:hover{background:#fff}.checkbox-item input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.wb-table{border-collapse:collapse;width:100%}.wb-table td{padding:11px 16px;font-size:12.5px}.wb-table thead th{padding:12px 16px}.wb-day-row>td{padding:0}.wb-day-bar{color:var(--text);background:#eef2f7;justify-content:space-between;align-items:center;padding:9px 16px;font-size:12.5px;font-weight:700;display:flex}.wb-total-row td{color:var(--text);background:#fbfcfe;font-weight:700}.wb-week-total-row td{border-top:2px solid var(--border);background:#eef2f8;font-weight:800}.wb-highlight td{background:#dc26261f}.wb-del{color:var(--muted);cursor:pointer;opacity:.6;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;transition:color .15s,opacity .15s;display:inline-flex}.wb-del:hover{color:#e3342f;opacity:1}.wb-edit:hover{color:var(--sidebar);opacity:1}.weeks-table td{font-size:13px}.weeks-table .td-icon{color:var(--muted);font-weight:700}.weeks-table tr.clickable:hover .td-icon{color:var(--sidebar)}.weeks-table tr.week-unpaid td{color:#c0392b}.step.selected .step-dot{border-color:var(--accent);box-shadow:0 0 0 4px #ffbf1252}.step.selected .step-label{color:var(--sidebar);font-weight:700}.step.readonly.selected{cursor:pointer}.stage-hint{text-align:center;color:var(--muted);margin:16px 0 0;font-size:12px}.client-notes-card{background:#fffdf3;border:1px solid #f3e6bd;border-radius:12px;margin-top:18px;padding:18px 20px}.client-notes-title{color:var(--sidebar);margin:0 0 8px;font-size:14px;font-weight:800}.client-notes-body{color:var(--text);white-space:pre-wrap;margin:0;font-size:13.5px;line-height:1.55}.drawer-current{border-top:1px solid var(--border);margin-top:28px;padding-top:22px}.current-stage-btn{justify-content:center;width:100%}.current-stage-label{text-align:center;color:#1f9d57;background:#eafaf1;border-radius:10px;width:100%;padding:12px;font-size:13.5px;font-weight:700}.step.gray .step-dot{border-color:var(--border);color:var(--muted);background:#fff}.step.outline .step-dot{border-color:var(--accent);color:#b8860b;background:#fff}.step.filled .step-dot{background:var(--accent);border-color:var(--accent);color:var(--sidebar)}.step.active .step-dot{box-shadow:0 0 0 2px #fff,0 0 0 4px #2563eb}.step.active .step-label{color:#2563eb;font-weight:700}.btn-outline{color:#5b6473;border:1.5px solid var(--border);background:#fff}.btn-outline:hover{background:#f2f4f8;border-color:#c2c9d6}.btn-danger-outline{color:#e3342f;background:#fff;border:1.5px solid #e3342f}.btn-danger-outline:hover{background:#fdecec}.drawer-future-msg{text-align:center;color:var(--muted);margin:0;padding:12px;font-size:13px;font-weight:600}.icon-btn-sm{color:var(--muted);background:0 0;border:none;border-radius:6px;flex-shrink:0;align-items:center;padding:4px;display:inline-flex}.icon-btn-sm:hover{color:#e3342f;background:#fdecec}.doc-card{padding:16px}.doc-tabs{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.doc-tab{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;display:inline-flex}.doc-tab.active{background:var(--text);color:#fff;border-color:var(--text)}.doc-tab-count{opacity:.7;background:#0d2c4714;border-radius:999px;padding:0 6px;font-size:11px}.doc-tab.active .doc-tab-count{opacity:.9;background:#fff3}.doc-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;display:flex}.doc-group-title{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:14px 0 6px;font-size:12px;font-weight:600}.doc-row{border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;padding:8px 10px;display:flex}.doc-row-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:14px;overflow:hidden}.doc-row-actions{flex-shrink:0;gap:4px;display:inline-flex}.doc-row-actions .icon-btn-sm:hover{color:var(--sidebar);background:var(--bg)}.doc-empty{padding:8px 2px}.access-new-role{align-items:center;gap:10px;margin-bottom:12px;padding:12px 16px;display:flex}.access-new-role input{flex:1;min-width:0}.access-role,.access-worker{margin-bottom:10px;padding:14px 16px}.access-role-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.access-role-name{flex:1;min-width:120px;font-weight:600}.access-admin-flag{white-space:nowrap;align-items:center;gap:6px;font-size:13px;display:inline-flex}.access-admin-flag input{width:auto}.access-badge{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:1px 8px;font-size:11px}.access-role-del{margin-left:auto}.access-grid{flex-wrap:wrap;gap:8px;display:flex}.access-chip{border:1px solid var(--border);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:6px 10px;font-size:13px;display:inline-flex}.access-chip input{width:auto}.access-chip.on{background:var(--blue-badge-bg);border-color:var(--blue-badge-fg);color:var(--blue-badge-fg)}.access-chip.locked{opacity:.6;cursor:not-allowed}.access-worker-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.access-worker-name{flex:1;min-width:120px;font-weight:600}.access-worker-head select{width:auto;min-width:140px}.access-overrides{border-top:1px solid var(--border);flex-direction:column;gap:6px;margin-top:12px;padding-top:10px;display:flex}.access-ov-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.access-ov-label{font-size:13px}.access-ov-base{color:var(--muted);font-size:12px}.access-ov-seg{flex-shrink:0}.access-ov-title{margin-bottom:8px;font-size:13px;font-weight:600}.access-ov-note{color:var(--muted);margin-top:10px;font-size:12px}.access-uionly-hint{border-left:3px solid var(--accent);padding-left:10px}.access-panel-role{max-width:320px;margin-bottom:14px}.panel-tree,.panel-node{flex-direction:column;gap:8px;display:flex}.panel-children{border-left:2px solid var(--border);flex-wrap:wrap;gap:8px;margin-left:22px;padding-left:12px;display:flex}.stage-config-list{flex-direction:column;gap:4px;margin:8px 0 4px;display:flex}.stage-config-row{border:1px solid var(--border);cursor:pointer;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;font-size:14px;display:flex}.stage-config-row.off{opacity:.55}.stage-config-row input{width:auto}.stage-config-name{flex:1}.item-photo-actions{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.dispose-row{border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:10px;display:flex}.dispose-info{flex-direction:column;gap:2px;min-width:0;display:flex}.dispose-name{font-size:14px;font-weight:600}.dispose-actions,.dispose-sell{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.dispose-sell input{width:110px}.dispose-done{color:var(--muted);font-size:13px;font-weight:600}.mat-list{flex-direction:column;gap:2px;margin-top:10px;display:flex}.mat-row{border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;font-size:13.5px;display:flex}.mat-row:hover{background:#f8fafc}.mat-link{color:var(--blue-badge-fg);font-weight:600;text-decoration:none}.mat-link:hover{text-decoration:underline}.cn-row{border:1px solid var(--border);background:#fff;border-radius:9px;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px;padding:9px 10px;display:flex}.cn-content{white-space:pre-wrap;font-size:13.5px;line-height:1.45}.cn-actions{flex-shrink:0;gap:4px;display:flex}.cn-edit{gap:8px;margin-bottom:8px;display:flex}.cn-edit input,.cn-edit textarea{flex:1;min-width:0}.unread-dot{vertical-align:middle;background:#e3342f;border-radius:50%;width:9px;height:9px;margin-left:8px;display:inline-block}.msg-card{padding:0;overflow:hidden}.msg-tabs{border-bottom:1px solid var(--border);background:#fafbfd;flex-wrap:wrap;gap:4px;padding:12px 14px;display:flex}.msg-tab{border:1px solid var(--border);color:var(--muted);background:#fff;border-radius:8px;align-items:center;gap:7px;padding:7px 13px;font-size:12.5px;font-weight:700;display:inline-flex}.msg-tab:hover{color:var(--sidebar)}.msg-tab.active{background:var(--sidebar);color:#fff;border-color:var(--sidebar)}.msg-tab-badge{color:#fff;background:#e3342f;border-radius:9px;justify-content:center;align-items:center;min-width:17px;height:17px;padding:0 5px;font-size:10.5px;font-weight:800;display:inline-flex}.msg-thread{flex-direction:column;gap:12px;max-height:420px;padding:20px;display:flex;overflow-y:auto}.msg{display:flex}.msg.admin{justify-content:flex-start}.msg.client{justify-content:flex-end}.msg-bubble{border-radius:14px;max-width:76%;padding:10px 14px}.msg.admin .msg-bubble{background:var(--sidebar);color:#fff;border-bottom-left-radius:4px}.msg.client .msg-bubble{background:var(--accent);color:var(--sidebar);border-bottom-right-radius:4px}.msg-author{letter-spacing:.3px;text-transform:uppercase;opacity:.75;margin-bottom:3px;font-size:10.5px;font-weight:800}.msg-content{white-space:pre-wrap;font-size:13.5px;line-height:1.45}.msg-time{opacity:.65;margin-top:5px;font-size:10.5px}.msg-empty{text-align:center;color:var(--muted);margin:0;padding:28px 20px;font-size:13px}.msg-composer{border-top:1px solid var(--border);align-items:flex-end;gap:10px;padding:14px;display:flex}.msg-composer textarea{resize:vertical;flex:1;min-height:44px}.msg-composer .btn{flex-shrink:0}.public-discussion{border-top:1px solid var(--border);margin-top:18px;padding-top:16px}.public-discussion .msg-thread,.public-card>.msg-thread{padding:4px 0 12px}.public-discussion .msg-composer,.public-card>.msg-composer{border-top:none;padding:0}.mobile-topbar,.tabbar,.logo-mono{display:none}@keyframes page-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes modal-pop{0%{opacity:0;transform:translateY(20px)scale(.97)}to{opacity:1;transform:none}}@keyframes backdrop-fade{0%{opacity:0}to{opacity:1}}@keyframes badge-fade{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}@media (width>=768px) and (width<=1023px){.sidebar{width:64px;padding:20px 0}.logo{text-align:center;padding:0 0 18px}.logo-main,.logo-sub{display:none}.logo-mono{letter-spacing:1px;color:var(--accent);text-align:center;font-size:20px;font-weight:800;display:block}.nav{padding:0 10px}.nav-item,.logout-link{justify-content:center;gap:0;padding:13px 0;position:relative}.nav-label{display:none}.sidebar-footer{padding:16px 10px 0}.nav-item:after,.logout-link:after{content:attr(data-tip);background:var(--sidebar-2);color:#fff;white-space:nowrap;opacity:0;pointer-events:none;z-index:60;box-shadow:var(--shadow);border-radius:7px;margin-left:12px;padding:6px 10px;font-size:12px;font-weight:600;transition:opacity .15s;position:absolute;top:50%;left:100%;transform:translateY(-50%)}.nav-item:hover:after,.logout-link:hover:after{opacity:1}.main{max-width:none;margin-left:64px;padding:28px 28px 44px}.proj-grid{grid-template-columns:repeat(2,1fr)}.page-anim{animation:.22s ease-out page-in}.modal{max-width:520px;animation:.25s ease-out modal-pop}.status-badge{animation:.3s badge-fade}.card{transition:transform .1s,box-shadow .15s}.card.clickable:active{transform:scale(.98)}}@media (width<=767px){.app{display:block}.sidebar{display:none}.mobile-topbar{background:var(--sidebar);color:#fff;z-index:45;justify-content:space-between;align-items:center;height:52px;padding:0 12px;display:flex;position:sticky;top:0}.mtb-logo{letter-spacing:1.2px;color:var(--accent);font-size:14px;font-weight:800}.mtb-logo span{opacity:.85}.mtb-btn{color:#fff;background:0 0;border:none;align-items:center;gap:3px;min-height:44px;padding:0 6px;font-size:14px;font-weight:700;display:inline-flex}.mtb-chevron{color:var(--accent);font-size:24px;line-height:1}.mtb-icon{font-size:18px}.tabbar{background:var(--sidebar);z-index:45;height:64px;padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 14px #0000002e}.tabbar-item{color:#fff6;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;transition:color .2s;display:flex;position:relative}.tabbar-icon{line-height:1;display:flex}.tabbar-label{font-size:10px;font-weight:600}.tabbar-dot{background:0 0;border-radius:50%;width:5px;height:5px;transition:background .2s,transform .2s;position:absolute;top:7px}.tabbar-item.active{color:var(--accent)}.tabbar-item.active .tabbar-dot{background:var(--accent)}.main{max-width:none;margin-left:0;padding:16px 16px 80px}.page-anim{animation:.22s ease-out page-in}.page-head{flex-wrap:wrap;gap:12px}.grid,.proj-grid{grid-template-columns:1fr}.card{padding:16px;transition:transform .1s,box-shadow .15s}.card.clickable:active{transform:scale(.98)}.status-badge{animation:.3s badge-fade}.pills{grid-template-columns:repeat(2,1fr)}.donut-wrap{justify-content:center;gap:22px}.donut-wrap>svg{width:100%;max-width:220px;height:auto}.donut-legend.two-col{grid-template-columns:1fr}.week-body{overflow-x:visible}.wb-table,.wb-table tbody{width:100%;min-width:0;display:block}.wb-table thead{display:none}.wb-day-row,.wb-day-row>td{border:none;padding:0;display:block}.wb-day-row{margin:14px 0 8px}.wb-table tbody tr:not(.wb-day-row):not(.wb-total-row){border:1px solid var(--border);background:#fff;margin-bottom:10px;padding:6px 12px;display:block;position:relative}.wb-table tbody tr:not(.wb-day-row):not(.wb-total-row)>td{text-align:right;border:none;justify-content:space-between;align-items:baseline;gap:14px;padding:5px 0;display:flex}.wb-table tbody tr:not(.wb-day-row):not(.wb-total-row)>td:before{content:attr(data-label);color:var(--muted);text-align:left;flex-shrink:0;font-weight:600}.wb-highlight td{background:0 0}.wb-table tbody tr.wb-highlight:not(.wb-day-row):not(.wb-total-row){border-color:var(--accent);background:#fffdf5}.wb-del-cell{position:absolute;top:6px;right:8px;padding:0!important}.wb-del-cell:before{content:none!important}.wb-total-row{border:1px solid var(--border);background:#fbfcfe;justify-content:space-between;gap:12px;margin-bottom:16px;padding:8px 12px;display:flex}.wb-total-row td{border:none;padding:0}.wb-total-row td:nth-child(2),.wb-total-row td:nth-child(3),.wb-total-row td:nth-child(4),.wb-total-row td:nth-child(5),.wb-total-row td:nth-child(8){display:none}.wb-total-row td:first-child{flex:1}.wb-total-row td:nth-child(6):before,.wb-total-row td:nth-child(7):before{content:attr(data-label) " ";color:var(--muted);font-weight:600}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.worker-row{flex-wrap:wrap;gap:12px}.worker-row-info{flex:1;min-width:0}.worker-row-stats{justify-content:space-between;gap:16px;width:100%;margin-left:0}.worker-row-action{border-left:none;border-top:1px solid var(--border);flex-direction:row;width:100%;padding-top:12px;padding-left:0}.worker-row-action .btn{flex:1}.worker-detail-head{flex-wrap:wrap}.head-btns{width:100%}.head-btns .btn{flex:1}.modal-backdrop{background:#00000080;align-items:flex-end;padding:0;animation:.2s backdrop-fade}.modal{width:100%;max-width:100%;max-height:90vh;padding:26px 18px calc(22px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;animation:.3s cubic-bezier(.32,.72,0,1) sheet-up;position:relative;overflow-y:auto}.modal:before,.drawer:before{content:"";background:#cfd5dd;border-radius:2px;width:32px;height:4px;position:absolute;top:9px;left:50%;transform:translate(-50%)}.modal-confirm{max-width:100%}.drawer-backdrop{background:#00000080;justify-content:center;align-items:flex-end;animation:.2s backdrop-fade}.drawer{width:100%;min-width:0;height:auto;max-height:90vh;padding:28px 18px calc(22px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;animation:.3s cubic-bezier(.32,.72,0,1) sheet-up;position:relative}input,textarea,select{font-size:16px!important}.btn,.nav-item,.tabbar-item,.mtb-btn,.filter-btn,.msg-tab{min-height:44px}.msg-bubble{max-width:84%}.toolbar{flex-direction:column;align-items:stretch}.filter-group{justify-content:space-between}.search-suggest-wrap{min-width:0}.fin-figures{grid-template-columns:repeat(2,1fr);gap:14px}.fin-add-row{grid-template-columns:1fr}.budget-details-modal table,.budget-details-modal tbody{width:100%;display:block}.budget-details-modal thead{display:none}.budget-details-modal tbody tr{border:1px solid var(--border);background:#fff;border-radius:10px;margin-bottom:10px;padding:6px 12px;display:block}.budget-details-modal tbody td{text-align:right;white-space:normal;border:none;justify-content:space-between;align-items:baseline;gap:14px;padding:6px 0;display:flex}.budget-details-modal tbody td:before{content:attr(data-label);color:var(--muted);text-align:left;flex-shrink:0;font-weight:600}.budget-details-modal tbody td.inv-actions-cell{justify-content:flex-end;padding-top:4px}.budget-details-modal tbody td.inv-actions-cell:before{content:none}}
