:root{--bg:#f6f7f9;--panel:#fff;--text:#17191f;--muted:#7c828d;--line:#e5e7ec;--purple:#6254f4;--green:#149461;--amber:#c78312;--side:#14151a}*{box-sizing:border-box}body{margin:0;font:14px/1.5 Inter,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--text);background:var(--bg)}a{text-decoration:none;color:inherit}button,input,select,textarea{font:inherit}.shell{display:grid;grid-template-columns:230px 1fr;min-height:100vh}.sidebar{background:var(--side);color:#fff;padding:20px 14px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;padding:8px 10px 22px}.brand>span,.authbrand>span{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#776cff,#573de7);font-weight:800}.brand b,.brand small{display:block}.brand small{color:#8f94a0;font-size:10px}.sidebar nav{display:flex;flex-direction:column;gap:4px}.sidebar nav a{padding:10px 12px;color:#abb0ba;border-radius:9px}.sidebar nav a:hover,.sidebar nav a.active{background:#272930;color:#fff}.sidefoot{margin-top:auto;border-top:1px solid #2a2c33;padding:14px 10px 0;display:grid;gap:6px}.sidefoot b,.sidefoot small{display:block}.sidefoot small{color:#858b96;font-size:10px}.link{border:0;background:none;color:#aeb3bd;padding:0;cursor:pointer}.mobile{display:none}.content{padding:34px 30px 60px;max-width:1500px;margin:auto}.head{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:18px}.head h1{font-size:30px;line-height:1.1;margin:5px 0 7px}.muted{color:var(--muted);margin:0}.eyebrow{font-size:11px;letter-spacing:.1em;font-weight:800;color:var(--purple)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:15px;padding:20px;margin-bottom:18px;box-shadow:0 4px 18px rgba(20,24,31,.025)}.panel.nopad{padding:0;overflow:hidden}.panel h2{margin:0;font-size:16px}.panelhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.panelhead span{color:var(--muted);font-size:12px}.button,.mini{border:1px solid transparent;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.button{padding:9px 14px;font-weight:700}.button.primary{background:var(--purple);color:#fff}.button.secondary{background:#fff;border-color:#dfe2e8}.button.full{width:100%}.mini{background:#fff;border-color:#dfe2e8;padding:5px 8px;font-size:12px}.mini.danger{color:#a13d3d;border-color:#edcdcd}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:18px}.stats>div{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px}.stats span{display:block;color:var(--muted);font-size:12px}.stats strong{font-size:30px}.stats .green strong{color:var(--green)}.stats .amber strong{color:var(--amber)}.tablewrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:680px}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid #eceef2;vertical-align:middle}th{font-size:11px;color:#737986;background:#fafbfc}tbody tr:last-child td{border-bottom:0}td small{display:block;color:#9298a3;margin-top:2px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.actions{display:flex;justify-content:flex-end;gap:5px;flex-wrap:wrap}.actions form{margin:0}.badge{display:inline-flex;padding:3px 7px;border-radius:999px;background:#f0f1f4;font-size:10px}.badge.sent{background:#eaf8f1;color:#14764d}.badge.failed{background:#fff0f0;color:#a43d3d}.badge.pending{background:#fff6e2;color:#90600f}.empty{text-align:center;color:#8a909b;padding:22px}.empty.big{padding:48px}.progress{height:6px;background:#eef0f3;border-radius:99px;overflow:hidden;min-width:90px}.progress span{display:block;height:100%;background:var(--green)}.activity{display:grid;grid-template-columns:170px 1fr auto;gap:12px;padding:9px 0;border-bottom:1px solid #edf0f2}.activity span{color:#777e89}.activity time{color:#a0a5ae;font-size:11px}.form{display:flex;flex-direction:column;gap:15px}.formpanel{max-width:900px}.form label{font-size:12px;font-weight:700}.form input,.form select,.form textarea,.toolbar select,.rename input{width:100%;margin-top:6px;padding:9px 10px;border:1px solid #dfe2e8;border-radius:9px;background:#fff;outline:none}.form input:focus,.form select:focus,.form textarea:focus{border-color:#9c93fa;box-shadow:0 0 0 3px rgba(98,84,244,.08)}.form textarea{resize:vertical}.form .check{display:flex;gap:10px;border:1px solid #e5e7ec;border-radius:11px;padding:12px;background:#fbfbfc}.check input{width:auto;margin:3px 0 0}.check span,.check b,.check small{display:block}.check small{font-weight:400;color:var(--muted);margin-top:2px}.formactions{display:flex;gap:8px}.hint{font-size:11px;color:#969ca7;font-weight:400}.toolbar{display:flex;gap:8px;margin-bottom:12px}.toolbar select{width:auto;margin:0}.rename{display:flex;gap:6px}.rename input{margin:0;min-width:180px}.permissions{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.grid{display:grid;grid-template-columns:repeat(3,1fr);align-items:end}.grid .permissions{grid-column:1/-1}.grid button{width:max-content}.stack{display:grid;gap:12px}.statusbar,.statusline{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:13px;padding:13px 15px;margin-bottom:18px}.statusbar .error{margin-left:auto;max-width:50%}.dot{width:8px;height:8px;border-radius:50%;background:#aaa}.dot.ok{background:#18a269;box-shadow:0 0 0 4px rgba(24,162,105,.1)}.dot.warn{background:#e0a02a}.error{color:#a33d3d;font-size:11px}.callout{margin-top:15px;border:1px solid #dedaff;background:#f7f5ff;color:#554ba2;border-radius:11px;padding:12px;display:flex;gap:12px}.inlineform{margin-top:10px}.pre{white-space:pre-line;min-width:260px}.flash{padding:11px 14px;border-radius:10px;margin-bottom:13px;border:1px solid}.flash.success{background:#effaf5;border-color:#c9eadc;color:#16734e}.flash.error{background:#fff2f2;border-color:#efcaca;color:#a33c3c}.flash.warning{background:#fff8e8;border-color:#f0dfb0;color:#86590e}.auth{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 30% 20%,#eeeaff,transparent 30%),#f6f7f9}.authbox{width:min(430px,calc(100vw - 30px))}.authbrand{display:flex;align-items:center;justify-content:center;gap:9px;margin-bottom:14px}.authcard{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:0 16px 50px rgba(28,31,40,.08)}.authcard h1{margin:5px 0 8px}.authcard .form{margin-top:18px}
@media(max-width:900px){.stats{grid-template-columns:1fr 1fr}.grid{grid-template-columns:1fr}.grid .permissions{grid-column:auto}.shell{display:block}.sidebar{position:fixed;z-index:30;width:230px;left:-240px;transition:.2s}.menu-open .sidebar{left:0}.mobile{display:flex;justify-content:space-between;padding:12px 15px;background:#fff;border-bottom:1px solid var(--line)}.content{padding:22px 15px}.permissions{grid-template-columns:1fr}.statusbar{align-items:flex-start;flex-direction:column}.statusbar .error{max-width:none;margin:0}.head{align-items:flex-start}}@media(max-width:520px){.stats{grid-template-columns:1fr}.head{flex-direction:column}.activity{grid-template-columns:1fr}.toolbar{flex-wrap:wrap}.toolbar select{flex:1}}

/* v3.1 member-centered task board */
.head-actions{display:flex;gap:8px;align-items:center}.head-actions form{margin:0}.member-task-board{display:grid;gap:16px}.member-task-section{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 4px 18px rgba(20,24,31,.025)}.member-task-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;background:#fbfbfc;border-bottom:1px solid #eceef2}.member-task-header form{margin:0}.member-task-identity{display:flex;gap:12px;align-items:center;min-width:0}.member-avatar{width:42px;height:42px;border-radius:50%;object-fit:cover;background:#eceef4}.member-task-identity h2{font-size:16px;margin:0 0 2px}.member-task-identity p{font-size:11px;color:var(--muted);margin:0}.member-task-list{min-height:58px}.member-task-item{display:grid;grid-template-columns:26px 34px minmax(0,1fr) 38px auto;align-items:center;gap:8px;padding:13px 16px;border-bottom:1px solid #eef0f3;background:#fff;transition:background .12s,opacity .12s,transform .12s}.member-task-item:last-child{border-bottom:0}.member-task-item[draggable=true]{cursor:default}.member-task-item.dragging{opacity:.45;background:#f3f1ff;transform:scale(.995)}.member-task-list:has(.dragging){background:#faf9ff}.drag-handle{border:0;background:transparent;color:#a0a4ae;font-weight:900;letter-spacing:-4px;cursor:grab;font-size:18px;padding:6px 2px}.drag-handle:active{cursor:grabbing}.task-order-number{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:#f2f3f6;color:#5f6470;font-size:12px;font-weight:800}.task-main{min-width:0}.task-main b{display:block;font-size:14px}.task-main p{margin:3px 0 0;color:#838995;font-size:11px;white-space:pre-line;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.today-check{font-size:16px;text-align:center}.task-item-actions{display:flex;gap:5px;justify-content:flex-end;flex-wrap:wrap}.task-item-actions form{margin:0}.member-empty{padding:24px;text-align:center;color:#9a9faa;font-size:12px}.push-button{white-space:nowrap}.savebar{position:sticky;top:10px;z-index:15;margin:0 0 14px;background:#17191f;color:#fff;border-radius:13px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:15px;box-shadow:0 12px 32px rgba(20,24,31,.18)}.savebar[hidden]{display:none}.savebar b,.savebar small{display:block}.savebar small{color:#aaaeb7;font-size:10px;margin-top:2px}.savebar-actions{display:flex;gap:7px}.savebar .button.secondary{background:#2a2d34;border-color:#3a3e47;color:#fff}
@media(max-width:760px){.member-task-item{grid-template-columns:22px 30px minmax(0,1fr) 28px}.task-item-actions{grid-column:2/-1;justify-content:flex-start;padding-top:4px}.member-task-header{align-items:flex-start}.savebar{bottom:10px;top:auto}.head-actions{width:100%;flex-wrap:wrap}}

/* v3.2 task card workspace */
.task-head{align-items:flex-end}.member-task-board{display:grid;gap:18px}.member-task-section{background:transparent;border:0;border-radius:0;overflow:visible;box-shadow:none}.member-task-header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 2px 10px;background:transparent;border-bottom:0}.member-task-identity{display:flex;gap:10px;align-items:center;min-width:0}.member-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;background:#eceef4}.member-task-identity h2{font-size:15px;margin:0 0 1px}.member-task-identity p{font-size:11px;color:var(--muted);margin:0}.member-head-actions{display:flex;align-items:center;gap:6px}.member-head-actions form{margin:0}.task-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:start}.task-card{position:relative;display:flex;flex-direction:column;min-width:0;aspect-ratio:5/6.4;background:#fff;border:1px solid #e5e7ed;border-radius:15px;padding:13px;box-shadow:0 4px 16px rgba(22,26,33,.035);transition:border-color .15s,box-shadow .15s,transform .15s,opacity .15s}.task-card:hover{border-color:#d7d9e2;box-shadow:0 7px 22px rgba(22,26,33,.055)}.task-card.is-new{border-style:dashed;border-color:#bdb7ff;background:#fbfaff}.task-card.dragging{opacity:.38;transform:scale(.985);border-color:#7a6ff6}.task-card[hidden]{display:none!important}.task-card-top{display:flex;align-items:center;gap:7px;min-height:30px}.task-card-handle{border:0;background:transparent;color:#a7abb5;padding:3px 1px;cursor:grab;font-size:17px;font-weight:900;letter-spacing:-4px}.task-card-handle:active{cursor:grabbing}.task-order-number{display:grid;place-items:center;min-width:30px;height:30px;padding:0 8px;border-radius:10px;background:#f2f3f6;color:#585e6a;font-size:12px;font-weight:800;font-variant-numeric:tabular-nums}.task-done-toggle{margin-left:auto;width:30px;height:30px;border:1px solid #e3e5e9;border-radius:9px;background:#fff;color:#c0c4cc;cursor:pointer;font-weight:900}.task-done-toggle.is-done{background:#edf9f3;border-color:#bfe8d3;color:#158255}.task-done-readonly{margin-left:auto}.task-content-editor{display:block;flex:1;width:100%;min-height:0;margin:12px 0 8px;padding:1px 2px;border:0;outline:0;resize:none;background:transparent;color:#1d2027;font:600 15px/1.65 Inter,"PingFang SC","Microsoft YaHei",sans-serif;white-space:pre-wrap}.task-content-editor::placeholder{color:#afb3bc;font-weight:500}.task-content-editor:focus{background:linear-gradient(#fff,#fff) padding-box;border-radius:8px;box-shadow:0 0 0 2px rgba(98,84,244,.12)}.task-content-readonly{flex:1;margin:12px 0 8px;overflow:auto;white-space:pre-wrap}.task-content-readonly b{font-size:15px}.task-content-readonly p{margin:7px 0 0;color:#747a85;white-space:pre-wrap}.task-card-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid #f0f1f4;padding-top:9px;min-height:34px}.task-save-hint{font-size:10px;color:#a0a5af}.task-archive-draft{border:0;background:transparent;color:#bd5c5c;cursor:pointer;padding:4px 0;font-size:11px}.task-archive-draft:hover{text-decoration:underline}.archived-card{aspect-ratio:auto;min-height:190px}.archived-label{margin-left:auto;font-size:10px;color:#8b909a;background:#f1f2f5;padding:4px 7px;border-radius:999px}.add-task-inline{color:#5547df;border-color:#dcd8ff;background:#faf9ff}.is-blocked{opacity:.5;cursor:not-allowed}.draftbar{position:fixed;left:50%;bottom:22px;z-index:25;transform:translateX(-50%);width:min(650px,calc(100vw - 34px));background:#17191f;color:#fff;border:1px solid #2a2e36;border-radius:14px;padding:11px 12px 11px 16px;display:flex;align-items:center;justify-content:space-between;gap:14px;box-shadow:0 18px 45px rgba(16,19,25,.25)}.draftbar[hidden]{display:none}.draftbar-copy b,.draftbar-copy small{display:block}.draftbar-copy small{font-size:10px;color:#a7abb4;margin-top:1px}.draftbar-actions{display:flex;gap:7px}.draftbar .button.secondary{background:#282b32;border-color:#393d46;color:#fff}

/* custom in-page confirmation; no browser-native confirm/alert */
body.modal-open{overflow:hidden}.ui-modal[hidden]{display:none}.ui-modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:18px}.ui-modal-backdrop{position:absolute;inset:0;background:rgba(20,22,28,.34);backdrop-filter:blur(2px)}.ui-modal-card{position:relative;width:min(430px,100%);background:#fff;border:1px solid #e1e3e8;border-radius:16px;padding:20px;box-shadow:0 24px 70px rgba(18,20,27,.22)}.ui-modal-card h3{margin:0 0 7px;font-size:18px}.ui-modal-card p{margin:0;color:#686e79;line-height:1.6}.ui-modal-details{margin-top:13px;padding:10px 12px;background:#f6f7f9;border-radius:10px;color:#4f5560;font-size:12px}.ui-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.ui-modal-confirm.danger{background:#b74b4b;border-color:#b74b4b}.toast-stack{position:fixed;right:20px;bottom:20px;z-index:120;display:grid;gap:8px;pointer-events:none}.ui-toast{min-width:220px;max-width:360px;background:#20232a;color:#fff;border-radius:10px;padding:10px 12px;box-shadow:0 12px 32px rgba(18,20,27,.2);opacity:0;transform:translateY(8px);transition:.18s}.ui-toast.show{opacity:1;transform:none}.ui-toast.success{background:#196e50}.ui-toast.error{background:#9d4141}.ui-toast.warning{background:#825f20}

@media(max-width:1250px){.task-card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.task-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.member-task-header{align-items:flex-start}.member-head-actions{flex-wrap:wrap;justify-content:flex-end}}
@media(max-width:580px){.task-card-grid{grid-template-columns:1fr}.task-card{aspect-ratio:auto;min-height:230px}.member-task-header{display:grid;grid-template-columns:1fr}.member-head-actions{justify-content:flex-start}.draftbar{bottom:10px;align-items:flex-start}.draftbar-copy small{display:none}}

/* v3.2.1 — compact content-driven task rows; sequence number is the drag handle */
.member-task-board{display:grid;gap:14px}
.member-task-section{background:#fff;border:1px solid #e5e7ed;border-radius:16px;overflow:hidden;box-shadow:0 3px 14px rgba(22,26,33,.028)}
.member-task-header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;background:#fbfbfc;border-bottom:1px solid #eceef2}
.member-task-identity{display:flex;gap:10px;align-items:center;min-width:0}
.member-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;background:#eceef4}
.member-task-identity h2{font-size:15px;margin:0 0 1px}.member-task-identity p{font-size:11px;color:var(--muted);margin:0}
.member-head-actions{display:flex;align-items:center;gap:7px}.member-head-actions form{margin:0}
.member-save-button{min-width:58px}.member-save-button:disabled{opacity:.45;cursor:default}.member-save-button.has-changes{background:#6356ef;border-color:#6356ef;color:#fff}
.task-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;padding:12px 14px 14px;align-items:start}
.task-card{position:relative;display:grid;grid-template-columns:34px minmax(0,1fr) 30px auto;align-items:start;gap:7px;min-width:0;min-height:48px;height:auto;aspect-ratio:auto;padding:7px 8px;background:#fff;border:1px solid #e5e7ed;border-radius:11px;box-shadow:0 2px 8px rgba(22,26,33,.025);transition:border-color .12s,box-shadow .12s,opacity .12s,transform .12s}
.task-card:hover{border-color:#d6d9e1;box-shadow:0 4px 12px rgba(22,26,33,.04)}
.task-card.is-new{border-style:dashed;border-color:#bdb7ff;background:#fcfbff}
.task-card.dragging{opacity:.36;transform:scale(.985);border-color:#766bf1;z-index:4;box-shadow:0 8px 24px rgba(82,70,220,.18)}
.task-card[hidden]{display:none!important}
.task-order-number{display:grid;place-items:center;width:32px;height:32px;min-width:32px;padding:0;border:1px solid #e4e6eb;border-radius:9px;background:#f3f4f7;color:#555b66;font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;cursor:grab;user-select:none;touch-action:none}
.task-order-number:active{cursor:grabbing}.task-order-number.readonly{cursor:default}
.task-content-editor{display:block;width:100%;height:auto;min-height:34px;margin:0;padding:6px 4px;border:0;outline:0;resize:none;overflow:hidden;background:transparent;color:#1d2027;font:600 13px/1.45 Inter,"PingFang SC","Microsoft YaHei",sans-serif;white-space:pre-wrap;overflow-wrap:anywhere}
.task-content-editor::placeholder{color:#adb1ba;font-weight:500}.task-content-editor:focus{border-radius:7px;background:#fbfaff;box-shadow:0 0 0 2px rgba(98,84,244,.11)}
.task-content-readonly{min-width:0;margin:0;padding:6px 4px;white-space:pre-wrap;overflow-wrap:anywhere}.task-content-readonly b{font-size:13px}.task-content-readonly p{margin:3px 0 0;color:#777d88;font-size:11px;white-space:pre-wrap}
.task-done-toggle{width:30px;height:30px;margin:0;border:1px solid #e3e5e9;border-radius:8px;background:#fff;color:#c0c4cc;cursor:pointer;font-weight:900}.task-done-toggle.is-done{background:#edf9f3;border-color:#bfe8d3;color:#158255}.task-done-readonly{align-self:center}
.task-archive-draft{align-self:center;border:0;background:transparent;color:#bd5c5c;cursor:pointer;padding:7px 2px;font-size:10px;white-space:nowrap}.task-archive-draft:hover{text-decoration:underline}
.task-add-tile{display:flex;align-items:center;justify-content:center;min-height:48px;padding:8px;border:1px dashed #cfcbea;border-radius:11px;background:#faf9ff;color:#5d51dd;font-size:12px;font-weight:700;cursor:pointer}.task-add-tile:hover{border-color:#9f96f4;background:#f7f5ff}
.archived-card{grid-template-columns:34px minmax(0,1fr) auto auto;min-height:48px;aspect-ratio:auto}.archived-label{align-self:center;font-size:10px;color:#8b909a;background:#f1f2f5;padding:4px 7px;border-radius:999px}.archived-card form{margin:0;align-self:center}
.task-drag-active{user-select:none}
@media(max-width:1250px){.task-card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.task-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.member-task-header{align-items:flex-start}.member-head-actions{flex-wrap:wrap;justify-content:flex-end}}
@media(max-width:580px){.task-card-grid{grid-template-columns:1fr;padding:10px}.member-task-header{display:grid;grid-template-columns:1fr}.member-head-actions{justify-content:flex-start}.task-card{grid-template-columns:34px minmax(0,1fr) 30px auto;min-height:48px}}

/* v3.2.2 final — one member = one portrait task card; unfinished tasks on top, today's completed stack from the bottom */
.content{max-width:1900px}
.task-page{width:100%;margin:0 auto}
.task-head{align-items:flex-end}
.member-task-board{display:grid;grid-template-columns:repeat(4,minmax(320px,1fr));gap:18px;align-items:start}
.member-task-section{display:flex;flex-direction:column;min-width:0;width:100%;aspect-ratio:5/7;height:auto;min-height:0;max-height:none;background:#fff;border:1px solid #e2e5eb;border-radius:18px;overflow:hidden;box-shadow:0 6px 22px rgba(22,26,33,.045)}
.member-task-header{flex:0 0 auto;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:14px 14px 12px;background:#fbfbfc;border-bottom:1px solid #eceef2}
.member-task-identity{display:flex;gap:10px;align-items:center;min-width:0}.member-avatar{width:40px;height:40px;flex:0 0 40px;border-radius:50%;object-fit:cover;background:#eceef4}.member-title-copy{min-width:0}.member-task-identity h2{font-size:16px;line-height:1.25;margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.member-task-identity p{font-size:11px;color:var(--muted);margin:0}
.member-save-button{min-width:54px;height:31px;padding:4px 10px}.member-save-button:disabled{opacity:.34;cursor:default}.member-save-button.has-changes{background:#6254f4;border-color:#6254f4;color:#fff}
.member-current-zone{flex:0 0 auto;padding:10px 11px 0;background:#fff}.member-zone-title{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 2px 7px;color:#343842;font-size:11px;font-weight:800}.member-zone-title small{font-size:10px;font-weight:500;color:#9a9faa}.member-task-list{display:block;min-height:0;padding:0;overflow:visible;background:transparent}.member-current-empty{padding:12px 4px 5px;text-align:center;color:#a0a5af;font-size:10.5px}.member-current-empty[hidden]{display:none}
.task-list-row{display:grid;grid-template-columns:30px minmax(0,1fr) 27px auto;align-items:start;gap:6px;min-width:0;width:100%;padding:6px 7px;margin:0 0 6px;background:#fff;border:1px solid #e8eaf0;border-radius:10px;box-shadow:0 1px 4px rgba(22,26,33,.018);transition:border-color .12s,box-shadow .12s,opacity .12s,transform .12s}.task-list-row:hover{border-color:#d5d8e0;box-shadow:0 3px 10px rgba(22,26,33,.035)}.task-list-row.is-new{border-style:dashed;border-color:#bbb6f5;background:#fcfbff}.task-list-row.dragging{opacity:.38;transform:scale(.988);border-color:#766bf1;box-shadow:0 8px 20px rgba(82,70,220,.16);z-index:3}.task-list-row[hidden]{display:none!important}
.task-order-number{display:grid;place-items:center;width:28px;height:28px;min-width:28px;padding:0;border:1px solid #e1e4e9;border-radius:8px;background:#f3f4f7;color:#565c67;font-size:11px;line-height:1;font-weight:800;font-variant-numeric:tabular-nums;cursor:grab;user-select:none;touch-action:none}.task-order-number:hover{border-color:#cbc7f4;background:#f3f1ff;color:#5548da}.task-order-number:active{cursor:grabbing}.task-order-number.readonly{cursor:default}
.task-content-editor{display:block;width:100%;height:auto;min-height:29px;margin:0;padding:4px 2px;border:0;outline:0;resize:none;overflow:hidden;background:transparent;color:#1d2027;font:600 13px/1.46 Inter,"PingFang SC","Microsoft YaHei",sans-serif;letter-spacing:0;white-space:pre-wrap;overflow-wrap:anywhere}.task-content-editor::placeholder{color:#adb1ba;font-weight:500}.task-content-editor:focus{border-radius:7px;background:#fbfaff;box-shadow:0 0 0 2px rgba(98,84,244,.10)}.task-content-readonly{min-width:0;margin:0;padding:4px 2px;white-space:pre-wrap;overflow-wrap:anywhere}.task-content-readonly b{font-size:13px}.task-content-readonly p{margin:2px 0 0;color:#777d88;font-size:11px;white-space:pre-wrap}
.task-done-toggle{width:27px;height:27px;margin:0;border:1px solid #e3e5e9;border-radius:8px;background:#fff;color:#c0c4cc;cursor:pointer;font-size:12px;font-weight:900}.task-done-toggle:hover{border-color:#bfe8d3;color:#158255}.task-done-toggle.is-done{background:#fff;border-color:#d8e8df;color:#56806c}.task-archive-draft{align-self:center;border:0;background:transparent;color:#bd5c5c;cursor:pointer;padding:6px 1px;font-size:9.5px;white-space:nowrap}.task-archive-draft:hover{text-decoration:underline}
.member-card-spacer{flex:1 1 28px;min-height:22px}
.member-completed-zone{flex:0 0 auto;margin:0 9px 9px;border:1px solid #dfe9e3;border-radius:12px;background:#f4f8f5;overflow:hidden}.member-completed-zone[hidden]{display:none}.member-completed-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px 7px;border-bottom:1px solid #e0ebe4;color:#557064;font-size:10.5px;font-weight:800}.member-completed-head small{font-size:9.5px;font-weight:500;color:#8aa095}.member-completed-list{display:block;padding:7px 7px 2px}.member-completed-list .task-list-row{grid-template-columns:28px minmax(0,1fr) 27px;margin-bottom:5px;border-color:#e1eae4;background:rgba(255,255,255,.76);box-shadow:none}.member-completed-list .completed-mark{cursor:default!important;border-color:#d7e7dc;background:#eaf5ee;color:#3b7959}.member-completed-list .task-content-editor{color:#536259;font-weight:550}.member-completed-list .task-done-toggle{grid-column:3;grid-row:1;color:#6f8177;background:transparent}.member-completed-list .task-archive-draft{display:none}
.member-task-footer{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:46px;padding:9px 12px 10px;border-top:1px solid #eceef2;background:#fbfbfc}.member-task-footer form{margin:0}.member-add-task{border:0;background:transparent;color:#5b4ee0;font-size:11px;font-weight:700;padding:5px 2px;cursor:pointer}.member-add-task:hover{text-decoration:underline}.push-button{white-space:nowrap}.member-footer-hint{font-size:10px;color:#9ba0aa}
.archived-zone{padding-bottom:10px}.archived-list .task-list-row{grid-template-columns:28px minmax(0,1fr) auto auto}.archived-list form{margin:0}.archived-label{align-self:start;margin-top:3px;font-size:9.5px;color:#8b909a;background:#f1f2f5;padding:4px 7px;border-radius:999px}.task-drag-active{user-select:none;cursor:grabbing}
@media(min-width:3000px){.content{max-width:2160px}.member-task-board{gap:22px}.member-task-identity h2{font-size:17px}.task-content-editor,.task-content-readonly b{font-size:13.5px}}
@media(max-width:1640px){.member-task-board{grid-template-columns:repeat(3,minmax(310px,1fr))}}
@media(max-width:1220px){.member-task-board{grid-template-columns:repeat(2,minmax(300px,1fr));gap:14px}}
@media(max-width:760px){.member-task-board{grid-template-columns:1fr}.member-task-section{aspect-ratio:auto;min-height:420px}.member-task-header{grid-template-columns:minmax(0,1fr) auto}.member-card-spacer{min-height:14px}}
/* Let content exceed the preferred 5:7 ratio; ratio is a default shape, never a clipping limit. */
.member-task-section{min-height:auto}
@media(max-width:760px){.member-task-section{min-height:420px}}

/* v3.2.4 — explicit group+person task cards + local-only card layout */
.content{max-width:1840px}
.member-task-board{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start}
.member-task-section{position:relative;min-width:0;aspect-ratio:5/7;height:auto;max-height:none;overflow:hidden;background:#fff;border:1px solid #e1e4ea;border-radius:18px;box-shadow:0 7px 24px rgba(20,24,31,.045);transition:box-shadow .15s,transform .15s,opacity .15s}
.member-task-section.member-layout-dragging{opacity:.43;transform:scale(.985);box-shadow:0 18px 42px rgba(60,52,170,.18);z-index:20}
.member-layout-active{user-select:none;cursor:grabbing}
.member-task-header{padding:13px 13px 11px;background:#fbfbfc}
.member-task-identity{gap:9px}.member-title-copy small{display:block;margin-top:2px;color:#a0a5ae;font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.member-avatar-handle{position:relative;width:42px;height:42px;flex:0 0 42px;padding:0;border:0;border-radius:50%;background:transparent;cursor:grab;touch-action:none}.member-avatar-handle:active{cursor:grabbing}.member-avatar-handle .member-avatar{width:42px;height:42px;display:block}.member-avatar-handle>span{position:absolute;right:-6px;bottom:-3px;opacity:0;display:grid;place-items:center;width:18px;height:18px;border-radius:7px;background:#fff;border:1px solid #dfe2e8;color:#797f8b;font-size:10px;letter-spacing:-2px;box-shadow:0 2px 7px rgba(20,24,31,.08);transition:opacity .12s}.member-avatar-handle:hover>span{opacity:1}
.member-group-label{max-width:210px}
.member-current-zone{padding:10px 10px 0}.member-zone-title{padding-bottom:6px}.member-card-spacer{flex:1 1 30px;min-height:24px}
.task-list-row{grid-template-columns:29px minmax(0,1fr) 27px auto;gap:5px;padding:5px 6px;margin-bottom:5px;border-radius:9px}.task-order-number{width:27px;height:27px;min-width:27px;border-radius:8px;font-size:11px}.task-content-editor{min-height:27px;padding:3px 2px;font-size:12.5px;line-height:1.46;font-weight:600}.task-content-readonly{padding:3px 2px}.task-content-readonly b{font-size:12.5px}.task-done-toggle{width:26px;height:26px}.task-archive-draft{font-size:9px;padding:5px 1px}
.member-completed-zone{margin:0 9px 8px;background:#eef7f1;border-color:#d3e7d9}.member-completed-head{background:#e9f4ed;border-bottom-color:#d3e7d9;color:#3f7355}.member-completed-list{padding:7px 7px 2px}.member-completed-list .task-list-row{background:rgba(255,255,255,.7);border-color:#d8e8dd}.member-completed-list .task-content-editor{color:#486353}
.member-task-footer{min-height:44px;padding:8px 11px 9px}.member-add-task{font-size:10.5px}
.task-board-empty{grid-column:1/-1}

/* Member binding dialog: app-owned, compact, never a browser-native prompt. */
.member-binding-modal[hidden]{display:none}.member-binding-modal{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:20px}.member-binding-backdrop{position:absolute;inset:0;background:rgba(17,19,24,.32);backdrop-filter:blur(2px)}.member-binding-card{position:relative;width:min(480px,calc(100vw - 28px));background:#fff;border:1px solid #dfe2e8;border-radius:16px;box-shadow:0 26px 70px rgba(20,24,31,.18);overflow:hidden}.member-binding-card>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 20px 14px;border-bottom:1px solid #eceef2}.member-binding-card h3{margin:0 0 3px;font-size:17px}.member-binding-card header p{margin:0;color:#878d98;font-size:11px}.icon-button{border:0;background:transparent;color:#8a909b;font-size:22px;line-height:1;cursor:pointer}.member-binding-card form{display:grid;gap:13px;padding:17px 20px 20px}.member-binding-card label{font-size:11px;font-weight:700}.member-binding-card input,.member-binding-card select{display:block;width:100%;margin-top:6px;padding:9px 10px;border:1px solid #dfe2e8;border-radius:9px;background:#fff;outline:none}.member-binding-card input:focus,.member-binding-card select:focus{border-color:#9c93fa;box-shadow:0 0 0 3px rgba(98,84,244,.08)}.binding-summary{padding:10px 11px;border-radius:10px;background:#f7f7f9;color:#777d88;font-size:10.5px}.member-binding-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}

/* Responsive density: 1080p avoids squeezing; 2K/4K and wide 1080p can show four. */
@media(min-width:1600px){.member-task-board{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(min-width:2560px){.content{max-width:2100px}.member-task-board{gap:20px}.member-task-section{max-width:none}.member-task-identity h2{font-size:16.5px}.task-content-editor,.task-content-readonly b{font-size:13px}}
@media(max-width:1180px){.member-task-board{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}}
@media(max-width:760px){.member-task-board{grid-template-columns:1fr}.member-task-section{aspect-ratio:auto;min-height:430px}.member-avatar-handle>span{opacity:1}}

/* v3.2.4 — completed tasks archive from the left icon; current tasks have no archive action. */
.member-current-zone .task-list-row{grid-template-columns:29px minmax(0,1fr) 27px}
.member-current-zone .task-list-row.is-new{grid-template-columns:29px minmax(0,1fr) 27px auto}
.completed-archive-button{cursor:pointer!important;border-color:#cfe4d7!important;background:#eaf5ee!important;color:#3e7657!important;transition:background .12s,border-color .12s,color .12s,transform .12s}
.completed-archive-button:hover{background:#dff0e5!important;border-color:#b9d9c5!important;color:#285f42!important}
.completed-archive-button:active{transform:scale(.95)}
.completed-archive-button:disabled{opacity:.45;cursor:wait!important}
.completed-archive-button svg{width:14px;height:14px;display:block;pointer-events:none}
.member-completed-list .task-list-row{grid-template-columns:28px minmax(0,1fr) 27px}
.member-completed-list .completed-archive-button{grid-column:1;grid-row:1}

/* v3.2.5 — compact archive recycle-bin view + login security */
.task-toolbar{align-items:center;justify-content:space-between;flex-wrap:wrap}.member-filter-form{margin:0}.member-filter-form select{margin:0}
.task-view-switch{display:inline-flex;align-items:center;padding:3px;border:1px solid #dde0e6;border-radius:10px;background:#eef0f3;gap:2px}.task-view-switch a{padding:6px 11px;border-radius:7px;color:#6f7580;font-size:12px;font-weight:700}.task-view-switch a:hover{color:#2f3440}.task-view-switch a.active{background:#fff;color:#292d36;box-shadow:0 1px 5px rgba(20,24,31,.08)}
.archive-board{display:grid!important;gap:12px!important}.archive-board .member-task-section{aspect-ratio:auto!important;min-height:0!important;border-radius:14px;overflow:hidden}.archive-board .member-task-header{padding:10px 13px;background:#fafbfc}.archive-board .member-avatar-handle{cursor:default;pointer-events:none;width:34px;height:34px;flex-basis:34px}.archive-board .member-avatar-handle .member-avatar{width:34px;height:34px}.archive-board .member-avatar-handle>span{display:none}.archive-board .member-group-label{display:none}.archive-person-body{padding:0 12px 10px}.archive-person-title{display:flex;align-items:center;justify-content:space-between;padding:8px 2px 6px;color:#5a606b;font-size:10.5px;font-weight:800}.archive-person-title small{font-size:10px;font-weight:500;color:#9a9faa}.archive-rows{display:grid;gap:5px}.archive-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:start;gap:7px;padding:6px 7px;border:1px solid #e6e8ed;border-radius:9px;background:#fff;min-height:39px}.archive-index{display:grid;place-items:center;width:27px;height:27px;border-radius:8px;background:#f2f3f6;color:#686e79;font-size:11px;font-weight:800;font-variant-numeric:tabular-nums}.archive-content{min-width:0;padding:3px 1px;white-space:pre-wrap;overflow-wrap:anywhere}.archive-content b{font-size:12.5px}.archive-content p{margin:2px 0 0;color:#858b95;font-size:10.5px}.archive-actions{display:flex;align-items:center;gap:5px;padding-top:1px}.archive-actions form{margin:0}.archive-actions .mini{white-space:nowrap}.archive-actions .mini.danger{background:#fffafa}.archive-board .task-board-empty{grid-column:1}
@media(max-width:700px){.archive-row{grid-template-columns:28px minmax(0,1fr)}.archive-actions{grid-column:2;justify-content:flex-start}.task-toolbar{align-items:stretch}.task-view-switch{width:max-content}}

.security-head{margin-bottom:16px}.security-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}.security-summary>div{background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px 16px}.security-summary span{display:block;color:#858b96;font-size:11px}.security-summary strong{font-size:24px}.security-panel{margin-bottom:14px}.security-panel-head{padding:15px 16px 10px;border-bottom:1px solid #eceef2}.security-panel-head h2{margin:0;font-size:15px}.security-panel-head p{margin:2px 0 0;color:#8b919c;font-size:10.5px}.security-list{display:grid}.security-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:11px 16px;border-bottom:1px solid #eef0f3}.security-row:last-child{border-bottom:0}.security-main{min-width:0}.security-main b,.security-main small{display:block}.security-main b{font-size:12.5px}.security-main small{color:#8a909b;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:720px}.security-time{display:flex;align-items:center;gap:7px;color:#858b96;font-size:10px}.security-time em{font-style:normal;color:#17724f;background:#eaf7f1;padding:3px 6px;border-radius:999px}.login-event{grid-template-columns:8px minmax(0,1fr) auto auto}.login-dot{width:7px;height:7px;border-radius:50%;background:#b84b4b}.login-event.ok .login-dot{background:#1b9b67}.security-row form{margin:0}
[data-modal-confirm].danger{background:#b74b4b!important;border-color:#b74b4b!important;color:#fff!important}
@media(max-width:800px){.security-summary{grid-template-columns:1fr}.security-row{grid-template-columns:minmax(0,1fr);gap:6px}.login-event{grid-template-columns:8px minmax(0,1fr)}.login-event .security-time,.login-event form{grid-column:2}.security-time{justify-content:flex-start}}


/* v3.2.6 — CARD GRID CONTRACT + overflow guardrails
   Single source of truth for current/archive/filter layouts.
   Cards never stretch to fill an empty row; normal cards grow with content instead of squeezing it. */
.task-page{
  --member-card-max:430px;
  --member-card-gap:18px;
  --task-editor-max-lines:10;
  width:100%;
  max-width:1780px;
  margin-inline:auto;
  container-type:inline-size;
}
.task-page .member-task-board,
.task-page .member-task-board.archive-board{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:var(--member-card-gap)!important;
  align-items:start!important;
  justify-items:start!important;
}
.task-page .member-task-section{
  width:100%!important;
  max-width:var(--member-card-max)!important;
  min-width:0!important;
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
  align-self:start!important;
  justify-self:start!important;
}
.task-page .member-task-board:not(.archive-board) .member-task-section{
  aspect-ratio:5/7;
}
.task-page .archive-board .member-task-section{
  aspect-ratio:auto!important;
  min-height:0!important;
}
.task-page .member-task-header,
.task-page .member-current-zone,
.task-page .member-completed-zone,
.task-page .member-task-footer{
  flex-shrink:0!important;
}
.task-page .member-task-header{border-radius:17px 17px 0 0}
.task-page .member-task-footer{border-radius:0 0 17px 17px}
.task-page .member-card-spacer{flex:1 0 24px!important;min-height:24px}
.task-page .task-list-row{min-width:0;overflow:visible}
.task-page .task-content-editor,
.task-page .task-content-readonly{
  min-width:0;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.task-page .task-content-editor{
  flex:0 1 auto!important;
  min-height:27px!important;
  max-height:220px!important;
  overflow-y:hidden;
  overflow-x:hidden;
  scrollbar-gutter:stable;
}
.task-page .task-content-editor.is-overflowing{
  overflow-y:auto!important;
  padding-right:5px;
  scrollbar-width:thin;
}
.task-page .task-content-editor.is-overflowing:focus{
  max-height:320px!important;
}
.task-page .task-content-readonly{overflow:visible!important}
.task-page .member-task-section.member-layout-dragging,
.task-page .task-list-row.dragging{will-change:transform}

@container (max-width:1399px){
  .task-page .member-task-board,
  .task-page .member-task-board.archive-board{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}
@container (max-width:1019px){
  .task-page .member-task-board,
  .task-page .member-task-board.archive-board{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@container (max-width:679px){
  .task-page .member-task-board,
  .task-page .member-task-board.archive-board{grid-template-columns:minmax(0,1fr)!important}
  .task-page .member-task-section{max-width:min(430px,100%)!important}
  .task-page .member-task-board:not(.archive-board) .member-task-section{aspect-ratio:auto;min-height:430px}
}

/* Fallbacks for engines without container queries. These mirror the same contract. */
@supports not (container-type:inline-size){
  @media(max-width:1599px){.task-page .member-task-board,.task-page .member-task-board.archive-board{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
  @media(max-width:1219px){.task-page .member-task-board,.task-page .member-task-board.archive-board{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
  @media(max-width:759px){.task-page .member-task-board,.task-page .member-task-board.archive-board{grid-template-columns:minmax(0,1fr)!important}}
}


/* v3.2.7 — control sizing contract + realtime sync chrome */
.button,.mini,.member-save-button,.push-button,.member-add-task,.task-view-switch a,.archive-actions button{
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
  writing-mode:horizontal-tb!important;
  flex:0 0 auto!important;
}
.archive-actions{display:flex!important;flex-wrap:nowrap!important;min-width:max-content!important;white-space:nowrap!important}
.archive-row{grid-template-columns:28px minmax(0,1fr) max-content!important}
.member-head-actions{min-width:max-content;flex-wrap:nowrap!important}
.task-toolbar-right{display:flex;align-items:center;gap:9px;margin-left:auto}
.realtime-status{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;color:#69717c;font-size:10.5px;font-weight:700}
.realtime-status::before{content:"";width:7px;height:7px;border-radius:50%;background:#d49a2a;box-shadow:0 0 0 3px rgba(212,154,42,.08)}
.realtime-status[data-state="online"]{color:#3c7658}.realtime-status[data-state="online"]::before{background:#21a36d;box-shadow:0 0 0 3px rgba(33,163,109,.09)}
.realtime-status[data-state="offline"]{color:#a14b4b}.realtime-status[data-state="offline"]::before{background:#c95d5d}
.remote-update-badge{border:1px solid #e9ce90;background:#fff8e7;color:#926312;border-radius:999px;padding:4px 7px;font-size:9.5px;font-weight:800;white-space:nowrap;cursor:pointer}
.remote-update-badge[hidden]{display:none!important}
@media(max-width:700px){.task-toolbar-right{width:100%;justify-content:space-between;margin-left:0}.archive-row{grid-template-columns:28px minmax(0,1fr)!important}.archive-actions{grid-column:2!important;justify-self:start}}

/* v3.2.8 — operations handoff: internal-only people field + dedicated assignment surface */
.task-page .member-current-zone .task-list-row{grid-template-columns:29px minmax(0,1fr) 25px 27px!important}
.task-page .member-current-zone .task-list-row.is-new{grid-template-columns:29px minmax(0,1fr) 25px 27px auto!important}
.task-page .member-completed-list .task-list-row{grid-template-columns:28px minmax(0,1fr) 25px 27px!important}
.task-operator-chip{width:25px;height:25px;min-width:25px;padding:0;border:1px solid #dfe2e8;border-radius:50%;background:#fff;display:grid;place-items:center;overflow:hidden;cursor:pointer;align-self:start;margin-top:1px;transition:border-color .12s,box-shadow .12s,transform .12s}
.task-operator-chip:hover{border-color:#9d95ee;box-shadow:0 0 0 3px rgba(98,84,244,.08)}.task-operator-chip:active{transform:scale(.94)}
.task-operator-chip img{width:100%;height:100%;display:block;object-fit:cover}.task-operator-chip span{font-size:9px;font-weight:900;color:#776a35}.task-operator-chip.unassigned{background:#fff8e8;border-color:#ead9aa}
.task-operator-picker{position:fixed;z-index:120;width:300px;max-height:min(420px,calc(100vh - 24px));overflow:auto;background:#fff;border:1px solid #dfe2e8;border-radius:13px;box-shadow:0 18px 46px rgba(20,24,31,.18);padding:9px}.task-operator-picker[hidden]{display:none}
.task-operator-picker-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:4px 4px 9px;border-bottom:1px solid #eef0f3}.task-operator-picker-head b,.task-operator-picker-head small{display:block}.task-operator-picker-head b{font-size:12px}.task-operator-picker-head small{font-size:9.5px;color:#9298a3;margin-top:2px}.task-operator-options{display:grid;gap:3px;padding-top:7px}.task-operator-option{width:100%;min-height:38px;padding:5px 7px;border:0;border-radius:9px;background:transparent;display:grid;grid-template-columns:28px minmax(0,1fr) 18px;align-items:center;gap:8px;text-align:left;cursor:pointer;color:#343842}.task-operator-option:hover{background:#f6f5ff}.task-operator-option.selected{background:#f1efff;color:#5147c9}.task-operator-option img,.operator-empty-mark{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#eff1f4;object-fit:cover}.task-operator-option>span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px}.task-operator-option b{justify-self:end;color:#6254f4}

.ops-page{width:100%;max-width:1500px;margin-inline:auto}.ops-head{align-items:center}.ops-summary{display:flex;gap:9px}.ops-summary>div{min-width:104px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px}.ops-summary span,.ops-summary strong{display:block}.ops-summary span{color:#858b96;font-size:9.5px}.ops-summary strong{font-size:21px;margin-top:1px}.ops-summary .warn strong{color:#b17a18}.ops-summary .ok strong{color:#14865a}
.ops-toolbar{align-items:center;justify-content:space-between}.ops-toolbar .member-filter-form select{min-width:170px}.ops-directory-warning,.ops-directory-ok{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ops-directory-warning{color:#996514}.ops-directory-ok{color:#34805b}
.ops-board{display:grid;gap:14px}.ops-member{background:#fff;border:1px solid var(--line);border-radius:15px;overflow:hidden;box-shadow:0 4px 18px rgba(20,24,31,.025)}.ops-member-head{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 16px;background:#fbfbfc;border-bottom:1px solid #eceef2}.ops-person{display:flex;align-items:center;gap:10px;min-width:0}.ops-person img{width:38px;height:38px;border-radius:50%;object-fit:cover;background:#eef0f3}.ops-person h2,.ops-person p{margin:0}.ops-person h2{font-size:14px}.ops-person p{font-size:9.5px;color:#8c929d;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ops-default-block{display:flex;align-items:center;gap:9px;flex:0 0 auto}.ops-default-block label{font-size:10px;font-weight:800;color:#555b66}.ops-default-block label span{display:block;font-size:8.5px;font-weight:500;color:#a1a6af}.ops-default-block form{margin:0}.ops-default-block select,.ops-task-operator select{height:32px;border:1px solid #dfe2e8;border-radius:8px;background:#fff;padding:0 28px 0 9px;color:#333842;font-size:10.5px;max-width:170px;white-space:nowrap}
.ops-bulkbar{display:flex;align-items:center;gap:7px;padding:8px 16px;border-bottom:1px solid #eef0f3;background:#fff}.ops-bulkbar>span{font-size:9.5px;color:#8b919b;margin-right:3px}.ops-bulkbar form{margin:0}.ops-bulkbar button:disabled{opacity:.4;cursor:not-allowed}
.ops-task-list{display:grid}.ops-task-row{display:grid;grid-template-columns:28px minmax(0,1fr) 175px;align-items:start;gap:9px;padding:9px 16px;border-bottom:1px solid #eef0f3}.ops-task-row:last-child{border-bottom:0}.ops-task-row.unassigned{background:#fffdf8}.ops-task-index{display:grid;place-items:center;width:26px;height:26px;border-radius:8px;background:#f2f3f6;color:#666c77;font-size:10.5px;font-weight:800}.ops-task-content{min-width:0;padding-top:3px}.ops-task-content b{display:block;font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.ops-task-content p{margin:2px 0 0;color:#858b95;font-size:10px;white-space:pre-wrap;overflow-wrap:anywhere}.ops-task-operator{margin:0;justify-self:end}.ops-task-operator select{width:170px}.ops-empty{padding:24px;text-align:center;color:#9a9faa;font-size:11px}
@media(max-width:900px){.ops-head{align-items:flex-start;flex-direction:column}.ops-summary{width:100%}.ops-summary>div{flex:1}.ops-member-head{align-items:flex-start;flex-direction:column}.ops-default-block{width:100%;justify-content:space-between}.ops-task-row{grid-template-columns:28px minmax(0,1fr);}.ops-task-operator{grid-column:2;justify-self:start}.ops-task-operator select{width:min(240px,70vw);max-width:100%}.ops-bulkbar{flex-wrap:wrap}}
@media(max-width:520px){.ops-summary{display:grid;grid-template-columns:1fr 1fr}.ops-default-block{align-items:flex-start;flex-direction:column}.ops-default-block select{max-width:min(260px,75vw)}.ops-toolbar{align-items:flex-start;flex-direction:column}.task-operator-picker{width:min(300px,calc(100vw - 24px))}}
.task-page .member-completed-list .task-done-toggle{grid-column:4!important;grid-row:1!important}.task-page .member-completed-list .task-operator-chip{grid-column:3!important;grid-row:1!important}

/* v3.4.0 — durable task ledger + restrained person-grouped export surface */
.ledger-page{width:100%;max-width:1500px;margin-inline:auto}.ledger-head{align-items:center}.ledger-filters{display:flex;align-items:end;gap:10px;padding:14px 16px}.ledger-filters>label,.ledger-custom-range label{display:grid;gap:5px;font-size:10px;font-weight:800;color:#616773}.ledger-filters select,.ledger-filters input{height:36px;min-width:145px;padding:0 10px;border:1px solid #dfe2e8;border-radius:9px;background:#fff;color:#2e333c;outline:none}.ledger-filters select:focus,.ledger-filters input:focus{border-color:#9c93fa;box-shadow:0 0 0 3px rgba(98,84,244,.08)}.ledger-custom-range{display:flex;align-items:end;gap:10px}.ledger-custom-range[hidden]{display:none!important}.ledger-custom-range input{min-width:190px}.ledger-query{height:36px;margin-left:auto}.ledger-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:3px 2px 12px;color:#7c828d;font-size:11px}.ledger-summary b{color:#3d424c;font-size:12px}.ledger-groups{display:grid;gap:12px}.ledger-person{padding:0;overflow:hidden;margin:0}.ledger-person-title{display:flex;align-items:center;justify-content:space-between;padding:11px 15px;border-bottom:1px solid rgba(65,72,85,.08)}.ledger-person-title b{font-size:13px}.ledger-person-title span{font-size:10px;color:#656b76}.ledger-person.tone-0 .ledger-person-title{background:#ede9fe}.ledger-person.tone-1 .ledger-person-title{background:#e0f2fe}.ledger-person.tone-2 .ledger-person-title{background:#dcfce7}.ledger-person.tone-3 .ledger-person-title{background:#fef3c7}.ledger-person.tone-4 .ledger-person-title{background:#fce7f3}.ledger-person.tone-5 .ledger-person-title{background:#e2e8f0}.ledger-table{min-width:980px}.ledger-table th{padding:9px 12px;background:#fafbfc}.ledger-table td{padding:10px 12px;font-size:11px;white-space:nowrap}.ledger-table td:first-child{min-width:310px;white-space:pre-wrap;overflow-wrap:anywhere}.ledger-content{line-height:1.55}.ledger-status{display:inline-flex;padding:3px 7px;border-radius:999px;background:#f0f1f4;color:#5e6570;font-size:9.5px;font-weight:700}.ledger-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#6e7480;font-size:10px!important}.monthly-archives{margin-top:18px}.monthly-archives .panelhead{align-items:flex-start}.monthly-archives .panelhead p{margin-top:3px;font-size:10.5px}.archive-file-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.archive-file-list a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;padding:10px 12px;border:1px solid #e5e7ec;border-radius:10px;background:#fbfbfc}.archive-file-list a:hover{border-color:#cfcbea;background:#faf9ff}.archive-file-list b{font-size:12px}.archive-file-list span{grid-column:1;color:#898f99;font-size:9.5px}.archive-file-list em{grid-column:2;grid-row:1/3;align-self:center;font-style:normal;color:#5d51dd;font-size:10px;font-weight:800}
@media(max-width:1050px){.ledger-filters{flex-wrap:wrap}.ledger-query{margin-left:0}.archive-file-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.ledger-head{align-items:flex-start}.ledger-filters{display:grid;grid-template-columns:1fr 1fr}.ledger-filters>label,.ledger-custom-range label{min-width:0}.ledger-filters select,.ledger-filters input,.ledger-custom-range input{width:100%;min-width:0}.ledger-custom-range{grid-column:1/-1;display:grid;grid-template-columns:1fr}.ledger-query{width:100%}.archive-file-list{grid-template-columns:1fr}.ledger-summary{align-items:flex-start;flex-direction:column}}
