/* Занятие 4 «В поисках золота» - страничные стили поверх ../assets/style.css.
   Общие блоки (цитаты, врезки, таблицы, карточки, тренажёры) повторяют z03.css,
   блоки запросов и файлов - z09.css.
   Цвета - только токены темы. */

/* цитаты и эпиграф */
.quote{
  margin:1.2rem 0; padding:.9rem 1.2rem;
  border-left:3px solid var(--signal); background:var(--paper-2); font-size:.97rem;
}
.quote p{margin:0 0 .6rem;}
.quote p:last-of-type{margin-bottom:0;}
.quote .attr, .epigraph .attr{
  display:block; margin-top:.6rem; text-align:right; font-style:normal;
  font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.76rem; color:var(--text-dim);
}
.quote.was{border-left-color:var(--bad);}
.quote.now{border-left-color:var(--good);}
.quote.ref-sample p{font-family:Georgia,"Times New Roman",serif; font-size:.98rem;}

/* обсудим в аудитории */
.discuss{border:1px dashed var(--signal); padding:.9rem 1.2rem; margin:1.2rem 0; background:color-mix(in srgb, var(--signal) 6%, var(--paper));}
.discuss .label{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.7rem; text-transform:uppercase; letter-spacing:.08em; color:var(--signal-ink); display:block; margin-bottom:.4rem;}
.discuss ol, .discuss ul{margin:0; padding-left:1.2rem;}
.discuss li{margin-bottom:.3rem;}

/* правило в рамке с восклицательным знаком (как в занятиях 2 и 3) */
.law-box{
  display:flex; gap:1rem; align-items:center; margin:1.2rem 0; padding:.9rem 1.1rem;
  border:2px solid var(--signal); background:color-mix(in srgb, var(--signal) 9%, var(--paper));
}
.law-box .law-mark{
  flex:0 0 2.6rem; height:2.6rem; border-radius:50%; background:var(--signal); color:var(--paper);
  display:flex; align-items:center; justify-content:center;
  font-family:Rockwell,"Roboto Slab",Georgia,serif; font-size:1.7rem; font-weight:700; line-height:1;
}
.law-box .ln{display:block; font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.7rem; text-transform:uppercase; letter-spacing:.08em; color:var(--signal-ink); margin-bottom:.2rem;}
.law-box .lt{font-family:Rockwell,"Roboto Slab",Georgia,serif; font-size:1.12rem; line-height:1.4;}

/* таблицы */
.tbl-wrap{overflow-x:auto; margin:1.1rem 0;}
.z-table{width:100%; border-collapse:collapse; font-size:.9rem; min-width:32rem;}
.z-table th, .z-table td{border:1px solid var(--line); padding:.45rem .65rem; text-align:left; vertical-align:top;}
.z-table th{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; font-weight:400; color:var(--text-dim); background:var(--paper-2);}
.z-table td:first-child{font-weight:600;}
.z-table td.mono, .z-table .mono{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.8rem; font-weight:400; overflow-wrap:anywhere;}
.z-table .claim{font-size:.84rem; color:var(--text-dim);}

/* метки результата проверки */
.badge{
  display:inline-block; font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.68rem;
  text-transform:uppercase; letter-spacing:.05em; padding:.1rem .45rem; border:1px solid; white-space:nowrap;
}
.badge.bad{color:var(--bad); border-color:var(--bad); background:color-mix(in srgb, var(--bad) 10%, transparent);}
.badge.warn{color:var(--signal-ink); border-color:var(--signal); background:color-mix(in srgb, var(--signal) 12%, transparent);}
.badge.ok{color:var(--good); border-color:var(--good); background:color-mix(in srgb, var(--good) 10%, transparent);}

/* ссылки на источники */
a.ref{text-decoration:none; color:var(--signal-ink);}
a.ref:hover{text-decoration:underline;}
#sources li:target{background:color-mix(in srgb, var(--signal) 14%, transparent);}
#sources h4.src-group{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.74rem; font-weight:400; text-transform:uppercase; letter-spacing:.1em; color:var(--signal-ink); margin:1.5rem 0 .4rem;}
#sources ol{font-size:.88rem; padding-left:2.4rem;}
#sources li{margin-bottom:.45rem; overflow-wrap:anywhere;}

