:root{
  --blue-900:#052f47; --blue-800:#004880; --blue-600:#1d6c91; --blue-500:#2f7493; --blue-200:#c2d9e3; --blue-50:#f1f8fc;
  --green-700:#4d8a25; --green-500:#78c040; --green-100:#eef7e4;
  --ink:#14252f; --gray-700:#46555f; --gray-600:#647179; --gray-500:#859399; --gray-300:#cad2d7; --gray-200:#e3e8eb; --gray-100:#f0f3f5; --gray-50:#f7f9fa; --white:#fff;
  --behind:#cf3b2c; --behind-bg:#fbe7e4;
  --radius:10px; --shadow:0 4px 10px rgba(20,37,47,.08),0 2px 4px rgba(20,37,47,.05); --border:var(--gray-200);
}
*{box-sizing:border-box;}
body{margin:0;font-family:'Open Sans',system-ui,'Segoe UI',sans-serif;font-size:15px;line-height:1.5;color:var(--ink);background:var(--gray-50);}
h1,h2,h3{font-family:'Nunito',system-ui,'Segoe UI',sans-serif;margin:0;line-height:1.15;}
a{color:var(--blue-600);text-decoration:none;}
.topbar{position:sticky;top:0;background:rgba(255,255,255,.94);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:14px;padding:11px 22px;}
.brand{font-family:'Nunito',system-ui,'Segoe UI',sans-serif;font-weight:800;font-size:18px;color:var(--blue-800);}
.main{padding:22px 26px 60px;max-width:1680px;margin:0 auto;}
.phead{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:4px;}
.phead h1{font-size:24px;}
.phead-actions{margin-left:auto;display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.issue-form{display:flex;gap:8px;align-items:center;}
.issue-form input{font-family:inherit;font-size:14px;padding:7px 10px;border:1px solid var(--gray-300);border-radius:6px;min-width:240px;}
.muted{color:var(--gray-600);font-size:14px;}
.kv{display:flex;gap:18px;flex-wrap:wrap;font-size:13px;color:var(--gray-600);}
.kv b{color:var(--ink);}
.list{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-top:18px;}
.list-head,.srow{display:grid;grid-template-columns:118px 1fr 160px;gap:14px;align-items:center;padding:11px 16px;}
.list-head{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--gray-500);background:var(--gray-50);border-bottom:1px solid var(--border);}
.srow{border-bottom:1px solid var(--gray-100);color:var(--ink);}
.srow:hover{background:var(--blue-50);}
.srow .t{font-size:14px;font-weight:600;}
.src{font-size:12.5px;color:var(--gray-600);}
.pill{display:inline-flex;align-items:center;font-size:12.5px;font-weight:700;padding:3px 10px;border-radius:999px;background:var(--gray-100);color:var(--gray-700);}
.pill.running,.pill.queued{background:var(--blue-50);color:var(--blue-600);}
.pill.review,.pill.in_review,.pill.pr_open{background:#efe7f7;color:#6b3fa0;}
.pill.done,.pill.ready{background:var(--green-100);color:var(--green-700);}
.pill.failed{background:var(--behind-bg);color:var(--behind);}
.pill.plan_review,.pill.plan_feedback{background:#fff4d6;color:#8a5a00;}
.back{display:inline-block;font-size:13px;color:var(--gray-600);font-weight:600;margin-bottom:10px;}
.dhead{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;}
.dhead h1{font-size:22px;flex:1;min-width:260px;}
.dactions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.dactions form{margin:0;}
.dmeta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:var(--gray-600);font-size:13.5px;margin-top:6px;}
.btn{display:inline-flex;align-items:center;gap:7px;border-radius:6px;border:1px solid var(--border);background:var(--white);color:var(--ink);padding:7px 13px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;}
.linkbtn{border:0;background:none;padding:0;font:inherit;font-size:13.5px;color:var(--gray-600);text-decoration:underline;cursor:pointer;}
.btn.accent{background:var(--green-500);border-color:var(--green-500);color:var(--blue-900);}
.grid2{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:20px;margin-top:20px;align-items:start;}
.card{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;}
.card+.card{margin-top:16px;}
.card h3{font-size:14px;text-transform:uppercase;letter-spacing:.05em;color:var(--gray-600);margin-bottom:12px;}
.body{margin:0;font-size:14px;color:var(--gray-700);white-space:pre-line;}
.body.err{color:var(--behind);}
.run{border-top:1px solid var(--line);padding:12px 0;}
.run-head{display:grid;grid-template-columns:10px 10rem 3.5rem minmax(0,1fr) auto;gap:12px;align-items:center;min-height:28px;cursor:pointer;list-style:none;font-size:14px;}
.run-head::-webkit-details-marker{display:none;}
.run-head::before{content:'\25B8';width:10px;color:var(--gray-500);}
.run[open]>.run-head::before{content:'\25BE';}
.run-body{margin-top:12px;}
.run-meta{font-size:13px;color:var(--gray-600);}
.links{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;margin-top:6px;}
.report{background:var(--blue-900);color:#cfe3ef;border-radius:8px;padding:10px 12px;font-size:12.5px;white-space:pre-wrap;margin:8px 0 0;}
.screencast{display:block;max-width:100%;border-radius:8px;margin-top:8px;background:#000;}
.plan{background:var(--gray-100);border:1px solid var(--gray-200);border-radius:8px;padding:10px 12px;font-size:13px;white-space:pre-wrap;margin:0;}
.plan.md{white-space:normal;font-size:14px;line-height:1.55;overflow-wrap:anywhere;}
.plan.md>:first-child{margin-top:0;}
.plan.md>:last-child{margin-bottom:0;}
.plan.md h1,.plan.md h2,.plan.md h3,.plan.md h4,.plan.md h5,.plan.md h6{font-family:'Nunito',system-ui,'Segoe UI',sans-serif;line-height:1.25;margin:16px 0 6px;color:var(--ink);}
.plan.md h1{font-size:18px;}
.plan.md h2{font-size:16px;}
.plan.md h3,.plan.md h4,.plan.md h5,.plan.md h6{font-size:14.5px;}
.plan.md p{margin:0 0 10px;}
.plan.md ul,.plan.md ol{margin:0 0 10px;padding-left:22px;}
.plan.md li{margin:2px 0;}
.plan.md li>p{margin:0;}
.plan.md a{color:var(--blue-800);text-decoration:underline;}
.plan.md code{font-family:ui-monospace,'Cascadia Mono',Consolas,monospace;font-size:12.5px;background:var(--gray-200);border-radius:4px;padding:1px 5px;}
.plan.md pre{background:var(--white);border:1px solid var(--gray-200);border-radius:6px;padding:8px 10px;margin:0 0 10px;overflow-x:auto;}
.plan.md pre code{background:none;padding:0;font-size:12.5px;white-space:pre;}
.plan.md blockquote{margin:0 0 10px;padding:2px 12px;border-left:3px solid var(--gray-300);color:var(--gray-700);}
.plan.md hr{border:0;border-top:1px solid var(--gray-300);margin:14px 0;}
.plan.md table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;margin:0 0 10px;}
.plan.md th,.plan.md td{border:1px solid var(--gray-300);padding:5px 9px;text-align:left;vertical-align:top;min-width:9ch;overflow-wrap:normal;word-break:normal;}
.plan.md th{white-space:nowrap;}
.plan.md th{background:var(--gray-200);font-weight:700;}
.plan.md [align=center]{text-align:center;}
.plan.md [align=right]{text-align:right;}
.plan.md img{max-width:100%;height:auto;}
.plan-details{margin-top:8px;}
.plan-details summary{cursor:pointer;font-size:13px;color:var(--gray-600);font-weight:600;}
.plan-details .plan{margin-top:6px;overflow-wrap:anywhere;}
.plan-critic{margin:6px 0 0 18px;padding:0;font-size:13px;overflow-wrap:anywhere;}
.plan-critic li{margin-bottom:4px;}
.crit,.scn{margin:0;padding-left:18px;font-size:14px;color:var(--gray-700);display:grid;gap:5px;}
.chat .msg{display:grid;gap:3px;padding:10px 14px;border-radius:12px;margin:0 0 10px;max-width:88%;}
.chat .msg.user{background:var(--blue-50);border:1px solid var(--blue-200);margin-left:auto;border-bottom-right-radius:4px;}
.chat .msg.assistant{background:var(--gray-100);border:1px solid var(--gray-200);margin-right:auto;border-bottom-left-radius:4px;}
.chat .who{font-size:12px;font-weight:700;color:var(--gray-600);text-transform:uppercase;letter-spacing:.05em;}
.chat .msg .body{color:var(--ink);}
.chat .msg.pending .body::after{content:'';display:inline-block;width:1.2em;text-align:left;animation:studio-dots 1.2s steps(4,end) infinite;}
@keyframes studio-dots{0%{content:'';}25%{content:'.';}50%{content:'..';}75%{content:'...';}}
.chat .msg.pending .body{color:var(--gray-700);font-style:italic;}
.chat-form{display:grid;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid var(--gray-100);}
.chat-form textarea{width:100%;font-family:inherit;font-size:14px;padding:10px 12px;border:1px solid var(--gray-300);border-radius:8px;resize:vertical;}
.chat-form button{justify-self:end;}
.alert{background:var(--behind-bg);color:var(--behind);border-radius:8px;padding:10px 12px;font-size:14px;margin:0 0 10px;white-space:pre-line;}
.body.muted{color:var(--gray-500);}
.draft-title{font-size:18px;color:var(--blue-800);margin-bottom:8px;}
.card h4{font-family:'Nunito',system-ui,'Segoe UI',sans-serif;font-size:13px;color:var(--gray-600);margin:14px 0 6px;}
.draft-form{margin-top:16px;}
.settings-form{display:grid;gap:12px;max-width:640px;margin-top:12px;}
.settings-form h3{margin:12px 0 0;}
.settings-form h3:first-child{margin-top:0;}
.field{display:grid;gap:4px;font-size:14px;font-weight:600;color:var(--gray-700);}
.field input,.field select{font-family:inherit;font-size:14px;font-weight:400;color:var(--ink);padding:7px 10px;border:1px solid var(--gray-300);border-radius:6px;background:var(--white);}
.field .hint{font-size:13px;font-weight:400;color:var(--gray-600);}
.field textarea{font-family:inherit;font-size:14px;font-weight:400;color:var(--ink);padding:8px 10px;border:1px solid var(--gray-300);border-radius:6px;background:var(--white);resize:vertical;}
.form-actions .btn+.btn{margin-left:8px;}
.form-actions{display:flex;justify-content:flex-end;margin-top:6px;}
.topbar-user{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:14px;color:var(--gray-700);}
.topbar-user form{margin:0;}
.login{max-width:420px;margin:64px auto 0;}
.login .card{display:grid;gap:14px;justify-items:start;}
.login h1{font-size:22px;}
.login .alert{margin:0;}
.list-head.member-row,.srow.member-row{grid-template-columns:1fr 1fr 140px auto;}
.srow.member-row form{margin:0;}
.issue-form select{font-family:inherit;font-size:14px;padding:7px 10px;border:1px solid var(--gray-300);border-radius:6px;background:var(--white);}
@media(max-width:940px){.grid2{grid-template-columns:1fr;}.list-head{display:none;}.srow{grid-template-columns:1fr auto;}.srow .src{display:none;}}
.pill.ok{background:var(--green-100);color:var(--green-700);}
.pill.fail{background:var(--behind-bg);color:var(--behind);}
.rblock{border-top:1px solid var(--gray-100);margin-top:12px;padding-top:4px;}
.rblock .btn{margin-top:8px;}
.vr-note{margin-top:10px;font-size:13.5px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.thumbs{display:flex;flex-wrap:wrap;gap:14px;margin-top:8px;}
.thumb{margin:0;width:220px;max-width:100%;}
.thumb a,.thumb-empty{display:block;height:150px;border:1px solid var(--border);border-radius:6px;background:var(--gray-100);overflow:hidden;}
.thumb img{display:block;width:100%;height:100%;object-fit:contain;}
.thumb-empty{display:grid;place-items:center;font-size:13px;color:var(--gray-500);}
.thumb figcaption{margin-top:4px;font-size:12.5px;font-weight:600;color:var(--gray-600);text-align:center;}
.subs{display:grid;gap:2px;margin-top:8px;}
.sub-row{display:grid;grid-template-columns:22px 1fr;gap:10px;align-items:center;padding:6px 0;border-bottom:1px solid var(--gray-100);font-size:14px;}
.sub-row:last-child{border-bottom:none;}
.chk{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;color:#fff;}
.chk.done{background:var(--green-700);}
.chk.fail{background:var(--behind);}
.fails{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px;font-size:13px;}
.fails li{display:grid;gap:2px;}
.fails .fname{font-weight:700;color:var(--behind);}
.fails .fmsg{color:var(--gray-700);white-space:pre-wrap;}
.files,.filelinks,.toc{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:4px;font-size:13.5px;}
.files li,.toc li{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;}
.fpath{font-family:Consolas,ui-monospace,monospace;font-size:13px;word-break:break-all;}
.fstatus{font-size:12px;font-weight:700;padding:1px 8px;border-radius:999px;background:var(--gray-100);color:var(--gray-700);}
.fstatus.added{background:var(--green-100);color:var(--green-700);}
.fstatus.deleted{background:var(--behind-bg);color:var(--behind);}
.add-count{color:var(--green-700);font-weight:700;font-size:13px;}
.del-count{color:var(--behind);font-weight:700;font-size:13px;}
.dfile{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-top:16px;overflow:hidden;}
.dfile summary{cursor:pointer;padding:10px 14px;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;background:var(--gray-50);}
.dfile .body{padding:10px 14px;}
.diff{margin:0;overflow-x:auto;white-space:normal;font-family:Consolas,ui-monospace,monospace;font-size:12.5px;line-height:1.5;}
.diff .dlines{display:inline-block;min-width:100%;}
.diff .dl{display:block;white-space:pre;min-height:1.5em;padding:0 14px 0 0;}
.diff .no{display:inline-block;width:4.5em;padding-right:10px;text-align:right;color:var(--gray-500);user-select:none;}
.diff .tx{padding-left:10px;}
.dfile .fold{color:var(--gray-600);font-size:13px;}
.diff .add{background:#e6f4d7;}
.diff .del{background:#fbe7e4;}
.diff .hunk{background:var(--blue-50);color:var(--blue-600);}
.diff .meta{color:var(--gray-600);font-style:italic;}
@media(max-width:640px){.thumbs{flex-direction:column;}}
.steps{display:flex;align-items:flex-start;overflow-x:auto;padding:6px 0 8px;}
.step{flex:1 0 0;min-width:88px;position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 4px;}
.step .cap{display:flex;flex-direction:column;align-items:center;gap:8px;}
.step .mk{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--gray-200);color:var(--white);flex:none;font-size:12px;font-weight:800;position:relative;z-index:1;}
.step .nm{font-weight:700;font-size:13px;line-height:1.25;max-width:100%;}
.step .sub{font-size:12px;color:var(--gray-600);margin-top:2px;line-height:1.3;white-space:nowrap;}
.step .bar{position:absolute;top:10px;left:calc(50% + 15px);width:calc(100% - 30px);height:2px;background:var(--gray-200);z-index:0;}
.step:last-child .bar{display:none;}
.step.done .mk{background:var(--green-700);font-size:0;}
.step.done .mk::after{content:'\2713';font-size:13px;}
.step.done .bar{background:var(--green-500);}
.step.act .mk{background:var(--blue-500);box-shadow:0 0 0 4px var(--blue-200);}
.step.failed .mk{background:var(--behind);font-size:0;}
.step.failed .mk::after{content:'!';font-size:13px;}
.step.failed .nm{color:var(--behind);}
.step.later .mk{background:var(--gray-200);color:var(--gray-500);}
.step.later .nm{color:var(--gray-500);}
.log{background:var(--blue-900);color:#cfe3ef;border-radius:8px;padding:12px 14px;font-family:Consolas,ui-monospace,monospace;font-size:12.5px;line-height:1.7;max-height:220px;overflow:auto;}
.log .ln{overflow-wrap:anywhere;}
.log .ts{color:var(--blue-200);}
.log .ag{color:var(--green-500);}
.log .ln.ok{color:var(--green-500);}
.log .ln.er{color:#f0a49b;}
.pill.warn,.pill.needs_info{background:#fff4d6;color:#8a5a00;}
.pill.researching{background:var(--blue-50);color:var(--blue-600);}
.pill.backlog{background:var(--gray-100);color:var(--gray-700);}
.step.warn .mk{background:#c98a00;font-size:0;}
.step.warn .mk::after{content:'!';font-size:13px;}
.step.warn .nm{color:#8a5a00;}
.step.warn .bar{background:var(--green-500);}
.lanes{display:flex;gap:6px;flex-wrap:wrap;margin-top:16px;}
.lane{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid var(--border);background:var(--white);color:var(--gray-700);font-size:13.5px;font-weight:600;}
.lane.active{background:var(--blue-800);border-color:var(--blue-800);color:var(--white);}
.lane-count{font-size:12px;opacity:.8;}
.list-head.story-row,.srow.story-row{grid-template-columns:118px 1fr 220px 160px;}
.research-col{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.research-kv{margin-top:6px;}
.research-cost{font-weight:700;color:var(--ink);margin-top:8px;}
.research-too-large{font-weight:600;color:#8a5a00;}
@media(max-width:940px){.srow.story-row{grid-template-columns:1fr auto;}.srow .research-col{display:none;}}
.field.check{display:flex;flex-wrap:wrap;align-items:center;gap:8px;}
.field.check .hint{flex-basis:100%;}
.review-group{font-size:13px;margin:12px 0 6px;color:var(--gray-700);}
.findings{list-style:none;margin:0;padding:0;display:grid;gap:10px;}
.findings.compact{gap:4px;font-size:13px;margin-top:6px;}
.finding{border:1px solid var(--gray-100);border-radius:6px;padding:8px 10px;}
.finding-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.finding .fpath,.findings .fpath{font-family:ui-monospace,Consolas,monospace;font-size:12.5px;}
.finding-rule{font-weight:600;font-size:13.5px;margin:6px 0 2px;}
.finding-fix{white-space:pre-wrap;font-size:12.5px;background:var(--gray-100);border-radius:6px;padding:8px;margin:6px 0 0;overflow-x:auto;}
.review-summary{white-space:pre-wrap;}
.review-more{margin-top:8px;}
.review-more summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--gray-700);}
.review-open{color:#8a5a00;}
.review-copy{margin-top:6px;}
.ft-scenario{border:1px solid var(--gray-100);border-radius:6px;padding:8px 10px;margin-top:8px;}
.ft-scenario summary{cursor:pointer;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.ft-title{font-weight:600;font-size:13.5px;}
.ft-steps{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:6px;font-size:13.5px;}
.ft-steps li{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;}
.ft-steps .chk{flex:none;}
.ft-step{font-weight:600;}
.ft-detail{flex-basis:100%;padding-left:28px;color:var(--gray-600);font-size:13px;}
.ft-layout{margin-top:8px;}
.ft-layout .body{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;}
.sessions{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px;font-size:13.5px;}
.sessions li{display:flex;gap:4px 10px;align-items:baseline;flex-wrap:wrap;}
.sessions .fpath{font-family:ui-monospace,Consolas,monospace;font-size:12.5px;}
.session-detail{flex-basis:100%;color:var(--gray-600);font-size:13px;}
.srow .pill.ai-test{font-size:12px;}

/* ==== Brand, login and projects overview ==== */
:root{--gdk-green:#80D060;--gdk-blue:#1F4A7B;
  --line:#e1e7ea;--muted:#5b6a73;--off:#8a979e;--bad:#b3261e;--bad-bg:#fdecea;--busy:#1f5fa8;--busy-bg:#e7f0fb;--warn:#9a5c00;--warn-bg:#fff4e0;
  --display:'Nunito',system-ui,'Segoe UI',sans-serif;--mono:ui-monospace,'Cascadia Mono',Consolas,monospace;}
.topbar{z-index:10;padding-top:calc(11px + env(safe-area-inset-top,0px));}
/* "Studio" on the baseline of the "software" wordmark: the bottom of the wordmark sits a little above the bottom of the logo mark. */
.brand{display:inline-flex;align-items:flex-end;gap:12px;color:var(--gdk-blue);}
.brand-logo{display:block;height:24px;width:auto;}
.brand-name{font-size:17px;line-height:1;padding-left:12px;border-left:1px solid var(--line);margin-bottom:3px;}
.login{max-width:440px;margin:72px auto 0;padding:0 4px;}
.login .login-card{justify-items:center;text-align:center;gap:12px;padding:36px 32px 32px;border-top:4px solid var(--gdk-green);}
.login-logo{display:block;height:30px;width:auto;margin-bottom:6px;}
.login .login-card h1{font-size:26px;color:var(--gdk-blue);}
.login .login-card .alert{width:100%;text-align:left;}
.login-btn{justify-content:center;padding:10px 18px;font-size:15px;margin-top:4px;}
.pempty{max-width:520px;margin:32px auto 0;text-align:center;display:grid;justify-items:center;gap:10px;padding:32px 24px;}
.pempty h2{font-size:20px;color:var(--gdk-blue);}
.pempty p{margin:0;}
@media(max-width:640px){
  .topbar{padding-left:16px;padding-right:16px;gap:10px;}
  .brand-logo{height:22px;}
  .brand-name{font-size:15px;padding-left:10px;}
  .topbar-user>span{display:none;}
  .main{padding:18px 16px 48px;}
  .login{margin-top:32px;}
  .login .login-card{padding:28px 20px 24px;}
  .login-btn{width:100%;}
}

/* ==== Tables: projects overview and user management ==== */
.topbar-link{font-size:14px;font-weight:600;color:var(--gdk-blue);}
.search{font:14px 'Open Sans',system-ui,'Segoe UI',sans-serif;border:1px solid var(--line);border-radius:8px;padding:8px 12px;width:220px;max-width:100%;}
.search:focus-visible{outline:2px solid var(--busy);outline-offset:2px;}
.search-empty{margin-top:12px;}
.tablewrap{overflow-x:auto;background:var(--white);border:1px solid var(--line);border-radius:12px;margin-top:18px;}
.dtable{width:100%;border-collapse:collapse;}
.dtable th{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);text-align:left;padding:12px 16px;border-bottom:1px solid var(--line);font-weight:700;}
.dtable td{padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:middle;}
.dtable tr:last-child td{border-bottom:0;}
.dtable tbody tr:hover{background:#f8fafb;}
.dtable td.num{text-align:right;font:800 18px var(--display);font-variant-numeric:tabular-nums;}
.dtable th.num{text-align:right;}
.dtable .sub{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.dtable code{font-family:var(--mono);font-size:12.5px;}
.dtable .pill{font-size:12px;padding:3px 10px;white-space:nowrap;}
.dtable .pill.failed,.dtable .pill.fail{background:var(--bad-bg);color:var(--bad);}
.dtable .pill.queued,.dtable .pill.running{background:var(--busy-bg);color:var(--busy);}
.dtable .pill.plan_review,.dtable .pill.plan_feedback,.dtable .pill.warn{background:var(--warn-bg);color:var(--warn);}
.dtable a:focus-visible,.dtable .btn:focus-visible{outline:2px solid var(--busy);outline-offset:2px;}
.ptable{min-width:760px;}
.pname{display:flex;gap:12px;align-items:center;}
.pname a{font:800 16px var(--display);color:var(--gdk-blue);text-decoration:none;}
.ico{width:14px;height:14px;flex:none;}
.avatar{width:44px;height:44px;border-radius:10px;background:var(--gdk-blue);color:#fff;display:grid;place-items:center;font:800 16px var(--display);flex:none;letter-spacing:.02em;}
.avatar.sm{width:34px;height:34px;font-size:13px;border-radius:8px;}
.vm{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);white-space:nowrap;}
.dot{width:8px;height:8px;border-radius:50%;background:var(--off);}
.dot.busy{background:var(--busy);}
.dot.on{background:var(--green-500);}
.utable{min-width:960px;}
.utable td{vertical-align:top;}
.uname{font-weight:700;}
.sub-cell{font-size:13px;color:var(--muted);white-space:nowrap;}
.umembers{list-style:none;margin:0 0 8px;padding:0;display:grid;gap:4px;font-size:14px;}
.umembers li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.umembers form,.uactions form,.urole{margin:0;}
.urole{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.urole select{font-family:inherit;font-size:13px;padding:5px 8px;border:1px solid var(--gray-300);border-radius:6px;background:var(--white);max-width:180px;}
.urole .btn{padding:5px 10px;font-size:13px;}
.urole input[type=text]{font-family:inherit;font-size:13px;padding:5px 8px;border:1px solid var(--gray-300);border-radius:6px;max-width:180px;}
.gname{margin:6px 0 4px;}
.list-head.group-row,.srow.group-row{grid-template-columns:1fr 1fr auto auto;}
.srow.group-row form{margin:0;}
.group-add{margin-top:12px;}
.uactions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;}
.linkbtn{border:0;background:none;padding:0;color:var(--blue-600);font:inherit;font-size:13px;cursor:pointer;}
.linkbtn:hover{text-decoration:underline;}
.section-title{font-size:18px;margin-top:28px;}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
@media(max-width:640px){.search{width:100%;}.phead-actions{width:100%;}}
.pill.split{background:var(--gray-100);color:var(--gray-700);}
.crumbs{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;}
.split-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px;}
.split-list li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--gray-100);font-size:14px;}
.split-list li a{flex:1;font-weight:600;color:var(--ink);}
.split-form{display:grid;gap:12px;margin-top:8px;}
.split-row{border:1px solid var(--gray-300);border-radius:8px;padding:10px 12px;display:grid;gap:8px;min-width:0;}
.split-row legend{font-size:13px;font-weight:700;color:var(--gray-600);padding:0 4px;}
.split-row.removed{opacity:.5;}
.split-proposal{margin:8px 0 0;padding-left:18px;display:grid;gap:10px;font-size:14px;}
.split-proposal p{margin:4px 0 0;}
.costfilter{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin-top:14px;}
.costfilter .btn{align-self:flex-end;}
.costmeta{margin-top:10px;}
.ctable{min-width:720px;}
.ctable td,.ctable th{padding:10px 14px;}
.ctable td.amount,.ctable th.amount{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
.ctable tr.total td{font-weight:700;}
.ctable .model{font-family:var(--mono);font-size:12.5px;}
.costbar{display:block;width:120px;height:8px;background:var(--gray-100);border-radius:4px;overflow:hidden;}
.costbar span{display:block;height:100%;background:var(--blue-500);}
.costbar-0{width:0%;}
.costbar-5{width:5%;}
.costbar-10{width:10%;}
.costbar-15{width:15%;}
.costbar-20{width:20%;}
.costbar-25{width:25%;}
.costbar-30{width:30%;}
.costbar-35{width:35%;}
.costbar-40{width:40%;}
.costbar-45{width:45%;}
.costbar-50{width:50%;}
.costbar-55{width:55%;}
.costbar-60{width:60%;}
.costbar-65{width:65%;}
.costbar-70{width:70%;}
.costbar-75{width:75%;}
.costbar-80{width:80%;}
.costbar-85{width:85%;}
.costbar-90{width:90%;}
.costbar-95{width:95%;}
.costbar-100{width:100%;}

/* ==== Story page: run header ==== */
.run-head>.run-code{font-size:13px;font-weight:600;color:var(--blue-600);}
.run-head>.run-code:hover{text-decoration:underline;}
.pr-stale{color:var(--gray-500);font-style:italic;}

/* ==== Topbar: administration menu ==== */
.topbar-menu{position:relative;}
.topbar-menu>summary{list-style:none;cursor:pointer;}
.topbar-menu>summary::-webkit-details-marker{display:none;}
.topbar-menu>summary::after{content:'\25BE';margin-left:4px;font-size:11px;}
.topbar-menu>summary:focus-visible,.topbar-menu-list a:focus-visible{outline:2px solid var(--busy);outline-offset:2px;}
.topbar-menu-list{position:absolute;right:0;top:calc(100% + 8px);min-width:160px;list-style:none;margin:0;padding:6px 0;background:var(--white);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);z-index:20;}
.topbar-menu-list a{display:block;padding:8px 14px;font-size:14px;color:var(--ink);}
.topbar-menu-list a:hover{background:var(--blue-50);}
/* Language switch in the header: the current language as text, the others as small buttons. */
.topbar-language{display:flex;align-items:center;gap:8px;font-size:13px;}
.topbar-language-current{font-weight:600;color:var(--gray-700);}

/* ==== Admin users: role per project, add to a project ==== */
.umembers .urole{gap:4px;}
.uadd{margin-top:8px;padding-top:8px;border-top:1px solid var(--line);}
.uadd-title{font-size:12px;font-weight:700;color:var(--muted);margin-bottom:4px;}
.research-details h4{margin:12px 0 4px;}
.plain{margin:0;padding-left:18px;font-size:13.5px;color:var(--gray-700);display:grid;gap:6px;}
.plain .fmsg{display:block;color:var(--gray-600);}
.plain .muted{font-size:13px;}

/* ==== Story page: one column with a stage bar and sections (title left, content right) ==== */
/* Spacing uses 8, 12, 16, 24 and 32 px. Body text is 15px on a 24px line; the section titles share that line. */
.story{max-width:1000px;margin:0 auto;}
.story :where(form){margin:0;}
.story .btn{height:36px;padding:0 14px;}
.shead{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:24px;}
.shead-main{flex:1 1 360px;min-width:0;}
.shead-context{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:14px;line-height:24px;color:var(--muted);margin-bottom:8px;}
.shead-context a{color:var(--muted);font-weight:600;}
.shead-context a.issue{color:var(--busy);}
.shead-context a:hover{text-decoration:underline;}
.shead h1{font:800 26px/1.25 var(--display);color:var(--ink);text-wrap:balance;overflow-wrap:anywhere;}
.story-key{font:800 16px var(--display);color:var(--off);margin-right:12px;}
.shead-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.story>.alert{margin:0 0 24px;}
.stages{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;list-style:none;margin:0 0 32px;padding:0;}
.stage{min-width:0;padding-top:8px;border-top:4px solid var(--line);font-size:13px;line-height:20px;color:var(--muted);}
.stage b{display:block;font:800 14px/20px var(--display);color:var(--muted);}
.stage span{display:block;min-height:20px;overflow-wrap:anywhere;}
.stage.done{border-top-color:var(--gdk-green);}
.stage.now{border-top-color:var(--gdk-blue);}
.stage.done b,.stage.now b{color:var(--ink);}
.ssec{display:grid;grid-template-columns:170px minmax(0,1fr);gap:0 32px;padding:24px 0;border-top:1px solid var(--line);}
.ssec-title{margin:0;font:800 17px/24px var(--display);color:var(--ink);overflow-wrap:anywhere;}
.ssec-title small{display:block;margin-top:4px;font:600 13px/20px 'Open Sans',system-ui,'Segoe UI',sans-serif;color:var(--muted);}
.ssec-body{min-width:0;font-size:15px;line-height:24px;}
.ssec :where(p){margin:0;}
.ssec-body>*+*{margin-top:16px;}
.ssec-sub{margin:0;font:700 14px/24px 'Open Sans',system-ui,'Segoe UI',sans-serif;color:var(--ink);}
.ssec-body>*+.ssec-sub{margin-top:24px;}
.ssec-body>.ssec-sub+*{margin-top:8px;}
.ssec h4{font:800 13px/20px var(--display);color:var(--gray-600);margin:16px 0 8px;}
.ssec .muted{font-size:14px;}
.story-text{max-width:75ch;white-space:pre-line;}
.story-text code,.criteria code,.scenarios code{font:13px var(--mono);background:var(--gray-100);border-radius:4px;padding:1px 5px;}
.criteria,.scenarios{list-style:none;margin:0;padding:0;counter-reset:item;}
.criteria li,.scenarios li{counter-increment:item;position:relative;max-width:calc(75ch + 40px);padding:8px 0 8px 40px;border-top:1px solid var(--line);}
.criteria li:first-child,.scenarios li:first-child{border-top:0;}
.criteria li::before,.scenarios li::before{content:counter(item);position:absolute;left:0;top:9px;width:26px;height:22px;border-radius:6px;background:#e6edf5;color:var(--gdk-blue);font:800 13px/22px var(--display);text-align:center;}
.scenarios li::before{background:var(--gray-100);color:var(--gray-600);}
.toggle>summary{display:inline-flex;align-items:center;gap:8px;min-height:36px;cursor:pointer;list-style:none;font-size:14px;font-weight:600;color:var(--busy);}
.toggle>summary::-webkit-details-marker{display:none;}
.toggle>summary::before{content:'\25B8';width:10px;color:var(--off);}
.toggle[open]>summary::before{content:'\25BE';}
.toggle[open]>summary{margin-bottom:8px;}
.toggles{display:grid;justify-items:start;}
.toggles>.toggle{width:100%;}
.ssec .md{max-width:75ch;overflow-wrap:anywhere;}
.ssec .md p,.ssec .md ul,.ssec .md ol{margin:0 0 8px;}
.ssec .md ul,.ssec .md ol{padding-left:22px;}
.ssec .md>:last-child{margin-bottom:0;}
.ssec .md code{font:12.5px var(--mono);background:var(--gray-100);border-radius:4px;padding:1px 5px;}
.ssec .plan.md{max-width:none;}
.research-grid{display:flex;align-items:flex-start;gap:24px;}
.sp{flex:none;font:800 34px/1 var(--display);color:var(--gdk-blue);white-space:nowrap;padding-top:2px;}
.sp small{margin-left:4px;font:700 15px 'Open Sans',system-ui,'Segoe UI',sans-serif;color:var(--muted);}
.research-main{flex:1;min-width:0;}
.research-main>*+*{margin-top:8px;}
.pill-line{display:flex;align-items:center;gap:8px;}
.research-details .md{margin-top:8px;}
.sfoot{position:relative;min-height:36px;}
.sfoot-actions{position:absolute;top:0;right:0;display:flex;align-items:center;gap:8px;}
.sfoot-actions .linkbtn{font-size:14px;}
.sform{display:grid;gap:8px;max-width:75ch;}
.sform label{display:grid;gap:4px;font-size:14px;font-weight:600;line-height:20px;color:var(--ink);}
.sform textarea+label{margin-top:8px;}
.sform .hint{font-size:13px;font-weight:400;color:var(--muted);}
.sform textarea{width:100%;font:14px/20px inherit;font-family:inherit;padding:8px 12px;border:1px solid var(--gray-300);border-radius:8px;resize:vertical;}
.sform-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;}
.plan-decision{display:grid;gap:16px;justify-items:start;}
.eblock [hidden]{display:none !important;}
.ssec-body>.eblock+.eblock{margin-top:24px;}
.eblock-view{display:flex;align-items:flex-start;gap:16px;}
.eblock-view>:first-child{flex:1;min-width:0;}
.eblock-view .ssec-sub+*{margin-top:8px;}
.eblock-view>noscript{flex:none;margin-left:auto;}
.eblock-edit{flex:none;margin-left:auto;font-size:14px;font-weight:600;line-height:24px;color:var(--busy);}
.eblock-edit:hover{text-decoration:underline;}
.shead .eblock-edit{line-height:32px;}
.eblock [data-edit-open][role=button]{cursor:pointer;border-radius:4px;}
.eblock [data-edit-open][role=button]:hover{background:var(--blue-50);box-shadow:0 0 0 4px var(--blue-50);}
.eblock [data-edit-open][role=button]:focus-visible{outline:2px solid var(--busy);outline-offset:4px;}
.eblock-view:not([hidden])+.eblock-form{margin-top:16px;}
.elist>.ssec-sub+*{margin-top:8px;}
.elist>ol+.elist-form,.elist>p+.elist-form{margin-top:16px;}
.eitem-field{display:flex;align-items:flex-start;gap:12px;}
.eitem-field textarea{flex:1;min-width:0;display:block;margin:-4px 0 -4px -9px;padding:3px 8px;border:1px solid var(--gray-300);border-radius:6px;background:var(--white);color:inherit;font:inherit;line-height:24px;resize:none;overflow:hidden;}
.eitem-remove,.elist-add{flex:none;padding:0;border:0;background:none;font:600 14px/24px 'Open Sans',system-ui,'Segoe UI',sans-serif;cursor:pointer;}
.eitem-remove{font-size:13px;color:var(--behind);}
.elist-add{color:var(--busy);}
.eitem-remove:hover,.elist-add:hover{text-decoration:underline;}
.elist-foot{display:flex;align-items:center;gap:16px;margin-top:4px;}
.eblock-form input[type=text]{width:100%;font:15px/20px inherit;font-family:inherit;padding:7px 12px;border:1px solid var(--gray-300);border-radius:8px;}
.eblock-error{color:var(--behind);font-size:14px;font-weight:600;}
.plan-decision>.sform{width:100%;}
.run-status{min-width:0;}
.run-status .pill{white-space:nowrap;}
.run-id{font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink);}
.run-info{display:flex;align-items:baseline;min-width:0;overflow:hidden;white-space:nowrap;font-size:13px;color:var(--muted);}
.run-info>*+*::before{content:'\00B7';margin:0 8px;}
.run-info>.run-branch{min-width:0;overflow:hidden;text-overflow:ellipsis;}
.ssec-body>.run{margin-top:0;}
.ssec-body>.run:first-child{border-top:0;padding-top:0;}
.ssec-body>.run:last-child{padding-bottom:0;}
.run-body{font-size:14px;line-height:1.5;}
.run-body>*+*{margin-top:12px;}
.run-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:16px;}
@media(max-width:640px){
  .shead h1{font-size:22px;}
  .stages{gap:4px;margin-bottom:24px;}
  .stage b{font-size:12px;}
  .stage{font-size:11.5px;line-height:16px;}
  .stage span{min-height:16px;}
  .ssec{grid-template-columns:1fr;gap:8px;}
  .ssec-title small{display:inline;margin:0 0 0 8px;}
  .research-grid{gap:16px;}
  .sfoot-actions{position:static;flex-wrap:wrap;margin-top:8px;}
  .run-head{grid-template-columns:10px auto minmax(0,1fr) auto;row-gap:4px;}
  .run-info{grid-column:2 / -1;grid-row:2;}
}
/* Submit buttons are greyed out while their form is being sent (static/js/forms.js). */
button:disabled,input[type=submit]:disabled{opacity:.55;cursor:default;}
form.is-busy{cursor:progress;}
/* At phone width the user part of the top bar moves to its own line under the logo. */
@media(max-width:560px){
  .topbar{flex-wrap:wrap;row-gap:8px;}
  .topbar-user{width:100%;flex-wrap:wrap;justify-content:flex-end;gap:8px 12px;}
  .topbar-user .btn{padding:5px 10px;}
}
.result-line{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;}
.result-text{margin:0;font-size:14px;}
.result-text>*+*::before{content:'\00B7';display:inline-block;margin:0 8px;color:var(--muted);}
.result-line>.screencast,.ft-scenario>.screencast{flex-basis:100%;grid-column:1 / -1;}
.video-btn{flex:none;}
.ft-scenario{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px 12px;}
.ft-details>summary{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;min-height:36px;min-width:0;}
.ft-details .ft-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ft-details[open] .ft-title{white-space:normal;}
.ft-details .run-meta{flex:none;}
