.lh-button{box-sizing:border-box;height:37px;min-height:37px;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.57rem .95rem;border:1px solid var(--lh-border);border-radius:9px;background:var(--lh-panel);color:var(--lh-fg);font-weight:650;letter-spacing:-.005em;text-decoration:none;white-space:nowrap;transition:background .14s,border-color .14s,transform .14s}
.lh-button:hover{background:var(--lh-panel-soft);border-color:var(--lh-border)}
.lh-button-primary{background:var(--lh-accent);border-color:var(--lh-accent);color:#fff}.lh-button-primary:hover{background:var(--lh-accent-hover);border-color:var(--lh-accent-hover);color:#fff}
.lh-button-danger{background:var(--lh-danger);border-color:var(--lh-danger);color:#fff}
.lh-button-icon{width:38px;padding:0;font-size:1.35rem;line-height:1}.lh-button-quiet{background:transparent;border-color:transparent}
.lh-button:active{transform:translateY(1px)}

/* Shared reusable UI components consolidated from earlier module-specific CSS. */
.vault-header-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.vault-header-actions .lh-button{box-sizing:border-box;height:37px;min-height:37px;display:inline-flex;align-items:center;gap:6px}
.vault-icon-button{width:33px;height:33px;display:inline-grid;place-items:center;background:var(--lh-panel-soft);border:1px solid var(--lh-border);border-radius:7px;color:var(--lh-muted);font-size:1rem;cursor:pointer}
.vault-icon-button:hover,.vault-icon-button.is-active{background:var(--lh-accent-soft);border-color:var(--lh-accent);color:var(--lh-accent)}
button.vault-file-open{cursor:pointer}
button.vault-file-open:hover{color:var(--lh-accent);text-decoration:underline}
.vault-file-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;min-width:0}
.vault-row-action{border:1px solid var(--lh-border);background:var(--lh-panel);color:var(--lh-fg);border-radius:7px;padding:7px 9px;cursor:pointer;font-size:.72rem;white-space:nowrap}
.vault-row-action:hover{color:var(--lh-accent);border-color:var(--lh-accent)}
.vault-row-action.is-danger{color:var(--lh-danger)}
.vault-action-menu{position:relative}
.vault-action-menu>summary{display:grid;place-items:center;list-style:none;cursor:pointer;width:30px;height:32px;border-radius:7px;border:1px solid transparent;font-size:1.24rem;color:var(--lh-muted)}
.vault-action-menu>summary::-webkit-details-marker{display:none}
.vault-action-menu[open]>summary,.vault-action-menu>summary:hover{border-color:var(--lh-border);background:var(--lh-panel-soft)}
.vault-action-popup{position:absolute;z-index:20;right:0;top:33px;display:grid;gap:2px;background:var(--lh-panel);box-shadow:0 8px 35px #0003;border:1px solid var(--lh-border);padding:6px;min-width:145px;border-radius:9px}
.vault-action-popup>.vault-row-action{border:0;text-align:left;background:transparent;width:100%}
.vault-action-popup>.vault-row-action:hover{background:var(--lh-accent-soft)}
.vault-file-list.is-grid .vault-file-actions{grid-column:1 / -1;justify-content:space-between;margin-top:7px}
.vault-batch-remove{background:transparent;border:0;color:var(--lh-muted);padding:5px 9px;min-width:30px;min-height:30px}
.vault-grant-row .lh-button{padding:6px 8px;font-size:.71rem}
@media (max-width:910px) {
.vault-primary-row-action{display:none}
}
@media (max-width:700px) {
.vault-file-actions{grid-column:3}
}
@media (max-width:530px) {
.vault-header-actions .lh-button{font-size:.76rem}
}
.food-header-actions{display:flex;gap:.6rem}
.food-view-toggle button[aria-pressed=true]{background:var(--lh-accent-soft);color:var(--lh-accent);border-color:var(--lh-accent)}
.food-label-actions,.food-form-buttons,.food-editor-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.65rem}
.food-label-actions{justify-content:flex-start}
.food-editor-actions{grid-column:1/-1}
.food-detail-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
@media (max-width:700px) {
.import-pair-row button{grid-column:1/-1}
}

/* Shared destructive icon button. */
.lh-button-danger:hover{background:var(--lh-danger);border-color:var(--lh-danger);filter:brightness(.92);color:#fff}
.recipe-remove{width:37px;min-width:37px;height:37px;padding:0;display:grid;place-items:center}

.theme-choices{display:flex;gap:.65rem;flex-wrap:wrap}
.theme-choices [aria-pressed="true"]{background:var(--lh-accent-soft);border-color:var(--lh-accent);color:var(--lh-accent)}
/* Shared icon-only view switcher. Accessible names are supplied by the buttons. */
.food-view-toggle .lh-button{display:inline-flex;align-items:center;justify-content:center;min-width:37px;width:37px;height:37px;padding:.35rem}
.food-view-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* Shared action semantics. Blue = create/save/selected; purple = edit; red = destructive;
   unqualified .lh-button = neutral navigation or utility action. */
.lh-button-edit{background:var(--lh-edit);border-color:var(--lh-edit);color:#fff}
.lh-button-edit:hover{background:var(--lh-edit-hover);border-color:var(--lh-edit-hover);color:#fff}
.lh-button-danger{background:var(--lh-danger);border-color:var(--lh-danger);color:#fff}
.lh-button-danger:hover{background:var(--lh-danger);border-color:var(--lh-danger);filter:brightness(.85);color:#fff}
/* Don't force 37px height on deliberately multiline or touch-target icon-only controls. */

/* Shared segmented control: selected state uses the standard blue active treatment. */
.lh-segmented-toggle{display:inline-flex;align-items:center;gap:4px;background:var(--lh-panel-soft);padding:3px;border:1px solid var(--lh-border);border-radius:10px}
.lh-segmented-toggle .lh-button{min-width:78px;height:37px;min-height:37px;padding:0 .85rem}
.lh-segmented-toggle .lh-button[aria-pressed="true"]{background:var(--lh-accent-soft);color:var(--lh-accent);border-color:var(--lh-accent)}