/* рисунки */
.z-photo img{max-width:min(100%, 780px);}
.z-fig{margin:1.6rem 0;}
.z-fig figcaption{max-width:52rem; margin-left:auto; margin-right:auto;}
/* скриншоты: подпись не шире колонки, два снимка в одном рисунке - друг под другом */
.z-shot figcaption{max-width:52rem; margin-left:auto; margin-right:auto;}
.z-shot.stack img{display:block; margin:0 auto;}
.z-shot.stack img + img{margin-top:.7rem;}
/* две первые страницы статей рядом */
.pairfig{display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:1rem; align-items:start; margin:1.4rem 0;}
.pairfig .figure{margin:0;}
@media (max-width:640px){ .pairfig{grid-template-columns:1fr;} }

/* диалог с нейросетью: запрос справа, ответ во всю ширину */
.chat{display:flex; flex-direction:column; gap:.7rem; margin:1.2rem 0;}
.chat .msg{border:1px solid var(--line); padding:.75rem 1rem; font-size:.94rem; line-height:1.5;}
.chat .msg.user{align-self:flex-end; max-width:min(38rem, 92%); background:var(--paper-2); border-right:3px solid var(--nn);}
.chat .msg.bot{background:var(--tile); border-left:3px solid var(--signal);}
.chat .who{display:block; margin-bottom:.35rem; font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.68rem; text-transform:uppercase; letter-spacing:.08em; color:var(--text-dim);}
.chat p{margin:0 0 .55rem;}
.chat p:last-child{margin-bottom:0;}
.chat ol, .chat ul{margin:.3rem 0 .6rem; padding-left:1.4rem;}
.chat li{margin-bottom:.35rem;}
.chat h4{font-size:.95rem; margin:.8rem 0 .3rem;}
.chat blockquote{margin:.4rem 0 .6rem; padding:.5rem .8rem; border-left:2px solid var(--line); background:var(--paper); font-family:Georgia,"Times New Roman",serif; font-size:.92rem;}
/* значки источников в ответе - как в интерфейсе нейросети, но квадратные */
.chat .src{
  display:inline-block; padding:.02rem .4rem; border:1px solid var(--line); background:var(--paper-2);
  font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.68rem; line-height:1.5; color:var(--text-dim);
  white-space:nowrap; vertical-align:.08em;
}
.chat a.src{color:var(--signal-ink); text-decoration:none;}
.chat a.src:hover, .chat a.src:focus-visible{border-color:var(--signal); text-decoration:underline;}
.chat .skip{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.8rem; color:var(--text-dim);}
@media (max-width:560px){ .chat .src{white-space:normal;} }

/* переворачивающиеся карточки */
.flip-group{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.74rem; font-weight:400; text-transform:uppercase; letter-spacing:.1em; color:var(--signal-ink); margin:1.4rem 0 .5rem;}
.flip-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(14.5rem, 1fr)); gap:.7rem; margin:.8rem 0 1.2rem;}
.flip{perspective:900px; min-height:12.5rem; cursor:pointer;}
.flip .inner{position:relative; width:100%; height:100%; min-height:inherit; transition:transform .45s; transform-style:preserve-3d;}
.flip.flipped .inner{transform:rotateY(180deg);}
.flip .face{position:absolute; inset:0; backface-visibility:hidden; border:1px solid var(--line); padding:.75rem .9rem; display:flex; flex-direction:column; gap:.4rem;}
.flip .front{background:var(--paper-2); justify-content:center;}
.flip .fn{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.68rem; text-transform:uppercase; letter-spacing:.08em; color:var(--signal-ink);}
.flip .ft{font-family:Rockwell,"Roboto Slab",Georgia,serif; font-size:1.02rem; line-height:1.3;}
.flip .fh{margin-top:auto; font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.64rem; text-transform:uppercase; letter-spacing:.08em; color:var(--text-dim);}
.flip .back{background:var(--tile); transform:rotateY(180deg); font-size:.84rem; line-height:1.45; overflow-y:auto;}
.flip:focus-visible{outline:2px solid var(--signal); outline-offset:2px;}
@media (prefers-reduced-motion: reduce){ .flip .inner{transition:none;} }

