:root{--bg: #f6f7fb;--surface: #ffffff;--border: #e7e8ef;--text: #1a1c2b;--text-soft: #6b6f87;--text-faint: #9a9eb5;--accent: #5b4bff;--accent-soft: #efecff;--radius: 12px;--shadow-sm: 0 1px 2px rgba(20, 22, 40, .04), 0 1px 3px rgba(20, 22, 40, .06);--shadow-lg: 0 24px 60px rgba(20, 22, 40, .22);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--c-backlog: #94a3b8;--c-todo: #6366f1;--c-in_progress: #f59e0b;--c-review: #8b5cf6;--c-done: #10b981;--c-blocked: #ef4444}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20;flex-wrap:wrap}.topbar-brand{display:flex;align-items:center;gap:12px}.logo-dot{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#6d5bff,#9d7bff);box-shadow:0 6px 16px #5b4bff59}.brand-title{font-weight:700;font-size:15px;letter-spacing:-.01em}.brand-sub{font-size:12px;color:var(--text-soft)}.topbar-meta{display:flex;align-items:center;gap:22px}.stat{display:flex;flex-direction:column;align-items:flex-end;line-height:1.1}.stat-num{font-weight:700;font-size:16px}.stat-label{font-size:11px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em}.stat--wide .stat-num{font-size:13px;letter-spacing:-.01em}.logout-btn{border:1px solid var(--border);background:var(--surface);color:var(--text-soft);font-size:13px;font-weight:500;padding:8px 14px;border-radius:8px;cursor:pointer;transition:all .15s ease}.logout-btn:hover{border-color:var(--accent);color:var(--accent)}.board{flex:1;display:flex;gap:16px;padding:24px;overflow-x:auto;align-items:flex-start}.column{flex:0 0 290px;width:290px;background:transparent;display:flex;flex-direction:column;max-height:calc(100vh - 130px)}.column-head{display:flex;align-items:center;justify-content:space-between;padding:0 4px 12px;position:sticky;top:0}.column-title{font-weight:600;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-soft);display:flex;align-items:center;gap:8px}.column-head:before{content:""}.column-title:before{content:"";width:9px;height:9px;border-radius:50%;background:var(--dot, var(--c-backlog))}.column--backlog .column-title:before{background:var(--c-backlog)}.column--todo .column-title:before{background:var(--c-todo)}.column--in_progress .column-title:before{background:var(--c-in_progress)}.column--review .column-title:before{background:var(--c-review)}.column--done .column-title:before{background:var(--c-done)}.column--blocked .column-title:before{background:var(--c-blocked)}.column-count{font-size:12px;font-weight:600;color:var(--text-faint);background:var(--surface);border:1px solid var(--border);border-radius:20px;min-width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px}.column-body{display:flex;flex-direction:column;gap:10px;overflow-y:auto;padding:2px}.column-empty{font-size:13px;color:var(--text-faint);text-align:center;padding:20px 0;border:1px dashed var(--border);border-radius:var(--radius)}.card{text-align:left;width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;cursor:pointer;box-shadow:var(--shadow-sm);transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease;font-family:inherit;display:flex;flex-direction:column;gap:9px}.card:hover{transform:translateY(-2px);border-color:#d6d3ff;box-shadow:0 10px 24px #1416281a}.card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.priority{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:3px 8px;border-radius:6px}.priority--high{background:#fee2e2;color:#b91c1c}.priority--medium{background:#fef3c7;color:#b45309}.priority--low{background:#e2e8f0;color:#475569}.card-phase{font-size:11px;color:var(--text-faint);font-weight:500;text-align:right}.card-title{font-weight:600;font-size:14px;line-height:1.35;color:var(--text)}.card-meta{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--text-soft);gap:8px}.pic{display:inline-flex;align-items:center;gap:6px;font-weight:500}.pic:before{content:"";width:18px;height:18px;border-radius:50%;background:var(--accent-soft);border:1px solid #d8d2ff}.dates{color:var(--text-faint)}.card-hours{display:flex;gap:6px;flex-wrap:wrap}.hours{font-size:11px;font-weight:600;padding:2px 7px;border-radius:6px}.hours--est{background:#eef2ff;color:#4338ca}.hours--act{background:#ecfdf5;color:#047857}.card-progress{display:flex;align-items:center;gap:8px}.card-progress-track{position:relative;flex:1;height:6px;overflow:hidden;border-radius:999px;background:#edf0f7}.card-progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#6d5bff,#9d7bff)}.card-progress-label{font-size:11px;font-weight:700;color:var(--accent)}.card-update,.card-action{border-top:1px solid var(--border);padding-top:9px}.card-action{border-color:#fecaca}.card-update-label{display:block;margin-bottom:4px;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint)}.card-update p,.card-action p{margin:0;color:var(--text-soft);font-size:12px;line-height:1.45}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#12142673;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;overflow-y:auto;z-index:50}.modal{background:var(--surface);border-radius:16px;width:100%;max-width:640px;padding:28px;box-shadow:var(--shadow-lg);position:relative;animation:pop .16s ease}@keyframes pop{0%{transform:translateY(8px) scale(.99);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.modal-close{position:absolute;top:16px;right:16px;width:32px;height:32px;border-radius:8px;border:1px solid var(--border);background:var(--surface);font-size:20px;line-height:1;color:var(--text-soft);cursor:pointer}.modal-close:hover{background:var(--bg);color:var(--text)}.modal-badges{display:flex;gap:8px;margin-bottom:12px}.status-pill{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:4px 10px;border-radius:20px;color:#fff}.status-pill--backlog{background:var(--c-backlog)}.status-pill--todo{background:var(--c-todo)}.status-pill--in_progress{background:var(--c-in_progress)}.status-pill--review{background:var(--c-review)}.status-pill--done{background:var(--c-done)}.status-pill--blocked{background:var(--c-blocked)}.modal-title{font-size:22px;font-weight:700;letter-spacing:-.02em;margin:0 0 4px;line-height:1.25;padding-right:36px}.modal-phase{font-size:13px;color:var(--text-soft);font-weight:500}.modal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:12px;margin:22px 0;padding:16px;background:var(--bg);border-radius:12px}.field{display:flex;flex-direction:column;gap:3px}.field-label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);font-weight:600}.field-value{font-size:14px;font-weight:600}.modal-section{margin-top:20px}.modal-section h3{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-soft);margin:0 0 8px}.modal-section p{margin:0;font-size:14px;line-height:1.6;color:var(--text)}.modal-section .notes{font-size:13px;color:var(--text-soft);background:#fffaf0;border:1px solid #fde8c4;border-radius:10px;padding:12px 14px;line-height:1.6}.modal-section ul{margin:0;padding-left:18px;font-size:14px;line-height:1.7}.modal-section ul.checklist{list-style:none;padding-left:0}.checklist li{position:relative;padding-left:26px;margin-bottom:4px}.checklist li:before{content:"✓";position:absolute;left:0;top:0;width:18px;height:18px;border-radius:5px;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.links{list-style:none;padding-left:0}.links li{margin-bottom:6px}.links a{color:var(--accent);text-decoration:none;font-weight:500;word-break:break-all}.links a:hover{text-decoration:underline}.blocker-section{display:grid;gap:8px;border:1px solid #fecaca;border-radius:12px;background:#fff7f7;padding:12px 14px}.blocker-section p{color:#7f1d1d}.updates-section{display:grid;gap:12px}.update-card{border:1px solid var(--border);border-radius:12px;padding:12px 14px;background:#fbfbff}.update-card--latest{border-color:#d8d2ff;background:#f7f5ff}.update-card h4{margin:0 0 8px;font-size:15px;line-height:1.35;color:var(--text)}.update-history{display:grid;gap:10px}.update-history h3{margin-top:6px}.update-meta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.update-meta span{border-radius:999px;background:#eef2ff;color:#4338ca;font-size:11px;font-weight:700;padding:3px 8px}.safe-markdown{display:grid;gap:8px;font-size:14px;line-height:1.6;color:var(--text)}.safe-markdown p,.safe-markdown ul{margin:0}.safe-markdown ul{padding-left:18px}.safe-markdown a{color:var(--accent);font-weight:600;text-decoration:none}.safe-markdown a:hover{text-decoration:underline}.safe-markdown code{border-radius:5px;background:#eef2ff;color:#4338ca;font-size:.92em;padding:1px 5px}@media (max-width: 640px){.topbar{padding:12px 16px}.board{padding:16px}.modal{padding:20px}}.centered{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;color:#6b6f87;font-size:15px}.landing{text-align:center}.landing .logo-dot{display:inline-block;width:46px;height:46px;border-radius:13px;margin:0 auto 18px;background:linear-gradient(135deg,#6d5bff,#9d7bff);box-shadow:0 8px 20px #5b4bff66}.landing h1{font-size:20px;margin:0 0 6px;color:#1a1c2b}.landing p{margin:0 0 18px;font-size:14px}.landing-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.landing-list a{display:inline-block;padding:10px 18px;border-radius:10px;background:#fff;border:1px solid #e7e8ef;color:#5b4bff;font-weight:600;text-decoration:none;transition:border-color .15s,box-shadow .15s}.landing-list a:hover{border-color:#5b4bff;box-shadow:0 0 0 3px #efecff}
