:root{--bg:#f6f7f9;--surface:#fff;--ink:#1a1d23;--ink-2:#3d4350;--muted:#5b6270;--line:#e3e6eb;--line-soft:#eef0f3;--field:#d0d5dd;--accent:#2f5bea;--accent-ink:#1f3fae;--accent-soft:#eef2ff;--danger:#b42318;--danger-soft:#fde7e7;--today:#d92d20;--sub-row:#fafbfc;color:var(--ink);background:var(--bg);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:var(--bg);margin:0}button,input,select,textarea{font-family:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1{letter-spacing:-.01em;margin:0;font-size:24px;font-weight:700}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.ell{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.app-header{background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px 28px;padding:12px 32px;display:flex}.brand{align-items:center;gap:10px;display:flex}.brand-mark{background:var(--ink);color:#fff;border-radius:9px;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.brand-name{font-size:15px;font-weight:700;line-height:18px}.brand-sub{color:var(--muted);font-size:12px;line-height:16px}.nav{flex-wrap:wrap;gap:4px;display:flex}.nav button{height:36px;color:var(--ink-2);background:0 0;border:0;border-radius:8px;padding:0 14px;font-size:14px;font-weight:500}.nav button[aria-current=page]{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}.spacer{flex:1}.header-right{align-items:center;gap:12px;display:flex}.menu-wrap{position:relative}.menu{background:var(--surface);border:1px solid var(--line);z-index:40;border-radius:10px;flex-direction:column;gap:2px;width:200px;padding:6px;display:flex;position:absolute;top:44px;right:0;box-shadow:0 12px 28px #10182829}.menu button{background:var(--surface);height:40px;color:var(--ink);text-align:left;border:0;border-radius:7px;align-items:center;gap:10px;padding:0 10px;font-size:14px;font-weight:600;display:flex}.menu button:hover,.menu button:focus-visible{background:#f2f4f7}.menu button svg{color:var(--muted)}.btn{border:1px solid var(--field);background:var(--surface);height:36px;color:var(--ink);border-radius:8px;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:600;display:inline-flex}.btn-primary{background:var(--accent);color:#fff;border:0;font-size:14px}.btn-primary:hover{background:#2549c9}.btn-danger{color:var(--danger);border-color:#f1b4ae}.btn-icon{width:34px;color:var(--ink-2);justify-content:center;padding:0}.btn-ghost{color:var(--muted);background:0 0;border:0;border-radius:6px;justify-content:center;width:28px;height:28px;padding:0}.btn-ghost:hover{background:#f2f4f7}.link-btn{text-align:left;color:var(--ink);font:inherit;background:0 0;border:0;padding:0}.link-btn:hover{text-decoration:underline}.fld{border:1px solid var(--field);width:100%;height:40px;color:var(--ink);background:var(--surface);border-radius:8px;padding:0 12px;font-size:14px}textarea.fld{resize:vertical;height:80px;padding:10px 12px}.fld-sm{height:34px;font-size:13px}.lbl{color:var(--ink-2);margin:0 0 6px;font-size:12px;font-weight:600;display:block}.inline-lbl{color:var(--muted);font-size:13px}.check{color:var(--ink-2);align-items:center;gap:6px;font-size:13px;display:flex}.check input{width:16px;height:16px;margin:0}.seg{background:#ebedf1;border-radius:9px;gap:2px;padding:3px;display:flex}.seg button{color:#4a5160;background:0 0;border:0;border-radius:7px;height:30px;padding:0 12px;font-size:13px;font-weight:600}.seg button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #10182824}.chip{white-space:nowrap;border-radius:999px;padding:3px 8px;font-size:12px;font-weight:600;display:inline-block}.stat{border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600}.avatar{border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.pri{align-items:center;gap:6px;display:inline-flex}.dot{border-radius:50%;flex:none;width:8px;height:8px}.ptag{color:var(--ink-2);background:#f2f4f7;border-radius:5px;align-items:center;gap:5px;max-width:100%;padding:2px 7px;font-size:11px;font-weight:600;display:inline-flex}.ptag .sq{border-radius:2px;flex:none;width:7px;height:7px}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px}main{max-width:1440px;margin:0 auto;padding:24px 32px 56px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.center-msg{text-align:center;max-width:520px;color:var(--ink-2);margin:15vh auto;padding:0 16px}.center-msg h1{margin-bottom:8px}.gantt{overflow:hidden}.gantt-scroll{overflow-x:auto}.gantt-inner{min-width:980px}.g-row{border-bottom:1px solid var(--line-soft);display:flex}.g-left{border-right:1px solid var(--line);background:var(--surface);flex:none;align-items:center;gap:8px;width:320px;padding:0 10px 0 8px;display:flex}.g-right{flex:1;position:relative}.g-head{border-bottom:1px solid var(--line);height:62px}.g-head .g-left{color:var(--muted);padding:0 16px;font-size:12px;font-weight:600}.g-head .g-right{overflow:hidden}.tick{white-space:nowrap;border-left:1px solid;height:40px;padding:4px 0 0 5px;position:absolute;top:0;overflow:hidden}.tick-a{color:var(--ink);font-size:12px;font-weight:600;line-height:16px}.tick-b{color:var(--muted);font-size:11px;line-height:16px}.hgroup{color:var(--ink-2);white-space:nowrap;border-left:1px solid #c9ced6;padding-left:6px;font-size:11px;font-weight:700;line-height:21px;position:absolute;top:41px;bottom:0}.head-sep{background:var(--line-soft);height:1px;position:absolute;top:40px;left:0;right:0}.today-pill{background:var(--today);color:#fff;z-index:4;border-radius:4px;padding:0 6px;font-size:10px;font-weight:700;line-height:15px;position:absolute;bottom:3px;transform:translate(-50%)}.g-body{position:relative}.g-overlay{pointer-events:none;position:absolute;inset:0 0 0 320px;overflow:hidden}.g-overlay .col{border-left:1px solid;position:absolute;top:0;bottom:0}.today-line{background:var(--today);width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}.p-row{height:38px}.p-name{font-size:13px;font-weight:600;line-height:17px}.p-meta{color:var(--muted);white-space:nowrap;font-size:11px;line-height:15px}.risk-tag{background:var(--danger-soft);color:var(--danger);border-radius:4px;flex:none;padding:2px 6px;font-size:10px;font-weight:700}.bar{border:0;border-radius:5px;height:18px;margin-top:-9px;padding:0;display:block;position:absolute;top:50%;overflow:hidden}.bar>span{height:100%;display:block}.risk{pointer-events:none;background:repeating-linear-gradient(135deg,#b423188c 0 3px,#b423181f 3px 7px);border-radius:0 5px 5px 0;height:18px;margin-top:-9px;position:absolute;top:50%}.deadline{border-left:2px dashed var(--danger);z-index:2;width:0;position:absolute;top:4px;bottom:4px}.deadline svg{position:absolute;top:-2px;left:0}.ms{z-index:3;border:2px solid;border-radius:2px;width:13px;height:13px;margin:-6.5px 0 0 -6.5px;position:absolute;top:50%;transform:rotate(45deg);box-shadow:0 0 0 2px #fff}.t-row{background:var(--sub-row);height:26px}.t-row .g-left{background:var(--sub-row);padding-left:46px}.t-title{font-size:13px}.multi{color:#475467;background:#eef0f4;border-radius:4px;flex:none;align-items:center;gap:2px;padding:2px 5px;font-size:10px;font-weight:700;display:inline-flex}.tbar{border:0;border-radius:6px;height:12px;margin-top:-6px;padding:0;display:block;position:absolute;top:50%}.add-row .g-left{padding-left:46px}.add-link{color:var(--accent);background:0 0;border:0;padding:0 2px;font-size:12px;font-weight:600}.legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 20px;margin-top:12px;font-size:12px;display:flex}.legend>span{align-items:center;gap:6px;display:flex}.lg-ms{border:2px solid;width:10px;height:10px;display:inline-block;transform:rotate(45deg)}.tabs{border-bottom:1px solid var(--line);gap:20px;margin-bottom:16px;display:flex}.tabs button{color:#4a5160;background:0 0;border:0;border-bottom:2px solid #0000;height:40px;margin-bottom:-1px;padding:0 2px;font-size:14px;font-weight:500}.tabs button[aria-pressed=true]{border-bottom-color:var(--accent);color:var(--ink);font-weight:700}.search{flex:0 320px;min-width:200px;position:relative}.search svg{color:var(--muted);position:absolute;top:12px;left:12px}.search input{padding-left:36px}.table{overflow-x:auto}.trow{border-top:1px solid var(--line-soft);min-height:34px;color:var(--ink-2);align-items:center;padding:4px 16px;font-size:13px;display:grid}.thead{min-height:30px;color:var(--muted);background:#f9fafb;border-top:0;padding-top:0;padding-bottom:0;font-size:12px;font-weight:600}.thead>div{align-items:center;min-width:0;height:30px;display:flex;position:relative}.trow .who{align-items:center;gap:8px;min-width:0;display:flex}.trow .name-cell{align-items:center;gap:10px;min-width:0;display:flex}.trow .name-btn{color:var(--ink);min-width:0;font-weight:600}.colgrip{cursor:col-resize;z-index:2;background:0 0;border:0;justify-content:center;width:12px;padding:0;display:flex;position:absolute;top:0;bottom:0;right:-10px}.colgrip span{background:var(--field);width:2px;height:100%;display:block}.colgrip:hover span,.colgrip:focus-visible span{background:var(--accent);width:3px}.progress{align-items:center;gap:8px;display:flex}.progress .track{background:var(--line-soft);border-radius:3px;flex:1;height:6px;overflow:hidden}.progress .track span{height:100%;display:block}.empty{text-align:center;color:var(--muted);border-top:1px solid var(--line-soft);padding:40px;font-size:14px}.my-layout{flex-wrap:wrap;align-items:flex-start;gap:24px;display:flex}.my-list{flex-direction:column;flex:999 560px;gap:16px;min-width:0;display:flex}.group h2{border-bottom:1px solid var(--line-soft);align-items:center;gap:8px;margin:0;padding:12px 16px;font-size:14px;font-weight:700;display:flex}.count{color:var(--muted);background:#eef0f4;border-radius:999px;padding:1px 8px;font-size:12px;font-weight:600}.my-item{border-top:1px solid #f2f3f5;align-items:center;gap:12px;padding:10px 16px;display:flex}.my-item input[type=checkbox]{flex:none;width:18px;height:18px;margin:0}.my-item .title{font-size:14px;font-weight:600}.my-item .tags{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.my-item .due{text-align:right;width:120px;color:var(--muted);flex:none;font-size:12px}.notif{flex:300px;padding:16px 18px}.notif h2{margin:0 0 4px;font-size:14px;font-weight:700}.notif p{color:var(--muted);margin:0 0 12px;font-size:12px;line-height:18px}.notif label{border-top:1px solid #f2f3f5;align-items:center;gap:10px;padding:8px 0;font-size:13px;display:flex}.notif input{width:16px;height:16px;margin:0}.backdrop{z-index:50;background:#10182859;position:fixed;inset:0}.drawer{background:var(--surface);z-index:51;flex-direction:column;width:480px;max-width:100%;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-12px 0 32px #10182829}.drawer-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.drawer-head h2{margin:0;font-size:17px;font-weight:700}.drawer-body{flex-direction:column;flex:1;gap:16px;padding:20px;display:flex;overflow-y:auto}.drawer-foot{border-top:1px solid var(--line);align-items:center;gap:10px;padding:14px 20px;display:flex}.grid2{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}fieldset{border:0;min-width:0;margin:0;padding:0}.checklist{border:1px solid var(--line);border-radius:8px;flex-direction:column;gap:2px;max-height:180px;padding:6px 10px;display:flex;overflow-y:auto}.checklist label{align-items:center;gap:8px;min-height:32px;font-size:13px;display:flex}.checklist input,.members input{width:16px;height:16px;margin:0}.members{flex-wrap:wrap;gap:6px 16px;display:flex}.members label{align-items:center;gap:6px;min-height:32px;font-size:13px;display:flex}.swatches{flex-wrap:wrap;gap:10px;display:flex}.swatches button{border:0;border-radius:7px;width:28px;height:28px}.swatches button[aria-pressed=true]{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--ink)}.ms-row{grid-template-columns:minmax(0,1fr) 150px 36px 36px;align-items:center;gap:8px;display:grid}.pills{flex-wrap:wrap;gap:6px;display:flex}.pills button{border:1px solid var(--field);background:var(--surface);min-height:32px;color:var(--ink-2);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600}.pills button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}.note{color:var(--muted);font-size:12px;line-height:18px}.alert{color:var(--danger);background:var(--danger-soft);border-radius:8px;padding:10px 12px;font-size:13px;font-weight:600}.history{border-top:1px solid var(--line-soft);padding-top:14px}.history ul{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.history li{color:var(--ink-2);font-size:12px;line-height:18px}.history .when{color:var(--muted)}.toast{background:var(--ink);color:#fff;z-index:60;border-radius:10px;max-width:calc(100% - 32px);padding:10px 18px;font-size:14px;font-weight:600;position:fixed;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #1018283d}.toast-error{background:var(--danger)}@media (width<=720px){.app-header,main{padding-left:16px;padding-right:16px}}
