:root{--gray-0:#fff;--gray-25:#fafbfc;--gray-50:#f5f6f8;--gray-100:#eef0f3;--gray-150:#e6e9ee;--gray-200:#dfe3e8;--gray-300:#c9cfd8;--gray-500:#6b7280;--gray-600:#5b6370;--gray-700:#3d4450;--gray-900:#161a21;--accent:#1f4e8c;--accent-hover:#173e72;--accent-soft:#9db4d4;--accent-bg:#edf2f9;--accent-ring:#1f4e8c38;--ok:#24693a;--ok-bg:#e9f5ec;--ok-line:#bfe0c8;--warn:#8a5300;--warn-bg:#fdf3dc;--warn-line:#f1d79c;--bad:#b42318;--bad-bg:#fdeceb;--bad-line:#f5c2bd;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-pill:999px;--shadow-xs:0 1px 2px #1018280d;--shadow-sm:0 1px 3px #1018280f, 0 1px 2px #1018280a;--shadow-md:0 4px 12px #10182814, 0 1px 3px #1018280d;--shadow-lg:0 20px 48px #1018282e;--text-xs:11px;--text-sm:12.5px;--text-md:14px;--text-lg:16px;--text-xl:19px;--text-2xl:24px;--font:Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--surface:var(--gray-0);--bg:var(--gray-50);--card:var(--gray-0);--ink:var(--gray-900);--muted:var(--gray-600);--line:var(--gray-150);--line-strong:var(--gray-300);--gold:var(--accent);--gold-soft:var(--accent-soft);--gold-bg:var(--accent-bg);--blue:var(--accent);--blue-bg:var(--accent-bg);--green:var(--ok);--green-bg:var(--ok-bg);--red:var(--bad);--red-bg:var(--bad-bg);--radius:var(--radius-lg);--shadow:var(--shadow-sm);font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:var(--text-md);line-height:1.5}*{box-sizing:border-box}body{min-height:100vh;margin:0}body.no-scroll{overflow:hidden}a{color:inherit}h1{letter-spacing:-.02em;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 2px;font-size:26px;display:flex}h2{margin:0;font-size:18px}h3{margin:0;font-size:15px}p{margin:6px 0}input,select,textarea,button{font:inherit;color:inherit}input,select,textarea{border:1px solid var(--line-strong);background:var(--surface);border-radius:9px;outline:none;width:100%;padding:9px 11px}textarea{resize:vertical}.muted{color:var(--muted)}.small{font-size:12px}.right{text-align:right}.nowrap{white-space:nowrap}.dim{opacity:.55}.brand{flex-direction:column;gap:3px;line-height:1;display:flex}.brand-mark{letter-spacing:.14em;color:var(--gold);font-size:13px;font-weight:900}.brand-sub{letter-spacing:.22em;color:var(--muted);font-size:9px;font-weight:800}.button{border:1px solid var(--line-strong);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:9px;justify-content:center;align-items:center;gap:6px;min-height:36px;padding:8px 14px;font-weight:700;text-decoration:none;display:inline-flex}.button:hover:not(:disabled){border-color:var(--gray-500)}.button:disabled{opacity:.45;cursor:default}.button.primary{background:var(--ink);color:#fff;border-color:var(--ink)}.button.primary:hover:not(:disabled){background:#000}.button.ghost{background:0 0;border-color:#0000}.button.ghost:hover:not(:disabled){background:#0000000d}.button.small{min-height:30px;padding:5px 10px;font-size:12px}.button.big{min-height:46px;padding:12px 20px;font-size:15px}.button.wide{width:100%;margin-top:8px}.button.danger{color:var(--red)}.button.light{color:#fff}.icon-button{cursor:pointer;background:0 0;border:0;border-radius:50%;width:36px;height:36px;font-size:26px;line-height:1}.icon-button:hover{background:#0000000f}.icon-button.light{color:#fff}.icon-button.light:hover{background:#ffffff1f}.link-button{color:var(--blue);cursor:pointer;background:0 0;border:0;padding:0;font-weight:700}.badge{letter-spacing:.02em;background:var(--gray-100);color:#555;white-space:nowrap;border-radius:999px;align-items:center;padding:2px 8px;font-size:11px;font-weight:800;display:inline-flex}.badge-gold{background:var(--gold-bg);color:var(--warn)}.badge-blue{background:var(--blue-bg);color:var(--blue)}.badge-green{background:var(--green-bg);color:var(--green)}.badge-red{background:var(--red-bg);color:var(--red)}.badge-dark{color:#fff;background:#0009}.app{flex-direction:column;min-height:100vh;display:flex}.topbar{z-index:20;background:var(--surface);border-bottom:1px solid var(--line);align-items:center;gap:28px;padding:10px 24px;display:flex;position:sticky;top:0}.topbar-brand{text-decoration:none}.topnav{flex:1;gap:4px;display:flex}.topnav a{color:var(--muted);border-radius:8px;padding:8px 12px;font-weight:700;text-decoration:none}.topbar-user{align-items:center;gap:12px;margin-left:auto;display:flex}.user-chip{flex-direction:column;align-items:flex-end;line-height:1.2;display:flex}.user-chip span{color:var(--muted);font-size:11px}.page{width:100%;max-width:1600px;margin:0 auto;padding:22px 24px 60px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.page-head .actions{flex-wrap:wrap;gap:8px;display:flex}.crumbs{margin-bottom:8px;font-weight:700}.crumbs a{color:var(--muted);text-decoration:none}.crumbs a:hover{color:var(--ink)}.center-page{place-items:center;min-height:100vh;padding:20px;display:grid}.card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px;padding:22px}.card.narrow{width:100%;max-width:440px}.center-card{text-align:center;margin:40px auto}.signin-title{margin-top:22px}.signin-block{margin-top:14px}.info-block{background:var(--gold-bg);border-radius:10px;padding:12px 14px}.info-block p{color:var(--gray-700);margin:4px 0 0}.signin-alt{border-top:1px solid var(--line);margin-top:16px;padding-top:12px}.signin-alt summary{cursor:pointer;color:var(--muted);font-weight:700}.spinner-row{color:var(--muted);justify-content:center;align-items:center;gap:10px;padding:30px 0;display:flex}.spinner{border:2px solid #0000001f;border-top-color:var(--gold);border-radius:50%;flex:none;width:18px;height:18px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.error-note{background:var(--red-bg);color:var(--red);border:1px solid var(--bad-line);border-radius:9px;margin:10px 0;padding:10px 12px;font-weight:600}.empty{text-align:center;color:var(--muted);padding:60px 20px}.empty h3{color:var(--ink);margin-bottom:6px;font-size:18px}.toast{background:var(--ink);color:#fff;text-align:center;z-index:40;border-radius:18px;width:max-content;max-width:min(560px,100vw - 32px);padding:10px 18px;font-weight:700;line-height:1.35;position:fixed;bottom:22px;left:50%;transform:translate(-50%);box-shadow:0 8px 30px #00000040}.progress-note{background:var(--surface);border:1px solid var(--line);border-radius:10px;align-items:center;gap:10px;margin-bottom:12px;padding:10px 14px;font-weight:600;display:flex}.filters{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;display:flex}.search{max-width:460px;padding:11px 14px;font-size:15px}.segmented{background:var(--gray-100);border-radius:10px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.segmented button{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:8px;padding:7px 12px;font-weight:700}.segmented button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0000001a}.segmented.small button{padding:5px 10px;font-size:12px}.segmented.big button{padding:11px 16px;font-size:15px}.segmented.spaced{margin-bottom:14px}.job-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.job-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;flex-direction:column;text-decoration:none;transition:box-shadow .15s,transform .15s;display:flex;overflow:hidden}.job-card:hover{transform:translateY(-1px);box-shadow:0 8px 26px #00000017}.job-cover{aspect-ratio:4/3;background:var(--gray-100);position:relative}.job-cover img{object-fit:cover;width:100%;height:100%;display:block}.job-cover-empty{height:100%;color:var(--gray-500);place-items:center;font-weight:700;display:grid}.job-count{color:#fff;background:#000000a6;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:800;position:absolute;bottom:8px;right:8px}.job-info{flex-direction:column;gap:3px;padding:12px 14px 14px;display:flex}.job-line{justify-content:space-between;align-items:center;gap:8px;display:flex}.job-line strong{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.job-address{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.job-meta{color:var(--gray-500);font-size:12px}.toolbar{z-index:10;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--line);background:#f4f3f0f0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;padding:10px 0;display:flex;position:sticky;top:61px}.toolbar-filters,.toolbar-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.toolbar select{width:auto;padding:6px 10px}.live-dot:before{content:"";vertical-align:middle;background:#4caf50;border-radius:50%;width:7px;height:7px;margin-right:6px;animation:2s infinite pulse;display:inline-block}@keyframes pulse{50%{opacity:.35}}.photo-group{margin-top:18px}.group-title{align-items:baseline;gap:10px;margin-bottom:10px;font-size:15px;display:flex}.group-title span{color:var(--muted);font-size:12px;font-weight:600}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;display:grid}.tile{background:var(--surface);border:2px solid #0000;border-radius:10px;margin:0;position:relative;overflow:hidden}.tile.selected{border-color:var(--gold-soft)}.tile.is-new{box-shadow:0 0 0 3px #1f4e8c59}.tile-open{cursor:zoom-in;aspect-ratio:4/3;background:#ddd;border:0;width:100%;padding:0;display:block}.tile-open img{object-fit:cover;width:100%;height:100%;display:block}.tile-check{color:#0000;cursor:pointer;opacity:0;background:#00000059;border:2px solid #fff;border-radius:50%;place-items:center;width:26px;height:26px;padding:0;font-weight:900;transition:opacity .12s;display:grid;position:absolute;top:8px;left:8px}.tile:hover .tile-check,.tile-check.on,.tile-check:focus-visible{opacity:1}.tile-check.on{background:var(--gold-soft);color:#fff}.tile-badges{gap:4px;display:flex;position:absolute;top:8px;right:8px}.tile figcaption{flex-direction:column;gap:1px;padding:7px 10px 9px;display:flex}.tile figcaption strong{white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.tile figcaption span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}@media (hover:none){.tile-check{opacity:.85}}.viewer{z-index:50;color:#fff;background:#0d0d0d;flex-direction:column;display:flex;position:fixed;inset:0}.viewer-top{box-sizing:border-box;border-bottom:1px solid #ffffff1a;align-items:center;gap:12px;min-height:61px;padding:8px 12px;display:flex}.viewer-title{flex-direction:column;flex:1;align-items:center;line-height:1.2;display:flex}.viewer-title span{color:#aaa;font-size:12px}.viewer-body{flex:1;min-height:0;display:flex}.viewer-stage{-webkit-user-select:none;user-select:none;overscroll-behavior:contain;flex:1;justify-content:center;align-items:center;min-width:0;padding:12px 64px;display:flex;position:relative;overflow:hidden}.viewer-img-wrap{transform-origin:0 0;max-width:100%;max-height:100%;line-height:0;display:inline-block;position:relative}.viewer-img,.viewer-thumb{object-fit:contain;max-width:calc(100vw - 128px);max-height:calc(100vh - 90px);display:block}:is(.viewer-body:has(.viewer-panel) .viewer-img,.viewer-body:has(.viewer-panel) .viewer-thumb){max-width:calc(100vw - 488px)}.viewer-thumb{filter:blur(1px);min-width:320px}.viewer-img.pending{opacity:0;pointer-events:none;position:absolute;top:0;left:0}.viewer-loading{margin:-9px;position:absolute;top:50%;left:50%}.markup{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.viewer-nav{z-index:3;color:#fff;cursor:pointer;background:#ffffff14;border:0;border-radius:10px;width:48px;height:72px;font-size:40px;position:absolute;top:50%;transform:translateY(-50%)}.viewer-nav:hover:not(:disabled){background:#ffffff2e}.viewer-nav:disabled{opacity:.2;cursor:default}.viewer-nav.prev{left:8px}.viewer-nav.next{right:8px}.viewer-panel{background:var(--surface);width:360px;color:var(--ink);border-left:1px solid var(--gray-900);flex:none;overflow-y:auto}.panel-inner{flex-direction:column;gap:12px;padding:18px;display:flex}.panel-meta{color:var(--muted);flex-direction:column;gap:3px;font-size:13px;display:flex}.panel-who{color:var(--ink);align-items:center;gap:8px;font-size:15px;display:flex}.panel-form{flex-direction:column;gap:10px;display:flex}.panel-row,.panel-actions{flex-wrap:wrap;gap:8px;display:flex}.panel-row .button{flex:1}.keys{border-top:1px solid var(--line);padding-top:10px}.field{flex-direction:column;gap:5px;display:flex}.field-label{color:var(--gray-700);font-size:12px;font-weight:800}.field-label em{color:var(--muted);font-style:normal;font-weight:500}.form-grid{flex-direction:column;gap:14px;display:flex}.two-col{grid-template-columns:1fr 1fr;gap:12px;display:grid}.check{cursor:pointer;align-items:center;gap:8px;margin:8px 0;font-weight:600;display:flex}.check input{width:auto}.copy-field{flex-direction:column;gap:5px;margin:8px 0;display:flex}.copy-row{gap:8px;display:flex}.copy-row input{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}.created{background:var(--green-bg);border:1px solid var(--ok-line);border-radius:12px;margin-bottom:8px;padding:14px}.section-title{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:22px 0 8px;font-size:13px}.role-picker{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.role-option{text-align:left;border:1px solid var(--line-strong);background:var(--surface);cursor:pointer;border-radius:10px;flex-direction:column;gap:3px;padding:10px 12px;display:flex}.role-option span{color:var(--muted);font-size:12px}.role-option.on{border-color:var(--gold-soft);background:var(--gold-bg);box-shadow:0 0 0 2px #1f4e8c47}.pick-list{flex-direction:column;gap:6px;max-height:320px;display:flex;overflow:auto}.pick{text-align:left;border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:9px;flex-direction:column;padding:9px 12px;display:flex}.pick:hover{border-color:var(--gold-soft)}.pick:has(>input[type=radio]){display:block}.pick>input[type=radio]{vertical-align:middle;width:auto;margin:0 6px 0 0}.pick span{color:var(--muted);font-size:12px}.small-select{width:auto;margin-right:6px;padding:4px 8px;font-size:12px}.modal-backdrop{z-index:60;background:#10182873;justify-content:center;align-items:flex-start;padding:6vh 16px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border-radius:16px;flex-direction:column;width:100%;max-width:520px;display:flex;box-shadow:0 20px 60px #0000004d}.modal-wide{max-width:760px}.modal-wide:has(.sow-send){max-width:1120px}.modal-head{justify-content:space-between;align-items:center;padding:16px 18px 8px;display:flex}.modal-body{padding:8px 18px 18px}.modal-foot{border-top:1px solid var(--line);justify-content:flex-end;gap:8px;padding:12px 18px;display:flex}.table{border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:12px;width:100%;overflow:hidden}.table th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--gray-25);border-bottom:1px solid var(--line);padding:10px 12px;font-size:11px}.table td{border-bottom:1px solid var(--gray-100);vertical-align:middle;padding:10px 12px}.table tr:last-child td{border-bottom:0}.table td .badge,.table td .button+.button{margin-left:6px}.table.compact td{padding:8px 10px}.people{flex-direction:column;gap:14px;display:flex}.person{padding:16px}.person-head{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px;display:flex}.person-head h3{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.switch{width:38px;height:22px;display:inline-block;position:relative}.switch input{opacity:0;width:0;height:0}.switch span{background:var(--gray-300);cursor:pointer;border-radius:999px;transition:all .15s;position:absolute;inset:0}.switch span:after{content:"";background:var(--surface);border-radius:50%;width:16px;height:16px;transition:all .15s;position:absolute;top:3px;left:3px}.switch input:checked+span{background:var(--gold-soft)}.switch input:checked+span:after{transform:translate(16px)}.dropzone{border:2px dashed var(--line-strong);text-align:center;cursor:pointer;background:var(--gray-25);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:24px;display:flex;position:relative}.dropzone input{opacity:0;cursor:pointer;position:absolute;inset:0}.dropzone span{color:var(--muted);font-size:12px}.dropzone.big{padding:34px 18px}.dropzone.big strong{font-size:17px}.upload-list{margin-top:12px}.upload-summary{flex-direction:column;gap:6px;margin-bottom:8px;display:flex}.bar{background:var(--gray-100);border-radius:999px;height:6px;overflow:hidden}.bar span{background:var(--gold-soft);height:100%;transition:width .2s;display:block}.upload-list ul{border:1px solid var(--line);border-radius:10px;max-height:240px;margin:0;padding:0;list-style:none;overflow:auto}.upload-list li{border-bottom:1px solid var(--gray-100);justify-content:space-between;gap:10px;padding:7px 10px;font-size:13px;display:flex}.upload-list li:last-child{border-bottom:0}.upload-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.upload-state{color:var(--muted);flex:none}.upload-done .upload-state{color:var(--green);font-weight:700}.upload-failed .upload-state{color:var(--red);font-weight:700}.upload-uploading .upload-state{color:var(--gold);font-weight:700}.guest-upload{margin-bottom:20px}.upload-options{grid-template-columns:auto 1fr 1fr;align-items:end;gap:12px;margin:14px 0;display:grid}.upload-actions{flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}@media (width<=900px){.viewer-panel{width:min(360px,100%);position:absolute;top:52px;bottom:0;right:0;box-shadow:-10px 0 30px #0006}:is(.viewer-body:has(.viewer-panel) .viewer-img,.viewer-body:has(.viewer-panel) .viewer-thumb){max-width:calc(100vw - 128px)}}@media (width<=700px){.topbar{flex-wrap:wrap;gap:12px;padding:10px 14px}.topnav{flex-basis:100%;order:3;overflow-x:auto}.user-chip span{display:none}.page{padding:16px 14px 50px}h1{font-size:22px}.photo-grid{grid-template-columns:repeat(2,1fr);gap:8px}.job-grid{grid-template-columns:1fr}.toolbar{position:static;top:0}.viewer-stage{padding:8px}.viewer-img,.viewer-thumb{max-width:calc(100vw - 16px);max-height:calc(100vh - 80px)}.viewer-nav{background:#00000059;width:40px;height:56px;font-size:30px}.viewer-thumb{min-width:0}.two-col,.role-picker,.upload-options{grid-template-columns:1fr}.page-head .actions{width:100%}.page-head .actions .button.big{flex:1}.table{display:block;overflow-x:auto}}.markup.markup-edit{pointer-events:auto;touch-action:none;cursor:crosshair;-webkit-user-select:none;user-select:none}.markup.markup-edit.tool-move{cursor:grab}.markup.markup-edit.tool-move:active{cursor:grabbing}.markup.markup-edit.tool-text{cursor:text}.viewer.editing .viewer-img-wrap{outline:calc(2px / var(--zoom,1)) solid var(--gold-soft);outline-offset:calc(2px / var(--zoom,1))}.markup-toolbar{flex-wrap:wrap;flex:1;justify-content:center;align-items:center;gap:4px;display:flex}.markup-tool{color:#ddd;cursor:pointer;background:#1b1b1b;border:1px solid #ffffff2e;border-radius:9px;flex-direction:column;justify-content:center;align-items:center;min-width:54px;height:44px;padding:2px 8px;font-size:10px;font-weight:800;display:inline-flex}.markup-tool span{color:#fff;font-size:17px;font-weight:900;line-height:18px}.markup-tool:hover:not(:disabled){border-color:#fff6}.markup-tool.on{background:var(--gold-soft);border-color:var(--gold-soft);color:var(--gray-900)}.markup-tool.on span{color:var(--gray-900)}.markup-tool:disabled{opacity:.35;cursor:default}.markup-sep{background:#ffffff26;width:1px;height:30px;margin:0 6px}.button.gold{background:var(--gold-soft);border-color:var(--gold-soft);color:var(--gray-900)}.button.gold:hover:not(:disabled){background:var(--accent-hover)}.markup-text-input{z-index:3;transform:translateY(-50%) scale(calc(1 / var(--zoom,1)));transform-origin:0;width:min(320px,70%);color:var(--gray-900);border:2px solid var(--gold-soft);border-radius:8px;padding:6px 9px;font-size:16px;font-weight:800;line-height:1.3;position:absolute;box-shadow:0 6px 20px #0006}.markup-hint{z-index:3;color:#fff;pointer-events:none;white-space:nowrap;background:#000000bf;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:700;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.markup-error{background:var(--red);color:#fff;text-align:center;padding:6px 10px;font-size:13px;font-weight:700}.tag-list{flex-wrap:wrap;align-items:center;gap:6px;min-height:26px;display:flex}.tag-chip{background:var(--gray-100);color:var(--accent);border:1px solid var(--accent-soft);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 4px 2px 9px;font-size:12px;font-weight:700;display:inline-flex}.tag-chip em{background:#00000014;border-radius:999px;padding:0 6px;font-size:11px;font-style:normal;font-weight:800}.tag-chip button{color:inherit;cursor:pointer;background:0 0;border:0;border-radius:50%;width:18px;height:18px;padding:0;font-size:15px;line-height:1}.tag-chip button:hover{background:#0000001a}.tag-chip:not(:has(button)){padding-right:9px}.tag-chip.on{background:var(--gold-soft);border-color:var(--gold-soft);color:var(--gray-900)}.tag-chip.clickable{cursor:pointer}.tag-input{margin-top:6px;position:relative}.tag-input input{padding:7px 10px}.tag-suggestions{z-index:30;background:var(--surface);border:1px solid var(--line-strong);border-radius:10px;max-height:260px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto;box-shadow:0 10px 30px #00000026}.tag-suggestions li{cursor:pointer;border-radius:7px;justify-content:space-between;gap:10px;padding:7px 10px;font-size:13px;font-weight:600;display:flex}.tag-suggestions li em{color:var(--muted);font-size:11px;font-style:normal}.tag-suggestions li.on,.tag-suggestions li:hover{background:var(--gold-bg)}.tag-error{color:var(--red);margin:4px 0 0;font-size:12px;font-weight:600}.tile-tags{flex-wrap:wrap;gap:4px;max-height:20px;margin-top:3px;display:flex;overflow:hidden}.tile-tags i{color:var(--accent);background:var(--accent-bg);border-radius:999px;padding:1px 6px;font-size:10px;font-style:normal;font-weight:700}.ok-note{background:var(--green-bg);color:var(--green);border-radius:8px;margin:10px 0;padding:8px 10px;font-weight:700}.toolbar-filters .tag-chip{padding-top:4px;padding-bottom:4px}.photo-hits{margin-top:28px}.hits-title{flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:12px;font-size:18px;display:flex}.hits-title span{color:var(--muted);font-size:12px;font-weight:600}.tile.hit{text-decoration:none;display:block}.tile.hit .tile-open{display:block}.hit-caption{flex-direction:column;gap:1px;padding:7px 10px 9px;display:flex}.hit-caption strong{white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.hit-caption span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.hit-caption .hit-snippet{white-space:normal;-webkit-line-clamp:2;color:var(--gray-700);-webkit-box-orient:vertical;display:-webkit-box}@media (width<=900px){.markup-tool{min-width:44px;padding:2px 5px}.markup-sep{display:none}}.viewer-stage.zoomed{cursor:grab}.viewer-stage.panning,.viewer-stage.panning *{cursor:grabbing!important}.viewer.editing .viewer-stage.space-pan.zoomed,.viewer.editing .viewer-stage.space-pan.zoomed .markup-edit{cursor:grab}.viewer.editing .viewer-stage.zoomed .markup-edit.tool-move{cursor:move}.zoom-controls{z-index:4;cursor:default;background:#141414c7;border:1px solid #ffffff24;border-radius:999px;align-items:center;gap:2px;padding:3px;display:flex;position:absolute;bottom:12px;left:12px;box-shadow:0 4px 14px #00000059}.zoom-controls button{color:#fff;cursor:pointer;background:0 0;border:0;border-radius:999px;min-width:28px;height:28px;padding:0 8px;font-size:17px;font-weight:700;line-height:1}.zoom-controls button:hover:not(:disabled){background:#ffffff24}.zoom-controls button:disabled{opacity:.35;cursor:default}.zoom-controls .zoom-reset{font-size:12px;font-weight:800}.zoom-level{text-align:center;font-variant-numeric:tabular-nums;color:#eee;min-width:46px;font-size:12px;font-weight:800}@media (width<=900px){.viewer.editing .zoom-controls{bottom:56px}}.job-tabs{border-bottom:1px solid var(--line);gap:4px;margin:6px 0 16px;display:flex}.job-tabs button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-bottom:3px solid #0000;margin-bottom:-1px;padding:10px 16px;font-weight:800}.wo-tab{flex-direction:column;gap:16px;display:flex}.wo-tab .card{padding:18px 20px}.wo-import-summary{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.wo-import .actions{flex-wrap:wrap;gap:8px;display:flex}.wo-import .dropzone{margin:10px 0}.dropzone.disabled{opacity:.7;cursor:progress}.wo-reconcile{font-weight:800}.wo-reconcile.ok{color:var(--green)}.wo-reconcile.bad{color:var(--red)}.wo-warnings{color:var(--red);margin:6px 0 0;padding-left:18px;font-size:13px}.wo-budget summary{cursor:pointer;flex-wrap:wrap;align-items:baseline;gap:12px;list-style:none;display:flex}.wo-budget summary::-webkit-details-marker{display:none}.wo-budget[open] summary{margin-bottom:12px}.wo-budget h3{margin:18px 0 8px}.wo-budget-figures{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:0 0 12px;display:grid}.wo-budget-figures div{background:var(--gray-25);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.wo-budget-figures dt{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:11px;font-weight:700}.wo-budget-figures dd{margin:2px 0 0;font-size:17px;font-weight:800}.wo-table td,.wo-table th{font-size:13px}.wo-inline-form{flex-wrap:wrap;align-items:flex-end;gap:8px;margin:10px 0;display:flex}.wo-inline-form>input,.wo-inline-form>select{flex:1;width:auto;min-width:120px}.wo-inline-form .field{width:160px}.wo-inline-form .check{white-space:nowrap;margin:0}.negative{color:var(--red)!important}.wo-below-target{background:var(--red-bg)!important}.wo-budget-figures .wo-below-target{border-color:var(--red)}.wo-overview-filters{flex-wrap:wrap;align-items:center;gap:14px;margin:0 0 14px;display:flex}.wo-flagged-trades{color:var(--red);flex-wrap:wrap;gap:6px;margin-top:4px;font-weight:700;display:flex}.wo-flagged-trades span{background:var(--surface);border:1px solid var(--red);border-radius:999px;padding:1px 8px}.wo-target-card{min-width:200px;padding:12px 16px}.wo-target-value{align-items:baseline;gap:8px;font-size:22px;display:flex}.wo-target-value .link-button{font-size:13px}.wo-board-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.wo-board-head .actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.wo-board-head select{width:auto}.wo-board{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:16px;display:grid}.wo-active{flex-direction:column;gap:12px;min-width:0;display:flex}.wo-bucket{background:var(--surface);border:1px solid var(--line);border-radius:14px}.wo-bucket.active{box-shadow:var(--shadow);padding:14px 16px}.wo-bucket.drag-over{border-color:var(--gold);background:var(--gold-bg);box-shadow:0 0 0 3px var(--accent-ring)}.wo-bucket-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.wo-bucket-head h3{flex-wrap:wrap;align-items:center;gap:8px;font-size:17px;display:flex}.wo-bucket-head .actions{align-items:center;gap:8px;display:flex}.wo-bucket-head select{width:auto}.wo-drag,.wo-handle{cursor:grab;color:var(--muted);-webkit-user-select:none;user-select:none;padding:0 4px;font-size:16px}.wo-drag[draggable=false],.wo-handle[draggable=false]{cursor:not-allowed;opacity:.4}.wo-lines{flex-direction:column;gap:8px;display:flex}.wo-line{border:1px solid var(--line);background:var(--gray-25);border-radius:10px;padding:9px 12px}.wo-line.excluded{opacity:.6;background:var(--gray-50)}.wo-line-top{align-items:center;gap:8px;display:flex}.wo-line-top input[type=checkbox]{width:auto}.wo-line-title{flex:1;font-weight:700}.wo-line-amount{color:var(--muted);white-space:nowrap;font-weight:700}.wo-line-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px;margin:4px 0 0 28px;font-size:12px;display:flex}.wo-line-meta select{border-radius:6px;width:auto;padding:2px 6px;font-size:12px}.wo-line-meta select.needs-review{border-color:var(--red);color:var(--red);font-weight:700}.wo-note{width:calc(100% - 28px);margin:6px 0 0 28px;padding:6px 9px;font-size:13px}.wo-line-details{margin:6px 0 0 28px;font-size:13px}.wo-line-details summary{cursor:pointer;color:var(--gold);font-size:12px;font-weight:700}.wo-line-details .field{margin:8px 0}.wo-flag{color:var(--red);font-weight:700}.wo-empty{color:var(--muted);text-align:center;border:2px dashed var(--line);border-radius:10px;padding:18px}.wo-locked{background:var(--gold-bg);border-radius:9px;margin-bottom:10px;padding:9px 12px;font-size:13px}.wo-destinations{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;display:grid}.wo-destination-label{letter-spacing:.08em;color:var(--muted);grid-column:1/-1;margin:4px 0 0;font-size:11px;font-weight:800}.wo-bucket.compact{align-items:stretch;display:flex}.wo-bucket-open{text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;gap:2px;padding:10px 12px;display:flex}.wo-bucket-open span{color:var(--muted);font-size:12px}.wo-bucket.compact .wo-drag{border-left:1px solid var(--line);align-items:center;padding:0 10px;display:flex}.wo-panel{flex-direction:column;gap:10px;display:flex;position:sticky;top:12px}.wo-panel h3{font-size:16px}.wo-figures{grid-template-columns:1fr auto;gap:4px 10px;margin:0;font-size:13px;display:grid}.wo-figures dt{color:var(--muted)}.wo-figures dd{text-align:right;margin:0;font-weight:800}.wo-warn{color:var(--red);margin:0;font-size:13px;font-weight:700}.wo-problems{color:var(--red);margin:0;padding-left:18px;font-size:13px}.wo-panel-actions{flex-wrap:wrap;gap:8px;display:flex}.wo-versions h4{margin:8px 0 4px;font-size:13px}.wo-versions ul{flex-direction:column;gap:6px;margin:0;padding:0;font-size:12px;list-style:none;display:flex}.wo-versions li{justify-content:space-between;gap:8px;display:flex}.wo-margin-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.wo-guest{margin-bottom:16px}.wo-guest-item{border-top:1px solid var(--line);padding:12px 0}.wo-guest-item:first-of-type{border-top:0}.wo-guest-item.awaiting_acceptance{background:var(--gold-bg);border-radius:10px;margin:0 -12px;padding:12px}.wo-guest-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.wo-guest-head .actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.wo-document h1{font-size:22px}.wo-document h1 span{color:var(--muted);font-size:14px;font-weight:600}.wo-scope-table{margin:10px 0}.wo-price{font-size:15px}.wo-accepted{color:var(--green);font-weight:700}.wo-print-root{display:none}.sow{max-width:820px}.sow-head{border-bottom:3px solid var(--gold);margin-bottom:12px;padding-bottom:8px}.sow-brand{letter-spacing:.18em;color:var(--gold);font-size:12px;font-weight:800}.wo-document.sow h1{margin:2px 0;font-size:26px}.sow-tags{color:var(--muted);margin:0;font-size:13px;font-weight:600}.sow-facts{grid-template-columns:max-content 1fr;gap:4px 14px;margin:0 0 14px;font-size:14px;display:grid}.sow-facts dt{color:var(--muted);font-weight:700}.sow-facts dd{margin:0}.sow-photos a{overflow-wrap:anywhere;word-break:break-all}.sow-photos .sow-note{display:block}.wo-photo-link{border-top:1px solid var(--line,var(--gray-150));margin-top:14px;padding-top:12px}.wo-photo-link .check{align-items:flex-start}.wo-photos-option{align-items:flex-start;margin:10px 0}@media print{.sow-photos a{color:inherit;text-decoration:none}}.sow-room{margin-bottom:12px}.sow-room h2{break-after:avoid}.sow-lines tr,.sow-total,.sow-terms,.wo-accepted{break-inside:avoid}.sow-room h2{letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin:10px 0 4px;font-size:13px}.sow-lines{border-collapse:collapse;width:100%;font-size:14px}.sow-lines th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:3px 6px;font-size:11px;font-weight:700}.sow-lines td{border-bottom:1px solid var(--line);vertical-align:top;padding:5px 6px}.sow-qty{text-align:right;white-space:nowrap;width:110px}.sow-note{color:var(--muted);margin-top:2px;font-size:12px}.sow-total{border-top:3px solid var(--ink,var(--gray-900));border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;margin-top:16px;padding:10px 6px;display:flex}.sow-total span{letter-spacing:.12em;font-size:15px;font-weight:800}.sow-total strong{font-size:24px}.sow-total strong.sow-no-price{color:var(--red,#b42318);font-size:16px}.sow-was{text-align:right;color:var(--muted);margin:4px 6px 0;font-size:14px}.sow-terms{margin-top:12px;font-size:13px}.sow-inline-total{font-size:15px}.sow-send{grid-template-columns:minmax(260px,1fr) minmax(320px,1.3fr);align-items:start;gap:18px;display:grid}.sow-send-form{flex-direction:column;gap:10px;display:flex}.sow-total-input input{max-width:220px;font-size:20px;font-weight:800}.sow-preview{border:1px solid var(--line);background:var(--surface);border-radius:10px;max-height:62vh;padding:12px 16px;overflow:auto}.sow-preview-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 6px;font-size:11px;font-weight:800}.sow-preview .wo-document.sow h1{font-size:22px}.sow-message{width:100%;font:inherit;font-size:13px}@media (width<=900px){.sow-send{grid-template-columns:1fr}}@media (width<=1000px){.wo-board{grid-template-columns:1fr}.wo-panel{position:static}}@media print{body.print-wo>:not(.wo-print-root){display:none!important}body.print-wo .wo-print-root{color:#111;background:var(--surface);padding:0;display:block}body.print-wo{background:var(--surface)}.wo-print-root .table{border-radius:0}.wo-print-root th,.wo-print-root td{border:1px solid #888;font-size:10pt}.wo-print-root h1{font-size:20pt}.wo-print-root .sow{max-width:none}.wo-print-root .sow-lines td,.wo-print-root .sow-lines th{border:0;border-bottom:1px solid #bbb;padding:2.5pt 4pt;font-size:10pt}.wo-print-root .sow-room{margin-bottom:6pt}.wo-print-root .sow-room h2{margin:8pt 0 2pt}.wo-print-root .sow-facts{font-size:10.5pt}.wo-print-root .sow-total{border-top:2pt solid #111}.wo-print-root .sow-total strong{font-size:18pt}.wo-print-root>.wo-document+.wo-document{break-before:page;page-break-before:always}.wo-print-root>.wo-document{break-inside:auto}html:has(body.print-wo){background:var(--surface)}}.wo-scope-card{margin-bottom:14px}.wo-scope-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.wo-scope-head h3{margin:0}.wo-scope-room h4{letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin:14px 0 6px;font-size:12px}.wo-duplicate td{color:var(--muted,#777)}.wo-duplicate td:not(:last-child){text-decoration:line-through}.wo-duplicate td .muted{text-decoration:none}.wo-alert{background:var(--gold-bg);border:1px solid var(--line);border-radius:10px;margin:0 0 12px;padding:10px 12px;font-size:14px}.wo-alert p{margin:2px 0}.wo-invoice-form{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end;gap:10px 14px;display:grid}.wo-invoice-form>.actions,.wo-invoice-form>details,.wo-invoice-form>.wo-warn,.wo-invoice-form>.error-note,.wo-invoice-form>.ok-note{grid-column:1/-1}.wo-allocation input{text-align:right;max-width:120px}.wo-invoice-actions{white-space:nowrap}.wo-invoice-actions .button{margin:0 4px 4px 0}.wo-file-link{cursor:pointer;margin-left:8px;display:inline-block}.wo-history{margin:4px 0 0;padding-left:16px}.wo-supplements .dropzone.small{padding:14px}.wo-supplement{border-top:1px solid var(--line);padding:12px 0}.wo-supplement h3{margin:0 0 4px;font-size:15px}.wo-guest-upload{margin:12px 0}.wo-guest-upload summary{cursor:pointer;margin-bottom:8px}.toast{align-items:center;gap:14px;display:flex}.toast-error{background:var(--red)}.toast-action{color:#fff;cursor:pointer;background:0 0;border:1px solid #ffffff80;border-radius:12px;padding:3px 12px;font-weight:800}.toast-action:hover{background:#ffffff24}.ok-text{color:var(--green);font-weight:700}.bad-text{color:var(--red);font-weight:700}.wo-save{color:var(--muted);background:var(--surface);border:1px solid var(--line);white-space:nowrap;border-radius:12px;padding:4px 10px;font-size:12px;font-weight:700}.wo-save.saving,.wo-save.pending{color:var(--gold)}.wo-save.saved{color:var(--green)}.wo-save.error{color:var(--red);border-color:var(--red)}.wo-kanban-wrap{flex-direction:column;gap:8px;display:flex}.wo-col-margin{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 8px;margin:3px 0 1px;font-size:12px;display:flex}.wo-col-margin label{align-items:center;gap:3px;display:inline-flex}.wo-margin-input{width:46px;font:inherit;text-align:right;border:1px solid var(--line);background:var(--surface);border-radius:5px;padding:1px 4px;font-size:12px}.wo-margin-input.overridden{border-color:var(--gold);color:var(--ink,var(--gray-900));font-weight:700}.wo-margin-input.invalid{background:#fdecea;border-color:#c0392b}.wo-margin-reset{font-size:11px}.wo-col-budget strong{color:var(--ink,var(--gray-900))}.wo-col-budget strong.negative{color:#c0392b}.wo-estimate-history{margin-top:6px;font-size:13px}.wo-estimate-history ul{margin:4px 0 0;padding-left:18px}.wo-replace-warning ul{padding-left:18px}.wo-replace-warning li{margin:4px 0}.guest-wo-list{margin-bottom:18px}.guest-wo-list h2{margin:0 0 6px}.guest-wo-group{margin-top:12px}.guest-wo-group h3{align-items:center;gap:6px;margin:0;font-size:15px;display:flex}.guest-wo-group>p{margin:2px 0 6px}.guest-wo-count{background:var(--gold-bg);min-width:20px;color:var(--gold);text-align:center;border-radius:10px;padding:0 6px;font-size:12px;display:inline-block}.guest-wo-group ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.guest-wo-row{border:1px solid var(--line);background:var(--surface);color:inherit;border-radius:10px;gap:2px;min-width:0;padding:10px 64px 10px 12px;text-decoration:none;display:grid;position:relative}.guest-wo-group.new .guest-wo-row{border-left:4px solid var(--gold)}.guest-wo-row:hover{border-color:var(--gold)}.guest-wo-main{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.guest-wo-job,.guest-wo-address{overflow-wrap:anywhere;font-size:13px}.guest-wo-address{color:var(--muted)}.guest-wo-figures{overflow-wrap:anywhere;font-size:13px}.guest-wo-open{color:var(--gold);font-size:14px;font-weight:700;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.app.guest [id^=wo-]{scroll-margin-top:140px}@media (width<=700px){.app.guest .topbar{flex-wrap:nowrap;padding:8px 12px}.app.guest .topbar-brand{flex-shrink:0}.app.guest .brand-mark,.app.guest .brand-sub{white-space:nowrap}.app.guest .topbar-user{gap:8px;min-width:0}.app.guest .user-chip{min-width:0}.app.guest .user-chip strong{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:13px;display:block;overflow:hidden}.app.guest .topbar-user .button{flex-shrink:0;min-height:40px}.app.guest .crumbs a{align-items:center;min-height:40px;display:inline-flex}.app.guest .job-cover:has(.job-cover-empty){aspect-ratio:auto;height:72px}.app.guest .guest-wo-row{padding-top:12px;padding-bottom:12px}}.wo-kanban-actions{align-items:center;gap:14px;display:flex}.wo-kanban-tools{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.wo-kanban{-webkit-user-select:none;user-select:none;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));align-items:start;gap:10px;display:grid}.wo-col{background:var(--gray-25);border:1px solid var(--line);border-radius:14px;flex-direction:column;min-width:0;transition:border-color .12s,box-shadow .12s,background .12s;display:flex}.wo-col.open{border-color:var(--gold-soft);box-shadow:0 0 0 2px var(--accent-ring)}.wo-col.in-house .wo-col-codes strong{color:var(--gold)}.wo-col-handle.pdr{cursor:grab;letter-spacing:.04em;color:#fff;background:var(--gold);margin-top:2px;padding:4px 5px;font-size:10px;font-weight:900}.wo-col-handle.pdr:hover{background:var(--gold);color:#fff}.wo-col-tag{color:var(--gold);text-transform:uppercase;letter-spacing:.04em;margin-top:1px;font-size:10.5px;font-weight:800}.wo-col.drop-ok{border-color:var(--gold);background:var(--gold-bg);box-shadow:0 0 0 3px #1f4e8c47}.wo-col.drop-locked{border-color:var(--red);background:var(--red-bg);box-shadow:0 0 0 3px #a23f2e33}.wo-col.lifting{opacity:.45}.wo-col-head{align-items:flex-start;gap:4px;padding:8px 6px 2px 4px;display:flex}.wo-col-handle{cursor:grab;color:var(--muted);touch-action:none;-webkit-user-select:none;user-select:none;border-radius:6px;padding:4px;font-size:18px;line-height:1}.wo-col-handle:hover,.wo-col-handle:focus-visible{color:var(--ink);background:#0000000f;outline:none}.wo-col-title{flex:1;min-width:0}.wo-col-codes{letter-spacing:.03em;flex-wrap:wrap;align-items:center;gap:6px;font-size:15px;display:flex}.wo-col-codes .badge{letter-spacing:0;font-size:10px}.wo-col-codes strong,.wo-card-meta strong,.wo-chip-code{white-space:nowrap}.wo-col-name{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.wo-col-stats{margin-top:2px;font-size:12px;font-weight:700}.wo-col-actions .icon-button{width:28px;height:28px;font-size:16px}.wo-col-bar{gap:12px;padding:0 10px 6px 30px;font-size:12px;display:flex}.wo-col-bar .link-button.active{color:var(--gold)}.wo-col-drop{background:var(--surface);text-align:center;border-radius:8px;margin:0 8px 6px;padding:5px 8px;font-size:12px;font-weight:800}.wo-col.drop-locked .wo-col-drop{color:var(--red)}.wo-col-body{overscroll-behavior:contain;flex-direction:column;gap:4px;max-height:262px;padding:0 6px 8px;display:flex;overflow-y:auto}.wo-col.collapsed .wo-col-bar{padding-bottom:10px}.wo-col-empty{color:var(--muted);text-align:center;border:2px dashed var(--line);border-radius:10px;padding:14px;font-size:12px}.wo-group{flex-direction:column;gap:6px;display:flex}.wo-group+.wo-group{margin-top:6px}.wo-group-head{text-transform:none;color:var(--muted);border-bottom:1px solid var(--line);background:var(--gray-25);z-index:1;justify-content:space-between;align-items:center;padding:2px 2px 3px;font-size:11px;display:flex;position:sticky;top:0}.wo-group-head strong{color:var(--ink);letter-spacing:.04em}.wo-card{background:var(--surface);border:1px solid var(--line);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:8px;padding:4px 7px;font-size:12px}.wo-card:hover{border-color:var(--line-strong)}.wo-card:focus-visible{outline:2px solid var(--gold-soft);outline-offset:1px}.wo-card.selected{border-color:var(--blue);background:var(--blue-bg);box-shadow:0 0 0 1px var(--blue)}.wo-card.ghost{opacity:.35}.wo-card.excluded{opacity:.6}.wo-card.overlay{cursor:grabbing;border-color:var(--gold-soft);flex-direction:column;gap:2px;width:230px;display:flex;box-shadow:0 10px 28px #00000038}.wo-card.overlay.bucket{font-size:13px;display:block}.wo-card-top{justify-content:space-between;gap:6px;display:flex}.wo-card-room{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.wo-card-amt{color:var(--muted);white-space:nowrap;font-size:11px;font-weight:700}.wo-card-desc{white-space:nowrap;text-overflow:ellipsis;font-weight:600;line-height:1.3;overflow:hidden}.wo-card-row{justify-content:space-between;align-items:baseline;gap:6px;display:flex}.wo-card-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px;min-width:0;font-size:11px;display:flex}.wo-card-meta>span:first-child{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.wo-chip{border:1px solid var(--line-strong);letter-spacing:.03em;border-radius:6px;padding:0 4px;font-size:10px;font-weight:800}.wo-chip.moved{border-color:var(--gold-soft);color:var(--gold)}.wo-chip{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.wo-chip.pdr{border-color:var(--gold);background:var(--gold-bg);color:var(--gold)}.wo-lock{font-size:12px}.wo-details{margin-top:4px}.wo-more>summary{cursor:pointer;align-items:baseline;gap:10px;display:flex}.wo-more-body{flex-direction:column;gap:16px;margin-top:14px;display:flex}.page:has(.wo-kanban){max-width:none}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.sow-lines td{overflow-wrap:anywhere}.sow-accept-bar{z-index:40;background:var(--surface);border-top:1px solid var(--line);padding:10px 16px calc(10px + env(safe-area-inset-bottom));justify-content:center;align-items:center;gap:14px;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -6px 20px #00000014}.sow-accept-bar-copy{color:var(--muted);font-size:13px;font-weight:700}.sow-accept-bar .button{min-height:50px;font-size:16px}.sow-accept-spacer{height:90px}.sow-accept-form{flex-direction:column;gap:8px;margin-top:16px;scroll-margin:90px;display:flex}.sow-agree{border:1px solid var(--line-strong);background:var(--surface);cursor:pointer;border-radius:12px;align-items:flex-start;gap:12px;padding:14px;font-weight:600;display:flex}.sow-agree input{width:24px;height:24px;accent-color:var(--ink);flex:none;margin:0}.sow-agree.missing,input.missing{border-color:var(--red);box-shadow:0 0 0 3px #a23f2e26}.modal-sheet .modal-foot{background:var(--surface);z-index:2;border-radius:0 0 16px 16px;position:sticky;bottom:0}.modal-sheet .modal-foot .button.primary[aria-disabled=true]{opacity:.6}.wo-file-field{grid-column:1/-1}.wo-file-pick{flex-wrap:wrap;gap:10px;display:flex}.wo-file-pick .button{flex:200px;position:relative}.wo-file-pick .button:focus-within{box-shadow:0 0 0 3px #1f4e8c47}.wo-file-chosen{background:var(--green-bg);overflow-wrap:anywhere;border-radius:9px;justify-content:space-between;align-items:center;gap:10px;margin:4px 0 0;padding:10px 12px;display:flex}@media (width<=600px){.sow-accept-bar{flex-direction:column;align-items:stretch;gap:6px;padding-top:8px}.sow-accept-bar-copy{text-align:center;font-size:12px}.sow-accept-bar .button{width:100%}.modal-backdrop:has(.modal-sheet){padding:0}.modal-sheet{max-width:none;min-height:100%;box-shadow:none;border-radius:0}.modal-sheet .modal-head{z-index:2;background:var(--surface);border-bottom:1px solid var(--line);gap:8px;padding:10px 8px 10px 16px;position:sticky;top:0}.modal-sheet .modal-head h2{font-size:16px}.modal-sheet .icon-button{min-width:44px;min-height:44px}.modal-sheet .modal-body{flex:1;padding:14px 16px 16px}.modal-sheet .modal-foot{padding:10px 16px calc(10px + env(safe-area-inset-bottom));border-radius:0}.modal-sheet .modal-foot .button{min-height:50px;font-size:16px}.modal-sheet .modal-foot .button.primary{flex:1}}@media (width<=700px){input,select,textarea{font-size:16px}.wo-guest input:not([type=checkbox]):not(.visually-hidden),.wo-guest select,.modal-sheet input:not([type=checkbox]){min-height:48px}.wo-guest{scroll-margin-top:90px}.wo-guest .button{min-height:44px;padding:10px 16px;font-size:14px}.wo-guest-head .actions{width:100%}.wo-guest-head .actions .button.primary{flex:1}.wo-guest-item.awaiting_acceptance{margin:0 -8px;padding:12px 8px}.wo-guest details>summary{cursor:pointer;align-items:center;min-height:44px;display:flex}.wo-guest details>summary::-webkit-details-marker{display:none}.wo-guest details>summary:before{content:"▸";color:var(--muted);margin-right:8px}.wo-guest details[open]>summary:before{content:"▾"}.wo-document.sow h1{font-size:22px}.sow-facts{grid-template-columns:1fr;gap:0}.sow-facts dt{font-size:12px}.sow-facts dd{margin-bottom:6px}.sow-lines{font-size:15px}.sow-lines td{padding:8px 4px}.sow-qty{width:auto;min-width:72px}.sow-total strong{font-size:26px}.wo-invoice-form{grid-template-columns:1fr}.wo-invoice-form .actions .button{width:100%}.wo-file-pick .button{flex-basis:100%;min-height:50px}.table.wo-stack{display:block;overflow:visible}.wo-stack thead{display:none}.wo-stack tbody{flex-direction:column;gap:10px;display:flex}.wo-stack tr{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:10px 12px;display:block}.wo-stack td{text-align:right;overflow-wrap:anywhere;border:0;justify-content:space-between;gap:12px;padding:4px 0;display:flex}.wo-stack td:before{content:attr(data-label);color:var(--muted);text-align:left;flex:none;font-weight:700}.wo-stack td.wo-stack-title{text-align:left;padding-bottom:6px;font-size:15px;font-weight:800;display:block}.wo-stack td.wo-stack-title:before{content:none}.wo-stack td:empty{display:none}}.wo-note-info{background:var(--gold-bg);border:1px solid var(--gold-soft);color:var(--gray-700);border-radius:8px;margin:6px 0;padding:6px 8px;font-size:12.5px}.wo-routing{border-collapse:collapse;width:100%;margin:8px 0}.wo-routing th{text-align:left;color:var(--muted);padding:4px 6px;font-size:12px}.wo-routing td{padding:4px 6px}.wo-routing input{text-transform:uppercase;width:6em}.wo-routing select,.wo-routing input{min-height:34px}.wo-split-note{color:var(--gold);margin:4px 0 0 26px;font-size:12px;font-weight:600}.wo-tab{position:relative}.wo-upload-button{white-space:nowrap}.wo-drop-overlay{z-index:20;border:3px dashed var(--gold);pointer-events:none;background:#f6efe0d1;border-radius:14px;justify-content:center;align-items:flex-start;padding-top:90px;display:flex;position:absolute;inset:0}.wo-drop-overlay>div{background:var(--surface);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:6px;padding:18px 24px;display:flex;box-shadow:0 10px 30px #00000026}.wo-drop-overlay strong{font-size:17px}.wo-drop-overlay span{color:var(--muted);font-size:13px}.wo-doc-types{border:0;gap:8px;margin:0 0 14px;padding:0;display:grid}.wo-doc-type{border:1px solid var(--line);cursor:pointer;border-radius:10px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.wo-doc-type input{width:auto;margin-top:3px}.wo-doc-type>span{flex-direction:column;gap:2px;display:flex}.wo-doc-type.chosen{border-color:var(--gold-soft);background:var(--gold-bg);box-shadow:0 0 0 2px #1f4e8c47}.wo-review{border:2px solid var(--blue);background:#fbfdff}.wo-review-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.wo-review-head h2{margin:0 0 4px}.wo-review-head .actions{align-items:center;gap:8px;display:flex}.wo-review-table tfoot td{border-top:2px solid var(--line-strong)}.wo-review-table .negative,.wo-col-preview .negative{color:var(--red)}.wo-col.previewing{border-color:var(--blue);box-shadow:0 0 0 2px #1f4e8c40}.wo-col-preview{background:var(--blue-bg);color:var(--blue);border-radius:7px;margin:0 8px 6px;padding:5px 8px;font-size:11.5px;font-weight:600}.wo-col-co{background:var(--blue-bg);color:var(--blue);border-radius:7px;margin:0 8px 6px;padding:5px 8px;font-size:11.5px;font-weight:700}.wo-card.preview-new{border:1.5px dashed var(--green);background:var(--green-bg);cursor:default}.wo-card.preview-changed{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue);background:var(--blue-bg)}.wo-card.preview-removed{border-color:var(--red);background:var(--red-bg)}.wo-card.preview-removed .wo-card-desc,.wo-card.removed .wo-card-desc,.wo-card.removed .wo-card-amt{text-decoration:line-through}.wo-card.removed{opacity:.55;background:var(--gray-50)}.wo-chip.new{background:var(--green-bg);color:var(--green);border-color:var(--ok-line)}.wo-chip.changed{background:var(--blue-bg);color:var(--blue);border-color:#c9d9ea}.wo-chip.removed{background:var(--red-bg);color:var(--red);border-color:var(--bad-line)}.wo-co-note{background:var(--blue-bg);color:var(--accent-hover);border:1px solid #c9d9ea;border-radius:9px;margin:8px 0;padding:10px 12px;font-size:13px}.wo-line.removed .wo-line-title,.wo-line.removed .wo-line-amount{text-decoration:line-through}.wo-removed-note{color:var(--red);margin:4px 0 0;font-size:12px}.wo-changed-note{color:var(--blue);margin:4px 0 0;font-size:12px}.wo-removed-row td:first-child{text-decoration:line-through}.wo-version-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.dash-head{margin-bottom:12px}.dash-head-tools{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.dash-attention{grid-template-columns:repeat(auto-fit,minmax(138px,1fr));gap:8px;margin-bottom:14px;display:grid}.dash-chip{text-align:left;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--line-strong);cursor:pointer;border-radius:10px;grid-template-rows:auto auto;grid-template-columns:auto 1fr;align-items:baseline;column-gap:9px;min-height:58px;padding:8px 10px;display:grid;position:relative}.dash-chip:hover{border-color:var(--line-strong);box-shadow:var(--shadow)}.dash-chip:focus-visible{outline-offset:1px;outline:3px solid #b89a5d73}.dash-chip-count{letter-spacing:-.02em;grid-row:span 2;min-width:26px;font-size:22px;font-weight:800;line-height:1}.dash-chip-label{padding-right:14px;font-size:12.5px;font-weight:800;line-height:1.25}.dash-chip-detail{color:var(--muted);grid-column:2;font-size:11px}.dash-chip kbd{position:absolute;top:6px;right:7px}.dash-chip.zero{opacity:.55}.dash-chip.zero .dash-chip-count{color:var(--muted)}.dash-chip.tone-red{border-left-color:var(--red)}.dash-chip.tone-red .dash-chip-count{color:var(--red)}.dash-chip.tone-gold{border-left-color:var(--gold-soft)}.dash-chip.tone-gold .dash-chip-count{color:var(--warn)}.dash-chip.tone-blue{border-left-color:var(--blue)}.dash-chip.tone-blue .dash-chip-count{color:var(--blue)}.dash-chip.zero.tone-red,.dash-chip.zero.tone-gold,.dash-chip.zero.tone-blue{border-left-color:var(--line-strong)}.dash-chip.on{background:var(--ink);border-color:var(--ink);color:#fff;opacity:1}.dash-chip.on .dash-chip-count,.dash-chip.on .dash-chip-detail{color:#fff}.dash-chip.on kbd{color:#fff;background:#ffffff26;border-color:#0000}.dash-chip-late{color:var(--red);background:var(--red-bg);border-radius:999px;grid-column:2;justify-self:start;margin-top:3px;padding:1px 7px;font-size:11px;font-weight:800}.dash-chip-late.on,.dash-chip.on .dash-chip-late{background:var(--red);color:#fff}kbd{border:1px solid var(--line-strong);background:var(--gray-25);color:var(--muted);border-bottom-width:2px;border-radius:5px;padding:0 5px;font:600 10px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;display:inline-block}.dash-toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:10px;display:flex}.dash-search{flex:340px;max-width:560px}.dash-search input{padding:8px 12px}.dash-sort{align-items:center;gap:6px;display:flex}.dash-sort select{width:auto;padding:7px 9px}.dash-count{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;display:inline-flex}.dash-filter-pill{background:var(--ink);color:#fff;cursor:pointer;border:0;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}.dash-table td{vertical-align:top;padding:7px 10px}.dash-table th{padding:8px 10px}.dash-row{cursor:pointer}.dash-row:hover td{background:var(--gray-25)}.dash-row.selected td{background:var(--accent-bg)}.dash-row.selected td:first-child{box-shadow:inset 3px 0 0 var(--gold)}.dash-row.calm .dash-job-name strong{font-weight:600}.dash-job{min-width:210px;max-width:300px}.dash-job-name{text-decoration:none}.dash-job-name:hover strong{text-decoration:underline}.dash-address{white-space:nowrap;text-overflow:ellipsis;max-width:290px;overflow:hidden}.dash-office{letter-spacing:.04em;color:var(--muted);border:1px solid var(--line);border-radius:4px;margin-left:6px;padding:0 4px;font-size:10px;font-weight:800}.dash-flags{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.dash-flags span{color:var(--warn);background:var(--gold-bg);border-radius:4px;padding:0 5px;font-size:11px}.dash-strip{flex-wrap:wrap;gap:4px;min-width:260px;display:flex}.dash-table td.dash-strip{display:table-cell}.dash-bucket{white-space:nowrap;background:var(--gray-100);color:#444;border:1px solid #0000;border-radius:6px;align-items:center;margin:0 4px 4px 0;padding:4px 7px;font-size:12px;line-height:1;text-decoration:none;display:inline-flex}.dash-bucket b{letter-spacing:.02em;font-weight:800}.dash-bucket:hover,.dash-bucket:focus-visible{border-color:currentColor;outline:none}.dash-bucket.tone-green{background:var(--green-bg);color:var(--green)}.dash-bucket.tone-gold{background:var(--gold-bg);color:var(--warn)}.dash-bucket.tone-red{background:var(--red-bg);color:var(--red);font-weight:700}.dash-bucket.tone-blue{background:var(--blue-bg);color:var(--blue)}.dash-bucket.dim{opacity:.35}.dash-margin{font-weight:800}.dash-margin.low{color:var(--red)}.dash-margin.ok{color:var(--green)}.dash-margin.none{color:var(--muted);font-weight:600}.dash-inv{color:var(--warn);font-size:12px;font-weight:700;text-decoration:none}.dash-inv.disputed{color:var(--red)}.dash-inv:hover{text-decoration:underline}.dash-overpo{color:var(--red);font-size:11px;font-weight:800}.dash-actions{text-align:right}.dash-keys{margin-top:10px;line-height:2}.dash-remind{border-top:1px solid var(--line);gap:8px;padding:12px 0;display:grid}.dash-remind-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.dash-remind-head .button{margin-left:auto}.focus-flash{animation:2.2s ease-out focus-flash}@keyframes focus-flash{0%,40%{box-shadow:0 0 0 3px var(--gold-soft);background-color:var(--gold-bg)}to{box-shadow:0 0 #0000}}#wo-details{scroll-margin-top:72px}.dash-who button{align-items:center;gap:6px;display:inline-flex}.dash-who-n{color:var(--muted);font-size:11px;font-weight:700}.dash-who .on .dash-who-n{color:inherit;opacity:.75}.dash-table th.dash-check,.dash-table td.dash-check{cursor:default;width:28px;padding-right:0}.dash-check input{cursor:pointer;width:15px;height:15px;accent-color:var(--ink);margin:2px 0 0}.dash-row.checked td{background:#eef2f7}.dash-row.checked.selected td{background:#e6ecf3}.dash-pm-button{font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;margin:-2px 0 0 -6px;padding:2px 6px;font-size:12.5px;font-weight:600}.dash-pm-button:hover,.dash-pm-button:focus-visible{border-color:var(--line-strong);background:var(--surface);outline:none}.dash-pm-button.me{color:var(--accent)}.dash-pm-button.none{color:var(--muted);font-style:italic;font-weight:500}.dash-bulk{background:var(--ink);color:#fff;z-index:5;border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;padding:7px 12px;display:flex;position:sticky;top:64px}.dash-bulk .muted{color:#ffffffb3}.dash-bulk .button.ghost{color:#fff;border-color:#ffffff59}.dash-bulk kbd{color:inherit;background:#ffffff26;border-color:#0000}.dash-bulk .button.primary{background:var(--gold);border-color:var(--gold);color:var(--ink)}.dash-assign{gap:2px;max-height:52vh;margin:4px 0 10px;display:grid;overflow:auto}.dash-assign-option{cursor:pointer;border-radius:8px;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:7px 8px;display:grid}.dash-assign-option:hover{background:var(--gray-50)}.dash-assign-option:has(input:checked){background:var(--accent-bg);font-weight:700}.dash-assign-option.disabled{opacity:.45;cursor:not-allowed}.dash-assign-option.none{border-top:1px solid var(--line);margin-top:4px;padding-top:9px}.dash-assign-jobs{margin-top:0}.job-pm{align-items:center;gap:6px;display:inline-flex}.job-pm select{width:auto;padding:2px 6px;font-size:13px}.job-card .job-pm-line{color:var(--muted);font-size:12px}.job-card .job-pm-line.none{font-style:italic}.job-pm-error{color:var(--red);font-size:12px}.filters .jobs-pm-filter{width:auto;padding:8px 10px}.wo-budget-strip{flex-wrap:wrap;align-items:stretch;gap:8px;margin:8px 0 10px;display:flex}.wo-budget-strip>div{background:var(--gray-25);border:1px solid var(--line);border-radius:10px;flex-direction:column;flex:150px;gap:1px;padding:8px 12px;display:flex}.wo-budget-strip dt{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:11px;font-weight:700}.wo-budget-strip dt .muted{text-transform:none;letter-spacing:0;font-weight:600}.wo-budget-strip dd{margin:0;font-size:18px;font-weight:800}.wo-budget-strip>.wo-below-target{border-color:var(--red)}.wo-budget-strip-more{white-space:nowrap;align-self:center}.wo-jobinfo{border-color:var(--red);background:var(--red-bg);margin:8px 0}.wo-jobinfo h3{margin:0 0 4px;font-size:15px}.wo-jobinfo-table{background:var(--surface);margin:6px 0 10px}.wo-jobinfo .actions{flex-wrap:wrap;gap:8px;display:flex}.wo-focus-bar{background:var(--gold-bg);border:1px solid var(--gold-soft);border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;padding:4px 6px 4px 12px;font-size:13px;display:inline-flex}.wo-focus-bar kbd{font:inherit;border:1px solid var(--line-strong);background:var(--surface);border-radius:4px;margin-left:4px;padding:0 4px;font-size:10px}.wo-focus-button{color:var(--muted);font-size:15px}.wo-focus-button.on{color:var(--gold)}.wo-kanban.focusing .wo-col.focused{border-color:var(--gold);grid-column:span 2;box-shadow:0 0 0 2px #1f4e8c47}.wo-kanban.focusing .wo-col.focused .wo-col-body{max-height:60vh}@media (width<=720px){.wo-kanban.focusing .wo-col.focused{grid-column:auto}}.modal.modal-wide.dash-import{max-width:1180px;max-height:92vh}.dash-import .modal-body{overflow:auto}.dash-import .dash-matches th,.dash-import .dash-matches td{vertical-align:top}.dash-import .dash-matches .check{white-space:nowrap}.dash-import .dash-summary{flex-wrap:wrap;align-items:center;gap:8px 18px;margin-bottom:8px;display:flex}.dash-import .field.inline{align-items:center;gap:8px;margin:0;display:flex}.dash-import .dash-matches select{min-width:220px;max-width:320px}.dash-import .dash-matches tr.muted td{color:var(--muted,#6b6b6b)}.dash-import .dash-unmatched{margin-top:12px}.dash-import .dash-unmatched table{margin-top:6px}.dash-import h3{margin:14px 0 6px}.job-number-warnings{grid-column:1/-1}.warning-note{color:#8a5a00;background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:8px;margin:4px 0;padding:6px 10px}.missing-job-number{vertical-align:middle;margin-left:10px;font-size:13px}.wo-phone{flex-direction:column;gap:10px;margin:10px 0 16px;display:flex}.wo-phone-note{background:var(--accent-bg);border:1px solid var(--gold-soft);border-radius:10px;margin:6px 0;padding:10px 12px;font-size:14px;line-height:1.4}.wo-phone-actions{flex-wrap:wrap;gap:8px;display:flex}.wo-phone-actions .button{min-height:44px}.wo-phone-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.wo-phone-sub{margin:10px 0 0;font-size:15px}.wo-phone-item{border:1px solid var(--line);background:var(--surface);border-radius:12px;overflow:hidden}.wo-phone-item.open{box-shadow:0 0 0 2px var(--accent-ring);border-color:var(--gold-soft)}.wo-phone-row{all:unset;box-sizing:border-box;cursor:pointer;grid-template-columns:1fr auto;gap:4px 8px;width:100%;min-height:56px;padding:12px 14px;display:grid}.wo-phone-row:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}.wo-phone-title{overflow-wrap:anywhere;grid-column:1;min-width:0;font-size:16px}.wo-phone-title span{color:var(--muted);font-size:14px}.wo-phone-chevron{color:var(--muted);grid-area:1/2;font-size:16px}.wo-phone-meta{overflow-wrap:anywhere;flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:6px;min-width:0;font-size:13px;display:flex}.wo-phone-figures{flex-wrap:wrap;grid-column:1/-1;justify-content:space-between;align-items:center;gap:6px;font-size:14px;display:flex}.wo-margin-chip{color:#3f663b;white-space:nowrap;background:#eef5ec;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:700;display:inline-block}.wo-margin-chip.below{color:#a33a32;background:#fbeceb}.wo-phone-detail{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding:12px 14px 14px;font-size:14px;display:flex}.wo-phone-detail p{margin:0}.wo-phone-buttons{grid-template-columns:1fr 1fr;gap:8px;display:grid}.wo-phone-buttons .button{width:100%;min-height:44px}.wo-phone-buttons .button.primary{grid-column:1/-1}.wo-phone-scope summary{cursor:pointer;padding:6px 0;font-weight:700}.wo-phone-scope h4{letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin:8px 0 2px;font-size:12px}.wo-phone-scope ul{margin:0;padding:0;list-style:none}.wo-phone-scope li{border-bottom:1px solid var(--line);overflow-wrap:anywhere;justify-content:space-between;gap:10px;padding:5px 0;display:flex}.wo-phone-scope li .muted{white-space:nowrap}@media (width<=700px){.modal .copy-row{flex-wrap:wrap}.modal .copy-row input{flex:100%;min-width:0}.modal-foot{flex-wrap:wrap}.modal-foot .button{min-height:44px}.sow-send .pick{overflow-wrap:anywhere;padding:8px 0;display:block}.app:not(.guest)>.topbar{position:static}.topnav a,.topnav button{white-space:nowrap}.wo-share-row{flex-direction:column;align-items:stretch;gap:4px;display:flex}.wo-share-row .button{min-height:48px}}body{background:var(--bg);color:var(--ink)}h1{font-size:var(--text-2xl);letter-spacing:-.022em;font-weight:750}h2{font-size:var(--text-xl);letter-spacing:-.012em;font-weight:700}h3{font-size:var(--text-lg);letter-spacing:-.005em;font-weight:700}a{text-underline-offset:2px}::selection{background:var(--accent-bg)}.brand-mark{color:var(--accent);letter-spacing:.16em;font-weight:850}.brand-sub{color:var(--gray-500);font-weight:700}.topbar{-webkit-backdrop-filter:saturate(1.4)blur(8px);border-bottom:1px solid var(--line);box-shadow:var(--shadow-xs);background:#ffffffeb}.topnav a{color:var(--gray-600);border-radius:var(--radius-md);font-weight:600;transition:background .12s,color .12s}.topnav a:hover{background:var(--gray-100);color:var(--ink)}.topnav a.active{color:var(--accent);background:var(--accent-bg)}.user-chip strong{font-weight:650}.card{border-color:var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm)}.table{border-color:var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.table th{background:var(--gray-25);color:var(--gray-600);letter-spacing:.05em;border-bottom-color:var(--line);font-weight:650}.table td{border-bottom-color:var(--gray-100)}.table tbody tr{transition:background .1s}.table tbody tr:hover td{background:var(--gray-25)}.button{border-color:var(--line-strong);border-radius:var(--radius-md);color:var(--gray-700);background:var(--gray-0);box-shadow:var(--shadow-xs);font-weight:600;transition:background .12s,border-color .12s,color .12s,box-shadow .12s}.button:hover:not(:disabled){border-color:var(--gray-500);color:var(--ink);background:var(--gray-25)}.button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.button.ghost{box-shadow:none}.button.ghost:hover:not(:disabled){background:var(--gray-100);border-color:#0000}.button.danger{color:var(--bad);border-color:var(--bad-line)}.button.danger:hover:not(:disabled){background:var(--bad-bg);border-color:var(--bad);color:var(--bad)}.button.gold-outline{border-color:var(--accent-soft);color:var(--accent)}.button.light{color:#fff;box-shadow:none}.link-button{color:var(--accent);font-weight:600}.link-button:hover{text-decoration:underline}input,select,textarea{border-color:var(--line-strong);border-radius:var(--radius-md);background:var(--gray-0);transition:border-color .12s,box-shadow .12s}input:hover:not(:disabled):not(:focus),select:hover:not(:disabled):not(:focus),textarea:hover:not(:disabled):not(:focus){border-color:var(--gray-500)}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}input:disabled,select:disabled,textarea:disabled{background:var(--gray-50);color:var(--gray-600)}input[type=checkbox],input[type=radio]{accent-color:var(--accent)}.field-label{color:var(--gray-700);font-weight:650}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.button:focus-visible,.link-button:focus-visible,.topnav a:focus-visible,.job-tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 4px var(--accent-ring)}.badge{background:var(--gray-100);color:var(--gray-700);letter-spacing:.01em;border:1px solid #0000;font-weight:650}.badge-gold{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-line)}.badge-blue{background:var(--accent-bg);color:var(--accent);border-color:#d3e0f1}.badge-green{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-line)}.badge-red{background:var(--bad-bg);color:var(--bad);border-color:var(--bad-line)}.wo-margin-chip{background:var(--ok-bg);color:var(--ok)}.wo-margin-chip.below{background:var(--bad-bg);color:var(--bad)}.segmented{background:var(--gray-100)}.segmented button.on{color:var(--ink);box-shadow:var(--shadow-sm)}.job-tabs button{color:var(--gray-600);font-weight:650}.job-tabs button:hover{color:var(--ink)}.job-tabs button.on{color:var(--accent);border-bottom-color:var(--accent)}.error-note{border-color:var(--bad-line);border-radius:var(--radius-md)}.ok-note{border-radius:var(--radius-md)}.empty{color:var(--gray-600)}.empty h3{color:var(--ink)}.toast{background:var(--gray-900);box-shadow:var(--shadow-lg);border-radius:var(--radius-lg)}.modal{border-radius:var(--radius-xl);box-shadow:var(--shadow-lg)}.modal-head{border-bottom:1px solid var(--gray-100);padding-bottom:var(--space-3);margin-bottom:var(--space-2)}.modal-foot{background:var(--gray-25);border-radius:0 0 var(--radius-xl) var(--radius-xl)}.dropzone{border-color:var(--gray-300);background:var(--gray-25)}.dropzone:hover{border-color:var(--accent-soft);background:var(--accent-bg)}.job-card{border-color:var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.job-card:hover{box-shadow:var(--shadow-md)}.job-cover{background:var(--gray-100)}.wo-budget-strip>div{background:var(--gray-0);border-color:var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);padding:10px 14px}.wo-budget-strip dt{color:var(--gray-600);font-weight:650}.wo-budget-strip dd{letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-weight:750}.wo-budget-strip>.wo-below-target{border-color:var(--bad-line);background:var(--bad-bg)}.wo-col{background:var(--gray-0);border-color:var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs)}.wo-col:hover{box-shadow:var(--shadow-sm)}.wo-col.locked{background:var(--gray-25)}.wo-col.in-house{background:var(--accent-bg);border-color:#d3e0f1;border-top:3px solid var(--accent)}.wo-col-head{border-bottom:1px solid var(--gray-100);padding-bottom:6px}.wo-col.in-house .wo-col-head{border-bottom-color:#d3e0f1}.wo-col-handle.pdr{background:var(--accent);border-radius:var(--radius-sm)}.dash-chip{background:var(--gray-0);border-color:var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);transition:box-shadow .12s,border-color .12s}.dash-chip:hover{box-shadow:var(--shadow-sm);border-color:var(--gray-300)}.wo-phone-item{border-color:var(--line);box-shadow:var(--shadow-xs)}.wo-phone-item.in-house{background:var(--accent-bg);border-color:#d3e0f1}.wo-phone-note{background:var(--accent-bg);color:var(--gray-700);border-color:#d3e0f1}.guest-wo-row{border-color:var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);transition:box-shadow .12s,border-color .12s}.guest-wo-row:hover{border-color:var(--accent-soft);box-shadow:var(--shadow-sm)}.guest-wo-group.new .guest-wo-row{border-left-color:var(--warn)}.guest-wo-count{background:var(--gray-100);color:var(--gray-700)}.guest-wo-open{color:var(--accent)}.table td.right,.wo-figures dd,.wo-line-amount{font-variant-numeric:tabular-nums}:root{--bg:#f1f4f9;--pd-red:#c8102e;--violet:#6d28d9;--violet-bg:#f3effe;--violet-line:#ddd1fb;--accent-line:#d3e0f1;--indigo:#4338ca;--slate:#475569;--on-accent:#fff;--accent-strong:var(--accent);--glass:#ffffffb8;--glass-line:#11131814}body{background:var(--bg)}.topbar{background:var(--accent);-webkit-backdrop-filter:none;border-bottom:3px solid var(--pd-red);color:#fff;box-shadow:0 1px 3px #1018282e}.topbar .brand-mark{color:#fff}.topbar .brand-sub{color:#ffffffd1}.topnav a{color:#ffffffe0}.topnav a:hover{color:#fff;background:#ffffff1f}.topnav a.active{color:#fff;background:#fff3;box-shadow:inset 0 -2px #fff}.topbar .user-chip strong{color:#fff}.topbar .user-chip span{color:#ffffffd1}.topbar .button.ghost{color:#fff;background:0 0;border-color:#ffffff73}.topbar .button.ghost:hover:not(:disabled){color:#fff;background:#ffffff24;border-color:#fff}.topbar :focus-visible,.topbar .button:focus-visible,.topnav a:focus-visible{outline-color:#fff;box-shadow:0 0 0 4px #ffffff4d}.page-title{align-items:center;gap:12px;display:flex}.page-icon{border-radius:var(--radius-lg);color:#fff;background:var(--accent);width:38px;height:38px;box-shadow:var(--shadow-xs);flex:none;place-items:center;display:inline-grid}.page-icon-workorders{background:#0f766e}.page-icon-budgets{background:#24693a}.page-icon-invoices{background:#6d28d9}.page-icon-staff{background:#475569}.page-icon-outside{background:#4338ca}.table th{color:#3d4a5c;background:#eef2f8}.badge-violet{background:var(--violet-bg);color:var(--violet);border-color:var(--violet-line)}.badge-gold,.badge-green,.badge-red,.badge-blue{font-weight:700}.wo-col{border-top:4px solid var(--trade,var(--line))}.wo-col-head{background:var(--trade-bg,transparent);border-radius:calc(var(--radius-lg) - 2px) calc(var(--radius-lg) - 2px) 0 0;border-bottom-color:color-mix(in srgb, var(--trade,#c9cfd8) 22%, #fff)}.wo-col-codes strong,.wo-col.in-house .wo-col-codes strong{color:var(--trade,var(--ink))}.wo-col.in-house{border-top:4px solid var(--accent)}.wo-col.change-order{border-top:4px dashed var(--trade,var(--accent))}.dash-bucket{border-left:3px solid var(--trade,transparent)}.wo-phone-item{border-left:4px solid var(--trade,var(--line))}.wo-phone-row{background:var(--trade-bg,transparent)}.wo-phone-title strong{color:var(--trade,var(--ink))}.wo-phone-item.in-house{border-left-color:var(--accent)}.wo-phone-detail{background:var(--surface)}.guest-wo-row,.guest-wo-group.new .guest-wo-row{border-left:4px solid var(--trade,var(--line));background:linear-gradient(90deg, var(--trade-bg,#fff) 0, #fff 55%)}.guest-wo-main strong{color:var(--trade,var(--ink))}.wo-budget-strip>.tile-revenue{background:#e8f0fb;border-color:#c9daf2}.wo-budget-strip>.tile-revenue dt{color:var(--accent)}.wo-budget-strip>.tile-budget{background:#eef0fd;border-color:#d4d8fa}.wo-budget-strip>.tile-budget dt{color:#4338ca}.wo-budget-strip>.tile-costs{background:#f1f5f9;border-color:#d9e0e8}.wo-budget-strip>.tile-costs dt{color:#475569}.wo-budget-strip>.tile-margin.on-target{background:var(--ok-bg);border-color:var(--ok-line)}.wo-budget-strip>.tile-margin.on-target dt,.wo-budget-strip>.tile-margin.on-target dd{color:var(--ok)}.wo-budget-strip>.tile-margin.wo-below-target dt{color:var(--bad)}.wo-budget-strip dt .muted{color:var(--gray-600)}@media print{body,html{background:var(--surface)}.topbar{background:var(--surface);color:var(--ink);border-bottom:1px solid var(--line);box-shadow:none}}.tabbar{display:none}@media (width<=767.98px){.desktop-only{display:none!important}}@media (width>=768px){.phone-only{display:none!important}.toolbar{z-index:10;background:var(--glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;padding:10px 0;display:flex;position:sticky;top:61px}.tile-open{background:var(--gray-150);cursor:zoom-in;aspect-ratio:4/3;border:0;width:100%;padding:0;display:block}.wo-margin-input.invalid{border-color:var(--bad);background:#fdecea}.wo-col-budget strong.negative{color:var(--bad)}.wo-drop-overlay{z-index:20;background:color-mix(in srgb, var(--bg) 82%, transparent);border:3px dashed var(--gold);pointer-events:none;border-radius:14px;justify-content:center;align-items:flex-start;padding-top:90px;display:flex;position:absolute;inset:0}.wo-review{border:2px solid var(--blue);background:var(--surface)}.wo-chip.changed{background:var(--blue-bg);color:var(--blue);border-color:var(--accent-line)}.wo-co-note{background:var(--blue-bg);color:var(--accent-hover);border:1px solid var(--accent-line);border-radius:9px;margin:8px 0;padding:10px 12px;font-size:13px}.dash-row.checked td{background:var(--accent-bg)}.dash-row.checked.selected td{background:color-mix(in srgb, var(--accent) 16%, var(--surface))}.warning-note{color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:8px;margin:4px 0;padding:6px 10px}.badge-blue{background:var(--accent-bg);color:var(--accent);border-color:var(--accent-line)}.wo-col.in-house{background:var(--accent-bg);border-color:var(--accent-line);border-top:3px solid var(--accent)}.wo-col.in-house .wo-col-head{border-bottom-color:var(--accent-line)}.wo-phone-item.in-house{background:var(--accent-bg);border-color:var(--accent-line)}.wo-phone-note{background:var(--accent-bg);border-color:var(--accent-line);color:var(--gray-700)}.table th{background:color-mix(in srgb, var(--accent) 6%, var(--surface));color:var(--gray-700)}.wo-col-head{background:var(--trade-bg,transparent);border-radius:calc(var(--radius-lg) - 2px) calc(var(--radius-lg) - 2px) 0 0;border-bottom-color:color-mix(in srgb, var(--trade,#c9cfd8) 22%, var(--surface))}.guest-wo-row,.guest-wo-group.new .guest-wo-row{border-left:4px solid var(--trade,var(--line));background:linear-gradient(90deg, var(--trade-bg,var(--surface)) 0, var(--surface) 55%)}.wo-budget-strip>.tile-revenue{background:color-mix(in srgb, var(--accent) 9%, var(--surface));border-color:color-mix(in srgb, var(--accent) 24%, var(--surface))}.wo-budget-strip>.tile-budget{background:color-mix(in srgb, var(--indigo) 9%, var(--surface));border-color:color-mix(in srgb, var(--indigo) 24%, var(--surface))}.wo-budget-strip>.tile-budget dt{color:var(--indigo)}.wo-budget-strip>.tile-costs{background:color-mix(in srgb, var(--slate) 8%, var(--surface));border-color:color-mix(in srgb, var(--slate) 22%, var(--surface))}.wo-budget-strip>.tile-costs dt{color:var(--slate)}:root{--bg:#f2f3f7;--gray-500:#636a77;--radius-lg:16px;--radius-xl:22px;--radius-2xl:28px;--pill-shadow:0 10px 30px #1018281a, 0 1px 3px #1018280f;--avatar:#23804a;--pi-jobs:#1f4e8c;--pi-workorders:#0f766e;--pi-budgets:#24693a;--pi-invoices:#6d28d9;--pi-staff:#475569;--pi-outside:#4338ca;--folder-blue:#4a9cf6;--folder-blue-back:#2f80dd;--folder-green:#4cc95f;--folder-green-back:#34a94a;--folder-gold:#c79a12;--folder-gold-back:#a57f0c;--folder-archived:#8d929b;--folder-archived-back:#6f747d;--bad-strong:var(--bad);--chip-ink:var(--ink)}@media screen{:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--gray-0:#1c1c1f;--gray-25:#212125;--gray-50:#0b0b0d;--gray-100:#2a2a2f;--gray-150:#303036;--gray-200:#3a3a41;--gray-300:#4b4b53;--gray-500:#9b9ba4;--gray-600:#ababb3;--gray-700:#d4d4da;--gray-900:#f4f4f6;--bg:#000;--surface:#1c1c1f;--card:#1c1c1f;--accent:#7cb1ff;--accent-hover:#9cc4ff;--accent-soft:#3d5f8f;--accent-bg:#16243a;--accent-ring:#7cb1ff59;--accent-line:#2c4466;--accent-strong:#2563eb;--on-accent:#fff;--ok:#5fd68f;--ok-bg:#10261a;--ok-line:#1f4a30;--warn:#f5c04e;--warn-bg:#2d220a;--warn-line:#5a4514;--bad:#ff7b72;--bad-bg:#2e1213;--bad-line:#5c2326;--bad-strong:#d0342c;--violet:#b9a4ff;--violet-bg:#241c3d;--violet-line:#3d3166;--indigo:#a5b0ff;--slate:#c0c8d4;--pd-red:#ff5a6e;--glass:#1c1c1fb8;--glass-line:#ffffff17;--shadow-xs:0 1px 2px #00000080;--shadow-sm:0 1px 3px #0000008c;--shadow-md:0 6px 18px #0009;--shadow-lg:0 20px 48px #000000b3;--pill-shadow:0 10px 30px #0009, 0 0 0 1px #ffffff0a;--pi-jobs:#7cb1ff;--pi-workorders:#2dd4bf;--pi-budgets:#5fd68f;--pi-invoices:#b9a4ff;--pi-staff:#c0c8d4;--pi-outside:#a5b0ff;--folder-archived:#3a3a3f;--folder-archived-back:#2b2b2f;--chip-ink:#3a3a41}:root[data-theme=dark] [style*=--trade-dark]{--trade:var(--trade-dark)!important;--trade-bg:color-mix(in srgb, var(--trade-dark) 16%, #1c1c1f)!important}:root[data-theme=dark] img{color-scheme:normal}}body{background:var(--bg);color:var(--ink)}input,select,textarea{color:var(--ink)}::placeholder{color:var(--gray-500);opacity:1}.app>.topbar{z-index:30;border-radius:var(--radius-pill);background:var(--glass);-webkit-backdrop-filter:blur(20px)saturate(1.7);backdrop-filter:blur(20px)saturate(1.7);border:1px solid var(--glass-line);width:calc(100% - 24px);max-width:1560px;box-shadow:var(--pill-shadow);color:var(--ink);align-items:center;gap:18px;margin:12px auto 0;padding:7px 8px 7px 22px;display:flex;position:sticky;top:12px}.topbar .brand-mark{color:var(--ink)}.topbar .brand-sub{color:var(--gray-500)}.topnav{gap:2px}.topnav a{color:var(--gray-600);border-radius:var(--radius-pill);padding:8px 14px;font-weight:600}.topnav a:hover{background:var(--gray-100);color:var(--ink)}.topnav a.active{color:var(--on-accent);background:var(--accent-strong);box-shadow:none}.topbar-user{gap:8px}.topbar .user-chip strong{color:var(--ink)}.topbar .user-chip span{color:var(--gray-600)}.pill-icon,.theme-toggle{width:40px;height:40px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;padding:0;text-decoration:none;display:inline-grid}.pill-icon:hover,.theme-toggle:hover{background:var(--gray-100)}.theme-toggle .icon-sun{display:none}:root[data-theme=dark] .theme-toggle .icon-sun{display:block}:root[data-theme=dark] .theme-toggle .icon-moon{display:none}.avatar{background:var(--avatar);color:#fff;letter-spacing:.02em;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:50%;place-items:center;width:40px;height:40px;font-size:14px;font-weight:700;list-style:none;display:inline-grid}.avatar::-webkit-details-marker{display:none}.avatar.static{cursor:default}.avatar-menu{position:relative}.avatar-menu>summary{list-style:none}.avatar-menu>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.avatar-pop{z-index:40;border-radius:var(--radius-xl);background:var(--surface);border:1px solid var(--line);min-width:220px;box-shadow:var(--shadow-lg);flex-direction:column;gap:12px;padding:14px;display:flex;position:absolute;top:calc(100% + 10px);right:0}.avatar-pop .user-chip{align-items:flex-start}.avatar-pop .user-chip span{color:var(--gray-600);display:block!important}.topbar .button.ghost{color:var(--ink);border-color:var(--line-strong);border-radius:var(--radius-pill);background:0 0}.topbar .button.ghost:hover:not(:disabled){background:var(--gray-100);color:var(--ink);border-color:var(--line-strong)}.topbar :focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:none}.signin-theme{top:max(14px, env(safe-area-inset-top));z-index:5;background:var(--glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--glass-line);box-shadow:var(--pill-shadow);border-radius:50%;position:fixed;right:14px}.toolbar{border-radius:var(--radius-xl);top:84px}.dash-bulk{top:84px}.wo-panel{top:88px}#wo-details{scroll-margin-top:100px}.app.guest [id^=wo-]{scroll-margin-top:150px}.page{padding-top:28px}.card,.table{border-radius:var(--radius-xl);background:var(--surface)}.button{border-radius:12px}.button.primary{background:var(--accent-strong);border-color:var(--accent-strong);color:var(--on-accent)}.button.primary:hover:not(:disabled){background:color-mix(in srgb, var(--accent-strong) 85%, #000);border-color:color-mix(in srgb, var(--accent-strong) 85%, #000);color:var(--on-accent)}input,select,textarea{border-radius:12px}.segmented{border-radius:var(--radius-pill);padding:3px}.segmented button{border-radius:var(--radius-pill)}:root[data-theme=dark] .segmented button.on{background:var(--gray-200)}.modal{border-radius:var(--radius-2xl)}.wo-col-handle.pdr,.wo-col-handle.pdr:hover{background:var(--accent-strong);color:#fff}.dash-chip.on,.dash-filter-pill,.dash-bulk,.toast{background:var(--chip-ink);border-color:var(--chip-ink)}:root[data-theme=dark] .dash-chip.on .dash-chip-count{color:#fff}.markup-error,.dash-chip-late.on,.dash-chip.on .dash-chip-late{background:var(--bad-strong)}.dash-bucket{color:var(--gray-700)}.page-icon{background:var(--pi,var(--pi-jobs));color:#fff;border-radius:12px}.page-icon-jobs,.page-icon-shared{--pi:var(--pi-jobs)}.page-icon-workorders{--pi:var(--pi-workorders);background:var(--pi)}.page-icon-budgets{--pi:var(--pi-budgets);background:var(--pi)}.page-icon-invoices{--pi:var(--pi-invoices);background:var(--pi)}.page-icon-staff{--pi:var(--pi-staff);background:var(--pi)}.page-icon-outside{--pi:var(--pi-outside);background:var(--pi)}:root[data-theme=dark] .page-icon{background:color-mix(in srgb, var(--pi) 20%, #1c1c1f);color:var(--pi)}.wo-col{background:var(--surface);border-radius:20px}.wo-col-head{border-radius:16px 16px 0 0}.wo-col.in-house{background:var(--accent-bg)}.wo-line,.wo-col-body>*{border-radius:12px}.wo-phone-item{background:var(--surface);border-radius:20px}.guest-wo-row{border-radius:20px}.dash-chip,.wo-budget-strip>div{border-radius:18px}.folder-legend{flex-wrap:wrap;align-items:center;gap:4px 6px;margin:-6px 0 16px;display:flex}.folder-legend .dot{border-radius:3px;width:10px;height:10px;margin-left:8px;display:inline-block}.folder-legend .dot:first-child{margin-left:0}.dot.blue{background:var(--folder-blue)}.dot.green{background:var(--folder-green)}.dot.gold{background:var(--folder-gold)}.dot.archived{background:var(--folder-archived)}.folder-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:26px 18px;display:grid}.folder-tile{text-align:center;border-radius:var(--radius-xl);color:var(--ink);flex-direction:column;align-items:center;gap:2px;min-width:0;padding:12px 8px 14px;text-decoration:none;transition:background .12s;display:flex}.folder-tile:hover{background:var(--gray-100)}.folder-tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.folder{width:100%;max-width:132px;margin-bottom:8px;display:block;position:relative}.folder-svg{filter:drop-shadow(0 4px 10px #00000024);width:100%;height:auto;display:block}.folder-blue{--f:var(--folder-blue);--fb:var(--folder-blue-back)}.folder-green{--f:var(--folder-green);--fb:var(--folder-green-back)}.folder-gold{--f:var(--folder-gold);--fb:var(--folder-gold-back)}.folder-archived{--f:var(--folder-archived);--fb:var(--folder-archived-back)}.folder-back{fill:var(--fb)}.folder-front{fill:var(--f)}.folder-count{border-radius:var(--radius-pill);color:#111318;font-variant-numeric:tabular-nums;background:#ffffffe6;min-width:24px;padding:1px 7px;font-size:11.5px;font-weight:700;line-height:1.6;position:absolute;top:30%;right:8%}.folder-name{letter-spacing:-.01em;-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;max-width:100%;font-size:16px;font-weight:600;line-height:1.25;display:-webkit-box;overflow:hidden}.folder-meta{color:var(--gray-600);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-size:12.5px}.job-card{border-radius:var(--radius-xl);background:var(--surface)}.folder-photo{aspect-ratio:4/3;padding-top:7%}.folder-photo-tab{background:var(--f);border-radius:9px 9px 0 0;width:40%;height:16%;position:absolute;top:0;left:0}.folder-photo img{object-fit:cover;border-top:5px solid var(--f);background:var(--gray-150);border-radius:4px 12px 12px;width:100%;height:100%;display:block;position:relative;box-shadow:0 4px 10px #00000024}.folder-photo .folder-count{top:auto;bottom:8px;right:8px}.jobs-desktop{max-width:1320px}.home-greeting{letter-spacing:-.02em;color:var(--ink);margin:4px 0 18px;font-size:30px;font-weight:750;line-height:1.15}.home{flex-direction:column;gap:18px;margin-bottom:18px;display:flex}.home-section{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-xl);min-width:0;box-shadow:var(--shadow-xs);padding:14px 16px 16px}.home-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.home-head h2{color:var(--ink);letter-spacing:-.005em;align-items:center;gap:8px;margin:0;font-size:16px;font-weight:700;display:flex}.home-total{border-radius:var(--radius-pill);background:var(--gray-100);color:var(--gray-600);font-variant-numeric:tabular-nums;padding:0 8px;font-size:12px;font-weight:650;line-height:1.7}.home-head-actions{align-items:center;gap:6px;display:flex}.home-arrow{border:1px solid var(--line);background:var(--surface);width:30px;height:30px;color:var(--gray-700);cursor:pointer;border-radius:8px;place-items:center;padding:0;transition:background .12s,color .12s,border-color .12s;display:inline-grid}.home-arrow:hover:not(:disabled){background:var(--gray-100);color:var(--ink);border-color:var(--line-strong)}.home-arrow:disabled{opacity:.4;cursor:default}.home-arrow:focus-visible,.home-viewall:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.home-viewall{border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;cursor:pointer;border-radius:8px;padding:4px 12px;font-size:13px;font-weight:600}.home-viewall:hover{background:var(--gray-100);border-color:var(--line-strong)}.home-row{scroll-snap-type:x proximity;scroll-behavior:smooth;scrollbar-width:thin;overscroll-behavior-x:contain;gap:14px;margin:-3px -3px 0;padding:3px 3px 6px;display:flex;overflow-x:auto}.home-row>*{scroll-snap-align:start;flex:none}.home-empty{margin:4px 0 2px;font-size:14px}.home-skeleton{border-radius:var(--radius-md);background:var(--gray-100);width:calc(20% - 11.2px);height:196px;display:block}.home-photos.loading .home-skeleton{width:150px;height:150px}.office-rhsc{--office:var(--folder-blue)}.office-chnc{--office:var(--folder-green)}.home-legend{align-items:center;gap:6px;margin-right:6px;display:inline-flex}.home-legend i{background:var(--office);border-radius:2px;width:14px;height:4px;margin-left:6px;display:inline-block}.home-job{background:var(--surface);border:1px solid var(--line);border-bottom:4px solid var(--office,var(--line-strong));border-radius:var(--radius-md);width:calc(20% - 11.2px);min-width:200px;color:var(--ink);flex-direction:column;text-decoration:none;transition:border-color .12s,box-shadow .12s,transform .12s;display:flex;position:relative;overflow:hidden}.home-job:hover{border-color:var(--line-strong);border-bottom-color:var(--office);box-shadow:var(--shadow-md);transform:translateY(-2px)}.home-job:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.home-job-cover{aspect-ratio:16/9;background:var(--gray-150);display:block;position:relative}.home-job-cover img{object-fit:cover;width:100%;height:100%;display:block}.home-job-empty{height:100%;color:var(--gray-600);flex-direction:column;justify-content:center;align-items:center;gap:4px;font-size:12.5px;display:flex}.home-job-body{grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;min-width:0;padding:10px 12px 11px;display:grid}.home-job-name{white-space:nowrap;text-overflow:ellipsis;grid-column:1/-1;font-size:14.5px;font-weight:650;overflow:hidden}.home-job-address{grid-column:1/-1}.home-job-meta,.home-job-address,.home-job-time{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-variant-numeric:tabular-nums;font-size:12.5px;overflow:hidden}.home-job-time{text-align:right}.home-photo{width:150px;min-width:0;margin:0}.home-photo-open{aspect-ratio:1;border-radius:var(--radius-md);background:var(--gray-150);outline-offset:2px;transition:box-shadow .12s;display:block;position:relative;overflow:hidden}.home-photo-open:after{content:"";background:var(--office);height:3px;position:absolute;bottom:0;left:0;right:0}.home-photo-open img{object-fit:cover;width:100%;height:100%;transition:filter .15s;display:block}.home-photo-open:hover{box-shadow:0 0 0 2px var(--office), var(--shadow-md)}.home-photo-open:hover img{filter:brightness(1.06)}.home-photo-open:focus-visible{outline:2px solid var(--accent)}.home-photo figcaption{flex-direction:column;gap:3px;min-width:0;padding:7px 1px 0;display:flex}.home-photo-job{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;border-radius:4px;font-size:12.5px;font-weight:600;text-decoration:none;overflow:hidden}.home-photo-job:hover{color:var(--accent);text-decoration:underline}.home-photo-job:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.home-photo-by{min-width:0;color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}.home-photo-name{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.home-age{font-variant-numeric:tabular-nums;flex:none}.home-avatar{color:#fff;letter-spacing:.02em;border-radius:5px;flex:none;place-items:center;width:18px;height:18px;font-size:8.5px;font-weight:750;display:grid}.home-avatar.tone-0{background:#1f4e8c}.home-avatar.tone-1{background:#0f766e}.home-avatar.tone-2{background:#6d28d9}.home-avatar.tone-3{background:#b42318}.home-avatar.tone-4{background:#475569}.home-avatar.tone-5{background:#24693a}.home-photos.all{scroll-snap-type:none;flex-wrap:wrap;overflow:visible}.jobs-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow-xs);padding:16px 18px 18px}.jobs-card-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.jobs-card-title{color:var(--ink);align-items:center;gap:10px;margin:0;font-size:18px;font-weight:700;display:flex}.jobs-card-head .muted{margin:4px 0 0}.jobs-card .filters{margin-bottom:14px}.job-list{border-top:1px solid var(--line);flex-direction:column;display:flex}.job-row{border-bottom:1px solid var(--line);color:var(--ink);border-radius:var(--radius-md);align-items:center;gap:14px;padding:10px 8px;text-decoration:none;transition:background .12s;display:flex}.job-row:hover{background:var(--gray-100)}.job-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.job-row-thumb{background:var(--gray-150);width:56px;height:56px;color:var(--gray-600);border-radius:10px;flex:none;place-items:center;display:grid;overflow:hidden}.job-row-thumb img{object-fit:cover;width:100%;height:100%;display:block}.job-row-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.job-row-main strong{white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:650;overflow:hidden}.job-row-address{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.job-row-side{color:var(--muted);font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:14px;font-size:13px;display:flex}.job-row-time{text-align:right;min-width:84px}.job-row-pm{white-space:nowrap;text-overflow:ellipsis;max-width:160px;overflow:hidden}@media (width<=1100px){.job-row-pm{display:none}.home-job{width:calc(25% - 10.5px)}}@media (prefers-reduced-motion:reduce){.home-row{scroll-behavior:auto}.home-job,.home-photo-open img,.home-photo-open{transition:none}.home-job:hover{transform:none}}@media print{body,html{background:#fff}.app>.topbar{box-shadow:none;border:1px solid var(--line);-webkit-backdrop-filter:none;backdrop-filter:none;background:#fff;position:static}.tabbar,.theme-toggle,.signin-theme{display:none!important}}}.wo-custom-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.wo-custom-head h2{margin:0 0 4px}.wo-custom-head p{max-width:70ch;margin:0}.wo-custom-table{width:100%;margin-top:12px}.wo-custom-table .num,.wo-custom-lines .num{text-align:right}.wo-custom-actions{white-space:nowrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.wo-custom-fields{grid-template-columns:1fr 1fr;gap:12px;display:grid}.wo-custom-pricing{border:0;flex-wrap:wrap;align-items:center;gap:20px;margin:14px 0 6px;padding:0;display:flex}.wo-custom-pricing legend{margin-bottom:6px}.wo-custom-pricing label{align-items:center;gap:6px;display:inline-flex}.wo-custom-lines{width:100%;margin-top:8px}.wo-custom-lines td{padding:4px 6px 4px 0}.wo-custom-lines input{width:100%}.wo-custom-qty{width:90px}.wo-custom-unit{width:100px}.wo-custom-amount{width:130px}.wo-custom-total{margin-top:12px}.wo-custom-total .field{max-width:260px}.wo-custom-dialog .spacer{flex:1}@media print{.wo-custom{display:none}}@media (width<=700px){.wo-custom-fields{grid-template-columns:1fr}.wo-custom-actions{flex-wrap:wrap;justify-content:flex-start}}.wo-custom-dialog .danger-text{color:#b91c1c}@media (width>=768px){:root[data-theme=dark] .wo-custom-dialog .danger-text{color:#f87171}}.dash-import,.dash-attention-line{display:none}.pick.on{border-color:var(--gold-soft);box-shadow:0 0 0 2px #b89a5d59}.dash-import-pick{gap:10px;margin-top:12px;display:grid}.dash-import-file{overflow-wrap:anywhere;margin:0 0 10px}.dash-import-new{margin-top:12px}@media (width>=768px){.dash-import{margin-bottom:16px;display:block}.dash-drop{border:2px dashed var(--line-strong);background:var(--surface);cursor:pointer;border-radius:14px;align-items:center;gap:18px;padding:26px 28px;transition:border-color .12s,background .12s;display:flex}.dash-drop:hover,.dash-drop.over,.dash-drop:focus-visible{border-color:var(--gold-soft);outline:none}.dash-drop.over{background:#b89a5d14}.dash-drop-icon{background:var(--ink);color:#fff;border-radius:12px;flex:none;place-items:center;width:52px;height:52px;font-size:26px;font-weight:700;display:grid}:root[data-theme=dark] .dash-drop-icon{background:var(--gold-soft);color:#1b1b1b}.dash-drop-text{gap:3px;display:grid}.dash-drop-text strong{letter-spacing:-.01em;font-size:19px}.dash-attention{display:none}.dash-attention-line{flex-wrap:wrap;align-items:center;gap:6px 8px;margin:0 0 12px;font-size:13px;display:flex}.dash-pill{border:1px solid var(--line);background:var(--surface);cursor:pointer;color:inherit;border-radius:999px;padding:3px 10px;font-size:12.5px}.dash-pill:hover{border-color:var(--line-strong)}.dash-pill.tone-red b{color:var(--red)}.dash-pill.tone-gold b{color:var(--warn)}.dash-pill.tone-blue b{color:var(--blue)}.dash-pill.on{background:var(--ink);border-color:var(--ink);color:#fff}.dash-pill.on b{color:#fff}:root[data-theme=dark] .dash-pill.on{background:var(--chip-ink,var(--ink))}.dash-keys{display:none}.dash-table th{color:var(--muted);background:0 0;font-weight:600}.dash-table tbody tr td{border-top-color:var(--line)}}.sow-photos-block{border-top:1px solid #ddd;align-items:center;gap:12px;margin:10px 0;padding:8px 0;display:flex}.sow-photos-block>div{flex-direction:column;gap:2px;min-width:0;display:flex}.sow-photos-url{word-break:break-all;font-family:ui-monospace,Menlo,monospace;font-size:.85em}.sow-qr{image-rendering:pixelated;flex:none}@media print{.wo-print-root .sow-photos-block{break-inside:avoid}.wo-print-root .sow-photos-url{color:#111;font-size:9pt;text-decoration:none}}.report-options{flex-wrap:wrap;align-items:flex-end;gap:24px;margin-bottom:8px;display:flex}.report-options .field-label{margin-bottom:6px}.report-options .check{margin:0 0 6px}.report-pick-actions{gap:14px;margin-left:auto;padding-bottom:8px;display:flex}.report-grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:10px;max-height:52vh;padding:2px;display:grid;overflow:auto}.report-thumb{background:var(--gray-100);cursor:pointer;text-align:left;opacity:.5;border:2px solid #0000;border-radius:10px;padding:0;transition:opacity .12s,border-color .12s;position:relative;overflow:hidden}.report-thumb.on{opacity:1;border-color:var(--accent,#1f4e8c)}.report-thumb img{aspect-ratio:4/3;object-fit:cover;width:100%;display:block}.report-thumb small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;padding:4px 6px;font-size:11px;display:block;overflow:hidden}.report-check{border:1px solid var(--line,#ddd);width:22px;height:22px;color:var(--accent,#1f4e8c);background:#ffffffe6;border-radius:50%;place-items:center;font-size:13px;font-weight:800;display:grid;position:absolute;top:6px;right:6px}.report-dialog .modal-foot{justify-content:space-between;align-items:center;gap:12px;display:flex}.success-note{color:#2f6b3a;background:#eef7ef;border-radius:10px;margin-top:12px;padding:10px 12px;font-weight:700}.tile-video{color:#fff;pointer-events:none;background:#000b;border-radius:999px;align-items:center;gap:5px;padding:4px 9px;font-size:12px;font-weight:800;display:inline-flex;position:absolute;bottom:8px;left:8px}.tile-video span{font-size:10px}.tile-open{position:relative}.viewer-video{object-fit:contain;background:#000;width:100%;max-width:100%;height:100%;max-height:100%;display:block}.wo-view-toggle{border:1px solid var(--line-strong);background:var(--surface);border-radius:9px;display:inline-flex;overflow:hidden}.wo-view-toggle button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:4px 12px;font-size:12.5px;font-weight:700}.wo-view-toggle button+button{border-left:1px solid var(--line)}.wo-view-toggle button.on{background:var(--gold);color:#fff}.wo-focus-layout{-webkit-user-select:none;user-select:none;grid-template-columns:minmax(420px,50%) minmax(0,1fr);align-items:start;gap:12px;display:grid}.wo-focus-main .wo-col{border-color:var(--gold-soft);box-shadow:0 0 0 2px var(--accent-ring)}.wo-focus-main .wo-col-body{min-height:360px;max-height:calc(100vh - 300px)}.wo-focus-main .wo-card{font-size:13px}.wo-focus-rail{grid-template-columns:repeat(auto-fill,minmax(185px,1fr));align-content:start;gap:6px;max-height:calc(100vh - 84px);padding-right:2px;display:grid;position:sticky;top:72px;overflow-y:auto}.wo-focus-rail-head{grid-column:1/-1;padding:2px 4px}.wo-tile{all:unset;box-sizing:border-box;cursor:pointer;background:var(--gray-25);border:1px solid var(--line);border-left:5px solid var(--trade,var(--muted));border-radius:9px;flex-direction:column;gap:0;min-width:0;padding:5px 8px 5px 10px;transition:border-color .12s,box-shadow .12s,background .12s;display:flex}.wo-tile:hover,.wo-tile:focus-visible{background:var(--surface);box-shadow:0 1px 4px #00000014}.wo-tile.in-house{background:var(--accent-bg);border-left-color:var(--gold)}.wo-tile.locked{background:var(--gray-50)}.wo-tile.drop-ok{border-color:var(--gold);background:var(--gold-bg);box-shadow:0 0 0 3px #1f4e8c47}.wo-tile.drop-locked{border-color:var(--red);background:var(--red-bg)}.wo-tile-top{letter-spacing:.03em;align-items:center;gap:6px;font-size:13.5px;display:flex}.wo-tile-top .badge{letter-spacing:0;font-size:9.5px}.wo-tile-count{text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:999px;min-width:20px;margin-left:auto;padding:1px 6px;font-size:11px;font-weight:800}.wo-tile-name{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;font-weight:600;overflow:hidden}.wo-tile-money{white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;font-weight:700;overflow:hidden}.wo-tile-budget{color:var(--muted);font-weight:600}.wo-tile.drop-ok .wo-tile-money,.wo-tile.drop-locked .wo-tile-money{font-weight:800}@media (width<=720px){.wo-view-toggle{display:none}.wo-focus-layout{grid-template-columns:1fr}.wo-focus-rail{max-height:none;position:static}}
/*$vite$:1*/