.sf-scrim[data-state=open]{animation:.2s cubic-bezier(.16,1,.3,1) sf-fade-in}.sf-scrim[data-state=closed]{animation:.15s ease-in sf-fade-out}.sf-sheet{z-index:51;color:var(--ink);font-family:var(--font-sans);outline:none;font-size:13px;line-height:1.4;position:fixed;top:0;bottom:0;right:0}.sf-sheet[data-state=open]{animation:.2s cubic-bezier(.16,1,.3,1) sf-slide-in}.sf-sheet[data-state=closed]{animation:.15s ease-in sf-slide-out}@keyframes sf-fade-in{0%{opacity:0}}@keyframes sf-fade-out{to{opacity:0}}@keyframes sf-slide-in{0%{transform:translate(100%)}}@keyframes sf-slide-out{to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.sf-scrim[data-state],.sf-sheet[data-state]{animation:none}}.sf-ellipsis{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.sf-head__text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.sf-close{width:32px;height:32px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.sf-close:hover{background:var(--hover);color:var(--ink)}.sf-close svg{width:16px;height:16px}.sf-close:focus-visible{outline:2px solid var(--action);outline-offset:3px}.sf-steps{border-bottom:1px solid var(--line);background:var(--ground);flex:none;align-items:center;gap:6px;margin:0;padding:12px 24px;list-style:none;display:flex;overflow-x:auto}.sf-step{color:var(--ink-3);white-space:nowrap;align-items:center;gap:6px;display:flex}.sf-step__mark{border:1.5px solid var(--faint);width:18px;height:18px;color:var(--on-sel);font-family:var(--font-mono);background:0 0;border-radius:99px;flex:none;justify-content:center;align-items:center;font-size:10px;display:inline-flex}.sf-step[data-state=todo] .sf-step__mark{color:var(--ink-3)}.sf-step[data-state=done]{color:var(--ink-2)}.sf-step[data-state=done] .sf-step__mark,.sf-step[data-state=current] .sf-step__mark{border-color:var(--ink);background:var(--ink)}.sf-step[data-state=current]{color:var(--ink);font-weight:600}.sf-step__joint{background:var(--line-strong);width:14px;height:1px}.sf-guide{margin-top:20px}.sf-fold{border:1px dashed var(--line-strong);background:var(--surface);width:100%;height:40px;color:var(--ink);font:inherit;text-align:left;cursor:pointer;border-radius:10px;align-items:center;gap:8px;padding:0 12px;display:flex}.sf-fold:hover{background:var(--hover)}.sf-fold svg{flex:none;width:14px;height:14px}.sf-fold__label{white-space:nowrap;font-weight:500}.sf-fold__hint{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--ink-3);flex:1;overflow:hidden}.sf-fold:focus-visible{outline:2px solid var(--action);outline-offset:3px}.sf-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 12px;display:grid}.sf-cell{grid-column:span 2;min-width:0}.sf-cell--half{grid-column:span 1}@media (max-width:719px){.sf-cell--half{grid-column:span 2}}@media (max-width:519px){.cx-sheet .cx-options{grid-template-columns:minmax(0,1fr)}}.sf-sheet .cx-sheet__foot{height:auto;min-height:68px;padding-top:10px;padding-bottom:10px}.sf-foot__note{min-width:0;color:var(--ink-3);flex:1;line-height:1.4}.sf-sheet .cx-sheet__foot:has(.sf-danger){flex-wrap:wrap}.sf-sheet .cx-sheet__foot:has(.sf-danger) .sf-foot__note:not(:empty){flex-basis:100%;order:-1}.sf-sheet .cx-sheet__foot:has(.sf-danger) .sf-danger{margin-right:auto}.sf-foot__note--bad{color:var(--bad)}.sf-foot__link{color:var(--ink);text-underline-offset:2px;font-weight:500;text-decoration:underline}.sf-foot__note--ok{color:var(--ok);align-items:flex-start;gap:8px;font-weight:500;display:flex}.sf-foot__note--ok svg{flex:none;width:16px;height:16px;margin-top:2px}.sf-danger{height:36px;color:var(--bad);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;align-items:center;gap:6px;padding:0 10px;font-size:13px;display:inline-flex}.sf-danger svg{width:14px;height:14px}.sf-danger:hover{background:var(--bad-soft)}.sf-danger:disabled{cursor:not-allowed;opacity:.55;background:0 0}@media (max-width:719px){.sf-sheet .cx-sheet__foot{flex-wrap:wrap;height:auto;min-height:68px;padding:12px 16px}.sf-sheet .sf-foot__note{flex-basis:100%}.sf-sheet .cx-sheet__body{padding:4px 16px 24px}.sf-sheet .cx-sheet__head{padding:0 12px 0 16px}}.sf-auto{flex-direction:column;gap:10px;display:flex;position:relative}.cx-pick[data-open=true]{border-color:var(--action)}.cx-pick[data-invalid=true]{border-color:var(--bad)}.cx-pick input:disabled{color:var(--ink-3)}.sf-auto__chev{color:var(--ink-3);flex:none;display:inline-flex}.sf-auto__chev svg{width:14px;height:14px}.sf-auto__list{z-index:5;background:var(--surface);max-height:340px;box-shadow:var(--shadow-float);border-radius:10px;flex-direction:column;padding:6px;display:flex;position:absolute;top:40px;left:0;right:0;overflow-y:auto}.sf-auto__option{min-height:36px;color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;align-items:center;gap:8px;padding:0 8px;display:flex}.sf-auto__option[aria-selected=true],.sf-auto__option:hover{background:var(--hover)}.sf-auto__label{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:14px;overflow:hidden}.sf-auto__sub{white-space:nowrap;text-overflow:ellipsis;max-width:50%;color:var(--ink-3);flex:none;font-size:12px;overflow:hidden}.sf-auto__none{color:var(--ink-3);padding:6px 8px}.sf-auto__rule{background:var(--line);height:1px;margin:4px 0}.sf-tags__list{top:calc(100% + 4px)}.cx-tags[data-invalid=true]{border-color:var(--bad)}.sf-auto__add{height:36px;color:var(--action-ink);font-weight:600}.sf-auto__add svg{flex:none;width:14px;height:14px}.sf-quick{border:1px solid var(--line-strong);background:var(--ground);border-radius:10px;flex-direction:column;gap:10px;padding:12px;display:flex}.sf-quick__title{font-weight:600}.sf-quick__actions{justify-content:flex-end;gap:8px;display:flex}.sf-quick__go{background:var(--ink);color:var(--on-sel);border-color:#0000;font-weight:600}.sf-quick__go:hover,.sf-quick__go:active{background:var(--ink);filter:brightness(1.15)}.sf-lines{border:1px solid var(--line);border-radius:10px;display:block;overflow:visible}.sf-lines__head,.sf-lines__row,.sf-lines__totals{grid-template-columns:minmax(0,1fr) 96px 104px 112px 36px;align-items:center;display:grid}.sf-lines__head{background:var(--ground);border-bottom:1px solid var(--line);height:34px;color:var(--ink-3);border-radius:10px 10px 0 0;padding:0;font-size:12.5px;font-weight:500}.sf-lines__head>:first-child{padding:0 12px}.sf-lines__num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;padding:0 10px}.sf-lines__head .sf-lines__num{font-family:inherit}.sf-lines__row{border-bottom:1px solid var(--line-soft);height:48px}.sf-lines__row:hover{background:var(--hover)}.sf-lines__name{flex-direction:column;gap:1px;min-width:0;padding:0 12px;display:flex}.sf-lines__title{white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.sf-lines__sub{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.sf-lines__sub--warn{color:var(--warn)}.sf-lines__sub--bad{color:var(--bad)}.sf-lines--nocost .sf-lines__head,.sf-lines--nocost .sf-lines__row,.sf-lines--nocost .sf-lines__totals{grid-template-columns:minmax(0,1fr) 96px 36px}.sf-lines--editcost .sf-lines__head,.sf-lines--editcost .sf-lines__row,.sf-lines--editcost .sf-lines__totals{grid-template-columns:minmax(0,1fr) 88px 108px 112px 36px}.sf-lines__qty{justify-content:flex-end;padding:0 6px;display:flex}.sf-lines__qty input{border:1px solid var(--line-strong);background:var(--surface);width:72px;height:30px;color:var(--ink);font-family:var(--font-mono);text-align:right;border-radius:8px;padding:0 8px;font-size:13px;font-weight:600}.sf-lines__cost-input{justify-content:flex-end;padding:0 6px;display:flex}.sf-lines__cost-input input{border:1px solid var(--line-strong);background:var(--surface);width:84px;height:30px;color:var(--ink);font-family:var(--font-mono);text-align:right;border-radius:8px;padding:0 8px;font-size:13px;font-weight:600}.sf-lines__cost{color:var(--ink-2)}.sf-lines__badge{background:var(--hover);border:1px solid var(--line);color:var(--ink-2);border-radius:4px;align-items:center;margin-right:6px;padding:1px 6px;font-size:11px;font-weight:500;display:inline-flex}.sf-lines__margin-tag{font-family:var(--font-mono);color:var(--ink-3);font-size:11.5px}.sf-lines__totals--has-financials{border-bottom:1px solid var(--line);border-radius:0}.sf-lines__financials{background:var(--ground);font-family:var(--font-sans);border-radius:0 0 10px 10px;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px 14px;padding:12px 14px;display:grid}.sf-lines__financial-metric{flex-direction:column;gap:2px;min-width:0;display:flex}.sf-lines__financial-label{color:var(--ink-3);text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;font-size:11px;font-weight:500}.sf-lines__financial-val{color:var(--ink);white-space:nowrap;font-size:13.5px;font-weight:600}.sf-lines__financial-val--profit{color:var(--ink)}.sf-lines__financial-val--loss{color:var(--bad)}.sf-lines__financial-metric--span{border-top:1px dashed var(--line);grid-column:1/-1;margin-top:2px;padding-top:8px}.sf-lines__financial-suppliers{color:var(--ink-2);font-size:12px}.sf-lines__remove{width:28px;height:28px;color:var(--faint);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex}.sf-lines__remove svg{width:16px;height:16px}.sf-lines__remove:hover{background:var(--active);color:var(--ink)}.sf-lines__add{border-bottom:1px solid var(--line);min-height:44px;color:var(--ink-3);align-items:flex-start;gap:8px;padding:4px 12px;display:flex}.sf-lines__add>svg{flex:none;width:14px;height:14px;margin-top:15px}.sf-lines__add .sf-auto{flex:1;min-width:0}.sf-lines__add .cx-pick{border-color:#0000;padding:0}.sf-lines__add .sf-auto__chev{display:none}.sf-lines__totals{background:var(--ground);height:40px;font-family:var(--font-mono);border-radius:0 0 10px 10px;font-weight:600}.sf-lines__count{font-family:var(--font-sans);color:var(--ink-3);padding:0 12px;font-weight:500}.sf-lines__count .cx-mono{color:var(--ink)}.sf-lines--noqty .sf-lines__head,.sf-lines--noqty .sf-lines__row,.sf-lines--noqty .sf-lines__totals{grid-template-columns:minmax(0,1fr) 104px 112px 36px}.sf-days{flex-wrap:wrap;gap:6px;display:flex}.sf-days__chip{border:1px solid var(--line-strong);background:var(--surface);width:44px;height:32px;color:var(--ink-2);font:inherit;cursor:pointer;border-radius:8px;font-size:13px}.sf-days__chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--surface);font-weight:600}.sf-days__chip:focus-visible{outline:2px solid var(--focus,var(--action));outline-offset:2px}@media (max-width:559px){.sf-lines__head{display:none}.sf-lines__row{grid-template-columns:84px minmax(0,1fr) minmax(0,1fr) 36px;row-gap:6px;height:auto;padding:8px 0}.sf-lines--nocost .sf-lines__row{grid-template-columns:84px minmax(0,1fr) 36px}.sf-lines__row>.sf-lines__name{grid-column:1/-1}.sf-lines__qty{justify-content:flex-start;padding:0 12px}.sf-lines__totals{grid-template-columns:minmax(0,1fr) 72px 0 minmax(0,1fr) 0}.sf-lines--nocost .sf-lines__totals{grid-template-columns:minmax(0,1fr) 72px 0}.sf-lines--noqty .sf-lines__row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 36px}.sf-lines--noqty .sf-lines__totals{grid-template-columns:minmax(0,1fr) 0 minmax(0,1fr) 0}.sf-lines--editcost .sf-lines__row{grid-template-columns:84px minmax(0,1fr) minmax(0,1fr) 36px}.sf-lines__financials{grid-template-columns:1fr 1fr}.sf-lines__count{white-space:nowrap}}.cx-input--select{appearance:none;cursor:pointer}.cx-input:disabled{background:var(--ground);color:var(--ink-3);cursor:default}.sf-read-line{white-space:nowrap;text-overflow:ellipsis;font-size:13px;line-height:36px;display:block;overflow:hidden}.sf-qr-row{align-items:flex-start;gap:12px;display:flex}.sf-read-table{border-collapse:collapse;width:100%;font-size:13px}.sf-read-table th{text-align:left;color:var(--ink-3);border-bottom:1px solid var(--line);padding:0 6px 6px;font-weight:400}.sf-read-table td{border-bottom:1px solid var(--line);color:var(--ink);padding:7px 6px}.sf-read-table :is(th,td):first-child{padding-left:0}.sf-read-table :is(th,td):last-child{padding-right:0}.sf-read-table tr:last-child td{border-bottom:0}.sf-read-table .sf-read-table__end{text-align:right;white-space:nowrap}.sf-read-table .sf-read-table__end:not(:last-child){padding-right:16px}.sf-qr-row>.cx-read{flex:auto}.sf-qr{border:1px solid var(--line);background:#fff;border-radius:8px;flex:none;display:inline-flex;overflow:hidden}.sf-qr img{width:100%;height:100%;display:block}.cx-sheet.sf-sheet--matrix{width:min(1120px,100vw - 56px)}@media (max-width:719px){.cx-sheet.sf-sheet--matrix{width:100%}}.sf-head__link{color:var(--ink);font:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;align-self:flex-start;margin-top:2px;padding:0;font-size:13px;font-weight:500}.sf-head__link:disabled{color:var(--ink-3);cursor:default}.sf-head__link:focus-visible{outline:2px solid var(--action);outline-offset:3px}.sf-handover{flex-direction:column;gap:14px;display:flex}.sf-handover__line{background:var(--warn-soft);color:var(--ink);border-radius:10px;margin:0;padding:12px 14px;font-size:14px;line-height:1.45}.sf-handover__row{align-items:center;gap:8px;display:flex}.sf-handover__link{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:13px;font-weight:500;overflow:hidden}.sf-handover__pin{letter-spacing:.08em;font-size:20px}.sf-roles{padding:4px 0 0}.sf-roles__lede{max-width:820px;color:var(--ink-2);margin:0 0 20px;font-size:16px;line-height:1.5}.sf-roles__lede a{color:inherit;text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong)}.sf-roles__scroll{border:1px solid var(--line);border-radius:12px;overflow-x:auto}.sf-roles__table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:980px}.sf-roles__table th,.sf-roles__table td{border-top:1px solid var(--line);text-align:left;vertical-align:middle;padding:0 12px}.sf-roles__table thead th{vertical-align:middle;border-top:0;height:92px}.sf-roles__record{width:210px;color:var(--ink);background:var(--surface);font-size:15px;font-weight:400;position:sticky;left:0}thead .sf-roles__record{color:var(--ink-3);font-size:13px;font-weight:400}.sf-roles__role{width:96px;text-align:center!important;padding:0 4px!important}.sf-roles__role-name{color:var(--ink);font-size:15px;font-weight:600;display:block}.sf-roles__role-sub{color:var(--ink-3);margin-top:6px;font-size:11px;font-weight:400;line-height:1.3;display:block}.sf-roles__limits{width:auto;color:var(--ink-3);font-size:15px;font-weight:400}.sf-roles__section th{background:var(--ground);height:40px;color:var(--ink);font-size:15px;font-weight:600}.sf-roles__table tbody tr:not(.sf-roles__section){height:40px}.sf-roles__cell{text-align:center!important;padding:0 4px!important}.sf-roles__chips{gap:2px;display:inline-flex}.sf-roles__chip{background:var(--tray);width:18px;height:18px;color:var(--ink);font-family:var(--font-mono);border-radius:4px;justify-content:center;align-items:center;font-size:10px;font-weight:600;display:inline-flex}.sf-roles__chip--d{background:var(--ink);color:var(--surface)}.sf-roles__none{color:var(--faint)}.sf-roles__limit{color:var(--ink-2);font-size:12.5px;line-height:1.35;padding-top:6px!important;padding-bottom:6px!important}.sf-roles__limit a{color:inherit;text-decoration:none}.sf-roles__limit a:hover{text-decoration:underline}.cx-sheet__head:has(.sf-head__link){height:auto;min-height:64px;padding-top:12px;padding-bottom:12px}.sf-field-link{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:3px;font-weight:500}
