/* Global extras: header search button, "/" search dialog, copy buttons. Loaded on every page after site.css. */
.dock .sbtn{display:inline-grid;place-items:center;width:42px;height:42px;padding:0;border:1.5px solid var(--dock-chip,rgba(14,15,10,.2));border-radius:12px;background:var(--dock-chip,transparent);color:var(--dock-fg,inherit);cursor:pointer;flex:none;transition:background .25s,transform .25s}
.dock .sbtn svg{width:18px;height:18px}
.dock .sbtn:hover{transform:translateY(-1px);background:var(--dock-accent);color:var(--dock-on-accent)}
.dock .sm{display:none}
@media (max-width:1240px){.dock .sbtn{margin-left:auto}.dock .sbtn+.lang{margin-left:0}}
@media (max-width:1160px){
  .dock .sbtn{display:none}
  .dock .sm{display:block}
  .chapters .sm-btn{display:flex;align-items:center;gap:10px;width:100%;padding:14px 16px;border:0;border-radius:10px;background:transparent;color:var(--paper);font:600 1.05rem/1 var(--body);text-align:left;cursor:pointer}
  .chapters .sm-btn:hover{background:rgba(246,244,236,.1)}
  .chapters .sm-btn svg{width:18px;height:18px;color:var(--lime)}
}

dialog.sx{border:0;padding:0;background:transparent;color:var(--paper);width:min(100% - 28px,640px);max-width:none;max-height:none;margin:clamp(64px,13vh,140px) auto auto;overflow:visible}
dialog.sx::backdrop{background:rgba(14,15,10,.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
dialog.sx[open]{animation:sx-in .28s var(--ease)}
@keyframes sx-in{from{opacity:0;transform:translateY(-12px) scale(.98)}to{opacity:1;transform:none}}
.sx-box{--focus:var(--lime);background:rgba(14,15,10,.94);border-radius:22px;box-shadow:inset 0 0 0 1px rgba(246,244,236,.16),0 40px 80px -30px rgba(0,0,0,.8);overflow:hidden}
.sx-top{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid rgba(246,244,236,.12)}
.sx-top svg{width:20px;height:20px;flex:none;color:var(--lime)}
.sx-top input{flex:1;min-width:0;border:0;background:transparent;color:var(--paper);font:600 1.1rem/1.2 var(--body);outline:none;-webkit-appearance:none;appearance:none}
.sx-top input::placeholder{color:rgba(246,244,236,.5)}
.sx-top input::-webkit-search-cancel-button{display:none}
.sx-top kbd{font:700 .7rem/1 var(--mono);padding:.4em .55em;border-radius:7px;background:rgba(246,244,236,.1);color:rgba(246,244,236,.7)}
.sx-box:focus-within{box-shadow:inset 0 0 0 2px var(--lime),0 40px 80px -30px rgba(0,0,0,.8)}
.sx-box ul{list-style:none;margin:0;padding:8px;max-height:min(52vh,420px);overflow:auto}
.sx-box li a{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:12px 14px;border-radius:12px;color:var(--paper);text-decoration:none}
.sx-box li b{font:700 1rem/1.25 var(--body);overflow-wrap:anywhere}
.sx-box li small{flex:none;font:700 .68rem/1 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:rgba(246,244,236,.55)}
.sx-box li[aria-selected="true"] a{background:var(--lime);color:var(--ink)}
.sx-box li[aria-selected="true"] small{color:rgba(14,15,10,.7)}
.sx-hint{margin:0;padding:10px 18px 14px;font:500 .85rem/1.4 var(--body);color:rgba(246,244,236,.6);min-height:1.4em}
.sx-hint:empty{padding:0;min-height:0}
@media (prefers-reduced-motion:reduce){dialog.sx[open]{animation:none}}

.isteps pre{position:relative;padding-right:5.5rem}
.cpy{position:absolute;top:10px;right:10px;padding:.5em .85em;border:1.5px solid rgba(246,244,236,.3);border-radius:10px;background:rgba(246,244,236,.08);color:var(--paper);font:700 .72rem/1 var(--mono);letter-spacing:.03em;cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.cpy:hover,.cpy:focus-visible{background:var(--lime);color:var(--ink);border-color:var(--lime)}
.cpy.ok{background:var(--lime);color:var(--ink);border-color:var(--lime)}

/* long commands wrap (no horizontal scroll) so the Copy button never sits over the text */
.isteps pre code{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
.isteps pre{overflow-x:visible}
