/* ==========================================================================
   Enterprise readiness.

   This page is scanned by somebody deciding whether to spend their own
   credibility on us, so the job is information design rather than decoration.
   One idea carries it: status is the content, so status is encoded in form -
   a coloured rail down each row, a pill, and a count - and everything that is
   not the register is deliberately quieter than the register.

   It reuses the .ent system in enterprise.css for type, spacing and colour.
   Only the pieces that page does not already have live here.
   ========================================================================== */

/* ---------- status vocabulary ----------
   Four families, ordered by how much weight a buyer can put on them. The
   colours are semantic and are the only colour on the page besides the accent
   already used for links. */
.rdy .claim-state{
  display:inline-flex;align-items:center;white-space:nowrap;
  padding:5px 9px;border:1px solid;border-radius:999px;
  font:600 .63rem/1 var(--e-mono);letter-spacing:.07em}
/* Weight tracks how much a reader can rely on the claim. EVIDENCED is the only
   filled pill and the only one with a tick, because it is the only state that
   means a published artifact anyone can open and check. Everything below it
   recedes to an outline, so the eye lands on the real claims and has to go
   looking for the weak ones -- which, on a page with three NOT CLAIMED rows,
   is the honest way round. Kept in step with lighthouse.css by a test. */
.rdy .claim-state.evidenced       {color:#FFFFFF;background:#10603E;border-color:#10603E}
.rdy .claim-state.evidenced::before{content:'✓';margin-right:5px;font-size:.8em}
.rdy .claim-state.measured        {color:#12603F;background:#E6F3EC;border-color:#9BD1B5}
.rdy .claim-state.published,
.rdy .claim-state.pilot           {color:#075D58;background:transparent;border-color:#A9CFC9}
.rdy .claim-state.outline-only,
.rdy .claim-state.design-only     {color:#5C4D87;background:transparent;border-color:#CFC7E6}
.rdy .claim-state.not-yet-measured{color:#7A4F08;background:transparent;border-color:#E3C785}
.rdy .claim-state.not-claimed     {color:#6B7A82;background:transparent;border-color:#D5DDE0}

/* The rail colour each row takes, keyed to the same four families. */
.rdy .state-evidenced,.rdy .state-measured            {--rail:#3E9E72}
.rdy .state-published,.rdy .state-pilot               {--rail:#3E9A93}
.rdy .state-outline-only,.rdy .state-design-only      {--rail:#8B7CC2}
.rdy .state-not-yet-measured,.rdy .state-not-claimed  {--rail:#C79A3C}

/* ---------- hero ---------- */
.rdy-hero .lede{margin-top:16px}
.rdy-hero .ent-actions{margin-top:26px}

/* The legend is the page's table of contents: each entry says how many claims
   sit at that strength and jumps to the first of them. */
.rdy-legend{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(232px,1fr));
  gap:10px;margin:34px 0 0;padding:0;list-style:none}
.rdy-legend a{
  display:grid;grid-template-columns:auto 1fr;grid-template-areas:"count pill" "count meaning";
  align-items:center;gap:2px 12px;height:100%;
  padding:13px 15px;border:1px solid var(--e-line);border-radius:12px;
  background:var(--e-bg);color:inherit;text-decoration:none}
.rdy-legend a:hover{border-color:var(--e-line-2);text-decoration:none}
.rdy-legend a:focus-visible{outline:3px solid var(--e-accent-tint);outline-offset:2px}
.rdy-count{
  grid-area:count;display:grid;place-items:center;
  min-width:38px;height:38px;border-radius:10px;
  background:var(--e-bg-3);color:var(--e-ink);
  font:640 1.15rem/1 var(--e-mono);font-variant-numeric:tabular-nums}
.rdy-legend .claim-state{grid-area:pill;justify-self:start}
.rdy-legend-meaning{grid-area:meaning;color:var(--e-ink-3);font-size:.78rem;line-height:1.4}

/* ---------- the register ----------
   Rows rather than a <table>: five columns of prose in a table cannot breathe,
   and the previous version dropped its third column entirely on narrow screens
   to cope, which quietly hid the limitation a buyer came for. */
.rdy-register{margin:30px 0 0;padding:0;list-style:none;
  border-top:1px solid var(--e-line)}
.rdy-row{
  display:grid;gap:6px 26px;align-items:start;
  grid-template-columns:minmax(0,1.25fr) 150px minmax(0,1fr) 92px;
  padding:20px 20px 20px 22px;
  border-bottom:1px solid var(--e-line);
  border-left:3px solid var(--rail,var(--e-line-2))}
.rdy-row:hover{background:var(--e-bg-2)}
.rdy-row h3{margin:0 0 5px;font-size:1rem;line-height:1.3}
.rdy-row p{margin:0;font-size:.87rem;line-height:1.55;color:var(--e-ink-2)}
.rdy-row-limit p{color:var(--e-ink-3)}
.rdy-limit-label{
  display:none;margin-bottom:4px;
  font:600 .6rem var(--e-mono);letter-spacing:.08em;text-transform:uppercase;
  color:var(--e-ink-3)}
.rdy-row-go{justify-self:end}
.rdy-row-go a{font:600 .72rem var(--e-mono);white-space:nowrap}

/* The header shares the row grid, so the labels sit over the columns they
   name rather than reading as a caption with slashes in it. */
.rdy-head{
  display:grid;gap:26px;align-items:end;
  grid-template-columns:minmax(0,1.25fr) 150px minmax(0,1fr) 92px;
  padding:0 20px 9px 25px;
  font:600 .62rem var(--e-mono);letter-spacing:.09em;text-transform:uppercase;
  color:var(--e-ink-3)}
.rdy-head span:last-child{justify-self:end}
@media (max-width:1000px){.rdy-head{display:none}}

/* ---------- path to production ---------- */
.rdy-gates{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:0;margin:30px 0 0;padding:0;list-style:none;
  border:1px solid var(--e-line);border-radius:var(--r-md);overflow:hidden;
  background:var(--e-bg)}
.rdy-gates li{padding:22px 20px;border-right:1px solid var(--e-line)}
.rdy-gates li:last-child{border-right:0}
.rdy-gates b{
  display:block;margin-bottom:12px;
  font:640 .74rem var(--e-mono);letter-spacing:.06em;color:var(--e-accent)}
.rdy-gates h3{margin:0 0 7px;font-size:1rem}
.rdy-gates p{margin:0;color:var(--e-ink-3);font-size:.83rem;line-height:1.5}

.rdy-principle{
  margin-top:22px;padding:20px 24px;border-radius:var(--r-md);
  background:#0F172A;color:#B9C8D6;line-height:1.65}
.rdy-principle strong{color:#9BE0B8}

/* ---------- limits ---------- */
.rdy-nots{
  display:grid;gap:1px;max-width:none;margin:26px 0 0;padding:0;list-style:none;
  border:1px solid var(--e-line);border-radius:var(--r-md);
  background:var(--e-line);overflow:hidden}
.rdy-nots li{
  position:relative;padding:16px 20px 16px 46px;
  background:var(--e-bg);color:var(--e-ink-2);font-size:.92rem;line-height:1.6}
.rdy-nots li::before{
  content:"—";position:absolute;left:20px;top:16px;
  color:var(--e-warn);font-weight:700}

/* ---------- operations ---------- */
.rdy-ops{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
  gap:14px;margin-top:26px}
.rdy-ops article{
  display:flex;flex-direction:column;align-items:flex-start;gap:10px;
  padding:20px;border:1px solid var(--e-line);border-radius:var(--r-md);
  background:var(--e-bg)}
.rdy-ops h3{margin:0;font-size:.98rem}
.rdy-ops p{margin:0;color:var(--e-ink-3);font-size:.84rem;line-height:1.5}
.rdy-ops a{margin-top:auto;padding-top:4px;font:600 .72rem var(--e-mono)}
.rdy .operation-status{
  display:inline-flex;align-items:center;min-height:22px;padding:4px 9px;
  border-radius:999px;background:var(--e-bg-3);color:var(--e-ink-3);
  font:600 .62rem var(--e-mono);letter-spacing:.06em}
.rdy .operation-status.pass   {background:#E6F3EC;color:#12603F}
.rdy .operation-status.pending{background:#FBF2E0;color:#7A4F08}
.rdy .operation-status.fail   {background:#FDE8E8;color:#A33A3A}

/* ---------- routes onward ----------
   Six equal cards fighting the register for attention was much of why this
   page read as scattered. A list is what a list of links is. */
.rdy-routes{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(288px,1fr));
  gap:0 30px;margin:24px 0 0;padding:0;list-style:none}
.rdy-routes a{
  display:block;padding:15px 0;border-bottom:1px solid var(--e-line);
  color:inherit;text-decoration:none}
.rdy-routes a:hover{text-decoration:none}
.rdy-routes a:hover b{text-decoration:underline;text-underline-offset:3px}
.rdy-routes b{display:block;color:var(--e-accent);font-size:.94rem;font-weight:640}
.rdy-routes span{display:block;margin-top:3px;color:var(--e-ink-3);
  font-size:.82rem;line-height:1.5}

/* ---------- narrow ----------
   The register stacks instead of dropping a column. Losing the limitation to
   save width defeats the point of publishing it. */
@media (max-width:1000px){
  .rdy-row{grid-template-columns:minmax(0,1fr) 150px;gap:12px 20px}
  .rdy-row-claim{grid-column:1}
  .rdy-row-state{grid-column:2;justify-self:end}
  .rdy-row-limit{grid-column:1/-1;padding-top:2px}
  .rdy-limit-label{display:block}
  .rdy-row-go{grid-column:1/-1;justify-self:start}
  .rdy-gates li{border-right:0;border-bottom:1px solid var(--e-line)}
  .rdy-gates li:last-child{border-bottom:0}
}
@media (max-width:620px){
  .rdy-row{grid-template-columns:1fr;padding:18px 16px 18px 18px}
  .rdy-row-state{justify-self:start}
  .rdy-legend{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){.rdy-row{transition:none}}
