:root{--bg: #0f1117;--bg-raised: #171a23;--bg-card: #1e2230;--border: #2a2f42;--text: #e6e8ef;--text-muted: #8b91a7;--accent: #4f7cff;--accent-hover: #6890ff;--danger: #e5534b;--radius: 8px}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);font-size:14px}h1{font-size:20px;margin:0}h2{font-size:15px;margin:0}.app{display:flex;flex-direction:column;height:100vh}.topnav{display:flex;align-items:center;gap:16px;padding:0 20px;height:52px;background:var(--bg-raised);border-bottom:1px solid var(--border);flex-shrink:0}.topnav a{color:var(--text-muted);text-decoration:none}.topnav a:hover{color:var(--text)}.brand{font-weight:700;font-size:16px;color:var(--accent)!important;letter-spacing:.3px}.spacer{flex:1}.version{margin-left:-8px}.nav-logo{display:block;margin:0 4px;flex-shrink:0}.center{text-align:center;margin:0}.user-chip{color:var(--text-muted);font-size:13px}.main{flex:1;overflow:auto;display:flex;flex-direction:column}.page{padding:24px;max-width:1680px;width:100%;margin:0 auto}.page-header{display:flex;align-items:center;gap:16px;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap}.center-page{flex:1;display:flex;align-items:center;justify-content:center;min-height:60vh}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.login-card{width:340px;display:flex;flex-direction:column;gap:14px;padding:28px}.login-card h1{text-align:center;font-size:24px}.login-card p{text-align:center;margin:0}label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--text-muted)}input,select,textarea{background:var(--bg-raised);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:8px 10px;font:inherit;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent)}textarea{resize:vertical}.btn{border:1px solid var(--border);background:var(--bg-card);color:var(--text);padding:8px 14px;border-radius:6px;cursor:pointer;font:inherit}.btn:hover{border-color:var(--accent)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{background:transparent}.btn-danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn-start{background:#4f7cff26;border-color:var(--accent);color:var(--accent);font-weight:600}.btn-start:hover{background:#4f7cff4d}.btn-complete{background:#57ab5a26;border-color:#57ab5a;color:#57ab5a;font-weight:600}.btn-complete:hover{background:#57ab5a4d;border-color:#57ab5a}.attachments{display:flex;flex-direction:column;gap:4px}.attachment-row{display:flex;align-items:center;gap:8px}.file-link{font-size:13px;color:var(--accent);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-add{background:transparent;border:1px dashed var(--border);color:var(--text-muted);width:100%;text-align:left}.error{color:var(--danger);font-size:13px}.muted{color:var(--text-muted)}.small{font-size:12px}.form-row{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-bottom:20px}.form-row .grow{flex:1;min-width:200px}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.project-card{text-decoration:none;color:var(--text);display:block}.project-card:hover{border-color:var(--accent)}.project-card h2{margin:6px 0}.project-card-top{display:flex;align-items:center;gap:4px}.project-card-top .btn-x{font-size:14px;opacity:0;transition:opacity .15s}.project-card:hover .btn-x{opacity:1}.project-card label{margin-top:8px}.project-actions{display:flex;gap:8px;margin-top:12px}.project-key{display:inline-block;background:#4f7cff26;color:var(--accent);font-weight:700;font-size:12px;padding:2px 8px;border-radius:4px}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}.table th{color:var(--text-muted);font-weight:600;font-size:12px;text-transform:uppercase}.board-page{display:flex;flex-direction:column;flex:1;padding:20px;min-height:0}.filters{display:flex;gap:8px;align-items:center}.board{display:flex;gap:14px;overflow-x:auto;flex:1;align-items:flex-start;padding-bottom:12px}.column{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);min-width:280px;width:280px;display:flex;flex-direction:column;max-height:100%}.column.drag-over{border-color:var(--accent)}.column-header{display:flex;justify-content:space-between;padding:10px 12px;font-weight:600;border-bottom:1px solid var(--border)}.count{color:var(--text-muted);font-weight:400}.column-body{padding:10px;display:flex;flex-direction:column;gap:8px;overflow-y:auto}.item-card{background:var(--bg-card);border:1px solid var(--border);border-radius:6px;padding:10px;cursor:pointer}.item-card:hover{border-color:var(--accent)}.item-top{display:flex;gap:6px;margin-bottom:6px}.item-title{margin-bottom:8px;line-height:1.35}.item-bottom{display:flex;gap:6px;align-items:center}.item-key{color:var(--text-muted);font-size:12px;font-weight:600}.chip{font-size:11px;padding:1px 7px;border-radius:10px;background:var(--bg-raised);border:1px solid var(--border);color:var(--text-muted);text-transform:capitalize}.chip.label{font-size:10px}.type-bug{color:#e5534b;border-color:#e5534b66}.type-feature{color:#57ab5a;border-color:#57ab5a66}.type-business{color:#c69026;border-color:#c6902666}.priority-high{color:#e0823d;border-color:#e0823d66}.priority-urgent{color:#e5534b;border-color:#e5534b80}.role-admin{color:var(--accent);border-color:#4f7cff66}.type-report{color:#4f7cff;border-color:#4f7cff66}.type-interface{color:#a371f7;border-color:#a371f766}.type-conversion{color:#39c5cf;border-color:#39c5cf66}.type-enhancement{color:#e0823d;border-color:#e0823d66}.type-form{color:#db61a2;border-color:#db61a266}.type-workflow{color:#57ab5a;border-color:#57ab5a66}.type-activity{color:#8b91a7;border-color:#8b91a780}.st-bug{color:#e5534b;border-color:#e5534b66}.st-issue{color:#e0823d;border-color:#e0823d66}.st-risk{color:#a371f7;border-color:#a371f766}.cx-simple{color:#57ab5a;border-color:#57ab5a66}.cx-medium{color:#e0823d;border-color:#e0823d66}.cx-complex{color:#e5534b;border-color:#e5534b80}.ricefw-summary{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.chip-btn{cursor:pointer;font:inherit;font-size:11px;background:transparent}.chip-btn:hover{border-color:currentColor;background:#ffffff0a}.chip-btn.active{background:#4f7cff2e;border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.type-none{color:var(--text-muted);border-color:var(--border)}.register-row{cursor:pointer}.quick-add{display:flex;flex-direction:column;gap:6px}.quick-add-row{display:flex;gap:6px;align-items:center}.quick-add-row select{flex:1;padding:4px 8px;font-size:12px}.register-row:hover td{background:#4f7cff0f}.avatar{width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;z-index:10}.modal{background:var(--bg-raised);border:1px solid var(--border);border-radius:10px;width:100%;max-width:1280px;max-height:86vh;overflow-y:auto;padding:24px;display:flex;flex-direction:column;gap:12px}.modal-header{display:flex;align-items:center;gap:8px}.modal-title{font-size:18px;font-weight:600;background:transparent;border:1px solid transparent;padding:6px 8px;margin:0}input.modal-title:hover,input.modal-title:focus{border-color:var(--border);background:var(--bg-card)}.modal-grid{display:grid;grid-template-columns:1fr 440px;gap:24px}@media(max-width:900px){.modal-grid{grid-template-columns:1fr}}.modal-main{display:flex;flex-direction:column;gap:8px;min-width:0}.modal-side{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px;align-content:start}.modal-side>.muted.small{grid-column:1 / -1}@media(max-width:480px){.modal-side{grid-template-columns:1fr}}.field-label{font-size:12px;text-transform:uppercase;color:var(--text-muted);font-weight:600;margin-top:8px}.comments{display:flex;flex-direction:column;gap:10px}.comment{background:var(--bg-card);border:1px solid var(--border);border-radius:6px;padding:10px}.comment-meta{display:flex;gap:8px;margin-bottom:4px;font-size:12px}.comment-form{display:flex;gap:8px}.comment-form input{flex:1}.activity-row{font-size:12px;padding:3px 0}.tabs{display:flex;gap:4px;margin-bottom:16px;border-bottom:1px solid var(--border)}.tab{padding:8px 14px;color:var(--text-muted);text-decoration:none;border-bottom:2px solid transparent}.tab:hover{color:var(--text)}.tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.sprint-section{margin-bottom:16px;padding:12px 16px}.sprint-header{display:flex;align-items:center;gap:10px;padding-bottom:8px}.backlog-row{display:flex;align-items:center;gap:10px;padding:7px 4px;border-top:1px solid var(--border)}.backlog-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.backlog-row select{padding:4px 8px;font-size:12px}.backlog-row.indent{padding-left:32px;border-top:1px dashed var(--border)}.backlog-row.clickable{cursor:pointer}.backlog-row.clickable:hover{background:#4f7cff0f}.backlog-row.clickable:hover .backlog-title{color:var(--accent)}.subtasks{display:flex;flex-direction:column;gap:4px}.subtask-row{display:flex;align-items:center;gap:10px;padding:7px 10px;background:var(--bg-card);border:1px solid var(--border);border-radius:6px;cursor:pointer}.subtask-row:hover{border-color:var(--accent)}.subtask-row.done .subtask-title{text-decoration:line-through;color:var(--text-muted)}.subtask-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-link{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:12px;padding:2px 6px}.chev{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px;padding:0 2px;flex-shrink:0}.chev:hover,.btn-link:hover{color:var(--accent)}.page-wide{max-width:none}.gantt-card{padding:0;overflow:hidden}.gantt-scroll{overflow-x:auto}.gantt-row{display:flex;border-bottom:1px solid var(--border);min-height:32px;align-items:stretch}.gantt-header{position:sticky;top:0;background:var(--bg-card);z-index:2}.gantt-label{width:280px;min-width:280px;padding:7px 10px;border-right:1px solid var(--border);display:flex;gap:8px;align-items:center;overflow:hidden}.gantt-label.indent{padding-left:34px}.gantt-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}.gantt-timeline{position:relative;flex-shrink:0}.gantt-daycol{position:absolute;top:0;bottom:0;font-size:10px;color:var(--text-muted);padding:8px 0 0 3px;border-left:1px solid transparent}.gantt-daycol.week-start{border-left:1px solid var(--border)}.gantt-gridline{position:absolute;top:0;bottom:0;width:1px;background:var(--border);opacity:.5}.gantt-weekend{position:absolute;top:0;bottom:0;background:#e5534b12;border-left:1px solid rgba(229,83,75,.12);border-right:1px solid rgba(229,83,75,.12)}.gantt-proj-target{position:absolute;top:0;bottom:0;width:3px;background:#c69026;opacity:.9;z-index:1}.gantt-proj-target-sample{display:inline-block;width:3px;height:12px;background:#c69026;border-radius:2px;margin-left:12px}.gantt-sprint-target{position:absolute;top:0;bottom:0;width:2px;background:#39c5cf;opacity:.85;z-index:1}.gantt-sprint-target-sample{display:inline-block;width:3px;height:12px;background:#39c5cf;border-radius:2px;margin-left:12px}.gantt-weekend-sample{display:inline-block;width:22px;height:12px;background:#e5534b26;border:1px solid rgba(229,83,75,.3);margin-left:12px}.gantt-bar{position:absolute;top:8px;height:16px;background:var(--accent);border-radius:4px;opacity:.9}.gantt-bar.parent{background:#4f7cff59;border:1px solid var(--accent)}.gantt-bar.done{background:#57ab5a}.gantt-bar-done{position:absolute;left:0;top:0;bottom:0;background:#57ab5a;border-radius:4px 0 0 4px;max-width:100%}.gantt-bar.overdue{background:#e5534b}.gantt-target{position:absolute;top:4px;bottom:4px;width:3px;background:#e5534b;border-radius:2px}.gantt-clickable{cursor:pointer}.gantt-clickable:hover .gantt-label{background:#4f7cff14}.gantt-clickable:hover .gantt-title{color:var(--accent)}.gantt-legend{display:flex;align-items:center;gap:8px;padding:10px 12px}.gantt-bar-sample{display:inline-block;width:22px;height:10px;border-radius:3px;background:var(--accent);margin-left:12px}.gantt-bar-sample.done{background:#57ab5a}.gantt-bar-sample.overdue{background:#e5534b}.gantt-target-sample{display:inline-block;width:3px;height:12px;background:#e5534b;border-radius:2px;margin-left:12px}.sprint-active{color:#57ab5a;border-color:#57ab5a66}.sprint-edit{gap:12px;align-items:flex-end;flex-wrap:wrap}.sprint-edit label{font-size:12px}.sprint-edit .grow{flex:1;min-width:160px}.sprint-planned{color:var(--text-muted)}.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}.dash-grid .card h2{margin-bottom:12px}.dash-wide{grid-column:1 / -1}.chart{width:100%;height:auto}.chart-label{fill:var(--text-muted);font-size:11px}.chart-value{fill:var(--text);font-size:12px;font-weight:600}.bell-wrap{position:relative}.bell{position:relative;padding:6px 10px}.badge{position:absolute;top:-4px;right:-4px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;border-radius:10px;padding:1px 5px}.bell-panel{position:absolute;right:0;top:40px;width:320px;max-height:400px;overflow-y:auto;z-index:20;padding:12px}.bell-header{font-weight:600;margin-bottom:8px}.bell-row{padding:8px 6px;border-top:1px solid var(--border);font-size:13px}.bell-row.unread{background:#4f7cff14}.links{display:flex;flex-direction:column;gap:6px}.link-row{display:flex;align-items:center;gap:8px}.link-row a{color:var(--accent);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-row a:hover{text-decoration:underline}.kind-commit{color:#57ab5a;border-color:#57ab5a66}.kind-pr{color:var(--accent);border-color:#4f7cff66}.btn-x{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px;padding:2px 4px}.btn-x:hover{color:var(--danger)}.request-row{border-top:1px solid var(--border);padding:10px 4px;display:flex;flex-direction:column;gap:8px}.request-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.request-projects{display:flex;gap:12px;flex-wrap:wrap}.check-label{flex-direction:row;align-items:center;gap:6px;color:var(--text)}.access-cell{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.membership-chip{display:inline-flex;align-items:center;gap:4px}.grant-form{display:inline-flex;align-items:center;gap:6px}.grant-form select{padding:4px 8px;font-size:12px}.btn-sm{padding:4px 10px;font-size:12px}.row-disabled td{opacity:.5}.approval-result{margin-top:10px;padding:10px;border:1px solid rgba(87,171,90,.4);border-radius:6px;color:#57ab5a;font-size:13px;word-break:break-all}.log-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-top:16px}.log-card{padding:16px;text-align:center;font:inherit;color:inherit;cursor:pointer}.log-card:hover{border-color:var(--accent, #1a9cd8)}.log-card.selected{border-color:var(--accent, #1a9cd8);box-shadow:0 0 0 1px var(--accent, #1a9cd8) inset}.log-register{margin-top:20px}.log-register-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}.log-register-head h2{margin:0;font-size:16px}.log-add{display:flex;gap:8px}.log-add input{min-width:260px}.log-row{cursor:pointer}.log-row:hover td{background:#ffffff08}.chip.log-prio-low{background:#b7e4c7;color:#14532d}.chip.log-prio-medium{background:#2f9e44;color:#fff}.chip.log-prio-high{background:#f59f00;color:#221600}.chip.log-prio-urgent{background:#e03131;color:#fff}.chip.rag-green{background:#2f9e44;color:#fff}.chip.rag-amber{background:#f59f00;color:#221600}.chip.rag-red{background:#e03131;color:#fff}.chip.rag-none{background:transparent;border:1px solid var(--border);color:var(--text-muted)}.chip.rag-done{background:transparent;border:1px solid #2f9e44;color:#4cc563}.log-comments-btn{background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer;white-space:nowrap}.log-comments-btn:hover{color:var(--accent);text-decoration:underline}.log-comments-btn.open,.log-comment-cta{color:var(--accent)}.log-comment-chevron{color:var(--text-muted);font-size:10px}.log-comment-snippet{color:var(--text-muted)}.log-thread-row td{background:#ffffff05}.log-thread{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border-left:2px solid var(--accent);margin:4px 0}.log-comment{display:flex;flex-direction:column;gap:2px;font-size:13px}.log-comment-meta{color:var(--text-muted);font-size:12px}.log-comment-editlink{color:var(--accent);cursor:pointer;margin-left:8px;font-size:12px}.log-thread-toggle{background:none;border:none;padding:0;font-size:12px;color:var(--accent);cursor:pointer;align-self:flex-start}.log-thread-toggle:hover{text-decoration:underline}.log-comment-editrow,.log-comment-add{display:flex;gap:8px;align-items:center}.log-comment-add input,.log-comment-editrow input{flex:1;max-width:520px}.ai-draft-list{display:flex;flex-direction:column;gap:10px;max-height:50vh;overflow-y:auto;padding-right:4px}.ai-draft-item{border:1px solid var(--border);border-radius:8px;padding:10px 12px}.ai-draft-item.unchecked{opacity:.45}.ai-draft-row{display:flex;align-items:center;gap:10px;flex-direction:row}.ai-draft-title{flex:1;font-weight:600}.ai-draft-desc{color:var(--text-muted);font-size:13px;margin:6px 0 0 26px}.ai-draft-subs{margin:6px 0 0 26px;padding-left:18px;font-size:13px;color:var(--text-muted)}.ai-proj-head{display:flex;gap:12px}.ai-proj-head label:first-child{flex:1}.log-card-count{font-size:28px;font-weight:700}.log-card-label{font-weight:600;margin-top:2px}.log-card-blurb{color:var(--muted, #8b94a7);font-size:12px;margin-top:4px}.client-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.client-card{display:flex;align-items:center;gap:8px;padding:0}.client-open{flex:1;display:flex;flex-direction:column;gap:4px;align-items:flex-start;background:none;border:none;color:inherit;font:inherit;cursor:pointer;padding:18px;text-align:left}.client-card:hover{border-color:var(--accent)}.client-name{font-size:17px;font-weight:600}.client-actions{display:flex;flex-direction:column;padding-right:8px}.client-edit{display:flex;gap:8px;align-items:center;padding:14px;flex:1}.topnav .client-switch{color:var(--accent);white-space:nowrap}.client-title{display:flex;align-items:center;gap:10px}.client-logo{height:28px;max-width:90px;object-fit:contain;border-radius:4px}.client-info-modal{max-width:700px}.client-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}.client-info-grid .span2{grid-column:1 / -1}.client-logo-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.client-logo-preview{height:44px;max-width:140px;object-fit:contain;border-radius:4px;background:#fff;padding:3px}.client-badge{display:inline-flex;align-items:center;gap:8px}.client-badge img{height:24px;max-width:80px;object-fit:contain;border-radius:3px;background:#fff;padding:1px}.client-badge b{color:var(--text)}.chip.client-status-prospect{border-color:var(--accent);color:var(--accent)}.chip.client-status-dormant{border-color:#f59f00;color:#f59f00}.chip.client-status-ended,.chip.client-status-chip{border-color:var(--danger);color:var(--danger)}.bell-row.clickable{cursor:pointer}.bell-row.clickable:hover{background:#4f7cff14}.inline-select{display:flex;flex-direction:column;gap:2px;font-size:11px;text-transform:uppercase;color:var(--text-muted)}.log-filter-bar{display:flex;align-items:center;gap:10px;margin-bottom:6px}.log-th{position:relative}.log-th-inner{display:inline-flex;align-items:center;gap:4px}.log-filter-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:8px;padding:2px 3px;border-radius:4px}.log-filter-btn:hover{color:var(--text);background:var(--bg-card)}.log-filter-btn.active{color:var(--accent)}.log-filter-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40}.log-filter-pop{position:absolute;top:100%;left:0;z-index:41;min-width:220px;max-width:340px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 24px #00000073;padding:8px;text-transform:none;font-size:13px;font-weight:400;letter-spacing:normal;color:var(--text)}.log-filter-pop>input{width:100%;margin-bottom:6px}.log-filter-actions{display:flex;gap:6px;margin-bottom:6px}.log-filter-actions button{background:var(--bg-raised);border:1px solid var(--border);border-radius:4px;color:var(--text-muted);cursor:pointer;font-size:12px;padding:2px 8px}.log-filter-actions button:hover{color:var(--text)}.log-filter-list{max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.log-filter-opt{display:flex;align-items:flex-start;gap:6px;cursor:pointer;padding:2px 4px;border-radius:4px}.log-filter-opt:hover{background:var(--bg-raised)}.log-filter-opt input{flex-shrink:0;margin-top:3px}.log-filter-opt span{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
