.nav-search{display:grid;gap:7px;margin:0 0 14px;flex-shrink:0}
.nav-search>span{font-size:.7rem;font-weight:750;color:var(--muted)}
.nav-search input{min-width:0;padding:10px 11px;font-size:.76rem}
/* A grid in a height-constrained sidebar can compress details rows and clip
   their contents. Keep categories in normal flow; scroll the nav itself. */
.sidebar #nav{display:block;flex:1 1 0;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:2px 3px 10px 0;scrollbar-gutter:stable}
.sidebar>.logo,.sidebar>.environment,.sidebar>.logout{flex-shrink:0}
.sidebar>.environment{margin-top:10px}
.sidebar #nav .nav-group{display:block;height:auto;min-height:46px;margin:0 0 8px;border:1px solid var(--line);border-radius:12px;overflow:visible}
.nav-group summary{display:flex;align-items:center;gap:8px;padding:12px 10px;min-height:46px;line-height:1.4;cursor:pointer;color:var(--muted);font-size:.76rem;font-weight:800;list-style:none;user-select:none;box-sizing:border-box;border-radius:11px}
.nav-group summary::-webkit-details-marker{display:none}
.nav-group summary::before{content:'›';flex:0 0 10px;text-align:center;font-size:1rem;line-height:1;transition:transform .15s}
.nav-group[open] summary::before{transform:rotate(90deg)}
.nav-group:not([open])>button{display:none}
.nav-group summary small{flex:0 0 18px;margin-left:auto;text-align:center;font-size:.65rem;line-height:1;font-weight:650;opacity:.75}
.nav-group.has-active{border-color:var(--cyan)}
.nav-group.has-active summary{color:var(--text)}
.nav-group summary:hover{background:var(--panel2);color:var(--text)}
.nav-group summary:focus-visible,.sidebar nav button:focus-visible{outline:2px solid var(--cyan);outline-offset:-3px}
.sidebar #nav .nav-group>button[data-page]{width:calc(100% - 8px);height:auto;min-height:44px;margin:2px 4px;border-radius:8px;text-align:left;padding:10px 9px;font-size:.76rem;gap:8px;line-height:1.4;white-space:normal}
.sidebar #nav .nav-group>button[data-page]>span{flex:0 0 17px;width:17px;text-align:center}
.sidebar #nav .nav-group:not([open])>button[data-page]{display:none}
.nav-group[open]>summary{border-bottom:1px solid var(--line);border-radius:11px 11px 0 0;margin-bottom:4px}
.sidebar nav .nav-group button:last-child{margin-bottom:5px}
.nav-empty{font-size:.78rem;color:var(--muted);padding:12px 8px}
@media(max-width:760px){.sidebar{height:100dvh}.nav-group summary{min-height:46px}.sidebar nav .nav-group button{min-height:44px}}
@media(prefers-reduced-motion:reduce){.nav-group summary::before{transition:none}}