/* общие элементы тренажёров */
.trainer [hidden]{display:none !important;}
.trainer .z-intro{font-size:.92rem; margin:0 0 .9rem;}
.trainer button.zb{
  font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.8rem;
  border:1px solid var(--line); background:var(--paper); color:var(--text);
  padding:.4rem .75rem; cursor:pointer;
}
.trainer button.zb:hover{border-color:var(--signal);}
.trainer button.zb.on{border-color:var(--signal); background:color-mix(in srgb, var(--signal) 14%, var(--paper));}
.trainer button.zb[disabled]{opacity:.45; cursor:default;}
.trainer button.zb:focus-visible{outline:2px solid var(--signal); outline-offset:1px;}
.trainer .row{display:flex; flex-wrap:wrap; gap:.4rem; margin:.6rem 0;}
.trainer .score{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.8rem; color:var(--text-dim);}

/* викторины «из какого раздела» и «что не так со ссылкой» */
.gq-frag{border:1px solid var(--line); background:var(--paper); padding:.8rem 1rem; font-family:Georgia,"Times New Roman",serif; font-size:1.02rem; line-height:1.55; margin:.5rem 0;}
.gq-frag mark{background:color-mix(in srgb, var(--signal) 30%, transparent); color:inherit; padding:0 .1em;}
.gq-frag.ref{font-size:.95rem; overflow-wrap:anywhere;}
.gq-opts{display:flex; flex-wrap:wrap; gap:.4rem; margin:.6rem 0;}
.gq-opts.col{flex-direction:column; align-items:stretch;}
.gq-opts.col button{text-align:left;}
.gq-opts button.right{border-color:var(--good); background:color-mix(in srgb, var(--good) 18%, var(--paper));}
.gq-opts button.wrong{border-color:var(--bad); background:color-mix(in srgb, var(--bad) 15%, var(--paper));}
/* после ответа кнопки заблокированы, но верный и выбранный неверный ответы остаются яркими */
.trainer .gq-opts button.zb.right[disabled], .trainer .gq-opts button.zb.wrong[disabled]{opacity:1;}
.gq-cues{margin:.5rem 0 0; padding-left:1.2rem; font-size:.88rem;}
.gq-cues li{margin-bottom:.25rem;}
.gq-src{font-size:.78rem; color:var(--text-dim); margin-top:.4rem;}
.gq-verdict{font-weight:600; margin:.5rem 0 .2rem;}
.gq-verdict.ok{color:var(--good);} .gq-verdict.no{color:var(--bad);}

/* ---------- рисунки-схемы на SVG ---------- */
.z-scroll{overflow-x:auto;}
.z-scroll svg{min-width:680px;}
.z-fig svg{width:100%; height:auto; display:block;}
.z-fig svg text{font-family:Consolas,"SF Mono",ui-monospace,monospace; fill:var(--text);}
.z-legend{display:flex; flex-wrap:wrap; gap:.3rem 1.1rem; justify-content:center; margin-top:.6rem; font-size:.78rem; color:var(--text-dim);}
.z-legend i{display:inline-block; width:.75rem; height:.75rem; border-radius:50%; margin-right:.35rem; vertical-align:-.08rem; background:var(--gc); border:1.5px solid var(--gc);}
.z-legend i.hollow{--gc:var(--text-dim); background:var(--paper);}
.lg-seed{--gc:var(--signal);} .lg-games{--gc:var(--gd);} .lg-arch{--gc:var(--rl);} .lg-graph{--gc:var(--nn);} .lg-other{--gc:var(--par);}

