:root{--ink: #0a206a;--ink-hover: #16307f;--on-ink: #ffffff;--muted: #7c85a3;--line: #c9cddb;--bg: #f6f7fb;--card: #ffffff;--good: #1a7f5a;--bad: #b3261e;--warn: #8a6100;--alert-bg: #fff5f4;--scrim: rgb(10 32 106 / 30%);--shadow: 0 10px 30px rgb(10 32 106 / 14%);color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--ink: #ffffff;--ink-hover: #d9dfeb;--on-ink: #16181d;--muted: #8f97ab;--line: #333846;--bg: #16181d;--card: #1e212a;--good: #3ddc97;--bad: #ff7b72;--warn: #e0a83a;--alert-bg: #2a1c1c;--scrim: rgb(0 0 0 / 62%);--shadow: 0 10px 30px rgb(0 0 0 / 45%);color-scheme:dark}}:root[data-theme=dark]{--ink: #ffffff;--ink-hover: #d9dfeb;--on-ink: #16181d;--muted: #8f97ab;--line: #333846;--bg: #16181d;--card: #1e212a;--good: #3ddc97;--bad: #ff7b72;--warn: #e0a83a;--alert-bg: #2a1c1c;--scrim: rgb(0 0 0 / 62%);--shadow: 0 10px 30px rgb(0 0 0 / 45%);color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:15px;line-height:1.5}h1{margin:0;font-size:26px;letter-spacing:.08em;font-weight:600}h2{margin:0;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:500}h3{margin:0 0 14px;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:500}.muted{color:var(--muted)}.good{color:var(--good)}.bad{color:var(--bad)}.centered{min-height:100vh;display:grid;place-items:center;padding:24px}.signin{max-width:420px;text-align:center;display:flex;flex-direction:column;gap:16px}.sub{margin:0;color:var(--muted);font-size:13px;letter-spacing:.02em}.app{min-height:100vh}.topbar{display:flex;align-items:center;gap:32px;padding:16px 28px;background:var(--card);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:inherit}.topbar nav{display:flex;gap:20px;flex:1}.topbar nav a{color:var(--muted);text-decoration:none;font-size:14px;padding-bottom:2px;border-bottom:1px solid transparent}.topbar nav a:hover,.topbar nav a.active{color:var(--ink);border-bottom-color:var(--ink)}.who{display:flex;align-items:center;gap:14px;font-size:13px}.global-search{position:relative}.global-search input{width:150px;padding:6px 8px}.notification-mark{width:30px;height:30px;display:inline-grid;place-items:center;text-decoration:none;border:1px solid var(--line);color:var(--muted)}.notification-mark:hover{color:var(--ink);border-color:var(--ink)}.notification-mark.has-unread{color:var(--ink)}.notification-mark span{position:relative;width:15px;height:15px;display:grid;place-items:center;border:2px solid currentColor}.notification-mark span:after{content:"";width:5px;height:5px;background:currentColor}.notification-mark.has-unread span:before{content:"";position:absolute;inset:-5px;border:1px solid var(--bad);animation:notification-pulse 1.8s ease-out infinite}@keyframes notification-pulse{0%{opacity:.85;transform:scale(.85)}75%,to{opacity:0;transform:scale(1.35)}}@media(prefers-reduced-motion:reduce){.notification-mark.has-unread span:before{animation:none;opacity:.85}}.search-results{position:absolute;z-index:5;right:0;top:34px;width:300px;background:var(--card);border:1px solid var(--line);padding:8px;display:grid;gap:4px;box-shadow:var(--shadow)}.search-results a{padding:6px;color:inherit;text-decoration:none}.search-results a:hover{background:var(--bg)}.content{max-width:900px;margin:0 auto;padding:36px 28px}.head{display:flex;align-items:center;gap:16px;margin-bottom:20px}.card{background:var(--card);border:1px solid var(--line);padding:24px;margin:20px 0}dl{margin:0;display:grid;grid-template-columns:140px 1fr;gap:8px 16px}dt{color:var(--muted)}dd{margin:0}.button{display:inline-block;background:var(--ink);color:var(--on-ink);border:none;padding:13px 24px;font:inherit;font-size:15px;cursor:pointer;text-decoration:none;text-align:center}.action-button,button.danger,.button.danger,.head>.button{padding:5px 12px;font-size:13px;border:1px solid var(--line);background:none;color:var(--ink);border-radius:0;box-shadow:none;cursor:pointer}button.danger,.button.danger{color:color-mix(in srgb,var(--bad) 78%,var(--muted));border-color:color-mix(in srgb,var(--bad) 48%,var(--line));background:color-mix(in srgb,var(--bad) 5%,transparent)}button.danger:hover:not(:disabled),.button.danger:hover{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 70%,var(--line));background:color-mix(in srgb,var(--bad) 10%,transparent)}.action-button:hover,.head>.button:hover{background:var(--bg);color:var(--ink)}.button:hover{background:var(--ink-hover)}.button.secondary{background:none;color:var(--muted);border:1px solid var(--line)}.button.secondary:hover{color:var(--ink);background:none}button,select{font:inherit}table button{background:none;border:1px solid var(--line);color:var(--ink);padding:5px 12px;font-size:13px;cursor:pointer}table button:hover:not(:disabled){border-color:var(--ink)}table button.danger:hover:not(:disabled){border-color:var(--bad);color:var(--bad)}button:disabled,select:disabled{opacity:.4;cursor:default}select{background:none;border:1px solid var(--line);color:var(--ink);padding:5px 8px;font-size:13px}.linklike{background:none;border:none;color:var(--muted);cursor:pointer;padding:0;text-decoration:underline}.linklike:hover{color:var(--ink)}table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line)}.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0 28px}.metric-grid .metric{margin:0;padding:14px;min-height:110px;border-width:1px}.metric-grid .metric .project-head{margin-bottom:16px}.sparkline{width:100%;height:42px;color:var(--ink)}@media(max-width:640px){.metric-grid{grid-template-columns:1fr}}th{text-align:left;font-weight:500;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:12px 16px;border-bottom:1px solid var(--line)}td{padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:middle}tbody tr:last-child td{border-bottom:none}tr.dim{opacity:.55}tr.clickable-task{cursor:pointer;transition:background-color .12s ease,box-shadow .12s ease}tr.clickable-task:hover{background:color-mix(in srgb,var(--ink) 5%,var(--card))}tr.clickable-task:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}.person{display:flex;flex-direction:column}.person .muted{font-size:13px}.actions{text-align:right;white-space:nowrap}.overview-task-step{display:flex;align-items:center;justify-content:flex-end;gap:12px}.overview-task-step button{white-space:nowrap}.pill{display:inline-block;font-size:12px;letter-spacing:.04em;padding:3px 10px;border:1px solid var(--line)}.pill.active{color:var(--good);border-color:var(--good)}.pill.pending{color:var(--warn);border-color:var(--warn)}.pill.disabled{color:var(--muted)}.alert{background:var(--alert-bg);border:1px solid var(--bad);color:var(--bad);padding:12px 16px;font-size:13px;text-align:left}.alert p{margin:6px 0 0}.alert.inline{padding:4px 10px;background:none}.notice{border:1px solid var(--good);color:var(--good);padding:12px 16px;font-size:13px;margin-bottom:14px}code{font-family:inherit;background:var(--bg);padding:1px 5px;border:1px solid var(--line);font-size:13px}.note{color:var(--muted);font-size:13px;margin:0}.spacer{flex:1}.title{font-size:22px;letter-spacing:.02em}.crumb{font-size:13px;color:var(--muted);margin:0 0 12px}.crumb a{color:var(--muted)}.cards{list-style:none;margin:0;padding:0}.project-head{display:flex;align-items:center;gap:12px;margin-bottom:8px}.project-head a{color:var(--ink);text-decoration:none}.project-head a:hover{text-decoration:underline}.desc{margin:0 0 10px;font-size:14px}.tabs{display:flex;gap:4px;margin:24px 0 16px;border-bottom:1px solid var(--line)}.tabs button{background:none;border:none;border-bottom:2px solid transparent;color:var(--muted);padding:8px 14px;font-size:14px;cursor:pointer}.tabs button.active{color:var(--ink);border-bottom-color:var(--ink)}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;align-items:center;gap:14px}.field{display:flex;flex-direction:column;gap:4px;font-size:13px}.project-meta{font-size:13px;color:var(--muted);margin:0 0 20px}.project-meta a{color:var(--muted)}.project-meta a:hover{color:var(--ink)}.inline-add{display:flex;gap:10px;margin-bottom:16px}.inline-add input{flex:1}.add-description{display:block;width:100%;margin-top:8px;resize:vertical}.note-comments{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}.note-comment{border-left:2px solid var(--line);padding-left:14px;margin:14px 0}.note-comments textarea{display:block;width:100%;margin-top:10px;resize:vertical}input,textarea{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);padding:10px 12px}input:focus,textarea:focus{outline:none;border-color:var(--ink)}textarea{resize:vertical}.toggle{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}.spaced{margin-bottom:16px}.struck{text-decoration:line-through}.notebody{font-family:inherit;font-size:14px;white-space:pre-wrap;word-wrap:break-word;margin:0 0 12px;padding:12px;background:var(--bg);border:1px solid var(--line)}.pill.on_hold{color:var(--warn);border-color:var(--warn)}.pill.completed{color:var(--good);border-color:var(--good)}.tabs.inline{margin:0;border-bottom:none}.nowrap{white-space:nowrap}tr.flagged td:first-child{box-shadow:inset 3px 0 0 var(--warn)}section h3{margin-top:28px}.logo{display:inline-flex;align-items:center}.logo img{display:block;height:100%;width:auto}.brandmark{display:flex;align-items:center;justify-content:center;gap:12px}.cardlink{display:block;color:inherit;text-decoration:none}.cardlink .desc,.cardlink .note{display:block}.cardlink:hover{border-color:var(--ink)}.tasklink{color:inherit;text-decoration:none}.phase{margin-bottom:40px}.phase+.phase{border-top:1px solid var(--line);padding-top:32px}.phase td{padding:16px}.phase-head{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}.phase-head h3{margin:0;color:var(--ink);font-size:14px}.indent{margin-top:10px}.due{font-size:13px}.due.overdue{color:var(--bad)}.due.soon{color:var(--warn)}.due.later,.due.none{color:var(--muted)}.statline{display:flex;gap:20px;margin-bottom:14px;font-size:14px}.statline .warn{color:var(--warn)}.taskmeta{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px}.eyebrow{margin:0 0 5px;color:var(--muted);font-size:11px;letter-spacing:.16em;text-transform:uppercase}.review-count{border:1px solid var(--warn);color:var(--warn);padding:6px 10px;font-size:12px}.review-grid{display:grid;gap:16px}.review-grid .card{margin:0}.review-grid.reviewed{opacity:.8}.review-card{border-left:4px solid var(--warn)}.reviewed .review-card{border-left-color:var(--good)}.review-card-head{display:flex;align-items:flex-start;gap:20px;justify-content:space-between}.review-card-head h2{margin-top:9px}.review-card-head h2 a{color:inherit}.reviewed-title{margin:36px 0 14px}.empty-review{border-style:dashed}.branch-strip{display:flex;align-items:center;gap:12px;margin:20px 0;padding:9px 12px;background:var(--bg);border:1px solid var(--line);min-width:0}.branch-strip span{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.1em}.branch-strip code{overflow-wrap:anywhere}.branch-strip a{margin-left:auto;color:var(--muted);font-size:12px}.review-summary{white-space:pre-wrap;margin:0}.review-meta{color:var(--muted);font-size:12px;margin:20px 0 0}.task-delivery{border-left:4px solid var(--warn)}.task-danger-zone{margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}.role-settings{display:grid;gap:22px}.role-builder{display:grid;gap:18px;margin-top:0}.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid var(--line)}.permission-option{display:flex;gap:10px;padding:14px;border-bottom:1px solid var(--line);cursor:pointer}.permission-option:nth-child(odd){border-right:1px solid var(--line)}.permission-option span{display:grid;gap:3px}.permission-option small{color:var(--muted)}.permission-tags{display:flex;flex-wrap:wrap;gap:7px}@media(max-width:650px){.permission-grid{grid-template-columns:1fr}.permission-option:nth-child(odd){border-right:0}}.ops-modal-backdrop{position:fixed;z-index:50;inset:0;display:grid;place-items:center;padding:24px;background:var(--scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:ops-backdrop-in .14s ease-out}.ops-modal{position:relative;display:flex;flex-direction:column;width:min(480px,100%);max-height:calc(100vh - 48px);background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);animation:ops-modal-in .18s cubic-bezier(.2,.8,.2,1)}.ops-modal-wide{width:min(640px,100%)}.ops-modal-danger{border-left:4px solid var(--bad)}.ops-modal-head{display:flex;align-items:flex-start;gap:16px;padding:18px 24px;border-bottom:1px solid var(--line)}.ops-modal-heading{flex:1;min-width:0}.ops-modal-heading h2{color:var(--ink);font-size:17px;line-height:1.35;letter-spacing:.02em;font-weight:600;text-transform:none;overflow-wrap:anywhere}.ops-modal-danger .eyebrow{color:var(--bad)}.ops-modal-close{flex:none;width:30px;height:30px;padding:0;display:grid;place-items:center;background:none;border:1px solid var(--line);color:var(--muted);font:inherit;font-size:16px;line-height:1;cursor:pointer}.ops-modal-close:hover{color:var(--ink);border-color:var(--ink)}.ops-modal-scroll{overflow-y:auto;display:grid;align-content:start;gap:16px;padding:20px 24px}.ops-modal-description{margin:0;color:var(--muted);font-size:13px}.ops-modal-body{display:grid;gap:16px}.ops-modal-body input,.ops-modal-body textarea,.ops-modal-body select{width:100%}.ops-modal-detail,.field-hint{margin:0;padding:12px 14px;border-left:2px solid var(--line);background:var(--bg);color:var(--muted);font-size:12px}.ops-modal-danger .ops-modal-detail{border-left-color:var(--bad)}.ops-modal-body>.alert{margin:0}.ops-modal-actions{display:flex;align-items:center;gap:18px;padding:16px 24px;border-top:1px solid var(--line)}.button.modal-danger{background:color-mix(in srgb,var(--bad) 10%,transparent);border:1px solid var(--bad);color:var(--bad);padding:12px 23px}.button.modal-danger:hover{background:color-mix(in srgb,var(--bad) 18%,transparent)}.ops-modal :focus-visible{outline:2px solid var(--ink);outline-offset:2px}.ops-modal-danger :focus-visible{outline-color:var(--bad)}@keyframes ops-backdrop-in{0%{opacity:0}}@keyframes ops-modal-in{0%{opacity:0;transform:translateY(8px)}}@media(prefers-reduced-motion:reduce){.ops-modal-backdrop,.ops-modal{animation:none}}@media(max-width:650px){.review-card-head{display:grid}.branch-strip{align-items:flex-start;flex-wrap:wrap}.branch-strip a{width:100%;margin-left:0}.ops-modal-backdrop{place-items:end center;padding:12px}.ops-modal{width:100%;max-height:calc(100vh - 24px)}.ops-modal-head,.ops-modal-scroll,.ops-modal-actions{padding-left:18px;padding-right:18px}}.checklist{list-style:none;margin:0 0 12px;padding:0}.checklist li{display:flex;align-items:center;gap:12px;padding:6px 0}.checklist label{display:flex;align-items:center;gap:10px;flex:1;cursor:pointer}.notebody.plain{background:none;border:none;padding:0}.comment .notebody{margin-bottom:8px}.comment-tree,.comment-replies{list-style:none;margin:0;padding:0}.comment-thread>.comment{margin:14px 0}.comment-replies{margin-left:28px;padding-left:18px;border-left:2px solid var(--line)}.comment-replies .comment{background:color-mix(in srgb,var(--ink) 3%,var(--card))}.comment-actions{display:flex;align-items:center;gap:16px;min-height:24px}.comment-actions .linklike{padding:2px 0}.reply-context{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:10px;border-bottom:1px solid var(--line);color:var(--muted);font-size:12px}@media(max-width:650px){.comment-replies{margin-left:12px;padding-left:12px}}.pill.for_review,.pill.for_discussion{color:var(--warn);border-color:var(--warn)}.pill.in_progress{color:var(--ink);border-color:var(--ink)}.pill.done{color:var(--good);border-color:var(--good)}.pill.unread{margin-left:8px;font-size:11px}.theme-toggle{background:none;border:1px solid var(--line);color:var(--muted);cursor:pointer;width:30px;height:30px;padding:0;font-size:14px;line-height:1;display:grid;place-items:center}.theme-toggle:hover{color:var(--ink);border-color:var(--ink)}.signin-theme{display:flex;justify-content:center}body,.card,.topbar,table,input,textarea,select{transition:background-color .15s ease,border-color .15s ease,color .15s ease}:root[data-theme=dark] input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1)}}
