/* Закрытая зона (логин, кабинеты, тесты). Warm-editorial: forest #2F5B4F, Lora+Inter. */
.pv {
  --pv-bg:     #FAF7F2;
  --pv-fg:     #1C1A17;
  --pv-accent: #2F5B4F;
  --pv-accent-d:#264a40;
  --pv-muted:  #8A817A;
  --pv-border: rgba(47, 91, 79, 0.18);
  --pv-card:   #fff;
  --pv-ok:     #2F5B4F;
  --pv-err:    #b3382c;
  max-width: 60rem;
  margin: 2rem auto 4rem;
  padding: 0 1rem;
  color: var(--pv-fg);
}
.pv-narrow { max-width: 30rem; }

.pv h1 {
  font-family: 'Lora', 'Iowan Old Style', Georgia, serif;
  font-weight: 600; letter-spacing: -0.01em;
  margin: 0 0 .4rem;
}
.pv h2 {
  font-family: 'Lora', Georgia, serif; font-weight: 600;
  font-size: 1.3rem; margin: 2.2rem 0 .8rem;
}
.pv h3 { font-family: 'Lora', Georgia, serif; font-weight: 600; font-size: 1.1rem; margin: 1.6rem 0 .7rem; }
.pv-lede { color: var(--pv-muted); max-width: 44rem; margin: 0 0 1.4rem; line-height: 1.6; }
.pv-meta { color: var(--pv-muted); font-size: .85rem; }

/* верхняя полоса «вошли как …» */
.pv-userbar {
  display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  padding: .6rem .9rem; margin: 0 0 1.6rem;
  background: rgba(47, 91, 79, 0.06); border: 1px solid var(--pv-border); border-radius: 10px;
  font-size: .92rem;
}
.pv-userbar form { margin: 0; }

/* карточка */
.pv-card {
  background: var(--pv-card); border: 1px solid var(--pv-border);
  border-radius: 14px; padding: 1.6rem 1.8rem; box-shadow: 0 1px 3px rgba(28,26,23,.05);
}
.pv-card + .pv-card { margin-top: 1.1rem; }