/* Рис. «структура IMRaD» */
svg.imrad .im-frame rect{fill:none; stroke:var(--line); stroke-dasharray:4 3;}
svg.imrad .im-frame text{font-size:11px; fill:var(--text-dim);}
svg.imrad .im-frame .k{fill:var(--signal-ink); font-size:10px; letter-spacing:.06em; text-transform:uppercase;}
svg.imrad .im-head text{font-size:10px; letter-spacing:.08em; text-transform:uppercase; fill:var(--text-dim);}
svg.imrad .im-shape *{stroke-width:1.6; stroke-linejoin:round;}
svg.imrad .s-i{fill:color-mix(in srgb, var(--rl) 22%, var(--tile)); stroke:var(--rl);}
svg.imrad .s-m{fill:color-mix(in srgb, var(--nn) 22%, var(--tile)); stroke:var(--nn);}
svg.imrad .s-r{fill:color-mix(in srgb, var(--signal) 24%, var(--tile)); stroke:var(--signal);}
svg.imrad .s-d{fill:color-mix(in srgb, var(--gd) 20%, var(--tile)); stroke:var(--gd);}
svg.imrad .im-in text{font-size:11px;}
svg.imrad .im-scope text{font-size:10px; fill:var(--text-dim); font-style:italic;}
svg.imrad .im-let .l{font-family:Rockwell,"Roboto Slab",Georgia,serif; font-size:30px; fill:var(--signal-ink);}
svg.imrad .im-let .a{font-family:Rockwell,"Roboto Slab",Georgia,serif; font-size:17px; fill:var(--text-dim);}
svg.imrad .im-let .n{font-family:Rockwell,"Roboto Slab",Georgia,serif; font-size:14.5px;}
svg.imrad .im-let .e{font-size:10px; fill:var(--text-dim);}
svg.imrad .im-q text{font-family:"Segoe UI","Helvetica Neue",Arial,sans-serif; font-size:12px; fill:var(--text-dim);}
svg.imrad .im-q .q{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; fill:var(--signal-ink);}
svg.imrad .im-rep rect{fill:var(--tile); stroke:var(--text-dim); stroke-dasharray:3 3;}
svg.imrad .im-rep text{font-family:"Segoe UI","Helvetica Neue",Arial,sans-serif; font-size:11.5px; fill:var(--text-dim);}
svg.imrad .im-rep .h{font-family:Rockwell,"Roboto Slab",Georgia,serif; font-size:13px; fill:var(--text);}

