/* Applyready landing: the path under the hero, the live stage, and the three things one run
   leaves behind - the file, the letter and the people. */

.panel-card {
  border: 1px solid var(--line-200);
  border-radius: var(--r-lg);
  background: var(--bg);
  box-shadow: var(--shadow-2);
  padding: var(--sp-4);
}

.panel-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  padding-bottom: var(--sp-3);
  border-bottom: 1px solid var(--line-200);
  margin-bottom: var(--sp-4);
}

.req-list {
  display: grid;
  gap: var(--sp-3);
}

.req {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--sp-1) var(--sp-3);
  align-items: start;
  font-size: var(--fs-small);
  color: var(--ink-900);
}

.mock-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  margin-top: var(--sp-4);
  padding-top: var(--sp-3);
  border-top: 1px solid var(--line-200);
}

.mock-mark {
  width: 18px;
  height: 18px;
  flex: none;
}

.hero-mock-fade {
  animation: mock-fade var(--dur-3) var(--ease-out) both;
}

@keyframes mock-fade {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

/* The four steps as one path rather than four cards.

   Standing as four bordered columns they read as a row of the same thing said four times, which
   is what the landing had too much of. A number, a label and a short connector between them say
   the same in one object. */

.path-band {
  background: var(--surface);
}

.path {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--sp-4);
}

.path-step {
  position: relative;
  display: flex;
  align-items: baseline;
  gap: var(--sp-3);
  padding-right: var(--sp-8);
}

.path-step:not(:last-child)::after {
  content: "";
  position: absolute;
  right: var(--sp-2);
  top: 0.62em;
  width: var(--sp-5);
  height: 1px;
  background: var(--line-200);
}

.path-num {
  font-size: var(--fs-micro);
  font-weight: var(--fw-semibold);
  color: var(--accent-600);
  letter-spacing: 0.04em;
  flex: none;
}

.path-label {
  font-size: var(--fs-body);
  font-weight: var(--fw-medium);
  color: var(--ink-900);
}

@media (max-width: 900px) {
  .path {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--sp-5);
  }

  .path-step::after {
    display: none;
  }

  .path-step {
    padding-right: 0;
  }
}

@media (max-width: 520px) {
  .path {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* The stage: the sample posting with the real panel docked beside it.

   Both are the product's own pages in a frame, so nothing here is a drawing of the product. The
   cover holds the wheel and the keyboard until a reader asks for them: a frame that grabs the
   wheel of a page scrolls the demonstration away from under whoever was reading about it. */

.stage-head {
  max-width: var(--container-narrow);
}

.stage {
  margin-top: var(--sp-8);
  border: 1px solid var(--line-200);
  border-radius: var(--r-lg);
  background: var(--bg);
  box-shadow: var(--shadow-2);
  overflow: hidden;
}

.stage:focus-within {
  border-color: var(--accent-600);
  box-shadow: 0 0 0 3px var(--accent-100);
}

.stage-bar {
  padding: var(--sp-2) var(--sp-4);
  background: var(--surface);
  border-bottom: 1px solid var(--line-200);
  font-family: var(--font-mono);
  font-size: var(--fs-micro);
  color: var(--ink-500);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.stage-body {
  position: relative;
}

.stage-body iframe {
  display: block;
  width: 100%;
  height: clamp(520px, 74vh, 760px);
  border: 0;
}

/* The cover is a control, and its button is answered by a script. With scripts off it would be
   a button that does nothing over a frame nobody is holding, so only a page that ran the line in
   the head puts it up. */
.stage-cover {
  display: none;
}

.js .stage-cover {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  background: rgba(14, 17, 22, 0.05);
}

.stage-foot {
  margin-top: var(--sp-4);
  font-size: var(--fs-small);
}

@media (max-width: 700px) {
  .stage-body iframe {
    height: 520px;
  }
}

/* What one run leaves behind */

.out-band {
  background: var(--surface);
}

.out-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--sp-16);
  align-items: start;
}

.letter-row {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: var(--sp-16);
  align-items: start;
}

/* A page of a resume is taller than the words beside it, and the words used to end halfway up
   with 400px of nothing under them. They travel with the page instead. */
.out-words,
.letter-side {
  position: sticky;
  top: 96px;
}

@media (max-width: 980px) {
  .out-row,
  .letter-row {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--sp-10);
  }

  /* Stacked, there is nothing beside the page to travel with. */
  .out-words,
  .letter-side {
    position: static;
  }
}

