:root{--bg:#f4f7fb;--card:#fff;--text:#1f2937;--muted:#6b7280;--blue:#1f4e78;--line:#dbe3ec;--green:#1f8a5b;--amber:#b7791f;--red:#b42318}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}.wrap{width:100%;max-width:none;margin:0;padding:clamp(12px,1.5vw,28px)}h1{font-size:26px;margin:0 0 6px}.sub{color:var(--muted);margin-bottom:14px}.authbar,.controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.authbar{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:14px}.authbar input,.controls input,.controls select,.controls button,.authbar button{padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text)}button{cursor:pointer}button.primary{background:var(--blue);color:#fff;border-color:var(--blue)}button.danger{color:#9b1c1c}.sync{margin-left:auto;color:var(--muted);font-size:12px}.sync.ok{color:var(--green)}.sync.warn{color:var(--amber)}.sync.error{color:var(--red)}.metrics{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:12px;margin-bottom:16px}.metric{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px}.metric b{font-size:24px;display:block;margin-top:6px}.controls{margin-bottom:14px}.view-switch{display:flex;gap:6px;align-items:center;margin-left:auto}.view-switch button.active{background:var(--blue);color:#fff;border-color:var(--blue)}.tablewrap{width:100%;overflow:auto;max-height:76vh;border:1px solid var(--line);border-radius:12px;background:#fff}table{width:100%;border-collapse:collapse;font-size:13px;min-width:1320px}th,td{padding:9px;border-bottom:1px solid var(--line);vertical-align:top;text-align:left;overflow-wrap:anywhere}th{background:#eaf2f8;position:sticky;top:0;z-index:2;white-space:nowrap;cursor:pointer;user-select:none}td[contenteditable=true]{outline:none;background:#fff}td[contenteditable=true]:focus{box-shadow:inset 0 0 0 2px #7aa7cc;background:#fbfdff}.num{text-align:center;min-width:64px}.long{min-width:200px}.name{min-width:180px}.smallcol{min-width:100px}.bar{height:8px;background:#e8edf3;border-radius:999px;overflow:hidden;min-width:90px;margin-top:5px}.bar>span,.progress-mini span{display:block;height:100%;background:var(--blue)}.cell-select{width:100%;border:0;border-radius:999px;padding:5px 8px;font:inherit;cursor:pointer;outline:none}.status-active{background:#e7f6ed;color:#17603a}.status-planning{background:#fff4db;color:#855d00}.status-future{background:#eef2f7;color:#51606f}.status-idea{background:#f3eef9;color:#65427a}.status-paused{background:#fdecec;color:#9b1c1c}.status-complete{background:#e8f0ff;color:#1f4e78}.priority-high{background:#fdecec;color:#9b1c1c}.priority-medium{background:#fff4db;color:#855d00}.priority-low{background:#edf7f1;color:#19633c}.github-required{background:#e8f0ff;color:#1f4e78}.github-optional{background:#fff4db;color:#855d00}.github-no{background:#eef2f7;color:#51606f}.codex-xs{background:#eef2f7;color:#51606f}.codex-s{background:#edf7f1;color:#19633c}.codex-m{background:#fff4db;color:#855d00}.codex-l{background:#fdecec;color:#9b1c1c}.codex-xl{background:#eadcf8;color:#65318e}.small,.note{color:var(--muted);font-size:12px}.note{margin-top:12px;line-height:1.45}.launch-wrap,.detail-links,.card-launch{display:flex;gap:5px;flex-wrap:wrap;align-items:center}.launch-link,.edit-links{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:4px 8px;background:#fff;color:var(--blue);text-decoration:none;font-size:12px;white-space:nowrap}.remove{border:0;background:transparent;color:#a33;padding:2px 5px;font-size:16px}.kanban{display:grid;grid-template-columns:repeat(6,minmax(245px,1fr));gap:14px;align-items:start;overflow-x:auto;padding-bottom:8px}.kanban-col{background:#edf3f8;border:1px solid var(--line);border-radius:14px;padding:12px;min-height:460px}.kanban-head{display:flex;justify-content:space-between;margin-bottom:10px;font-weight:600}.kanban-count{color:var(--muted);font-size:12px;font-weight:400}.task-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px;box-shadow:0 1px 2px rgba(0,0,0,.04);cursor:grab}.task-card.dragging{opacity:.45}.task-card h3{font-size:14px;margin:8px 0}.task-meta{display:flex;flex-wrap:wrap;gap:6px}.mini-pill{display:inline-block;padding:3px 7px;border-radius:999px;font-size:11px}.card-sub,.card-next,.card-footer{font-size:12px}.card-sub,.card-footer{color:var(--muted)}.card-next{margin:8px 0}.card-footer{display:flex;gap:8px;align-items:center;margin-top:10px}.progress-mini{height:6px;background:#e8edf3;border-radius:999px;overflow:hidden;flex:1}.drop-target{outline:2px dashed #8aa9c4;outline-offset:-4px}.modal-backdrop,.detail-backdrop{position:fixed;inset:0;background:rgba(16,24,40,.38);display:none;align-items:center;justify-content:center;z-index:100;padding:24px}.modal-backdrop.open,.detail-backdrop.open{display:flex}.modal,.detail-modal{background:#fff;border-radius:16px;border:1px solid var(--line);padding:20px;box-shadow:0 18px 60px rgba(0,0,0,.2)}.modal{width:min(680px,92vw)}.detail-modal{width:min(960px,96vw);max-height:90vh;overflow:auto}.modal textarea{width:100%;min-height:190px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.detail-top{display:flex;justify-content:space-between;gap:16px}.detail-top h2{margin:0}.detail-close{border:0;background:transparent;font-size:24px}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}.detail-field{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fbfdff}.detail-field label{display:block;color:var(--muted);font-size:11px;margin-bottom:5px;text-transform:uppercase}.detail-input,.detail-select,.detail-textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 9px;background:#fff;color:var(--text);font:inherit}.detail-textarea{min-height:88px}.detail-wide{grid-column:1/-1}.hidden{display:none!important}@media(max-width:1400px){.kanban{grid-template-columns:repeat(3,minmax(250px,1fr))}}@media(max-width:900px){.metrics{grid-template-columns:repeat(2,1fr)}.kanban{grid-template-columns:1fr}.detail-grid{grid-template-columns:1fr}.sync,.view-switch{margin-left:0}}