/* Рис. «граф цитирования» */
.cg-svg .cg-zone rect{fill:color-mix(in srgb, var(--tile) 55%, transparent); stroke:var(--line); stroke-dasharray:4 4;}
.cg-svg .cg-cap text, .cg-svg .cg-labels text.cap{font-size:12.5px; letter-spacing:.1em; fill:var(--signal-ink);}
.cg-svg .cg-cap text.s{font-size:11px; letter-spacing:0; fill:var(--text-dim);}
.cg-svg .cg-axis line{stroke:var(--text-dim); stroke-width:1;}
.cg-svg .cg-axis text{font-size:11px; fill:var(--text-dim);}
.cg-svg .cg-axis text.s{font-size:9.5px;}
.cg-svg .cg-edges .e{fill:none; stroke:var(--text-dim); stroke-width:.8; opacity:.2;}
.cg-svg .cg-edges .e.s{opacity:.09;}
.cg-svg .cg-nodes .n{stroke:var(--paper); stroke-width:1.2; cursor:pointer; outline:none;}
.cg-svg .cg-nodes .g-seed{fill:var(--signal); stroke:var(--text); stroke-width:1.6;}
.cg-svg .cg-nodes .g-ref{fill:var(--paper); stroke:var(--text-dim); stroke-width:1.6;}
.cg-svg .cg-nodes .g-games{fill:var(--gd);}
.cg-svg .cg-nodes .g-arch{fill:var(--rl);}
.cg-svg .cg-nodes .g-graph{fill:var(--nn);}
.cg-svg .cg-nodes .g-other{fill:var(--par);}
.cg-svg .cg-labels text{font-size:11px; paint-order:stroke; stroke:var(--tile); stroke-width:3.5px; stroke-linejoin:round;}
.cg-svg .cg-labels text.seed{stroke:var(--paper);}
.cg-svg .cg-labels text.cap{stroke:none;}
.cg-svg .cg-labels line{stroke:var(--text-dim); stroke-width:.8; stroke-dasharray:2 2;}
/* наведение: работа и её связи */
.cg-svg.hl .cg-nodes .n{opacity:.22;}
.cg-svg.hl .cg-nodes .n.on, .cg-svg.hl .cg-nodes .n.nb{opacity:1;}
.cg-svg.hl .cg-nodes .n.on{stroke:var(--text); stroke-width:2.2;}
.cg-svg.hl .cg-edges .e{opacity:.04;}
.cg-svg.hl .cg-edges .e.on{opacity:.95; stroke:var(--signal); stroke-width:1.3;}
.cg-svg.hl .cg-labels{opacity:.35;}
.cg-svg .cg-nodes .n:focus-visible{stroke:var(--text); stroke-width:2.2;}
.cg-info{max-width:52rem; min-height:3.1rem; margin:.6rem auto 0; padding:.45rem .7rem; border:1px dashed var(--line); background:var(--tile); font-size:.84rem; line-height:1.4; text-align:left; color:var(--text-dim);}
.cg-info b{color:var(--text); font-weight:600;}

/* Рис. «две литературы»: три плитки со счётчиками */
.sets{display:grid; grid-template-columns:1fr auto 1fr; gap:.4rem; align-items:stretch; max-width:46rem; margin:0 auto; text-align:left;}
.sets .set{border:1px solid var(--text); background:var(--tile); padding:.55rem .7rem; font-size:.82rem; line-height:1.35; color:var(--text-dim); border-top:4px solid var(--sc);}
.sets .set b{display:block; font-family:Rockwell,"Roboto Slab",Georgia,serif; font-weight:400; font-size:1.7rem; line-height:1.1; color:var(--text);}
.sets .set.a{--sc:var(--gd);} .sets .set.b{--sc:var(--nn);}
.sets .both{display:flex; flex-direction:column; justify-content:center; align-items:center; min-width:7.5rem; border:2px solid var(--bad); background:color-mix(in srgb, var(--bad) 7%, var(--tile)); padding:.4rem .6rem; font-size:.78rem; color:var(--text-dim); text-align:center;}
.sets .both b{font-family:Rockwell,"Roboto Slab",Georgia,serif; font-weight:400; font-size:1.7rem; line-height:1.1; color:var(--bad);}
@media (max-width:560px){ .sets{grid-template-columns:1fr;} }

/* ---------- диалог с нейросетью: длинный ответ свёрнут и открывается во всплывающем окне ---------- */
.chat .msg.bot.clip{position:relative; max-height:15rem; overflow:hidden; cursor:pointer;}
.chat .msg.bot.clip::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:7.5rem; pointer-events:none;
  background:linear-gradient(to bottom, transparent, var(--tile) 58%);
}
.chat .msg.bot.clip:hover{border-color:var(--signal);}
.chat .msg-open{
  position:absolute; left:50%; bottom:.8rem; transform:translateX(-50%); z-index:1; white-space:nowrap;
  font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.8rem;
  border:1px solid var(--signal); background:var(--paper); color:var(--text); padding:.4rem .9rem; cursor:pointer;
}
.chat .msg-open:hover{background:color-mix(in srgb, var(--signal) 14%, var(--paper));}
.chat .msg-open:focus-visible{outline:2px solid var(--signal); outline-offset:2px;}