/* A page of the finished file, shown as a page */

.paper {
  border: 1px solid var(--line-200);
  border-radius: var(--r-md);
  background: var(--bg);
  box-shadow: var(--shadow-2);
  overflow: hidden;
}

.paper-tab {
  padding: var(--sp-2) var(--sp-4);
  background: var(--surface);
  border-bottom: 1px solid var(--line-200);
  font-size: var(--fs-micro);
  color: var(--ink-500);
}

.paper .rsm {
  max-width: none;
  padding: var(--sp-6);
}

/* A line the run rewrote. The browser's own mark is yellow highlighter over black; this is the
   accent the rest of the product uses for what it did. */
.rsm-edited {
  background: var(--accent-100);
  color: var(--ink-900);
  border-radius: 3px;
  padding: 0 2px;
}

.letter-text {
  padding: var(--sp-8);
  display: grid;
  gap: var(--sp-4);
  font-size: var(--fs-small);
  line-height: var(--lh-body);
  color: var(--ink-800);
}

/* A letter is read at the width a letter is written to, whatever room the column leaves. */
.paper-letter .letter-text {
  max-width: 64ch;
}

/* Before and after, per edit */

.edits {
  display: grid;
  gap: var(--sp-5);
}

.edit {
  border-left: 2px solid var(--line-200);
  padding-left: var(--sp-4);
}

.edit.is-refused {
  border-left-color: var(--stop-600);
}

.edit-head {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
}

.edit-block {
  font-size: var(--fs-micro);
  color: var(--ink-500);
}

.edit-was {
  margin-top: var(--sp-2);
  font-size: var(--fs-small);
  color: var(--ink-500);
  text-decoration: line-through;
  text-decoration-color: var(--ink-400);
}

.edit-now {
  margin-top: var(--sp-1);
  font-size: var(--fs-small);
  color: var(--ink-900);
}

/* A refused edit is the other way round: the line that stayed is the one on top, and the one
   struck through is what the model wanted to put in its place. */
.edit.is-refused .edit-was {
  text-decoration: none;
  color: var(--ink-900);
}

.edit.is-refused .edit-now {
  color: var(--stop-700);
  text-decoration: line-through;
  text-decoration-color: var(--stop-600);
}

.edit-why {
  margin-top: var(--sp-2);
  font-size: var(--fs-micro);
  color: var(--ink-500);
}

/* The short letter, in the shape it is pasted into */

.msgbox {
  border: 1px solid var(--line-200);
  border-radius: var(--r-md);
  background: var(--surface);
  padding: var(--sp-4);
}

.msgbox-head {
  font-size: var(--fs-micro);
  color: var(--ink-500);
}

.msgbox-text {
  margin-top: var(--sp-2);
  font-size: var(--fs-small);
  line-height: var(--lh-body);
  color: var(--ink-900);
}

/* The people the run found */

.who-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--sp-6);
}

.who {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
  padding: var(--sp-5);
  border: 1px solid var(--line-200);
  border-radius: var(--r-lg);
  background: var(--bg);
}

.who .badge {
  align-self: start;
}

.who-name {
  margin-top: var(--sp-2);
  font-size: var(--fs-h3);
  font-weight: var(--fw-semibold);
  letter-spacing: -0.01em;
}

.who-role {
  font-size: var(--fs-small);
  color: var(--ink-500);
}

.who-why {
  font-size: var(--fs-small);
  color: var(--ink-700);
}

.who-source {
  margin-top: auto;
  padding-top: var(--sp-3);
  border-top: 1px solid var(--line-200);
  font-size: var(--fs-micro);
  color: var(--ink-500);
}

@media (max-width: 900px) {
  .who-row {
    grid-template-columns: minmax(0, 1fr);
  }
}
