:root{--accent-h:300;--accent:oklch(.72 .09 var(--accent-h));--accent-soft:oklch(.94 .04 var(--accent-h));--accent-ink:oklch(.38 .09 var(--accent-h));--bg:oklch(98.5% .004 80);--panel:oklch(99.5% .003 80);--panel-2:oklch(96.5% .005 80);--ink:oklch(22% .01 260);--ink-2:oklch(42% .01 260);--ink-3:oklch(62% .008 260);--line:oklch(92% .006 260);--line-2:oklch(88% .008 260);--c1:oklch(95% .03 70);--c2:oklch(95% .03 200);--c3:oklch(95% .035 140);--c4:oklch(95% .03 330);--c5:oklch(95% .02 260);--c1-ink:oklch(45% .08 70);--c2-ink:oklch(45% .08 230);--c3-ink:oklch(42% .08 150);--c4-ink:oklch(45% .08 340);--c5-ink:oklch(42% .03 260);--radius:14px;--radius-sm:10px;--radius-xs:8px;--shadow-1:0 1px 2px oklch(20% .01 260/.04), 0 2px 6px oklch(20% .01 260/.04);--shadow-drag:0 12px 32px oklch(20% .01 260/.14), 0 4px 12px oklch(20% .01 260/.08);--font-sans:"Geist", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono:"Geist Mono", ui-monospace, "SF Mono", monospace}[data-theme=dark]{--bg:oklch(17% .006 260);--panel:oklch(21% .008 260);--panel-2:oklch(24% .008 260);--ink:oklch(94% .005 80);--ink-2:oklch(72% .008 260);--ink-3:oklch(55% .008 260);--line:oklch(28% .008 260);--line-2:oklch(34% .008 260);--accent-soft:oklch(.32 .06 var(--accent-h));--accent-ink:oklch(.85 .08 var(--accent-h));--c1:oklch(30% .04 70);--c2:oklch(30% .04 200);--c3:oklch(30% .045 140);--c4:oklch(30% .04 330);--c5:oklch(28% .015 260);--c1-ink:oklch(85% .08 70);--c2-ink:oklch(85% .08 230);--c3-ink:oklch(85% .08 150);--c4-ink:oklch(85% .08 340);--c5-ink:oklch(78% .02 260);--shadow-1:0 1px 2px oklch(0% 0 0/.2), 0 2px 8px oklch(0% 0 0/.2);--shadow-drag:0 16px 40px oklch(0% 0 0/.5), 0 4px 12px oklch(0% 0 0/.3)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.4;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}input,textarea{font:inherit;color:inherit}.mono{font-family:var(--font-mono);font-feature-settings:"ss01"}.app{background:var(--bg);grid-template-columns:248px 1fr;height:100vh;display:grid}.app.sidebar-collapsed{grid-template-columns:64px 1fr}.sidebar{border-right:1px solid var(--line);background:var(--panel);flex-direction:column;gap:18px;padding:14px 12px;display:flex;overflow:hidden}.brand{border-bottom:1px solid var(--line);align-items:center;min-height:32px;margin-bottom:2px;padding:8px 10px 12px;display:flex}.brand-logo{background:#fff;border-radius:10px;place-items:center;width:100%;padding:10px 14px;display:grid;box-shadow:inset 0 0 0 1px oklch(100% 0 0/.06),0 1px 2px oklch(0% 0 0/.08)}.brand-logo img{width:100%;max-width:170px;height:auto;display:block}.brand-sub-row{color:var(--ink-3);font-size:10px;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;padding:6px 4px 0;display:flex}.brand-sub{color:var(--ink-3);font-size:10px;font-family:var(--font-mono);letter-spacing:.02em}.sidebar-section-title{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px;padding:0 10px;font-size:10px}.sidebar-list{flex-direction:column;gap:1px;display:flex}.sidebar-item{border-radius:var(--radius-sm);color:var(--ink-2);cursor:pointer;white-space:nowrap;align-items:center;gap:10px;padding:7px 10px;font-size:13px;display:flex}.sidebar-item:hover{background:var(--panel-2);color:var(--ink)}.sidebar-item.active{background:var(--accent-soft);color:var(--accent-ink);font-weight:500}.sidebar-item .dot{opacity:.5;background:currentColor;border-radius:50%;flex-shrink:0;width:8px;height:8px}.sidebar-item .num{font-family:var(--font-mono);color:var(--ink-3);margin-left:auto;font-size:11px}.sidebar-foot{border-top:1px solid var(--line);align-items:center;gap:10px;margin-top:auto;padding:14px 10px 8px;display:flex}.avatar{color:#fff;width:26px;height:26px;font-size:11px;font-weight:600;font-family:var(--font-mono);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.user-name{font-size:13px;font-weight:500}.user-role{color:var(--ink-3);font-size:11px;font-family:var(--font-mono)}.main{flex-direction:column;min-width:0;display:flex;overflow:hidden}.topbar{border-bottom:1px solid var(--line);background:var(--panel);align-items:center;gap:12px;min-height:56px;padding:12px 20px;display:flex}.breadcrumb{color:var(--ink-2);align-items:center;gap:8px;font-size:13px;display:flex}.breadcrumb .sep{color:var(--ink-3)}.breadcrumb .curr{color:var(--ink);font-weight:500}.search{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);align-items:center;gap:8px;min-width:220px;margin-left:auto;padding:6px 10px;display:flex}.search:focus-within{border-color:var(--accent);background:var(--panel)}.search input{background:0 0;border:0;outline:0;flex:1;font-size:13px}.icon-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--ink-2);place-items:center;transition:all .15s;display:grid}.icon-btn:hover{background:var(--panel-2);color:var(--ink)}.icon-btn.active{background:var(--accent-soft);color:var(--accent-ink)}.btn{border-radius:var(--radius-sm);background:var(--panel-2);border:1px solid var(--line);color:var(--ink);align-items:center;gap:6px;padding:7px 12px;font-size:13px;font-weight:500;transition:all .15s;display:inline-flex}.btn:hover{background:var(--bg);border-color:var(--line-2)}.btn.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn.primary:hover{opacity:.9}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--panel-2)}.btn.danger{color:oklch(48% .14 25);background:0 0;border-color:oklch(62% .14 25)}.btn.danger:hover{background:oklch(96% .04 25);border-color:oklch(52% .14 25)}[data-theme=dark] .btn.danger:hover{background:oklch(28% .06 25)}.subbar{border-bottom:1px solid var(--line);background:var(--panel);align-items:center;gap:6px;padding:10px 20px;display:flex}.view-tabs{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:2px;display:inline-flex}.view-tab{color:var(--ink-2);border-radius:7px;align-items:center;gap:6px;padding:5px 12px;font-size:12px;font-weight:500;display:inline-flex}.view-tab.active{background:var(--panel);color:var(--ink);box-shadow:var(--shadow-1)}.view-tab:hover:not(.active){color:var(--ink)}.project-title{color:var(--ink);align-items:center;gap:8px;margin-left:14px;margin-right:auto;font-size:13px;font-weight:500;display:flex}.members-stack{align-items:center;display:flex}.members-stack .avatar{border:2px solid var(--panel);width:24px;height:24px;margin-left:-6px;font-size:10px}.members-stack .avatar:first-child{margin-left:0}.members-stack .add-member{background:var(--panel-2);border:1px dashed var(--line-2);width:24px;height:24px;color:var(--ink-3);border-radius:50%;place-items:center;margin-left:-6px;font-size:14px;display:grid}.members-stack .add-member:hover{background:var(--accent-soft);color:var(--accent-ink);border-color:var(--accent)}.filter-chip{background:var(--accent-soft);color:var(--accent-ink);border-radius:999px;align-items:center;gap:6px;padding:5px 10px;font-size:12px;font-weight:500;display:inline-flex}.filter-chip .x{cursor:pointer;opacity:.6}.filter-chip .x:hover{opacity:1}.board{background:var(--bg);flex:1;align-items:flex-start;gap:14px;padding:18px 20px 20px;display:flex;overflow:auto hidden}.column{border-radius:var(--radius);background:var(--panel);border:1px solid var(--line);flex-direction:column;flex:0 0 284px;max-height:100%;transition:all .15s;display:flex;overflow:hidden}.column.dragover{border-color:var(--accent);background:var(--accent-soft)}.col-head{align-items:center;gap:8px;padding:12px 12px 10px;display:flex}.col-title{letter-spacing:-.01em;color:var(--ink);flex-direction:column;flex:1;gap:1px;min-width:0;font-size:13px;font-weight:600;display:flex}.col-sub{color:var(--ink-3);font-size:11px;font-family:var(--font-mono);letter-spacing:0;font-weight:400}.col-count{font-family:var(--font-mono);color:var(--ink-3);background:var(--panel-2);border-radius:999px;padding:2px 7px;font-size:11px}.col-head.pill{padding:10px 12px}.col-head.pill .pill-tag{background:var(--tint,var(--c1));color:var(--tint-ink,var(--c1-ink));letter-spacing:-.01em;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:600}.col-head.pill .col-sub{margin-top:2px}.col-head.bar{border-top:3px solid var(--tint-ink,var(--c1-ink));padding-top:10px}.col-head.minimal{padding-bottom:6px}.col-head.minimal .col-title{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-2);font-size:11px;font-family:var(--font-mono)}.col-body{flex-direction:column;flex:1;gap:8px;min-height:40px;padding:4px 10px 10px;display:flex;overflow-y:auto}.col-body::-webkit-scrollbar{width:6px}.col-body::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:3px}.col-foot{padding:4px 10px 10px}.add-card{border-radius:var(--radius-sm);width:100%;color:var(--ink-3);border:1px dashed #0000;justify-content:center;align-items:center;gap:6px;padding:8px;font-size:12px;display:flex}.add-card:hover{background:var(--panel-2);color:var(--ink);border-color:var(--line-2)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:grab;flex-direction:column;gap:8px;padding:10px 11px;transition:border-color .12s,transform .12s,box-shadow .12s;display:flex;position:relative}.card:hover{border-color:var(--line-2)}.card.dragging{opacity:.4;cursor:grabbing}.card.drop-before:before,.card.drop-after:after{content:"";background:var(--accent);border-radius:2px;height:2px;position:absolute;left:4px;right:4px}.card.drop-before:before{top:-5px}.card.drop-after:after{bottom:-5px}.card-prio{border-radius:var(--radius-sm) 0 0 var(--radius-sm);background:0 0;width:3px;height:100%;position:absolute;top:0;left:0}.card-prio.high{background:oklch(68% .18 25)}.card-prio.med{background:oklch(75% .12 70)}.card-prio.low{background:oklch(82% .05 220)}.card-title{color:var(--ink);text-wrap:pretty;font-size:13px;font-weight:500;line-height:1.35}.card-title[contenteditable=true]{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.card-meta{color:var(--ink-3);font-size:11px;font-family:var(--font-mono);flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.card-meta .m{align-items:center;gap:4px;display:inline-flex}.card-meta .m.due-soon{color:oklch(58% .15 40)}.card-meta .m.due-over{color:oklch(58% .18 25)}.card-progress{background:var(--panel-2);border-radius:2px;height:4px;overflow:hidden}.card-progress>div{background:var(--accent);border-radius:2px;height:100%;transition:width .2s}.card-bottom{justify-content:space-between;align-items:center;gap:8px;margin-top:2px;display:flex}.card-assignees{align-items:center;display:flex}.card-assignees .avatar{border:2px solid var(--panel);width:20px;height:20px;margin-left:-5px;font-size:9px}.card-assignees .avatar:first-child{margin-left:0}.card-assignees .add-member{border:1px dashed var(--line-2);width:20px;height:20px;color:var(--ink-3);background:0 0;border-radius:50%;place-items:center;margin-left:-5px;font-size:10px;display:grid}.list-view{flex:1;padding:18px 20px;overflow:auto}.list-group{margin-bottom:24px}.list-group-head{color:var(--ink-2);border-bottom:1px solid var(--line);align-items:center;gap:10px;margin-bottom:4px;padding:8px 0;font-size:12px;font-weight:600;display:flex}.list-group-head .pill-tag{background:var(--tint,var(--c1));color:var(--tint-ink,var(--c1-ink));border-radius:999px;padding:3px 9px;font-size:11px;font-weight:600}.list-row{border-bottom:1px solid var(--line);cursor:pointer;border-radius:var(--radius-xs);grid-template-columns:24px 1fr 100px 100px 100px 80px;align-items:center;gap:12px;padding:10px 8px;font-size:13px;display:grid}.list-row:hover{background:var(--panel-2)}.list-row .title-cell{flex-direction:column;gap:2px;display:flex}.list-row .col-hint{color:var(--ink-3);font-size:11px;font-family:var(--font-mono)}.list-row .cell-meta{color:var(--ink-2);font-size:12px;font-family:var(--font-mono)}.timeline{flex:1;padding:18px 20px;overflow:auto}.tl-header{background:var(--bg);z-index:2;border-bottom:1px solid var(--line);grid-template-columns:220px 1fr;align-items:end;margin-bottom:12px;padding-bottom:6px;display:grid;position:sticky;top:0}.tl-days{font-family:var(--font-mono);color:var(--ink-3);grid-auto-columns:1fr;grid-auto-flow:column;font-size:10px;display:grid}.tl-day{border-left:1px solid var(--line);text-align:center;min-width:36px;padding:4px 6px}.tl-day.weekend{color:var(--ink-3);opacity:.6}.tl-day.today{color:var(--accent-ink);font-weight:700}.tl-lane{border-bottom:1px dashed var(--line);grid-template-columns:220px 1fr;align-items:center;gap:0;padding:6px 0;display:grid}.tl-lane-label{align-items:center;gap:8px;padding-right:12px;font-size:13px;display:flex}.tl-lane-label .pill-tag{background:var(--tint);color:var(--tint-ink);border-radius:999px;padding:2px 7px;font-size:10px;font-weight:600}.tl-track{height:28px;position:relative}.tl-ribbon{background:var(--tint);color:var(--tint-ink);white-space:nowrap;cursor:pointer;border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;padding:0 10px;font-size:11px;font-weight:500;display:flex;position:absolute;top:4px;bottom:4px;overflow:hidden}.tl-ribbon:hover{border-color:var(--tint-ink)}.tl-today-line{background:var(--accent);z-index:1;width:1px;position:absolute;top:0;bottom:0}.tl-today-line:before{content:"HOY";font-family:var(--font-mono);color:var(--accent);background:var(--bg);padding:1px 4px;font-size:9px;position:absolute;top:-16px;left:-14px}.scrim{z-index:30;opacity:0;pointer-events:none;background:oklch(20% .01 260/.35);transition:all .18s;position:fixed;inset:0}.scrim.open{opacity:1;pointer-events:auto}.drawer{background:var(--panel);border-left:1px solid var(--line);z-index:31;flex-direction:column;width:440px;max-width:92vw;transition:transform .22s cubic-bezier(.2,.8,.2,1);display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-12px 0 40px oklch(20% .01 260/.08)}.drawer.open{transform:translate(0)}.drawer.drawer--meta{width:min(720px,100vw - 48px);max-width:100%}.drawer-head{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:14px 18px;display:flex}.drawer-body{flex-direction:column;flex:1;gap:18px;padding:16px 18px;display:flex;overflow-y:auto}.drawer-title{letter-spacing:-.02em;text-wrap:pretty;outline:0;font-size:20px;font-weight:600;line-height:1.2}.drawer-title:focus{border-bottom:2px solid var(--accent)}.field-row{grid-template-columns:110px 1fr;align-items:start;gap:8px;font-size:13px;display:grid}.field-label{color:var(--ink-3);font-size:12px;font-family:var(--font-mono);padding-top:4px}.field-value{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.date-input,.text-input{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-xs);outline:0;padding:5px 9px;font-size:13px}.date-input:focus,.text-input:focus{border-color:var(--accent)}.select-prio{gap:4px;display:inline-flex}.select-prio button{background:var(--panel-2);color:var(--ink-2);font-size:11px;font-family:var(--font-mono);border-radius:999px;padding:3px 8px}.select-prio button.active.high{color:oklch(45% .14 25);background:oklch(94% .06 25)}.select-prio button.active.med{color:oklch(45% .12 70);background:oklch(94% .05 70)}.select-prio button.active.low{color:oklch(45% .1 220);background:oklch(94% .04 220)}.checklist{flex-direction:column;gap:4px;display:flex}.check-item{border-radius:var(--radius-xs);align-items:center;gap:8px;padding:5px 6px;display:flex}.check-item:hover{background:var(--panel-2)}.check-item input[type=checkbox]{appearance:none;border:1.5px solid var(--line-2);cursor:pointer;border-radius:4px;flex-shrink:0;place-items:center;width:14px;height:14px;display:grid}.check-item input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}.check-item input[type=checkbox]:checked:after{content:"";border-bottom:1.5px solid #fff;border-left:1.5px solid #fff;width:6px;height:3px;transform:rotate(-45deg)translate(1px,-1px)}.check-item span{font-size:13px}.check-item span.done{color:var(--ink-3);text-decoration:line-through}.check-item input[type=text]{background:0 0;border:0;outline:0;flex:1;font-size:13px}.add-check{color:var(--ink-3);border-radius:var(--radius-xs);align-items:center;gap:8px;padding:5px 6px;font-size:13px;display:flex}.add-check:hover{background:var(--panel-2);color:var(--ink)}.comments{flex-direction:column;gap:10px;display:flex}.comment{gap:8px;font-size:13px;display:flex}.comment .comment-body{background:var(--panel-2);border-radius:var(--radius-xs);flex:1;padding:8px 10px}.comment .who{font-size:12px;font-weight:500}.comment .when{color:var(--ink-3);font-size:11px;font-family:var(--font-mono);margin-left:4px}.comment-input{align-items:flex-start;gap:8px;display:flex}.comment-input textarea{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-xs);resize:none;outline:0;flex:1;min-height:60px;padding:8px 10px;font-size:13px}.comment-input textarea:focus{border-color:var(--accent)}.popover{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-drag);z-index:40;min-width:220px;max-height:280px;padding:6px;position:absolute;overflow-y:auto}.popover-item{border-radius:var(--radius-xs);cursor:pointer;align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.popover-item:hover{background:var(--panel-2)}.popover-item.selected{background:var(--accent-soft);color:var(--accent-ink)}.popover-item .avatar{width:22px;height:22px;font-size:10px}.popover-item .role{color:var(--ink-3);font-size:11px;font-family:var(--font-mono);margin-left:auto}.popover-head{color:var(--ink-3);font-size:11px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;padding:8px 8px 6px}.popover-input{border:1px solid var(--line);background:var(--panel-2);border-radius:var(--radius-xs);outline:0;width:100%;margin-bottom:4px;padding:6px 8px}.popover-input:focus{border-color:var(--accent)}.tweaks{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);width:280px;box-shadow:var(--shadow-drag);z-index:50;font-size:13px;position:fixed;bottom:16px;right:16px;overflow:hidden}.tweaks-head{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:10px 12px;font-weight:600;display:flex}.tweaks-head .mono{color:var(--ink-3);margin-left:auto;font-size:11px}.tweaks-body{flex-direction:column;gap:14px;padding:12px;display:flex}.tweak-group{flex-direction:column;gap:6px;display:flex}.tweak-label{font-size:11px;font-family:var(--font-mono);color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{border:2px solid var(--panel);width:22px;height:22px;box-shadow:0 0 0 1px var(--line);cursor:pointer;border-radius:50%}.swatch.active{box-shadow:0 0 0 2px var(--ink)}.seg{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:2px;display:flex}.seg button{color:var(--ink-2);border-radius:7px;flex:1;padding:5px 10px;font-size:12px}.seg button.active{background:var(--panel);color:var(--ink);box-shadow:var(--shadow-1)}.hidden{display:none!important}.col-c1{--tint:var(--c1);--tint-ink:var(--c1-ink)}.col-c2{--tint:var(--c2);--tint-ink:var(--c2-ink)}.col-c3{--tint:var(--c3);--tint-ink:var(--c3-ink)}.col-c4{--tint:var(--c4);--tint-ink:var(--c4-ink)}.col-c5{--tint:var(--c5);--tint-ink:var(--c5-ink)}.ico{stroke-width:1.6px;width:16px;height:16px}.ico-sm{stroke-width:1.6px;width:13px;height:13px}.ico-lg{stroke-width:1.6px;width:18px;height:18px}