dialog.zpop{
  width:min(56rem, 94vw); max-height:90vh; padding:0; border:2px solid var(--text);
  background:var(--paper); color:var(--text); box-shadow:0 12px 40px rgba(0,0,0,.4);
}
dialog.zpop[open]{display:flex; flex-direction:column;}
dialog.zpop::backdrop{background:rgba(20,24,31,.6);}
.zpop-bar{
  display:flex; align-items:center; justify-content:space-between; gap:1rem; flex:0 0 auto;
  background:var(--text); color:var(--paper); padding:.45rem .5rem .45rem .9rem;
  font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.74rem; text-transform:uppercase; letter-spacing:.08em;
}
.zpop-x{border:1px solid transparent; background:none; color:inherit; font-size:1.25rem; line-height:1; width:2rem; height:2rem; cursor:pointer;}
.zpop-x:hover, .zpop-x:focus-visible{border-color:var(--paper); outline:none;}
.zpop-scroll{flex:1 1 auto; overflow-y:auto; padding:1rem 1.1rem;}
.zpop-q{border:1px solid var(--line); border-right:3px solid var(--nn); background:var(--paper-2); padding:.6rem .9rem; margin:0 0 .8rem auto; max-width:min(38rem, 92%); font-size:.9rem; line-height:1.45;}
.zpop-q p{margin:0 0 .4rem;} .zpop-q p:last-child{margin-bottom:0;}
.zpop-q .who, .zpop-a .who{display:block; margin-bottom:.3rem; font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.68rem; text-transform:uppercase; letter-spacing:.08em; color:var(--text-dim);}
.zpop-a.chat{margin:0;}
.zpop-nav{display:flex; flex-wrap:wrap; gap:.4rem; align-items:center; flex:0 0 auto; padding:.6rem 1.1rem; border-top:1px solid var(--line); background:var(--paper-2);}
.zpop-nav .zpop-n{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.76rem; color:var(--text-dim); margin:0 .3rem;}
.zpop-nav .zpop-close{margin-left:auto;}
.zpop button.zb{
  font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.8rem;
  border:1px solid var(--line); background:var(--paper); color:var(--text); padding:.4rem .75rem; cursor:pointer;
}
.zpop button.zb:hover{border-color:var(--signal);}
.zpop button.zb[disabled]{opacity:.4; cursor:default;}
.zpop button.zb:focus-visible{outline:2px solid var(--signal); outline-offset:1px;}
@media print{
  .chat .msg.bot.clip{max-height:none; overflow:visible;}
  .chat .msg.bot.clip::after, .chat .msg-open{display:none;}
}

/* ---------- запросы (промты) и файлы для скачивания ---------- */
.code-wrap{position:relative; margin:1.2rem 0;}
.code-wrap pre.code{margin:0; white-space:pre-wrap; overflow-wrap:anywhere;}
.code-wrap .code-label{
  position:absolute; right:0; top:0; transform:translateY(-100%);
  font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.66rem; text-transform:uppercase; letter-spacing:.08em;
  color:var(--text-dim); padding:.1rem .5rem; border:1px solid var(--line); border-bottom:none; background:var(--tile);
}
.code-wrap:has(.code-label){margin-top:2rem;}
pre.code.prompt{border-left:3px solid var(--signal); background:color-mix(in srgb, var(--signal) 6%, var(--tile)); font-size:.84rem;}
.code-wrap .code-copy{
  position:absolute; left:0; top:0; transform:translateY(-100%);
  font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.66rem; text-transform:uppercase; letter-spacing:.08em;
  color:var(--signal-ink); padding:.1rem .5rem; border:1px solid var(--line); border-bottom:none; background:var(--tile); cursor:pointer;
}
.code-wrap .code-copy:hover{border-color:var(--signal);}
.code-wrap .code-copy:focus-visible{outline:2px solid var(--signal); outline-offset:1px;}
.filelink{margin:1rem 0;}
.filelink a{
  display:flex; gap:.8rem; align-items:center; text-decoration:none; color:var(--text);
  border:1px solid var(--line); background:var(--tile); padding:.6rem .9rem;
}
.filelink a:hover{border-color:var(--signal);}
.filelink .fl-ico{
  flex:0 0 2rem; height:2rem; display:flex; align-items:center; justify-content:center;
  border:1px solid var(--signal); color:var(--signal-ink); font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:1.1rem;
}
.filelink b{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-weight:400; color:var(--signal-ink); margin-right:.3rem;}

