:root{--bg: #0B0B0E;--surface: #141419;--surface-2: #1C1C22;--surface-3: #26262E;--line: #2A2A32;--line-strong: #3A3A45;--text: #F2F2F4;--text-dim: #9A9AA6;--text-mute: #62626E;--red: #FF2419;--red-dim: #B3140C;--green: #00E58C;--amber: #FFB020;--p1: #4C8DFF;--p2: #C77DFF;--p3: #00D9C0;--p4: #FF9F45;--p5: #7AE582;--p6: #FF6FA5;--r-sm: 2px;--r-md: 3px;--r-lg: 4px;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--ease: cubic-bezier(.16, 1, .3, 1);--fast: .12s;--base: .18s;--font-display: "Unbounded", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--font-text: "JetBrains Mono", ui-monospace, monospace}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-text);font-size:14px;line-height:22px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-variant-numeric:tabular-nums}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none}ul,ol{list-style:none}a{color:inherit;text-decoration:none}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid rgba(255,36,25,.35);outline-offset:2px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:999px}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);height:34px;padding:0 var(--s-4);border-radius:var(--r-sm);font-size:13px;line-height:16px;font-weight:500;letter-spacing:.01em;min-width:32px;transition:filter var(--fast) var(--ease),background var(--fast) var(--ease),transform var(--fast) var(--ease)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--red);color:#0b0b0e}.btn-primary:hover:not(:disabled){filter:brightness(1.12)}.btn-primary:active:not(:disabled){transform:translateY(1px)}.btn-secondary{background:transparent;border:1px solid var(--line-strong);color:var(--text)}.btn-secondary:hover:not(:disabled){background:var(--surface-3)}.btn-ghost{color:var(--text-dim);padding:0 var(--s-3)}.btn-ghost:hover:not(:disabled){color:var(--text)}.btn-danger{color:var(--red);padding:0 var(--s-3)}.btn-danger:hover:not(:disabled){background:var(--surface-3)}.field{display:flex;flex-direction:column;gap:var(--s-2)}.field-label{font-size:13px;color:var(--text-dim)}.field-hint{font-size:12px;line-height:16px;color:var(--text-mute)}.field-counter{font-size:11px;color:var(--text-mute);font-family:var(--font-mono)}.field-row{display:flex;justify-content:space-between;align-items:baseline}.field-error{font-size:12px;line-height:16px;color:var(--red)}.input,.textarea,.select{width:100%;background:var(--surface-3);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--text);padding:0 var(--s-3);height:34px;transition:border-color var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}.textarea{padding:var(--s-2) var(--s-3);height:auto;resize:vertical;line-height:20px}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--line-strong);box-shadow:0 0 0 2px #ff241959}.input.has-error,.textarea.has-error{border-color:var(--red)}.input::placeholder,.textarea::placeholder{color:var(--text-mute)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:flex-start;justify-content:center;padding-top:12vh;z-index:50}.modal{width:440px;max-width:calc(100vw - var(--s-5));background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-lg);padding:var(--s-5);display:flex;flex-direction:column;gap:var(--s-4)}.modal-title{font-family:var(--font-display);font-size:20px;line-height:24px;font-weight:600;letter-spacing:-.02em}.modal-actions{display:flex;justify-content:flex-end;gap:var(--s-2);margin-top:var(--s-1)}.toast-stack{position:fixed;bottom:var(--s-5);right:var(--s-5);display:flex;flex-direction:column;gap:var(--s-2);z-index:100}.toast{min-width:240px;max-width:360px;background:var(--surface-2);border:1px solid var(--line-strong);border-left:2px solid var(--green);border-radius:var(--r-sm);padding:var(--s-3) var(--s-4);font-size:13px;color:var(--text);animation:toast-in var(--base) var(--ease)}.toast.error{border-left-color:var(--red)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.sidebar{width:240px;flex:0 0 240px;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;height:100%}.brand{display:flex;flex-direction:column;gap:2px;padding:var(--s-5) var(--s-4) var(--s-4)}.brand-mark{font-family:var(--font-display);font-size:16px;font-weight:600;letter-spacing:-.01em}.brand-mark:first-letter{color:var(--red)}.brand-sub{font-size:10px;letter-spacing:.18em;color:var(--text-mute)}.nav{display:flex;flex-direction:column;padding:var(--s-2) 0}.nav-item{position:relative;height:36px;display:flex;align-items:center;padding-left:var(--s-4);color:var(--text-dim);font-size:14px;transition:color var(--fast) var(--ease)}.nav-item:hover{color:var(--text)}.nav-item.active{color:var(--text);background:var(--surface-2)}.nav-item.active:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--red)}.sidebar-spacer{flex:1}.sidebar-user{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-4);border-top:1px solid var(--line);color:var(--text-dim);font-size:13px}.user-dot{width:8px;height:8px;border-radius:50%;background:var(--green);flex:0 0 8px}.user-login{flex:1;font-size:12px;color:var(--text);letter-spacing:.04em}.user-logout{font-size:12px;color:var(--text-mute);padding:2px 6px;border-radius:var(--r-sm);transition:color var(--fast) var(--ease),background var(--fast) var(--ease)}.user-logout:hover{color:var(--text);background:var(--surface-3)}.topbar{height:56px;flex:0 0 56px;display:flex;align-items:center;gap:var(--s-4);padding:0 var(--s-5);border-bottom:1px solid var(--line)}.topbar-title{font-family:var(--font-display);font-size:20px;line-height:24px;font-weight:600;letter-spacing:-.02em}.topbar-spacer{flex:1}.filter-chips{display:flex;align-items:center;gap:var(--s-2);overflow-x:auto;padding-bottom:1px}.chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 var(--s-3);white-space:nowrap;border-radius:var(--r-sm);border:1px solid var(--line);background:transparent;color:var(--text-mute);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;transition:color var(--fast) var(--ease),background var(--fast) var(--ease),border-color var(--fast) var(--ease)}.chip:hover{color:var(--text-dim);border-color:var(--line-strong)}.chip.active{background:var(--surface-3);color:var(--text);font-weight:500;border-color:var(--line-strong);box-shadow:inset 0 0 0 1px var(--line-strong)}.chip.active:before{content:"✓";font-size:10px;color:var(--text);margin-right:1px}.chip-dot{width:7px;height:7px;border-radius:50%;flex:0 0 7px;opacity:.35;transition:opacity var(--fast) var(--ease)}.chip.active .chip-dot{opacity:1}.board{flex:1;min-height:0;display:flex;gap:var(--s-3);padding:var(--s-5);overflow-x:auto;overflow-y:hidden}.column{flex:1 1 0;min-width:200px;display:flex;flex-direction:column;background:var(--surface);border-radius:var(--r-lg);padding:var(--s-3);transition:background var(--fast) var(--ease)}.column.is-over{background:var(--surface-2)}.column-head{display:flex;align-items:baseline;gap:var(--s-2);padding:var(--s-1) var(--s-1) var(--s-3)}.column-name{font-family:var(--font-mono);font-size:11px;line-height:16px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim)}.column-count{font-family:var(--font-mono);font-size:11px;line-height:16px;color:var(--text-mute)}.column-count.warn{color:var(--amber)}.column-body{display:flex;flex-direction:column;gap:var(--s-2);overflow-y:auto;flex:1;min-height:40px}.column-empty{border:1px dashed var(--line-strong);border-radius:var(--r-md);padding:var(--s-4);text-align:center;color:var(--text-mute);font-size:13px}.card{position:relative;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-3);min-height:72px;display:flex;flex-direction:column;gap:var(--s-2);cursor:pointer;transition:border-color var(--fast) var(--ease),background var(--fast) var(--ease)}.card:hover{background:var(--surface-3)}.card:focus-visible{outline:none}.card .corner{position:absolute;width:10px;height:10px;border-color:var(--red);border-style:solid;border-width:0;opacity:0;transition:opacity .16s var(--ease),transform .16s var(--ease);pointer-events:none}.card .corner.tl{top:-1px;left:-1px;border-top-width:1px;border-left-width:1px;transform:translate(2px,2px)}.card .corner.tr{top:-1px;right:-1px;border-top-width:1px;border-right-width:1px;transform:translate(-2px,2px)}.card .corner.bl{bottom:-1px;left:-1px;border-bottom-width:1px;border-left-width:1px;transform:translate(2px,-2px)}.card .corner.br{bottom:-1px;right:-1px;border-bottom-width:1px;border-right-width:1px;transform:translate(-2px,-2px)}.card:hover .corner,.card:focus-visible .corner,.card.dragging .corner{opacity:1;transform:translate(0)}.card.dragging{transform:rotate(1.5deg);opacity:.92;z-index:5}.card.placeholder{background:transparent;border:1px dashed var(--line-strong)}.card.placeholder *{visibility:hidden}.card-top{display:flex;align-items:center;gap:var(--s-2)}.card-title{font-size:14px;line-height:20px;font-weight:500;letter-spacing:-.01em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-bottom{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);margin-top:auto}.plabel{display:inline-flex;align-items:center;gap:6px}.plabel-dot{width:6px;height:6px;border-radius:50%;flex:0 0 6px}.plabel-code{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--text-mute)}.prio{font-family:var(--font-mono);font-size:11px;color:var(--text-mute)}.prio.blocker{color:var(--red);font-weight:500}.assignee{font-size:13px;color:var(--text-dim)}.projects-wrap{flex:1;min-height:0;overflow-y:auto;padding:var(--s-5)}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--s-3)}.pcard{display:flex;flex-direction:column;gap:var(--s-2);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-4);text-align:left;transition:border-color var(--fast) var(--ease),background var(--fast) var(--ease)}.pcard:hover{background:var(--surface-2);border-color:var(--line-strong)}.pcard-head{display:flex;align-items:center;gap:var(--s-2)}.pcard-name{font-size:14px;font-weight:500;letter-spacing:-.01em}.pcard-desc{font-size:13px;line-height:18px;color:var(--text-dim);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:36px}.pcard-foot{display:flex;justify-content:space-between;align-items:baseline;margin-top:var(--s-1);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--text-mute)}.empty{max-width:420px;margin:12vh auto 0;text-align:center;display:flex;flex-direction:column;gap:var(--s-3);align-items:center}.empty-title{font-family:var(--font-display);font-size:20px;line-height:24px;font-weight:600;letter-spacing:-.02em}.empty-text{color:var(--text-dim);font-size:14px}.users-wrap{flex:1;min-height:0;overflow-y:auto;padding:var(--s-5)}.utable{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}.utable th{text-align:left;font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);font-weight:500;padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--line)}.utable td{padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--line);font-size:14px;vertical-align:middle}.utable tr:last-child td{border-bottom:none}.utable tr:hover td{background:var(--surface-2)}.ulogin{font-family:var(--font-mono);letter-spacing:.04em}.udate{font-family:var(--font-mono);font-size:11px;color:var(--text-mute)}.role-tag{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--text-mute)}.role-tag.admin{color:var(--amber)}.urow-actions{display:flex;gap:var(--s-2);justify-content:flex-end}.self-badge{font-size:11px;color:var(--text-mute)}.link-btn{font-size:12px;color:var(--text-dim);text-decoration:underline;text-underline-offset:2px}.link-btn:hover{color:var(--text)}.task-wrap{flex:1;min-height:0;overflow-y:auto;padding:var(--s-5)}.task-inner{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:var(--s-5)}.task-back{display:inline-flex;align-items:center;gap:var(--s-2);color:var(--text-dim);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em}.task-back:hover{color:var(--text)}.task-head{display:flex;align-items:flex-start;gap:var(--s-3)}.task-head .plabel-code{font-size:12px}.task-title{flex:1;font-family:var(--font-display);font-size:20px;line-height:26px;font-weight:600;letter-spacing:-.02em}.task-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-4);display:flex;flex-direction:column;gap:var(--s-4)}.meta-grid{display:grid;grid-template-columns:120px 1fr;gap:var(--s-3);align-items:center}.meta-key{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--text-mute);text-transform:uppercase}.meta-val{font-size:14px}.task-desc{white-space:pre-wrap;line-height:22px;color:var(--text)}.task-desc.empty{color:var(--text-mute)}.due-overdue{color:var(--amber)}.section-title{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);margin-bottom:var(--s-3)}.feed{display:flex;flex-direction:column;gap:var(--s-3)}.feed-item{display:flex;flex-direction:column;gap:2px}.feed-meta{display:flex;gap:var(--s-2);align-items:baseline;font-family:var(--font-mono);font-size:11px;color:var(--text-mute)}.feed-author{color:var(--text-dim)}.feed-body{font-size:14px;line-height:20px}.feed-item.system .feed-body{color:var(--text-dim);font-family:var(--font-mono);font-size:12px}.feed-empty{color:var(--text-mute);font-size:13px}.comment-box{display:flex;gap:var(--s-2);margin-top:var(--s-4)}.comment-box .textarea{flex:1}.attach-list{display:flex;flex-direction:column;gap:var(--s-2)}.attach-row{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm)}.attach-name{flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attach-size{font-family:var(--font-mono);font-size:11px;color:var(--text-mute)}.attach-empty{color:var(--text-mute);font-size:13px;margin-bottom:var(--s-3)}.file-input-row{margin-top:var(--s-3);display:flex;align-items:center;gap:var(--s-3)}.file-input-row input[type=file]{font-size:12px;color:var(--text-dim)}.task-actions{display:flex;gap:var(--s-2)}.ideas-wrap{flex:1;min-height:0;overflow-y:auto;padding:var(--s-5)}.ideas-inner{max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:var(--s-5)}.idea-form{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s-4);display:flex;flex-direction:column;gap:var(--s-3)}.idea-form-actions{display:flex;justify-content:flex-end}.ideas-grid{display:flex;flex-direction:column;gap:var(--s-3)}.idea-card{position:relative;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--s-4);display:flex;flex-direction:column;gap:var(--s-2)}.idea-title{font-size:15px;font-weight:500;letter-spacing:-.01em}.idea-body{font-size:14px;line-height:20px;color:var(--text-dim);white-space:pre-wrap}.idea-meta{display:flex;gap:var(--s-2);align-items:baseline;font-family:var(--font-mono);font-size:11px;color:var(--text-mute)}.idea-author{color:var(--text-dim)}.ideas-empty{text-align:center;color:var(--text-mute);font-size:14px;padding:var(--s-6) 0}.auth-screen{height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:var(--s-4)}.auth-card{position:relative;width:360px;max-width:100%;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-lg);padding:var(--s-6) var(--s-5) var(--s-5);display:flex;flex-direction:column;gap:var(--s-4)}.auth-card .corner{position:absolute;width:14px;height:14px;border-color:var(--red);border-style:solid;border-width:0;pointer-events:none}.auth-card .corner.tl{top:-1px;left:-1px;border-top-width:1px;border-left-width:1px}.auth-card .corner.tr{top:-1px;right:-1px;border-top-width:1px;border-right-width:1px}.auth-card .corner.bl{bottom:-1px;left:-1px;border-bottom-width:1px;border-left-width:1px}.auth-card .corner.br{bottom:-1px;right:-1px;border-bottom-width:1px;border-right-width:1px}.auth-brand{display:flex;flex-direction:column;gap:2px;margin-bottom:var(--s-1)}.auth-mark{font-family:var(--font-display);font-size:20px;font-weight:600;letter-spacing:-.01em}.auth-mark:first-letter{color:var(--red)}.auth-sub{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;color:var(--text-mute)}.auth-title{font-size:14px;color:var(--text-dim)}.auth-switch{font-size:13px;color:var(--text-mute);text-align:center;margin-top:var(--s-1)}.auth-switch button{color:var(--text-dim);text-decoration:underline;text-underline-offset:2px}.auth-switch button:hover{color:var(--text)}.shell{display:flex;height:100%;overflow:hidden}.main{flex:1;min-width:0;display:flex;flex-direction:column;height:100%}
