@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2) format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font: "Geist Variable", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--mono: "Geist Mono Variable", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--r-sm: 6px;--r: 8px;--r-lg: 12px;--ease: cubic-bezier(.2, 0, 0, 1);--t: .14s var(--ease);--sidebar-w: 248px;--topbar-h: 56px}:root,[data-theme=light]{color-scheme:light;--bg: #f7f7f8;--surface: #ffffff;--surface-2: #f3f3f5;--hover: #f0f0f3;--sidebar: #fbfbfc;--border: #e6e6ea;--border-strong: #d2d2d9;--text: #16161a;--text-2: #52525c;--text-3: #71717d;--accent: #3355d8;--accent-hover: #2846b8;--accent-soft: #eef1fd;--accent-text: #2846b8;--ink: #16161a;--ink-hover: #2c2c33;--ink-text: #ffffff;--ok: #12734f;--ok-soft: #e6f4ed;--warn: #8f5b00;--warn-soft: #fbf0d9;--bad: #b42318;--bad-soft: #fdebe9;--neutral: #5b6070;--neutral-soft: #eeeff3;--shadow-sm: 0 1px 2px rgba(20, 20, 28, .05);--shadow-md: 0 4px 14px rgba(20, 20, 28, .08), 0 1px 3px rgba(20, 20, 28, .06);--shadow-lg: 0 18px 48px rgba(20, 20, 28, .16), 0 4px 12px rgba(20, 20, 28, .08);--scrim: rgba(18, 18, 24, .38);--ring: 0 0 0 3px rgba(51, 85, 216, .22)}[data-theme=dark]{color-scheme:dark;--bg: #0d0d10;--surface: #141418;--surface-2: #101013;--hover: #1b1b21;--sidebar: #101013;--border: #26262d;--border-strong: #37373f;--text: #ededf0;--text-2: #a6a6b1;--text-3: #83838f;--accent: #8ea3f7;--accent-hover: #a8b8fa;--accent-soft: rgba(142, 163, 247, .13);--accent-text: #a8b8fa;--ink: #ededf0;--ink-hover: #ffffff;--ink-text: #101013;--ok: #55c79a;--ok-soft: rgba(85, 199, 154, .13);--warn: #e6b450;--warn-soft: rgba(230, 180, 80, .13);--bad: #f28479;--bad-soft: rgba(242, 132, 121, .13);--neutral: #a0a5b5;--neutral-soft: rgba(160, 165, 181, .12);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 6px 18px rgba(0, 0, 0, .45);--shadow-lg: 0 22px 56px rgba(0, 0, 0, .6);--scrim: rgba(0, 0, 0, .62);--ring: 0 0 0 3px rgba(142, 163, 247, .28)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);font-size:14px;line-height:1.5;letter-spacing:-.006em;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow:hidden}h1,h2,h3,h4{font-weight:600;letter-spacing:-.02em;line-height:1.25}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;letter-spacing:inherit}button:disabled{cursor:not-allowed}a{color:var(--accent-text);text-decoration:none}a:hover{text-decoration:underline}::selection{background:var(--accent-soft);color:var(--text)}:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--r-sm)}.mono,.num{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.num{font-family:var(--font);font-variant-numeric:tabular-nums}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:10px;border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:var(--text-3);background-clip:content-box;border:3px solid transparent}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 14px;border-radius:var(--r);font-size:13.5px;font-weight:500;white-space:nowrap;border:1px solid transparent;transition:background var(--t),border-color var(--t),color var(--t),box-shadow var(--t)}.btn:focus-visible{box-shadow:var(--ring)}.btn-primary{background:var(--ink);color:var(--ink-text)}.btn-primary:hover:not(:disabled){background:var(--ink-hover)}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled){background:var(--hover)}.btn-ghost{color:var(--text-2)}.btn-ghost:hover:not(:disabled){background:var(--hover);color:var(--text)}.btn-danger{background:var(--surface);color:var(--bad);border-color:var(--border-strong)}.btn-danger:hover:not(:disabled){background:var(--bad-soft);border-color:var(--bad)}.btn-sm{height:28px;padding:0 10px;font-size:13px;border-radius:var(--r-sm)}.btn-icon{width:34px;padding:0}.btn-icon.btn-sm{width:28px}.btn:disabled{opacity:.5}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>label,.label{font-size:13px;font-weight:500;color:var(--text-2)}.hint{font-size:12.5px;color:var(--text-3)}.input,.textarea,.select{width:100%;font:inherit;font-size:14px;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r);padding:0 12px;height:36px;outline:none;transition:border-color var(--t),box-shadow var(--t)}.input::placeholder,.textarea::placeholder{color:var(--text-3)}.input:hover,.textarea:hover,.select:hover{border-color:var(--text-3)}.input:focus,.textarea:focus,.select:focus{border-color:var(--accent);box-shadow:var(--ring)}.textarea{height:auto;padding:9px 12px;line-height:1.55;resize:vertical;min-height:84px}.select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:32px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none' stroke='%2371717d' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4.5l3 3 3-3'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center}.select-sm{height:30px;font-size:13px;padding-left:10px}.select option{background:var(--surface);color:var(--text)}input[type=date]{font-family:var(--font);font-variant-numeric:tabular-nums}input[type=date]::-webkit-calendar-picker-indicator{opacity:.55;cursor:pointer}[data-theme=dark] input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1)}input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:16px;height:16px;flex-shrink:0;cursor:pointer;border:1.5px solid var(--border-strong);border-radius:4px;background:var(--surface);position:relative;transition:background var(--t),border-color var(--t)}input[type=checkbox]:hover{border-color:var(--text-3)}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{content:"";position:absolute;left:4.5px;top:1.5px;width:4px;height:8px;border:solid #fff;border-width:0 1.8px 1.8px 0;transform:rotate(45deg)}input[type=range]{accent-color:var(--accent);width:100%;cursor:pointer}.badge{--tone: var(--neutral);--tone-soft: var(--neutral-soft);display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border-radius:999px;font-size:12.5px;font-weight:500;white-space:nowrap;color:var(--tone);background:var(--tone-soft)}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}button.badge{transition:filter var(--t)}button.badge:hover{filter:brightness(.96)}[data-theme=dark] button.badge:hover{filter:brightness(1.15)}.tone-ok{--tone: var(--ok);--tone-soft: var(--ok-soft)}.tone-warn{--tone: var(--warn);--tone-soft: var(--warn-soft)}.tone-bad{--tone: var(--bad);--tone-soft: var(--bad-soft)}.tone-accent{--tone: var(--accent-text);--tone-soft: var(--accent-soft)}.tone-neutral{--tone: var(--neutral);--tone-soft: var(--neutral-soft)}.pri{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:500;color:var(--tone, var(--text-2))}.pri:before{content:"";width:7px;height:7px;border-radius:2px;background:currentColor}.tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:5px;font-size:12px;font-weight:500;background:color-mix(in srgb,var(--c) 14%,transparent);color:color-mix(in srgb,var(--c) 78%,var(--text))}.avatar{--h: 220;--s: 24px;width:var(--s);height:var(--s);border-radius:50%;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;font-size:max(10px,calc(var(--s) * .4));font-weight:600;letter-spacing:0;line-height:1;background:hsl(var(--h) 42% 90%);color:hsl(var(--h) 55% 26%);box-shadow:0 0 0 2px var(--surface)}[data-theme=dark] .avatar{background:hsl(var(--h) 28% 25%);color:hsl(var(--h) 65% 84%)}.avatar-sm{--s: 24px}.avatar-md{--s: 28px}.avatar-lg{--s: 36px}.avatar-xl{--s: 44px}.avatar-stack{display:inline-flex}.avatar-stack .avatar+.avatar{margin-left:-6px}.avatar-more{background:var(--surface-2);color:var(--text-2);font-size:11px}.anchor{position:relative;display:inline-flex}.anchor-block{position:relative;display:block}.menu{position:absolute;top:calc(100% + 6px);left:0;z-index:300;min-width:200px;max-width:320px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:5px;animation:pop .12s var(--ease)}.menu-right{left:auto;right:0}.menu-up{top:auto;bottom:calc(100% + 6px)}.menu-scroll{max-height:280px;overflow-y:auto}.menu-label{padding:8px 10px 4px;font-size:12px;font-weight:500;color:var(--text-3)}.menu-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 10px;border-radius:var(--r-sm);font-size:13.5px;color:var(--text)}.menu-item:hover,.menu-item:focus-visible{background:var(--hover)}.menu-item .grow{flex:1;min-width:0}.menu-item .desc{display:block;font-size:12.5px;color:var(--text-3);margin-top:1px}.menu-check{color:var(--accent);margin-left:auto;flex-shrink:0}.menu-sep{height:1px;background:var(--border);margin:5px -5px}.menu-search{padding:4px 4px 6px}@keyframes pop{0%{opacity:0;transform:translateY(-3px) scale(.985)}to{opacity:1;transform:none}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;background:var(--scrim);display:flex;align-items:center;justify-content:center;padding:24px;animation:fade .14s var(--ease)}.modal{width:100%;max-width:520px;max-height:calc(100vh - 48px);display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);animation:rise .18s var(--ease)}.modal-wide{max-width:640px}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 24px 4px}.modal-head h2{font-size:17px}.modal-head p{font-size:13.5px;color:var(--text-2);margin-top:3px}.modal-body{padding:16px 24px 8px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.modal-foot{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:16px 24px 20px}.modal-foot .spacer{margin-right:auto}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.notice{padding:10px 12px;border-radius:var(--r);font-size:13.5px;line-height:1.5;background:var(--neutral-soft);color:var(--text-2)}.notice-bad{background:var(--bad-soft);color:var(--bad)}.notice-warn{background:var(--warn-soft);color:var(--warn)}.notice-ok{background:var(--ok-soft);color:var(--ok)}.swatches{display:flex;gap:6px;flex-wrap:wrap}.swatch{width:22px;height:22px;border-radius:50%;background:var(--c);box-shadow:inset 0 0 0 1px #0000001f;transition:transform var(--t)}.swatch:hover{transform:scale(1.1)}.swatch[aria-pressed=true]{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--c)}.toasts{position:fixed;bottom:20px;left:50%;transform:translate(-50%);z-index:600;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:12px;max-width:460px;padding:10px 14px;border-radius:var(--r);font-size:13.5px;background:var(--ink);color:var(--ink-text);box-shadow:var(--shadow-lg);animation:rise .18s var(--ease)}.toast-bad{background:var(--bad);color:#fff}.toast button{color:inherit;opacity:.7;font-size:13px}.toast button:hover{opacity:1}.app{display:grid;height:100vh;overflow:hidden;grid-template-columns:var(--sidebar-w) minmax(0,1fr);grid-template-rows:var(--topbar-h) minmax(0,1fr)}.topbar{grid-column:1 / -1;display:flex;align-items:center;gap:16px;z-index:60;background:var(--surface);border-bottom:1px solid var(--border);padding-right:20px}.brand{width:var(--sidebar-w);height:100%;display:flex;align-items:center;gap:11px;padding:0 20px;flex-shrink:0;border-right:1px solid var(--border);background:var(--sidebar)}.brand-mark{width:26px;height:26px;border-radius:7px;background:var(--ink);color:var(--ink-text);display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:700;letter-spacing:.02em}.brand-name{font-size:14.5px;font-weight:600;letter-spacing:-.02em}.brand-sub{font-size:13px;color:var(--text-3);font-weight:400;margin-left:2px}.search{display:flex;align-items:center;gap:8px;width:min(420px,100%);height:36px;padding:0 12px;background:var(--surface-2);border:1px solid transparent;border-radius:var(--r);color:var(--text-3);transition:border-color var(--t),background var(--t),box-shadow var(--t)}[data-theme=dark] .search{background:var(--hover)}.search:hover{border-color:var(--border-strong)}.search:focus-within{background:var(--surface);border-color:var(--accent);box-shadow:var(--ring);color:var(--text-2)}.search input{flex:1;min-width:0;background:none;border:none;outline:none;font:inherit;font-size:14px;color:var(--text)}.search input::placeholder{color:var(--text-3)}.topbar-mid{flex:1;display:flex}.topbar-right{display:flex;align-items:center;gap:8px}.user-btn{display:flex;align-items:center;gap:9px;padding:4px 10px 4px 4px;border-radius:999px;transition:background var(--t)}.user-btn:hover{background:var(--hover)}.user-btn .avatar{box-shadow:none}.user-name{font-size:13.5px;font-weight:500}.user-card{padding:10px 10px 8px}.user-card .who{font-weight:600;font-size:14px}.user-card .sub{font-size:12.5px;color:var(--text-3);margin-top:1px;overflow:hidden;text-overflow:ellipsis}.theme-toggle{width:32px;height:32px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-sm);color:var(--text-2);transition:background var(--t),color var(--t)}.theme-toggle:hover{background:var(--hover);color:var(--text)}.theme-toggle svg{animation:theme-swap .24s var(--ease)}@keyframes theme-swap{0%{opacity:0;transform:rotate(-60deg) scale(.6)}to{opacity:1;transform:none}}.segmented{display:flex;padding:3px;gap:2px;background:var(--surface-2);border-radius:var(--r);margin:2px 4px 4px}.segmented button{flex:1;height:28px;border-radius:6px;font-size:13px;font-weight:500;color:var(--text-2)}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.sidebar{background:var(--sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;padding:16px 12px 20px}.nav-label{font-size:12px;font-weight:500;color:var(--text-3);padding:4px 10px 6px;display:flex;align-items:center;justify-content:space-between}.nav-item{display:flex;align-items:center;width:100%;height:34px;padding:0 10px;border-radius:var(--r);font-size:14px;font-weight:450;color:var(--text-2);text-align:left;transition:background var(--t),color var(--t)}.nav-item:hover{background:var(--hover);color:var(--text)}.nav-item[aria-current=page]{background:var(--accent-soft);color:var(--accent-text);font-weight:550}.nav-count{margin-left:auto;font-size:12.5px;color:var(--text-3);font-variant-numeric:tabular-nums}.nav-item[aria-current=page] .nav-count{color:var(--accent-text)}.nav-gap{height:20px}.proj-search{margin:0 2px 8px}.proj-search .input{height:32px;font-size:13.5px;background:var(--surface)}.proj-item{display:flex;align-items:center;gap:10px;width:100%;height:34px;padding:0 10px;border-radius:var(--r);font-size:14px;color:var(--text-2);text-align:left;transition:background var(--t),color var(--t)}.proj-item:hover{background:var(--hover);color:var(--text)}.proj-item[aria-current=true]{background:var(--hover);color:var(--text);font-weight:550}.proj-item .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--tone, var(--neutral))}.sidebar-empty{padding:8px 10px;font-size:13px;color:var(--text-3)}.new-project{margin-top:8px}.main{overflow-y:auto;overflow-x:hidden;background:var(--bg);min-width:0}.page{padding:28px 32px 56px;max-width:1680px;margin:0 auto}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:20px;flex-wrap:wrap}.page-title{font-size:24px;letter-spacing:-.03em}.page-sub{color:var(--text-2);font-size:14px;margin-top:4px}.page-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.crumb{font-size:13px;color:var(--text-3);margin-bottom:6px}.project-meta{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:10px;font-size:13.5px;color:var(--text-2)}.project-meta .sep{width:1px;height:14px;background:var(--border-strong)}.project-meta b{color:var(--text);font-weight:550}.project-swatch{display:inline-block;width:12px;height:12px;border-radius:4px;background:var(--c);margin-right:10px;vertical-align:1px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin:22px 0 20px;overflow-x:auto}.tab{position:relative;height:40px;padding:0 12px;font-size:14px;font-weight:500;color:var(--text-2);white-space:nowrap;transition:color var(--t)}.tab:hover,.tab[aria-selected=true]{color:var(--text)}.tab[aria-selected=true]:after{content:"";position:absolute;left:8px;right:8px;bottom:-1px;height:2px;background:var(--ink);border-radius:2px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);min-width:0}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border)}.card-title{font-size:14px;font-weight:600;letter-spacing:-.01em}.card-body{padding:16px 18px}.card-body-flush{padding:0}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:4px}.stat{padding:16px 18px}.stat-label{font-size:13px;color:var(--text-2);font-weight:500}.stat-value{font-size:30px;font-weight:600;letter-spacing:-.035em;line-height:1.1;margin-top:8px;font-variant-numeric:tabular-nums}.stat-note{font-size:13px;color:var(--text-3);margin-top:4px}.stat-value.bad{color:var(--bad)}.progress{height:6px;background:var(--surface-2);border-radius:6px;overflow:hidden;border:1px solid var(--border)}[data-theme=dark] .progress{background:var(--hover)}.progress>i{display:block;height:100%;background:var(--accent);border-radius:6px;transition:width .3s var(--ease)}.progress.ok>i{background:var(--ok)}.progress.thin{height:4px;border:none}.stacked{display:flex;height:8px;border-radius:8px;overflow:hidden;gap:2px;background:var(--surface-2)}.stacked>i{display:block;height:100%;min-width:3px}.filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:16px}.chip{height:28px;padding:0 11px;border-radius:999px;font-size:13px;font-weight:500;color:var(--text-2);border:1px solid var(--border-strong);background:var(--surface);transition:all var(--t)}.chip:hover{background:var(--hover);color:var(--text)}.chip[aria-pressed=true]{background:var(--ink);color:var(--ink-text);border-color:var(--ink)}.chip-label{border-color:var(--c)}.chip-label[aria-pressed=true]{background:var(--c);border-color:var(--c);color:#fff}.chip-ghost{border-style:dashed;background:transparent}.board{display:flex;gap:14px;overflow-x:auto;padding-bottom:12px;align-items:flex-start;min-height:420px}.column{flex:0 0 276px;display:flex;flex-direction:column;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-lg);transition:background var(--t),border-color var(--t);max-height:calc(100vh - 300px);min-height:160px}.column.over{border-color:var(--accent);background:var(--accent-soft)}.column-head{display:flex;align-items:center;gap:9px;padding:12px 14px 8px}.column-title{font-size:13.5px;font-weight:600;flex:1}.column-count{font-size:12.5px;color:var(--text-3);font-variant-numeric:tabular-nums}.column-dot{width:8px;height:8px;border-radius:50%;background:var(--c)}.cards{display:flex;flex-direction:column;gap:8px;padding:6px 10px 10px;overflow-y:auto;flex:1;min-height:40px}.column-empty{font-size:13px;color:var(--text-3);text-align:center;padding:18px 0 10px}.task-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:12px 13px 11px;box-shadow:var(--shadow-sm);cursor:grab;-webkit-user-select:none;user-select:none;text-align:left;width:100%;transition:border-color var(--t),box-shadow var(--t),transform var(--t)}.task-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.task-card[aria-selected=true]{border-color:var(--accent);box-shadow:var(--ring)}.task-card.drop-before{box-shadow:0 -2px 0 var(--accent)}.task-card.readonly{cursor:pointer}.task-card:active:not(.readonly){cursor:grabbing}.task-id{font-family:var(--mono);font-size:11.5px;color:var(--text-3)}.task-title{font-size:14px;font-weight:500;line-height:1.4;margin:3px 0 9px;color:var(--text);overflow-wrap:anywhere}.task-tags{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:9px}.task-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.task-due{font-size:12.5px;color:var(--text-2);font-variant-numeric:tabular-nums}.task-due.overdue{color:var(--bad);font-weight:500}.task-foot{display:flex;align-items:center;justify-content:space-between;margin-top:10px;padding-top:9px;border-top:1px solid var(--border);min-height:34px}.task-comments{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--text-3)}.task-progress{margin-top:9px}.add-task{margin:0 10px 10px;height:34px;border-radius:var(--r);font-size:13.5px;color:var(--text-2);display:flex;align-items:center;gap:6px;padding:0 8px;transition:background var(--t),color var(--t)}.add-task:hover{background:var(--hover);color:var(--text)}.quick-add{margin:0 10px 10px;display:flex;flex-direction:column;gap:8px}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table th{text-align:left;white-space:nowrap;padding:10px 16px;font-size:12.5px;font-weight:500;color:var(--text-2);background:var(--surface-2);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none}.table th.sortable{cursor:pointer}.table th.sortable:hover{color:var(--text)}.table td{padding:12px 16px;border-bottom:1px solid var(--border);font-size:14px;vertical-align:middle}.table tbody tr{transition:background var(--t)}.table tbody tr.click{cursor:pointer}.table tbody tr.click:hover td{background:var(--hover)}.table tbody tr:last-child td{border-bottom:none}.table tr.done td{color:var(--text-3)}.table .cell-title{font-weight:500}.table .cell-sub{font-size:12.5px;color:var(--text-3);margin-top:1px}.sort-ind{margin-left:4px;color:var(--accent)}.empty-row{text-align:center;color:var(--text-3);padding:44px 16px!important}.inline-edit{height:30px;font-size:14px}.tl{--label-w: 260px;overflow-x:auto}.tl-inner{min-width:860px;position:relative}.tl-head,.tl-row{display:grid;grid-template-columns:var(--label-w) 1fr}.tl-head{background:var(--surface-2);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:2}.tl-corner{padding:10px 16px;font-size:12.5px;font-weight:500;color:var(--text-2)}.tl-weeks{display:flex}.tl-week{flex:1;padding:10px 0 10px 10px;font-size:12.5px;color:var(--text-2);border-left:1px solid var(--border);font-variant-numeric:tabular-nums}.tl-row{border-bottom:1px solid var(--border);cursor:pointer;transition:background var(--t)}.tl-row:hover{background:var(--hover)}.tl-row:last-child{border-bottom:none}.tl-label{padding:10px 16px;display:flex;align-items:center;gap:10px;min-width:0}.tl-label .t{font-size:13.5px;font-weight:500;min-width:0}.tl-track{position:relative;height:46px}.tl-grid{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;pointer-events:none}.tl-grid i{flex:1;border-left:1px solid var(--border)}.tl-today{position:absolute;top:0;bottom:0;width:2px;background:var(--bad);opacity:.55;z-index:1;pointer-events:none}.tl-bar{position:absolute;top:12px;height:22px;border-radius:6px;background:var(--c);overflow:hidden;display:flex;align-items:center;padding:0 8px;font-size:12px;font-weight:500;color:#fff;z-index:1}.tl-bar .fill{position:absolute;inset:0 auto 0 0;background:#ffffff38}.tl-bar span{position:relative}.tl-foot{padding:12px 16px;border-top:1px solid var(--border);font-size:13px;color:var(--text-3);display:flex;align-items:center;justify-content:space-between;gap:12px}.drawer{position:fixed;top:var(--topbar-h);right:0;bottom:0;width:720px;max-width:100vw;z-index:50;display:flex;flex-direction:column;background:var(--surface);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);transform:translate(102%);transition:transform .22s var(--ease);visibility:hidden}.drawer.open{transform:none;visibility:visible}.drawer-head{display:flex;align-items:center;gap:10px;padding:12px 16px 12px 24px;border-bottom:1px solid var(--border);flex-shrink:0}.drawer-body{flex:1;overflow-y:auto;padding:20px 24px 28px;display:flex;flex-direction:column;gap:26px}.drawer-foot{flex-shrink:0;display:flex;align-items:center;gap:10px;padding:14px 24px;border-top:1px solid var(--border);background:var(--surface)}.drawer-foot .state{font-size:13px;color:var(--text-3);margin-right:auto}.drawer-foot .state.dirty{color:var(--warn)}.drawer-foot .state.ok{color:var(--ok)}.title-input{width:100%;font:inherit;font-size:20px;font-weight:600;letter-spacing:-.025em;color:var(--text);background:transparent;border:1px solid transparent;border-radius:var(--r);padding:6px 8px;margin:-6px -8px;outline:none;transition:border-color var(--t),background var(--t)}.title-input:hover{background:var(--hover)}.title-input:focus{background:var(--surface);border-color:var(--accent);box-shadow:var(--ring)}.section-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:10px;display:flex;align-items:center;justify-content:space-between}.section-title .count{font-weight:400;color:var(--text-3)}.props{display:flex;flex-direction:column}.prop{display:grid;grid-template-columns:116px 1fr;align-items:center;min-height:40px;border-bottom:1px solid var(--border);gap:8px}.prop:last-child{border-bottom:none}.prop-label{font-size:13.5px;color:var(--text-2)}.prop-value{min-width:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.prop-value .select,.prop-value .input{border-color:transparent;background-color:transparent;height:32px;padding-left:8px;margin-left:-8px;width:auto;min-width:150px}.prop-value .select:hover,.prop-value .input:hover{background-color:var(--hover);border-color:transparent}.prop-value .select:focus,.prop-value .input:focus{background-color:var(--surface);border-color:var(--accent)}.prop-value .select{background-position:right 9px center}.range-line{display:flex;align-items:center;gap:12px;width:100%}.range-line .num{min-width:38px;text-align:right;font-size:13.5px}.checklist-row{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:14px}.checklist-row.done span{color:var(--text-3);text-decoration:line-through}.add-line{display:flex;gap:8px;margin-top:10px}.comment{display:flex;gap:12px;margin-bottom:16px}.comment-body{flex:1;min-width:0}.comment-meta{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-3);margin-bottom:3px}.comment-meta b{color:var(--text);font-weight:550}.comment-text{font-size:14px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}.hover-action{margin-left:auto;font-size:12.5px;color:var(--text-3);opacity:0;transition:opacity var(--t)}.comment:hover .hover-action,.checklist-row:hover .hover-action,.hover-action:focus-visible{opacity:1}.hover-action:hover{color:var(--bad)}.task-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:var(--scrim);animation:fade .14s var(--ease)}.drawer.expanded{z-index:71;top:24px;bottom:24px;right:50%;transform:translate(50%);width:min(1120px,calc(100vw - 48px));border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;transition:none;animation:rise .18s var(--ease)}.task-head{display:flex;align-items:center;gap:6px;flex-shrink:0;min-height:56px;padding:10px 12px 10px 20px;border-bottom:1px solid var(--border);background:var(--surface)}.complete-btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 11px;flex-shrink:0;border:1px solid var(--border-strong);border-radius:var(--r-sm);font-size:13px;font-weight:500;color:var(--text-2);transition:background var(--t),border-color var(--t),color var(--t)}.complete-btn:hover:not(:disabled){border-color:var(--ok);color:var(--ok);background:var(--ok-soft)}.complete-btn.done{background:var(--ok-soft);border-color:var(--ok);color:var(--ok)}.complete-btn:disabled{opacity:.55}.task-head-title{flex:1;min-width:0;display:flex;align-items:baseline;gap:8px;margin:0 6px;font-size:14px;font-weight:550}.task-head-title .mono{font-size:12px;flex-shrink:0}.drawer:not(.expanded) .task-head-title .mono{display:none}.head-chip{display:inline-flex;align-items:center;gap:7px;height:30px;max-width:170px;padding:0 9px;flex-shrink:0;border:1px solid var(--border);border-radius:var(--r-sm);font-size:13px;color:var(--text);white-space:nowrap;transition:background var(--t),border-color var(--t)}.head-chip:hover:not(:disabled){background:var(--hover);border-color:var(--border-strong)}.head-chip.muted{color:var(--text-3)}.head-chip.bad,.field-btn.bad{color:var(--bad)}.head-chip.ok,.field-btn.ok{color:var(--ok)}.head-chip .avatar{box-shadow:0 0 0 1.5px var(--surface);--s: 20px;font-size:9px}.ghost-avatar{width:20px;height:20px;border-radius:50%;border:1px dashed var(--text-3);display:inline-flex;align-items:center;justify-content:center}.head-sep{width:1px;height:20px;background:var(--border);margin:0 4px;flex-shrink:0}.icon-count{position:relative}.count-dot{position:absolute;top:-2px;right:-3px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--ink);color:var(--ink-text);font-size:10px;font-weight:600;display:flex;align-items:center;justify-content:center}.task-banner{flex-shrink:0;padding:7px 20px;font-size:13px;font-weight:500;color:var(--ok);background:var(--ok-soft);border-bottom:1px solid var(--border)}.task-scroll{flex:1;overflow-y:auto}.task-body{padding:18px 28px 32px;max-width:880px;margin:0 auto}.drawer.expanded .task-body{padding:26px 48px 40px}.task-crumb{display:flex;align-items:center;gap:8px;min-height:20px;font-size:13px;color:var(--text-3);margin-bottom:6px}.task-save{margin-left:auto;font-size:12.5px}.task-save.ok{color:var(--ok)}.task-title-input{display:block;width:calc(100% + 16px);font:inherit;font-size:24px;font-weight:600;letter-spacing:-.03em;line-height:1.3;color:var(--text);background:transparent;border:1px solid transparent;border-radius:var(--r);padding:4px 8px;margin:0 -8px 16px;outline:none;resize:none;overflow:hidden;transition:border-color var(--t),background var(--t)}.task-title-input:hover:not(:disabled){border-color:var(--border-strong)}.task-title-input:focus{background:var(--surface);border-color:var(--accent);box-shadow:var(--ring)}.task-title-input:disabled{cursor:default}.task-props{margin-bottom:26px}.task-props .prop{border-bottom:none;min-height:38px;grid-template-columns:128px 1fr}.task-props .prop-label{color:var(--text-3)}.field-btn{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 8px;margin-left:-8px;border-radius:var(--r-sm);font-size:14px;color:var(--text);transition:background var(--t)}.field-btn:hover:not(:disabled){background:var(--hover)}.field-btn.faint{color:var(--text-3)}.task-props .status-dot{margin-right:-2px}.pri-sq{width:8px;height:8px;border-radius:2px;background:var(--tone);flex-shrink:0;margin-right:-2px}.project-pill{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;padding:3px 9px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border)}.project-pill i{width:9px;height:9px;border-radius:3px;background:var(--c)}.task-section{margin-bottom:26px}.task-section-title{font-size:15px;font-weight:600;letter-spacing:-.015em;margin-bottom:10px;display:flex;align-items:center;gap:8px}.task-section-title .count{font-size:13px;font-weight:400;color:var(--text-3)}.task-desc{margin:0 -10px}.file-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;border-radius:var(--r-lg);transition:background var(--t)}.file-grid.over{background:var(--accent-soft)}.file-tile{position:relative;border:1px solid var(--border);border-radius:var(--r);overflow:hidden;background:var(--surface);transition:box-shadow var(--t),border-color var(--t)}.file-tile:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.file-thumb{display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;width:100%;height:96px;background:var(--surface-2);overflow:hidden;font-size:12.5px;color:var(--text-3)}.file-thumb img{width:100%;height:100%;object-fit:cover}.file-meta{padding:7px 10px 8px;min-width:0}.file-name{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-sub{font-size:12px;color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-remove{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--surface);color:var(--text-2);box-shadow:var(--shadow-md);opacity:0;transition:opacity var(--t)}.file-tile:hover .file-remove,.file-remove:focus-visible{opacity:1}.file-remove:hover{color:var(--bad)}.file-kind{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:18px;padding:0 4px;border-radius:4px;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.02em;color:var(--text-2);background:var(--surface-2);border:1px solid var(--border)}.file-kind.big{min-width:48px;height:30px;font-size:12px;border-radius:6px;background:var(--surface)}.file-kind.k-pdf{color:var(--bad)}.file-kind.k-xls{color:var(--ok)}.file-kind.k-doc,.file-kind.k-img{color:var(--accent-text)}.file-kind.k-ppt{color:var(--warn)}.file-drop{min-height:140px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:10px;border:1.5px dashed var(--border-strong);border-radius:var(--r);color:var(--text-3);font-size:12.5px;text-align:center;transition:border-color var(--t),color var(--t),background var(--t)}.file-drop b{color:var(--text-2);font-weight:550;font-size:13px}.file-drop:hover,.file-grid.over .file-drop{border-color:var(--accent);color:var(--accent-text);background:var(--accent-soft)}.bad-text{color:var(--bad)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500;background:#000000d1;padding:24px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;animation:fade .14s var(--ease)}.lightbox img{max-width:100%;max-height:calc(100vh - 110px);border-radius:var(--r);box-shadow:var(--shadow-lg)}.lightbox-bar{display:flex;align-items:center;gap:8px;max-width:100%;color:#fff;font-size:13.5px}.feed-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:14px}.feed-tabs button{position:relative;height:36px;padding:0 10px;font-size:13.5px;font-weight:500;color:var(--text-2)}.feed-tabs button:hover,.feed-tabs button[aria-selected=true]{color:var(--text)}.feed-tabs button[aria-selected=true]:after{content:"";position:absolute;left:6px;right:6px;bottom:-1px;height:2px;background:var(--ink);border-radius:2px}.feed-tabs .count{color:var(--text-3);font-weight:400}.task-feed .comment-text{white-space:normal}.activity-line{display:flex;align-items:baseline;gap:10px;padding:5px 0 5px 10px;font-size:13px;color:var(--text-2)}.activity-line b{color:var(--text);font-weight:550}.activity-line .grow{flex:1;min-width:0}.activity-line .faint{font-size:12.5px;white-space:nowrap}.activity-dot{width:6px;height:6px;border-radius:50%;background:var(--border-strong);flex-shrink:0;transform:translateY(-1px)}.task-composer{flex-shrink:0;display:flex;gap:12px;align-items:flex-start;padding:12px 20px 14px;border-top:1px solid var(--border);background:var(--surface-2)}.task-composer>.avatar{margin-top:6px}.task-composer.readonly{justify-content:center;font-size:13px;color:var(--text-3)}.task-composer.over{background:var(--accent-soft)}.composer-main{flex:1;min-width:0}.composer-editor{background:var(--surface);border-color:var(--border-strong)}.composer-files{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.file-chip{display:inline-flex;align-items:center;gap:6px;height:26px;max-width:260px;padding:0 6px 0 8px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);font-size:12.5px;color:var(--text-2)}.file-chip.bad{color:var(--bad);border-color:var(--bad)}.file-chip button{display:inline-flex;padding:2px;border-radius:4px;color:var(--text-3)}.file-chip button:hover{background:var(--hover);color:var(--text)}.comment-files{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.file-tile.compact{width:148px}.file-tile.compact .file-thumb{height:84px}.rt-content{font-size:14px;line-height:1.6;color:var(--text);overflow-wrap:anywhere}.rt-content ul,.rt-content ol{padding-left:22px;margin:2px 0}.rt-content li{margin:1px 0}.rt-content a{color:var(--accent-text);text-decoration:underline;text-underline-offset:2px}.rt-content code{font-family:var(--mono);font-size:12.5px;background:var(--surface-2);border:1px solid var(--border);border-radius:4px;padding:0 4px}.rt-editor{border:1px solid transparent;border-radius:var(--r);transition:border-color var(--t),box-shadow var(--t),background var(--t)}.rt-editor:hover:not(.disabled){border-color:var(--border-strong)}.rt-editor.focused{border-color:var(--accent);box-shadow:var(--ring);background:var(--surface)}.rt-input{outline:none;padding:8px 10px;cursor:text}.rt-editor.disabled .rt-input{cursor:default}.rt-input:empty:before{content:attr(data-placeholder);color:var(--text-3);pointer-events:none}.rt-input:focus-visible{box-shadow:none}.rt-toolbar{display:flex;align-items:center;gap:2px;flex-wrap:wrap;padding:4px 6px;border-top:1px solid var(--border)}.rt-btn{min-width:28px;height:26px;padding:0 6px;border-radius:var(--r-sm);color:var(--text-2);font-size:13px;display:inline-flex;align-items:center;justify-content:center;transition:background var(--t),color var(--t)}.rt-btn:hover{background:var(--hover);color:var(--text)}.rt-btn.active{background:var(--accent-soft);color:var(--accent-text)}.rt-sep{width:1px;height:16px;background:var(--border);margin:0 4px}.rt-field{border-color:var(--border-strong);background:var(--surface)}.rt-footer{margin-left:auto;display:flex;align-items:center;gap:6px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid-3-1{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:16px}.stack{display:flex;flex-direction:column;gap:16px}.list-row{display:flex;align-items:center;gap:12px;padding:11px 18px;border-bottom:1px solid var(--border);min-width:0}.list-row:last-child{border-bottom:none}button.list-row{width:100%;text-align:left;transition:background var(--t)}button.list-row:hover{background:var(--hover)}.list-row .grow{flex:1;min-width:0}.list-row .title{font-size:14px;font-weight:500}.list-row .sub{font-size:12.5px;color:var(--text-3);margin-top:1px}.kv{display:grid;grid-template-columns:110px 1fr;gap:10px 12px;font-size:14px}.kv dt{color:var(--text-2)}.legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:12px}.legend span{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--text-2)}.legend i{width:8px;height:8px;border-radius:2px;background:var(--c)}.bar-row{display:grid;grid-template-columns:170px 1fr 160px;gap:14px;align-items:center;padding:8px 0}.bar-row .num{white-space:nowrap}.bar-row .who{display:flex;align-items:center;gap:10px;min-width:0;font-size:14px}.feed-day{font-size:13px;font-weight:600;color:var(--text-2);padding:18px 18px 8px}.feed-day:first-child{padding-top:6px}.feed-item{display:flex;gap:14px;padding:11px 18px;align-items:flex-start}.feed-item+.feed-item{border-top:1px solid var(--border)}.feed-marker{width:8px;height:8px;border-radius:50%;margin-top:8px;flex-shrink:0;background:var(--tone, var(--text-3))}.feed-main{flex:1;min-width:0}.feed-text{font-size:14px;line-height:1.55}.feed-text b{font-weight:550}.feed-sub{font-size:13px;color:var(--text-3);margin-top:2px;overflow-wrap:anywhere}.feed-time{font-size:12.5px;color:var(--text-3);white-space:nowrap;margin-top:2px;font-variant-numeric:tabular-nums}.link-btn{color:var(--text);font-weight:550;text-align:left}.link-btn:hover{text-decoration:underline;text-underline-offset:2px}.person{display:flex;align-items:center;gap:12px;min-width:0}.person .n{font-weight:500;font-size:14px}.person .e{font-size:13px;color:var(--text-3)}.role-legend{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.role-legend div{padding:12px 14px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface)}.role-legend b{display:block;font-size:13.5px;font-weight:600;margin-bottom:3px}.role-legend span{font-size:13px;color:var(--text-2);line-height:1.45;display:block}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.toolbar .grow{flex:1}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:64px 24px;gap:6px}.empty h3{font-size:16px}.empty p{color:var(--text-2);max-width:380px;font-size:14px}.empty .btn{margin-top:14px}.spinner{width:22px;height:22px;border-radius:50%;border:2px solid var(--border-strong);border-top-color:var(--ink);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.center-fill{display:flex;align-items:center;justify-content:center;padding:56px}.boot{height:100vh;display:flex;flex-direction:column;gap:14px;align-items:center;justify-content:center;background:var(--bg);color:var(--text-2);font-size:14px}.auth-screen{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:24px}.auth-box{width:100%;max-width:400px;padding:40px 36px;text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-md)}.auth-box .brand-mark{width:44px;height:44px;border-radius:11px;font-size:16px;margin:0 auto 22px}.auth-box h2{font-size:20px;margin-bottom:8px}.auth-box p{color:var(--text-2);font-size:14px}.auth-box p.small{color:var(--text-3);font-size:13px;margin-top:10px}@media (max-width: 1100px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-2,.grid-3-1,.role-legend{grid-template-columns:1fr}.page{padding:22px 20px 48px}}@media (max-width: 820px){.app{grid-template-columns:1fr}.sidebar{display:none}.brand{width:auto;border-right:none;background:none}.drawer{width:100vw}.drawer.expanded{top:0;bottom:0;width:100vw;border-radius:0}.task-head{flex-wrap:wrap}.task-body,.drawer.expanded .task-body{padding:16px 18px 28px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.app.app-single{grid-template-columns:minmax(0,1fr)}.app-single .brand{width:auto;border-right:none;background:none}.page-narrow{max-width:880px}.step-list{display:flex;flex-direction:column}.step-row{display:flex;align-items:center;gap:12px;padding:12px 16px 12px 10px;border-bottom:1px solid var(--border);background:var(--surface);transition:background var(--t),box-shadow var(--t)}.step-row:first-child{border-top-left-radius:var(--r-lg);border-top-right-radius:var(--r-lg)}.step-row:last-child{border-bottom:none;border-bottom-left-radius:var(--r-lg);border-bottom-right-radius:var(--r-lg)}.step-row:hover{background:var(--hover)}.step-row.dragging{position:relative;z-index:2;box-shadow:var(--shadow-lg);border-radius:var(--r);background:var(--surface)}.step-handle{display:flex;align-items:center;justify-content:center;width:24px;height:32px;border-radius:var(--r-sm);color:var(--text-3);cursor:grab;touch-action:none;flex-shrink:0}.step-handle:hover{background:var(--hover);color:var(--text-2)}.step-handle:active{cursor:grabbing}.step-index{width:22px;text-align:right;font-size:12.5px;color:var(--text-3);flex-shrink:0}.step-main{flex:1;min-width:0}.step-title-line{display:flex;align-items:center;gap:8px;min-width:0}.step-title{font-size:14px;font-weight:500}.step-summary{font-size:13px;color:var(--text-3);margin-top:2px}.step-actions{display:flex;align-items:center;gap:2px;flex-shrink:0}.step-actions .btn-ghost.danger:hover:not(:disabled){color:var(--bad);background:var(--bad-soft)}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.choice{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;text-align:left;border:1px solid var(--border-strong);border-radius:var(--r);background:var(--surface);transition:border-color var(--t),background var(--t),box-shadow var(--t)}.choice:hover{background:var(--hover)}.choice[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.choice svg{margin-top:2px;color:var(--text-3)}.choice[aria-pressed=true] svg{color:var(--accent-text)}.choice b{display:block;font-size:13.5px;font-weight:550;color:var(--text)}.choice span{display:block;font-size:12.5px;color:var(--text-3);margin-top:1px}.field-error{font-size:12.5px;color:var(--bad)}.input.invalid,.textarea.invalid{border-color:var(--bad)}.file-current{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 12px;border:1px solid var(--border-strong);border-radius:var(--r);background:var(--surface-2)}.file-current a{flex:1;min-width:0;font-size:13.5px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-drop.invalid{border-color:var(--bad)}.file-drop{cursor:pointer;min-height:112px}.file-drop.busy{cursor:wait}.rte-area{position:relative}.rte-placeholder{position:absolute;top:8px;left:10px;color:var(--text-3);font-size:14px;line-height:1.6;pointer-events:none}.rte-input{min-height:96px;max-height:260px;overflow-y:auto;font-size:14px;line-height:1.6;color:var(--text)}.rte-input:focus-visible{box-shadow:none}.theme-toggle{color:var(--text-2)}
