:root{--canvas:#f6f6f6;--panel:#fff;--line:#d9d9d9;--text:#4c5968;--muted:#8a95a1;--accent:#5c87b2;--hover-bg:#f4f8fc;--hover-line:#cbd6e1;--content-width:920px;color:var(--text);background:var(--canvas);font-family:Segoe UI,Tahoma,Arial,sans-serif;font-size:12px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}html{scrollbar-gutter:stable}body{background:var(--canvas);color:var(--text);-webkit-font-smoothing:antialiased;font-family:Segoe UI,Tahoma,Arial,sans-serif;font-size:12px}a{color:inherit;text-decoration:none}button{color:var(--text);cursor:pointer;font-family:inherit;font-size:12px}input,textarea{color:var(--text);font-family:inherit;font-size:12px}.app-shell{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;min-height:100vh;padding:40px 48px 48px}.app-shell input,.app-shell textarea{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}.app-main{width:100%;max-width:var(--content-width);margin:0 auto}.page-head{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:48px;display:flex}.page-head-tabs{gap:8px;display:flex}.page-head-tabs .btn{color:#fff;background:#7ba3ce;border-color:#7ba3ce}.page-head-tabs .btn:hover{background:#6e98c5;border-color:#6e98c5}.page-head-tabs .btn.is-active,.page-head-tabs .btn.is-active:hover{background:#5f87b1;border-color:#5f87b1}.page-head-tabs .btn.is-drop-target{outline-offset:2px;background:#466d92;border-color:#3b5e80;outline:2px dashed #c8d8e7}.page-meta{gap:4px;display:grid}.page-label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:11px}.page-title{color:#44515f;margin:0;font-size:24px;font-weight:600}.page-actions{align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--line);background:var(--panel);height:30px;color:var(--text);justify-content:center;align-items:center;gap:6px;padding:0 14px;font-weight:500;transition:background-color .15s,border-color .15s;display:inline-flex}.btn:hover{background:var(--hover-bg);border-color:var(--hover-line)}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn--primary:hover{background:#4f7aa3;border-color:#4f7aa3}.btn--ghost{background:0 0}.btn--danger{color:#933030}.btn--danger:hover{background:#fbeaea;border-color:#e3bcbc}.btn--sm{height:24px;padding:0 10px;font-size:11px}:root{--task-date-width:100px;--task-image-width:26px}.stage{flex-direction:column;gap:4px;padding-bottom:200px;display:flex;position:relative}.drop-indicator{pointer-events:none;z-index:5;border-top:1px dashed #8fb0cf;height:0;position:absolute;left:0;right:0}.proj-strip{grid-template-columns:minmax(0,1fr) 150px 110px;align-items:stretch;width:100%;display:grid}.proj-name,.proj-status,.proj-action{border:1px solid var(--line);background:var(--panel);color:#566270;align-items:center;height:38px;transition:background-color .15s,border-color .15s;display:flex}.proj-status,.proj-action{justify-content:center;margin-left:-1px;padding:0 8px}.proj-name{white-space:nowrap;text-overflow:ellipsis;padding:0 12px;font-size:13px;font-weight:500;overflow:hidden}.proj-strip:hover .proj-name,.proj-strip:hover .proj-status,.proj-strip:hover .proj-action{background:var(--hover-bg);border-color:var(--hover-line)}.status-pill{border:1px solid var(--line);color:#596573;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fbfbfb;align-items:center;height:22px;padding:0 10px;font-size:12px;font-weight:500;transition:filter .12s;display:inline-flex}.status-pill.is-open{color:#3d7a48;background:#eaf6ec;border-color:#9dcaa4}.status-pill.is-closed{color:#933030;background:#fbe9e9;border-color:#d99a9a}.status-pill:hover{filter:brightness(.96)}.proj-action button{border:1px solid var(--line);color:#446584;cursor:pointer;background:#f0f5fa;height:26px;padding:0 16px;font-size:12px;font-weight:500;transition:background-color .15s,border-color .15s}.proj-action button:hover{background:#e3eef8;border-color:#c7d5e3}@media (width<=640px){.proj-strip{grid-template-columns:minmax(0,1fr) 110px}.proj-status{display:none}}.proj-rename-input{border:1px solid var(--line);background:var(--panel);width:100%;height:26px;color:var(--text);outline:none;padding:0 8px;font-family:inherit;font-size:13px;font-weight:500}.proj-rename-input:focus{border-color:#446584}.act-strip{color:#fff;letter-spacing:.01em;cursor:grab;background:#7ba3ce;border:1px solid #6e96c0;align-items:center;width:100%;height:32px;padding:0 0 0 14px;font-size:13px;font-weight:600;transition:background-color .15s,border-color .15s;display:flex;position:relative}.act-strip:hover{background:#6e98c5;border-color:#5f87b1}.act-strip.is-drop-into{background:#9bbcdb;border-color:#9bbcdb}.act-strip:active{cursor:grabbing}.act-strip.is-dragging{opacity:.35}.act-strip.drop-before:before,.act-strip.drop-after:after{content:"";pointer-events:none;border-top:1px dashed #8fb0cf;position:absolute;left:0;right:0}.act-strip.drop-before:before{top:-2px}.act-strip.drop-after:after{bottom:-2px}.act-toggle{color:#fff;cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;width:22px;height:22px;margin-right:4px;padding:0;display:flex}.act-toggle-icon{background-color:currentColor;width:14px;height:14px;transition:transform .15s;display:block;transform:rotate(90deg);-webkit-mask:url(/act-expand.svg) 50%/contain no-repeat;mask:url(/act-expand.svg) 50%/contain no-repeat}.act-toggle.is-collapsed .act-toggle-icon{transform:rotate(0)}.act-title{white-space:nowrap;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;display:inline-block;overflow:hidden}.act-sum-label{color:#ffffffd9;-webkit-user-select:none;user-select:none;margin-right:6px;font-size:12px;font-weight:500}.act-share-btn{color:#fff;cursor:pointer;opacity:.85;background:0 0;border:0;flex:none;justify-content:center;align-items:center;width:22px;height:22px;margin-left:auto;margin-right:12px;padding:0;display:flex}.act-share-btn svg{width:16px;height:16px;display:block}.act-share-btn:hover{opacity:1}.act-receipt-btn{color:#fff;cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;width:22px;height:22px;margin-left:auto;margin-right:10px;padding:0;display:flex}.act-receipt-btn svg{opacity:.85;width:18px;height:18px;display:block}.act-receipt-btn.is-empty svg{opacity:.35}.act-receipt-btn:hover svg{opacity:1}.act-detail-panel,.act-upload-panel{background:var(--canvas);flex-direction:column;width:min(480px,92vw);max-height:90vh;display:flex;overflow:auto}.act-detail-panel .detail-head,.act-upload-panel .detail-head{color:#fff;background:#7ba3ce}.act-upload-error{color:#c0392b;padding:4px 0;font-size:12px}.act-upload-actions{justify-content:flex-end;gap:8px;padding-top:8px;display:flex}.act-total{text-align:center;color:#fff;-webkit-user-select:none;user-select:none;width:60px;font-size:12px;font-weight:600}.act-input{width:100%;height:24px;color:var(--text);font:inherit;background:#fff;border:1px solid #4f7aa3;outline:none;padding:0 8px;font-size:13px;font-weight:600}.task-strip{align-items:stretch;width:100%;max-height:80px;transition:max-height .2s,opacity .16s,margin .2s;display:flex;position:relative}.task-strip.is-collapsed-by-act,.separator-block.is-collapsed-by-act{opacity:0;pointer-events:none;max-height:0;overflow:hidden;border-top-width:0!important;border-bottom-width:0!important;margin-top:-4px!important;margin-bottom:0!important;padding-top:0!important;padding-bottom:0!important}.separator-block{transition:max-height .2s,opacity .16s,margin .2s}.task-strip>*{flex-shrink:0}.task-date-cell{width:var(--task-date-width)}.task-title{flex:1 1 0;min-width:0}.task-strip-spacer{background:0 0;width:0}.task-strip>.task-title+.task-image-cell,.task-strip>.task-title+.task-link-cell,.task-strip>.task-title+.task-invoice-cell,.task-strip>.task-title+.task-receipt-cell,.task-strip-spacer+.task-image-cell,.task-strip-spacer+.task-link-cell,.task-strip-spacer+.task-invoice-cell,.task-strip-spacer+.task-receipt-cell{margin-left:0}:is(.app-main:has(.stage--materials) .totals-bar,.app-main:has(.stage--works) .totals-bar){border-bottom:1px solid var(--line);padding-bottom:22px}.task-image-cell,.task-link-cell,.task-invoice-cell,.task-receipt-cell{width:var(--task-image-width)}.task-qty-cell,.task-unit-cell,.task-price-cell,.task-total-cell{width:60px}.task-title,.task-image-cell,.task-link-cell,.task-invoice-cell,.task-receipt-cell,.task-qty-cell,.task-unit-cell,.task-price-cell,.task-total-cell{margin-left:-1px}.task-strip>:first-child{margin-left:0}.task-strip.is-works-task .task-link-cell,.task-strip.is-works-task .task-invoice-cell,.task-strip.is-works-task .task-receipt-cell{display:none}.task-link-cell,.task-invoice-cell,.task-receipt-cell{color:var(--muted);cursor:pointer;justify-content:center}.task-link-cell.is-empty,.task-invoice-cell.is-empty,.task-receipt-cell.is-empty{cursor:default}.task-image-cell.is-empty svg,.task-link-cell.is-empty svg,.task-invoice-cell.is-empty svg,.task-receipt-cell.is-empty svg{opacity:.12}.task-link-cell:not(.is-empty):hover svg,.task-invoice-cell:not(.is-empty):hover svg,.task-receipt-cell:not(.is-empty):hover svg{opacity:1}.task-link-cell svg,.task-invoice-cell svg,.task-receipt-cell svg{opacity:.45;stroke-width:1.2px;width:18px;height:18px;display:block}.task-receipt-cell.is-partial,.task-strip.is-completed .task-receipt-cell.is-partial,.task-strip.is-completed:hover .task-receipt-cell.is-partial{color:#c0392b}.task-receipt-cell.is-partial svg{opacity:.85}.separator-block{padding:1px 0;position:relative}.task-strip.is-dragging,.separator-block.is-dragging{opacity:.35}.task-strip-ghost{pointer-events:none;z-index:70;background:var(--panel);opacity:.96;position:fixed;top:0;left:0;box-shadow:0 10px 22px #00000038}.task-strip-ghost .task-title,.task-strip-ghost .task-image-cell,.task-strip-ghost .task-date-cell{background:var(--panel);border-color:var(--hover-line)}.separator-text{color:#70ad47;letter-spacing:.01em;cursor:grab;align-items:center;min-height:20px;padding-left:10px;font-size:12px;font-weight:700;display:inline-flex}.separator-text:active{cursor:grabbing}.separator-input{border:1px solid var(--line);width:240px;height:24px;color:var(--text);font:inherit;background:#fbfbfb;outline:none;padding:0 8px;font-weight:700}.separator-input:focus{border-color:var(--accent);background:#fff}.task-title,.task-image-cell,.task-link-cell,.task-invoice-cell,.task-receipt-cell,.task-date-cell,.task-qty-cell,.task-unit-cell,.task-price-cell,.task-total-cell{border:1px solid var(--line);background:var(--panel);color:#5a6673;align-items:center;height:25px;font-size:12px;font-weight:500;transition:background-color .15s,border-color .15s;display:flex}.task-image-cell,.task-link-cell,.task-invoice-cell,.task-receipt-cell{border-left:0;border-right:0}.task-strip>.task-image-cell:last-child,.task-strip>.task-link-cell:last-child,.task-strip>.task-invoice-cell:last-child,.task-strip>.task-receipt-cell:last-child{border-right:1px solid var(--line)}.task-qty-cell,.task-unit-cell,.task-price-cell,.task-total-cell{white-space:nowrap;cursor:pointer;justify-content:center;margin-left:-1px;padding:0 6px;font-size:11px;font-weight:500}.task-total-cell{color:var(--text);cursor:default;background:#f7f9fc;font-weight:600}.task-image-cell{color:var(--muted);cursor:pointer;justify-content:center;margin-left:-1px}.task-image-cell.is-empty{cursor:default}.task-image-cell:not(.is-empty):hover svg{opacity:1}.task-image-cell svg{opacity:.45;stroke-width:1.2px;width:18px;height:18px;display:block}.task-title{white-space:nowrap;text-overflow:ellipsis;cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:pan-y;padding:0 10px;overflow:hidden}.task-title:active,.task-date-cell:active{cursor:grabbing}.task-date-cell{color:var(--muted);white-space:nowrap;cursor:grab;justify-content:center;margin-left:-1px;padding:0 8px;font-size:11px;font-weight:400}.task-strip:hover .task-title,.task-strip:hover .task-image-cell,.task-strip:hover .task-link-cell,.task-strip:hover .task-invoice-cell,.task-strip:hover .task-receipt-cell,.task-strip:hover .task-date-cell,.task-strip:hover .task-qty-cell,.task-strip:hover .task-unit-cell,.task-strip:hover .task-price-cell,.task-strip:hover .task-total-cell{background:var(--hover-bg);border-color:var(--hover-line)}.task-strip.is-completed .task-qty-cell,.task-strip.is-completed .task-unit-cell,.task-strip.is-completed .task-price-cell,.task-strip.is-completed .task-total-cell{color:#a3acb6;background:#f3f4f6;font-weight:400}@media (width<=640px){.task-date-cell,.task-date-cell+.task-strip-spacer{display:none}.task-qty-cell,.task-unit-cell,.task-price-cell,.task-total-cell{width:50px}}.task-strip.is-completed .task-title,.task-strip.is-completed .task-image-cell,.task-strip.is-completed .task-link-cell,.task-strip.is-completed .task-invoice-cell,.task-strip.is-completed .task-receipt-cell,.task-strip.is-completed .task-date-cell{color:#a3acb6;background:#f3f4f6;font-weight:400}.task-strip.is-completed:hover .task-title,.task-strip.is-completed:hover .task-image-cell,.task-strip.is-completed:hover .task-link-cell,.task-strip.is-completed:hover .task-invoice-cell,.task-strip.is-completed:hover .task-receipt-cell,.task-strip.is-completed:hover .task-date-cell{border-color:var(--hover-line);background:#eceef2}.strip-input{width:100%;height:100%;font:inherit;color:var(--text);background:0 0;border:0;outline:none;margin:0;padding:0 8px}.task-unit-cell{position:relative}.unit-popup-backdrop{z-index:49;position:fixed;inset:0}.unit-popup{z-index:50;border:1px solid var(--line);background:var(--panel);flex-direction:column;min-width:80px;margin-top:2px;padding:4px;display:flex;position:absolute;top:100%;left:-1px;box-shadow:0 10px 24px #1e2a3824}.unit-popup button{height:24px;color:var(--text);text-align:left;font:inherit;cursor:pointer;background:0 0;border:0;padding:0 8px}.unit-popup button:hover{background:var(--hover-bg)}.add-row{grid-template-columns:minmax(0, 1fr) var(--task-date-width);width:100%;margin-top:8px;display:grid}.add-row .task-title{background:#fbfbfb}.add-row input[type=text]{width:100%;height:100%;font:inherit;color:var(--text);background:0 0;border:0;outline:none;padding:0 10px}.add-row .add-btn{border:1px solid var(--line);background:var(--panel);width:100%;height:25px;color:var(--accent);cursor:pointer;white-space:nowrap;border-left:0;padding:0 14px;font-size:12px;font-weight:500}.add-row .add-btn:hover{background:var(--hover-bg);border-color:var(--hover-line)}.add-row .add-btn:disabled{color:var(--muted);cursor:default;background:var(--panel)}.gallery-fs{z-index:70;background:#0006;position:fixed;inset:0}.gallery-fs-stage{background:var(--canvas);grid-template-rows:64px 1fr 80px;display:grid;position:absolute;inset:0}.gallery-fs-stage.is-readonly{grid-template-rows:64px 1fr}.gallery-fs-topbar,.gallery-fs-bottombar{background:var(--panel);align-items:center;gap:8px;padding:0 16px;display:flex}.gallery-fs-topbar{border-bottom:1px solid var(--line);justify-content:space-between}.gallery-fs-bottombar{border-top:1px solid var(--line);justify-content:center;gap:12px}.gallery-btn{border:1px solid var(--line);background:var(--panel);height:36px;font:inherit;color:var(--text);cursor:pointer;padding:0 18px;font-size:12px;font-weight:500;transition:background-color .15s,border-color .15s,color .15s}.gallery-btn:hover:not(:disabled){background:var(--hover-bg);border-color:var(--hover-line)}.gallery-btn:disabled{opacity:.5;cursor:default}.gallery-btn--danger{color:#fff;background:#c8324a;border-color:#c8324a}.gallery-btn--danger:hover:not(:disabled){color:#fff;background:#b00020;border-color:#b00020}.gallery-btn--ghost{color:var(--muted)}.gallery-btn--ghost.is-active{background:var(--hover-bg);border-color:var(--accent);color:var(--text)}.gallery-btn--primary{background:var(--accent);color:#fff;border-color:var(--accent)}.gallery-btn--primary:hover:not(:disabled){background:#4f7aa3;border-color:#4f7aa3}.gallery-fs-img.is-healing{cursor:none}.gallery-fs-mask{cursor:none;touch-action:none;position:absolute;top:0;left:0}.gallery-brush-cursor{pointer-events:none;z-index:10;background:#dc3c3c1f;border:1.5px solid #dc3c3cf2;border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.estimate-dialog-backdrop{z-index:1400;background:#12213247;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.estimate-dialog{background:#fff;border:1px solid #c7d6e6;width:min(345px,92vw);padding:0;box-shadow:0 18px 36px #0f1d2e47}.estimate-calendar{background:#f4f8fc;flex-direction:column;display:flex}.estimate-calendar-header{color:#f2f7fd;background:#2b425b;grid-template-columns:1fr auto 1fr;align-items:center;height:40px;padding:0 8px;display:grid}.estimate-calendar-header-actions{align-items:center;gap:4px;display:flex}.estimate-calendar-header-actions-left{justify-content:flex-start}.estimate-calendar-header-actions-right{justify-content:flex-end}.estimate-calendar-icon-btn{color:#f2f7fd;cursor:pointer;background:0 0;border:0;width:30px;height:30px;font-size:20px;line-height:1}.estimate-calendar-icon-btn:hover{opacity:.5}.estimate-calendar-icon-btn:disabled{opacity:.45;cursor:default}.estimate-calendar-title{letter-spacing:.04em;justify-content:center;justify-self:center;align-items:center;gap:10px;font-size:14px;font-weight:700;display:flex;position:relative}.estimate-calendar-select-wrap{position:relative}.estimate-calendar-select-btn{color:#f2f7fd;font-size:inherit;font-weight:inherit;letter-spacing:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:2px;display:inline-flex}.estimate-calendar-caret{font-size:10px;line-height:1}.estimate-calendar-dropdown{z-index:3;background:#fff;border:1px solid #c9d7e5;min-width:82px;max-height:188px;position:absolute;top:calc(100% + 6px);left:0;overflow:auto;box-shadow:0 8px 18px #1221322e}.estimate-calendar-dropdown-month{min-width:110px}.estimate-calendar-dropdown-year{min-width:74px}.estimate-calendar-dropdown-item{color:#304a64;text-align:left;cursor:pointer;background:#fff;border:0;width:100%;padding:6px 10px;font-size:12px}.estimate-calendar-dropdown-item:hover{background:#edf5fc}.estimate-calendar-weekdays{background:#f2f5f9;grid-template-columns:repeat(7,1fr);align-items:center;height:32px;padding:0 8px;display:grid}.estimate-calendar-weekdays span{text-align:center;color:#8196ab;font-size:12px}.estimate-calendar-grid{background:#f4f8fc;grid-template-columns:repeat(7,1fr);grid-auto-rows:36px;place-items:center;padding:4px 8px 6px;display:grid}.estimate-calendar-day-empty{width:28px;height:28px}.estimate-calendar-day{color:#355a7c;cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;display:flex}.estimate-calendar-day:hover{background:#e6eef7}.estimate-calendar-day.today{color:#24364a;background:#f1dd00;font-weight:700}.estimate-calendar-day.selected{color:#fff;background:#5c87b2;font-weight:700}.estimate-calendar-footer{background:#f4f8fc;justify-content:center;align-items:center;padding:8px 12px 10px;display:flex}.estimate-calendar-close-btn{color:#f2f7fd;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:32px;height:40px;margin-left:4px;font-size:22px;line-height:1;display:flex}.estimate-calendar-close-btn:hover{opacity:.7}.gallery-fs-crop-overlay{touch-action:none;z-index:5}.gallery-fs-crop-dim{pointer-events:none;background:#00000080;position:absolute}.gallery-fs-crop-rect{cursor:move;box-sizing:border-box;border:1.5px solid #fff;position:absolute}.crop-edge{background:0 0;position:absolute}.crop-edge--n{cursor:ns-resize;height:16px;top:-8px;left:12px;right:12px}.crop-edge--s{cursor:ns-resize;height:16px;bottom:-8px;left:12px;right:12px}.crop-edge--w{cursor:ew-resize;width:16px;top:12px;bottom:12px;left:-8px}.crop-edge--e{cursor:ew-resize;width:16px;top:12px;bottom:12px;right:-8px}.crop-corner{box-sizing:border-box;background:#fff;border:1px solid #00000059;width:20px;height:20px;position:absolute}.crop-corner--nw{cursor:nwse-resize;top:-10px;left:-10px}.crop-corner--ne{cursor:nesw-resize;top:-10px;right:-10px}.crop-corner--sw{cursor:nesw-resize;bottom:-10px;left:-10px}.crop-corner--se{cursor:nwse-resize;bottom:-10px;right:-10px}.gallery-brush-size{color:var(--muted);align-items:center;gap:8px;font-size:12px;display:inline-flex}.gallery-brush-size input[type=range]{width:140px}.gallery-fs-photo{background:var(--canvas);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.gallery-fs-img{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:auto;max-width:100%;height:auto;max-height:100%}.gallery-fs-empty{color:var(--muted);font-size:13px}.gallery-fs-nav{border:1px solid var(--line);background:var(--panel);width:40px;height:56px;color:var(--text);cursor:pointer;justify-content:center;align-items:center;font-size:26px;line-height:1;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.gallery-fs-nav:hover{background:var(--hover-bg);border-color:var(--hover-line)}.gallery-fs-nav--prev{left:12px}.gallery-fs-nav--next{right:12px}.gallery-icon-btn{border:1px solid var(--line);background:var(--panel);width:52px;height:52px;color:var(--accent);cursor:pointer;justify-content:center;align-items:center;transition:background-color .15s,border-color .15s;display:flex}.gallery-icon-btn:hover:not(:disabled){background:var(--hover-bg);border-color:var(--hover-line)}.gallery-icon-btn:disabled{opacity:.5;cursor:default}.gallery-icon-btn svg{width:26px;height:26px}.share-overlay{z-index:55;background:#1c242e73;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.share-panel{background:var(--panel);border:1px solid var(--line);border-radius:4px;flex-direction:column;width:min(480px,100%);display:flex}.share-panel-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.share-panel-title{color:var(--text);font-size:13px;font-weight:600}.share-panel-close{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 6px;font-size:22px;line-height:1}.share-panel-close:hover{color:var(--text)}.share-panel-body{flex-direction:column;gap:12px;padding:14px 16px 16px;display:flex}.share-panel-url{border:1px solid var(--line);width:100%;height:30px;color:var(--text);font:inherit;background:#fbfbfb;outline:none;padding:0 10px;font-size:12px}.share-panel-url:focus{border-color:var(--accent);background:#fff}.share-panel-actions{justify-content:space-between;gap:8px;display:flex}.share-panel-revoke{color:#fff;background:#c8324a;border-color:#c8324a}.share-panel-revoke:hover{color:#fff;background:#b00020;border-color:#b00020}.empty{border:1px dashed var(--line);background:var(--panel);text-align:center;color:var(--muted);padding:24px;font-size:12px}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:56px 48px 48px;display:flex}.login-card{border:1px solid var(--line);background:var(--panel);gap:14px;width:100%;max-width:360px;padding:18px;display:grid}.login-head{gap:4px;display:grid}.login-label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:11px}.login-title{color:#44515f;margin:0;font-size:18px;font-weight:600}.login-form{gap:12px;display:grid}.login-form label{color:var(--muted);gap:4px;font-size:11px;display:grid}.login-form input{border:1px solid var(--line);width:100%;height:30px;color:var(--text);background:#fbfbfb;outline:none;padding:0 8px}.login-form input:focus{border-color:var(--accent);background:#fff}.login-actions{justify-content:flex-end;display:flex}.login-error{color:#933030;background:#fbeaea;border:1px solid #e3bcbc;padding:8px 10px;font-size:12px}.context-menu{z-index:50;border:1px solid var(--line);background:var(--panel);min-width:170px;padding:4px;position:fixed;box-shadow:0 10px 24px #1e2a3824}.context-menu button{width:100%;height:26px;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;padding:0 10px;display:flex}.context-menu button:hover{background:var(--hover-bg)}.context-menu button.danger{color:#933030}.context-menu button.danger:hover{background:#fbeaea}.topbar{color:var(--muted);justify-content:space-between;align-items:center;margin-bottom:24px;font-size:11px;display:flex}.topbar-user{align-items:center;gap:10px;display:flex}.crumbs{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:6px;font-size:11px;display:flex}.crumbs a:hover{color:var(--text)}.crumbs .sep{color:var(--line)}.totals-bar{flex-direction:column;gap:4px;width:33%;max-width:320px;margin:-8px 0 40px;display:flex}.totals-cell{justify-content:space-between;align-items:baseline;gap:6px;display:flex}.totals-cell .totals-value{text-align:right}.totals-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:11px}.totals-value{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:11px;font-weight:400}.totals-value--accent{color:var(--accent)}.detail-overlay{z-index:55;background:#1c242e73;justify-content:center;align-items:flex-start;padding:48px 24px 24px;display:flex;position:fixed;inset:0;overflow-y:auto}.detail-panel{background:var(--canvas);flex-direction:column;width:min(640px,100%);display:flex}.detail-head{background:#7ba3ce;align-items:center;gap:8px;padding:20px 18px;display:flex}.detail-title{font:inherit;color:#fff;background:0 0;border:0;outline:none;flex:auto;padding:4px 0;font-size:15px;font-weight:600}.detail-title::placeholder{color:#ffffffb3}.detail-title:focus{outline-offset:2px;outline:1px dashed #fff9}.detail-close{color:#ffffffd9;cursor:pointer;background:0 0;border:0;flex:none;padding:0 6px;font-size:22px;line-height:1}.detail-close:hover{color:#fff}.detail-body{flex-direction:column;gap:10px;padding:14px 16px 18px;display:flex}.detail-row{align-items:center;gap:12px;min-height:32px;display:flex}.detail-row-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);flex:0 0 80px;font-size:11px}.detail-row-control{flex-wrap:wrap;flex:auto;align-items:center;gap:8px;display:flex}.detail-input{border:1px solid var(--line);height:28px;color:var(--text);font:inherit;background:#fbfbfb;outline:none;flex:auto;min-width:120px;padding:0 10px;font-size:12px}.detail-input:focus{border-color:var(--accent);background:#fff}.detail-input--narrow{flex:none;width:80px;min-width:0}.detail-row--receipts{align-items:flex-start}.detail-receipts{flex-direction:column;flex:auto;align-items:flex-start;gap:6px;display:flex}.detail-receipt-row{align-items:center;gap:8px;width:100%;display:flex}.detail-receipt-name{text-align:left;color:var(--accent);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;background:0 0;border:0;flex:auto;padding:0;font-size:12px;text-decoration:underline;overflow:hidden}.detail-receipt-name:hover{color:#466d92}.detail-receipt-name-input{flex:auto;min-width:0}.detail-receipt-name--cash{color:var(--text);cursor:default;text-decoration:none}.detail-cash-form{align-items:center;gap:8px;margin-top:4px;display:flex}.preview-toggle-bar{margin-top:8px;margin-bottom:12px;display:flex}.preview-toggle-bar .btn.is-active{background:var(--hover-bg);border-color:var(--hover-line)}.task-strip.is-preview{align-items:stretch;height:100px;max-height:120px}.task-strip.is-preview .task-date-cell,.task-strip.is-preview .task-title,.task-strip.is-preview .task-qty-cell,.task-strip.is-preview .task-unit-cell,.task-strip.is-preview .task-price-cell,.task-strip.is-preview .task-total-cell{align-self:stretch;height:auto}.task-preview-cell{border:1px solid var(--line);cursor:pointer;background:#fff;flex:none;justify-content:center;align-self:stretch;align-items:center;width:100px;max-width:100px;margin-left:-1px;display:flex;overflow:hidden}.task-preview-cell img{object-fit:contain;max-width:100%;max-height:100%;display:block}.task-preview-cell.is-empty{cursor:default;background:#fff}.detail-upload-actions{align-items:center;gap:6px;display:flex}.detail-upload-icon{width:24px;height:24px;color:var(--muted);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:flex}.detail-upload-icon svg{width:16px;height:16px;display:block}.detail-upload-icon:hover{color:var(--text)}.detail-cash-label{color:var(--text);font-size:12px}.detail-link{min-width:0;color:var(--accent);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;flex:auto;font-size:12px;text-decoration:underline;overflow:hidden}.detail-link:hover{color:#466d92}.detail-photo-strip{flex:auto;align-items:center;gap:6px;padding-bottom:2px;display:flex;overflow-x:auto}.detail-photo-thumb{cursor:pointer;background:#f0f0f0;border:none;flex:none;width:140px;height:140px;padding:0;overflow:hidden}.detail-photo-thumb img{object-fit:cover;width:100%;height:100%;display:block}.detail-photo-add{border:1px dashed var(--line);width:140px;height:140px;color:var(--muted);cursor:pointer;background:0 0;flex:none;font-size:30px;line-height:1;transition:border-color .15s,color .15s}.detail-photo-add:hover{border-color:var(--accent);color:var(--accent)}
