/*
 * File: assets/css/pages.css, the wholesale application, account, contact and panel parts of the hilo theme.
 * Purpose: styles the white panels with their titles, the application pages with the step indicator, the field groups
 * and the side panel of what to bring, the account page of an applicant with the 3 stages, the answers and the tax
 * document panel, the contact page with its facts and form panel, and the thank-you note, phone first.
 * Defines: the .panel, .apply, .apply-steps, .apply-aside, .app-status, .stage-path, .facts, .contact and .thanks
 * classes
 * Doc: docs/notes/website/assets/themes/hilo/assets/css/pages.css.md
 */

/* Panels: the white card of the store and account pages, a fieldset or a section, with a serif title. */

.panel {
  display: grid;
  gap: var(--s-4);
  align-content: start;
  min-width: 0;
  margin: 0;
  padding: var(--s-5);
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
}

.panel p {
  margin: 0;
}

.panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
}

.panel-title {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0;
  padding: 0;
  font-family: var(--font-display);
  font-size: var(--fs-5);
  font-weight: 600;
  line-height: 1.2;
}

.panel-title i {
  color: var(--text-2);
  font-size: 16px;
}

legend.panel-title {
  float: left;
  width: 100%;
  margin-bottom: var(--s-1);
}

legend.panel-title + * {
  clear: both;
}

.cart-band .notice,
.checkout-band .notice,
.apply-body > .notice {
  margin-bottom: var(--s-5);
}

.summary .notice {
  margin: 0;
}

/* The core sign-in and reset cards inside the Hilo portal document: 1 centered card, the serif title and the buttons of
   the public pages. */

.portal-body .plex-system-card {
  display: grid;
  gap: var(--s-4);
  max-width: 480px;
  margin: 0 auto;
  padding: var(--s-6) var(--s-5);
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-1);
}

.portal-body .plex-system-card > * {
  margin: 0;
}

.portal-body .plex-system-title {
  font-family: var(--font-display);
  font-size: clamp(32px, 4vw, 44px);
  font-weight: 600;
}

.portal-body .plex-system-text,
.signin-apply {
  color: var(--text-2);
}

.portal-body .plex-system-status {
  padding: var(--s-3) var(--s-4);
  background: var(--bg-alt);
  border-radius: var(--r-md);
  color: var(--text);
}

.portal-body .plex-system-form {
  display: grid;
  gap: var(--s-4);
}

.portal-body .plex-btn {
  min-height: 48px;
  padding: 0 var(--s-5);
  border-radius: var(--r-sm);
  font-family: var(--font);
  font-size: var(--fs-2);
  font-weight: 500;
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
}

.portal-body .plex-system-form .btn,
.portal-body .plex-system-form .plex-btn {
  width: 100%;
}

/* Application: the head with the step indicator, the form in titled groups, the side panel from 1200px. */

.apply {
  display: grid;
  gap: var(--s-6);
}

.apply-head {
  display: grid;
  gap: var(--s-3);
  max-width: 760px;
}

.apply-head .eyebrow,
.apply-head .page-title,
.apply-head .lead {
  margin: 0;
}

.apply-head .page-title {
  font-size: clamp(34px, 4.6vw, 56px);
}

.apply-signin {
  margin: 0;
  font-size: var(--fs-2);
}

.apply-steps {
  display: grid;
  gap: var(--s-2);
  margin: var(--s-2) 0;
}

.apply-steps-count {
  margin: 0;
  color: var(--text-2);
  font-size: var(--fs-1);
  font-weight: 500;
  letter-spacing: var(--ls-label);
  text-transform: uppercase;
}

.apply-steps-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--s-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.apply-step {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--s-2);
  padding-top: var(--s-4);
  color: var(--text-2);
  font-size: var(--fs-2);
}

/* The bar over each step is a filled strip: the accent marks a step reached, the line fill one to come. */
.apply-step::before,
.stage::before {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 4px;
  border-radius: var(--r-full);
  background: var(--line);
  content: "";
}

.apply-step.is-current,
.apply-step.is-done {
  color: var(--text);
}

.apply-step.is-current::before,
.apply-step.is-done::before,
.stage.is-current::before {
  background: var(--accent);
}

.stage.is-done::before {
  background: var(--status-success);
}

.apply-step-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 28px;
  height: 28px;
  border: 1px solid var(--line-strong);
  border-radius: var(--r-full);
  font-size: var(--fs-1);
  font-weight: 600;
}