/* бейджи / пилюли */
.pv-tag {
  display: inline-block; font-size: .75rem; font-weight: 600; letter-spacing: .04em;
  text-transform: uppercase; color: var(--pv-accent);
  background: rgba(47,91,79,.09); padding: .2rem .55rem; border-radius: 20px;
}
.pv-pill { display: inline-block; font-weight: 600; font-size: .82rem; padding: .15rem .6rem; border-radius: 20px; }
.pv-pill.ok  { color: #fff; background: var(--pv-ok); }
.pv-pill.err { color: #fff; background: var(--pv-err); }
.pv-ok  { color: var(--pv-ok);  font-weight: 700; }
.pv-err { color: var(--pv-err); font-weight: 700; }

/* формы */
.pv-form { max-width: 30rem; }
.pv-form label { display: block; font-weight: 600; font-size: .92rem; margin: 0 0 1rem; }
.pv-form input, .pv-form select {
  display: block; width: 100%; margin-top: .35rem;
  font: inherit; color: var(--pv-fg);
  padding: .55rem .7rem; background: var(--pv-card);
  border: 1.5px solid var(--pv-border); border-radius: 9px;
}
.pv-form input:focus, .pv-form select:focus {
  outline: none; border-color: var(--pv-accent); box-shadow: 0 0 0 3px rgba(47,91,79,.12);
}

/* кнопки */
.pv-btn {
  display: inline-block; font: inherit; font-weight: 600; cursor: pointer;
  border-radius: 9px; padding: .55rem 1.1rem; border: 1.5px solid var(--pv-accent);
  width: auto; text-decoration: none; line-height: 1.3;
}
.pv-btn-primary { background: var(--pv-accent); color: #fff; }
.pv-btn-primary:hover { background: var(--pv-accent-d); }
.pv-btn-ghost { background: transparent; color: var(--pv-accent); }
.pv-btn-ghost:hover { background: rgba(47,91,79,.07); }
.pv-btn-sm { padding: .25rem .7rem; font-size: .85rem; border-width: 1px; }
.pv-btn-danger { color: var(--pv-err); border-color: rgba(179,56,44,.4); background: transparent; }
.pv-btn-danger:hover { background: rgba(179,56,44,.07); }

/* алерты (flash) */
.pv-alert { padding: .7rem 1rem; border-radius: 10px; font-weight: 600; margin: 0 0 1.2rem; }
.pv-alert-ok  { color: var(--pv-ok);  background: rgba(47,91,79,.08);  border: 1px solid var(--pv-border); }
.pv-alert-err { color: var(--pv-err); background: rgba(179,56,44,.07); border: 1px solid rgba(179,56,44,.25); }

/* списки ссылок (материалы) */
.pv-links { list-style: none; padding: 0; margin: 0; }
.pv-links li {
  border-top: 1px solid var(--pv-border);
}
.pv-links li:first-child { border-top: none; }
.pv-links a { display: block; padding: .7rem .2rem; color: var(--pv-fg); text-decoration: none; }
.pv-links a:hover { color: var(--pv-accent); }

/* таблицы */
.pv-table { width: 100%; border-collapse: collapse; font-size: .92rem; }
.pv-table th {
  text-align: left; font-weight: 600; color: var(--pv-muted);
  font-size: .78rem; text-transform: uppercase; letter-spacing: .03em;
  padding: .5rem .7rem; border-bottom: 2px solid var(--pv-border);
}
.pv-table td { padding: .65rem .7rem; border-bottom: 1px solid var(--pv-border); vertical-align: middle; }
.pv-table tr:hover td { background: rgba(47,91,79,.03); }
.pv-table code { background: rgba(47,91,79,.07); padding: .1rem .4rem; border-radius: 5px; font-size: .88em; }
.pv-table form { margin: 0; }

/* список тестов */
.pv-tests { display: grid; gap: .8rem; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); }
.pv-test {
  display: block; background: var(--pv-card); border: 1px solid var(--pv-border);
  border-radius: 12px; padding: 1.1rem 1.2rem; text-decoration: none; color: var(--pv-fg);
  transition: border-color .15s, box-shadow .15s;
}
.pv-test:hover { border-color: var(--pv-accent); box-shadow: 0 2px 8px rgba(28,26,23,.06); }
.pv-test b { font-family: 'Lora', Georgia, serif; font-size: 1.05rem; display: block; margin: .5rem 0 .3rem; }
.pv-last { display: flex; align-items: center; gap: .4rem; margin-top: .7rem; padding-top: .7rem; border-top: 1px solid var(--pv-border); }

/* прохождение теста */
.pv-q { margin: 0 0 1.6rem; padding: 0 0 1.6rem; border-bottom: 1px solid var(--pv-border); }
.pv-q:last-of-type { border-bottom: none; }
.pv-q-text { font-family: 'Lora', Georgia, serif; font-weight: 600; font-size: 1.12rem; line-height: 1.45; margin: 0 0 .9rem; }
.pv-q-num { color: var(--pv-muted); font-variant-numeric: tabular-nums; margin-right: .4rem; }
.pv-opt {
  display: flex; gap: .6rem; align-items: flex-start; cursor: pointer;
  padding: .55rem .8rem; margin: .35rem 0; border: 1px solid var(--pv-border); border-radius: 9px;
}
.pv-opt:hover { background: rgba(47,91,79,.04); border-color: var(--pv-accent); }
.pv-opt input { margin-top: .2rem; }

/* результат теста */
.pv-result { text-align: center; padding: 2.6rem 1.5rem; }
.pv-result .pv-score { font-family: 'Lora', Georgia, serif; font-size: 3.4rem; line-height: 1; margin: .5rem 0 .2rem; font-variant-numeric: tabular-nums; }
.pv-result .pv-score.ok  { color: var(--pv-accent); }
.pv-result .pv-score.err { color: var(--pv-err); }
.pv-result .pv-verdict { font-size: 1.2rem; font-weight: 700; margin: .3rem 0 1.4rem; }

/* кабинет: 2 колонки (левое меню + контент) — шире и ближе к левому краю */
.pv:has(.pv-cab) { max-width: 78rem; }
.pv-cab { display: grid; grid-template-columns: 15rem 1fr; gap: 3rem; align-items: start; }
.pv-cabnav { position: sticky; top: 5rem; }
.pv-cabnav-title { font-size: .78rem; text-transform: uppercase; letter-spacing: .04em; color: var(--pv-muted); margin: 0 0 .6rem .2rem; }
.pv-cabnav ul { list-style: none; padding: 0; margin: 0; border: 1px solid var(--pv-border); border-radius: 12px; overflow: hidden; background: var(--pv-card); }
.pv-cabnav li { border-top: 1px solid var(--pv-border); }
.pv-cabnav li:first-child { border-top: none; }
.pv-cabnav a { display: block; padding: .7rem .9rem; color: var(--pv-fg); text-decoration: none; font-weight: 500; }
.pv-cabnav a:hover { background: rgba(47,91,79,.05); color: var(--pv-accent); }
.pv-cabnav a.active { background: var(--pv-accent); color: #fff; }
.pv-cabnav-logout { margin: .9rem 0 0 .2rem; }
.pv-cabnav-logout form { margin: 0; }
.pv-cabnav-user { font-size: .85rem; color: var(--pv-muted); margin: 0 0 1rem .2rem; }

@media (max-width: 760px) {
  .pv-cab { grid-template-columns: 1fr; gap: 1rem; }
  .pv-cabnav { position: static; }
}

.pv-progress th, .pv-progress td { padding: .4rem .55rem; }
.pv-progress thead th { font-variant-numeric: tabular-nums; }

.pv-empty { color: var(--pv-muted); font-style: italic; }
.pv-back { display: inline-block; margin: 0 0 1.2rem; color: var(--pv-muted); text-decoration: none; font-size: .9rem; }
.pv-back:hover { color: var(--pv-accent); }

@media (max-width: 600px) {
  .pv-card { padding: 1.3rem 1.2rem; }
  .pv-userbar { flex-direction: column; align-items: flex-start; gap: .6rem; }
  .pv-table { font-size: .85rem; }
}
