:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--s1:2px;--s2:4px;--s3:6px;--s4:8px;--s5:12px;--s6:16px;--s7:20px;--s8:24px;--s9:32px;--s10:44px;--fs-xs:11px;--fs-sm:12px;--fs-md:13px;--fs-base:14px;--fs-lg:16px;--fs-xl:19px;--fw-normal:400;--fw-medium:500;--fw-semi:600;--fw-bold:680;--radius-sm:6px;--radius:8px;--radius-lg:12px;--radius-pill:999px;--control-h:32px;--control-h-sm:26px;--sidebar-w:232px;--panel-w:420px;--page-max:1440px;--bg:#fff;--surface:#fff;--surface-2:#f2f7f4;--surface-3:#e4ede8;--border:#dbe5df;--border-strong:#b9c9c1;--text:#0e1a14;--text-dim:#3d4a43;--text-faint:#5f6e65;--accent:#0a7a50;--accent-soft:#e4f4ec;--on-accent:#fff;--danger:#c62a1f;--danger-soft:#fdecea;--warn:#b45309;--warn-soft:#fdf3e7;--ok:#0a7a50;--ok-soft:#e4f4ec;--p0:#c62a1f;--p1:#a85f08;--p2:#0f766e;--p3:#5f7168;--st-todo:#64736b;--st-doing:#a85f08;--st-blocked:#c62a1f;--st-done:#0a7a50;--shadow-sm:0 1px 2px #0a281c12;--shadow:0 1px 2px #0a281c0f, 0 2px 6px #0a281c17;--shadow-lg:0 12px 32px #0a281c29;--shadow-panel:-8px 0 32px #0a281c1a;--ring:0 0 0 3px color-mix(in srgb, var(--accent) 32%, transparent);--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:var(--fs-base);-webkit-font-smoothing:antialiased;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent)}h1,h2,h3{letter-spacing:-.01em}:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{box-shadow:var(--ring);border-radius:var(--radius-sm);z-index:1;outline:none;position:relative}::selection{background:color-mix(in srgb, var(--accent) 24%, transparent)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.skip-link{left:var(--s5);top:var(--s5);z-index:100;padding:var(--s3) var(--s5);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-lg);clip-path:inset(50%);position:absolute}.skip-link:focus{clip-path:none}.shell{grid-template-columns:var(--sidebar-w) minmax(0, 1fr);height:100%;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);gap:var(--s1);padding:var(--s5) var(--s5) var(--s6);flex-direction:column;display:flex;overflow-y:auto}.brand{align-items:center;gap:var(--s4);padding:var(--s2) var(--s3) var(--s6);font-weight:var(--fw-bold);font-size:var(--fs-base);letter-spacing:-.015em;display:flex}.brand-mark{border-radius:var(--radius-sm);background:var(--accent);width:24px;height:24px;color:var(--on-accent);flex-shrink:0;place-items:center;display:grid}.nav-item{align-items:center;gap:var(--s4);padding:var(--s3) var(--s4);border-radius:var(--radius);cursor:pointer;color:var(--text-dim);text-align:left;width:100%;font-size:var(--fs-md);font-weight:var(--fw-medium);white-space:nowrap;background:0 0;border:none;text-decoration:none;display:flex}.nav-item>svg{opacity:.85;flex-shrink:0}.nav-item:hover{background:var(--surface-2);color:var(--text)}.nav-item.active{background:var(--accent-soft);color:var(--accent);font-weight:var(--fw-semi)}.nav-item.active>svg{opacity:1}.sidebar-footer{padding-top:var(--s5);border-top:1px solid var(--border);font-size:var(--fs-sm);color:var(--text-faint);gap:var(--s3);flex-direction:column;margin-top:auto;display:flex}.sidebar-footer .who{color:var(--text-dim);text-overflow:ellipsis;align-items:center;gap:var(--s3);display:flex;overflow:hidden}.main{flex-direction:column;min-width:0;display:flex;overflow-y:auto}.pagehead{z-index:20;background:color-mix(in srgb, var(--bg) 86%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);position:sticky;top:0}.pagehead-main{align-items:center;gap:var(--s5);padding:var(--s5) var(--s8);min-height:56px;display:flex}.pagehead-title{align-items:center;gap:var(--s4);flex:1;min-width:0;display:flex}.pagehead-title h1{font-size:var(--fs-xl);font-weight:var(--fw-bold);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.pagehead-title h1.editable{flex:0 auto;min-width:120px;max-width:420px;overflow:visible}.pagehead-subtitle{min-width:0;font-size:var(--fs-md);color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;flex:0 320px;overflow:hidden}@media (width<=900px){.pagehead-subtitle{display:none}}.pagehead-actions{align-items:center;gap:var(--s4);flex-shrink:0;display:flex}.pagehead-meta{align-items:center;gap:var(--s5);padding:0 var(--s8) var(--s5);flex-wrap:wrap;display:flex}.meta-item{align-items:center;gap:var(--s3);font-size:var(--fs-sm);color:var(--text-faint);display:flex}.meta-item>.meta-label{font-weight:var(--fw-medium);white-space:nowrap}.meta-sep{width:1px;margin:var(--s1) 0;background:var(--border);align-self:stretch}.page{padding:var(--s7) var(--s8) var(--s10);max-width:var(--page-max);width:100%;min-width:0;transition:padding-right .18s}.page.narrow{max-width:820px}.page.medium{max-width:1040px}@media (width>=1240px){.page.with-panel{padding-right:calc(var(--panel-w) + var(--s8))}}.btn{justify-content:center;align-items:center;gap:var(--s3);height:var(--control-h);padding:0 var(--s5);border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:var(--fs-md);font-weight:var(--fw-medium);cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--text-faint)}.btn:active:not(:disabled){transform:translateY(.5px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.primary:hover:not(:disabled){filter:brightness(1.08);border-color:var(--accent)}.btn.danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 38%, var(--border))}.btn.danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}.btn.ghost{color:var(--text-dim);background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text);border-color:#0000}.btn.ghost.danger{color:var(--text-dim)}.btn.ghost.danger:hover:not(:disabled){background:var(--danger-soft);color:var(--danger)}.btn.sm{height:var(--control-h-sm);padding:0 var(--s4);font-size:var(--fs-sm)}.btn.icon{width:var(--control-h);flex-shrink:0;padding:0}.btn.icon.sm{width:var(--control-h-sm)}.btn.block{width:100%}.input,.select,.textarea{width:100%;min-height:var(--control-h);padding:var(--s3) var(--s4);border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);font-size:var(--fs-md)}.input::placeholder,.textarea::placeholder{color:var(--text-faint)}.input:focus-visible,.select:focus-visible,.textarea:focus-visible{border-color:var(--accent);box-shadow:var(--ring)}.select{cursor:pointer}.select.auto{width:auto}.textarea{resize:vertical;min-height:68px;line-height:1.55}.inline-edit{width:100%;padding:var(--s2) var(--s3);margin-left:calc(var(--s3) * -1);border-radius:var(--radius-sm);font:inherit;color:inherit;-webkit-text-decoration:underline dotted color-mix(in srgb, currentColor 28%, transparent);text-decoration:underline dotted color-mix(in srgb, currentColor 28%, transparent);text-underline-offset:3px;background:0 0;border:1px solid #0000;transition:background .12s,border-color .12s}.inline-edit:hover:not(:disabled){border-color:var(--border);background:var(--surface);text-decoration-color:#0000}.inline-edit:focus{border-color:var(--accent);background:var(--surface);box-shadow:var(--ring);outline:none;text-decoration-color:#0000}.inline-edit.multi{resize:none;min-height:30px;line-height:1.55;text-decoration:none;overflow:hidden}.inline-edit.multi:hover,.inline-edit.multi:focus{background:var(--surface)}.inline-edit::placeholder{color:var(--text-faint);text-decoration:none}.field{gap:var(--s3);margin-bottom:var(--s6);flex-direction:column;display:flex}.field>label{font-size:var(--fs-sm);color:var(--text-dim);font-weight:var(--fw-semi);letter-spacing:.01em}.field .hint{font-size:var(--fs-sm);color:var(--text-faint);line-height:1.45}.row{gap:var(--s4);align-items:center;display:flex}.row.wrap{flex-wrap:wrap}.row.tight{gap:var(--s3)}.grid-2{gap:0 var(--s5);grid-template-columns:1fr 1fr;display:grid}@media (width<=560px){.grid-2{grid-template-columns:1fr}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card.pad{padding:var(--s6)}.card-head{align-items:center;gap:var(--s4);margin-bottom:var(--s5);display:flex}.card-head>h2,.card-head>h3,.card-head>strong{font-size:var(--fs-base);font-weight:var(--fw-semi);flex:0 auto;min-width:0;margin:0}.card-head>.card-title{font-size:var(--fs-lg);flex:0 auto;min-width:120px}.card-hint{font-size:var(--fs-sm);color:var(--text-faint);margin:calc(var(--s4) * -1) 0 var(--s5);line-height:1.5}.badge{align-items:center;gap:var(--s2);padding:1px var(--s3);border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:var(--fw-semi);background:var(--surface-3);color:var(--text-dim);white-space:nowrap;line-height:1.7;display:inline-flex}.badge.p0{background:color-mix(in srgb, var(--p0) 15%, transparent);color:var(--p0)}.badge.p1{background:color-mix(in srgb, var(--p1) 15%, transparent);color:var(--p1)}.badge.p2{background:color-mix(in srgb, var(--p2) 15%, transparent);color:var(--p2)}.badge.p3{background:color-mix(in srgb, var(--p3) 15%, transparent);color:var(--p3)}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.accent{background:var(--accent-soft);color:var(--accent)}.badge.outline{border:1px solid var(--border-strong);color:var(--text-dim);background:0 0}.date-wrap{align-items:center;display:inline-flex;position:relative}.date-input{font-variant-numeric:tabular-nums;width:138px;padding-right:30px}.date-pick{right:var(--s2);border-radius:var(--radius-sm);width:24px;height:24px;color:var(--text-faint);cursor:pointer;background:0 0;border:none;place-items:center;display:grid;position:absolute}.date-pick:hover{color:var(--accent);background:var(--surface-2)}.date-native{opacity:0;pointer-events:none;border:none;width:1px;height:1px;padding:0;position:absolute;bottom:0;right:0}.daybadge{padding:0 var(--s3);border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:var(--fw-semi);white-space:nowrap;background:var(--surface-3);color:var(--text-dim);align-items:center;line-height:1.7;display:inline-flex}.daybadge.soon{background:var(--warn-soft);color:var(--warn)}.daybadge.today{background:var(--accent-soft);color:var(--accent)}.daybadge.past{color:var(--text-faint);background:0 0;padding-left:0;padding-right:0}.model-dates{min-width:0;font-size:var(--fs-xs);flex-direction:column;gap:1px;display:flex}.model-dates .line{align-items:center;gap:var(--s3);white-space:nowrap;display:flex}.model-dates .k{color:var(--text-faint);flex-shrink:0}.model-dates .v{font-variant-numeric:tabular-nums;color:var(--text-dim)}.model-dates .unset{color:var(--text-faint)}.progress{align-items:center;gap:var(--s4);min-width:0;display:flex}.progress-track{border-radius:var(--radius-pill);background:var(--surface-3);flex:1;min-width:56px;height:6px;overflow:hidden}.progress-track>span{border-radius:var(--radius-pill);background:var(--ok);height:100%;transition:width .25s;display:block}.progress.is-empty .progress-track>span{background:var(--text-faint)}.progress-label{font-size:var(--fs-sm);color:var(--text-dim);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}.progress-label .unit{color:var(--text-faint);margin-right:var(--s2)}.empty{text-align:center;padding:var(--s10) var(--s8);color:var(--text-dim)}.empty-icon{width:44px;height:44px;margin:0 auto var(--s5);border-radius:var(--radius-lg);background:var(--surface-2);color:var(--text-faint);place-items:center;display:grid}.empty h3{margin:0 0 var(--s3);color:var(--text);font-size:var(--fs-lg);font-weight:var(--fw-semi)}.empty p{margin:0 auto var(--s6);max-width:420px;font-size:var(--fs-md);line-height:1.6}.empty.inline{padding:var(--s8) var(--s6);border:1px dashed var(--border-strong);border-radius:var(--radius-lg)}.toolbar{align-items:center;gap:var(--s6);margin-bottom:var(--s6);flex-wrap:wrap;display:flex}.filter-group{align-items:center;gap:var(--s3);display:flex}.filter-group>.filter-label{font-size:var(--fs-sm);color:var(--text-faint);font-weight:var(--fw-medium);white-space:nowrap}.chip-set{border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border);gap:2px;padding:2px;display:inline-flex}.chip{align-items:center;gap:var(--s2);height:var(--control-h-sm);padding:0 var(--s4);border-radius:var(--radius-sm);color:var(--text-dim);cursor:pointer;font-size:var(--fs-sm);font-weight:var(--fw-medium);white-space:nowrap;background:0 0;border:1px solid #0000;transition:background .12s,color .12s;display:inline-flex}.chip:hover:not(:disabled){background:var(--surface-3);color:var(--text)}.chip.on{background:var(--surface);border-color:var(--border-strong);color:var(--text);font-weight:var(--fw-semi);box-shadow:var(--shadow-sm)}.chip:disabled{opacity:.45;cursor:not-allowed}.chip .count{font-variant-numeric:tabular-nums;color:var(--text-faint);font-weight:var(--fw-normal)}.chip.on .count{color:var(--text-dim)}.chip.standalone{border-color:var(--border-strong);background:var(--surface)}.chip.standalone.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.model-list{gap:var(--s3);flex-direction:column;display:flex}.model-grid{align-items:center;gap:var(--s5);grid-template-columns:40px minmax(160px,2fr) minmax(80px,.8fr) minmax(110px,1fr) minmax(178px,.1fr) minmax(140px,1.2fr) 24px;display:grid}.model-head{padding:0 var(--s5) var(--s3);font-size:var(--fs-xs);font-weight:var(--fw-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint)}.model-row{padding:var(--s5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;text-align:left;width:100%;color:inherit;font:inherit;transition:border-color .12s,box-shadow .12s,transform .12s}.model-row:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.model-row .name-line{align-items:center;gap:var(--s4);min-width:0;display:flex}.model-row .name{font-weight:var(--fw-semi);font-size:var(--fs-base);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.model-row .sub{font-size:var(--fs-sm);color:var(--text-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;overflow:hidden}.model-cell{min-width:0}.model-cell.stack{flex-direction:column;display:flex}.model-chevron{color:var(--text-faint);justify-content:flex-end;display:flex}.risk{align-items:center;gap:var(--s2);padding:1px var(--s3);border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:var(--fw-semi);background:var(--danger-soft);color:var(--danger);white-space:nowrap;display:inline-flex}.model-row.at-risk{border-left:3px solid var(--danger);padding-left:calc(var(--s5) - 2px)}.model-break{display:none}@media (width<=900px){.model-grid{align-items:center;gap:var(--s3) var(--s5);flex-wrap:wrap;display:flex}.model-grid.model-head{display:none}.model-cell.c-priority{order:1}.model-cell.c-name{flex:140px;order:2}.model-cell.c-chevron{order:3}.model-break{flex:0 0 100%;order:4;height:0;display:block}.model-cell.c-type{order:5}.model-cell.c-stage{order:6}.model-cell.c-dates{order:7}.model-cell.c-progress{flex:160px;order:8}}.pxs-legend{align-items:center;gap:var(--s3);font-size:var(--fs-sm);color:var(--text-faint);white-space:nowrap;display:flex}.pxs-legend .glyph{flex-shrink:0;display:inline-block}.pxs-priority{min-width:76px}.pxs-priority .p-name{font-size:var(--fs-lg);font-weight:var(--fw-bold);letter-spacing:.01em}.pxs-priority .p-name.p0{color:var(--p0)}.pxs-priority .p-name.p1{color:var(--p1)}.pxs-priority .p-name.p2{color:var(--p2)}.pxs-priority .p-name.p3{color:var(--p3)}.pxs-priority .p-count{font-size:var(--fs-xs);color:var(--text-faint);margin-top:var(--s1);font-variant-numeric:tabular-nums}.pxs-stage-code{font-size:var(--fs-xs);font-weight:var(--fw-medium);letter-spacing:.08em;color:var(--text-faint);margin-top:var(--s1);display:block}.matrix td.pxs-hot{background:color-mix(in srgb, var(--danger-soft) 55%, var(--surface))}.pxs-model{align-items:baseline;gap:var(--s3);width:100%;padding:var(--s2) var(--s3);border-radius:var(--radius-sm);color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;display:flex}.pxs-model:hover{background:color-mix(in srgb, var(--surface-3) 60%, transparent)}.pxs-model:hover .name{color:var(--accent)}.pxs-model .glyph{flex-shrink:0;transform:translateY(-1px)}.pxs-model .name{font-size:var(--fs-md);font-weight:var(--fw-medium);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.pxs-model .nums{font-size:var(--fs-sm);color:var(--text-faint);font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:auto}.pxs-model-date{padding:0 var(--s3) var(--s2) calc(var(--s3) + 13px);margin-top:calc(var(--s1) * -1)}.pxs-matrix .cell-add{padding-left:var(--s3);border:none;justify-content:flex-start;min-height:22px}.pxs-matrix .cell-add:hover{background:var(--surface-2)}.glyph{width:8px;height:8px}.glyph.blocked{background:var(--danger);border-radius:1.5px}.glyph.ok{background:var(--text-faint);border-radius:50%}.glyph.done{background:var(--ok);border-radius:50%}.detail-layout{gap:var(--s6);grid-template-columns:minmax(0,1fr) 300px;align-items:start;display:grid}@media (width<=1100px){.detail-layout{grid-template-columns:minmax(0,1fr)}}.matrix-scroll{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);scrollbar-width:thin;max-height:calc(100vh - 210px);overflow:auto}.matrix-scroll.compact{min-height:240px;max-height:calc(100vh - 380px)}.matrix{border-collapse:separate;border-spacing:0;width:100%;min-width:840px}.matrix th,.matrix td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);vertical-align:top;padding:var(--s4)}.matrix th:last-child,.matrix td:last-child{border-right:none}.matrix tr:last-child td{border-bottom:none}.matrix thead th{background:var(--surface-2);font-size:var(--fs-sm);font-weight:var(--fw-semi);color:var(--text-dim);text-align:left;z-index:2;white-space:nowrap;padding-top:var(--s3);padding-bottom:var(--s3);position:sticky;top:0}.matrix tbody th{font-weight:inherit;text-align:left}.matrix .stage-cell{background:var(--surface-2);z-index:1;min-width:150px;position:sticky;left:0}.matrix thead .stage-cell{z-index:3;color:var(--text-faint);font-weight:var(--fw-medium)}.matrix .stage-cell.current{box-shadow:inset 3px 0 0 var(--accent)}.stage-name{font-weight:var(--fw-semi);font-size:var(--fs-md);align-items:center;gap:var(--s3);flex-wrap:wrap;display:flex}.stage-meta{font-size:var(--fs-xs);color:var(--text-faint);margin-top:var(--s1);font-variant-numeric:tabular-nums}.cell{gap:var(--s3);border-radius:var(--radius-sm);scrollbar-width:thin;flex-direction:column;min-width:158px;max-height:300px;display:flex;overflow-y:auto}.cell.drop-target{background:var(--accent-soft);outline:2px dashed var(--accent);outline-offset:2px}.cell-add{justify-content:center;align-items:center;gap:var(--s2);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;min-height:26px;color:var(--text-faint);font-size:var(--fs-sm);opacity:0;background:0 0;transition:opacity .12s,color .12s,border-color .12s;display:flex}.cell-add:hover{color:var(--accent);border-color:var(--accent)}.cell.is-empty .cell-add,td:hover .cell-add,.cell:focus-within .cell-add,.cell-add:focus-visible{opacity:1}@media (hover:none){.cell-add{opacity:1}}.task-card{border:1px solid var(--border);border-left:3px solid var(--st-todo);border-radius:var(--radius-sm);background:var(--surface-2);flex-direction:column;transition:border-color .12s,box-shadow .12s;display:flex;position:relative}.task-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.task-card:focus-within{border-color:var(--accent)}.task-card.status-doing{border-left-color:var(--st-doing)}.task-card.status-blocked{border-left-color:var(--st-blocked)}.task-card.status-done{border-left-color:var(--st-done)}.task-card.status-done .task-open{color:var(--text-dim);text-decoration:line-through;-webkit-text-decoration-color:var(--text-faint);text-decoration-color:var(--text-faint)}.task-card.dragging{opacity:.4}.task-open{appearance:none;text-align:left;width:100%;padding:var(--s4) var(--s7) var(--s3) var(--s4);font-size:var(--fs-md);font-weight:var(--fw-medium);color:inherit;cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;line-height:1.4}.task-open:hover{color:var(--accent)}.task-foot{align-items:center;gap:var(--s3);padding:0 var(--s4) var(--s4);font-size:var(--fs-xs);color:var(--text-faint);flex-wrap:wrap;display:flex}.task-foot .todo-count{font-variant-numeric:tabular-nums}.task-foot .collab{color:var(--warn);align-items:center;display:inline-flex}.task-grip{top:var(--s2);right:var(--s2);border-radius:var(--radius-sm);width:20px;height:20px;color:var(--text-faint);cursor:grab;opacity:0;background:0 0;border:none;place-items:center;transition:opacity .12s;display:grid;position:absolute}.task-grip:active{cursor:grabbing}.task-card:hover .task-grip,.task-card:focus-within .task-grip,.task-grip:focus-visible{opacity:1}@media (hover:none){.task-grip{opacity:1}}.status-select{appearance:none;border-radius:var(--radius-pill);padding:1px var(--s4) 1px var(--s6);height:20px;font-size:var(--fs-xs);font-weight:var(--fw-semi);cursor:pointer;background-color:var(--surface-3);color:var(--text-dim);background-repeat:no-repeat;background-position:var(--s3) center;background-image:radial-gradient(circle,currentColor 3px,#0000 3.5px);background-size:8px 8px;border:1px solid #0000;line-height:1;transition:filter .12s}.status-select:hover:not(:disabled){filter:brightness(.97)}.status-select:disabled{cursor:default;opacity:.7}.status-select.status-todo{background-color:color-mix(in srgb, var(--st-todo) 16%, transparent);color:var(--st-todo)}.status-select.status-doing{background-color:color-mix(in srgb, var(--st-doing) 16%, transparent);color:var(--st-doing)}.status-select.status-blocked{background-color:color-mix(in srgb, var(--st-blocked) 16%, transparent);color:var(--st-blocked)}.status-select.status-done{background-color:color-mix(in srgb, var(--st-done) 16%, transparent);color:var(--st-done)}.status-select>option{background:var(--surface);color:var(--text);font-weight:var(--fw-normal)}.status-select.lg{height:var(--control-h);font-size:var(--fs-md);padding:0 var(--s5) 0 var(--s7);background-position:var(--s4) center;background-size:9px 9px}.panel{width:var(--panel-w);background:var(--surface);border-left:1px solid var(--border);max-width:100vw;box-shadow:var(--shadow-panel);z-index:30;flex-direction:column;animation:.18s panel-in;display:flex;position:fixed;top:0;bottom:0;right:0}@keyframes panel-in{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}.panel-scrim{z-index:29;background:#090c1173;display:none;position:fixed;inset:0}@media (width<=1239px){.panel-scrim{display:block}}@media (width<=640px){.panel{width:100%}}.panel-head{align-items:flex-start;gap:var(--s4);padding:var(--s5) var(--s6);border-bottom:1px solid var(--border);display:flex}.panel-head .panel-title{min-width:0;font-size:var(--fs-lg);font-weight:var(--fw-semi);flex:1;margin:0}.panel-head .panel-eyebrow{font-size:var(--fs-xs);font-weight:var(--fw-medium);letter-spacing:.02em;color:var(--text-faint);margin-bottom:var(--s1);display:block}.panel-body{padding:var(--s6);flex:1;overflow-y:auto}.panel-foot{align-items:center;gap:var(--s4);padding:var(--s5) var(--s6);border-top:1px solid var(--border);background:var(--surface-2);display:flex}.panel-status{align-items:center;gap:var(--s6);padding-bottom:var(--s6);margin-bottom:var(--s6);border-bottom:1px solid var(--border);display:flex}.panel-status>.progress{flex:1}.panel-section{margin-bottom:var(--s7)}.panel-section>h3{font-size:var(--fs-xs);font-weight:var(--fw-semi);letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint);margin:0 0 var(--s4);padding-bottom:var(--s3);border-bottom:1px solid var(--border)}.scrim{z-index:40;background:#090c1173;animation:.15s fade-in;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal-wrap{z-index:41;padding:var(--s8);pointer-events:none;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);pointer-events:auto;flex-direction:column;width:min(520px,100%);max-height:90vh;animation:.16s modal-in;display:flex}@keyframes modal-in{0%{opacity:0;transform:translateY(8px)scale(.99)}to{opacity:1;transform:none}}.modal-head{padding:var(--s6) var(--s6) 0}.modal-head h2{margin:0 0 var(--s2);font-size:var(--fs-lg);font-weight:var(--fw-semi)}.modal-body{padding:var(--s6);overflow-y:auto}.modal-foot{justify-content:flex-end;gap:var(--s4);padding:var(--s5) var(--s6);border-top:1px solid var(--border);background:var(--surface-2);border-radius:0 0 var(--radius-lg) var(--radius-lg);display:flex}.todo-row{align-items:flex-start;gap:var(--s4);padding:var(--s3) var(--s2);border-radius:var(--radius-sm);border-bottom:1px solid var(--border);display:flex}.todo-row:last-child{border-bottom:none}.todo-row:hover{background:var(--surface-2)}.todo-row input[type=checkbox]{width:15px;height:15px;accent-color:var(--ok);cursor:pointer;flex-shrink:0;margin-top:5px}.todo-row .text{min-width:0;line-height:1.45;font-size:var(--fs-md);flex:1}.todo-row.done .text{color:var(--text-faint);text-decoration:line-through}.todo-row .drag{cursor:grab;color:var(--text-faint);padding-top:var(--s3);opacity:0;background:0 0;border:none;align-items:center;display:flex}.todo-row:hover .drag,.todo-row:focus-within .drag{opacity:1}@media (hover:none){.todo-row .drag{opacity:1}}.todo-row .row-action{opacity:0}.todo-row:hover .row-action,.todo-row:focus-within .row-action,.row-action:focus-visible{opacity:1}@media (hover:none){.todo-row .row-action{opacity:1}}.list-group{margin-bottom:var(--s6)}.list-group:last-child{margin-bottom:0}.list-group-title{align-items:center;gap:var(--s3);margin:0 0 var(--s4);font-size:var(--fs-sm);font-weight:var(--fw-semi);color:var(--text-dim);display:flex}.dim-grid{gap:var(--s6);margin-bottom:var(--s6);grid-template-columns:1fr 1fr;align-items:start;display:grid}@media (width<=940px){.dim-grid{grid-template-columns:1fr}}.dict-row{align-items:center;gap:var(--s4);padding:var(--s3) var(--s2);border-radius:var(--radius-sm);border-bottom:1px solid var(--border);display:flex}.dict-row:last-child{border-bottom:none}.dict-row:hover{background:var(--surface-2)}.dict-row .drag{color:var(--text-faint);cursor:grab;opacity:0;background:0 0;border:none;flex-shrink:0;align-items:center;padding:0;display:flex}.dict-row:hover .drag,.dict-row:focus-within .drag{opacity:1}@media (hover:none){.dict-row .drag{opacity:1}}.swatch{background:var(--border-strong);border-radius:3px;flex-shrink:0;width:10px;height:10px}.dict-name{min-width:0;font-size:var(--fs-md);flex:1}.dict-row .inline-edit{max-width:320px}.dict-usage{font-variant-numeric:tabular-nums;flex-shrink:0}.dict-row .row-action{opacity:0;flex-shrink:0}.dict-row:hover .row-action,.dict-row:focus-within .row-action,.dict-row .row-action:focus-visible{opacity:1}@media (hover:none){.dict-row .row-action{opacity:1}}.task-card.plain{border-left-color:var(--border-strong)}.template-summary{align-items:center;gap:var(--s5);flex-wrap:wrap;display:flex}.asset-item{padding:var(--s5);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);margin-bottom:var(--s4)}.asset-item:last-child{margin-bottom:0}.asset-item .title{font-weight:var(--fw-semi);font-size:var(--fs-md);gap:var(--s4);align-items:center;display:flex}.asset-item .title input[type=checkbox]{width:15px;height:15px;accent-color:var(--ok);cursor:pointer;flex-shrink:0}.asset-item .summary{font-size:var(--fs-sm);color:var(--text-dim);margin-top:var(--s1)}.asset-item .usage{font-size:var(--fs-xs);color:var(--text-faint);margin-top:var(--s3)}.asset-item .row-action{opacity:0}.asset-item:hover .row-action,.asset-item:focus-within .row-action,.asset-item .row-action:focus-visible{opacity:1}@media (hover:none){.asset-item .row-action{opacity:1}}.collapse{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:var(--s6);background:var(--surface);overflow:hidden}.collapse>summary{padding:var(--s4) var(--s5);cursor:pointer;background:var(--surface-2);font-size:var(--fs-sm);font-weight:var(--fw-semi);color:var(--text-dim);align-items:center;gap:var(--s3);list-style:none;display:flex}.collapse>summary:hover{color:var(--text)}.collapse>summary::-webkit-details-marker{display:none}.collapse>summary:before{content:"";border-top:4px solid #0000;border-bottom:4px solid #0000;border-left:4px solid;flex-shrink:0;width:0;height:0;transition:transform .15s}.collapse[open]>summary:before{transform:rotate(90deg)}.collapse>div{padding:var(--s6) var(--s5) var(--s2)}.table{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;font-size:var(--fs-md);overflow:hidden}.table th,.table td{text-align:left;padding:var(--s4) var(--s5);border-bottom:1px solid var(--border)}.table th{background:var(--surface-2);font-size:var(--fs-xs);font-weight:var(--fw-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint)}.table tbody tr:hover{background:var(--surface-2)}.table tr:last-child td{border-bottom:none}.table-scroll{border-radius:var(--radius-lg);overflow-x:auto}.toasts{right:var(--s7);bottom:var(--s7);z-index:60;gap:var(--s4);flex-direction:column;max-width:380px;display:flex;position:fixed}.toast{align-items:flex-start;gap:var(--s4);padding:var(--s5);border-radius:var(--radius);box-shadow:var(--shadow-lg);background:var(--surface);border:1px solid var(--border-strong);border-left:3px solid var(--accent);cursor:pointer;font-size:var(--fs-md);line-height:1.45;animation:.18s toast-in;display:flex}@keyframes toast-in{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:none}}.toast.error{border-left-color:var(--danger)}.toast.success{border-left-color:var(--ok)}.toast>.toast-text{flex:1}.login-wrap{height:100%;padding:var(--s8);place-items:center;display:grid}.login-card{width:min(380px,100%);padding:var(--s9)}.login-card h1{margin:0 0 var(--s2);font-size:var(--fs-xl);font-weight:var(--fw-bold)}.login-card .sub{color:var(--text-dim);font-size:var(--fs-md);margin:0 0 var(--s8)}.conn{align-items:center;gap:var(--s3);font-size:var(--fs-sm);color:var(--text-dim);display:inline-flex}.conn .dot{background:var(--ok);border-radius:50%;flex-shrink:0;width:7px;height:7px}.conn.offline{color:var(--warn)}.conn.offline .dot{background:var(--warn)}.offline-banner{align-items:center;gap:var(--s4);background:var(--warn-soft);color:var(--warn);padding:var(--s4) var(--s8);font-size:var(--fs-md);border-bottom:1px solid color-mix(in srgb, var(--warn) 30%, transparent);flex-wrap:wrap;display:flex}.offline-banner>svg{flex-shrink:0}.offline-banner .banner-text{flex:1;min-width:200px}@media (width<=900px){.shell{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.sidebar{align-items:center;gap:var(--s2);border-right:none;border-bottom:1px solid var(--border);padding:var(--s3) var(--s5);scrollbar-width:none;flex-direction:row;overflow:auto hidden}.sidebar::-webkit-scrollbar{display:none}.brand{padding:0 var(--s4) 0 0;margin-right:var(--s2)}.brand-text{display:none}.nav-item{width:auto}.sidebar-footer{padding-top:0;padding-left:var(--s5);border-top:none;border-left:1px solid var(--border);align-items:center;gap:var(--s5);flex-direction:row;margin-top:0;margin-left:auto}.sidebar-footer .who,.sidebar-footer .mono{display:none}.pagehead-main,.pagehead-meta{padding-left:var(--s6);padding-right:var(--s6)}.page{padding:var(--s6) var(--s6) var(--s10)}.offline-banner{padding-left:var(--s6);padding-right:var(--s6)}.matrix-scroll{max-height:none}}@media (width<=640px){.pagehead-main{gap:var(--s4);flex-wrap:wrap}.pagehead-actions{width:100%}.pagehead-actions .btn{flex:1}.toasts{left:var(--s5);right:var(--s5);bottom:var(--s5);max-width:none}}.spacer{flex:1;min-width:0}.push-right{margin-left:auto}.mono{font-family:var(--mono);font-size:var(--fs-sm)}.dim{color:var(--text-dim)}.faint{color:var(--text-faint)}.small{font-size:var(--fs-sm)}.nowrap{white-space:nowrap}.truncate{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.mb0{margin-bottom:0}.mb16{margin-bottom:var(--s6)}.mt16{margin-top:var(--s6)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}
