/* 本文专属组件样式：首屏地址空间 / 变量归位 / VmRSS 曲线 / FreeRTOS heap_4 */

/* ---------- 公共按钮 ---------- */
:is(.vp-view,.vp-act,.rt-tab,.rt-trim,.rh-sc,.rh-btn){font-family:var(--sans);font-size:.78rem;background:transparent;color:var(--ink-2);border:1px solid var(--line-2);padding:.4rem .8rem;cursor:pointer;transition:border-color .2s,color .2s,background .2s}
:is(.vp-view,.vp-act,.rt-tab,.rt-trim,.rh-sc,.rh-btn):hover:not(:disabled){border-color:var(--ink-2);color:var(--ink)}
:is(.vp-view,.vp-act,.rt-tab,.rt-trim,.rh-sc,.rh-btn,.vp-decl):focus-visible{outline:2px solid var(--mark);outline-offset:2px}
:is(.vp-view,.rt-tab,.rh-sc)[aria-pressed="true"]{border-color:var(--mark);color:var(--mark);background:var(--mark-dim)}
:is(.vp-act,.rh-btn).is-primary{background:var(--mark);border-color:var(--mark);color:var(--on-mark);font-weight:700}
:is(.vp-act,.rh-btn).is-primary:hover:not(:disabled){filter:brightness(1.1);color:var(--on-mark)}
:is(.rt-trim,.rh-btn):disabled{opacity:.4;cursor:default}

/* ---------- 首屏：地址空间 ---------- */
.as-hero{width:100%;height:auto;display:block}
.as-box{fill:color-mix(in srgb,var(--ink) 6%,transparent);stroke:var(--line-2);stroke-width:1.2}
.as-heap-room{fill:transparent;stroke:var(--line);stroke-dasharray:4 5}
.as-heap{fill:color-mix(in srgb,var(--ir) 30%,transparent);stroke:var(--ir);stroke-width:1.2;filter:drop-shadow(0 0 6px var(--glow-ir))}
.as-name{font-family:var(--mono);fill:var(--ink-2);letter-spacing:.03em}
.as-heap .as-name,.as-heap ~ .as-name{fill:var(--ir)}
.as-addr{font-family:var(--mono);fill:var(--ink-3)}
.as-chip{font-family:var(--mono);fill:var(--mark);opacity:0;transform:translateX(70px);transition:opacity .35s var(--ease),transform .45s var(--ease);filter:drop-shadow(0 0 4px var(--glow-c))}
.as-chip.is-on{opacity:1;transform:none}
.as-plot{fill:color-mix(in srgb,var(--ink) 3%,transparent);stroke:var(--line)}
.as-grid{stroke:var(--line);stroke-dasharray:2 4}
.as-line{fill:none;stroke:var(--ir);stroke-width:2.2;stroke-linejoin:round;filter:drop-shadow(0 0 4px var(--glow-ir))}
.as-dot{fill:var(--ir)}
.as-read{font-family:var(--mono);font-weight:700;fill:var(--ink)}
.viewer-cap .k-static,.viewer-cap .k-heap{width:.8rem;height:.8rem;border:1px solid var(--line-2);background:color-mix(in srgb,var(--ink) 8%,transparent)}
.viewer-cap .k-heap{border-color:var(--ir);background:color-mix(in srgb,var(--ir) 30%,transparent)}

/* ---------- var-placer ---------- */
.vp-bar{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.8rem}
.vp-views{display:flex;gap:.35rem;margin-right:auto;flex-wrap:wrap}
.vp-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:1rem;align-items:start}
.w-vp.is-narrow .vp-grid{grid-template-columns:1fr}
.vp-decls{display:grid;gap:.3rem;align-content:start}
.w-vp.is-narrow .vp-decls{grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr))}
.vp-decl{text-align:left;background:var(--bg-2);border:1px solid var(--line);padding:.32rem .55rem;cursor:pointer;color:var(--ink-2);transition:border-color .2s,color .2s,background .2s}
.vp-decl code{font-family:var(--mono);font-size:.74rem;background:none;padding:0;color:inherit;white-space:normal;word-break:break-word}
.vp-decl:hover{border-color:var(--ink-3);color:var(--ink)}
.vp-decl[aria-pressed="true"]{color:var(--ink-3)}
.vp-decl.is-cur{border-color:var(--mark);color:var(--mark);background:var(--mark-dim)}
.vp-axis{margin:.15rem 0!important;font-family:var(--mono);font-size:.66rem;color:var(--ink-3)!important}
.vp-stack{display:grid;gap:.3rem}
.vp-reg{border:1px solid var(--line-2);background:var(--render-bg);padding:.4rem .6rem;min-height:3.1rem;transition:border-color .3s}
.vp-reg.m-flash{border-left:3px solid color-mix(in srgb,var(--ink) 40%,transparent)}
.vp-reg.m-ram{border-left:3px solid var(--mark)}
.vp-reg.m-both{border-left:3px solid var(--ir);background:linear-gradient(90deg,color-mix(in srgb,var(--ir) 10%,transparent),transparent 60%),var(--render-bg)}
.vp-reg.is-flash{animation:vp-flash .7s var(--ease)}
@keyframes vp-flash{0%{border-color:var(--mark);box-shadow:0 0 0 2px var(--mark-dim)}100%{box-shadow:0 0 0 0 transparent}}
.vp-reg-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .6rem}
.vp-reg-h b{font-family:var(--mono);font-size:.8rem;color:var(--ink)}
.vp-reg-h span{font-size:.72rem;color:var(--ink-3)}
.vp-chips{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.3rem;min-height:.2rem}
.w-vp code.vp-chip{font-family:var(--mono);font-size:.7rem;padding:.1rem .4rem;background:var(--mark-dim);color:var(--mark);border:1px solid color-mix(in srgb,var(--mark) 45%,transparent)}
.vp-chip.is-new{animation:vp-in .45s var(--ease)}
@keyframes vp-in{from{opacity:0;transform:translateX(-14px) scale(.9)}}
.vp-note{min-height:3em;margin:.8rem 0 .2rem!important;font-size:.9rem;line-height:1.6;color:var(--ink)!important}
.vp-tally{margin:0!important;font-size:.8rem;color:var(--ir)!important;min-height:1.2em}