.apply-step.is-current .apply-step-mark,
.apply-step.is-done .apply-step-mark {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--on-accent);
}

.apply-body {
  min-width: 0;
}

.apply-form {
  gap: var(--s-6);
  padding: var(--s-5) var(--s-4);
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
}

.apply-form .form-actions .btn {
  width: 100%;
}

.apply-aside {
  display: grid;
  gap: var(--s-5);
  align-content: start;
  align-self: start;
  padding: var(--s-5);
  background: var(--bg-alt);
  border-radius: var(--r-lg);
}

.apply-aside-title {
  margin: 0 0 var(--s-3);
  font-size: var(--fs-4);
}

.apply-list {
  display: grid;
  gap: var(--s-3);
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: var(--fs-2);
}

.apply-list li {
  display: flex;
  gap: var(--s-3);
}

.apply-list i {
  flex: none;
  width: 16px;
  margin-top: 4px;
  color: var(--text-2);
  text-align: center;
}

.apply-list a {
  color: var(--text);
}

/* Applicant account: the 3 stages, the note of the status, the answers and the tax document panel. */

.app-status {
  display: grid;
  gap: var(--s-5);
}

.stage-panel {
  gap: var(--s-4);
}

.stage-path {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--s-2);
  margin: 0 0 var(--s-2);
  padding: 0;
  list-style: none;
}

.stage {
  position: relative;
  display: grid;
  justify-items: start;
  gap: var(--s-2);
  padding-top: var(--s-4);
  color: var(--text-2);
  font-size: var(--fs-1);
}

.stage.is-done {
  color: var(--text);
}

.stage.is-current {
  color: var(--text);
  font-weight: 500;
}

.stage-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: 1px solid var(--line-strong);
  border-radius: var(--r-full);
  font-weight: 600;
}

.stage.is-done .stage-mark {
  background: var(--status-success);
  border-color: var(--status-success);
  color: var(--on-status);
}

.stage.is-current .stage-mark {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--on-accent);
}

.stage-note {
  padding: var(--s-3) var(--s-4);
  background: var(--bg-alt);
  border-radius: var(--r-md);
}

.app-status-grid {
  display: grid;
  gap: var(--s-5);
  align-items: start;
}

/* With no document panel the answers take the whole row. */
.app-status-grid > :only-child {
  grid-column: 1 / -1;
}

.facts {
  display: grid;
  gap: var(--s-3);
  margin: 0;
}

.fact {
  display: grid;
  gap: 2px;
  padding-bottom: var(--s-3);
  border-bottom: 1px solid var(--line);
}

.fact dt {
  color: var(--text-2);
  font-size: var(--fs-1);
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.fact dd {
  margin: 0;
  overflow-wrap: anywhere;
}

/* Contact: the heading, intro and facts beside the form panel from 960px; the thank-you note after a post. */

.contact {
  display: grid;
  gap: var(--s-6);
  align-items: start;
}

.contact-copy {
  display: grid;
  gap: var(--s-4);
  align-content: start;
}

.contact-copy .eyebrow,
.contact-copy .page-title,
.contact-copy .lead {
  margin: 0;
}

.contact-copy .page-title {
  font-size: clamp(34px, 4.6vw, 56px);
}

.contact-facts {
  display: grid;
  gap: var(--s-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.contact-facts li {
  display: flex;
  gap: var(--s-3);
}

.contact-facts i {
  flex: none;
  width: 18px;
  margin-top: 5px;
  color: var(--text-2);
  text-align: center;
}

.contact-facts a {
  color: var(--text);
}

.contact-dropoff {
  margin: 0;
}

.contact-form .form-actions .btn {
  width: 100%;
}

.thanks .btn-row {
  justify-content: flex-start;
  margin-top: var(--s-2);
}

.qr-card-meta {
  margin: 0;
  color: var(--text-2);
  font-size: var(--fs-1);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

@media (min-width: 600px) {
  .apply-form {
    padding: var(--s-6);
  }

  .facts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: var(--s-5);
  }

  .apply-form .form-actions .btn,
  .contact-form .form-actions .btn {
    width: auto;
  }
}

@media (min-width: 960px) {
  .contact {
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
    gap: var(--s-8);
  }

  .app-status-grid {
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  }
}

@media (min-width: 1200px) {
  .apply {
    grid-template-columns: minmax(0, 1fr) 320px;
    column-gap: var(--s-7);
  }

  .apply-head {
    grid-column: 1 / -1;
  }

  .apply-aside {
    position: sticky;
    top: var(--s-5);
  }
}
