body{font-family:"Arial",sans-serif;background-color:var(--bg)}h1,h2,h3,h4,h5,h6{margin:0}a{text-decoration:none;color:inherit}:root{color-scheme:light;--bg:#f4f4f4;--surface:#fff;--surface-alt:#f2f6fa;--surface-sunken:#fafbfc;--surface-disabled:#f2f2f2;--text:#222;--text-strong:#333;--text-soft:#555;--text-muted:#666;--text-label:#888;--text-faint:#aaa;--border:#ccc;--border-soft:#ddd;--border-faint:#eee;--accent:#1a3a5c;--accent-fill:#1a3a5c;--on-accent:#fff;--danger:#a33;--danger-strong:#b91c1c;--danger-fill:#fef2f2;--banner-warn-bg:#fff7e6;--banner-warn-border:#f0d9a8;--banner-warn-text:#7a5b12;--banner-ok-bg:#e9f6ee;--banner-ok-border:#a9d7b9;--banner-ok-text:#1a5c38;--banner-err-bg:#fbecec;--banner-err-border:#d7a9a9;--glass-icon:#9fadba;--glass-label:#7d8b99;--disabled-fill:#9aa7b5;--tile-shadow:rgba(0,0,0,0.08)}html[data-theme=dark]{color-scheme:dark;--bg:#12161d;--surface:#1a202a;--surface-alt:#232b37;--surface-sunken:#151b23;--surface-disabled:#20262f;--text:#ccd5df;--text-strong:#eef2f7;--text-soft:#aab4c0;--text-muted:#97a2b0;--text-label:#8b96a5;--text-faint:#6f7a89;--border:#37414f;--border-soft:#2c3542;--border-faint:#232b36;--accent:#8db9e6;--accent-fill:#245a8f;--on-accent:#fff;--danger:#e08585;--danger-strong:#e58e8e;--danger-fill:#331f1f;--banner-warn-bg:#2c2617;--banner-warn-border:#4a3f1f;--banner-warn-text:#dcc489;--banner-ok-bg:#16291e;--banner-ok-border:#2c4a37;--banner-ok-text:#8fd0a8;--banner-err-bg:#2c1a1a;--banner-err-border:#4a2c2c;--glass-icon:#7a8b9e;--glass-label:#98a4b2;--disabled-fill:#45505e;--tile-shadow:rgba(0,0,0,0.45)}body{font-family:Arial,sans-serif;margin:0;padding:0;box-sizing:border-box;background:var(--bg);color:var(--text)}.App{max-width:1200px;margin:0 auto;padding:0 16px}.App-header{text-align:center;padding:16px 0 8px}.App-header-top{flex-wrap:wrap;justify-content:space-between;grid-gap:8px 12px;gap:8px 12px}.App-header-top,.theme-switch{display:flex;align-items:center}.theme-switch{grid-gap:6px;gap:6px}.theme-switch button{padding:5px 12px;border:1px solid var(--border);background:var(--surface);border-radius:6px;cursor:pointer;font-size:.85rem;color:var(--text-strong)}.theme-switch button.active{background:var(--accent-fill);color:var(--on-accent);border-color:var(--accent)}.theme-switch .theme-source{padding:5px 8px;border:1px solid var(--border);background:var(--surface);border-radius:6px;font-size:.85rem;color:var(--text-strong);cursor:pointer}.App-title{text-decoration:none;font-size:1.6rem;font-weight:700;color:var(--accent)}.App-main{text-align:center;padding-bottom:40px}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));align-items:stretch;grid-gap:16px;gap:16px;margin-top:24px}.cocktail-tile{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;overflow:hidden;height:100%;display:flex;flex-direction:column;text-align:center;box-shadow:0 1px 3px var(--tile-shadow)}.tile-image,.tile-image-link{display:block}.tile-image{width:100%;aspect-ratio:1/1;object-fit:cover;background:var(--surface)}.tile-image-placeholder{color:var(--text-faint);font-size:1.1rem}.glass-placeholder,.tile-image-placeholder{display:flex;align-items:center;justify-content:center}.glass-placeholder{flex-direction:column;grid-gap:6px;gap:6px;box-sizing:border-box}.glass-placeholder-icon{width:55%;max-width:150px;height:auto;color:var(--glass-icon)}.glass-placeholder-label{color:var(--glass-label);font-size:.8rem;text-align:center;padding:0 8px;line-height:1.3}.tile-glass{display:flex;align-items:center;grid-gap:5px;gap:5px;padding:0 8px 6px;color:var(--glass-label);font-size:.78rem}.tile-glass-icon{width:15px;height:15px;flex-shrink:0;color:var(--glass-icon)}.tile-alcohol-free{align-self:flex-start;margin:0 8px 6px;padding:1px 7px;border:1px solid var(--border);border-radius:999px;font-size:.72rem;letter-spacing:.02em;text-transform:uppercase}.detail-alcohol-free,.tile-alcohol-free{color:var(--text-label)}.alcohol-free-filter{display:inline-flex;align-items:center;grid-gap:6px;gap:6px;font-size:.9rem;cursor:pointer;white-space:nowrap}.tile-title{font-weight:700;color:var(--accent);text-decoration:none;padding:10px 8px 4px}.tile-title:hover{text-decoration:underline}.tile-ingredients{flex:1 0 auto;list-style:disc outside;margin:0;padding:8px 10px 10px 28px;text-align:left;background:var(--surface-alt);border-top:1px solid var(--border-faint)}.tile-ingredients li{margin:2px 0}.tile-ingredient{font-size:.82rem;color:var(--text-soft);text-decoration:none}.tile-ingredient:hover{color:var(--accent);text-decoration:underline}.tile-ingredient-missing{color:var(--danger);border-bottom-color:var(--danger);border-bottom-style:dashed;font-weight:700}.add-form-toggle{margin-top:16px}.add-form-toggle button{padding:8px 14px;font-size:.95rem;border:1px solid var(--accent);background:var(--surface);color:var(--accent);border-radius:6px;cursor:pointer}.add-form{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;padding:16px;margin:16px auto 0;max-width:560px;text-align:left}.add-form h2{margin-top:0;font-size:1.1rem}.add-form input{width:100%;box-sizing:border-box;padding:8px;margin-bottom:8px;border:1px solid var(--border);border-radius:4px;font-size:.95rem}.add-form-field,.add-glass-field{display:flex;flex-direction:column;grid-gap:4px;gap:4px;font-size:.85rem;color:var(--text-soft);margin-bottom:8px}.add-form-field input,.add-form-field select,.add-glass-field select{background:var(--surface)}.add-form-field input,.add-form-field select,.add-form-textarea,.add-glass-field select{width:100%;box-sizing:border-box;padding:8px;border:1px solid var(--border);border-radius:4px;font-size:.95rem}.add-form-textarea{margin-bottom:8px;font-family:inherit;resize:vertical}.add-form-ingredient{display:flex;grid-gap:8px;gap:8px}.add-form-ingredient input{margin-bottom:8px}.add-form-ingredient input:first-child{flex:2 1}.add-form-ingredient input{flex:1 1}.add-form-ingredient button{align-self:flex-start;margin-bottom:8px;padding:8px 10px;border:1px solid var(--border);background:var(--surface);border-radius:4px;cursor:pointer}.add-form-actions{display:flex;grid-gap:8px;gap:8px;justify-content:flex-end}.add-form-actions button{padding:8px 14px;border:none;border-radius:6px;cursor:pointer;background:var(--accent-fill);color:var(--on-accent)}.add-form-actions .add-form-cancel{background:var(--surface);color:var(--accent);border:1px solid var(--accent)}.detail{text-align:left;background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;padding:24px;margin-top:16px}.back-link{display:inline-block;margin-bottom:16px;color:var(--accent);text-decoration:none}.back-link:hover{text-decoration:underline}.detail-header{display:flex;grid-gap:24px;gap:24px;flex-wrap:wrap;align-items:flex-start}.detail-image{width:240px;height:240px;object-fit:cover;background:var(--surface);border:1px solid var(--border-faint);border-radius:8px;flex-shrink:0}.detail-image-placeholder{border-style:dashed}.detail-glass{display:flex;align-items:center;grid-gap:6px;gap:6px}.detail-glass-icon{width:20px;height:20px;flex-shrink:0;color:var(--glass-icon)}.detail-info h1{margin-top:0}.difford-link{display:inline-block;margin-top:8px;font-size:.95rem;color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent)}.difford-link:hover{color:var(--danger);border-bottom-color:var(--danger)}.detail-controls{display:flex;grid-gap:24px;gap:24px;flex-wrap:wrap;align-items:center;margin:20px 0 4px}.mode-switch{display:flex;grid-gap:8px;gap:8px}.mode-switch button{padding:6px 14px;border:1px solid var(--border);background:var(--surface);border-radius:6px;cursor:pointer;font-size:.9rem}.mode-switch button.active{background:var(--accent-fill);color:var(--on-accent);border-color:var(--accent)}.base-control,.servings-control{display:flex;align-items:center;grid-gap:8px;gap:8px;font-size:.95rem}.servings-control input[type=range]{width:140px}.ingredient-table{width:100%;border-collapse:collapse;margin-top:16px;table-layout:fixed}.ingredient-table th{text-align:left;font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-label);padding:6px 8px;border-bottom:2px solid var(--border-faint)}.ingredient-table td.col-amount,.ingredient-table th.col-amount{width:45%;text-align:right}.ingredient-table td{padding:7px 8px;border-bottom:1px solid var(--border-faint);vertical-align:top}.ingredient-name{font-weight:700;color:var(--accent);text-decoration:none}.ingredient-name:hover{text-decoration:underline}.optional-tag{color:var(--text-label);font-weight:400;font-style:italic}.ingredient-amount{color:var(--text-strong);white-space:nowrap}.detail-note{font-size:.85rem;color:var(--text-soft);margin-top:8px}.instructions{margin-top:24px}.instructions h2{font-size:1.1rem}.instructions-text{white-space:pre-wrap}.garnish-text{margin-top:16px;color:var(--text-soft)}.detail-banner{background:var(--banner-warn-bg);border:1px solid var(--banner-warn-border);border-radius:6px;color:var(--banner-warn-text);padding:10px 12px;margin:16px 0 0;font-size:.92rem}.unit-switch{display:flex;grid-gap:6px;gap:6px}.unit-switch button{padding:6px 12px;border:1px solid var(--border);background:var(--surface);border-radius:6px;cursor:pointer;font-size:.9rem}.unit-switch button.active{background:var(--accent-fill);color:var(--on-accent);border-color:var(--accent)}.list-controls{display:flex;flex-wrap:wrap;grid-gap:8px;gap:8px;justify-content:center;align-items:center;margin-top:16px}.search-box{flex:1 1 220px;max-width:380px}.list-controls select,.search-box{padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:.95rem}.list-controls select{background:var(--surface)}.sort-button{padding:8px 12px;border:1px solid var(--accent);color:var(--accent);border-radius:6px;font-size:.9rem}.clear-filters,.sort-button{background:var(--surface);cursor:pointer}.clear-filters{margin-top:10px;padding:6px 12px;border:1px solid var(--border);border-radius:6px;color:var(--text-soft);font-size:.85rem}.result-count{color:var(--text-muted);font-size:.9rem;margin:12px 0 0}.error-message,.retry-button{color:var(--danger)}.retry-button{padding:8px 16px;border:1px solid var(--danger);background:var(--surface);border-radius:6px;cursor:pointer}.empty-state{margin-top:32px;color:var(--text-muted)}.empty-state button{padding:8px 14px;border:1px solid var(--accent);background:var(--surface);color:var(--accent);border-radius:6px;cursor:pointer}.ingredient-count{color:var(--text-muted)}.catalogue-intro{max-width:60ch}.catalogue-intro,.recipe-credit{color:var(--text-muted);font-size:.9rem}.recipe-credit{margin-top:24px}.admin-table{font-size:.9rem}.admin-table td{word-break:break-word}.notice-message{color:var(--text-strong);font-size:.9rem;margin:12px 0 0}.access-cell{white-space:nowrap}.access-toggle{display:inline-flex;align-items:center;grid-gap:6px;gap:6px;cursor:pointer}.access-toggle input:disabled{cursor:default}.access-label{color:var(--text-muted);font-size:.85rem}.invite-panel{margin-top:40px;padding-top:24px;border-top:1px solid var(--border-soft);max-width:720px}.invite-panel h2{margin-top:0}.invite-code{display:flex;grid-gap:8px;gap:8px;margin:12px 0 20px}.invite-code input{flex:1 1;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface-sunken);color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.App-nav{display:flex;justify-content:center;grid-gap:20px;gap:20px;margin-top:8px}.App-nav a{color:var(--accent);text-decoration:none;font-size:.95rem}.App-nav a:hover{text-decoration:underline}.horde-list{list-style:none;margin:16px auto 0;padding:0;max-width:640px}.horde-row{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;padding:12px 16px;margin-bottom:8px;display:flex;align-items:center;grid-gap:12px;gap:12px}.horde-row-name{flex:1 1;color:var(--accent);text-decoration:none;font-weight:700;text-align:left}.horde-row-name:hover{text-decoration:underline}.horde-row-count{color:var(--text-label);font-size:.9rem;white-space:nowrap}.horde-row-actions{display:flex;grid-gap:6px;gap:6px}.horde-row-actions button{padding:5px 10px;border:1px solid var(--border);background:var(--surface);border-radius:6px;cursor:pointer;font-size:.8rem;color:var(--text-strong)}.horde-row-actions button:hover:not(:disabled){background:var(--surface-alt)}.horde-row-actions button.danger{color:var(--danger);border-color:var(--danger)}.horde-title-actions{margin-top:8px}.add-panel{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;padding:12px 16px;margin:0 auto 12px;display:flex;flex-wrap:wrap;grid-gap:8px;gap:8px;align-items:center;max-width:780px}.add-search{flex:2 1 220px}.add-panel select,.add-search{min-width:0;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:.95rem}.add-panel select{flex:1 1 140px;background:var(--surface)}.add-empty{color:var(--text-label);font-size:.85rem;margin:8px 0 0}#section-ingredient-filter .add-search{flex-grow:0;flex-basis:48%}.stock-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:10px;gap:10px;margin-top:4px}.stock-cell{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;padding:8px 10px;text-align:left}.stock-cell label{display:block;font-size:.78rem;color:var(--text-label);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}.stock-cell select{width:100%;padding:7px 8px;border:1px solid var(--border);border-radius:6px;font-size:.9rem;background:var(--surface)}.stock-cell select:disabled{background:var(--surface-disabled);color:var(--text-faint)}.add-panel button{padding:8px 14px;border:none;border-radius:6px;background:var(--accent-fill);color:var(--on-accent);font-size:.95rem;cursor:pointer}.add-panel button:disabled{background:var(--disabled-fill);cursor:default}.section-title{font-size:1.1rem;margin:28px 0 8px}.horde-groups,.ingredients-section,.section-title{text-align:left}.horde-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:12px;gap:12px}.horde-group{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;padding:12px}.horde-group h3{margin:0 0 8px;font-size:.82rem;color:var(--text-label);text-transform:uppercase;letter-spacing:.04em}.horde-group ul{list-style:none;margin:0;padding:0}.horde-group li{display:flex;grid-gap:8px;gap:8px;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid var(--border-faint)}.horde-group li:last-child{border-bottom:none}.horde-ingredient-link{color:var(--accent);text-decoration:none;font-size:.92rem}.horde-ingredient-link:hover{text-decoration:underline}.horde-remove{border:none;background:none;color:var(--danger);cursor:pointer;font-size:1.1rem;line-height:1;padding:2px 4px}.horde-remove:hover{text-decoration:underline}.menu-section-head{margin-top:6px}.menu-create-link{display:inline-block;padding:6px 14px;border:1px solid var(--accent);background:var(--surface);border-radius:6px;color:var(--accent);text-decoration:none;font-size:.85rem}.menu-create-link:hover{background:var(--surface-alt)}.maintenance-toolbar{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;padding:12px 16px;margin:16px auto 0;display:flex;grid-gap:8px;gap:8px;align-items:center;justify-content:center;max-width:560px}.maintenance-toolbar select{padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:.95rem}.maintenance-toolbar button{padding:8px 14px;border:1px solid var(--border);background:var(--surface);border-radius:6px;cursor:pointer;font-size:.9rem;color:var(--text-strong)}.maintenance-toolbar button:hover:not(:disabled){background:var(--surface-alt)}.maintenance-toolbar button:disabled{opacity:.5;cursor:default}.menu-list{list-style:none;margin:16px auto 0;padding:0;max-width:720px}.menu-row{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;padding:12px 16px;margin-bottom:8px;display:flex;align-items:center;grid-gap:12px;gap:12px}.menu-row-name{flex:1 1;color:var(--accent);text-decoration:none;font-weight:700;text-align:left}.menu-row-name:hover{text-decoration:underline}.menu-row-meta{display:flex;flex-direction:column;align-items:flex-end;grid-gap:2px;gap:2px;white-space:nowrap}.menu-row-horde{color:var(--text-soft);text-decoration:none;font-size:.85rem}.menu-row-horde:hover{text-decoration:underline}.menu-row-count{color:var(--text-label);font-size:.85rem}.menu-row-edit{padding:5px 10px;border:1px solid var(--border);background:var(--surface);border-radius:6px;font-size:.8rem;color:var(--text-strong);text-decoration:none}.menu-row-edit:hover{background:var(--surface-alt)}.menu-horde-list{list-style:none;margin:16px auto 0;padding:0;max-width:720px}.menu-horde-row{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;padding:10px 16px;margin-bottom:8px;display:flex;align-items:center;grid-gap:12px;gap:12px}.menu-horde-name{flex:1 1;color:var(--accent);text-decoration:none;font-weight:700;text-align:left}.menu-horde-name:hover{text-decoration:underline}.menu-horde-count{color:var(--text-label);font-size:.85rem;white-space:nowrap}.menu-horde-edit{padding:4px 10px;border:1px solid var(--border);background:var(--surface);border-radius:6px;font-size:.78rem;color:var(--text-strong);text-decoration:none}.menu-horde-edit:hover{background:var(--surface-alt)}.menu-detail{max-width:720px;margin:0 auto}.menu-detail-header{margin:8px 0 4px}.menu-detail-header h1{margin-bottom:2px}.menu-detail-meta{color:var(--text-label);font-size:.9rem}.menu-detail-meta a{color:var(--accent)}.menu-cocktails{margin-top:20px}.menu-cocktail{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;padding:12px;margin-bottom:10px;display:flex;grid-gap:14px;gap:14px;align-items:center;text-align:left}.menu-cocktail-image{width:64px;height:64px;flex:0 0 64px;object-fit:cover;background:var(--surface);border:1px solid var(--border-faint);border-radius:6px;text-align:center}.menu-cocktail-image-placeholder{display:flex;align-items:center;justify-content:center;color:var(--text-faint);font-size:.7rem;overflow:hidden}.menu-cocktail-body{flex:1 1;min-width:0}.menu-cocktail-title{display:flex;align-items:baseline;grid-gap:6px;gap:6px;margin-bottom:6px}.menu-number{color:var(--text-label);font-size:.85rem}.menu-cocktail-name{color:var(--accent);text-decoration:none;font-weight:700;font-size:1.05rem}.menu-cocktail-name:hover{text-decoration:underline}.menu-chips{display:flex;flex-wrap:wrap;grid-gap:6px;gap:6px}.menu-chips-empty{color:var(--text-faint);font-size:.85rem}.menu-chip{border:1px solid var(--border);color:var(--accent);border-radius:12px;padding:2px 10px;font-size:.8rem;text-decoration:none}.menu-chip,.menu-chip:hover{background:var(--surface-alt)}.picked-chips{display:flex;flex-wrap:wrap;grid-gap:6px;gap:6px;justify-content:center;margin-top:10px}.picked-chip{display:inline-flex;align-items:center;grid-gap:6px;gap:6px;background:var(--accent-fill);color:var(--on-accent);border:1px solid var(--accent);border-radius:12px;padding:2px 6px 2px 10px;font-size:.8rem}.picked-chip button{background:transparent;border:none;color:inherit;cursor:pointer;font-size:.9rem;line-height:1;padding:0 2px}.menu-editor{max-width:720px;margin:0 auto}.menu-editor-head{display:flex;align-items:center;justify-content:center;grid-gap:12px;gap:12px;margin:8px 0 0}.menu-editor-head h1{margin:0}.menu-save-status{font-size:.85rem;border:1px solid transparent;border-radius:6px;padding:4px 10px;white-space:nowrap}.menu-save-status-saving{color:var(--text-soft);background:var(--surface);border-color:var(--border)}.menu-save-status-saved{color:var(--banner-ok-text);background:var(--banner-ok-bg);border-color:var(--banner-ok-border)}.menu-save-status-error{color:var(--danger);background:var(--banner-err-bg);border-color:var(--banner-err-border)}.menu-name-form{text-align:left;margin-top:16px}.menu-name-form input{margin-top:8px}.menu-editor .add-form{text-align:left;margin-top:16px}.menu-picks{list-style:none;margin:16px 0 0;padding:0;text-align:left}.menu-pick{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;padding:10px 12px;margin-bottom:8px;display:flex;align-items:center;grid-gap:12px;gap:12px}.menu-pick-order{display:flex;flex-direction:column;grid-gap:4px;gap:4px}.menu-pick-order button{width:26px;height:26px;border:1px solid var(--border);background:var(--surface);border-radius:6px;cursor:pointer;font-size:.8rem;color:var(--text-strong)}.menu-pick-order button:hover:not(:disabled){background:var(--surface-alt)}.menu-pick-order button:disabled{opacity:.4;cursor:default}.menu-pick-body{flex:1 1;min-width:0}.menu-pick-name{display:inline-block;color:var(--accent);text-decoration:none;font-weight:700;margin:4px 0 6px}.menu-pick-name:hover{text-decoration:underline}.menu-pick-remove{flex:0 0 auto}.menu-choices{list-style:none;margin:16px 0 0;padding:0;text-align:left}.menu-choice{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;padding:10px 12px;margin-bottom:8px;display:flex;align-items:center;grid-gap:12px;gap:12px}.menu-choice-image{width:48px;height:48px;flex:0 0 48px;object-fit:cover;background:var(--surface);border:1px solid var(--border-faint);border-radius:6px}.menu-choice-image-placeholder{display:flex;align-items:center;justify-content:center;color:var(--text-faint);font-size:.6rem;overflow:hidden}.menu-choice-body{flex:1 1;min-width:0}.menu-choice-name{display:inline-block;color:var(--accent);text-decoration:none;font-weight:700;margin-bottom:6px}.menu-choice-name:hover{text-decoration:underline}.menu-choice-add{flex:0 0 auto;padding:6px 12px;border:1px solid var(--accent);background:var(--surface);border-radius:6px;cursor:pointer;font-size:.85rem;color:var(--accent)}.menu-choice-add:hover{background:var(--surface-alt)}.suggestion-list{list-style:none;margin:16px auto 0;padding:0;max-width:720px;text-align:left}.suggestion-row{background:var(--surface);border:1px solid var(--border-soft);border-radius:8px;margin-bottom:8px;overflow:hidden}.suggestion-head{width:100%;display:flex;align-items:baseline;grid-gap:10px;gap:10px;padding:12px 16px;border:none;background:none;cursor:pointer;font-size:.95rem;color:var(--text);text-align:left}.suggestion-head:hover{background:var(--surface-alt)}.suggestion-name{font-weight:700;color:var(--accent)}.suggestion-category{flex:1 1;color:var(--text-label);font-size:.82rem}.suggestion-count{white-space:nowrap;background:var(--surface-alt);border:1px solid var(--border);color:var(--accent);border-radius:12px;padding:2px 10px;font-size:.82rem}.suggestion-caret{color:var(--text-label);font-size:.8rem}.suggestion-panel{padding:4px 16px 16px;border-top:1px solid var(--border-faint)}.suggestion-hint{color:var(--text-label);font-size:.85rem;margin:10px 0 0}.section-nav{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;grid-gap:6px;gap:6px;margin:12px auto 4px;max-width:820px}.section-nav-label{color:var(--text-label);font-size:.85rem;margin-right:2px}.section-nav-link{padding:4px 12px;border:1px solid var(--border);background:var(--surface);border-radius:20px;cursor:pointer;font-size:.8rem;color:var(--accent)}.section-nav-link:hover{background:var(--surface-alt)}.collapsible-section{margin-top:24px;scroll-margin-top:16px}.collapsible-head{display:flex;align-items:center;justify-content:center;grid-gap:10px;gap:10px}.collapsible-head .section-title{margin:0;font-size:1.1rem}.collapsible-toggle{display:inline-flex;align-items:center;grid-gap:8px;gap:8px;padding:0;border:none;background:none;cursor:pointer;font:inherit;color:inherit}.collapsible-toggle .collapsible-label{font-size:1.1rem;font-weight:700}.collapsible-toggle:hover .collapsible-label{text-decoration:underline;text-underline-offset:4px}.collapsible-caret{color:var(--text-label);font-size:.8rem;width:1em;display:inline-block}.collapsible-body{margin-top:4px}.pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;grid-gap:8px;gap:8px;margin:20px 0 8px}.pagination-status{color:var(--text-label);font-size:.8rem}.pagination-buttons{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;grid-gap:6px;gap:6px}.pagination-button{min-width:32px;padding:4px 10px;border:1px solid var(--border);background:var(--surface);border-radius:20px;cursor:pointer;font-family:inherit;font-size:.8rem;color:var(--accent)}.pagination-button:hover:not(:disabled){background:var(--surface-alt)}.pagination-button.active{background:var(--accent-fill);border-color:var(--accent);color:var(--on-accent)}.pagination-button:disabled{opacity:.45;cursor:default}.pagination-gap{padding:0 2px;color:var(--text-label);font-size:.8rem}.add-group-select{width:100%;box-sizing:border-box;margin-bottom:8px;padding:8px;border:1px solid var(--border);border-radius:4px;font-size:.95rem;background:var(--surface)}.add-group{border:1px solid var(--border-soft);border-radius:6px;padding:10px;margin-bottom:12px;background:var(--surface-sunken)}.add-group-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.add-group-title{font-weight:600;font-size:.95rem;color:var(--accent)}.add-group-remove{padding:4px 8px;border:1px solid var(--border);background:var(--surface);border-radius:4px;cursor:pointer;font-size:.8rem}.add-form-ingredient .add-ingredient-name{flex:2 1;padding-top:8px;overflow-wrap:anywhere}.add-form-ingredient .add-ingredient-measure{flex:1 1;padding-top:8px;color:var(--text-muted)}.add-form-ingredient .add-row-optional{display:flex;align-items:center;grid-gap:4px;gap:4px;padding-top:8px;font-size:.8rem;color:var(--text-soft);white-space:nowrap;cursor:pointer}.add-form-ingredient .add-row-optional input{flex:none;width:auto;margin-bottom:0}.add-ingredient-form{display:flex;grid-gap:8px;gap:8px;margin-top:4px}.add-ingredient-form input{flex:1 1;margin-bottom:0}.add-ingredient-form button{align-self:flex-start;padding:8px 12px;border:1px solid var(--border);background:var(--surface);border-radius:4px;cursor:pointer}.add-ingredient-form button:disabled{opacity:.5;cursor:not-allowed}.add-group-head .add-group-remove{margin-bottom:0}.ingredient-group-head td{font-weight:600;color:var(--accent);background:var(--surface-alt);letter-spacing:.02em}.add-ingredient-select{flex:2 1;padding:8px;border:1px solid var(--border);border-radius:4px;font-size:.95rem;background:var(--surface)}.add-group-empty{flex:2 1;padding:8px 0;color:var(--text-label);font-size:.9rem}.delete-button{padding:8px 14px;border:1px solid var(--danger-strong);background:var(--surface);color:var(--danger-strong);border-radius:6px;cursor:pointer;font-size:.9rem}.delete-button:hover{background:var(--danger-fill)}.detail-actions{display:flex;grid-gap:8px;gap:8px;align-items:center}.edit-button{display:inline-block;padding:8px 14px;border:1px solid var(--accent);background:var(--surface);color:var(--accent);border-radius:6px;cursor:pointer;font-size:.9rem;text-decoration:none}.edit-button:hover{background:var(--surface-alt)}.add-new-ingredient-toggle{display:block;margin:4px 0 8px auto;padding:6px 10px;border:1px dashed var(--accent);background:var(--surface);color:var(--accent);border-radius:6px;cursor:pointer;font-size:.85rem}.add-new-ingredient{border:1px solid var(--border-soft);border-radius:6px;padding:10px;margin-bottom:12px;background:var(--surface-sunken)}.add-new-ingredient-head{font-weight:600;font-size:.9rem;color:var(--accent);margin-bottom:8px}.add-new-ingredient .add-form-actions button:first-child{background:var(--surface);color:var(--accent);border:1px solid var(--border)}.auth-nav{display:inline-flex;align-items:center;grid-gap:10px;gap:10px;margin-left:auto}.auth-nav .auth-email{font-size:.85rem;color:var(--text-soft);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-nav .auth-logout{padding:4px 10px;font-size:.85rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text-strong);cursor:pointer}.auth-page{max-width:420px;margin:40px auto;padding:24px;background:var(--surface);border:1px solid var(--border-soft);border-radius:10px}.auth-page h1{margin-top:0}.auth-hint{color:var(--text-muted);font-size:.9rem}.auth-form{display:flex;flex-direction:column;grid-gap:6px;gap:6px}.auth-form label{font-size:.85rem;color:var(--text-label);margin-top:8px}.auth-form input{padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface-sunken);color:var(--text)}.auth-form button,.auth-secondary{margin-top:16px;padding:9px 14px;border:none;border-radius:6px;background:var(--accent-fill);color:#fff;font-weight:600;cursor:pointer}.auth-form button:disabled{opacity:.6;cursor:default}.auth-alternative{margin-top:20px;padding-top:16px;border-top:1px solid var(--border-soft)}.auth-alternative .auth-secondary{margin-top:8px}.passkeys{margin-top:28px;padding-top:16px;border-top:1px solid var(--border-soft)}.passkeys h2{margin:0 0 4px;font-size:1.1rem}.passkey-list{list-style:none;margin:12px 0;padding:0;flex-direction:column}.passkey-list,.passkey-list li{display:flex;grid-gap:10px;gap:10px}.passkey-list li{flex-wrap:wrap;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid var(--border-soft);border-radius:8px;background:var(--surface-sunken)}.passkey-label{display:flex;flex-direction:column;grid-gap:2px;gap:2px}.passkey-meta{color:var(--text-muted);font-size:.8rem}.passkey-actions{display:inline-flex;flex-wrap:wrap;align-items:center;grid-gap:6px;gap:6px}.passkey-add{margin-top:8px}.inline-edit{display:inline-flex;align-items:center;flex-wrap:wrap;justify-content:center;grid-gap:6px;gap:6px}.inline-edit input{padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface-sunken);color:var(--text);font-size:.9rem;min-width:12rem}.confirm-button{display:inline-flex;align-items:center;flex-wrap:wrap;justify-content:center;grid-gap:6px;gap:6px}.confirm-button-prompt,.horde-updating,.list-updating{color:var(--text-muted);font-size:.85rem}.horde-updating{align-self:center}@media (max-width:640px){.App-header-top{flex-direction:column;justify-content:center}.App-nav{flex-wrap:wrap;grid-gap:12px;gap:12px}.tile-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.stock-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.add-panel>*,.list-controls>*{flex:1 1 100%;max-width:none}.search-box{max-width:none}.collapsible-head{flex-wrap:wrap}}.credits-page{max-width:760px;margin:0 auto;text-align:left}.credits-intro{color:var(--text-label)}.credit{margin:24px 0;padding:16px 18px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.credit h2{margin:0 0 6px;font-size:1.05rem}.credit-count{color:var(--text-label);font-weight:400}.credit-attribution{margin:0 0 8px;color:var(--text-label)}.credit-link{margin:0 0 10px;overflow-wrap:anywhere}.credit-notice{margin:0;font-family:inherit;font-size:.85rem;line-height:1.5;color:var(--text-label);white-space:pre-wrap}.credit-notice-missing{font-style:italic}.credit-sources{margin:12px 0 0;padding-left:18px;color:var(--text-label);font-size:.85rem}.credit-sources li{margin:3px 0}:root{--cg-1:#2f6fb0;--cg-2:#b5622f;--cg-3:#3f8a5a;--cg-4:#8a4f9e;--cg-5:#b03f5f;--cg-6:#6b7a2f;--cg-7:#2f8a8a;--cg-8:#8a6a2f}html[data-theme=dark]{--cg-1:#6ba8e0;--cg-2:#e0a06b;--cg-3:#6fc48f;--cg-4:#c08fd8;--cg-5:#e08099;--cg-6:#b5c46b;--cg-7:#6cc4c4;--cg-8:#d0b06b}.cg-1{--cg:var(--cg-1)}.cg-2{--cg:var(--cg-2)}.cg-3{--cg:var(--cg-3)}.cg-4{--cg:var(--cg-4)}.cg-5{--cg:var(--cg-5)}.cg-6{--cg:var(--cg-6)}.cg-7{--cg:var(--cg-7)}.cg-8{--cg:var(--cg-8)}.list-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;grid-gap:10px;gap:10px;margin-top:12px}.list-toolbar .result-count{margin:0}.view-switch{display:inline-flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;background:var(--surface)}.view-switch button{padding:5px 13px;border:0;background:transparent;color:var(--text-soft);font-size:.85rem;cursor:pointer}.view-switch button+button{border-left:1px solid var(--border)}.view-switch button[aria-pressed=true]{background:var(--accent-fill);color:var(--on-accent)}.cocktail-graph{margin-top:16px;text-align:left}.graph-toolbar{display:flex;align-items:center;flex-wrap:wrap;grid-gap:16px;gap:16px;color:var(--text-muted);font-size:.85rem}.graph-control{display:inline-flex;align-items:center;grid-gap:6px;gap:6px}.graph-control select{padding:4px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font-size:.85rem}.graph-canvas{display:block;width:100%;max-width:1000px;height:auto;max-height:68vh;margin:10px auto 0;background:var(--surface-sunken);border:1px solid var(--border-faint);border-radius:10px}.graph-hull{fill:none;stroke:var(--cg,var(--border));stroke-width:8;stroke-linecap:round;opacity:.35}.graph-edge{stroke:var(--border);stroke-width:1.2;opacity:.55}.graph-edge.shared{stroke:var(--text-label);opacity:.85}.graph-node{cursor:pointer;outline:none}.graph-node .graph-dot{stroke:var(--surface);stroke-width:2}.graph-node.recipe .graph-dot{fill:var(--cg,var(--text-label))}.graph-node.ingredient .graph-dot{fill:var(--surface-alt);stroke:var(--border)}html[data-theme=dark] .graph-node.ingredient .graph-dot{fill:#2a3340;stroke:#5d6b7c}.graph-label{font-size:11px;fill:var(--text-soft);-webkit-user-select:none;user-select:none;pointer-events:none;paint-order:stroke;stroke:var(--surface-sunken);stroke-width:3px;stroke-linejoin:round}.graph-node.recipe .graph-label{fill:var(--text-strong);font-weight:600}.graph-node:focus-visible .graph-dot,.graph-node:hover .graph-dot{stroke:var(--accent);stroke-width:3}.graph-node.dimmed{opacity:.18}.graph-swatch{display:inline-block;width:11px;height:11px;border-radius:3px;background:var(--cg,var(--border))}.graph-legend{display:flex;flex-wrap:wrap;grid-gap:8px 18px;gap:8px 18px;margin:12px 0 0;padding:0;list-style:none;font-size:.85rem;color:var(--text-soft)}.graph-legend li{display:inline-flex;align-items:center;grid-gap:7px;gap:7px}.graph-legend-count{color:var(--text-faint)}.graph-empty{margin-top:16px;color:var(--text-muted)}.graph-caption{margin:10px 0 0;color:var(--text-muted);font-size:.85rem}.graph-swatch-single{background:transparent;border:1px solid var(--border)}