:root{--primary-color:#2c3e50;--secondary-color:#7f8c8d;--accent-color:#a61816;--accent-hover:#8a1412;--success-color:#39833c;--success-hover:#2d6930;--danger-color:#cf382d;--danger-hover:#aa2e25;--info-color:#2196f3;--warn-color:#ffc107;--text-dark:#333;--text-medium:#555;--text-light:#777;--bg-light:#f5f5f5;--bg-white:#fff;--bg-light-hover:#e9ecef;--border-light:#ddd;--border-lighter:#eee;--space-xs:.25rem;--space-sm:.5rem;--space-md:.75rem;--space-lg:1rem;--space-xl:1.5rem;--touch-target-min:44px;--touch-target-comfortable:48px;--form-input-height-min:44px;--form-input-padding:.75rem 1rem;--form-input-font-size:16px;--mobile-padding:16px;--mobile-padding-comfortable:20px;--line-height-tight:1.2;--line-height-normal:1.4;--line-height-relaxed:1.6;--focus-outline-width:3px;--focus-outline-color:var(--accent-color);--focus-outline-offset:2px;--text-xs:.8125rem;--text-sm:.875rem;--text-md:.9375rem;--text-lg:1rem;--text-xl:1.125rem;--text-xxl:1.25rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-round:50%;--shadow-sm:0 2px 4px #0000001a;--shadow-md:0 2px 8px #00000014;--shadow-lg:0 5px 15px #0003}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:var(--text-md);line-height:var(--line-height-normal);color:var(--text-dark);background-color:var(--bg-light)}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:0}.section-title h2,.section-title h3,.stat-card h3,.results-section h3,.modal-content h3{color:var(--primary-color);line-height:var(--line-height-normal)}.results-section h3{border-bottom:2px solid var(--border-lighter);padding-bottom:var(--space-xs);margin-bottom:var(--space-md)}.modal-content h3{margin-top:0;margin-bottom:var(--space-md);font-size:var(--text-lg);font-family:Georgia,Times New Roman,Times,serif;line-height:var(--line-height-normal)}.recipes-list h3{font-size:var(--text-xxl);color:var(--primary-color);line-height:var(--line-height-normal);margin-bottom:1.5rem}.ingredients-section h2{font-size:var(--text-xl);line-height:var(--line-height-tight)}.ingredients-section h3{font-size:var(--text-lg);line-height:var(--line-height-normal)}header{background-color:var(--primary-color);color:#fff;padding:var(--space-md) var(--space-xl);box-shadow:var(--shadow-md)}.header-container{justify-content:space-between;align-items:center;gap:var(--space-lg);max-width:1400px;margin:0 auto;display:flex}.site-title{font-size:1.75rem;font-weight:600;line-height:var(--line-height-tight);margin:0}.site-title .title-line{display:inline}#header-nav-container{align-items:center;gap:var(--space-md);display:flex}.nav-mobile-bottom{background-color:var(--bg-white);border-top:1px solid var(--border-light);z-index:1000;display:none;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 10px #0000001a}.nav-mobile-bottom .nav-items{padding:var(--space-xs) 0;justify-content:space-around;align-items:center;margin:0;list-style:none;display:flex}.nav-mobile-bottom .nav-item{text-align:center;flex:1}.nav-mobile-bottom .nav-item a{justify-content:center;align-items:center;gap:var(--space-xs);padding:var(--space-xs);min-height:var(--touch-target-min);color:var(--text-medium);font-size:var(--text-xs);flex-direction:column;text-decoration:none;transition:color .2s,transform .15s;display:flex}.nav-mobile-bottom .nav-item a:hover{color:var(--accent-color);transform:translateY(-2px)}.nav-mobile-bottom .nav-item a:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.nav-mobile-bottom .nav-item.nav-active a{color:var(--accent-color);font-weight:600}.nav-mobile-bottom .nav-icon{font-size:1.5rem;line-height:1}.nav-mobile-bottom .nav-label{font-size:var(--text-xs);line-height:var(--line-height-tight)}.nav-mobile-menu-overlay{z-index:1050;opacity:0;visibility:hidden;background-color:#00000080;transition:opacity .3s,visibility .3s;position:fixed;inset:0}.nav-mobile-menu-overlay.nav-menu-open{opacity:1;visibility:visible}.nav-mobile-menu{background-color:var(--bg-white);z-index:1100;width:80%;max-width:320px;transition:right .3s;position:fixed;top:0;bottom:0;right:-100%;overflow-y:auto;box-shadow:-2px 0 10px #0000001a}.nav-mobile-menu.nav-menu-open{right:0}.nav-mobile-menu-header{padding:var(--space-lg);border-bottom:1px solid var(--border-light);background-color:var(--primary-color);color:#fff;justify-content:space-between;align-items:center;display:flex}.nav-mobile-menu-header h2{font-size:var(--text-lg);line-height:var(--line-height-tight);margin:0}.nav-mobile-menu-close{color:#fff;cursor:pointer;min-width:var(--touch-target-min);min-height:var(--touch-target-min);background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:2rem;line-height:1;display:flex}.nav-mobile-menu-close:hover{opacity:.8}.nav-mobile-menu-close:focus{outline:var(--focus-outline-width) solid white;outline-offset:var(--focus-outline-offset)}.nav-mobile-menu .nav-items{margin:0;padding:0;list-style:none}.nav-mobile-menu .nav-item{border-bottom:1px solid var(--border-lighter)}.nav-mobile-menu .nav-item a{align-items:center;gap:var(--space-md);padding:var(--space-lg);color:var(--text-dark);min-height:var(--touch-target-comfortable);text-decoration:none;transition:background-color .2s,color .2s;display:flex}.nav-mobile-menu .nav-item a:hover{background-color:var(--bg-light);color:var(--accent-color)}.nav-mobile-menu .nav-item a:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:calc(var(--focus-outline-offset) * -1)}.nav-mobile-menu .nav-item.nav-active a{color:var(--accent-color);border-left:4px solid var(--accent-color);background-color:#a618161a;font-weight:600}.nav-mobile-menu .nav-icon{text-align:center;width:1.5rem;font-size:1.5rem;line-height:1}.nav-mobile-menu .nav-label{font-size:var(--text-md);line-height:var(--line-height-normal);flex:1}.nav-mobile-menu .nav-section-divider{padding:var(--space-md) var(--space-lg);font-size:var(--text-xs);text-transform:uppercase;color:var(--text-light);background-color:var(--bg-light);border-bottom:1px solid var(--border-lighter);font-weight:600}.nav-hamburger-btn{color:#fff;cursor:pointer;padding:var(--space-xs);min-width:var(--touch-target-min);min-height:var(--touch-target-min);background:0 0;border:none;font-size:1.8rem;line-height:1;display:none}.nav-hamburger-btn:hover{opacity:.8}.nav-hamburger-btn:focus{outline:var(--focus-outline-width) solid white;outline-offset:var(--focus-outline-offset)}.nav-desktop{align-items:center;gap:var(--space-sm);display:flex}.nav-desktop .nav-items{align-items:center;gap:var(--space-sm);margin:0;padding:0;list-style:none;display:flex}.nav-desktop .nav-item{position:relative}.nav-desktop .nav-item a{align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);color:#fff;border-radius:var(--radius-sm);min-height:var(--touch-target-min);font-size:var(--text-sm);line-height:var(--line-height-normal);text-decoration:none;transition:background-color .2s,transform .15s;display:flex}.nav-desktop .nav-item a:hover{background-color:#ffffff1a;transform:translateY(-1px)}.nav-desktop .nav-item a:focus{outline:var(--focus-outline-width) solid white;outline-offset:var(--focus-outline-offset)}.nav-desktop .nav-item.nav-active a{background-color:#fff3;border-bottom:2px solid #fff;font-weight:600}.nav-desktop .nav-icon{font-size:1.2rem;line-height:1}.nav-desktop .nav-label{font-size:var(--text-sm);line-height:var(--line-height-normal)}.nav-desktop .nav-dropdown{position:relative}.nav-desktop .nav-dropdown-toggle{cursor:pointer}.nav-desktop .nav-dropdown-menu{background-color:var(--bg-white);border:1px solid var(--border-light);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;z-index:100;min-width:200px;padding:var(--space-xs) 0;margin:var(--space-xs) 0 0;list-style:none;transition:opacity .2s,visibility .2s,transform .2s;position:absolute;top:100%;right:0;transform:translateY(-10px)}.nav-desktop .nav-dropdown:hover .nav-dropdown-menu,.nav-desktop .nav-dropdown-toggle:focus+.nav-dropdown-menu,.nav-desktop .nav-dropdown-menu:hover{opacity:1;visibility:visible;transform:translateY(0)}.nav-desktop .nav-dropdown-menu .nav-item{border:none}.nav-desktop .nav-dropdown-menu .nav-item a{color:var(--text-dark);padding:var(--space-sm) var(--space-lg);border-radius:0;justify-content:flex-start}.nav-desktop .nav-dropdown-menu .nav-item a:hover{background-color:var(--bg-light);color:var(--accent-color);transform:none}.nav-desktop .nav-dropdown-menu .nav-item.nav-active a{color:var(--accent-color);border-bottom:none;border-left:3px solid var(--accent-color);background-color:#a618161a;font-weight:600}.nav-item.nav-disabled a{opacity:.5;cursor:not-allowed;pointer-events:none}@keyframes navSlideIn{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes navFadeIn{0%{opacity:0}to{opacity:1}}main{max-width:1200px;margin:var(--space-xl) auto;padding:0 var(--space-xl)}footer{text-align:center;padding:var(--space-md);background-color:var(--primary-color);color:#fff;margin-top:var(--space-xl)}.stats-footer{margin:var(--space-xl) 0;padding:var(--space-md);text-align:center;font-size:var(--text-sm);color:#6c757d;box-shadow:none;background-color:#0000}.stats-text{font-style:italic}.stats-text span{color:var(--accent-color);font-weight:700}section,.card-container{background-color:var(--bg-white);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md);box-shadow:var(--shadow-sm)}.section-title{padding:var(--space-md) var(--space-md)}.ingredient-card,.recipe-card{background-color:var(--bg-white);border:1px solid var(--border-light);border-radius:var(--radius-md);padding:var(--space-md);box-shadow:var(--shadow-md);transition:box-shadow .3s}.ingredient-card:hover,.recipe-card:hover{box-shadow:0 4px 12px #0000001f}.ingredient-card h4,.recipe-card h4{margin-bottom:var(--space-xs);font-size:var(--text-lg);padding-bottom:var(--space-xs);color:var(--primary-color);border-bottom:1px solid #f0f0f0;font-weight:600}.recipe-card h4.recipe-title{text-align:center;font-family:Georgia,Times New Roman,Times,serif;line-height:var(--line-height-tight);position:relative}.recipe-card h4.recipe-title:after{content:"";background-color:var(--accent-color);width:40%;height:2px;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.ingredient-card p,.recipe-card p,.ingredient-description{color:var(--text-medium);margin-bottom:var(--space-sm);font-family:Georgia,Times New Roman,Times,serif;font-style:italic}.card-actions{justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid #f0f0f0;display:flex}.ingredient-card .card-actions{border-top:none;flex-shrink:0;margin-top:0;padding-top:0}.recipe-card-compact-link{cursor:pointer}.recipe-card-cta{margin-top:var(--space-sm);font-size:var(--text-xs);text-align:right;text-transform:uppercase;letter-spacing:.03em;color:var(--accent-color);font-weight:600}.recipe-card .recipe-meta{gap:var(--space-xs);margin-bottom:var(--space-xs);flex-direction:column;display:flex}.recipe-card .recipe-rating{text-align:left}.recipe-card .recipe-tags{align-items:center;gap:var(--space-sm);width:100%;min-width:0;display:flex}.recipe-card .recipe-description{margin-bottom:var(--space-sm);font-size:var(--text-sm)}.recipe-card .ingredients,.recipe-card .instructions,.recipe-card .recipe-source{margin:var(--space-xs) 0;font-family:Georgia,Times New Roman,Times,serif}.recipe-card .ingredients h5,.recipe-card .instructions h5{font-size:var(--text-md);color:var(--accent-color);margin-bottom:var(--space-xs);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-weight:600;line-height:var(--line-height-tight)}.recipe-card .ingredients ul{margin-top:var(--space-xs);padding-left:1.5rem;list-style-type:disc}.recipe-card .ingredients ul li{line-height:var(--line-height-tight);border-bottom:none;padding:2px 0;display:list-item}.recipe-card .instructions p{white-space:pre-line;font-style:normal;line-height:var(--line-height-tight);color:var(--text-dark);font-size:var(--text-sm)}.recipe-card .recipe-source h5{font-size:var(--text-md);color:var(--accent-color);margin-bottom:var(--space-xs);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-weight:600;line-height:var(--line-height-tight)}.recipe-card .recipe-source p{font-style:normal;line-height:var(--line-height-tight);color:var(--text-dark);font-size:var(--text-sm);word-wrap:break-word;overflow-wrap:break-word}.recipe-card .recipe-source a{word-wrap:break-word;overflow-wrap:break-word;max-width:100%;display:inline-block}.recipe-card .similar-cocktails{margin:var(--space-xs) 0;font-family:Georgia,Times New Roman,Times,serif}.recipe-card .similar-cocktails h5{font-size:var(--text-md);color:var(--accent-color);margin-bottom:var(--space-xs);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-weight:600;line-height:var(--line-height-tight)}.recipe-card .similar-list{margin-top:var(--space-xs);padding-left:1.5rem;list-style-type:disc}.recipe-card .similar-list li{line-height:var(--line-height-tight);padding:2px 0}.recipe-card .similar-list a{color:var(--accent-color);text-decoration:none}.recipe-card .similar-list a:hover{text-decoration:underline}.recipe-card .similar-distance{margin-right:var(--space-xs);color:var(--text-medium);font-size:var(--text-xs)}.recipe-card .similar-transport{margin-left:var(--space-xs);color:var(--text-medium);font-size:var(--text-xs)}.recipe-card .similar-loading{color:var(--text-medium);font-size:var(--text-sm)}.recipe-card .cocktail-space-link{margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid var(--border-light);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.recipe-card .cocktail-space-link a{color:var(--accent-color);font-size:var(--text-sm);text-decoration:none}.recipe-card .cocktail-space-link a:hover{text-decoration:underline}.highlight-ring{transform-box:fill-box;transform-origin:50%}@keyframes cocktail-space-pulse{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(3)}}.stat-card p{color:var(--info-color);font-size:2rem;font-weight:700}.ingredient-name{font-weight:700;font-size:var(--text-lg);margin-right:var(--space-sm);color:var(--primary-color);line-height:var(--line-height-normal)}.ingredient-description{font-size:var(--text-sm);margin-top:var(--space-xs);line-height:var(--line-height-normal)}.analytics-card{padding:var(--space-lg);margin-bottom:var(--space-xl);background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 2px 4px #0000000d}.card-header{margin-bottom:1.5rem}.card-header h3{margin-bottom:.5rem}.card-description{color:#666;font-size:var(--text-sm);line-height:var(--line-height-normal)}button,.btn{background-color:var(--accent-color);color:#fff;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-md);min-height:var(--touch-target-min);min-width:var(--touch-target-min);border:none;transition:background-color .3s,transform .1s}button:hover,.btn:hover{background-color:var(--accent-hover);transform:translateY(-1px)}button:active,.btn:active{transform:translateY(0)}button:disabled,.btn:disabled{background-color:var(--secondary-color);cursor:not-allowed;opacity:.6}button:focus,.btn:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.btn-primary{background-color:var(--primary-color)}.btn-primary:hover{background-color:#1a2530}.btn-secondary{background-color:var(--secondary-color)}.btn-secondary:hover{background-color:#666e6f}.btn-success{background-color:var(--success-color)}.btn-success:hover{background-color:var(--success-hover)}.btn-danger{background-color:var(--danger-color)}.btn-danger:hover{background-color:var(--danger-hover)}.btn-outline{color:var(--primary-color);background-color:#f8f9fa;border:1px solid #dee2e6}.btn-outline:hover{background-color:var(--bg-light-hover)}.btn-outline-danger{color:#e74c3c;background-color:#fff5f5;border:1px solid #ffcdd2}.btn-outline-danger:hover{background-color:#fee}.btn-small{padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);min-height:var(--touch-target-min)}.btn-circle{width:var(--touch-target-min);height:var(--touch-target-min);border-radius:var(--radius-round);font-size:var(--text-md);min-width:var(--touch-target-min);min-height:var(--touch-target-min);flex:none;justify-content:center;align-items:center;padding:0;line-height:1;display:flex}.btn-icon{margin-right:5px;font-size:16px;font-weight:700;display:inline-block}.auth-controls,#user-info:not(.hidden){align-items:center;gap:var(--space-sm);display:flex}#user-info.hidden{display:none!important}#username-display{font-size:var(--text-sm);color:#fff;opacity:.9;font-weight:500}.btn-auth{padding:var(--space-sm) var(--space-lg);color:#fff;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-sm);min-height:var(--touch-target-min);background-color:#ffffff26;border:1px solid #ffffff4d;font-weight:500;transition:all .2s}.btn-auth:hover{background-color:#ffffff40;border-color:#ffffff80;transform:translateY(-1px)}.btn-auth:focus{outline:var(--focus-outline-width) solid white;outline-offset:var(--focus-outline-offset)}.btn-signup{background-color:var(--success-color);border-color:var(--success-color)}.btn-signup:hover{background-color:var(--success-hover);border-color:var(--success-hover)}.btn-logout{padding:var(--space-sm) var(--space-md);color:#fff;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-sm);min-height:var(--touch-target-min);background-color:#ffffff1a;border:1px solid #fff3;transition:all .2s}.btn-logout:hover{background-color:var(--danger-color);border-color:var(--danger-color)}.btn-logout:focus{outline:var(--focus-outline-width) solid white;outline-offset:var(--focus-outline-offset)}.tab-button{padding:var(--space-md) var(--space-lg);cursor:pointer;font-size:var(--text-sm);color:#666;line-height:var(--line-height-normal);background:0 0;border:none;border-bottom:3px solid #0000;transition:all .2s}.tab-button:hover{color:#333;background-color:#f5f5f5}.tab-button.active{color:#1f77b4;border-bottom-color:#1f77b4;font-weight:500}.tab-button:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.breadcrumb-item{color:#333;padding:var(--space-xs) var(--space-md);cursor:pointer;font-size:var(--text-sm);line-height:var(--line-height-normal);background:#fff;border:1px solid #ddd;border-radius:4px;transition:all .2s}.breadcrumb-item:hover{color:#fff;background:#1f77b4;border-color:#1f77b4}.breadcrumb-item:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.tree-toggle{color:var(--text-medium);cursor:pointer;padding:var(--space-xs) var(--space-xs);text-align:center;background:0 0;border:none;border-radius:2px;min-width:16px;margin-right:6px;font-size:12px}.tree-toggle:hover{background-color:var(--border-lighter);color:var(--text-dark)}.tree-toggle:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.carousel-arrow{background:var(--accent-color);color:#fff;cursor:pointer;z-index:10;border:none;border-radius:50%;justify-content:center;align-items:center;width:50px;height:50px;font-size:2rem;transition:transform .2s,background-color .2s;display:flex;box-shadow:0 2px 5px #0003}.carousel-arrow:hover{background-color:var(--accent-hover);transform:scale(1.1)}.carousel-arrow:active{transform:scale(.95)}.carousel-arrow:disabled{cursor:not-allowed;background-color:#ccc;transform:none}.carousel-arrow:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.existing-tag-btn{align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);color:var(--text-dark);border-radius:var(--radius-sm);font-size:var(--text-xs);cursor:pointer;background:#f8f9fa;border:1px solid #e0e0e0;transition:all .2s;display:inline-flex}.existing-tag-btn:hover:not(:disabled){background:#e9ecef;border-color:#dee2e6;transform:translateY(-1px)}.existing-tag-btn:active:not(:disabled){transform:translateY(0)}.existing-tag-btn:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.existing-tag-btn.tag-already-added{color:#6c757d;cursor:not-allowed;opacity:.6;background:#f1f3f4}.existing-tag-btn .tag-icon{font-size:10px}.existing-tag-btn .tag-name{font-weight:500}.form-group{margin-bottom:.375rem}.checkbox-group{align-items:center;gap:8px;display:flex}.checkbox-group input[type=checkbox]{margin:0}.checkbox-group label{margin-bottom:0;display:inline}.checkbox-group .tooltip{cursor:help;color:var(--text-secondary,#666);margin-left:4px;font-size:1em}.form-group-inline{align-items:center;gap:var(--space-md);display:flex}.form-group-inline label{white-space:nowrap;min-width:fit-content;margin-bottom:0}.form-group-inline input,.form-group-inline select,.form-group-inline .tag-input-wrapper,.form-group-inline .rating-search-group{flex:1}.form-row{gap:var(--space-md);margin-bottom:.375rem;display:flex}.form-row .form-group{flex:1}label{margin-bottom:.375rem;font-weight:700;display:block}input[type=text],input[type=number],input[type=email],input[type=password],select,textarea{width:100%;padding:var(--form-input-padding);min-height:var(--form-input-height-min);border:1px solid var(--border-light);border-radius:var(--radius-sm);font-size:var(--form-input-font-size);line-height:var(--line-height-normal);transition:border-color .2s,box-shadow .2s}input:focus,select:focus,textarea:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset);border-color:var(--accent-color)}textarea{resize:vertical;min-height:calc(var(--form-input-height-min) * 2)}.field-error{color:var(--danger-color);font-size:var(--text-xs);line-height:var(--line-height-tight);margin-top:.25rem;display:block}.form-group.has-error input,.form-group.has-error select,.form-group.has-error textarea{border-color:var(--danger-color)}.form-group.has-error input:focus,.form-group.has-error select:focus,.form-group.has-error textarea:focus{outline-color:var(--danger-color);border-color:var(--danger-color)}.ingredient-input.has-error{padding:var(--space-sm);border-radius:var(--radius-sm);background-color:#f443360d;border:1px solid #f4433633}input[type=checkbox],input[type=radio]{cursor:pointer;width:24px;min-width:24px;height:24px;min-height:24px}.input-group label{align-items:center;gap:var(--space-sm);cursor:pointer;min-height:var(--touch-target-min);font-weight:400;display:inline-flex}input[type=checkbox]:focus,input[type=radio]:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.ingredient-fields{gap:var(--space-md);margin-bottom:var(--space-md);align-items:flex-start;display:flex}.ingredient-fields .form-group{flex:1;margin-bottom:0}.ingredient-fields .form-group:first-child{flex:0 0 100px}.ingredient-fields .form-group:nth-child(2){flex:0 0 150px}.ingredient-fields .remove-ingredient{margin-top:var(--space-sm);flex:none}.item-row{border-bottom:1px dashed var(--border-lighter);align-items:center;gap:.75rem;margin-bottom:.75rem;padding-bottom:.75rem;display:flex}.item-row-field-fixed{flex:0 0 140px}.item-row-field-expand{flex:1;position:relative}.form-actions{gap:var(--space-sm);flex-direction:column;flex-shrink:0;align-self:flex-end;align-items:flex-start;width:120px;display:flex}.form-actions button{width:100%}.form-actions.modal-actions{flex-direction:row;justify-content:flex-end;width:auto}.form-actions.modal-actions button{width:auto}.form-content-wrapper{align-items:flex-start;gap:1.5rem;display:flex}.main-search-fields{flex-grow:1}.add-row-wrapper{margin-top:var(--space-sm);margin-bottom:0}.ingredient-search-container .add-row-wrapper{text-align:right}.modal-content .form-group small{color:#666;margin-top:var(--space-xs);font-size:.75em;display:block}.form-actions.modal-actions{margin-top:1.5rem}.search-bar{margin-bottom:var(--space-md)}.search-bar input{width:100%;padding:var(--space-sm);border:1px solid var(--border-light);border-radius:var(--radius-sm)}.ingredient-search-container{width:100%;position:relative}.ingredient-search-container input{width:100%;margin-bottom:var(--space-xs)}.ingredient-search-container select.ingredient-name{width:100%;display:none}.autocomplete-dropdown{border:1px solid var(--border-light);border-radius:var(--radius-sm);z-index:1000;background-color:#fff;width:100%;max-height:200px;display:none;position:absolute;overflow-y:auto;box-shadow:0 2px 6px #00000026}.autocomplete-item{padding:var(--space-sm) var(--space-md);cursor:pointer;transition:background-color .2s}.autocomplete-item:hover,.autocomplete-item.active{background-color:#f0f7ff}.autocomplete-item:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.autocomplete-item strong{color:var(--info-color);font-weight:700}.recipe-card .existing-tags,.recipe-card .no-tags-placeholder{white-space:nowrap;font-size:.85em;line-height:1.2}.recipe-card .existing-tags{color:#666;text-overflow:ellipsis;overflow:hidden}.recipe-card .no-tags-placeholder{color:#888;font-style:italic}.recipe-card .add-tag-btn{padding:var(--space-xs) var(--space-sm);cursor:pointer;color:#555;margin-left:var(--space-xs);white-space:nowrap;background-color:#0000;border:1px solid #ccc;border-radius:12px;flex-shrink:0;font-size:.8em}.recipe-card .add-tag-btn:hover{background-color:var(--bg-light-hover);color:#333;border-color:#bbb}.recipe-card .add-tag-btn:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.recipe-card .tags-container{gap:var(--space-xs);flex-wrap:wrap;align-items:center;display:inline-flex}.recipe-card .tag-chip{padding:var(--space-xs) var(--space-sm);align-items:center;gap:var(--space-xs);border:1px solid;border-radius:12px;font-size:.75em;font-weight:500;line-height:1.2;transition:all .2s;display:inline-flex}.recipe-card .tag-chip.tag-public{color:#0c4a6e;background-color:#e0f2fe;border-color:#bae6fd}.recipe-card .tag-chip.tag-private{color:#581c87;background-color:#f3e8ff;border-color:#e9d5ff}.recipe-card .tag-remove-btn{color:inherit;cursor:pointer;margin:0 0 0 var(--space-xs);opacity:.7;min-width:var(--touch-target-min);min-height:var(--touch-target-min);background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:1.1em;font-weight:700;line-height:1;transition:opacity .2s;display:inline-flex}.recipe-card .tag-remove-btn:hover{opacity:1}.recipe-card .tag-remove-btn:disabled{opacity:.4;cursor:not-allowed}.tag-search-container{position:relative}.tag-input-wrapper{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--bg-white);min-height:40px;padding:var(--space-xs);align-items:center;gap:var(--space-xs);flex-wrap:wrap;transition:border-color .2s;display:flex;position:relative}.tag-input-wrapper:focus-within{border-color:var(--accent-color);box-shadow:0 0 0 2px #a618161a}.selected-tags-chips{gap:var(--space-xs);flex-wrap:wrap;align-items:center;display:flex}.search-tag-chip{padding:var(--space-xs) var(--space-sm);background-color:var(--accent-color);color:#fff;border-radius:var(--radius-sm);font-size:var(--text-sm);align-items:center;gap:var(--space-xs);font-weight:500;display:inline-flex}.search-tag-chip.tag-public{background-color:#2196f3}.search-tag-chip.tag-private{background-color:#9c27b0}.search-tag-chip-remove{color:inherit;cursor:pointer;opacity:.8;min-width:var(--touch-target-min);min-height:var(--touch-target-min);background:0 0;border:none;justify-content:center;align-items:center;margin:0;padding:0;font-size:1.1em;font-weight:700;line-height:1;transition:opacity .2s;display:inline-flex}.search-tag-chip-remove:hover{opacity:1}.tag-input-wrapper input[type=text]{min-width:120px;padding:var(--space-xs) 0;font-size:var(--text-md);background:0 0;border:none;outline:none;flex:1}.tag-suggestions-dropdown{background:var(--bg-white);border:1px solid var(--border-light);border-radius:0 0 var(--radius-md) var(--radius-md);z-index:1000;border-top:none;max-height:200px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 2px 8px #0000001a}.tag-suggestions-dropdown.hidden{display:none}.tag-suggestion-item{padding:var(--space-sm) var(--space-md);cursor:pointer;border-bottom:1px solid var(--border-lighter);justify-content:space-between;align-items:center;transition:background-color .2s;display:flex}.tag-suggestion-item:last-child{border-bottom:none}.tag-suggestion-item:hover,.tag-suggestion-item.highlighted{background-color:var(--bg-light)}.tag-suggestion-item:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.tag-suggestion-name{font-weight:500}.tag-suggestion-type{font-size:var(--text-sm);color:var(--text-light);text-transform:capitalize}.tag-suggestion-type.public{color:#2196f3}.tag-suggestion-type.private{color:#9c27b0}.tag-suggestions-dropdown .no-results,.tag-suggestions-dropdown .loading{padding:var(--space-md);text-align:center;color:var(--text-light);font-style:italic}.name-search-wrapper{flex:1;position:relative}.name-search-wrapper input{width:100%}.name-suggestions-dropdown{background:var(--bg-white);border:1px solid var(--border-light);border-radius:0 0 var(--radius-md) var(--radius-md);z-index:1000;border-top:none;max-height:250px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 2px 8px #0000001a}.name-suggestions-dropdown.hidden{display:none}.name-suggestion-item{padding:var(--space-sm) var(--space-md);cursor:pointer;border-bottom:1px solid var(--border-lighter);transition:background-color .2s}.name-suggestion-item:last-child{border-bottom:none}.name-suggestion-item:hover,.name-suggestion-item.highlighted{background-color:var(--bg-light)}.name-suggestions-dropdown .no-results,.name-suggestions-dropdown .loading{padding:var(--space-md);text-align:center;color:var(--text-light);font-style:italic}.tags-management-list{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--bg-white);max-height:400px;overflow-y:auto}.tag-management-item{padding:var(--space-md);border-bottom:1px solid var(--border-lighter);justify-content:space-between;align-items:center;display:flex}.tag-management-item:last-child{border-bottom:none}.tag-management-info{flex-direction:column;flex:1;min-width:0;display:flex}.tag-management-name{color:var(--text-dark);margin-bottom:var(--space-xs);font-weight:600}.tag-management-usage{font-size:var(--text-sm);color:var(--text-light)}.tag-management-actions{gap:var(--space-sm);align-items:center;display:flex}.tags-management-list .loading-message,.tags-management-list .error-message,.tags-management-list .empty-message{padding:var(--space-lg);text-align:center;color:var(--text-light);font-style:italic}.tags-management-list .error-message{color:var(--danger-color)}#tag-input{margin-bottom:var(--space-sm);font-size:var(--text-sm)}.tag-chips-container{gap:var(--space-sm);margin-top:var(--space-md);margin-bottom:var(--space-md);padding:var(--space-sm);background-color:#f9f9f9;border:1px solid #e0e0e0;border-radius:6px;flex-wrap:wrap;min-height:40px;display:flex}.tag-chip{padding:var(--space-xs) var(--space-md);font-size:var(--text-xs);cursor:pointer;border:1px solid #0000;border-radius:14px;align-items:center;font-weight:500;transition:background-color .2s,color .2s,border-color .2s,transform .1s;display:inline-flex}.tag-chip:hover{transform:translateY(-1px)}.tag-chip:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.tag-chip-public{color:#0c4a6e;background-color:#e0f2fe;border-color:#bae6fd}.tag-chip-public:hover{background-color:#bae6fd;border-color:#7dd3fc}.tag-chip-private{color:#581c87;background-color:#f3e8ff;border-color:#e9d5ff}.tag-chip-private:hover{background-color:#e9d5ff;border-color:#c084fc}.tag-chip .tag-icon{margin-right:.4rem;font-size:1em;line-height:1}.tag-chip .tag-remove-btn{color:inherit;cursor:pointer;opacity:.5;min-width:var(--touch-target-min);min-height:var(--touch-target-min);background:0 0;border:none;justify-content:center;align-items:center;margin-left:.6rem;padding:0;font-size:.9em;font-weight:700;line-height:1;display:inline-flex}.tag-chip .tag-remove-btn:hover{opacity:.9}#existing-tags-section{margin-bottom:var(--space-md);max-height:300px;overflow-y:auto}#public-tags-section,#private-tags-section{margin-bottom:var(--space-md)}#public-tags-section h5,#private-tags-section h5{font-size:var(--text-sm);margin-bottom:var(--space-xs);color:var(--text-secondary);font-weight:600}.existing-tags-list{gap:var(--space-xs);margin-bottom:var(--space-sm);flex-wrap:wrap;display:flex}.existing-tags-list .no-tags,.existing-tags-list .error,.existing-tags-list .auth-required{font-size:var(--text-xs);color:var(--text-muted);padding:var(--space-xs);font-style:italic}.existing-tags-list .error{color:var(--danger-600)}.star-rating{align-items:center;margin:0;font-size:1.2rem;display:flex}.star{color:#ddd;margin-right:1px}.star.filled{color:var(--warn-color)}.star.no-rating{color:#ddd}.star.zero-rating{color:#999;opacity:.6}.star.half{color:#ddd;position:relative}.star.half:before{content:"★";width:50%;color:var(--warn-color);position:absolute;top:0;left:0;overflow:hidden}.rating-count,.rating-stats{color:var(--text-light);font-size:var(--text-sm);margin-left:var(--space-xs)}.rating-stats{margin-left:var(--space-sm)}.star-rating.interactive{cursor:pointer}.star.interactive{cursor:pointer;min-width:var(--touch-target-min);min-height:var(--touch-target-min);justify-content:center;align-items:center;transition:transform .1s,color .2s;display:inline-flex}.star.interactive:hover{transform:scale(1.2)}.star.interactive.hover{color:var(--warn-color)}.star.interactive:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.rating-label-stars-row{align-items:center;gap:var(--space-md);margin-bottom:var(--space-xs);display:flex}.rating-label-stars-row label{white-space:nowrap;margin-bottom:0}.rating-search-group{gap:var(--space-sm);flex-direction:column;display:flex}.star-rating-filter{align-items:center;gap:2px;font-size:1.4rem;display:flex}.star-rating-filter .star{color:#ddd;cursor:pointer;-webkit-user-select:none;user-select:none;min-width:var(--touch-target-min);min-height:var(--touch-target-min);justify-content:center;align-items:center;transition:all .2s;display:inline-flex}.star-rating-filter .star:hover,.star-rating-filter .star.active{color:var(--warn-color);transform:scale(1.1)}.star-rating-filter .and-up-text{margin-left:var(--space-sm);font-size:var(--text-sm);color:var(--text-muted);opacity:0;transition:opacity .2s}.star-rating-filter.has-selection .and-up-text{opacity:1}.rating-notification{color:#fff;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-size:var(--text-xs);margin-left:var(--space-sm);background-color:#4caf50e6;animation:.3s fadeIn,.5s 2s forwards fadeOut}.modal{z-index:2000;background-color:#00000080;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:fixed;top:0;left:0;overflow:auto}.modal.hidden{display:none}.modal-backdrop{background:#000000b3;width:100%;height:100%;position:absolute;top:0;left:0}.modal-content{padding:var(--space-xl);border-radius:var(--radius-md);width:90%;max-width:600px;max-height:90vh;box-shadow:var(--shadow-lg);z-index:2001;background-color:#fff;border:1px solid #ccc;margin:10% auto;position:relative;overflow-y:auto}.close-tag-modal-btn{color:#737373;min-width:var(--touch-target-min);min-height:var(--touch-target-min);background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:24px;font-weight:700;line-height:1;display:flex;position:absolute;top:8px;right:12px}.close-tag-modal-btn:hover,.close-tag-modal-btn:focus{color:#333;cursor:pointer;text-decoration:none}.modal-close{cursor:pointer;color:#666;z-index:2002;min-width:var(--touch-target-min);min-height:var(--touch-target-min);background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:28px;line-height:1;display:flex;position:absolute;top:12px;right:12px}.modal-close:hover{color:#333}#recipe-modal-body{padding:var(--mobile-padding);min-height:200px}.modal-loading{padding:var(--space-xl);flex-direction:column;justify-content:center;align-items:center;display:flex}.modal-loading.hidden{display:none!important}.modal-loading .spinner{margin-bottom:var(--space-md)}.modal-footer{padding:var(--space-md) var(--mobile-padding);text-align:center;border-top:1px solid #e0e0e0}.modal-footer .btn-primary{padding:var(--space-sm) var(--mobile-padding);color:#fff;background:#007bff;border-radius:4px;font-weight:500;text-decoration:none;display:inline-block}.modal-footer .btn-primary:hover{background:#0056b3}.recipe-preview-card{border:2px solid var(--accent-color);z-index:1000;pointer-events:none;background:#fff;border-radius:8px;max-width:300px;padding:12px 16px;font-size:14px;position:absolute;box-shadow:0 4px 12px #00000026}.recipe-preview-card .recipe-name{color:var(--text-color,#2c3e50);margin-bottom:8px;font-size:15px;font-weight:700}.recipe-preview-card .ingredients{color:var(--text-color-secondary,#666);font-size:13px;line-height:1.5}.modal-footer .btn-primary:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.recipe-carousel{margin:var(--space-md) auto;padding:var(--space-lg);border-radius:var(--radius-md);box-shadow:var(--shadow-md);background-color:#fff}.carousel-container{align-items:center;gap:var(--space-md);justify-content:space-between;display:flex;position:relative}.carousel-content{flex:1;justify-content:center;align-items:center;min-height:400px;display:flex}#recipe-display .recipe-card{width:100%;max-width:600px;margin:0 auto;transition:transform .3s,opacity .3s}#recipe-display .recipe-card.fade-out{animation:.5s ease-out fadeOut}.notification{padding:var(--space-md) var(--space-md);margin-bottom:var(--mobile-padding);border-radius:var(--radius-sm);color:#fff;font-weight:500;animation:.3s ease-out slideIn;position:relative;box-shadow:0 2px 5px #0003}.notification.success{background-color:var(--success-color)}.notification.error{background-color:var(--danger-color)}.notification.info{background-color:var(--info-color)}.notification.fade-out{visibility:hidden;animation:.5s ease-out forwards fadeOut}.toast{top:var(--mobile-padding);right:var(--mobile-padding);padding:var(--space-md);border-radius:var(--radius-md);color:#fff;z-index:1000;animation:.3s ease-out slideIn;position:fixed}.toast-success{background-color:var(--success-color)}.toast-error{background-color:var(--danger-color)}.about-content ul{margin:var(--space-sm) 0;line-height:var(--line-height-normal);padding-left:1.5rem}.about-content li{margin-bottom:var(--space-xs);line-height:var(--line-height-normal)}.page-header{text-align:center;margin-bottom:var(--space-xl);padding:var(--space-lg);background-color:var(--bg-light);border-radius:var(--radius-md)}.page-header h2{color:var(--text-dark);margin-bottom:var(--space-sm);line-height:var(--line-height-tight)}.page-header p{color:var(--text-medium);line-height:var(--line-height-normal)}.section-header{margin-bottom:var(--space-md);padding:var(--space-md);background-color:var(--bg-white);border-radius:var(--radius-md);justify-content:space-between;align-items:center;display:flex;box-shadow:0 2px 4px #0000001a}.section-header h3{color:var(--text-dark);line-height:var(--line-height-normal);margin:0}.section-header .controls{gap:var(--space-sm);align-items:center;display:flex}.section-header input[type=text]{padding:var(--space-sm);border:1px solid var(--border-light);border-radius:var(--radius-sm);min-width:200px}.ingredients-list{background-color:var(--bg-white);border-radius:var(--radius-md);padding:var(--space-md);min-height:300px;max-height:500px;margin-top:var(--space-lg);overflow-y:auto;box-shadow:0 2px 4px #0000001a}.ingredients-list.hierarchy{background-color:var(--bg-light)}.hierarchy-root,.hierarchy-children{margin:0;padding:0;line-height:1;list-style:none}.hierarchy-item{margin-bottom:var(--space-xs)}.hierarchy-item.has-children{margin-bottom:var(--space-sm)}.ingredient-row{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);background-color:var(--bg-white);margin-bottom:var(--space-xs);border:1px solid var(--border-lighter);align-items:center;line-height:1;display:flex}.ingredient-checkbox{margin-right:var(--space-sm);cursor:pointer}.ingredient-label{cursor:pointer;font-weight:400;line-height:var(--line-height-normal);flex:1;align-items:center;display:flex}.empty-state{text-align:center;color:var(--text-medium);padding:var(--space-xl);font-style:italic;line-height:var(--line-height-normal)}.auth-required-message{text-align:center;padding:var(--space-xl);background-color:var(--bg-light);border-radius:var(--radius-md);color:var(--text-medium);line-height:var(--line-height-normal)}.auth-required-message .btn-link{color:var(--accent-color);cursor:pointer;font-size:inherit;background:0 0;border:none;text-decoration:underline}.auth-required-message .btn-link:hover{color:var(--accent-hover)}.auth-required-message .btn-link:focus{outline:var(--focus-outline-width) solid var(--focus-outline-color);outline-offset:var(--focus-outline-offset)}.groups-status{min-height:44px;padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-md);border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--bg-white);color:var(--text-medium);align-items:center;display:flex}.groups-status-error{border-color:var(--danger-color);color:var(--danger-color)}.group-details .form-field,.group-invite .form-field{gap:var(--space-xs);margin-bottom:var(--space-md);flex-direction:column;display:flex}.group-details input,.group-details textarea,.group-invite input,.group-join input{box-sizing:border-box;width:100%;min-height:var(--form-input-height-min);padding:var(--form-input-padding);border:1px solid var(--border-light);border-radius:var(--radius-sm);font:inherit}.group-details textarea{resize:vertical}.invite-code-controls{align-items:end;gap:var(--space-sm);flex-wrap:wrap;display:flex}.invite-code-controls input{letter-spacing:.08em;flex:12rem}.invite-code-controls label{flex:0 0 100%}.form-help{color:var(--text-medium);font-size:var(--text-sm)}.group-members{gap:var(--space-sm);display:grid}.group-member-row{justify-content:space-between;align-items:center;gap:var(--space-md);min-height:var(--touch-target-min);padding:var(--space-sm) var(--space-md);border:1px solid var(--border-light);border-radius:var(--radius-sm);background:var(--bg-light);display:flex}.group-member-id{overflow-wrap:anywhere}.group-member-self{color:var(--text-medium);font-size:var(--text-sm)}.leave-group-section>label{align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md);display:flex}.group-inventory-banner{justify-content:space-between;align-items:center;gap:var(--space-lg);border-left:4px solid var(--accent-color);display:flex}.group-inventory-banner h3,.group-inventory-banner p{margin:0}.group-inventory-banner p{margin-top:var(--space-xs);color:var(--text-medium)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ingredient-tree-row{padding:var(--space-xs) var(--space-sm);margin-bottom:var(--space-xs);background-color:var(--bg-white);border:1px solid var(--border-lighter);border-radius:4px;align-items:center;font-size:13px;line-height:1.3;display:flex}.ingredient-tree-row:hover{background-color:var(--bg-light)}.tree-spacer{color:var(--text-light);margin-right:var(--space-sm);text-align:center;min-width:16px;font-size:10px}.tree-content{flex:1;justify-content:space-between;align-items:center;display:flex}.tree-info{flex-direction:column;flex:1;display:flex}.tree-name{color:var(--text-dark);font-size:14px;font-weight:500;line-height:1.2}.tree-description{color:var(--text-medium);margin-top:var(--space-xs);font-size:11px;font-style:italic;line-height:1.2}.tree-actions{gap:var(--space-xs);margin-left:var(--space-sm);flex-shrink:0;display:flex}.tree-actions .btn-small{padding:var(--space-xs) var(--space-xs);min-height:auto;font-size:11px;line-height:1.2}.tree-children{margin-left:var(--space-sm)}.hierarchy-item.expanded>.ingredient-tree-row .tree-toggle{color:var(--primary-color)}#ingredients-container{font-size:13px}#ingredients-container .hierarchy-root{margin:0;padding:0}.analytics-container{max-width:1200px;padding:var(--space-xl);margin:0 auto}.analytics-header{margin-bottom:var(--space-xl)}.analytics-header h2{margin-bottom:var(--space-sm);line-height:var(--line-height-tight)}.analytics-description{color:#666;margin-bottom:var(--space-sm);line-height:var(--line-height-normal)}.analytics-meta{color:#888;font-size:var(--text-sm);margin-top:var(--space-sm);line-height:var(--line-height-normal)}.analytics-tabs{gap:var(--space-sm);margin-bottom:var(--space-xl);border-bottom:2px solid #ddd;display:flex}.analytics-view-selector,.tab-content{display:none}.tab-content.active{display:block}.chart-container{min-height:400px;position:relative}.chart-area{width:100%;min-height:400px}.loading-state,.error-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:300px;display:flex}.loading-state.hidden,.error-state.hidden{display:none}.spinner{border:4px solid #f3f3f3;border-top-color:#1f77b4;border-radius:50%;width:40px;height:40px;animation:1s linear infinite spin}.error-message{color:#d32f2f;margin-bottom:1rem}.breadcrumb-nav{align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md);padding:var(--space-md);background:#f5f5f5;border-radius:4px;flex-wrap:wrap;display:flex}.breadcrumb-nav.hidden{display:none}.breadcrumb-separator{color:#999}.chart-info{margin-top:var(--space-lg);padding-top:var(--space-md);border-top:1px solid #eee;justify-content:space-between;align-items:center;display:flex}.legend{gap:var(--space-lg);flex-wrap:wrap;display:flex}.legend-item{align-items:center;gap:var(--space-sm);font-size:var(--text-sm);line-height:var(--line-height-normal);display:flex}.legend-color{border-radius:2px;width:20px;height:12px}.chart-stats{color:#666;font-size:var(--text-sm);line-height:var(--line-height-normal)}.stats-summary{gap:var(--space-xl);display:flex}.stat-item{gap:var(--space-xs);flex-direction:column;display:flex}.stat-label{color:#666;font-size:var(--text-xs);line-height:var(--line-height-normal)}.stat-value{color:#1f77b4;font-size:1.25rem;font-weight:600}.no-data{text-align:center;color:#888;padding:var(--space-xl)}.analytics-footer{padding-top:var(--space-xl);text-align:center;border-top:1px solid #ddd;margin-top:3rem}.info-text{color:#666;font-size:var(--text-sm);line-height:var(--line-height-normal)}#cocktail-space-chart{min-height:650px}#cocktail-space-chart svg{font-family:Arial,sans-serif}.cocktail-space-rating-controls{align-items:center;gap:var(--space-md);margin-bottom:var(--space-sm);flex-wrap:wrap;display:flex}.cocktail-space-rating-controls label,.cocktail-space-rating-legend,.cocktail-space-rating-legend>span{align-items:center;gap:var(--space-xs);display:flex}.cocktail-space-rating-legend>span{font-size:var(--text-sm)}.cocktail-space-rating-legend i{border:1px solid #6b7280;border-radius:50%;width:10px;height:10px;display:inline-block}#cocktail-space-chart .recipe-callout,#cocktail-space-em-chart .recipe-callout{fill:#1f2937;paint-order:stroke;pointer-events:none;stroke:#fff;stroke-linejoin:round;stroke-width:3px;font-size:11px;font-weight:600}#cocktail-space-chart .recipe-callout-line,#cocktail-space-em-chart .recipe-callout-line{pointer-events:none;stroke:#6b7280;stroke-width:1px}#cocktail-space-chart .grid line{stroke:#ccc}#cocktail-space-chart .grid path{stroke-width:0}#cocktail-space-chart svg,#cocktail-space-em-chart svg,#ingredient-tree-chart svg{touch-action:pan-y pinch-zoom}.touch-hint{color:#fff;pointer-events:none;opacity:0;z-index:100;white-space:nowrap;background:#000000b3;border-radius:20px;padding:8px 16px;font-size:12px;transition:opacity .3s;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}.touch-hint.visible{opacity:1}.upload-results{padding:var(--space-md);background-color:var(--bg-light);border-radius:var(--radius-md);margin-top:var(--space-md)}.upload-results h4{color:var(--text-dark);margin-bottom:var(--space-sm);line-height:var(--line-height-normal)}.upload-results ul{padding-left:var(--space-lg);margin-bottom:var(--space-sm);line-height:var(--line-height-normal)}.upload-results li{margin-bottom:var(--space-xs);line-height:var(--line-height-normal)}.success-results{padding:var(--space-md);border-radius:var(--radius-md);border-left:4px solid var(--success-color);background-color:#4caf501a}.error-results{padding:var(--space-md);border-radius:var(--radius-md);border-left:4px solid var(--danger-color);background-color:#f443361a}.grid{display:grid}#recipes-container,#search-results-container{gap:var(--space-lg);margin-top:var(--space-md);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.results-section{min-height:150px}#search-results-container{min-height:200px;position:relative}#search-results-list{display:contents}.hidden,.loading-placeholder.hidden,.empty-message.hidden,.infinite-scroll-loading.hidden{display:none}.loading-indicator{right:var(--space-sm);display:none;position:absolute;top:50%;transform:translateY(-50%)}.loading-indicator.active{display:block}.loading-spinner{border:2px solid #f3f3f3;border-top:2px solid var(--info-color);border-radius:50%;width:16px;height:16px;animation:1s linear infinite spin}.search-status{font-size:var(--text-xs);color:#666;margin-top:var(--space-xs);display:none}.search-status.active{display:block}.empty-message{text-align:center;padding:var(--space-md);border-radius:var(--radius-md);color:#666;z-index:5;background-color:#f9f9f9;grid-column:1/-1;justify-content:center;align-items:center;min-height:120px;display:flex;position:relative}.loading-placeholder{border-radius:var(--radius-md);z-index:10;background-color:#f9f9fa;border:1px dashed #dee2e6;grid-column:1/-1;justify-content:center;align-items:center;width:100%;min-height:120px;display:flex;position:absolute;top:0;left:0}.loading-placeholder p{color:#6c757d;font-size:var(--text-md)}.infinite-scroll-loading{padding:var(--space-lg);margin:var(--space-md) 0;border-radius:var(--radius-md);background-color:#0000;justify-content:center;align-items:center;display:flex}.infinite-scroll-loading p{color:#6c757d;font-size:var(--text-sm);font-style:italic}.loading-recipes{text-align:center;padding:var(--space-lg);color:var(--text-light);font-style:italic;line-height:var(--line-height-normal)}.progress-bar{background-color:var(--bg-light);border-radius:var(--radius-sm);width:100%;height:8px;margin-bottom:var(--space-sm);overflow:hidden}.progress-fill{background-color:var(--primary-color);border-radius:var(--radius-sm);height:100%;animation:1.5s infinite progress-pulse}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes progress-pulse{0%{width:0%}50%{width:100%}to{width:0%}}@media (width<=768px){.nav-desktop{display:none!important}.nav-mobile-bottom{display:block}.nav-mobile-bottom .nav-items{flex-direction:row!important}.nav-hamburger-btn{justify-content:center;align-items:center;display:flex}main{padding-bottom:calc(var(--mobile-padding) + 60px);padding:0 var(--mobile-padding);padding-bottom:calc(var(--mobile-padding) + 60px)}header{padding:var(--space-sm) var(--mobile-padding)}.header-container{gap:var(--space-sm);flex-wrap:nowrap;align-items:center}.site-title{flex:none;font-size:1rem;line-height:1.1}.site-title .title-line{display:block}.auth-controls{justify-content:center;gap:var(--space-xs);flex:1;order:2}.btn-auth,.btn-logout{padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs);min-height:36px}#username-display{display:none}#header-nav-container{flex:none;order:3}footer{padding:var(--space-md) var(--mobile-padding)}section,.card-container{padding:var(--space-md);margin-bottom:var(--space-sm)}.section-title{margin-bottom:var(--space-sm)}.section-title p{margin-bottom:0}.ingredient-card,.recipe-card{padding:var(--space-md)}.modal-content,#recipe-modal-body{padding:var(--mobile-padding)}.modal-footer{padding:var(--space-md) var(--mobile-padding)}#recipes-container,#search-results-container{grid-template-columns:1fr}.results-section{padding:0 var(--mobile-padding);box-sizing:border-box;max-width:100vw;margin:0 auto}#search-results-container{width:100%;padding:0}#search-results-container .recipe-card{overflow-wrap:break-word;box-sizing:border-box!important;width:100%!important;min-width:0!important;max-width:100%!important}.form-content-wrapper{gap:var(--space-sm);flex-direction:column}.form-group{margin-bottom:var(--space-xs)}.form-row{margin-bottom:var(--space-xs);gap:var(--space-xs);flex-direction:column}label{margin-bottom:var(--space-xs)}.rating-search-group{gap:var(--space-xs)}.star-rating-filter{gap:1px;font-size:1.2rem}.tag-input-wrapper{min-height:44px;padding:var(--space-xs)}.ingredient-search-container .add-row-wrapper{margin-top:var(--space-xs)}.ingredient-fields{gap:var(--space-xs);flex-direction:column}.ingredient-fields .form-group:first-child,.ingredient-fields .form-group:nth-child(2){flex:1}.ingredient-fields .remove-ingredient{align-self:stretch;margin-top:0}.form-actions{width:100%;margin-top:var(--space-sm);flex-direction:row;justify-content:center;align-self:stretch}.form-actions button{flex:1;max-width:150px}.carousel-container{padding:var(--space-md) 0;flex-direction:column}.carousel-arrow{width:40px;height:40px;font-size:1.5rem}#prev-recipe,#next-recipe{margin:var(--space-sm) 0;position:relative;transform:rotate(90deg)}#prev-recipe{order:1}.carousel-content{order:2;width:100%}#next-recipe{order:3}.item-row{align-items:stretch;gap:var(--space-md);flex-direction:column}.item-row-field-fixed{flex:1;width:100%}.btn-circle{align-self:flex-end}.page-header,.section-header{padding:var(--space-md) var(--mobile-padding)}.group-inventory-banner,.group-member-row{flex-direction:column;align-items:flex-start}.group-inventory-banner .btn,.group-member-row .btn,.invite-code-controls .btn{width:100%}.invite-code-controls input{flex-basis:100%}.ingredients-list,.recipe-carousel,.upload-results,.analytics-container{padding:var(--mobile-padding)}.analytics-tabs{display:none}.analytics-view-selector{align-items:center;gap:var(--space-sm);margin-bottom:var(--space-lg);padding:var(--space-sm) var(--space-md);background-color:var(--bg-light);border-radius:var(--radius-md);display:flex}.view-selector-label{font-size:var(--text-sm);color:var(--text-dark);white-space:nowrap;font-weight:500}.mobile-view-select{padding:var(--space-sm) var(--space-md);font-size:var(--text-sm);border:1px solid var(--border-light);border-radius:var(--radius-sm);color:var(--text-dark);min-height:var(--touch-target-min);background-color:#fff;flex:1}.chart-info{gap:var(--space-md);flex-direction:column;align-items:flex-start}.stats-summary{gap:var(--space-md);flex-direction:column}}@media (width>=769px){.nav-desktop{display:flex}.nav-mobile-bottom,.nav-hamburger-btn,.nav-mobile-menu-overlay,.nav-mobile-menu{display:none!important}}.text-light{color:var(--text-light)}.mt-xs{margin-top:var(--space-xs)}.mt-sm{margin-top:var(--space-sm)}.mt-md,.success-results,.error-results{margin-top:var(--space-md)}.mb-sm{margin-bottom:var(--space-sm)}.mb-md{margin-bottom:var(--space-md)}.upload-success-title{color:var(--success-color,#28a745)}.upload-error-title{color:var(--error-color,#dc3545)}.legend-ingredient-parent{background:#1f77b4}.legend-ingredient-leaf{background:#aec7e8}.legend-tree-parent{background:var(--accent-color,#a61816)}.legend-tree-leaf{background:var(--primary-color,#2c3e50)}.ingredient-tree-container{min-height:700px}.ingredient-tree-area{height:700px}
