.btn{--btn-bg:var(--surface-2);--btn-fg:var(--text);--btn-bd:var(--line-strong);border-radius:var(--r-sm);border:1px solid var(--btn-bd);background:var(--btn-bg);height:34px;color:var(--btn-fg);font:500 13px/1 var(--font);letter-spacing:-.005em;white-space:nowrap;cursor:pointer;box-shadow:0 1px 0 var(--highlight) inset;transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);justify-content:center;align-items:center;gap:7px;padding:0 13px;display:inline-flex}.btn:hover{--btn-bg:var(--surface-3);text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default;transform:none}.btn.sm{border-radius:7px;gap:6px;height:28px;padding:0 10px;font-size:12px}.btn.primary{--btn-bg:var(--accent);--btn-fg:var(--accent-ink);--btn-bd:transparent;box-shadow:0 0 0 0 var(--accent-soft), 0 1px 0 #ffffff59 inset;font-weight:600}.btn.primary:hover{--btn-bg:var(--accent-hover);box-shadow:0 0 0 4px var(--accent-soft), 0 1px 0 #ffffff59 inset}.btn.ghost{--btn-bg:transparent;--btn-bd:transparent;--btn-fg:var(--text-2);box-shadow:none}.btn.ghost:hover{--btn-bg:var(--surface-3);--btn-fg:var(--text)}.btn.danger{--btn-bg:transparent;--btn-fg:var(--danger);--btn-bd:color-mix(in oklab, var(--danger) 40%, transparent);box-shadow:none}.btn.danger:hover{--btn-bg:var(--danger-soft)}.btn.icon-only{width:34px;padding:0}.btn.icon-only.sm{width:28px}a.btn{text-decoration:none}.spinner{border:2px solid var(--line-strong);border-top-color:currentColor;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{border-radius:var(--r-xs);background:linear-gradient(90deg, var(--surface-2) 0%, var(--surface-3) 50%, var(--surface-2) 100%);background-size:200% 100%;animation:1.4s ease-in-out infinite shimmer;display:block}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.badge{--c:var(--text-2);border-radius:var(--r-pill);letter-spacing:.005em;height:22px;color:color-mix(in oklab, var(--c) 72%, var(--text));background:color-mix(in oklab, var(--c) 14%, transparent);border:1px solid color-mix(in oklab, var(--c) 30%, transparent);white-space:nowrap;align-items:center;gap:6px;padding:0 9px 0 7px;font-size:11.5px;font-weight:600;display:inline-flex}.badge-dot{background:var(--c);width:7px;height:7px;box-shadow:0 0 8px color-mix(in oklab, var(--c) 70%, transparent);border-radius:50%}.badge.solid{background:var(--c);color:#fff;border-color:#0000}.tag{border-radius:var(--r-xs);background:var(--surface-3);height:20px;color:var(--text-2);white-space:nowrap;align-items:center;padding:0 7px;font-size:11px;font-weight:500;display:inline-flex}.tag.accent{background:var(--accent-soft);color:var(--accent-text)}.tag.warn{background:var(--warn-soft);color:var(--warn)}.tag.danger{background:var(--danger-soft);color:var(--danger)}.tag.ok{background:var(--ok-soft);color:var(--ok)}.dot{border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.kbd{border:1px solid var(--line-strong);background:var(--surface-2);min-width:20px;height:20px;color:var(--text-2);font:600 10.5px/1 var(--font);border-bottom-width:2px;border-radius:5px;justify-content:center;align-items:center;padding:0 5px;display:inline-flex}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-4);box-shadow:0 1px 0 var(--highlight) inset;position:relative}.card.flush{padding:0;overflow:hidden}.card.interactive{cursor:pointer;transition:border-color var(--dur) var(--ease), transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease)}.card.interactive:before{content:"";border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(260px circle at var(--mx,50%) var(--my,0%), var(--accent-soft), transparent 70%);transition:opacity var(--dur) var(--ease);position:absolute;inset:0}.card.interactive:hover{border-color:var(--line-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}.card.interactive:hover:before{opacity:1}.card.selected{border-color:var(--accent-line);box-shadow:0 0 0 1px var(--accent-line), 0 0 28px -8px var(--accent)}.input,.select,.textarea{border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--surface-2);width:100%;height:34px;color:var(--text);font:400 13px/1.4 var(--font);transition:border-color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);padding:0 11px}.textarea{resize:vertical;height:auto;min-height:84px;padding:9px 11px}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238b93a7' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding-right:30px}.input::placeholder,.textarea::placeholder{color:var(--text-3)}.input:hover,.select:hover,.textarea:hover{border-color:var(--text-3)}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);background:var(--surface)}.input-wrap{align-items:center;display:flex;position:relative}.input-wrap .input-icon{color:var(--text-3);pointer-events:none;position:absolute;left:11px}.input.has-icon{padding-left:34px}.input-trailing{pointer-events:none;align-items:center;gap:4px;display:flex;position:absolute;right:8px}input[type=checkbox],input[type=radio]{accent-color:var(--accent);width:15px;height:15px;margin:0}.color-input{border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface-2);cursor:pointer;width:40px;height:34px;padding:3px}.field{flex-direction:column;gap:6px;display:flex}.field>label{color:var(--text-2);font-size:12px;font-weight:500}.field .hint{color:var(--text-3);font-size:11.5px}.modal-backdrop{z-index:100;background:var(--overlay);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fade var(--dur) var(--ease);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--r-lg);width:min(560px,100%);max-height:min(88vh,900px);box-shadow:var(--shadow-lg);animation:pop var(--dur) var(--ease);flex-direction:column;display:flex}.modal.wide{width:min(980px,100%)}.modal-header{justify-content:space-between;align-items:center;padding:16px 18px 12px 22px;display:flex}.modal-body{gap:var(--sp-3);flex-direction:column;padding:4px 22px 22px;display:flex;overflow:auto}.modal-footer{justify-content:flex-end;gap:var(--sp-2);border-top:1px solid var(--line);padding:14px 22px;display:flex}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(10px)scale(.98)}}.toasts{z-index:200;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast{border-radius:var(--r-pill);background:var(--surface-3);border:1px solid var(--line-strong);box-shadow:var(--shadow-lg);animation:toast-in var(--dur) var(--ease);align-items:center;gap:9px;padding:10px 16px;font-size:13px;font-weight:500;display:flex}.toast.ok svg{color:var(--ok)}.toast.error svg{color:var(--danger)}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}}[data-tip]{position:relative}[data-tip]:hover:after{content:attr(data-tip);background:var(--text);color:var(--bg);font:500 11px/1.3 var(--font);white-space:nowrap;pointer-events:none;z-index:60;border-radius:6px;padding:4px 8px;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%)}.page-header{justify-content:space-between;align-items:flex-end;gap:var(--sp-5);flex-wrap:wrap;display:flex}.page-header-text{flex-direction:column;flex:360px;gap:6px;min-width:0;max-width:720px;display:flex}.page-desc{color:var(--text-2);font-size:14px;line-height:1.55}.page-header-actions{gap:var(--sp-2);flex-wrap:wrap;flex:none;align-items:center;display:flex}.eyebrow{letter-spacing:.1em;text-transform:uppercase;color:var(--accent-text);font-size:11px;font-weight:600}.section{gap:var(--sp-3);flex-direction:column;display:flex}.section-head{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.section-count{color:var(--text-3);background:var(--surface-3);border-radius:var(--r-pill);vertical-align:1px;margin-left:8px;padding:1px 7px;font-size:12px;font-weight:600}.empty{text-align:center;border:1px dashed var(--line-strong);border-radius:var(--r-lg);background:radial-gradient(circle at 50% 0%, var(--accent-soft), transparent 60%);flex-direction:column;align-items:center;gap:8px;padding:48px 24px;display:flex}.empty-icon{background:var(--surface-2);border:1px solid var(--line-strong);width:46px;height:46px;color:var(--accent-text);border-radius:14px;place-items:center;display:grid}.empty-title{font-size:15px;font-weight:600}.empty-desc{color:var(--text-2);max-width:420px;margin-bottom:6px}.stat{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);flex-direction:column;gap:2px;padding:12px 14px;display:flex}.stat-label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);font-size:11px;font-weight:600}.stat-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:24px;font-weight:650}.stat-hint{color:var(--text-2);font-size:12px}.stat.accent .stat-value{color:var(--accent-text)}.stat.warn .stat-value{color:var(--warn)}.stat.danger .stat-value{color:var(--danger)}.meter{gap:3px;display:inline-flex}.meter i{background:var(--surface-3);border-radius:3px;width:14px;height:5px}.meter.accent i.on{background:var(--accent);box-shadow:0 0 8px var(--accent-soft)}.meter.warn i.on{background:var(--warn)}.meter.danger i.on{background:var(--danger)}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:10px 12px}th{color:var(--text-3);letter-spacing:.06em;text-transform:uppercase;font-size:11px;font-weight:600}tbody tr:hover{background:var(--surface-2)}.kv{grid-template-columns:minmax(90px,130px) 1fr;gap:8px 14px;margin:0;font-size:13px;display:grid}.kv dt{color:var(--text-3)}.kv dd{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.chip{border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line);min-width:0;transition:border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);align-items:center;gap:9px;padding:7px 10px;display:flex}.chip:hover{border-color:var(--line-strong);background:var(--surface-3)}.chip a{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:500;overflow:hidden}.chip a:hover{color:var(--accent-text);text-decoration:none}.chip .rel{color:var(--text-3);font-size:11px;font-family:var(--mono);flex:none}.link-btn{color:var(--accent-text);cursor:pointer;text-align:left;font:inherit;background:0 0;border:0;padding:0;font-size:13px}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.rise{animation:rise .35s var(--ease) both}.palette-backdrop{z-index:150;background:var(--overlay);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fade var(--dur) var(--ease);justify-content:center;align-items:flex-start;padding:12vh 24px 24px;display:flex;position:fixed;inset:0}.palette{border-radius:var(--r-lg);background:var(--surface);width:min(620px,100%);max-height:70vh;box-shadow:var(--shadow-lg);animation:pop var(--dur) var(--ease);flex-direction:column;display:flex;overflow:hidden}.palette-input{border-bottom:1px solid var(--line);height:56px;color:var(--text-3);align-items:center;gap:12px;padding:0 18px;display:flex}.palette-input input{color:var(--text);font:400 16px var(--font);background:0 0;border:0;outline:0;flex:1}.palette-input input::placeholder{color:var(--text-3)}.palette-list{min-height:80px;padding:6px;overflow:auto}.palette-group{letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);padding:10px 12px 4px;font-size:11px;font-weight:600}.palette-item{border-radius:var(--r-sm);width:100%;height:40px;color:var(--text-2);font:500 14px var(--font);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:12px;padding:0 12px;display:flex}.palette-item[data-active=true]{background:var(--accent-soft);color:var(--text)}.palette-item[data-active=true] svg{color:var(--accent-text)}.palette-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.palette-hint{color:var(--text-3);font-size:12px;font-weight:400}.palette-empty{text-align:center;color:var(--text-3);padding:28px}.palette-foot{border-top:1px solid var(--line);color:var(--text-3);align-items:center;gap:16px;padding:10px 16px;font-size:12px;display:flex}.search-results{z-index:30;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-md);max-height:320px;box-shadow:var(--shadow-lg);padding:4px;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow:auto}.search-results .item{border-radius:var(--r-sm);cursor:pointer;align-items:center;gap:10px;padding:8px 10px;display:flex}.search-results .item:hover{background:var(--accent-soft)}.login-wrap{z-index:50;padding:var(--sp-5);background:radial-gradient(ellipse 70% 55% at 50% 0%, var(--accent-soft), transparent 70%), var(--bg);place-items:center;display:grid;position:fixed;inset:0;overflow:auto}.login-card{gap:var(--sp-5);width:100%;max-width:400px;padding:var(--sp-6);flex-direction:column;display:flex}.login-brand{align-items:center;gap:var(--sp-3);display:flex}.login-brand h1{font-size:20px}.link-btn{color:var(--accent-text);font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;padding:0;font-size:12.5px}.link-btn:hover{text-underline-offset:3px;text-decoration:underline}.space-switcher{align-items:center;gap:4px;display:flex}.select.compact{max-width:220px;height:30px;padding-top:0;padding-bottom:0;font-size:12.5px}.user-menu{align-items:center;gap:4px;display:flex}.user-name{color:var(--text-2);text-overflow:ellipsis;white-space:nowrap;max-width:140px;font-size:12.5px;overflow:hidden}.tabs{border-bottom:1px solid var(--line);gap:2px;display:flex}.tab{font:inherit;color:var(--text-3);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px;font-weight:500}.tab:hover{color:var(--text)}.tab.on{color:var(--text);border-bottom-color:var(--accent)}.access-row{align-items:center;gap:var(--sp-3);padding:12px 14px;display:flex}.access-row .grow{min-width:0}.toggle-chips{flex-wrap:wrap;gap:6px;display:flex}.toggle-chip{border-radius:var(--r-pill);height:26px;font:inherit;cursor:pointer;background:var(--surface-2);border:1px solid var(--line);color:var(--text-2);transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);padding:0 10px;font-size:12px}.toggle-chip:hover:not(:disabled){border-color:var(--line-strong);color:var(--text)}.toggle-chip.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-text)}.toggle-chip:disabled{cursor:default;opacity:.9}.notice{border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line);color:var(--text-2);padding:10px 12px;font-size:12.5px;line-height:1.5}.notice.warn{background:var(--warn-soft);color:var(--warn);border-color:#0000}.select-all{-webkit-user-select:all;user-select:all;word-break:break-all;white-space:pre-wrap}.grid-2{gap:var(--sp-3);grid-template-columns:1fr 1fr;display:grid}.doc{flex-direction:column;gap:6px;padding:10px 12px;display:flex}.doc-title{min-width:0;font:inherit;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:0;font-weight:600;display:inline-flex}.doc-title:disabled{cursor:default}.doc-title span{overflow-wrap:anywhere}.doc-title svg{color:var(--text-3);flex:none}.doc-summary{line-height:1.5}.doc-body{border-top:1px solid var(--line);max-height:420px;margin-top:6px;padding-top:10px;overflow:auto}.doc-article{padding:var(--sp-5) var(--sp-6)}.mono-area{font-family:var(--mono);font-size:12.5px;line-height:1.55}.md{overflow-wrap:anywhere;flex-direction:column;gap:10px;font-size:14px;line-height:1.65;display:flex}.md .md-h{color:var(--text);text-transform:none;letter-spacing:-.01em;margin-top:8px;font-size:16px}.md h2.md-h{font-size:19px}.md h3.md-h{font-size:16px}.md h4.md-h,.md h5.md-h,.md h6.md-h{font-size:14px}.md ul,.md ol{flex-direction:column;gap:4px;margin:0;padding-left:22px;display:flex}.md-code{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);margin:0;padding:12px;overflow:auto}.md-code code{color:var(--text);background:0 0;padding:0;font-size:12px;line-height:1.55}.md-quote{border-left:3px solid var(--line-strong);color:var(--text-2);margin:0;padding:2px 0 2px 12px}.md-hr{border:0;border-top:1px solid var(--line);margin:6px 0}.member-card{padding:14px}.member-links{border-top:1px solid var(--line);flex-direction:column;gap:8px;margin-top:10px;padding-top:8px;display:flex}.member-link-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.groups-fold>summary{cursor:pointer;color:var(--text-2);-webkit-user-select:none;user-select:none;padding:6px 2px;font-size:13.5px}.groups-fold[open]>summary{margin-bottom:var(--sp-3)}.grow{flex:1}.field-error{color:var(--danger);font-size:12.5px}.check-line{color:var(--text-2);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.callout{border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:var(--sp-3);gap:var(--sp-2);flex-direction:column;display:flex}.callout.danger{border-color:color-mix(in oklab, var(--danger) 45%, transparent);background:var(--danger-soft)}.callout p{margin:0;font-size:13px}.color-row{flex-wrap:wrap;gap:8px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;outline:none;width:26px;height:26px;padding:0}.swatch.on{border-color:var(--text);box-shadow:0 0 0 2px var(--surface)}.swatch:focus-visible{box-shadow:0 0 0 3px var(--accent-soft)}.swatch.none{border:2px dashed var(--line-strong);background:0 0}.swatch.none.on{border-style:solid;border-color:var(--text)}.avatar{color:#11160a;border:2px solid var(--surface);-webkit-user-select:none;user-select:none;border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:700;line-height:1;display:inline-flex}.avatar.more{background:var(--surface-3);color:var(--text-2)}.avatar-stack{display:inline-flex}.avatar-stack .avatar+.avatar{margin-left:-7px}.app-tile{gap:14px}.app-icon{border-radius:var(--r-md);background:var(--accent-soft);width:44px;height:44px;color:var(--accent-text);border:1px solid var(--accent-line);place-items:center;display:grid}.app-actions{margin-top:auto;padding-top:6px}.board-link,.board-link:hover{color:inherit;text-decoration:none;display:block}.board-progress{background:var(--surface-3);border-radius:2px;height:4px;overflow:hidden}.board-progress i{height:100%;transition:width .3s var(--ease);border-radius:2px;display:block}.my-tasks{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);flex-direction:column;display:flex;overflow:hidden}.my-task{color:var(--text);border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:10px 14px;font-size:13.5px;display:flex}.my-task:last-child{border-bottom:0}.my-task:hover{background:var(--surface-2);text-decoration:none}.my-task-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:550;overflow:hidden}.my-task .muted{white-space:nowrap;margin-left:auto;font-size:12px}.shell-content .page.board-page{gap:var(--sp-3);max-width:none;padding-bottom:24px}.board-head{justify-content:space-between;align-items:center;gap:var(--sp-4);flex-wrap:wrap;display:flex}.board-swatch{border-radius:5px;flex:none;width:10px;height:34px}.board-title h1{letter-spacing:-.02em;margin:0;font-size:22px}.board-title p{margin:2px 0 0;font-size:13px}.people-btn{border:1px dashed var(--line-strong);border-radius:var(--r-pill);color:var(--text-2);cursor:pointer;background:0 0;align-items:center;gap:8px;padding:3px 10px 3px 4px;display:inline-flex}.people-btn:hover{border-color:var(--accent);color:var(--text)}.board-filters{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.board-filters .input-wrap,.board-filters>.input{width:300px;max-width:100%}.board-filters .select{width:210px}.kanban{gap:var(--sp-3);align-items:flex-start;min-height:60vh;padding:4px 2px 16px;display:flex;overflow-x:auto}.kanban-col{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);width:304px;max-height:calc(100vh - 230px);transition:border-color var(--dur) var(--ease), opacity var(--dur) var(--ease);flex-direction:column;flex:0 0 304px;display:flex}.kanban-col.col-over{border-color:var(--accent)}.kanban-col.col-dragging{opacity:.45}.kanban-col-head{cursor:grab;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:10px 8px 10px 14px;display:flex}.kanban-col-head h3{letter-spacing:.01em;text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;font-weight:650;overflow:hidden}.col-dot{border-radius:50%;flex:none;width:8px;height:8px}.col-count{color:var(--text-3);background:var(--surface-3);border-radius:var(--r-pill);font-variant-numeric:tabular-nums;padding:1px 8px;font-size:12px}.col-count.warn{color:var(--warn);background:var(--warn-soft)}.col-done{color:var(--ok)}.kanban-col-body{border-radius:var(--r-sm);flex-direction:column;flex:1;gap:8px;min-height:56px;padding:2px 8px 8px;display:flex;overflow-y:auto}.kanban-col-body.over{background:var(--accent-soft)}.kanban-empty{color:var(--text-3);text-align:center;border:1px dashed var(--line);border-radius:var(--r-sm);padding:18px 8px;font-size:12.5px}.task-slot{flex-direction:column;gap:8px;display:flex}.drop-line{background:var(--accent);border-radius:2px;flex:none;height:3px;margin:-2px 0}.kanban-add{color:var(--text-3);border-radius:var(--r-sm);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:6px;margin:0 8px 8px;padding:8px 10px;font-size:13px;display:flex}.kanban-add:hover{background:var(--surface-2);color:var(--text)}.kanban-add-form{flex-direction:column;gap:4px;padding:0 8px 8px;display:flex}.kanban-add-form .textarea{min-height:56px}.kanban-add-form .hint{color:var(--text-3);font-size:11.5px}.kanban-new-col{border:1px dashed var(--line-strong);color:var(--text-2);border-radius:var(--r-md);cursor:pointer;background:0 0;flex:0 0 200px;justify-content:center;align-items:center;gap:8px;padding:12px;font-size:13.5px;display:flex}.kanban-new-col:hover{border-color:var(--accent);color:var(--text)}.task-card{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);cursor:grab;box-shadow:var(--shadow-sm);transition:border-color var(--dur) var(--ease), transform var(--dur) var(--ease);outline:none;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.task-card:hover{border-color:var(--line-strong)}.task-card:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.task-card.dragging{opacity:.4;transform:scale(.98)}.task-title{color:var(--text);overflow-wrap:anywhere;font-size:13.5px;line-height:1.4}.task-labels{flex-wrap:wrap;gap:4px;display:flex}.task-label{border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent-text);border:0;align-items:center;gap:4px;padding:1px 7px;font-size:11px;font-weight:600;display:inline-flex}.task-label.removable{cursor:pointer}.task-label.removable:hover{background:var(--danger-soft);color:var(--danger)}.task-foot{color:var(--text-3);flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;display:flex}.task-prio{align-items:center;gap:3px;font-size:11.5px;font-weight:600;display:inline-flex}.task-chip{border-radius:var(--r-xs);background:var(--surface-3);font-variant-numeric:tabular-nums;align-items:center;gap:3px;padding:1px 6px;display:inline-flex}.task-chip.overdue{background:var(--danger-soft);color:var(--danger)}.task-chip.ok{background:var(--ok-soft);color:var(--ok)}.task-num{font-variant-numeric:tabular-nums}.task-modal{gap:var(--sp-5);grid-template-columns:minmax(0,1fr) 260px;align-items:start;display:grid}@media (width<=760px){.task-modal{grid-template-columns:1fr}}.task-main{gap:var(--sp-4);flex-direction:column;min-width:0;display:flex}.task-title-input{letter-spacing:-.02em;border-radius:var(--r-sm);width:100%;color:var(--text);background:0 0;border:1px solid #0000;outline:none;margin:0 -8px;padding:6px 8px;font-size:20px;font-weight:650}.task-title-input:hover{border-color:var(--line-strong)}.task-title-input:focus{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px var(--accent-soft)}.task-block{gap:var(--sp-2);flex-direction:column;display:flex}.task-block-head{justify-content:space-between;align-items:center;display:flex}.task-block-head h3{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);align-items:center;gap:8px;margin:0;font-size:12px;font-weight:650;display:flex}.task-desc{cursor:text;padding:2px 0;font-size:14px;line-height:1.6}.task-desc-empty{text-align:left;border:1px dashed var(--line-strong);color:var(--text-3);border-radius:var(--r-sm);cursor:pointer;background:0 0;padding:14px;font-size:13.5px}.task-desc-empty:hover{border-color:var(--accent);color:var(--text-2)}.checklist-bar{background:var(--surface-3);border-radius:2px;height:4px;overflow:hidden}.checklist-bar i{background:var(--ok);height:100%;transition:width .25s var(--ease);display:block}.checklist{flex-direction:column;display:flex}.check-item{border-radius:var(--r-xs);cursor:pointer;align-items:center;gap:10px;padding:6px 4px;font-size:13.5px;display:flex}.check-item:hover{background:var(--surface-2)}.check-item span{overflow-wrap:anywhere;flex:1}.check-item.done span{color:var(--text-3);text-decoration:line-through}.check-item .btn{opacity:0}.check-item:hover .btn,.check-item:focus-within .btn{opacity:1}.comments{gap:var(--sp-3);flex-direction:column;display:flex}.comment{align-items:flex-start;gap:10px;display:flex}.comment-body{flex:1;min-width:0;font-size:13.5px}.comment-head{align-items:center;gap:8px;margin-bottom:2px;display:flex}.comment-head time,.comment.system time{color:var(--text-3);font-size:11.5px}.comment-head .btn{opacity:0;margin-left:auto}.comment:hover .comment-head .btn{opacity:1}.comment.system{color:var(--text-3);align-items:center;gap:8px;font-size:12.5px}.comment.system time{margin-left:auto}.task-side{gap:var(--sp-3);flex-direction:column;display:flex}.assignee-list{flex-direction:column;gap:2px;display:flex}.assignee{border-radius:var(--r-xs);color:var(--text-2);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:5px 6px;font-size:13px;display:flex}.assignee span{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.assignee:hover{background:var(--surface-2)}.assignee.on{color:var(--text);background:var(--accent-soft)}.task-meta{color:var(--text-3);padding-top:var(--sp-2);border-top:1px solid var(--line);flex-direction:column;gap:3px;font-size:12px;display:flex}.member-list{flex-direction:column;display:flex}.member-row{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:10px 2px;display:flex}.member-row:last-child{border-bottom:0}.member-text{flex-direction:column;flex:1;min-width:0;display:flex}.member-text span{color:var(--text-3);text-overflow:ellipsis;font-size:12.5px;overflow:hidden}.drawer{z-index:60;background:var(--surface);border-left:1px solid var(--line-strong);width:min(760px,100vw);animation:drawer-in .28s var(--ease) both;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-24px 0 64px -24px #0000008c}@keyframes drawer-in{0%{opacity:0;transform:translate(32px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.drawer{animation:none}}.drawer-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:14px 18px 12px 24px;display:flex}.drawer-header h2{color:var(--text-2);margin:0;font-size:14px;font-weight:650}.drawer-body{flex:1;padding:20px 24px 28px;overflow-y:auto}.drawer-footer{gap:var(--sp-2);border-top:1px solid var(--line);align-items:center;padding:12px 24px;display:flex}.drawer .task-modal{grid-template-columns:minmax(0,1fr) 230px}@media (width<=820px){.drawer .task-modal{grid-template-columns:1fr}}.fold-head{width:100%;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:4px 0;display:flex}.fold-head h2{align-items:center;gap:8px;display:flex}.fold-head .section-count{margin-left:0}.fold-head:hover svg{color:var(--accent-text)}.my-groups{margin-top:var(--sp-2);flex-direction:column;gap:8px;display:flex}.my-group{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);overflow:hidden}.my-group>summary{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;padding:9px 14px;font-size:13.5px;font-weight:600;list-style:none;display:flex}.my-group>summary::-webkit-details-marker{display:none}.my-group>summary:hover{background:var(--surface-2)}.my-group .chev{color:var(--text-3);transition:transform var(--dur-fast) var(--ease)}.my-group[open] .chev{transform:rotate(90deg)}.my-group-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.my-group .my-tasks{border:0;border-top:1px solid var(--line);border-radius:0}.assignee>span:not(.avatar){flex:1}.assignee .avatar{aspect-ratio:1;flex:none}.md-tabs{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);align-self:flex-start;gap:2px;padding:3px;display:inline-flex}.md-tabs button{color:var(--text-2);border-radius:var(--r-xs);font:500 12.5px var(--font);cursor:pointer;background:0 0;border:0;padding:4px 12px}.md-tabs button.on{background:var(--surface-3);color:var(--text)}.md-editor{min-height:220px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;line-height:1.55}.md-preview{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);min-height:220px;padding:12px 14px}.md ul ul,.md ol ol,.md ul ol,.md ol ul{margin-top:4px}.md li{overflow-wrap:anywhere}.md-task{align-items:flex-start;gap:8px;margin-left:-22px;list-style:none;display:flex}.md-task input{margin-top:5px}.md-task .done{color:var(--text-3);text-decoration:line-through}.md del{color:var(--text-3)}.md p{margin:0}.md-table-wrap{border:1px solid var(--line);border-radius:var(--r-sm);overflow-x:auto}.md-table{border-collapse:collapse;width:100%;font-size:13px}.md-table th,.md-table td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);text-align:left;vertical-align:top;padding:7px 12px}.md-table th:last-child,.md-table td:last-child{border-right:0}.md-table tr:last-child td{border-bottom:0}.md-table th{background:var(--surface-2);font-weight:650}.md code{background:var(--surface-3);border-radius:var(--r-xs);padding:1px 5px;font-size:.9em}.md a{color:var(--accent-text)}.task-modal.file-over{outline:2px dashed var(--accent);outline-offset:6px;border-radius:var(--r-sm)}.attachments{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.attachment{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);margin:0;overflow:hidden}.attachment-img{cursor:zoom-in;aspect-ratio:4/3;background:var(--surface-3);border:0;place-items:center;width:100%;padding:0;display:grid}.attachment-img img{object-fit:cover;width:100%;height:100%;display:block}.attachment-error{text-align:center;color:var(--text-3);flex-direction:column;align-items:center;gap:6px;padding:8px;font-size:12px;display:flex}.attachment figcaption{color:var(--text-2);align-items:center;gap:4px;padding:3px 4px 3px 8px;font-size:12px;display:flex}.attachment figcaption span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.attachments-hint{border:1px dashed var(--line-strong);border-radius:var(--r-sm);text-align:center;margin:0;padding:12px;font-size:12.5px}.lightbox{z-index:120;background:#06070ae0;flex-direction:column;align-items:stretch;padding:0}.lightbox-top{color:#fff;align-items:center;gap:8px;padding:12px 16px;display:flex}.lightbox-name{text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;font-weight:600;overflow:hidden}.lightbox-stage{flex:1;place-items:center;min-height:0;padding:0 64px 24px;display:grid;overflow:auto}.lightbox-stage img{object-fit:contain;border-radius:var(--r-sm);max-width:100%;max-height:calc(100vh - 100px);box-shadow:var(--shadow-lg);cursor:zoom-in}.lightbox-stage img.zoomed{cursor:zoom-out;max-width:none;max-height:none}.lightbox-nav{z-index:1;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-nav.prev{left:16px}.lightbox-nav.next{right:16px}:root,:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0a0b0f;--surface:#101218;--surface-2:#151822;--surface-3:#1b1f2b;--overlay:#06070aa8;--line:#ffffff12;--line-strong:#ffffff24;--highlight:#ffffff0b;--text:#eceef4;--text-2:#a3a9bc;--text-3:#6c7388;--accent:#c8f562;--accent-hover:#d6ff72;--accent-ink:#11160a;--accent-soft:#c8f5621f;--accent-line:#c8f56261;--accent-text:#d4fa7c;--danger:#ff6b6b;--danger-soft:#ff6b6b1f;--warn:#ffc15a;--warn-soft:#ffc15a21;--ok:#5fe3a1;--ok-soft:#5fe3a11f;--canvas-dot:#ffffff13;--canvas-link:#a5afcd33;--canvas-link-hot:#e4eaffd9;--canvas-label:#dfe3ee;--shadow-sm:0 1px 2px #0006;--shadow-md:0 8px 24px -8px #0009, 0 1px 0 var(--highlight) inset;--shadow-lg:0 24px 64px -16px #000000bf, 0 0 0 1px var(--line);--glass:#101218b8}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f5f8;--surface:#fff;--surface-2:#f7f8fb;--surface-3:#eef0f5;--overlay:#14182466;--line:#14182817;--line-strong:#1418282e;--highlight:#ffffffe6;--text:#14161d;--text-2:#4d5468;--text-3:#858ba0;--accent:#5c8a00;--accent-hover:#4d7500;--accent-ink:#fff;--accent-soft:#5c8a001a;--accent-line:#5c8a0066;--accent-text:#4f7800;--danger:#d6384a;--danger-soft:#d6384a1a;--warn:#b7791f;--warn-soft:#b7791f1f;--ok:#1f9d68;--ok-soft:#1f9d681a;--canvas-dot:#1418281f;--canvas-link:#46506e40;--canvas-link-hot:#141828cc;--canvas-label:#1c2030;--shadow-sm:0 1px 2px #14182814;--shadow-md:0 8px 24px -10px #1418282e, 0 1px 0 var(--highlight) inset;--shadow-lg:0 24px 64px -20px #1418284d, 0 0 0 1px var(--line);--glass:#ffffffc7}:root{--font:"Inter", -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--r-xs:5px;--r-sm:8px;--r-md:12px;--r-lg:18px;--r-pill:999px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--ease:cubic-bezier(.2, .7, .2, 1);--dur-fast:.12s;--dur:.2s;--topbar-h:52px;--sidebar-w:248px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:var(--bg);min-height:100%}#root{min-height:100vh}body{background:var(--bg);min-height:100vh;color:var(--text);font-family:var(--font);font-feature-settings:"cv11", "ss01";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;font-size:14px;line-height:1.5}::selection{background:var(--accent);color:var(--accent-ink)}a{color:var(--accent-text);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline}h1,h2,h3{letter-spacing:-.015em;color:var(--text);margin:0;font-weight:600}h1{letter-spacing:-.025em;font-size:26px;line-height:1.2}h2{font-size:17px;line-height:1.3}h3{color:var(--text-3);text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:600}p{margin:0}code,.mono{font-family:var(--mono);font-size:12px}code{background:var(--surface-3);border-radius:var(--r-xs);color:var(--text-2);padding:1px 5px}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:12px}.error{color:var(--danger);font-size:12px}.relative{position:relative}.block{display:block}.row{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.row.between{justify-content:space-between}.row.end{justify-content:flex-end}.row.nowrap{flex-wrap:nowrap}.stack{gap:var(--sp-2);flex-direction:column;display:flex}.stack.lg{gap:var(--sp-4)}.grow{flex:1;min-width:0}.toolbar{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line-strong);background-clip:content-box;border:3px solid #0000;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--text-3);background-clip:content-box;border:3px solid #0000}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-xs)}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.shell{align-items:flex-start;min-height:100vh;display:flex}.app-sidebar{width:var(--app-sidebar-w,224px);align-self:flex-start;gap:var(--sp-4);height:100vh;padding:var(--sp-4) var(--sp-3);background:var(--surface);border-right:1px solid var(--line);flex-direction:column;flex:none;display:flex;position:sticky;top:0;overflow-y:auto}.brand{letter-spacing:-.02em;color:var(--text);white-space:nowrap;align-items:center;gap:10px;padding:2px 6px;font-size:15px;font-weight:650;display:inline-flex}.brand:hover{text-decoration:none}.logo{flex:none;width:26px;height:26px}.app-sidebar .space-switcher{width:100%}.app-sidebar .space-switcher .select{flex:1;min-width:0;max-width:none}.side-nav,.nav{flex-direction:column;gap:2px;display:flex}.side-nav a,.nav a{border-radius:var(--r-sm);height:36px;color:var(--text-2);transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);align-items:center;gap:10px;padding:0 10px;font-size:13.5px;font-weight:500;display:flex}.side-nav a:hover,.nav a:hover{background:var(--surface-3);color:var(--text);text-decoration:none}.side-nav a.active,.nav a.active{background:var(--surface-3);color:var(--text);box-shadow:0 0 0 1px var(--line) inset}.side-nav a.active svg,.nav a.active svg{color:var(--accent-text)}.side-bottom{gap:var(--sp-2);flex-direction:column;margin-top:auto;display:flex}.side-bottom .user-menu{min-width:0}.side-bottom .user-name{max-width:92px}.shell-content{flex:1;min-width:0}.page{padding:var(--sp-6) var(--sp-5) 64px;gap:var(--sp-5);animation:rise .4s var(--ease) both;flex-direction:column;display:flex}.shell-content .page{max-width:1200px;margin:0 auto}@media (width<=820px){.shell{flex-direction:column;align-items:stretch}.app-sidebar{border-right:0;border-bottom:1px solid var(--line);flex-flow:wrap;align-items:center;width:auto;height:auto;position:static}.side-nav{flex-flow:wrap}.side-bottom{flex-direction:row;align-items:center;margin-top:0;margin-left:auto}}.search-trigger{border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line-strong);width:100%;height:34px;color:var(--text-3);font:400 13px var(--font);cursor:pointer;text-align:left;transition:border-color var(--dur-fast) var(--ease);align-items:center;gap:10px;padding:0 8px 0 11px;display:flex}.search-trigger:hover{border-color:var(--text-3)}.search-trigger span{flex:1}.layout{grid-template-columns:var(--sidebar-w) 1fr;height:100vh;display:grid}.sidebar{gap:var(--sp-4);padding:var(--sp-4);background:var(--surface);border-right:1px solid var(--line);flex-direction:column;display:flex;overflow:auto}.sidebar-head{flex-direction:column;gap:10px;display:flex}.back-link{color:var(--text-3);align-items:center;gap:6px;font-size:12px;font-weight:500;display:inline-flex}.back-link:hover{color:var(--text);text-decoration:none}.graph-title{letter-spacing:-.02em;overflow-wrap:anywhere;font-size:16px;font-weight:650;line-height:1.25}.nav a{height:36px}.nav .tag{margin-left:auto}.type-meter{background:var(--surface-3);border-radius:3px;gap:2px;height:6px;display:flex;overflow:hidden}.type-meter i{border-radius:2px;min-width:3px;display:block}.type-row{border-radius:var(--r-xs);align-items:center;gap:10px;margin:0 -6px;padding:4px 6px;font-size:13px;display:flex}.type-row .count{color:var(--text-3);font-variant-numeric:tabular-nums;margin-left:auto;font-size:12px}.content{background:var(--bg);flex-direction:column;min-width:0;min-height:0;display:flex;overflow:auto}.content>.page{width:100%;max-width:1280px}.split{flex:1;grid-template-columns:1fr 392px;min-height:0;display:grid}.split-main{min-width:0;min-height:0;position:relative;overflow:hidden}.split-side{border-left:1px solid var(--line);background:var(--surface);padding:var(--sp-5);gap:var(--sp-4);flex-direction:column;display:flex;overflow:auto}.canvas-wrap{background-color:var(--bg);background-image:radial-gradient(circle at 1px 1px, var(--canvas-dot) 1px, transparent 0), radial-gradient(ellipse at 50% 40%, transparent 40%, var(--bg) 100%);background-size:24px 24px,100% 100%;position:absolute;inset:0}.canvas-wrap canvas{display:block}.glass{background:var(--glass);-webkit-backdrop-filter:blur(14px)saturate(1.3);backdrop-filter:blur(14px)saturate(1.3);border:1px solid var(--line-strong);border-radius:var(--r-md);box-shadow:var(--shadow-md)}.canvas-top{z-index:5;pointer-events:none;justify-content:space-between;gap:12px;display:flex;position:absolute;top:14px;left:14px;right:14px}.canvas-top>*{pointer-events:auto}.legend{flex-wrap:wrap;gap:6px;padding:6px;display:flex}.legend-chip{border-radius:var(--r-sm);height:28px;color:var(--text);font:500 12.5px var(--font);cursor:pointer;transition:background var(--dur-fast) var(--ease), opacity var(--dur-fast) var(--ease);background:0 0;border:1px solid #0000;align-items:center;gap:8px;padding:0 10px 0 8px;display:inline-flex}.legend-chip:hover{background:var(--surface-3)}.legend-chip.off{opacity:.45}.legend-chip.off .dot{background:var(--text-3)!important;box-shadow:none!important}.legend-chip .count{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:11.5px}.canvas-bottom{z-index:5;pointer-events:none;justify-content:space-between;align-items:flex-end;display:flex;position:absolute;bottom:14px;left:14px;right:14px}.canvas-bottom>*{pointer-events:auto}.canvas-stats{color:var(--text-2);align-items:center;gap:14px;padding:8px 14px;font-size:12px;display:flex}.canvas-stats b{color:var(--text);font-variant-numeric:tabular-nums;font-weight:600}.canvas-hint{color:var(--text-3);padding:0 4px;font-size:12px}.zoom-controls{flex-direction:column;gap:2px;padding:4px;display:flex}.canvas-center{z-index:4;place-items:center;padding:24px;display:grid;position:absolute;inset:0}.node-head{flex-direction:column;gap:10px;display:flex}.node-title{letter-spacing:-.025em;overflow-wrap:anywhere;font-size:22px;line-height:1.25}.node-title a{color:var(--text)}.node-title a:hover{color:var(--accent-text);text-decoration:none}.node-desc{color:var(--text-2);white-space:pre-wrap;line-height:1.6}.node-actions{flex-wrap:wrap;gap:6px;display:flex}.node-meta{color:var(--text-3);font-size:11.5px}.panel-section{padding-top:var(--sp-4);border-top:1px solid var(--line);flex-direction:column;gap:8px;display:flex}.panel-placeholder{text-align:center;color:var(--text-3);flex-direction:column;align-items:center;gap:10px;margin:auto 0;padding:24px;display:flex}.panel-placeholder .ph-icon{border:1px dashed var(--line-strong);width:44px;height:44px;color:var(--text-3);border-radius:14px;place-items:center;display:grid}.grid-tiles{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(290px,1fr));display:grid}.tile{flex-direction:column;gap:10px;min-height:150px;padding:18px;display:flex}.tile-title{letter-spacing:-.02em;color:var(--text);font-size:16px;font-weight:650;line-height:1.3}a.tile-title:hover{color:var(--text);text-decoration:none}.tile-desc{color:var(--text-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;line-height:1.5;display:-webkit-box;overflow:hidden}.tile-meta{color:var(--text-3);flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:auto;font-size:12px;display:flex}.tile-actions{padding-top:6px}.tile-stripe{border-radius:2px;gap:2px;height:4px;display:flex;overflow:hidden}.tile-stripe i{flex:1}.tile-legend{flex-wrap:wrap;gap:5px;display:flex}.tile-more{opacity:0;transition:opacity var(--dur) var(--ease)}.tile:hover .tile-more,.tile:focus-within .tile-more{opacity:1}@media (hover:none){.tile-more{opacity:1}}.opp-list{gap:var(--sp-4);flex-direction:column;display:flex}.opp{gap:var(--sp-5);grid-template-columns:minmax(0,1.1fr) minmax(0,1.6fr);padding:20px;display:grid}.opp-main{flex-direction:column;gap:10px;min-width:0;display:flex}.opp-title{letter-spacing:-.02em;color:var(--text);font-size:17px;font-weight:650;line-height:1.3}.opp-title:hover{color:var(--accent-text);text-decoration:none}.opp-signals{flex-wrap:wrap;gap:14px;margin-top:auto;display:flex}.signal{color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;flex-direction:column;gap:5px;font-size:11px;font-weight:600;display:flex}.signal b{color:var(--text);text-transform:none;letter-spacing:0;font-size:13px;font-weight:600}.opp-cols{gap:var(--sp-4);grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;display:grid}.opp-col{flex-direction:column;gap:6px;min-width:0;display:flex}.opp.whitespace{border-color:var(--accent-line);background:linear-gradient(135deg, var(--accent-soft), transparent 45%), var(--surface)}.review-item{gap:var(--sp-4);grid-template-columns:96px minmax(0,1fr) auto;align-items:start;padding:16px 18px;display:grid}.overdue{border-radius:var(--r-sm);background:var(--warn-soft);color:var(--warn);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:10px 6px;display:flex}.overdue b{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:22px;font-weight:700;line-height:1}.overdue span{text-transform:uppercase;letter-spacing:.06em;font-size:10.5px;font-weight:600}.overdue.hard{background:var(--danger-soft);color:var(--danger)}.review-title{color:var(--text);font-size:15px;font-weight:600}.review-value{color:var(--text-2);font-size:13px}.review-about{flex-direction:column;gap:6px;min-width:200px;max-width:280px;display:flex}.editor{gap:var(--sp-4);flex-direction:column;display:flex}.editor-fieldset{gap:var(--sp-5);border:0;flex-direction:column;min-width:0;margin:0;padding:0;display:flex}.editor-fieldset:disabled{opacity:.7}.editor-card{flex-direction:column;gap:10px;display:flex}.editor-row{grid-template-columns:40px 1fr 200px 36px;align-items:center;gap:8px;display:grid}.editor-row:nth-of-type(2){grid-template-columns:1fr 1fr}.field-grid{grid-template-columns:150px 1fr 120px 50px 150px 36px;align-items:center;gap:8px;display:grid}.field-grid.head{padding:0 2px}.ref-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.ref-chip{background:var(--surface-2);color:var(--text-2);border:1px solid var(--line-strong);border-radius:var(--r-pill);font:500 12px var(--font);cursor:pointer;padding:3px 11px}.ref-chip.on{color:#fff}.editor-savebar{background:linear-gradient(to top, var(--bg) 70%, transparent);flex-direction:column;gap:8px;padding:16px 0 8px;display:flex;position:sticky;bottom:0}.editor-savebar ul{margin:0;padding-left:18px}.card-2{background:var(--surface-2);border-radius:var(--r-sm);padding:10px 12px}.gen-form{gap:var(--sp-4);flex-direction:column;display:flex}.dropzone{border:1.5px dashed var(--line-strong);border-radius:var(--r-lg);text-align:center;cursor:pointer;background:var(--surface);transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease);flex-direction:column;align-items:center;gap:6px;padding:36px;display:flex}.dropzone:hover,.dropzone.over{border-color:var(--accent);background:radial-gradient(circle at 50% 0%, var(--accent-soft), transparent 70%), var(--surface)}.radio{cursor:pointer;align-items:flex-start;gap:10px;display:flex}.radio input{margin-top:3px}.seg{background:var(--surface-2);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--r-sm);cursor:pointer;height:34px;font:500 13px var(--font);align-items:center;gap:8px;padding:0 14px;display:inline-flex}.seg.on{border-color:var(--accent-line);box-shadow:0 0 0 1px var(--accent-line);background:var(--accent-soft)}.gen-console{grid-template-columns:1fr 400px;height:100vh;min-height:0;display:grid}.gen-canvas{min-width:0;min-height:0;position:relative}.gen-hud{z-index:5;background:var(--glass);border:1px solid var(--line-strong);border-radius:var(--r-pill);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow-md);align-items:center;gap:12px;padding:7px 16px;display:flex;position:absolute;top:14px;left:14px}.gen-hud.right{padding:5px 6px;left:auto;right:14px}.gen-status{align-items:center;gap:8px;font-size:13px;font-weight:600;display:inline-flex}.gen-status.done{color:var(--ok)}.gen-status.error{color:var(--danger)}.gen-status.cancelled{color:var(--text-3)}.pulse{background:var(--accent);width:9px;height:9px;box-shadow:0 0 12px var(--accent);border-radius:50%;animation:1.2s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:.6;transform:scale(.7)}50%{opacity:1;transform:scale(1.2)}}.gen-legend{z-index:5;background:var(--glass);border:1px solid var(--line-strong);border-radius:var(--r-md);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);flex-wrap:wrap;gap:12px;max-width:70%;padding:9px 13px;display:flex;position:absolute;bottom:58px;left:14px}.gen-progress{z-index:5;background:var(--glass);border:1px solid var(--line-strong);border-radius:var(--r-pill);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);align-items:center;height:30px;padding:0 16px;display:flex;position:absolute;bottom:14px;left:14px;right:14px;overflow:hidden}.gen-progress .bar{background:linear-gradient(90deg, var(--accent-soft), transparent);border-right:2px solid var(--accent);transition:width .4s;position:absolute;inset:0 auto 0 0}.gen-progress span{position:relative}.gen-side{border-left:1px solid var(--line);background:var(--surface);flex-direction:column;min-height:0;display:flex}.gen-side-head{border-bottom:1px solid var(--line);flex-direction:column;gap:2px;padding:16px 18px 12px;display:flex}.gen-feed{flex-direction:column;flex:1;gap:10px;min-height:0;padding:14px 18px;display:flex;overflow:auto}.gen-result{margin:12px}.feed-status{text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);border-top:1px solid var(--line);padding-top:10px;font-size:11px;font-weight:600}.feed-status:first-child{border-top:0;padding-top:0}.feed-agent{flex-direction:column;gap:5px;font-size:13px;animation:.25s slidein;display:flex}.agent-tag{color:#fff;border-radius:var(--r-xs);align-self:flex-start;padding:1px 8px;font-size:11px;font-weight:600;display:inline-block}.feed-thought{color:var(--text-2);border-left:2px solid var(--line-strong);padding-left:10px;font-size:12px;font-style:italic}.feed-warning{color:var(--warn);font-size:12px}.feed-node{align-items:baseline;gap:8px;font-size:13px;animation:.25s slidein;display:flex}.feed-node-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}@keyframes slidein{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.code{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);font:11.5px/1.5 var(--mono);white-space:pre;margin:8px 0;padding:12px;overflow:auto}details>summary{cursor:pointer;color:var(--text-2)}details>summary:hover{color:var(--text)}@media (width<=1000px){.layout{grid-template-columns:1fr;height:auto}.sidebar{border-right:0;border-bottom:1px solid var(--line)}.split,.gen-console,.opp{grid-template-columns:1fr}.split-main{height:60vh}.split-side{border-left:0;border-top:1px solid var(--line)}}
