.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}:root{--primary: #f59e0b;--primary-hover: #d97706;--bg-main: #0f172a;--bg-sidebar: #1e293b;--bg-input: #334155;--text-main: #f8fafc;--text-secondary: #94a3b8;--border: #334155;--accent: #0ea5e9;--font-family: "Outfit", sans-serif;--node-food: #fef3c7;--node-food-border: #f59e0b;--node-intermediate: #ffedd5;--node-intermediate-border: #f97316;--node-step: #e0f2fe;--node-step-border: #0ea5e9;--node-final: #fbbf24;--node-final-border: #d97706}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);background-color:var(--bg-main);color:var(--text-main);height:100vh;overflow:hidden}#root{height:100%}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.flex{display:flex}.flex-col{flex-direction:column}.flex-1{flex:1}.h-full{height:100%}.w-full{width:100%}.relative{position:relative}.absolute{position:absolute}.inset-0{top:0;right:0;bottom:0;left:0}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:.25rem}.gap-3{gap:.75rem}.gap-5{gap:1.25rem}.border-none{border:none!important}.border-b{border-bottom:1px solid var(--border)}.border{border:1px solid var(--border)}.border-gray-800{border-color:#1f2937}.border-gray-700{border-color:#374151}.border-orange-500{border-color:#f59e0b}.border-red-500{border-color:#ef4444}.border-gray-600{border-color:#4b5563}.border-r{border-right:1px solid var(--border)}.border-l{border-left:1px solid var(--border)}.bg-transparent{background-color:transparent}.bg-gray-800{background-color:#1f2937}.bg-gray-900{background-color:#111827}.bg-gray-850{background-color:#171f2e}.bg-orange-500{background-color:#f59e0b}.bg-orange-600{background-color:#ea580c}.bg-green-500{background-color:#22c55e}.bg-red-500{background-color:#ef4444}.bg-green-500\/10{background-color:#22c55e1a}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/20{background-color:#ef444433}.bg-green-500\/20{background-color:#22c55e33}.bg-orange-500\/10,.hover\:bg-orange-500\/10:hover{background-color:#f59e0b1a}.hover\:bg-orange-500:hover{background-color:#f59e0b}.hover\:bg-orange-600:hover{background-color:#ea580c}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-gray-600:hover{background-color:#4b5563}.hover\:bg-gray-700:hover{background-color:#374151}.hover\:bg-gray-800:hover{background-color:#1f2937}.hover\:bg-gray-850:hover{background-color:#171f2e}.hover\:bg-gray-800\/50:hover{background-color:#1f293780}.hover\:text-white:hover{color:#fff}.hover\:text-red-400:hover{color:#f87171}.hover\:bg-orange-700:hover{background-color:#c2410c}.shadow-orange{box-shadow:0 4px 14px #f59e0b4d}.shadow-red{box-shadow:0 4px 14px #ef444426}.text-white{color:#fff}.text-gray-400{color:#9ca3af}.text-gray-500{color:#6b7280}.text-gray-300{color:#d1d5db}.text-right{text-align:right}.text-center{text-align:center}.text-left{text-align:left}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-red-400{color:#f87171}.text-green-400{color:#4ade80}.text-red-500{color:#ef4444}.text-orange-500{color:#f59e0b}.text-green-500{color:#22c55e}.font-bold{font-weight:700}.font-semibold{font-weight:600}.font-medium{font-weight:500}.tracking-widest{letter-spacing:.1em}.tracking-wider{letter-spacing:.05em}.p-6{padding:1.5rem}.p-4{padding:1rem}.mb-8{margin-bottom:2rem}.mb-6{margin-bottom:1.5rem}.mt-2{margin-top:.5rem}.gap-6{gap:1.5rem}.gap-4{gap:1rem}.gap-2{gap:.5rem}.min-h-screen{min-height:100vh}.grid{display:grid}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@media(min-width:768px){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:1024px){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.col-span-12{grid-column:span 12 / span 12}.col-span-10{grid-column:span 10 / span 10}.col-span-8{grid-column:span 8 / span 8}.col-span-6{grid-column:span 6 / span 6}.col-span-5{grid-column:span 5 / span 5}.col-span-4{grid-column:span 4 / span 4}.col-span-3{grid-column:span 3 / span 3}.col-span-2{grid-column:span 2 / span 2}.col-span-1{grid-column:span 1 / span 1}@media(min-width:1024px){.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-1{grid-column:span 1 / span 1}}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-md{border-radius:.375rem}.rounded-full{border-radius:9999px}.overflow-hidden{overflow:hidden}.shadow-sm{box-shadow:0 1px 2px #0000000d}.items-center{align-items:center}.justify-between{justify-content:space-between}.app-page-container{height:100%;display:flex;flex-direction:column;padding:1.5rem;overflow-y:auto;background:var(--bg-main);color:var(--text-main)}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;gap:1rem}.header-info{display:flex;align-items:center;gap:.75rem}.header-icon-box{width:32px;height:32px;background:var(--primary);color:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #f59e0b33}.header-title{font-size:1.5rem;font-weight:700;color:var(--text-main);letter-spacing:-.01em}.header-actions{display:flex;align-items:center;gap:.75rem}.btn-purple{background:#9333ea;color:#fff}.btn-purple:hover{background:#7e22ce}.focus\:outline-none:focus{outline:none}.focus\:ring-1:focus{box-shadow:0 0 0 1px var(--primary)}.focus\:ring-orange-500:focus{border-color:var(--primary)}.pl-9{padding-left:2.25rem}.pl-10{padding-left:2.5rem}.w-64{width:16rem}.w-24{width:6rem}.w-12{width:3rem}.h-9{height:2.25rem}.h-8,.w-8{height:2rem}.w-2{width:.5rem}.h-2{height:.5rem}.app-container{display:flex;flex-direction:column;height:100%}.app-content{display:flex;flex:1;overflow:hidden;position:relative}.app-layout{display:flex;height:100vh;background:var(--bg-main);color:#fff}.main-content-wrapper{flex:1;display:flex;flex-direction:column;overflow:hidden}.page-content{flex:1;overflow:hidden;position:relative;display:flex;flex-direction:column}.app-header{height:56px;background-color:var(--bg-sidebar);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;z-index:10;box-shadow:0 4px 6px -1px #0000001a}.top-header{height:64px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 2rem;background:var(--bg-sidebar)}.logo{display:flex;align-items:center;gap:12px}.logo h1{font-size:20px;font-weight:700;letter-spacing:-.025em}.logo span{color:var(--primary)}.header-recipe-name{margin-left:40px;font-size:16px;font-weight:600;color:var(--text-secondary)}.header-actions{margin-left:auto;display:flex;gap:12px}.header-left{display:flex;align-items:center}.user-profile .avatar{width:36px;height:36px;background:linear-gradient(135deg,#f59e0b,#d97706);border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600}.sidebar{width:280px;background-color:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:20px}.sidebar-header{display:flex;align-items:center;gap:10px;margin-bottom:20px;color:var(--text-secondary)}.sidebar-header h2{font-size:16px;font-weight:600;color:var(--text-main)}.sidebar-toggle-btn{margin-right:10px;color:var(--text-secondary)}.sidebar-toggle-btn:hover{color:var(--primary)}.app-sidebar{width:18%;background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:1.5rem;transition:width .3s cubic-bezier(.4,0,.2,1);overflow:hidden}.app-sidebar.collapsed{width:5%;padding:1.5rem .5rem}.sidebar-brand{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin-bottom:2.5rem;color:var(--primary);font-weight:700;font-size:1.2rem;min-height:32px}.app-sidebar.collapsed .sidebar-brand{justify-content:center}.logo-icon{width:32px;height:32px;background:var(--primary);color:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:.9rem}.sidebar-nav{display:flex;flex-direction:column;gap:.5rem;flex:1}.nav-item{display:flex;align-items:center;justify-content:flex-start;gap:.8rem;padding:.8rem;border-radius:8px;color:var(--text-secondary);text-decoration:none;transition:all .2s;background:transparent;border:none;cursor:pointer;width:100%;font-size:.95rem}.app-sidebar.collapsed .nav-item{justify-content:center;padding:.8rem 0}.nav-item:hover,.nav-item.active{background:var(--bg-main);color:var(--text-main)}.nav-item.active{background:#f59e0b1a;color:var(--primary)}.collapse-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:4px;border-radius:4px;transition:all .2s}.collapse-btn:hover{background:#ffffff0d;color:var(--primary)}.recipe-list{flex:1;display:flex;flex-direction:column;gap:6px;overflow-y:auto;padding-right:4px}.landing-page{height:100vh;background:linear-gradient(#0f172ae6,#0f172ae6),url(https://images.unsplash.com/photo-1556910103-1c02745a30bf?ixlib=rb-1.2.1&auto=format&fit=crop&w=1950&q=80);background-size:cover;background-position:center;color:#fff;display:flex;flex-direction:column}.landing-header{padding:2rem 4rem;display:flex;justify-content:space-between;align-items:center}.landing-hero{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:1.5rem}.landing-hero h1{font-size:4rem;font-weight:800;line-height:1.1}.landing-hero .highlight{color:var(--accent)}.landing-hero p{font-size:1.2rem;color:var(--text-secondary);max-width:600px}.dashboard-page{padding:2rem;overflow-y:auto}.page-title{font-size:1.8rem;font-weight:700;margin-bottom:2rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.5rem;margin-bottom:3rem}.stat-card{background:var(--bg-sidebar);border:1px solid var(--border);padding:1.5rem;border-radius:16px;display:flex;align-items:center;gap:1.5rem}.stat-icon{width:50px;height:50px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff}.bg-blue{background:#3b82f6}.bg-green{background:#10b981}.bg-purple{background:#8b5cf6}.stat-info{display:flex;flex-direction:column}.stat-value{font-size:1.5rem;font-weight:700}.stat-label{color:var(--text-secondary);font-size:.9rem}.recipe-list-page{padding:1.5rem;overflow-y:auto;height:100%}.page-header{display:flex;justify-content:space-between;align-items:center}.recipe-search-bar{margin-bottom:1.5rem;display:flex;flex-direction:column;gap:.75rem}.search-input-wrapper{position:relative;display:flex;align-items:center}.search-input-wrapper .search-icon{position:absolute;left:12px;color:var(--text-muted);pointer-events:none}.search-input{width:100%;padding:.65rem .75rem .65rem 2.4rem;background:var(--bg-sidebar);border:1px solid var(--border);border-radius:10px;color:var(--text-main);font-size:.9rem;outline:none;transition:border-color .2s,box-shadow .2s}.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px #f59e0b26}.search-input::placeholder{color:var(--text-muted)}.search-input:disabled{opacity:.4;cursor:not-allowed}.filter-controls{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.filter-chip{display:inline-flex;align-items:center;gap:.3rem;padding:.35rem .7rem;border-radius:20px;font-size:.78rem;font-weight:500;background:var(--bg-sidebar);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:all .2s;white-space:nowrap}.filter-chip:hover{border-color:var(--primary);color:var(--text-main)}.filter-chip.active{background:#f59e0b26;border-color:var(--primary);color:var(--primary)}.filter-chip:disabled{opacity:.4;cursor:not-allowed}.filter-chip.inventory-chip.active{background:#10b98126;border-color:#10b981;color:#10b981}.filter-chip.clear-chip{background:#ef44441a;border-color:#ef44444d;color:#ef4444}.filter-chip.clear-chip:hover{background:#ef444433;border-color:#ef4444}.calorie-filter{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .6rem;border-radius:20px;background:var(--bg-sidebar);border:1px solid var(--border);color:var(--text-secondary);font-size:.78rem}.calorie-input{width:70px;background:transparent;border:none;color:var(--text-main);font-size:.78rem;outline:none;-moz-appearance:textfield}.calorie-input::-webkit-outer-spin-button,.calorie-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.calorie-input:disabled{opacity:.4;cursor:not-allowed}.sort-control{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .6rem;border-radius:20px;background:var(--bg-sidebar);border:1px solid var(--border);color:var(--text-secondary);font-size:.78rem}.sort-select{background:transparent;border:none;color:var(--text-main);font-size:.78rem;outline:none;cursor:pointer;-webkit-appearance:none}.sort-select option{background:var(--bg-sidebar);color:var(--text-main)}.sort-select:disabled{opacity:.4;cursor:not-allowed}.recipe-card-wrapper{position:relative}.pantry-match-badge{position:absolute;top:10px;right:10px;padding:.25rem .6rem;border-radius:12px;font-size:.75rem;font-weight:700;z-index:2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 2px 8px #0000004d}.pantry-match-badge.high{background:#10b981d9;color:#fff}.pantry-match-badge.medium{background:#f59e0bd9;color:#fff}.pantry-match-badge.low{background:#ef4444b3;color:#fff}.recipes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1.5rem}.recipe-card{background:var(--bg-sidebar);border:1px solid var(--border);border-radius:12px;overflow:hidden;cursor:pointer;transition:transform .2s,box-shadow .2s}.recipe-card:hover{transform:translateY(-4px);box-shadow:0 10px 20px -5px #0000004d;border-color:var(--accent)}.recipe-card-image{height:140px;background:var(--bg-main);display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--border)}.recipe-card-content{padding:1rem}.recipe-card-content h3{font-size:1.1rem;font-weight:600;margin-bottom:.5rem;color:#fff;min-height:calc(1.4em * 3);line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.recipe-card-description{font-size:.85rem;color:var(--text-secondary);margin-bottom:1rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card-footer{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--text-muted)}.recipe-meta{display:flex;align-items:center;gap:.3rem}.recipe-macros-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.8rem;flex-wrap:nowrap}.macro-calories{display:flex;align-items:center;gap:.35rem;font-size:.85rem;font-weight:600;color:#fff;background:linear-gradient(135deg,#f97316,#ea580c);padding:.35rem .6rem;border-radius:6px;flex-shrink:0}.macro-group{display:flex;align-items:center;gap:.35rem;flex-shrink:0}.macro-item{display:flex;align-items:center;gap:.2rem;font-size:.7rem;font-weight:500;color:var(--text-secondary);padding:.2rem .4rem;border-radius:4px;background:transparent;border:1px solid rgba(255,255,255,.15)}.macro-carbs,.macro-protein,.macro-fat{background:transparent}.recipe-item{background:none;border:1px solid transparent;padding:10px 14px;border-radius:10px;color:var(--text-secondary);text-align:left;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s}.recipe-item:hover{background-color:#ffffff0d;color:var(--text-main)}.recipe-item.active{background-color:#f59e0b1a;border-color:#f59e0b4d;color:var(--primary)}@media(max-width:768px){.app-layout.mobile-view{position:relative}.app-layout.mobile-view .main-content-wrapper{width:100%;margin-left:0;transition:margin-left .3s cubic-bezier(.4,0,.2,1),width .3s cubic-bezier(.4,0,.2,1)}.app-layout.mobile-view.sidebar-collapsed .app-sidebar{display:none;width:0;padding:0;border:none}.app-layout.mobile-view .app-sidebar{position:absolute;left:0;top:0;bottom:0;z-index:50;height:100vh;box-shadow:4px 0 10px #00000080;width:70px}.app-layout.mobile-view:not(.sidebar-collapsed) .main-content-wrapper{margin-left:70px;width:calc(100% - 70px)}.app-layout.mobile-view.sidebar-collapsed .main-content-wrapper{margin-left:0;width:100%}.app-layout.mobile-view .top-header{position:relative}.rotate-180{transform:rotate(180deg)}}.btn{display:flex;align-items:center;gap:8px;padding:8px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);border:1px solid transparent}.btn-primary{background-color:var(--primary);color:#fff;box-shadow:0 4px 14px #f59e0b63}.btn-primary:hover{background-color:var(--primary-hover);transform:translateY(-1px)}.btn-purple{background-color:#a855f7;color:#fff;box-shadow:0 4px 14px #a855f763}.btn-purple:hover{background-color:#9333ea;transform:translateY(-1px)}.btn-secondary{background-color:var(--bg-sidebar);border-color:var(--border);color:var(--text-main)}.btn-secondary:hover{background-color:var(--bg-input);border-color:var(--text-secondary)}.btn-danger{background-color:#ef4444;color:#fff;box-shadow:0 4px 14px #ef44444d}.btn-danger:hover{background-color:#dc2626;transform:translateY(-1px)}.btn-outline{background:none;border-color:var(--primary);color:var(--primary)}.btn-outline:hover{background-color:#f59e0b1a}.btn-full{width:100%;justify-content:center}.btn-text{background:none;border:none;color:var(--text-secondary);font-size:.85rem;font-weight:600;cursor:pointer}.btn-small{background:var(--primary);color:#fff;border:none;padding:.4rem .8rem;border-radius:8px;font-size:.85rem;font-weight:600;cursor:pointer}.btn-large{padding:1rem 2rem;font-size:1.1rem;gap:.5rem}.icon-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:.5rem;border-radius:50%}.icon-btn:hover{background:var(--bg-main);color:var(--text-main)}.search-bar{display:flex;align-items:center;gap:10px;background-color:var(--bg-main);border:1px solid var(--border);border-radius:10px;padding:10px 14px;margin-bottom:20px;transition:all .2s}.search-bar:focus-within{border-color:var(--primary);box-shadow:0 0 0 2px #f59e0b1a}.search-bar input{background:none;border:none;color:var(--text-main);outline:none;width:100%;font-size:13px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{font-size:12px;font-weight:500;color:var(--text-secondary)}.form-group input,.form-group select,.form-group textarea{background-color:var(--bg-input);border:1px solid var(--border);border-radius:8px;padding:10px 12px;color:var(--text-main);font-family:inherit;font-size:13px;transition:all .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary);outline:none;background-color:#3d4a61;box-shadow:0 0 0 2px #f59e0b1a}.recipe-title-input{font-size:1rem;font-weight:700;color:#fff;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:.5rem 1rem;margin:.5rem;width:50%;transition:all .2s ease;outline:none}.recipe-title{font-size:1rem;font-weight:700;color:#fff;padding:.5rem 1rem;margin:.5rem;width:50%}.recipe-title-input:focus{background:#ffffff26;border-color:#fff6}.recipe-title-input::placeholder{color:#ffffff80}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1.5rem;animation:fadeIn .2s ease-out}.modal-content{background:var(--bg-sidebar);border:1px solid var(--border);border-radius:20px;width:100%;max-width:500px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 25px 50px -12px #00000080;animation:modalPop .3s cubic-bezier(.34,1.56,.64,1)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalPop{0%{opacity:0;transform:scale(.9) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{padding:1.25rem 1.5rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.modal-header h2,.modal-header h3{font-size:1.25rem;font-weight:700;color:var(--text-main);flex:1}.modal-icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;background-color:#ef44441a;border-radius:12px}.modal-body{padding:1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1rem}.modal-body p{color:var(--text-secondary);font-size:14px;line-height:1.5}.modal-footer{padding:1.25rem 1.5rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:1rem}.modal-search{position:relative}.modal-search input{width:100%;background:var(--bg-main);border:1px solid var(--border);border-radius:10px;padding:.75rem 1rem .75rem 2.5rem;color:#fff;font-size:.95rem}.modal-search svg{position:absolute;left:.8rem;top:50%;transform:translateY(-50%);color:var(--text-muted)}.recipe-selection-list{display:flex;flex-direction:column;gap:.5rem}.selection-item{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;border-radius:10px;cursor:pointer;transition:background .2s}.selection-item:hover{background:#ffffff0d}.selection-item.selected{background:#f59e0b1a}.selection-checkbox{width:20px;height:20px;border:2px solid var(--border);border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all .2s}.selected .selection-checkbox{background:var(--primary);border-color:var(--primary)}.stock-table-container{background-color:var(--bg-sidebar);border-radius:.5rem;border:1px solid var(--border);overflow:hidden;box-shadow:0 1px 2px #0000000d}.bulk-action-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;margin-bottom:1rem;background-color:var(--bg-sidebar);border:1px solid var(--border);border-radius:.5rem}.bulk-action-info{display:flex;align-items:center;gap:.5rem}.bulk-count{font-size:.875rem;font-weight:600;color:var(--primary)}.bulk-action-buttons{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.btn-sm{padding:.375rem .75rem;font-size:.75rem}.stock-item-select{display:flex;align-items:center;justify-content:center;padding-right:.75rem;cursor:pointer}.stock-select-indicator{display:flex;align-items:center;margin-right:.75rem;flex-shrink:0}.stock-item-selected{background-color:#f973161a}.stock-item-product{display:flex;align-items:center}.stock-table-header{display:grid;grid-template-columns:5fr 3fr 2fr 2fr;gap:1rem;padding:1rem;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);border-bottom:1px solid var(--border)}.stock-header-quantity,.stock-header-status{text-align:center}.stock-header-actions{text-align:right}.stock-table-body{max-height:60vh;overflow-y:auto}.stock-item{border-bottom:1px solid var(--border);transition:background-color .15s ease}.stock-item:last-child{border-bottom:none}.stock-item:hover{background-color:#1f293780}.stock-item-desktop-wrapper{display:flex;align-items:center}.stock-item-desktop-wrapper .stock-item-select{padding:1rem;padding-right:0}.stock-item-desktop{display:grid;grid-template-columns:5fr 3fr 2fr 2fr;gap:1rem;padding:1rem;align-items:center;flex:1}.stock-item-desktop:has(.stock-item-actions:empty),.stock-item-desktop:not(:has(.stock-item-actions)){grid-template-columns:5fr 3fr 2fr}.stock-item-mobile{display:none}.stock-item-name{color:#fff;font-weight:500;font-size:.875rem;margin:0}.stock-item-brand{color:var(--text-secondary);font-size:11px;margin:0}.stock-item-stepper{display:flex;justify-content:center}.stepper-controls{display:flex;align-items:center;gap:12px}.stepper-value{text-align:center;font-family:monospace;color:#fff;display:flex;flex-direction:column;justify-content:center;line-height:1;min-width:40px}.stepper-quantity{font-weight:700;font-size:1.125rem}.stepper-delta{font-size:9px;font-weight:700;margin-top:4px}.stepper-delta.delta-positive{color:#22c55e}.stepper-delta.delta-negative{color:#ef4444}.stock-item-status{display:flex;justify-content:center}.stock-status-pill{display:inline-flex;align-items:center;border-radius:9999px;padding:.25rem .75rem;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.stock-status-low{background-color:#ef444433;color:#f87171}.stock-status-ok{background-color:#22c55e33;color:#4ade80}.stock-item-actions{display:flex;justify-content:flex-end}.stock-delete-btn{height:36px;width:36px;display:flex;align-items:center;justify-content:center;border-radius:.5rem;border:1px solid rgba(239,68,68,.2);background-color:#ef44441a;color:#ef4444;cursor:pointer;transition:all .15s ease;box-shadow:0 1px 2px #0000000d}.stock-delete-btn:hover{background-color:#ef444433}.stock-empty-state{padding:3rem;text-align:center;color:var(--text-secondary);font-size:.875rem}.stock-section-divider{padding:.5rem 1rem;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);background-color:#1f29374d}.shopping-checkbox{display:flex;align-items:center;justify-content:center;cursor:pointer}.shopping-checkbox input{display:none}.shopping-checkbox-mark{width:24px;height:24px;border:2px solid var(--primary);border-radius:4px;background-color:transparent;display:flex;align-items:center;justify-content:center;transition:all .15s ease;color:#fff}.shopping-checkbox input:checked+.shopping-checkbox-mark{background-color:var(--primary)}.shopping-checkbox:hover .shopping-checkbox-mark{border-color:var(--primary-light, #fb923c)}@media(max-width:767px){.stock-table-header,.stock-item-desktop{display:none}.stock-item-mobile{display:flex;flex-direction:column;gap:.75rem;padding:1rem}.stock-mobile-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem}.stock-mobile-info{flex:1;min-width:0}.stock-mobile-info .stock-item-name{font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stock-mobile-controls{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding-top:.5rem;border-top:1px solid var(--border)}.stock-mobile-controls .stepper-controls{flex:1;justify-content:flex-start;gap:16px}.stock-mobile-controls .stepper-quantity{font-size:1.25rem}.stock-mobile-controls .stepper-value{min-width:50px}}.scan-modal-wide{max-width:1200px;max-height:90vh}.scan-results-split{display:flex;gap:1rem;min-height:0;flex:1}.scan-pdf-viewer{flex:0 0 40%;min-height:400px;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--bg-main)}.scan-pdf-iframe{width:100%;height:100%;border:none;min-height:400px}.scan-table-wrapper-in-split{flex:1;min-width:0}@media(max-width:768px){.scan-results-split{flex-direction:column}.scan-pdf-viewer{flex:none;min-height:300px}}.scan-label{display:block;font-size:.8rem;font-weight:500;color:var(--text-secondary);margin-bottom:.5rem}.scan-select{width:100%;padding:.625rem 1rem;border-radius:10px;background:var(--bg-main);border:1px solid var(--border);color:var(--text-main);font-size:.875rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;transition:border-color .2s;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.scan-select:focus{border-color:var(--primary);outline:none}.scan-dropzone{border:2px dashed var(--border);border-radius:12px;padding:2.5rem 1.5rem;text-align:center;cursor:pointer;transition:all .2s;display:flex;flex-direction:column;align-items:center;gap:1rem}.scan-dropzone:hover{border-color:var(--primary);background:#f9731608}.scan-dropzone-icon{width:56px;height:56px;border-radius:50%;background:var(--bg-main);display:flex;align-items:center;justify-content:center;transition:transform .2s}.scan-dropzone:hover .scan-dropzone-icon{transform:scale(1.1)}.scan-dropzone-svg{color:var(--text-secondary);transition:color .2s}.scan-dropzone:hover .scan-dropzone-svg{color:var(--primary)}.scan-dropzone-info{display:flex;flex-direction:column;align-items:center;gap:.25rem}.scan-dropzone-title{color:var(--text-main);font-weight:500;font-size:1rem;margin:0}.scan-dropzone-subtitle{color:var(--text-secondary);font-size:.8rem;margin:0}.scan-dropzone-filename{color:var(--primary);font-weight:600;font-size:.95rem}.scan-dropzone-size{color:var(--text-secondary);font-size:.75rem}.scan-error{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-radius:8px;background:#ef44441a;border:1px solid rgba(239,68,68,.2);color:#f87171;font-size:.8rem}.scan-loading-body{display:flex;align-items:center;justify-content:center;min-height:250px}.scan-loading-container{display:flex;flex-direction:column;align-items:center;gap:.75rem;text-align:center}.scan-loading-container h4{color:var(--text-main);font-weight:600;font-size:1.1rem;margin:0}.scan-loading-container p{color:var(--text-secondary);font-size:.85rem;margin:0}.scan-progress-bar{width:200px;height:4px;border-radius:4px;background:var(--bg-main);overflow:hidden;margin-top:.5rem}.scan-progress-fill{height:100%;background:var(--primary);border-radius:4px;transition:width .3s ease}.scan-results-body{padding:1rem 1.5rem!important;gap:.75rem!important}.scan-results-header{display:flex;align-items:center;justify-content:space-between}.scan-results-info{display:flex;align-items:center;gap:.5rem;font-size:.85rem;font-weight:500;color:var(--text-main)}.scan-table-wrapper{border:1px solid var(--border);border-radius:10px;overflow:hidden;max-height:400px;overflow-y:auto}.scan-results-table{width:100%;border-collapse:collapse;font-size:.8rem}.scan-results-table thead{position:sticky;top:0;z-index:2}.scan-results-table th{padding:.75rem;text-align:left;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);background:var(--bg-main);border-bottom:1px solid var(--border)}.scan-results-table td{padding:.5rem .75rem;border-bottom:1px solid var(--border);vertical-align:middle}.scan-results-table tr:last-child td{border-bottom:none}.scan-th-check,.scan-td-check{width:44px;text-align:center;padding-left:.75rem!important}.scan-th-num{width:90px;text-align:right}.scan-th-unit{width:80px}.scan-row-selected{background:#f973160f}.scan-inline-input{width:100%;background:transparent;border:1px solid transparent;border-radius:6px;padding:.375rem .5rem;color:var(--text-main);font-size:.8rem;transition:all .15s}.scan-inline-input:hover{border-color:var(--border)}.scan-inline-input:focus{outline:none;border-color:var(--primary);background:var(--bg-main)}.scan-input-name{font-weight:500}.scan-input-num{text-align:right;font-family:monospace;max-width:80px}.scan-inline-select{background:transparent;border:1px solid transparent;border-radius:6px;padding:.375rem .5rem;color:var(--text-main);font-size:.8rem;cursor:pointer;transition:all .15s;-webkit-appearance:none;-moz-appearance:none;appearance:none}.scan-inline-select:hover{border-color:var(--border)}.scan-inline-select:focus{outline:none;border-color:var(--primary);background:var(--bg-main)}.searchable-select-container{position:relative;width:100%}.searchable-select-trigger{display:flex!important;align-items:center;justify-content:space-between;width:100%;cursor:pointer;background:transparent;padding-right:.5rem;background-image:none!important}.searchable-select-trigger.disabled{opacity:.5;cursor:not-allowed}.searchable-select-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100px}.searchable-select-icon{color:var(--text-secondary);flex-shrink:0;margin-left:4px}.searchable-select-dropdown{background:var(--bg-main, #1e293b);border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 20px #0006;display:flex;flex-direction:column;overflow:hidden;max-height:250px}.searchable-select-search{display:flex;align-items:center;padding:.6rem .75rem;border-bottom:1px solid var(--border);background:var(--bg-main)}.searchable-select-search-icon{color:var(--text-secondary);margin-right:.5rem}.searchable-select-input{background:transparent;border:none;color:var(--text-main);font-size:.85rem;width:100%;outline:none}.searchable-select-input::placeholder{color:var(--text-secondary)}.searchable-select-options{overflow-y:auto;flex:1}.searchable-select-option{padding:.6rem .75rem;display:flex;align-items:center;justify-content:space-between;cursor:pointer;font-size:.85rem;color:var(--text-main);transition:background .15s}.searchable-select-option:hover{background:var(--bg-hover)}.searchable-select-option.selected{background:#f973161a;color:var(--primary);font-weight:500}.searchable-select-option-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:8px}.searchable-select-check{color:var(--primary);flex-shrink:0}.searchable-select-empty{padding:1.5rem 1rem;text-align:center;color:var(--text-secondary);font-size:.85rem;font-style:italic}.diagram-area{flex:1;position:relative;background-color:#f1f5f9}.diagram-container{width:100%;height:100%}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#0f172ab3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:20}.animate-spin{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);font-size:16px;background-color:var(--bg-main)}.custom-node{padding:8px 10px;border-radius:12px;width:150px;display:flex;align-items:center;gap:12px;border:2px solid transparent;box-shadow:0 4px 12px #0000001a;transition:all .2s;background-color:#fff;color:#000}.custom-node.selected{border-color:var(--accent)!important;box-shadow:0 0 0 3px #0ea5e933}.ingredient-node{background-color:var(--node-food);border-color:var(--node-food-border);border-radius:50px}.ingredient-node.final-node{background-color:var(--node-final);border-color:var(--node-final-border)}.ingredient-node.intermediate-node{background-color:var(--node-intermediate);border-color:var(--node-intermediate-border)}.step-node{background-color:var(--node-step);border-color:var(--node-step-border);border-radius:12px}.node-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background-color:#0000000d;border-radius:50%;flex-shrink:0}.node-content{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.node-type-label{font-size:8px;text-transform:uppercase;font-weight:800;letter-spacing:.05em;opacity:.6;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-name{font-size:13px;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;display:block;position:relative;cursor:help}.node-meta{margin-top:4px;display:flex;flex-wrap:wrap;gap:3px}.meta-chip{font-size:10px;font-weight:600;padding:2px 6px;background-color:#0000000d;border-radius:4px;display:flex;align-items:center}.time-chip{background-color:#0ea5e91a;color:#000}.node-name:hover:after{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:8px;padding:8px 12px;background-color:#000000e6;color:#fff;font-size:12px;font-weight:500;white-space:nowrap;border-radius:6px;z-index:1000;pointer-events:none;box-shadow:0 4px 12px #0000004d}.node-name:hover:before{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:2px;border:6px solid transparent;border-top-color:#000000e6;z-index:1000;pointer-events:none}.food-palette{position:absolute;top:16px;left:16px;max-height:calc(100% - 32px);width:280px;display:flex;flex-direction:column;background-color:var(--bg-sidebar);background-color:#1e293b;border:1px solid var(--border);border-radius:12px;box-shadow:0 4px 20px #00000040;z-index:10;overflow:hidden}.palette-section-wrapper{flex:1;display:flex;flex-direction:column;min-height:0;padding-bottom:0;overflow:hidden}.food-list{flex:1;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:6px;padding:0 12px 12px}.palette-header{padding:16px 16px 8px;flex-shrink:0;margin-bottom:0}.palette-header h3{margin-bottom:4px}.palette-search{padding:0 12px 8px;flex-shrink:0;display:flex;align-items:center;gap:8px;background-color:transparent;border:none}.palette-search input{background:var(--bg-main);border:1px solid var(--border);border-radius:8px;padding:8px 12px;color:var(--text-main);outline:none;width:100%;font-size:12px}.palette-search input:focus{border-color:var(--primary);box-shadow:0 0 0 2px #f59e0b1a}.food-list::-webkit-scrollbar{width:4px}.food-list::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:4px}.food-palette-item{display:flex;align-items:center;gap:8px;padding:6px 10px;background-color:var(--bg-main);border:1px solid var(--border);border-radius:10px;cursor:grab;transition:all .2s;flex-shrink:0}.food-palette-item:hover{border-color:var(--primary);background-color:#f59e0b0d;transform:translate(2px)}.food-palette-item:active{cursor:grabbing}.food-palette-item .food-icon{color:var(--primary);opacity:.8}.food-palette-item .food-name{font-size:12px;font-weight:500;color:var(--text-main);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step-palette-item:hover{border-color:var(--accent);background-color:#0ea5e90d}.step-palette-item .step-icon{color:var(--accent);opacity:.8}.palette-pagination{flex-shrink:0;padding:8px 12px;background-color:transparent;border-top:none;display:flex;align-items:center;justify-content:space-between}.palette-pagination button{background:none;border:none;border-radius:6px;color:var(--text-secondary);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;transition:all .2s}.palette-pagination button:hover:not(:disabled){border-color:transparent;color:var(--text-main);background-color:var(--bg-input)}.palette-pagination button:disabled{opacity:.3;cursor:not-allowed}.palette-pagination span{font-size:11px;font-weight:600;color:var(--text-secondary)}.palette-divider{height:1px;background-color:var(--border);flex-shrink:0;margin:0}.palette-header h3,.palette-section h3{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);font-weight:700;margin-bottom:8px}.palette-item.generic-step{width:100%;height:auto;padding:12px;display:flex;align-items:center;gap:12px;background-color:var(--bg-main);border:1px solid var(--border);border-radius:10px;color:var(--text-secondary);cursor:grab;transition:all .2s}.palette-item.generic-step:hover{border-color:var(--accent);color:var(--accent);background-color:#0ea5e90d}.palette-item.generic-step span{font-size:13px;font-weight:600}.palette-loading{display:flex;justify-content:center;padding:20px;color:var(--text-secondary)}.no-foods{font-size:12px;color:var(--text-secondary);text-align:center;padding:20px}.editor-sidebar{width:320px;background-color:var(--bg-sidebar);border-left:1px solid var(--border);padding:0;overflow-y:auto;display:flex;flex-direction:column}.inspector-header{padding:20px;border-bottom:1px solid var(--border);background-color:#ffffff05}.inspector-header h3{font-size:15px;font-weight:600;display:flex;align-items:center;gap:10px}.inspector-content{padding:20px;display:flex;flex-direction:column;gap:20px}.editor-section h3{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);font-weight:700}.node-controls{margin-top:10px;display:flex;flex-direction:column;gap:8px}.ai-btn-header{background:linear-gradient(135deg,#a855f7,#7c3aed)!important;border:none!important;box-shadow:0 4px 14px #a855f763!important}.ai-btn-header:hover{filter:brightness(1.1);transform:translateY(-1px)}.ai-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0f172acc;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeIn .3s ease-out}.ai-modal{background-color:var(--bg-sidebar);border:1px solid var(--border);border-radius:20px;width:90%;max-width:500px;box-shadow:0 25px 50px -12px #00000080;animation:slideUp .4s cubic-bezier(.16,1,.3,1);overflow:hidden}.ai-modal-header{display:flex;align-items:center;justify-content:space-between;padding:24px;border-bottom:1px solid var(--border)}.ai-modal-header h3{display:flex;align-items:center;gap:12px;font-size:18px;font-weight:700;color:var(--text-main)}.ai-modal-header .close-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:50%;transition:all .2s}.ai-modal-header .close-btn:hover{background-color:#ffffff1a;color:var(--text-main)}.ai-modal-body{padding:24px}.ai-modal-body p{color:var(--text-secondary);font-size:14px;margin-bottom:16px;line-height:1.5}.ai-modal-body textarea{width:100%;min-height:120px;background-color:var(--bg-main);border:1px solid var(--border);border-radius:12px;padding:16px;color:var(--text-main);font-family:inherit;font-size:14px;resize:vertical;transition:all .2s}.ai-modal-body textarea:focus{border-color:#a855f7;outline:none;box-shadow:0 0 0 4px #a855f71a}.ai-model-selector{margin-top:16px;display:flex;flex-direction:column;gap:8px}.ai-model-selector label{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.ai-model-selector select{width:100%;background-color:var(--bg-main);border:1px solid var(--border);border-radius:12px;padding:10px 16px;color:var(--text-main);font-family:inherit;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;cursor:pointer;transition:all .2s}.ai-model-selector select:focus{border-color:#a855f7;outline:none;box-shadow:0 0 0 4px #a855f71a}.ai-modal-footer{padding:16px 24px 24px;display:flex;justify-content:flex-end;gap:12px;background-color:#0000001a}.ai-btn{background:linear-gradient(135deg,#a855f7,#7c3aed);color:#fff;border:none}.ai-btn:disabled{opacity:.5;cursor:not-allowed;filter:grayscale(.5)}.ai-generating{z-index:200;background-color:#0f172ae6}.ai-loader-container{position:relative;display:flex;align-items:center;justify-content:center;margin-bottom:24px}.ai-sparkle-icon{position:absolute;animation:pulse-ai 2s infinite ease-in-out}@keyframes pulse-ai{0%{transform:scale(1);opacity:.8;filter:drop-shadow(0 0 0px #a855f7)}50%{transform:scale(1.2);opacity:1;filter:drop-shadow(0 0 20px #a855f7)}to{transform:scale(1);opacity:.8;filter:drop-shadow(0 0 0px #a855f7)}}.ai-generating h3{font-size:24px;font-weight:700;background:linear-gradient(135deg,#a855f7,#7c3aed);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:8px}.ai-generating p{color:var(--text-secondary);font-size:15px}.ai-logs-container{width:100%;max-width:400px;background-color:#0000004d;border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:24px;display:flex;flex-direction:column;gap:8px;max-height:150px;overflow-y:auto;font-family:JetBrains Mono,monospace}.ai-log-entry{font-size:13px;color:#a855f7;display:flex;gap:8px;animation:fadeIn .3s ease-out}.ai-log-bullet{color:#7c3aed;font-weight:700}.menu-planner-container{height:100%}.recipe-chip[draggable=true]{cursor:grab}.recipe-chip[draggable=true]:active{cursor:grabbing}.recipe-chip.dragging{opacity:.4;transform:scale(.95)}.meal-body.drag-over,.meal-section-compact.drag-over{border-color:var(--primary)!important;background:#f59e0b1a;border-style:solid}.servings-badge{font-size:.7rem;font-weight:700;background:var(--primary);color:#fff;padding:2px 6px;border-radius:10px;white-space:nowrap}.dish-info-modal{max-width:400px}.dish-info-row{display:flex;align-items:center;gap:.75rem;padding:1rem;background:#0f172a80;border-radius:10px;margin-bottom:1rem}.dish-info-row svg{color:var(--primary)}.dish-info-label{font-weight:600;color:var(--text-secondary)}.dish-info-value{font-size:1.25rem;font-weight:700;color:var(--primary)}.dish-info-description{padding:1rem;background:#0f172a4d;border-radius:10px;color:var(--text-secondary);font-size:.9rem;line-height:1.5}.planner-controls{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem}.range-picker-row{display:flex;align-items:center;justify-content:flex-start;padding:0}.unified-date-picker{position:relative;-webkit-user-select:none;user-select:none}.picker-trigger{display:flex;align-items:center;gap:.75rem;background:var(--bg-sidebar);padding:.75rem 1.25rem;border-radius:12px;border:1px solid var(--border);cursor:pointer;transition:all .2s;min-width:200px}.picker-trigger:hover{border-color:var(--primary)}.selected-range-text{font-weight:600;font-size:.95rem;color:var(--text-main)}.picker-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.calendar-popover{position:absolute;top:calc(100% + 10px);left:0;background:var(--bg-sidebar);border:1px solid var(--border);border-radius:16px;padding:1.5rem;width:320px;box-shadow:0 20px 40px #0006;z-index:1000;animation:fadeInScale .2s ease-out}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.calendar-header button{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:50%}.calendar-header button:hover{background:#ffffff0d;color:#fff}.calendar-title{display:flex;gap:.5rem;font-weight:700;font-size:1.1rem}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:.75rem}.calendar-weekdays div{text-align:center;font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:0}.calendar-day{height:48px;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;-webkit-user-select:none;user-select:none}.day-number{font-size:.95rem;font-weight:500;z-index:10;position:relative;width:36px;height:36px;display:flex;align-items:center;justify-content:center}.calendar-day.in-range:before,.calendar-day.range-start:before,.calendar-day.range-end:before{content:"";position:absolute;top:50%;transform:translateY(-50%);height:26px;background:#f59e0b33;z-index:1}.calendar-day.in-range:before{left:0;right:0}.calendar-day.range-start:before{left:50%;right:0}.calendar-day.range-end:before{left:0;right:50%}.calendar-day.selected .day-number:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--primary);border-radius:50%;z-index:-1}.calendar-day:not(.selected):not(.empty):hover .day-number:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffff14;border-radius:50%;z-index:-1}.calendar-day.selected .day-number{color:#fff;font-weight:700}.calendar-day.today:after{content:"";position:absolute;bottom:4px;left:50%;transform:translate(-50%);width:4px;height:4px;background:var(--primary);border-radius:50%;z-index:15}.calendar-day.selected.today:after{background:#fff;bottom:6px}.calendar-footer{margin-top:1.5rem;display:flex;justify-content:space-between;padding-top:1rem;border-top:1px solid var(--border)}.menu-metadata-row{display:flex;gap:1rem}.menu-metadata-row input{flex:1;background:var(--bg-sidebar);border:1px solid var(--border);border-radius:10px;padding:.75rem 1rem;color:#fff;font-size:.95rem}.planner-grid-wrapper{flex:1;overflow-x:auto;margin-top:1rem}.planner-grid{display:flex;gap:1rem;min-height:600px;padding-bottom:1rem}.day-column{flex:1;min-width:200px;background:#1e293b80;border:1px solid var(--border);border-radius:16px;display:flex;flex-direction:column;height:fit-content;max-height:800px;overflow-y:auto}.day-header{padding:1rem;border-bottom:1px solid var(--border);background:var(--bg-sidebar);position:sticky;top:0;z-index:10;text-align:center}.day-header h3{font-size:1rem;font-weight:700;color:var(--accent)}.day-content{padding:.75rem;display:flex;flex-direction:column;gap:1rem}.meal-section{display:flex;flex-direction:column;gap:.5rem}.meal-header{display:flex;justify-content:space-between;align-items:center;padding:0 .25rem}.meal-title{font-size:.85rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.025em}.add-meal-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:4px;border-radius:6px;transition:all .2s;display:flex;align-items:center}.add-meal-btn:hover{color:var(--primary);background:#f59e0b1a}.meal-body{background:#0f172a80;border:1px dashed var(--border);border-radius:12px;padding:.75rem;min-height:80px;display:flex;flex-direction:column;gap:.5rem;transition:border-color .2s}.meal-body:hover{border-color:#f59e0b4d}.meal-empty-state{flex:1;display:flex;align-items:center;justify-content:center;font-size:.8rem;color:var(--text-muted);font-style:italic;text-align:center}.meal-section-compact{display:flex;align-items:center;justify-content:space-between;padding:0 .5rem;height:32px;border-radius:6px;transition:all .2s;cursor:default}.meal-section-compact:hover{background-color:#ffffff08}.meal-title-compact{font-size:.8rem;font-weight:500;color:var(--text-secondary);opacity:.7;text-transform:uppercase;letter-spacing:.025em}.add-btn-compact{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;opacity:.5;transition:all .2s}.meal-section-compact:hover .add-btn-compact{opacity:1;color:var(--primary);background-color:#f59e0b1a}.recipe-chip{display:flex;align-items:center;justify-content:space-between;background:var(--bg-sidebar);padding:.4rem .6rem;border-radius:8px;border:1px solid var(--border);gap:.5rem;animation:fadeIn .2s ease-out}.recipe-chip:hover{border-color:var(--accent)}.recipe-chip-name{font-size:.85rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.recipe-chip-name:hover{color:var(--accent)}.remove-chip-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;display:flex;align-items:center;padding:2px;border-radius:4px}.remove-chip-btn:hover{color:#ef4444;background:#ef44441a}.mobile-tabs{display:none;overflow-x:auto;gap:.5rem;padding:.5rem 0;margin-bottom:1rem;scrollbar-width:none}.mobile-tabs::-webkit-scrollbar{display:none}.tab-btn{flex:0 0 54px;height:64px;border-radius:12px;background:var(--bg-sidebar);border:1px solid var(--border);color:var(--text-secondary);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;gap:2px}.tab-day-num{font-size:1.1rem;font-weight:700}.tab-day-name{font-size:.7rem;font-weight:600;text-transform:uppercase;opacity:.7}.tab-btn.active{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 4px 12px #f59e0b33}.tab-btn.is-today{border-color:var(--primary);position:relative}.tab-btn.is-today:after{content:"";position:absolute;top:4px;right:4px;width:6px;height:6px;background:var(--primary);border-radius:50%}@media(max-width:1024px){.planner-grid{gap:.75rem}.day-column{min-width:180px}}@media(max-width:768px){.menu-planner-container{padding:1rem}.menu-planner-header{flex-direction:column;align-items:stretch}.header-actions{display:grid;grid-template-columns:1fr 1fr}.mobile-tabs{display:flex}.planner-grid-wrapper{overflow-x:hidden}.planner-grid{flex-direction:column;min-height:auto}.day-column{display:none;width:100%;max-height:none}.day-column.active{display:flex}.day-header{display:none}.menu-metadata-row{flex-direction:column}}.recipe-detail-container{display:grid;grid-template-columns:350px 1fr;gap:1.5rem;height:100%;overflow:hidden}.recipe-info-sidebar{background:var(--bg-sidebar);border:1px solid var(--border);border-radius:12px;display:flex;flex-direction:column;overflow:hidden}.recipe-hero-image{width:100%;height:200px;object-fit:cover;background:var(--bg-main)}.recipe-info-content{padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem;flex:1;overflow-y:auto}.recipe-info-header h3{font-size:1.2rem;font-weight:700;margin-bottom:.5rem;color:var(--text-main)}.recipe-description{color:var(--text-secondary);font-size:.9rem;line-height:1.5}.ingredients-section h4{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--text-main)}.ingredients-list{display:flex;flex-direction:column;gap:.8rem}.ingredient-item{display:flex;align-items:center;gap:.8rem;color:var(--text-secondary);font-size:.95rem}.ingredient-item .shopping-checkbox{margin:0}.ingredient-item .shopping-checkbox-mark{width:20px;height:20px}.recipe-graph-container{background:var(--bg-sidebar);border:1px solid var(--border);border-radius:12px;position:relative;overflow:hidden;display:flex;flex-direction:column}.graph-header{padding:1rem 1.5rem;border-bottom:1px solid var(--border);font-weight:600;font-size:1rem;background:#ffffff05}.graph-viewport{flex:1;position:relative;background:#e5e7eb}.graph-viewport.light-theme{background:#f3f4f6}.fullscreen-overlay-btn{position:absolute;top:1rem;right:1rem;transform:none;background:var(--primary);color:#fff;border:none;padding:.5rem;border-radius:8px;font-weight:600;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 6px -1px #0003;transition:transform .2s,background .2s;z-index:50;opacity:.9}.fullscreen-overlay-btn:hover{background:var(--primary-dark, #d97706);opacity:1;transform:scale(1.1)}.recipe-graph-container.fullscreen-mode{position:fixed!important;top:0;left:0;right:0;bottom:0;z-index:9999;border-radius:0;margin:0;width:100vw;height:100vh}.fullscreen-exit-btn{background:var(--primary);color:#fff;border:none;padding:.4rem 1rem;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:background .2s}.fullscreen-exit-btn:hover{background:var(--primary-dark)}.auth-container{display:flex;height:100vh;width:100%;align-items:center;justify-content:center;background:var(--bg-main);position:relative;overflow:hidden;color:var(--text-main);padding:1rem}.auth-container:before{content:"";position:absolute;width:700px;height:700px;background:radial-gradient(circle,rgba(245,158,11,.06) 0%,transparent 60%);top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:0}.auth-card{width:100%;max-width:440px;background-color:var(--bg-sidebar);border:1px solid rgba(255,255,255,.05);border-radius:20px;padding:3.5rem 2.5rem;box-shadow:0 30px 60px -12px #000000b3,0 0 0 1px #0000004d;position:relative;z-index:1;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.auth-header{display:flex;flex-direction:column;align-items:center;margin-bottom:2.5rem;text-align:center}.auth-icon-wrapper{background:linear-gradient(135deg,#f59e0b33,#f59e0b0d);padding:1.25rem;border-radius:20px;margin-bottom:1.25rem;border:1px solid rgba(245,158,11,.25);box-shadow:inset 0 2px 4px #ffffff1a,0 8px 16px #f59e0b1a;display:flex;align-items:center;justify-content:center;color:var(--primary)}.auth-icon-wrapper svg{filter:drop-shadow(0 2px 6px rgba(245,158,11,.3))}.auth-title{font-size:1.7rem;font-weight:800;color:var(--text-main);margin-bottom:.35rem;letter-spacing:-.025em}.auth-subtitle{font-size:.95rem;color:var(--text-secondary);line-height:1.5}.auth-subtitle-highlight{font-weight:700;color:var(--text-main)}.auth-form{display:flex;flex-direction:column;gap:1.25rem}.auth-form .form-group input{padding:.8rem 1rem;border-radius:10px;font-size:.95rem;background-color:#0f172a80;border:1px solid rgba(255,255,255,.1);color:var(--text-main);transition:all .25s cubic-bezier(.4,0,.2,1);width:100%;box-sizing:border-box}.auth-form .form-group input:focus{background-color:#0f172ad9;border-color:var(--primary);box-shadow:0 0 0 3px #f59e0b26,inset 0 1px 2px #0003;outline:none}.auth-form .form-group label{font-size:.85rem;margin-bottom:.35rem;color:var(--text-secondary);font-weight:500;display:block}.auth-input-icon-wrapper{position:relative;width:100%}.auth-input-icon-wrapper .auth-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--text-secondary);pointer-events:none;transition:color .2s ease}.auth-input-icon-wrapper:focus-within .auth-icon{color:var(--primary)}.auth-input-icon-wrapper input{padding-left:2.75rem!important}.alert-error{display:flex;align-items:flex-start;gap:.85rem;background-color:#ef444426;border:1px solid rgba(239,68,68,.4);border-radius:12px;padding:1rem 1.25rem;margin-bottom:1.5rem;color:#fca5a5;box-shadow:0 4px 12px #ef444414;animation:slideInDown .3s ease-out}.alert-error svg{flex-shrink:0;margin-top:2px}@keyframes slideInDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.alert-error p{font-size:.9rem;line-height:1.5;margin:0;flex:1}.auth-footer{margin-top:2rem;padding-top:1.75rem;text-align:center;font-size:.9rem;color:var(--text-secondary);border-top:1px solid rgba(255,255,255,.08)}.auth-link{color:var(--primary);font-weight:600;text-decoration:none;transition:all .2s ease;margin-left:.25rem}.auth-link:hover{color:var(--primary-hover);text-decoration:underline;text-underline-offset:4px}.verification-input{text-align:center;font-size:1.5rem!important;letter-spacing:.75em;padding-left:1em!important;font-weight:700;font-family:inherit;border-radius:12px!important;height:60px;transition:transform .2s}.verification-input:focus{transform:scale(1.02)}.auth-form .btn-primary{padding:.85rem 1.5rem;font-size:1rem;border-radius:10px;margin-top:.75rem;font-weight:700;box-shadow:0 4px 12px #f59e0b40;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;justify-content:center;align-items:center;width:100%}.auth-form .btn-primary:active{transform:scale(.98)}.auth-form .btn-primary:hover:not(:disabled){box-shadow:0 6px 16px #f59e0b59;transform:translateY(-2px)}.auth-form .btn-primary:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}
