/* Hardcore app: additions on top of portal.css (same paper/ink tokens). */
img { max-width:100%; height:auto; display:block; }
.top .r { display:flex; gap:20px; align-items:center; font-size:14px; }
.top .r a, .top .r button { color:#c9cbd0; text-decoration:none; background:none; border:0; cursor:pointer; padding:0; font-size:14px; }
.top .r a:hover, .top .r button:hover { color:#fff; }
.top .r .who { color:var(--mute); }
.demo-mode { background:#efe7da; color:#6b4f1d; font-size:13.5px; }
.demo-mode .w { padding-top:8px; padding-bottom:8px; }
.label { display:inline-flex; align-items:center; gap:8px; font-size:12.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; padding:4px 9px; border:1.5px solid currentColor; }
.label.fp { color:var(--warn); }
.label.ok { color:#2f6b3d; }
.label.wait { color:var(--mute2); }
.pagehead { background:var(--night); color:#fff; padding:44px 0 36px; }
.pagehead h1 { font-weight:700; font-stretch:110%; font-size:clamp(30px,4vw,48px); line-height:1.02; letter-spacing:-.02em; margin:8px 0 10px; }
.pagehead p { color:#b8bbc1; margin:0; max-width:720px; }
.wrap { padding:44px 0 90px; }
.narrow { max-width:720px; }
.field { display:flex; flex-direction:column; gap:7px; margin-bottom:18px; }
.field label { font-weight:600; font-size:15px; }
.field .hint { color:var(--mute2); font-size:13.5px; margin-top:-2px; }
input[type=text], input[type=email], input[type=number], select { font:inherit; font-size:16px; color:var(--ink); background:#fff; border:1px solid var(--lineD); padding:12px 14px; border-radius:0; width:100%; }
input:focus, select:focus { outline:none; border-color:var(--ink); }
textarea { background:#fff; border:1px solid var(--lineD); }
.btn.ghost { background:transparent; color:var(--ink); border:1.5px solid var(--ink); }
.btn.ghost:hover { background:#fff; }
.btn.small { padding:8px 14px; font-size:14px; }
.chk { display:flex; gap:12px; align-items:flex-start; color:var(--mute2); font-size:15px; margin:10px 0; }
.chk input { margin-top:5px; accent-color:var(--ink); width:16px; height:16px; }
.err { color:var(--warn); font-size:14.5px; }
.okmsg { color:#2f6b3d; font-size:14.5px; }
.panel { background:#fff; padding:26px 28px; }
.panel + .panel { margin-top:16px; }
.two { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:40px; align-items:start; }
.three { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
h3 { font-size:19px; font-weight:700; font-stretch:104%; margin:0 0 10px; line-height:1.25; }
.muted { color:var(--mute2); }
.small { font-size:14px; }

/* project list */
.plist li { display:grid; grid-template-columns:1fr auto; gap:6px 16px; padding:18px 0; border-top:1px solid var(--lineD); }
.plist a.nm { font-weight:700; font-size:18px; text-decoration:none; }
.plist a.nm:hover { text-decoration:underline; }
.pill { font-size:12px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--mute2); border:1px solid var(--lineD); padding:3px 8px; white-space:nowrap; align-self:start; }

/* spec chat */
.chat { display:flex; flex-direction:column; gap:14px; max-height:62vh; overflow-y:auto; padding-right:6px; }
.bubble { max-width:88%; padding:14px 18px; font-size:15.5px; line-height:1.5; white-space:pre-wrap; }
.bubble.user { align-self:flex-end; background:var(--ink); color:#fff; }
.bubble.agent { align-self:flex-start; background:#fff; border-left:3px solid var(--ink); }
.bubble small { display:block; font-size:12px; color:var(--mute); margin-top:6px; }
.bubble.user small { color:#8d9096; }
.composer { padding:16px 0 4px; margin-top:10px; border-top:1px solid var(--lineD); }
.composer textarea { min-height:64px; }
.topics { display:flex; flex-wrap:wrap; gap:6px; margin:6px 0 0; }
.topics span { font-size:12.5px; padding:3px 8px; border:1px solid var(--lineD); color:var(--mute); }
.topics span.on { color:var(--ink); border-color:var(--ink); }

/* requirements editor */
.req h4 { margin:18px 0 6px; font-size:13px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--mute2); }
.req .ri { display:grid; grid-template-columns:38px 1fr 24px; gap:8px; align-items:start; padding:6px 0; border-top:1px solid var(--lineD); }
.req .ri b { font-size:13px; color:var(--mute2); padding-top:9px; }
.req .ri textarea { min-height:40px; font-size:14.5px; padding:8px 10px; }
.req .ri button { background:none; border:0; color:var(--mute); cursor:pointer; font-size:18px; padding-top:6px; }
.req .add { margin-top:6px; }

/* progress */
.prog { background:#fff; padding:30px 32px; }
.bar { height:6px; background:#e6e6e2; margin:18px 0 22px; position:relative; }
.bar i { position:absolute; left:0; top:0; bottom:0; background:var(--ink); transition:width .6s ease; }
.steps-l { list-style:none; margin:0; padding:0; }
.steps-l li { padding:9px 0; border-top:1px solid var(--lineD); display:flex; gap:12px; align-items:baseline; font-size:15.5px; }
.steps-l li::before { content:""; width:9px; height:9px; background:var(--ink); flex:none; }
.steps-l li.now::before { background:transparent; border:1.5px solid var(--ink); animation:blink 1s infinite; }
@keyframes blink { 50% { opacity:.25; } }
.steps-l time { color:var(--mute); font-size:13px; margin-left:auto; font-variant-numeric:tabular-nums; }

/* first pass report */
.fpbar { display:flex; gap:16px; align-items:center; flex-wrap:wrap; justify-content:space-between; background:#fff; padding:16px 22px; border-left:4px solid var(--warn); margin-bottom:28px; }
.sec { margin-top:48px; }
.sec > h2 { margin-bottom:4px; }
.lane h3 { text-transform:uppercase; font-size:13px; letter-spacing:.07em; color:var(--mute2); }
.lane ul { margin:0; padding-left:18px; }
.lane li { margin:6px 0; font-size:15px; }
.diagram { background:#fff; padding:14px; overflow-x:auto; }
.diagram svg { display:block; width:100%; min-width:620px; height:auto; }
table.t { width:100%; border-collapse:collapse; font-size:14.5px; background:#fff; }
table.t th, table.t td { text-align:left; padding:10px 12px; border-bottom:1px solid var(--lineD); vertical-align:top; }
table.t th { font-size:12.5px; letter-spacing:.05em; text-transform:uppercase; color:var(--mute2); font-weight:700; }
table.t td.n, table.t th.n { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
table.t tfoot td { font-weight:700; border-top:2px solid var(--ink); }
.est { color:var(--mute2); font-size:12px; }
.tablewrap { overflow-x:auto; }
.quote { background:var(--night); color:#fff; padding:30px 32px; display:grid; grid-template-columns:1fr auto; gap:24px; align-items:end; }
.quote b.p { display:block; font-size:44px; font-weight:700; font-stretch:108%; letter-spacing:-.02em; line-height:1; margin:8px 0; }
.quote .muted { color:#a7aab0; }
.quote ul { margin:12px 0 0; padding-left:18px; color:#c9cbd0; font-size:14.5px; }
.quote .btn { background:#fff; color:var(--ink); }
.quote .btn:hover { background:#dfe1e4; }
.cv li { padding:10px 0; border-top:1px solid var(--lineD); }

/* gates */
.gates li { display:grid; grid-template-columns:22px 1fr; gap:12px; padding:14px 0; border-top:1px solid var(--lineD); }
.gates li:last-child { border-bottom:1px solid var(--lineD); }
.gates .dot { width:12px; height:12px; border:1.5px solid var(--mute); margin-top:6px; }
.gates li.signed_off .dot { background:var(--ink); border-color:var(--ink); }
.gates li.awaiting_review .dot { border-color:var(--ink); background:repeating-linear-gradient(45deg,var(--ink) 0 2px,transparent 2px 4px); }
.gates li.changes_requested .dot { border-color:var(--warn); background:var(--warn); }
.gates b { display:block; font-size:15.5px; }
.gates span { color:var(--mute2); font-size:14px; }
.gates details { margin-top:6px; font-size:13.5px; }
.gates details summary { cursor:pointer; color:var(--mute2); }
.ck { display:grid; grid-template-columns:96px 1fr; gap:4px 10px; padding:6px 0; border-top:1px dashed var(--lineD); }
.ck .s { font-weight:700; font-size:12px; letter-spacing:.05em; text-transform:uppercase; }
.ck .s.pass { color:#2f6b3d; } .ck .s.fail { color:var(--warn); } .ck .s.cant_verify { color:var(--mute2); }
.ck .ev { color:var(--mute2); word-break:break-word; }

/* console */
.cgrid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:28px; align-items:start; }
.qitem { background:#fff; padding:18px 20px; margin-bottom:12px; }
.qitem h3 { margin-bottom:4px; }
.qitem .row { margin-top:10px; }
.kv { display:grid; grid-template-columns:150px 1fr; gap:6px 14px; font-size:14.5px; }
.kv dt { font-weight:700; } .kv dd { margin:0; color:var(--mute2); }
.navtabs { display:flex; gap:0; flex-wrap:wrap; border-bottom:1px solid var(--lineD); margin-bottom:26px; }
.navtabs button { background:none; border:0; padding:12px 16px; font-weight:600; color:var(--mute2); cursor:pointer; border-bottom:3px solid transparent; }
.navtabs button[aria-selected="true"] { color:var(--ink); border-bottom-color:var(--ink); }
pre.json { background:#fff; padding:14px; font-size:12.5px; overflow:auto; max-height:420px; white-space:pre-wrap; word-break:break-word; }
.code { font-family:ui-monospace, Consolas, monospace; font-size:13.5px; background:#fff; padding:2px 6px; }

/* landing */
.lhero { background:radial-gradient(1100px 700px at 75% 45%, #23262b 0%, var(--night) 62%); color:#fff; }
.lhero .w { display:grid; grid-template-columns:1.1fr .9fr; gap:40px; align-items:center; padding-top:70px; padding-bottom:80px; }
.lhero h1 { font-weight:700; font-stretch:112%; font-size:clamp(40px,5.8vw,82px); line-height:.96; letter-spacing:-.025em; margin:14px 0 22px; }
.lhero p { font-size:19px; color:#b8bbc1; max-width:540px; margin:0 0 30px; }
.lhero .btn { background:#fff; color:var(--ink); }
.lhero .btn:hover { background:#dfe1e4; }
.lhero .ghostl { color:#c9cbd0; margin-left:20px; text-decoration:none; }
.lhero .ghostl:hover { color:#fff; }
.lhero .shot { background:#fff; padding:10px; }
.lsec { padding:96px 0; }
.lsec h2 { font-size:clamp(30px,4vw,52px); font-stretch:108%; line-height:1.03; letter-spacing:-.02em; margin:0 0 16px; }
.lsec .lead { font-size:19px; color:var(--mute2); max-width:660px; margin:0 0 44px; }
.flow { display:grid; grid-template-columns:repeat(4,1fr); gap:28px; }
.flow .n { font-weight:700; color:var(--mute); font-size:14px; }
.flow h3 { font-size:21px; margin:10px 0 8px; }
.flow p { margin:0; color:var(--mute2); font-size:15.5px; }
.flow .tag { display:inline-block; margin-top:12px; font-size:12.5px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; }
.exs { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.ex { background:#fff; display:flex; flex-direction:column; text-decoration:none; }
.ex .im { aspect-ratio:3/2; background:#fff; display:flex; align-items:center; justify-content:center; overflow:hidden; border-bottom:1px solid var(--lineD); }
.ex .im img { width:100%; height:100%; object-fit:contain; }
.ex .tx { padding:22px 24px 26px; }
.ex .tx h3 { font-size:24px; margin:4px 0 8px; }
.ex .tx p { margin:0 0 14px; color:var(--mute2); }
.ex .tx .go { font-weight:600; border-bottom:1.5px solid var(--ink); }
.ex:hover .go { color:var(--mute2); }
.honest { background:#fff; }
.honest dl { display:grid; grid-template-columns:220px 1fr; gap:16px 32px; max-width:900px; margin:0; }
.honest dt { font-weight:700; } .honest dd { margin:0; color:var(--mute2); }
.wl { display:grid; grid-template-columns:1fr 1fr; gap:18px 22px; max-width:900px; }
.wl .full { grid-column:1/-1; }

@media (max-width:900px){
  .two, .cgrid, .three, .exs, .flow, .wl, .lhero .w { grid-template-columns:1fr; }
  .honest dl, .kv { grid-template-columns:1fr; }
  .quote { grid-template-columns:1fr; }
  .panel { padding:20px 18px; }
  .top .r .who { display:none; }
  .bubble { max-width:96%; }
  .lsec { padding:64px 0; }
}
@media (max-width:900px){ .o7 { order:7 !important; } .o8 { order:8 !important; } .head .navtabs button { padding:10px 10px; } }
.three > .panel + .panel, .two > .panel + .panel { margin-top:0; }
@media (max-width:900px){ .head .facts > div:nth-child(n+3) { display:none; } .head .facts > div:nth-child(-n+2) { border-bottom:0; } .head h1 { font-size:30px; } }
/* pricing, usage, dialogs */
.modal { position:fixed; inset:0; background:rgba(13,14,16,.55); display:flex; align-items:center; justify-content:center; z-index:50; padding:16px; }
.mbox { background:var(--snow); max-width:520px; width:100%; padding:26px 28px; border-top:4px solid var(--ink); max-height:90vh; overflow:auto; }
.mbox h3 { font-size:22px; margin:0 0 12px; }
.mbox p { margin:0 0 12px; font-size:15.5px; }
.meter { margin:0 0 16px; }
.meter .mt { display:flex; justify-content:space-between; gap:12px; font-size:14.5px; margin-bottom:6px; }
.meter .mt span { color:var(--mute2); }
.mbar { height:8px; background:#e6e6e2; position:relative; }
.mbar i { position:absolute; left:0; top:0; bottom:0; background:var(--ink); }
.meter.near .mbar i { background:#7a5a20; }
.meter.full .mbar i { background:var(--warn); }
.meter small { display:block; color:var(--mute); font-size:12.5px; margin-top:4px; }
.plans { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.plan { background:#fff; padding:24px 22px; display:flex; flex-direction:column; gap:8px; border-top:4px solid transparent; }
.plan.cur { border-top-color:var(--ink); }
.plan .pn { font-weight:700; color:var(--mute2); font-size:14px; letter-spacing:.05em; text-transform:uppercase; }
.plan b.pp { font-size:36px; font-weight:700; font-stretch:108%; letter-spacing:-.02em; line-height:1; }
.plan .was { color:var(--mute); text-decoration:line-through; font-size:15px; margin-left:6px; }
.plan ul { margin:6px 0 10px; padding:0; list-style:none; font-size:14.5px; color:var(--mute2); }
.plan li { padding:6px 0; border-top:1px solid var(--lineD); }
.plan .btn { margin-top:auto; justify-content:center; }
.offer { background:var(--night); color:#fff; padding:22px 26px; display:flex; justify-content:space-between; gap:20px; align-items:center; flex-wrap:wrap; margin-bottom:24px; }
.offer b { font-size:19px; } .offer span { color:#c9cbd0; font-size:14.5px; }
.qtable { width:100%; border-collapse:collapse; font-size:15px; margin:8px 0 12px; }
.qtable td { padding:7px 0; border-bottom:1px solid var(--lineD); } .qtable td:last-child { text-align:right; font-variant-numeric:tabular-nums; }
.qtable tr.tot td { font-weight:700; border-bottom:2px solid var(--ink); }
.hist { display:flex; align-items:flex-end; gap:2px; height:56px; margin:6px 0; }
.hist i { flex:1; background:var(--ink); min-height:1px; }
@media (max-width:900px){ .plans { grid-template-columns:1fr 1fr; } }
@media (max-width:520px){ .plans { grid-template-columns:1fr; } }
.btn.ghost[disabled] { background:transparent; color:#9a9ca1; border-color:#c6c7ca; cursor:default; }
