/* Линейка тренажёров «Стереометрия · Задание 3 ЕГЭ» */
:root {
  --ink:#1D2434; --paper:#F6F5EF; --panel:#FFFFFF; --line:#E3E1D6;
  --blue:#2B5FD9; --amber:#DE8A0D; --rose:#D93A6A;
  --green:#178A5F; --red:#C9403F; --dim:#7A8093;
}
* { box-sizing:border-box; }
html, body { margin:0; padding:0; }
body {
  background:var(--paper); color:var(--ink);
  font-family:'Segoe UI', system-ui, -apple-system, sans-serif;
}
a { color:var(--blue); }
b.rose { color:var(--rose); }

/* ---------- кнопки ---------- */
.btn {
  padding:9px 14px; border-radius:9px; border:1px solid var(--line);
  background:#fff; color:var(--ink); font-size:13.5px; font-weight:600;
  cursor:pointer; font-family:inherit;
}
.btn:disabled { opacity:0.4; cursor:default; }
.btn.primary { background:var(--ink); color:#fff; border:none; padding:10px 18px; }
.btn.blue { background:var(--blue); color:#fff; border:none; flex:1; }
.btn.sq { padding:8px 12px; }
.btn.on { border-color:var(--amber); color:var(--amber); }
#btnRotate.on { border-color:var(--blue); color:var(--blue); }

/* ---------- раскладка тренажёра ---------- */
.app { display:flex; flex-wrap:wrap; min-height:100vh; }
.panel {
  flex:1 1 380px; min-width:320px; max-width:520px;
  padding:22px 22px 30px; border-right:1px solid var(--line);
}
.stage { flex:2 1 480px; min-width:300px; position:relative; min-height:52vh; }
#viewport { position:absolute; inset:0; }
#viewport canvas { display:block; }

.head { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:4px; }
.title { font-family:Georgia, serif; font-size:22px; font-weight:700; }
.score { font-size:13px; color:var(--dim); }
.subtitle { font-size:12.5px; color:var(--dim); margin-bottom:14px; }

.nav-toggle { width:100%; text-align:left; margin-bottom:10px; display:flex; justify-content:space-between; }
.nav-panel {
  display:none; border:1px solid var(--line); border-radius:10px;
  padding:12px; margin-bottom:12px; background:#fff; max-height:300px; overflow-y:auto;
}
.nav-topic { font-size:11.5px; color:var(--dim); text-transform:uppercase; letter-spacing:0.5px; margin:8px 0 5px; }
.nav-grid { display:flex; flex-wrap:wrap; gap:6px; }
.nav-dot {
  width:30px; height:30px; border-radius:8px; border:1px solid transparent;
  font-size:12px; font-weight:700; cursor:pointer; color:var(--ink);
}

.prob-card { background:#fff; border:1px solid var(--line); border-radius:12px; padding:16px 18px; margin-bottom:14px; }
.prob-meta { font-size:11.5px; color:var(--dim); margin-bottom:8px; }
.prob-cond { font-family:Georgia, serif; font-size:16.5px; line-height:1.55; }

.answer-row { display:flex; gap:8px; margin-bottom:10px; }
/* min-width:0 — поле может сжаться: без него на 320 px минимальная ширина
   поля выталкивает кнопку «Проверить» за край экрана */
.answer-row input {
  flex:1; min-width:0; padding:10px 12px; border-radius:9px; border:1.5px solid var(--line);
  font-size:15px; font-family:inherit; outline:none; background:#fff;
}
.feedback { padding:10px 14px; border-radius:9px; margin-bottom:10px; font-size:14px; }
.feedback.ok { background:#E7F5EE; color:var(--green); border:1px solid #BFE3D0; }
.feedback.bad { background:#FBEBEA; color:var(--red); border:1px solid #F0C9C7; }

.actions { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:12px; }
.hint-box { background:#FFF7E8; border:1px solid #F1DFB8; border-radius:9px; padding:10px 14px; font-size:14px; line-height:1.5; margin-bottom:10px; }
.sol-box { background:#fff; border:1px solid var(--line); border-left:3px solid var(--blue); border-radius:9px; padding:12px 16px; margin-bottom:10px; }
.sol-title { font-weight:700; font-size:13.5px; margin-bottom:6px; }
.sol-line { font-family:Georgia, serif; font-size:15px; line-height:1.6; }
.sol-ans { margin-top:6px; font-weight:700; font-family:Georgia, serif; font-size:15px; }

.measures { background:#fff; border:1px solid var(--line); border-radius:9px; padding:10px 14px; margin-bottom:10px; }
.measures-title { font-size:11.5px; color:var(--dim); text-transform:uppercase; letter-spacing:0.5px; margin-bottom:6px; }
.measure-row { display:flex; justify-content:space-between; align-items:center; padding:3px 0; font-size:14.5px; font-family:Georgia, serif; }
.measure-del { border:none; background:none; color:var(--dim); cursor:pointer; font-size:15px; }
.measure-note { font-size:12px; color:var(--dim); margin-top:4px; }

.nav-btns { display:flex; gap:8px; margin-top:6px; }

.view-btns { position:absolute; top:12px; right:12px; display:flex; gap:8px; }
.legend {
  position:absolute; left:12px; bottom:12px; right:12px;
  display:flex; flex-wrap:wrap; gap:14px; font-size:12px; color:var(--dim);
  align-items:center; pointer-events:none;
}
.legend .sw { display:inline-block; width:16px; height:3px; border-radius:2px; vertical-align:middle; margin-right:5px; }
@media (max-width: 400px) {
  .panel { min-width:0; padding:16px 14px 24px; }
}
.legend-help { margin-left:auto; }
/* узкий экран: легенда под холстом, а не поверх нижней части чертежа —
   иначе она закрывает нижние вершины и их буквы */
@media (max-width: 520px) {
  .stage { display:flex; flex-direction:column; }
  #viewport { position:relative; inset:auto; flex:none; height:52vh; min-height:280px; }
  .legend { position:static; padding:8px 12px 12px; gap:6px 14px; }
  .legend-help { margin-left:0; }
  /* панель «Выделенные отрезки» здесь под чертежом (trainer.js, placeMeasures):
     появляясь по выбору линии, она не сдвигает холст */
  .stage > .measures { margin:0 12px 12px; }
}
.pending {
  position:absolute; top:12px; left:12px; background:rgba(255,255,255,0.94);
  border:1px solid var(--line); border-radius:9px; padding:7px 12px; font-size:13px;
}

/* ---------- главная страница (хаб) ---------- */
.hub { max-width:1060px; margin:0 auto; padding:40px 24px 60px; }
.hub-head { margin-bottom:8px; }
.hub-title { font-family:Georgia, serif; font-size:34px; font-weight:700; margin:0 0 6px; }
.hub-sub { color:var(--dim); font-size:15px; margin:0 0 6px; line-height:1.5; }
.hub-total { font-size:13.5px; color:var(--dim); margin-bottom:26px; }
.hub-total b { color:var(--ink); }

.cards { display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:16px; }
.card {
  background:#fff; border:1px solid var(--line); border-radius:14px;
  padding:18px 18px 16px; text-decoration:none; color:var(--ink);
  display:flex; flex-direction:column; gap:10px; transition:box-shadow .15s, transform .15s;
}
.card:hover { box-shadow:0 6px 18px rgba(29,36,52,0.10); transform:translateY(-2px); }
.card-top { display:flex; align-items:center; gap:12px; }
.card-ico { width:46px; height:46px; flex:none; }
.card-ico svg { width:100%; height:100%; }
.card-name { font-family:Georgia, serif; font-size:17.5px; font-weight:700; line-height:1.2; }
.card-count { font-size:12.5px; color:var(--dim); }
.bar { height:6px; border-radius:3px; background:#ECEAE0; overflow:hidden; }
.bar i { display:block; height:100%; background:var(--green); border-radius:3px; }
.card-progress { font-size:12px; color:var(--dim); }
.card.all { border:1.5px dashed var(--blue); }
.card.appendix { border:1.5px dashed var(--dim); }
.hub-note { margin-top:28px; font-size:13px; color:var(--dim); line-height:1.6; }
.hub-back {
  display:inline-flex; align-items:center; min-height:44px; margin:-10px 0 10px;
  font-size:14px; font-weight:600; text-decoration:none;
}
@media (max-width: 400px) {
  .hub { padding:28px 16px 48px; }
  .hub-title { font-size:28px; }
}

/* ---------- «Отправить прогресс» (как в линейке trainers/ege-profile-stereometry-3d) ---------- */
.progress-mail-card {
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  margin:12px 0 22px; padding:14px 16px; background:#fff;
  border:1px solid var(--line); border-radius:12px;
}
.progress-mail-card.compact { margin:0 0 14px; }
.progress-mail-text { color:var(--dim); font-size:13px; line-height:1.4; }
.progress-mail-title { color:var(--ink); font-weight:700; margin-bottom:2px; }
.btn.mail { background:var(--green); color:#fff; border-color:var(--green); }
@media(max-width:560px) {
  .progress-mail-card { align-items:stretch; flex-direction:column; }
  .progress-mail-card .btn { width:100%; }
}

/* ---------- касание и фокус ---------- */
/* жест на чертеже — вращение, а не прокрутка страницы: touch-action на контейнере
   холста (сам canvas получает то же из trainer.js) */
#viewport { touch-action:none; }
/* кнопки и поле ответа — не ниже 44 px (попадание пальцем) */
.btn, .answer-row input { min-height:44px; }
.btn.sq { min-width:44px; }
.btn:focus-visible, .card:focus-visible, a:focus-visible, .answer-row input:focus-visible, .nav-dot:focus-visible {
  outline:3px solid var(--blue); outline-offset:2px;
}
