/* Gothic lockpicker — wol.su. Стили scoped под .glp (контейнер id #glp-app).
   1) СБРОС наследия темы DLE: правила .glp<элемент> (0,1,1) грузятся ПОСЛЕ global.css,
      поэтому бьют .article_desrc_full button/p/ul/h2 того же веса.
   2) Собственные правила ниже идут как .glp .glp-* (0,2,0) и перекрывают сброс где нужно. */
.glp button{margin:0;width:auto;background:none;border:0;border-radius:0;color:inherit;font:inherit;line-height:normal;letter-spacing:normal;text-transform:none;box-shadow:none;text-align:center}
.glp p{margin:0;text-indent:0;font:inherit;line-height:inherit;color:inherit}
.glp ul,.glp ol{margin:0;padding:0;list-style:none}
.glp li{margin:0;list-style:none}
.glp h2,.glp h3,.glp h4{margin:0;text-indent:0;font:inherit;color:inherit;letter-spacing:normal}
.glp input,.glp select{margin:0;font:inherit;letter-spacing:normal}
.glp summary{list-style:none}
.glp details,.glp label{margin:0}

.glp {
    --glp-bg: #161b1d;
    --glp-panel: #21282b;
    --glp-panel2: #2e363a;
    --glp-border: #3a4449;
    --glp-text: #fff;
    --glp-muted: #969da0;
    --glp-accent: #f11a36;
    --glp-accent-dark: #ac1226;
    --glp-green: #2eb700;
    --glp-radius: 8px;

    box-sizing: border-box;
    width: 100%;
    color: var(--glp-text);
  }
  .glp *, .glp *::before, .glp *::after { box-sizing: border-box; }

  #glp-app {display: grid; gap: 20px;}

  .glp .glp-title {
    margin: 0;
    font-size: 22px;
    font-weight: 700;
    letter-spacing: 0.01em;
  }
  .glp .glp-title b { color: var(--glp-accent); font-weight: 700; }
  .glp .glp-sub { margin: 6px 0 0; font-size: 14px; color: var(--glp-muted); }

  /* ----- справка ----- */
  .glp .glp-help {
    border: 1px solid var(--glp-border);
    border-radius: var(--glp-radius);
    background: var(--glp-panel);
    overflow: hidden;
  }
  .glp .glp-help > summary {
    list-style: none;
    cursor: pointer;
    padding: 11px 14px;
    font-weight: 700;
    color: var(--glp-muted);
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
  .glp .glp-help > summary::-webkit-details-marker { display: none; }
  .glp .glp-help > summary::after { content: '▾'; font-size: 16px; color: var(--glp-text); transition: transform .15s ease; }
  .glp .glp-help[open] > summary::after { transform: rotate(180deg); }
  .glp .glp-help-body { display: grid; gap: 20px ;padding: 15px; }
  .glp .glp-help-body h4 { color: var(--glp-text); }
  .glp .glp-help-body p { font-size: clamp(12px, 2.5vw, 16px); color: var(--glp-muted); }
  .glp .glp-help-body em { color: var(--glp-text); font-style: normal; font-weight: 600; }
  .glp .glp-help-body img { max-width: 100%; width: auto; height: auto; border-radius: var(--borderradius); }
  .glp .glp-legend { padding: 0 !important; list-style: none; display: flex; flex-direction: column; gap: 6px; }
  .glp .glp-legend li { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--glp-muted); }
  .glp .glp-legend strong { color: var(--glp-text); font-weight: 600; }
  .glp .glp-sw { flex-shrink: 0; width: 20px; height: 20px; border-radius: 50%; }
  .glp .glp-sw--start { border: 2px solid var(--glp-accent); box-shadow: 0 0 6px rgba(241,26,54,.5); }
  .glp .glp-sw--target { border: 2px solid var(--glp-green); box-shadow: 0 0 6px rgba(46,183,0,.45); }
  .glp .glp-tag {
    flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center;
    width: 24px; height: 24px; border: 1px solid var(--glp-border); border-radius: 4px;
    background: var(--glp-bg); font-size: 12px; font-weight: 700;
  }
  .glp .glp-tag--s { color: var(--glp-accent); }
  .glp .glp-tag--o { color: var(--glp-blue, #60a5fa); }

  /* ----- панель управления ----- */
  .glp .glp-toolbar { display: flex; /* align-items: center; */ gap: 10px; }
  .glp .glp-gatesel {
    display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0;
    padding: 8px 12px; border: 1px solid var(--glp-border); border-radius: var(--glp-radius);
    background: var(--glp-panel); color: var(--glp-muted); white-space: nowrap;
  }
  .glp .glp-gatesel select {
    padding: 4px 8px; border: 1px solid var(--glp-border); border-radius: 4px;
    background: var(--glp-bg); color: var(--glp-text); font: inherit; font-size: 13px; cursor: pointer;
  }
  .glp .glp-ghost {
    flex-shrink: 0; padding: 8px 14px; border: 1px solid var(--glp-border); border-radius: var(--glp-radius);
    background: var(--glp-panel); color: var(--glp-text); font: inherit; font-size: 13px; font-weight: 700;
    letter-spacing: .04em; text-transform: uppercase; cursor: pointer;
  }
  .glp .glp-ghost:hover { border-color: var(--glp-accent); }

  /* ----- переключатель Старт / Цель ----- */
  .glp .glp-pinmode {
    display: flex; border: 1px solid var(--glp-border);
    border-radius: var(--glp-radius); overflow: hidden;
  }
  .glp .glp-pinmode button {
    flex: 1; padding: 9px 10px; border: none; background: var(--glp-bg); color: var(--glp-muted);
    font: inherit; font-size: 13px; font-weight: 700; cursor: pointer;
  }
  .glp .glp-pinmode button + button { border-left: 1px solid var(--glp-border); }
  .glp .glp-pinmode button[data-pin-mode="start"].is-active { background: rgba(241,26,54,.14); color: var(--glp-accent); }
  .glp .glp-pinmode button[data-pin-mode="target"].is-active { background: rgba(46,183,0,.14); color: var(--glp-green); }

  /* ----- карточки пластин ----- */
  .glp .glp-cards { display: flex; flex-direction: column; gap: 10px; }
  .glp .glp-card { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
  .glp .glp-card-no {
    flex-shrink: 0; width: 26px; height: 26px; display: flex; align-items: center; justify-content: center;
    border-radius: 50%; background: var(--glp-panel2); color: var(--glp-text);
    font-size: 13px; font-weight: 700;
  }
  .glp .glp-face {
    flex: 1 1 320px; min-width: 0;
    border-radius: 10px; border: 1px solid var(--glp-border);
    background: linear-gradient(145deg, #232b2e, #181d1f);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.04);
    padding: 8px 10px;
  }
  .glp .glp-holes { display: flex; align-items: center; justify-content: center; gap: 6px; }
  .glp .glp-hole {
    position: relative; flex: 1 1 0; min-width: 28px; max-width: 40px; aspect-ratio: 1;
    margin: 0; padding: 0; border: none; background: transparent; cursor: pointer; border-radius: 50%;
  }
  .glp .glp-hole:focus-visible { outline: 2px solid var(--glp-accent); outline-offset: 2px; }
  .glp .glp-hole-num {
    position: absolute; bottom: -3px; left: 50%; transform: translateX(-50%);
    font-size: 9px; line-height: 1; color: var(--glp-muted); pointer-events: none;
  }
  .glp .glp-socket, .glp .glp-ring { position: absolute; top: 50%; left: 50%; translate: -50% -50%; border-radius: 50%; aspect-ratio: 1; }
  .glp .glp-socket { width: 56%; background: #0c0f10; border: 1px solid #45504f; box-shadow: inset 0 2px 4px rgba(0,0,0,.6); }
  .glp .glp-ring { pointer-events: none; }
  .glp .glp-ring--cur { width: 44%; border: 2px solid var(--glp-accent); box-shadow: 0 0 6px rgba(241,26,54,.55); }
  .glp .glp-ring--tgt { width: 74%; border: 2px solid var(--glp-green); box-shadow: 0 0 7px rgba(46,183,0,.45); }

  /* ----- сетка связей ----- */
  .glp .glp-links { flex-shrink: 0; display: flex; flex-direction: column; gap: 3px; }
  .glp .glp-links-title { font-size: 9px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; text-align: center; color: var(--glp-muted); }
  .glp .glp-links-row, .glp .glp-links-lbl { display: flex; gap: 4px; }
  .glp .glp-links-lbl span { width: 24px; font-size: 9px; text-align: center; color: var(--glp-muted); }
  .glp .glp-link {
    width: 24px; height: 24px; padding: 0; border: 1px solid var(--glp-border); border-radius: 4px;
    background: var(--glp-bg); color: var(--glp-text); font-size: 12px; font-weight: 700; cursor: pointer;
  }
  .glp .glp-link:hover:not(:disabled) { border-color: var(--glp-accent); }
  .glp .glp-link.is-self { opacity: .35; cursor: default; color: var(--glp-muted); }
  .glp .glp-link[data-link="same"] { color: var(--glp-accent); border-color: var(--glp-accent); }
  .glp .glp-link[data-link="opposite"] { color: var(--glp-blue, #60a5fa); border-color: var(--glp-blue, #60a5fa); }

  /* ----- кнопка решения ----- */
  .glp .glp-solve {
    width: 100%; padding: 15px; border: 1px solid var(--glp-accent-dark); border-radius: 10px;
    background: var(--glp-accent-dark);
    color: #fff; font: inherit; font-size: 17px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; cursor: pointer;
  }
  .glp .glp-solve:hover { box-shadow: 0 0 14px rgba(241,26,54,.4); filter: brightness(1.05); }
  .glp .glp-solve:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }

  /* ----- решение ----- */
  .glp .glp-h3 { font-weight: 700; color: var(--glp-muted); }
  .glp .glp-hint { color: var(--glp-muted); }
  .glp .glp-steps { margin: 20px 0 0 0; padding: 0 !important; list-style: none; display: flex; flex-direction: column; gap: 6px; }
  .glp .glp-step {
    padding: 9px 11px; border: 1px solid var(--glp-border); border-radius: 6px; background: var(--glp-panel);
    font-size: 14px; font-variant-numeric: tabular-nums; list-style: none !important;
  }
  .glp .glp-step .glp-idx { color: var(--glp-muted); margin-right: 6px; }
  .glp .glp-step .glp .glp-idx { color: var(--glp-muted); margin-right: 6px; }
  .glp .glp-step .glp .glp-rep { color: var(--glp-accent); font-weight: 700; }
  .glp .glp-msg { padding: 9px 11px; border-radius: 6px; font-size: 13px; }
  .glp .glp-msg--err { color: #ff8b8b; border: 1px solid rgba(241,26,54,.4); background: rgba(241,26,54,.08); }
  .glp .glp-msg--ok { color: var(--glp-muted); }

  /* ----- сундуки ----- */
  .glp .glp-chests { border: 1px solid var(--glp-border); border-radius: var(--glp-radius); background: var(--glp-panel); overflow: hidden; }
  .glp .glp-chests > summary {
    list-style: none; cursor: pointer; padding: 11px 14px; font-weight: 700;
    color: var(--glp-muted);
    display: flex; align-items: center; justify-content: space-between;
  }
  .glp .glp-chests > summary::-webkit-details-marker { display: none; }
  .glp .glp-chests > summary::after { content: '▾'; font-size: 16px; color: var(--glp-text); transition: transform .15s ease; }
  .glp .glp-chests[open] > summary::after { transform: rotate(180deg); }
  .glp .glp-chests-body { padding: 0 14px 14px; display: grid; gap: 20px; }
  .glp .glp-field { display: flex; gap: 8px; }
  .glp .glp-field input {
    flex: 1; min-width: 0; padding: 9px 11px; border: 1px solid var(--glp-border); border-radius: 6px;
    background: var(--glp-bg); color: var(--glp-text); font: inherit; font-size: 14px;
  }
  .glp .glp-field input:focus-visible { outline: 2px solid var(--glp-accent); outline-offset: 1px; }
  .glp .glp-save {
    flex-shrink: 0; padding: 9px 16px; border: 1px solid var(--glp-border); border-radius: 6px;
    background: var(--glp-bg); color: var(--glp-text); font: inherit; font-weight: 700; cursor: pointer;
  }
  .glp .glp-save:hover { border-color: var(--glp-accent); }
  .glp .glp-status { min-height: 16px; font-size: 12px; color: var(--glp-muted); }
  .glp .glp-status.is-err { color: #ff8b8b; }
  .glp .glp-chest-list { padding: 0 !important; list-style: none; display: flex; flex-direction: column; gap: 8px; }
  .glp .glp-chest-item { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 11px; border: 1px solid var(--glp-border); border-radius: 6px; background: var(--glp-bg); }
  .glp .glp-chest-name { font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .glp .glp-chest-actions { display: flex; gap: 6px; flex-shrink: 0; }
  .glp .glp-chip { padding: 4px 9px; border: 1px solid var(--glp-border); border-radius: 4px; background: transparent; color: var(--glp-text); font: inherit; font-size: 12px; cursor: pointer; }
  .glp .glp-chip:hover { border-color: var(--glp-accent); }
  .glp .glp-empty { font-size: 13px; color: var(--glp-muted); }

  @media (max-width: 520px) {
    .glp .glp-links { width: 100%; }
    .glp .glp-links-row, .glp .glp-links-lbl { justify-content: center; }
  }

/* Donate block */
.article_desrc_full .donate-block{display:flex;gap:16px;align-items:center;max-width:860px;margin:20px auto 0;padding:20px;background:var(--color2);border:1px solid #f26522;border-radius:var(--borderradius);box-shadow:0 4px 15px rgba(242,101,34,.2)}
.article_desrc_full .donate-block:hover{box-shadow:0 6px 20px rgba(242,101,34,.4)}
.article_desrc_full .donate-logo-wrapper{position:relative;width:48px;height:48px;flex-shrink:0}
.article_desrc_full .donate-logo{display:block;width:100%;height:100%}
.article_desrc_full .donate-content{display:grid;gap:5px;align-items:center}
.article_desrc_full .donate-name{color:var(--color_white);font-size:clamp(16px,2.5vw,18px);font-weight:600;line-height:1.3}
.article_desrc_full .donate-name span{color:#f26522;font-weight:700}
.article_desrc_full .donate-content p{color:var(--color_lightgray);font-size:clamp(13px,2vw,14px);line-height:1.5;margin:0;text-indent:0!important}
.article_desrc_full .donate-button{display:inline-block;padding:10px 16px;color:var(--color_white);font-size:clamp(14px,2vw,15px);font-weight:500;background:linear-gradient(135deg,#f26522,#d7541f);border-radius:var(--borderradius);white-space:nowrap;text-decoration:none}
.article_desrc_full .donate-button:hover{background:linear-gradient(135deg,#d7541f,#b5431c);transform:scale(1.05);text-decoration:none}
@media(max-width:1110px){.article_desrc_full .donate-block{flex-direction:column;align-items:center;text-align:center;padding:15px;gap:12px}.article_desrc_full .donate-content{text-align:center}.article_desrc_full .donate-button{width:100%;text-align:center;padding:12px}}