@charset "UTF-8";
:root{font-family:"Microsoft YaHei","Segoe UI",sans-serif;font-size:13px;color:#222b31;background:#fff;font-synthesis:none;--line:#dfe3e7;--accent:#246b52;--data-font-size:13px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:1px solid #d6dce1;border-radius:3px;background:#fff;padding:5px 12px;white-space:nowrap;line-height:1.5}button:hover{background:#f0f4f5}button:disabled{opacity:.5;cursor:wait}button:focus-visible{outline:2px solid #549581;outline-offset:2px}input,select,textarea{border:1px solid #d6dce1;border-radius:3px;background:#fff;padding:5px 7px;line-height:1.5;min-width:0;font-size:var(--data-font-size)}input:focus,select:focus,textarea:focus{outline:1px solid #77a896;outline-offset:0;border-color:#77a896}textarea{resize:vertical;min-height:42px;white-space:pre-wrap;overflow:auto}input::placeholder{color:#9ea8ae}.primary{background:var(--accent);border-color:var(--accent);color:#fff}.primary:hover{background:#205a46}.quiet{border-color:transparent;background:transparent;color:#6e7b84}.danger{color:#a4524b}.icon,.tool-icon{display:inline-grid;place-items:center;padding:4px 7px;background:transparent;line-height:1.2}.icon{font-size:23px;border-color:transparent}.tool-icon{width:31px;height:30px;flex-shrink:0}.tool-icon.primary{background:var(--accent)}.tool-icon.primary:hover{background:#205a46}.icon svg,.tool-icon svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.confirm-entry{color:#25764f;background:#edf7f0;border:1px solid #bad7c5;padding:3px 7px}.confirm-entry:hover{background:#e2f1e6}h1,h2,p{margin:0}h1{font-size:15px;font-weight:700}h2{font-size:16px;font-weight:700}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}#app{display:flex;flex-direction:column;height:100dvh;min-height:0}.functions{flex-shrink:0;display:flex;align-items:center;gap:18px;padding:9px 13px;min-height:49px;background:#fafbfc;border-bottom:1px solid #d7dde2;overflow-x:auto;white-space:nowrap}.functions h1{flex-shrink:0}.counts{display:flex;align-items:center;gap:17px;flex-shrink:0}.count{border:0;padding:1px 0;background:transparent!important;color:#6d7b85;font-size:11px;font-weight:700;position:relative}.count b{font-size:15px;margin-left:6px;color:#35454d;font-variant-numeric:tabular-nums}.count[data-filter=all]{color:#000}.count[data-filter=repair]{color:#477cb9}.count[data-filter=complete]{color:#3b8b60}.count[data-filter=closed]{color:#7a848d}.count b,.count .repair-count,.count .complete-count,.count .closed-count{color:inherit}.count.active:after{content:'';height:2px;position:absolute;bottom:-5px;left:0;right:0;background:currentColor}.toolbar{display:flex;align-items:center;gap:6px;flex-shrink:0}.toolbar input{width:165px;min-width:100px;height:30px}.toolbar button[aria-pressed=true]{background:#e7edf1;border-color:#849aa9}#meeting-toggle.active{color:#a45636;border-color:#d7b59f;background:#fff7ef}.table-region{overflow:auto;flex:1;min-height:0;position:relative}table{table-layout:fixed;border-collapse:separate;border-spacing:0;min-width:100%;width:100%}th{position:sticky;top:0;z-index:2;background:#f1f4f6;font-weight:700;text-align:left;color:#4f606d;font-size:12px;padding:7px 10px;border-bottom:1px solid #c9d3da;border-right:1px solid #dde3e8;white-space:nowrap}td{vertical-align:top;padding:5px 10px;border-right:1px solid #e5e9ed;border-bottom:1px solid #dfe5e9;line-height:1.5;font-size:var(--data-font-size);overflow-wrap:anywhere;white-space:pre-wrap}.project-row{position:relative;cursor:pointer}.project-row:nth-child(even){background:#fcfcfd}.project-row:hover{background:#f2f7f4}.project-row:focus-visible{outline:2px solid #789e8c;outline-offset:-2px}.cell-text{white-space:pre-wrap;overflow-wrap:anywhere;min-height:0}.due-overdue{color:#b16f42}.status{display:inline-block;border-radius:3px;font-size:var(--data-font-size);padding:1px 5px;line-height:1.5;white-space:nowrap;font-weight:400}.s0{background:#fff0d8;color:#a26a22}.s1{background:#e8f0ff;color:#4c77b4}.s2{background:#e6f3e9;color:#3e8059}.s3{background:#ebeff2;color:#737e88}.project-row.is-deleted{color:#7c878c}#empty{padding:50px 20px;text-align:center;color:#929ca3;font-size:13px;line-height:2}.column-resize{position:absolute;right:-3px;top:0;bottom:0;width:7px;cursor:col-resize;z-index:4;touch-action:none;user-select:none}.column-resize:hover,.column-resize:focus-visible{background:transparent;outline:none}.row-resize{position:absolute;left:0;right:0;bottom:-3px;height:7px;cursor:row-resize;z-index:1;touch-action:none;user-select:none}.row-resize:hover,.row-resize:focus-visible{background:transparent;outline:none}.resizing-column,.resizing-column *{cursor:col-resize!important;user-select:none!important}.resizing-row,.resizing-row *{cursor:row-resize!important;user-select:none!important}dialog{color:inherit;background:#fff;border:1px solid #c8d2d9;box-shadow:0 5px 35px #182e4224;border-radius:4px}dialog::backdrop{background:#25313a59}#project-dialog{inset:10px;margin:0;width:calc(100vw - 20px);height:calc(100dvh - 20px);max-width:none;max-height:none;padding:0;overflow:hidden}#project-dialog[open]{display:flex;flex-direction:column}.project-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;border-bottom:1px solid #d8e0e6;background:#f8fafb;flex-shrink:0}.project-title{display:flex;align-items:center;gap:9px;min-width:0;flex-wrap:wrap}.project-title b{font-size:14px;font-weight:700}.code-button{font-weight:700;font-size:var(--data-font-size);border:0;padding:2px 3px;background:transparent;color:#375b71;max-width:260px;overflow-wrap:anywhere;white-space:normal;text-align:left}.code-button:hover{background:#e9f0f3}.code-input{width:135px}.code-warning{font-size:11px;color:#b07430;font-weight:400}.header-actions{display:flex;align-items:center;gap:9px;flex-shrink:0}.header-actions>button:not(.icon){font-size:12px}.entry{border-bottom:1px solid #d8e0e5;margin-bottom:9px}.entry-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:31px;padding:2px 0}.entry-toggle{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:700;border:0;background:transparent;padding:3px 2px;color:#344f60;text-align:left}.fold-arrow{font-size:16px;line-height:1;width:13px;text-align:center;color:#74918e}.entry-actions{display:flex;align-items:center;gap:8px}.entry-actions .quiet{font-size:11px;padding:3px 6px}.entry-actions .icon{padding:3px 5px}.entry-actions .confirm-entry{padding:3px 7px}#entries{overflow:auto;flex:1;min-height:0;padding:6px 12px 45px;scrollbar-gutter:stable}.record-grid{display:grid;grid-template-columns:var(--record-columns,110px 1fr 1fr 100px 110px 1fr 100px);align-items:stretch;min-width:100%;width:max-content}.record-cell{position:relative;padding:5px 8px 8px;border-right:1px solid #e2e8ec;min-width:0}.record-cell:last-child{border-right:0}.record-cell label,.record-label{display:block;font-size:11px;color:#657a88;margin-bottom:5px;font-weight:700;white-space:nowrap}.record-value{font-size:var(--data-font-size);line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.record-grid input,.record-grid textarea,.record-grid select{display:block;width:100%;font-size:var(--data-font-size);height:var(--editor-control-height,32px)}.record-grid textarea{min-height:var(--editor-control-height,32px)}.record-grid input[type=date]{padding-left:3px;padding-right:2px;min-width:0}.record-grid select{padding-left:4px;padding-right:1px}.editing{background:#fcfdfb;border:1px solid #d7e2d6;border-radius:3px;padding:0 5px;margin-bottom:9px}.entry-error{font-size:12px;color:#aa5348;line-height:1.6;white-space:pre-wrap;padding:0 5px}.entry-error:not(:empty){padding-bottom:8px}.small-dialog{width:460px;max-width:calc(100vw - 36px);max-height:calc(100dvh - 36px);padding:22px;overflow:auto}.small-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.small-dialog>p{font-size:12px;line-height:1.8;color:#73838d;margin:13px 0;white-space:pre-wrap}.small-dialog label{display:block;font-size:12px;font-weight:700;color:#657680;margin:16px 0}.small-dialog input,.small-dialog select{display:block;width:100%;margin-top:8px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.hint{font-size:11px;color:#8a969d;line-height:1.8}.error{font-size:12px;color:#ad5549;margin:12px 0;line-height:1.8}#login{height:100dvh;display:grid;place-items:center;background:#f6f7f8;padding:20px}#login-form{background:#fff;border:1px solid #dce2e7;border-radius:4px;padding:28px;width:330px;max-width:100%}#login-form h1{margin-bottom:25px}#login-form label{display:block;font-size:12px;font-weight:700;color:#687a85}#login-form input{display:block;width:100%;margin-top:9px}#login-form button{width:100%;margin-top:8px}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);padding:10px 17px;border-radius:4px;background:#354a42;color:#fff;font-size:12px;line-height:1.8;max-width:calc(100vw - 95px);z-index:1000;box-shadow:0 3px 15px #263e3629}.font-control{position:fixed;right:17px;bottom:17px;z-index:1001;display:flex;flex-direction:column;gap:4px;align-items:center}.font-control button{width:31px;height:31px;padding:0;display:grid;place-items:center;border:1px solid #ced8dd;background:#fff;box-shadow:0 2px 7px #193b4b16;color:#4b626e;font-size:13px;border-radius:5px}.font-control button:hover{background:#eef4f1}.font-control .font-actions{display:flex;flex-direction:column;gap:4px;opacity:0;visibility:hidden;transform:translateY(5px);transition:.12s}.font-control:hover .font-actions,.font-control:focus-within .font-actions{opacity:1;visibility:visible;transform:none}
@media(max-width:1050px){.functions{gap:12px}.counts{gap:12px}.toolbar input{width:135px}.functions h1{font-size:14px}.count{font-size:10px}.count b{font-size:14px}.toolbar{gap:5px}}@media(max-width:720px){.functions{padding:8px 10px;gap:13px;min-height:46px}.table-region{overscroll-behavior:contain}#projects-table{width:100%!important;min-width:0}colgroup,thead{display:none}tbody{display:block}.project-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:1px solid #d6dfe4;padding:3px 0 6px;height:auto!important}.project-row td{display:block;border:0;padding:5px 10px}.project-row td:before{content:attr(data-label);display:block;font-size:10px;font-weight:700;color:#788d9b;margin-bottom:3px}.project-row td:nth-child(2),.project-row td:nth-child(3),.project-row td:nth-child(6){grid-column:span 2;order:2}.project-row td:nth-child(1),.project-row td:nth-child(4),.project-row td:nth-child(5),.project-row td:nth-child(7){order:1}.row-resize,.column-resize{display:none}.project-header{padding:7px 9px;align-items:flex-start;gap:5px}.project-title{gap:5px}.project-title b{font-size:12px}.code-button{max-width:130px}.code-input{width:115px}.header-actions{gap:5px;max-width:145px;flex-wrap:wrap;justify-content:flex-end}.header-actions>button:not(.icon){font-size:10px;padding:4px 6px}.code-warning{font-size:10px;width:100%}#entries{padding:5px 7px 45px}.entry-bar{gap:5px}.record-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;width:100%;min-width:0}.record-grid .record-cell:nth-child(2),.record-grid .record-cell:nth-child(3),.record-grid .record-cell:nth-child(6){grid-column:span 2;order:2}.record-grid .record-cell:nth-child(1),.record-grid .record-cell:nth-child(4),.record-grid .record-cell:nth-child(5),.record-grid .record-cell:nth-child(7){order:1}.record-cell{border-right:0;padding:5px}.record-label,.record-cell label{font-size:10px}.small-dialog{padding:18px}.font-control{right:15px;bottom:15px}}
th:last-child .column-resize,.record-cell:last-child .column-resize{right:0}
.font-control{width:31px;height:31px}.font-control .font-actions{position:absolute;left:0;bottom:31px;padding-bottom:4px}
.app-title{display:flex;align-items:center;gap:8px;flex-shrink:0}.app-logo{width:35px;height:25px;object-fit:contain}.connection-state{margin-left:auto;display:flex;align-items:center;gap:5px;font-size:10px;color:#80908d;white-space:nowrap;flex-shrink:0;padding:4px 0 4px 8px;position:sticky;right:0;background:#fafbfc}.connection-state i{width:5px;height:5px;border-radius:50%;background:#9aa5aa}.connection-state.ok i{background:#44936b}.connection-state.failed{color:#ba4c44}.connection-state.failed i{background:#ba4c44}.connection-state.busy i{background:#c08e3e}.connection-state time{font-size:10px;font-variant-numeric:tabular-nums}table{min-width:0}th{text-align:center}.column-resize{cursor:col-resize}.row-resize{cursor:row-resize}.column-resize:hover,.row-resize:hover{background:transparent}.project-row.favorite-row{background:#fff8d8}.project-row.favorite-row:hover{background:#fff1b9}.project-header{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:10px;position:relative}.project-title{justify-self:start;gap:4px;flex-wrap:nowrap;min-width:0}#project-heading{text-align:center;font-weight:700;font-size:14px;white-space:nowrap}.header-actions{justify-self:end;gap:7px}.code-input{width:72px}.code-button{max-width:115px;padding-left:0}#project-prefix{font-size:var(--data-font-size);font-weight:700;color:#375b71}.code-warning{position:absolute;top:100%;left:12px;z-index:5;background:#fff9e9}.code-warning:empty{display:none}.star-button.is-favorite svg{fill:#e6b941;stroke:#ad8425}.header-actions #add-feedback{background:#246b52;color:#fff;border-color:#246b52}.entry{width:max(100%,var(--record-total,100%));min-width:0;padding-left:0;padding-right:0}.entry-bar{justify-content:flex-start;gap:6px;padding-left:4px}.entry-bar>.icon{padding:3px 5px}.entry-bar>.status{margin-left:3px}.entry-toggle{padding:3px 0;gap:4px}.fold-arrow{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;flex:0 0 13px;transform-origin:50% 50%;transition:transform .1s}.fold-arrow svg{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.entry-toggle[aria-expanded=true] .fold-arrow{transform:rotate(90deg)}.record-grid{width:var(--record-total);min-width:0}.record-cell{padding:5px 6px 8px}.record-cell label{display:flex;align-items:center;gap:3px}.record-grid input[type=date]{padding-left:0;padding-right:0;min-width:0}.record-grid input[type=date]::-webkit-calendar-picker-indicator{display:none}.date-picker{display:inline-grid;place-items:center;width:15px;height:15px;padding:0;border:0;background:transparent;flex-shrink:0}.date-picker svg{width:12px;height:12px;fill:none;stroke:#80919c;stroke-width:1.6;stroke-linecap:round}.editing{background:#fff7d5;border-left:0;border-right:0;border-color:#e7d79d}.text-entry:has(.entry-content:hover){background:#fff9dc}.entry-toggle:hover{background:transparent}.danger-primary{color:#fff;background:#bd4b43;border-color:#bd4b43}.danger-primary:hover{background:#a53c35}#transfer-dialog{inset:0;margin:0;padding:0;width:100vw;height:100dvh;max-width:none;max-height:none;background:transparent;border:0;box-shadow:none}#transfer-dialog[open]{display:grid;place-items:center}#transfer-dialog::backdrop{background:#26333c59}.transfer-box{display:flex;flex-direction:column;align-items:center;gap:13px;padding:25px 30px;background:white;border:1px solid #d5e0e4;border-radius:5px;box-shadow:0 8px 40px #1c39412b;max-width:calc(100vw - 40px);min-width:260px}.transfer-box b{font-size:13px;font-weight:600}.transfer-box p{font-size:11px;color:#8b989e}.transfer-spinner{width:22px;height:22px;border:2px solid #dbe9e3;border-top-color:#3c816b;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#error-dialog h2{color:#b54f46}#transfer-error{overflow-wrap:anywhere;line-height:1.9}.network-busy{cursor:wait}.network-busy .font-control{pointer-events:none}.selection-tools{position:fixed;display:flex;align-items:center;gap:5px;width:68px;z-index:30;user-select:none}.paint-group{display:block}.paint-icon{width:31px;height:31px;padding:5px;display:grid;place-items:center;border-radius:50%;background:#fff;border:1px solid #ccd7dc;box-shadow:0 2px 9px #243e4d29}.paint-icon svg{width:19px;height:19px;fill:none;stroke:#4c6571;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.paint-letter{font:700 16px Georgia,serif;border-bottom:3px solid #cf3a31;line-height:17px;min-width:16px;text-align:center}.paint-palette{position:absolute;left:0;top:29px;display:flex;gap:5px;padding:9px 7px 7px;border:1px solid #d6e0e3;border-radius:4px;background:#fff;box-shadow:0 3px 10px #203e4d1c;visibility:hidden;opacity:0}.paint-group:hover .paint-palette,.paint-group:focus-within .paint-palette,.paint-group.open .paint-palette{visibility:visible;opacity:1}.swatch{width:20px;height:20px;padding:0;border:1px solid #bfcbd0;border-radius:50%;flex-shrink:0}.swatch:hover{outline:2px solid #789c8a;outline-offset:1px}.swatch-red{background:#d92d20!important}.swatch-orange{background:#dc7a00!important}.swatch-yellow{background:#e6bb22!important}.swatch-green{background:#27834a!important}.swatch-blue{background:#246bce!important}.swatch-clear{position:relative;background:repeating-conic-gradient(#f1f3f4 0 25%,#fff 0 50%) 50%/7px 7px!important}.swatch-clear:after{content:'';position:absolute;left:2px;right:2px;top:8px;border-top:1px solid #bd4b43;transform:rotate(-45deg)}.fg-red{color:#d92d20}.fg-orange{color:#dc7a00}.fg-yellow{color:#b48c00}.fg-green{color:#27834a}.fg-blue{color:#246bce}.bg-red{background:#ffd7d2}.bg-orange{background:#ffe3c1}.bg-yellow{background:#fff0a3}.bg-green{background:#d5efdc}.bg-blue{background:#d4e5ff}
@media(max-width:720px){.app-logo{width:30px;height:22px}.connection-state{padding-left:8px}.project-header{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);row-gap:6px}.project-title{grid-column:1;grid-row:1;overflow:visible;gap:1px}#project-heading{grid-column:2;grid-row:1;font-size:12px}.header-actions{grid-column:1/-1;grid-row:2;max-width:none;justify-self:end;flex-wrap:nowrap}.project-title .icon{padding:3px;width:23px}.code-button{max-width:64px}.code-input{width:59px}.entry,.editing{width:100%}.record-grid{width:100%}.record-cell{padding:5px}.column-resize,.row-resize{display:none}}
.field-heading{display:flex;align-items:center;gap:3px;margin-bottom:5px}.field-heading label{margin:0}.record-grid input[type=hidden]{display:none!important}

.record-grid .native-date-picker{position:absolute;left:6px;top:100%;width:1px;height:1px;min-height:0;padding:0;border:0;opacity:0;pointer-events:none}.record-grid select:has(option[value=""]:checked){color:#7a848d}.record-grid textarea{overflow-y:hidden}

.segmented-date{display:grid;grid-template-columns:minmax(0,4fr) .6ch minmax(0,2fr) .6ch minmax(0,2fr);align-items:center;height:var(--editor-control-height,32px);width:100%;border:1px solid #d6dce1;border-radius:3px;background:#fff;padding:0 1px;font-size:var(--data-font-size);line-height:1.5;font-variant-numeric:tabular-nums}.segmented-date:focus-within{outline:1px solid #77a896;border-color:#77a896}.record-grid .date-segment{height:100%;width:100%;min-width:0;padding:0;border:0;border-radius:0;background:transparent;text-align:center;outline:none;box-shadow:none}.date-segment::placeholder{color:#7d8891;opacity:1}.date-separator{pointer-events:none;user-select:none;text-align:center;color:#657a88}.fixed-status{display:flex;align-items:center;min-height:var(--editor-control-height,32px)}.field-clear svg{stroke:#80919c}.field-clear:hover svg{stroke:#405e70}
