/* BeatHelper canonical footer v17.6.24.
 * ONE isolated component for Landing, Mini App/Web App, Terms and Privacy.
 * It deliberately uses the bh-footer namespace so legacy page-specific .footer CSS cannot affect it.
 */
:root{
  --bh-footer-blue:#2F6BFF;
  --bh-footer-muted:#92A4BE;
  --bh-footer-surface:#121318;
  --bh-footer-raised:#17191F;
  --bh-footer-border:rgba(255,255,255,.09);
  --bh-footer-mark-mask:url('/assets/beathelper-mark.svg?v=12.0');
}
.bh-footer,.bh-footer *{box-sizing:border-box;font-family:var(--bh-font,Manrope,-apple-system,system-ui,sans-serif)!important}
.bh-footer{
  width:100%;margin:40px 0 0;padding:24px 4px 18px;border-top:1px solid rgba(255,255,255,.06);
  color:#70809A;font-size:10.5px;font-weight:500;line-height:1.55;
}
.bh-footer__top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;column-gap:12px;width:100%;min-height:48px;margin-bottom:14px}
.bh-footer__brand{display:flex;align-items:center;gap:10px;min-width:0}
.bh-footer__mark{height:25px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;color:var(--bh-footer-blue);filter:drop-shadow(0 0 10px rgba(47,107,255,.22))}
.bh-footer__mark::before{content:"";display:block;height:100%;aspect-ratio:434/420;background:currentColor;-webkit-mask:var(--bh-footer-mark-mask) center/contain no-repeat;mask:var(--bh-footer-mark-mask) center/contain no-repeat}
.bh-footer__mark i{display:none!important}
.bh-footer__brand-copy{min-width:0}
.bh-footer__title{color:#E4EBF7;font-size:15px;font-weight:800!important;line-height:1.1;letter-spacing:-.02em}
.bh-footer__note{margin-top:4px;color:#8797B0;font-size:10px;font-weight:500!important;line-height:1.45}
.bh-footer__team{grid-column:2;width:100%;display:grid;gap:8px;justify-items:start;align-self:end}
.bh-footer__row{width:100%;display:flex;align-items:center;gap:8px;color:#7E90AA;font-size:10.5px;font-weight:500!important;line-height:1.4;white-space:nowrap}
.bh-footer__role{min-width:34px;height:20px;padding:0 6px;border:1px solid var(--bh-footer-border);border-radius:7px;background:var(--bh-footer-raised);display:inline-flex;align-items:center;justify-content:center;color:var(--bh-footer-muted);font-size:8px;font-weight:800!important;line-height:1;letter-spacing:.02em}
.bh-footer__link{color:#D5E1F2;text-decoration:none;font-size:inherit;font-weight:500!important;transition:color .15s ease,opacity .15s ease}
.bh-footer__link:active{opacity:.72}
.bh-footer__legal{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;width:100%;margin-top:14px}
.bh-footer__legal a{min-height:48px;padding:12px 14px;border:1px solid var(--bh-footer-border);border-radius:12px;background:var(--bh-footer-surface);box-shadow:inset 0 1px 0 rgba(255,255,255,.025);display:flex;align-items:center;justify-content:space-between;gap:8px;color:#9AAAC0;text-decoration:none;font-size:10px;font-weight:500!important;line-height:1.25;transition:background .15s ease,border-color .15s ease}
.bh-footer__legal a::after{content:"›";width:18px;height:18px;flex:0 0 18px;border:1px solid var(--bh-footer-border);border-radius:50%;background:var(--bh-footer-raised);display:grid;place-items:center;color:var(--bh-footer-muted);font-size:14px;font-weight:800!important;line-height:1}
.bh-footer__bottom{margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.045);display:flex;align-items:center;justify-content:space-between;gap:10px;color:#5F6D84;font-size:9.5px;font-weight:500!important;line-height:1.4}
.bh-footer__versions{display:flex;align-items:center;gap:14px;white-space:nowrap;font-weight:500!important}
@media(hover:hover){.bh-footer__legal a:hover{background:var(--bh-footer-raised);border-color:rgba(255,255,255,.12)}}
/* v17.6.15 — footer identity is fully explicit; no page-level opacity/color inheritance. */
.bh-footer__title,.bh-footer__note,.bh-footer__row,.bh-footer__role,.bh-footer__link,.bh-footer__legal a,.bh-footer__bottom{opacity:1!important}

/* Mini App desktop uses the same footer component; only geometry breaks out from the narrower workspace. */
@media(min-width:1101px){.screen[data-page] .bh-footer{position:relative;left:-98px;width:calc(100% + 80px)}}
/* v17.6.19 — desktop footer geometry is grid-locked by footer-grid-sync.js.
 * The 40px margin is only a compact no-JS fallback; JS owns desktop geometry. */
@media(max-width:767px){
  /* v17.6.23 — restore the compact mobile footer composition used before the
   * desktop footer unification: identity on the left, CEO/DEV on the right,
   * legal actions side-by-side. This branch is intentionally independent from
   * desktop grid/end locking. */
  .bh-footer{margin-top:56px;padding:26px 2px calc(12px + env(safe-area-inset-bottom));font-size:9px}
  .bh-footer__top{grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start;min-height:0;margin-bottom:12px}
  .bh-footer__brand{min-width:0;align-self:start}
  .bh-footer__brand-copy{min-width:0}
  .bh-footer__title{font-size:14px}
  .bh-footer__note{margin-top:3px;font-size:8px;line-height:1.35;white-space:nowrap}
  .bh-footer__team{grid-column:2;width:auto;gap:6px;justify-self:end;align-self:start}
  .bh-footer__row{width:auto;gap:6px;font-size:8.2px;line-height:1.3;white-space:nowrap}
  .bh-footer__role{min-width:29px;height:18px;padding:0 5px;border-radius:6px;font-size:7px}
  .bh-footer__legal{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;margin-top:12px}
  .bh-footer__legal a{min-width:0;min-height:40px;font-size:8.5px;line-height:1.2;padding:9px 10px}
  .bh-footer__legal a::after{width:17px;height:17px;flex-basis:17px;font-size:13px}
  .bh-footer__bottom{margin-top:12px;padding-top:10px;align-items:flex-end;gap:10px;font-size:8px}
  .bh-footer__versions{gap:8px;font-size:7.5px;white-space:normal;flex-wrap:wrap}
}
@media(max-width:360px){
  .bh-footer__top{gap:7px}
  .bh-footer__note{font-size:7.4px}
  .bh-footer__row{gap:4px;font-size:7.5px}
  .bh-footer__role{min-width:27px;padding:0 4px;font-size:6.6px}
  .bh-footer__legal a{font-size:8px;padding:8px}
}

/* v17.6.21 — real document-end grid lock.
 * footer-grid-sync.js measures document.scrollingElement.scrollHeight itself.
 * Existing BeatHelper grid visuals are intentionally untouched. */
@media(min-width:768px){
  body.bh-footer-end-lock{padding-bottom:0!important}
  body.bh-footer-end-lock .bh-footer{margin-top:0!important}
  body.bh-footer-end-lock .bh-footer-grid-host{padding-bottom:0!important;margin-bottom:0!important;min-height:0!important}
  body.bh-footer-end-lock .bh-footer-grid-spacer,
  body.bh-footer-end-lock .bh-footer-grid-tail{display:block;width:100%;flex:0 0 auto;margin:0!important;padding:0!important;pointer-events:none}
  body.bh-footer-end-lock .bh-footer-grid-tail{height:34px!important;min-height:34px!important;max-height:34px!important}

  /* Remove only trailing min-height/padding ownership. This does not touch the
   * grid, glows, colors or the content layout itself. The dynamic spacer then
   * becomes the single owner of the final page geometry. */
  body.bh-footer-end-lock > .app,
  body.bh-footer-end-lock > .app > .wrap,
  body.bh-footer-end-lock .mobile-shell,
  body.bh-footer-end-lock .screen.active,
  body.bh-footer-end-lock .screen.active > .app,
  body.bh-footer-end-lock .screen.active > .app > .wrap,
  body.bh-footer-end-lock .legal-app,
  body.bh-footer-end-lock .legal-wrap{min-height:0!important}
  body.bh-footer-end-lock .screen.active > .app > .wrap,
  body.bh-footer-end-lock .legal-wrap{padding-bottom:0!important}
}
@media(max-width:767px){.bh-footer-grid-spacer,.bh-footer-grid-tail{display:none!important}}


/* v17.6.22 — Legal desktop end calibration.
 * Landing/Mini App already retain a 24px outer shell below the canonical 34px
 * footer tail. Restore that exact shell for wide Terms/Privacy pages so the
 * visible footer + page-end rhythm is identical while v21 real-scrollHeight
 * locking remains intact. 768–900px keeps the previous responsive behavior. */
@media(min-width:901px){
  body[data-legal-page].bh-footer-end-lock .legal-app{padding-bottom:24px!important}
}

/* v17.6.24 — FINAL footer ownership.
 * This file is intentionally loaded after every page-specific stylesheet.
 * Normalize only footer typography/compositing and re-assert the original
 * compact mobile composition. Grid/page-end math remains owned by v21/v22. */
.bh-footer[data-bh-footer-master]{
  opacity:1!important;
  filter:none!important;
  mix-blend-mode:normal!important;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
.bh-footer[data-bh-footer-master] .bh-footer__title,
.bh-footer[data-bh-footer-master] .bh-footer__note,
.bh-footer[data-bh-footer-master] .bh-footer__row,
.bh-footer[data-bh-footer-master] .bh-footer__role,
.bh-footer[data-bh-footer-master] .bh-footer__link,
.bh-footer[data-bh-footer-master] .bh-footer__legal a,
.bh-footer[data-bh-footer-master] .bh-footer__bottom{
  opacity:1!important;
  filter:none!important;
  text-shadow:none!important;
  mix-blend-mode:normal!important;
  -webkit-text-fill-color:currentColor!important;
}
.bh-footer[data-bh-footer-master] .bh-footer__title{color:#E4EBF7!important}
.bh-footer[data-bh-footer-master] .bh-footer__note{color:#8797B0!important}
.bh-footer[data-bh-footer-master] .bh-footer__row{color:#7E90AA!important}
.bh-footer[data-bh-footer-master] .bh-footer__role{color:#92A4BE!important}
.bh-footer[data-bh-footer-master] .bh-footer__link{color:#D5E1F2!important}
.bh-footer[data-bh-footer-master] .bh-footer__legal a{color:#9AAAC0!important}
.bh-footer[data-bh-footer-master] .bh-footer__bottom{color:#5F6D84!important}

@media(max-width:767px){
  /* Canonical mobile footer: brand left, CEO/DEV right, legal buttons in one row. */
  .bh-footer[data-bh-footer-master]{
    margin-top:56px!important;
    padding:26px 2px calc(12px + env(safe-area-inset-bottom))!important;
    font-size:9px!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__top{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    grid-template-rows:auto!important;
    gap:10px!important;
    align-items:start!important;
    min-height:0!important;
    margin-bottom:12px!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__brand{
    grid-column:1!important;
    grid-row:1!important;
    min-width:0!important;
    align-self:start!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__brand-copy{min-width:0!important}
  .bh-footer[data-bh-footer-master] .bh-footer__title{font-size:14px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__note{
    margin-top:3px!important;
    font-size:8px!important;
    line-height:1.35!important;
    white-space:nowrap!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__team{
    display:grid!important;
    grid-column:2!important;
    grid-row:1!important;
    width:auto!important;
    max-width:47vw!important;
    gap:6px!important;
    justify-items:start!important;
    justify-self:end!important;
    align-self:start!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__row{
    width:auto!important;
    gap:6px!important;
    font-size:8.2px!important;
    line-height:1.3!important;
    white-space:nowrap!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__role{
    min-width:29px!important;
    height:18px!important;
    padding:0 5px!important;
    border-radius:6px!important;
    font-size:7px!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__legal{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    gap:8px!important;
    width:100%!important;
    margin-top:12px!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__legal a{
    min-width:0!important;
    min-height:40px!important;
    padding:9px 10px!important;
    font-size:8.5px!important;
    line-height:1.2!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__legal a::after{
    width:17px!important;
    height:17px!important;
    flex:0 0 17px!important;
    font-size:13px!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__bottom{
    margin-top:12px!important;
    padding-top:10px!important;
    align-items:flex-end!important;
    gap:10px!important;
    font-size:8px!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__versions{
    gap:8px!important;
    font-size:7.5px!important;
    white-space:normal!important;
    flex-wrap:wrap!important;
  }
}
@media(max-width:360px){
  .bh-footer[data-bh-footer-master] .bh-footer__top{gap:7px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__note{font-size:7.4px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__row{gap:4px!important;font-size:7.5px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__role{min-width:27px!important;padding:0 4px!important;font-size:6.6px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__legal a{font-size:8px!important;padding:8px!important}
}


/* v17.6.26 — responsive physical-pixel typography lock.
 * Keep the proven >=768px page-end/grid engine untouched, but make the paint
 * phase canonical on EVERY viewport. Mobile/tablet footers therefore get the
 * same device-pixel Y snap as desktop without gaining spacer/tail geometry.
 * Integer line boxes remove the remaining fractional baselines on narrow widths. */
.bh-footer[data-bh-footer-master]{
  position:relative!important;
  top:var(--bh-footer-pixel-shift-y,0px)!important;
}
@media(min-width:768px){
  .bh-footer[data-bh-footer-master] .bh-footer__title{line-height:17px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__note{line-height:14px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__row{line-height:15px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__legal a{line-height:13px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__bottom{line-height:14px!important}
}
@media(max-width:767px){
  .bh-footer[data-bh-footer-master] .bh-footer__title{line-height:16px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__note{line-height:11px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__row{line-height:11px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__legal a{line-height:11px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__bottom{line-height:11px!important}
}
@media(max-width:360px){
  .bh-footer[data-bh-footer-master] .bh-footer__note{line-height:10px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__row{line-height:10px!important}
  .bh-footer[data-bh-footer-master] .bh-footer__legal a{line-height:10px!important}
}


/* v17.6.28 — mobile footer end alignment + canonical narrow composition.
 * Desktop/tablet >=768px remain on the proven v26 72px document-end engine.
 * Phones keep the compact layout, but all three surfaces now share:
 *   - one post-footer visible gap (owned by footer-grid-sync.js),
 *   - the CEO/DEV column starting exactly where legal column #2 starts,
 *   - a stable two-line-capable footer note. */
@media(max-width:767px){
  .bh-footer-mobile-host{
    padding-bottom:var(--bh-footer-mobile-host-pad,0px)!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__top{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    column-gap:8px!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__team{
    width:100%!important;
    max-width:none!important;
    justify-self:stretch!important;
    justify-items:start!important;
  }
  .bh-footer[data-bh-footer-master] .bh-footer__note{
    white-space:normal!important;
    max-width:15ch!important;
  }
}
@media(max-width:380px){
  .bh-footer[data-bh-footer-master] .bh-footer__note{max-width:13ch!important}
}


/* v17.6.29 — mobile footer note: max two visual lines without truncation.
 * The previous 15ch/13ch caps could squeeze the Russian note into 3 lines.
 * Let the left footer column own its full width and balance the wrap. */
@media(max-width:767px){
  .bh-footer[data-bh-footer-master] .bh-footer__note{
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
    white-space:normal!important;
    text-wrap:balance;
  }
}
\n\n/* v17.6.30 — stable footer baseline.\n * The 72px page-end engine already owns footer geometry with integer layout boxes.\n * Do not repaint the whole footer with a runtime sub-CSS-pixel `top` trim: when\n * delayed layout/font passes recompute that trim, Manrope can visibly flip by one\n * device pixel on Windows/fractional DPR. Footer Y is now layout-owned only. */\n.bh-footer[data-bh-footer-master]{\n  top:0!important;\n  transform:none!important;\n  will-change:auto!important;\n}\n.bh-footer[data-bh-footer-master] .bh-footer__title,\n.bh-footer[data-bh-footer-master] .bh-footer__note,\n.bh-footer[data-bh-footer-master] .bh-footer__row,\n.bh-footer[data-bh-footer-master] .bh-footer__role,\n.bh-footer[data-bh-footer-master] .bh-footer__link,\n.bh-footer[data-bh-footer-master] .bh-footer__legal a,\n.bh-footer[data-bh-footer-master] .bh-footer__bottom{\n  transform:none!important;\n  will-change:auto!important;\n}\n