/* ---------- уровни верификации: шесть плиток в сетке ---------- */
.ladder{display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:.4rem; max-width:60rem; margin:0 auto; text-align:left; counter-reset:lad;}
.ladder .lv{border:1px solid var(--text); background:var(--tile); padding:.5rem .6rem; display:flex; flex-direction:column; gap:.18rem; font-size:.8rem; line-height:1.32;}
.ladder .lv .n{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.64rem; text-transform:uppercase; letter-spacing:.06em; color:var(--signal-ink);}
.ladder .lv b{font-family:Rockwell,"Roboto Slab",Georgia,serif; font-weight:400; font-size:.98rem;}
.ladder .lv span.q{color:var(--text-dim);}
.ladder .lv i{font-style:normal; color:var(--text); font-size:.76rem; border-top:1px dashed var(--line); padding-top:.25rem; margin-top:auto;}
.ladder .lv i em{font-style:normal; font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.64rem; text-transform:uppercase; letter-spacing:.05em; color:var(--text-dim); margin-right:.3rem;}
.ladder .lv.human{border:2px solid var(--signal); background:color-mix(in srgb, var(--signal) 8%, var(--tile));}
.ladder-out{max-width:60rem; margin:.4rem auto 0; display:grid; grid-template-columns:1fr 1fr; gap:.4rem; text-align:left; font-size:.8rem;}
.ladder-out div{padding:.4rem .6rem; border:2px solid var(--oc); background:color-mix(in srgb, var(--oc) 8%, var(--tile));}
.ladder-out .ok{--oc:var(--good);} .ladder-out .no{--oc:var(--bad);}
.ladder-out b{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-weight:400; font-size:.66rem; text-transform:uppercase; letter-spacing:.06em; color:var(--oc); display:block;}
@media (max-width:640px){ .ladder{grid-template-columns:1fr 1fr;} .ladder-out{grid-template-columns:1fr;} }
@media (max-width:420px){ .ladder{grid-template-columns:1fr;} }

/* ---------- одна статья в нескольких стилях ---------- */
.cite-styles .cs-roles{display:flex; flex-wrap:wrap; gap:.35rem; margin:.2rem 0 .9rem;}
.cite-styles .cs-row{display:grid; grid-template-columns:9.5rem 1fr; gap:.3rem .9rem; padding:.55rem 0; border-top:1px solid var(--line); align-items:baseline;}
.cite-styles .cs-name{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; color:var(--signal-ink);}
.cite-styles .cs-name small{display:block; text-transform:none; letter-spacing:0; color:var(--text-dim); font-size:.7rem; margin-top:.15rem;}
.cite-styles .cs-rec{font-family:Georgia,"Times New Roman",serif; font-size:.98rem; line-height:1.5; overflow-wrap:anywhere;}
.cite-styles .cs-rec [data-r]{transition:background .15s;}
.cite-styles .cs-rec .hit{background:color-mix(in srgb, var(--signal) 32%, transparent); box-shadow:0 2px 0 var(--signal);}
.cite-styles .cs-note{font-size:.84rem; color:var(--text-dim); margin:.7rem 0 0; min-height:2.6rem;}
@media (max-width:560px){ .cite-styles .cs-row{grid-template-columns:1fr;} }