/* ---------- rss-trend ---------- */
.rt-tabs{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.6rem}
.rt-head{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1rem;margin-bottom:.3rem}
.rt-legend{display:flex;gap:1rem;font-family:var(--mono);font-size:.7rem;color:var(--ink-3)}
.rt-legend span{display:inline-flex;align-items:center;gap:.4rem}
.rt-legend i{display:inline-block;width:1.4rem;border-top:2px solid var(--ir)}
.rt-legend .k-vsz{border-top:2px dashed var(--ink-3)}
.rt-tag{font-family:var(--mono);font-size:.66rem;padding:.1rem .45rem;border:1px solid var(--line-2);color:var(--ink-3)}
.rt-tag.is-real{border-color:var(--mark);color:var(--mark)}
.rt-trim{margin-left:auto;font-family:var(--mono)}
.rt-trim:not(:disabled){border-color:var(--mark);color:var(--mark)}
.rt-svg{width:100%;height:auto;display:block;background:var(--render-bg);border:1px solid var(--line)}
.rt-grid{stroke:var(--line);stroke-dasharray:2 4}
.rt-ax{font-family:var(--mono);font-size:11px;fill:var(--ink-3)}
.rt-mark{stroke:var(--line-2);stroke-dasharray:3 3}
.rt-vsz{fill:none;stroke:var(--ink-3);stroke-width:1.5;stroke-dasharray:.012 .01}
.rt-rss{fill:none;stroke:var(--ir);stroke-width:2.4;stroke-linejoin:round;filter:drop-shadow(0 0 4px var(--glow-ir))}
.rt-rss.is-draw{stroke-dasharray:1;stroke-dashoffset:1;animation:rt-draw 1.1s var(--ease) forwards}
@keyframes rt-draw{to{stroke-dashoffset:0}}
.rt-pt{fill:var(--panel);stroke:var(--ir);stroke-width:2}
.rt-verdict{margin:.7rem 0 .2rem!important;font-size:.92rem;color:var(--ink)!important;font-weight:600;min-height:1.6em}
.rt-next{margin:0 0 .3rem!important;font-size:.85rem;color:var(--ink-2)!important}

/* ---------- rtos-heap ---------- */
.rh-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.7rem}
.rh-group{display:flex;gap:.35rem;margin-right:auto}
.rh-count{font-family:var(--mono);font-size:.7rem;color:var(--ink-3);min-width:6.5rem;text-align:center}
.rh-svg{width:100%;height:auto;display:block}
.rh-blk rect{stroke:var(--panel);stroke-width:1;transition:fill .3s}
.rh-blk.s-free rect{fill:color-mix(in srgb,var(--ink) 5%,transparent);stroke:var(--line-2);stroke-dasharray:3 3}
.rh-blk.s-used rect{fill:color-mix(in srgb,var(--mark) 35%,transparent)}
.rh-blk.s-leak rect{fill:color-mix(in srgb,var(--ir) 55%,transparent)}
.rh-blk text{font-family:var(--sans);font-size:12px;fill:var(--ink)}
.rh-ax{font-family:var(--mono);font-size:11px;fill:var(--ink-3)}
.rh-legend{display:flex;gap:1.2rem;margin:.2rem 0 .7rem;font-size:.75rem;color:var(--ink-3)}
.rh-legend span{display:inline-flex;align-items:center;gap:.4rem}
.rh-legend i{display:inline-block;width:.8rem;height:.8rem}
.rh-legend .k-used{background:color-mix(in srgb,var(--mark) 35%,transparent)}
.rh-legend .k-leak{background:color-mix(in srgb,var(--ir) 55%,transparent)}
.rh-legend .k-free{border:1px dashed var(--line-2)}
.rh-stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.4rem}
.rh-stat{border:1px solid var(--line-2);background:var(--bg-2);padding:.35rem .5rem;display:grid;gap:.1rem;transition:border-color .3s,background .3s}
.rh-stat span{font-family:var(--mono);font-size:.64rem;color:var(--ink-3)}
.rh-stat b{font-family:var(--mono);font-size:.92rem;color:var(--ink)}
.rh-stat.is-warn{border-color:var(--ir);background:var(--ir-dim)}
.rh-stat.is-warn b{color:var(--ir)}
.rh-log{min-height:3em;margin:.7rem 0 .2rem!important;font-size:.9rem;line-height:1.6;color:var(--ink)!important}
.rh-log.is-fail{color:var(--ir)!important;font-weight:600}

@media (max-width:640px){
  .rh-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
  .rh-group{margin-right:0;width:100%}
  .rt-trim{margin-left:0}
}
@media (prefers-reduced-motion:reduce){
  .as-chip,.vp-chip.is-new,.vp-reg.is-flash,.rt-rss.is-draw{animation:none;transition:none}
}