/* анатомия записи по ГОСТ: подписи под частями */
.anat{display:flex; flex-wrap:wrap; gap:.6rem .3rem; align-items:flex-start; justify-content:flex-start; max-width:58rem; margin:0 auto; text-align:center; border:1px dashed var(--line); background:var(--tile); padding:.8rem .9rem;}
.anat .p{display:flex; flex-direction:column; gap:.25rem; align-items:center;}
.anat .p span{font-family:Georgia,"Times New Roman",serif; font-size:1rem; border-bottom:3px solid var(--ac, var(--text-dim)); padding:.1rem .2rem; background:color-mix(in srgb, var(--ac, var(--text-dim)) 10%, var(--tile));}
.anat .p small{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.64rem; text-transform:uppercase; letter-spacing:.05em; color:var(--text-dim); max-width:9rem; line-height:1.25;}
.anat .p.sep span{border-bottom-color:transparent; background:none; font-weight:700; color:var(--signal-ink);}
.anat .a1{--ac:var(--nn);} .anat .a2{--ac:var(--gd);} .anat .a3{--ac:var(--rl);} .anat .a4{--ac:var(--signal);} .anat .a5{--ac:var(--par);}

/* списки-проверки и критерии в практикуме */
.steps{counter-reset:st; list-style:none; padding:0; margin:1rem 0; display:grid; gap:.5rem;}
.steps > li{counter-increment:st; border:1px solid var(--line); background:var(--tile); padding:.6rem .8rem .6rem 3.1rem; position:relative;}
.steps > li::before{content:counter(st); position:absolute; left:.7rem; top:.55rem; width:1.7rem; height:1.7rem; display:flex; align-items:center; justify-content:center; border:1px solid var(--signal); color:var(--signal-ink); font-family:Rockwell,"Roboto Slab",Georgia,serif; font-size:1rem;}
.steps > li .res{display:block; margin-top:.3rem; font-size:.84rem; color:var(--text-dim);}
.steps > li .res b{font-family:Consolas,"SF Mono",ui-monospace,monospace; font-weight:400; font-size:.66rem; text-transform:uppercase; letter-spacing:.06em; color:var(--signal-ink); margin-right:.35rem;}
.z-table.narrow{min-width:26rem;}
.z-table td.yes{color:var(--good);} .z-table td.no{color:var(--bad);}

/* ---------- тренажёр проверки DOI: переход на doi.org и вывод ---------- */
.trainer .z-steps{font-size:.92rem; margin:0 0 .9rem; padding-left:1.4rem;}
.trainer .z-steps li{margin-bottom:.25rem;}
.doi-go{font-size:.9rem; margin:.7rem 0 .25rem; display:flex; flex-wrap:wrap; align-items:center; gap:.4rem .6rem;}
.doi-go a{
  font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.84rem; overflow-wrap:anywhere;
  border:1px solid var(--signal); background:var(--paper); color:var(--text); text-decoration:none; padding:.4rem .7rem;
}
.doi-go a::after{content:" ↗"; color:var(--signal-ink);}
.doi-go a:hover{background:color-mix(in srgb, var(--signal) 14%, var(--paper));}
.doi-go a:focus-visible{outline:2px solid var(--signal); outline-offset:1px;}
.doi-hint{font-size:.8rem; color:var(--text-dim); margin:0 0 .5rem; min-height:1.2em;}

/* таблицы проверки: DOI-ссылки и столбец «совпадает» */
.z-table td.mono a{color:inherit; text-decoration:underline; text-decoration-color:var(--signal); text-underline-offset:.18em;}
.z-table td.mono a:hover{color:var(--signal-ink);}
.z-table td.yes, .z-table td.no{font-weight:600;}
li > .badge{margin-right:.25rem;}

/* ---------- предостережение (красная рамка) ---------- */
.danger{border:2px solid var(--bad); background:color-mix(in srgb, var(--bad) 5%, var(--paper)); padding:1rem 1.2rem; margin:1.4rem 0; font-size:.95rem;}
.danger .label{
  font-family:Consolas,"SF Mono",ui-monospace,monospace; font-size:.72rem; text-transform:uppercase; letter-spacing:.08em;
  color:var(--bad); display:block; margin-bottom:.45rem; font-weight:600;
}
.danger p{margin:.45rem 0;}
.danger ul, .danger ol{margin:.4rem 0; padding-left:1.25rem;}
.danger li{margin-bottom:.3rem;}
.danger > :last-child{margin-bottom:0;}

