.button{font-family:var(--font-body,Inter,Helvetica Neue,sans-serif);cursor:pointer;border:2px solid #0000;border-radius:.5rem;justify-content:center;align-items:center;gap:.5rem;font-weight:600;line-height:1;text-decoration:none;transition:background-color .3s ease-in-out,color .3s ease-in-out,border-color .3s ease-in-out,box-shadow .3s ease-in-out,transform .3s ease-in-out,filter .3s ease-in-out;display:inline-flex;position:relative;overflow:hidden}.button:focus-visible{outline:2px solid var(--color-interactive-default);outline-offset:2px}.button:disabled,.button.is-loading{opacity:.6;cursor:not-allowed}.button--sm{padding:.25rem 1rem;font-size:.875rem}.button--md{padding:.5rem 1.5rem;font-size:1rem}.button--lg{padding:1rem 2rem;font-size:1.125rem}.button--primary{color:#0f1729;background-color:var(--color-interactive-default);box-shadow:0 0 0 1px var(--color-interactive-default),inset 0 1px 0 #ffffff26,0 2px 4px #0003;border-color:var(--color-interactive-default)}:is(.button--primary:hover,.button--primary:active,.button--primary:focus-visible){background-color:var(--color-interactive-hover);box-shadow:0 0 0 1px var(--color-interactive-hover),0 0 24px #b8c7d680,0 4px 12px #00000040,inset 0 1px 0 #ffffff40;border-color:var(--color-interactive-hover);transform:translateY(-2px)scale(1.02)}.button--primary:active{box-shadow:0 0 0 1px var(--color-interactive-default),inset 0 2px 4px #0003;transform:translateY(0)scale(.98)}.button--secondary{color:var(--color-text-primary);background-color:var(--color-bg-elevated);border-color:var(--color-border-strong);box-shadow:0 1px 3px #00000026}:is(.button--secondary:hover,.button--secondary:active,.button--secondary:focus-visible){border-color:var(--color-interactive-default);transform:translateY(-1px);box-shadow:0 0 12px #b8c7d633,0 4px 8px #00000026}.button--secondary:active{transform:translateY(0);box-shadow:inset 0 1px 3px #00000026}.button--outline{color:var(--color-interactive-default);border-color:var(--color-interactive-default);background-color:#0000}:is(.button--outline:hover,.button--outline:active,.button--outline:focus-visible){color:#0f1729;background-color:var(--color-interactive-default);transform:translateY(-2px)scale(1.02);box-shadow:0 0 20px #b8c7d673,0 4px 12px #0003,inset 0 1px #fff3}.button--outline:active{transform:translateY(0)scale(.98);box-shadow:inset 0 2px 4px #0003}.button--ghost{color:var(--color-text-primary);background-color:#0000;border-color:#0000}:is(.button--ghost:hover,.button--ghost:active,.button--ghost:focus-visible){background-color:var(--color-bg-subtle);border-color:var(--color-border-default);transform:translateY(-1px)}.button--ghost:active{background-color:var(--color-bg-subtle);transform:translateY(0)}.button--danger{color:#fff;background-color:var(--color-danger);border-color:var(--color-danger);box-shadow:inset 0 1px #ffffff26,0 2px 4px #0003}:is(.button--danger:hover,.button--danger:active,.button--danger:focus-visible){background-color:#f64a4a;border-color:#f64a4a;transform:translateY(-2px)scale(1.02);box-shadow:0 0 20px #f8717180,0 4px 12px #0003,inset 0 1px #ffffff26}.button--danger:active{transform:translateY(0)scale(.98);box-shadow:inset 0 2px 4px #0000004d}.button--full-width{width:100%}.button__label{align-items:center;gap:.25rem;display:inline-flex}.button__icon{align-items:center;font-size:1.1em;display:inline-flex}.button__icon--left{margin-right:.25rem}.button__icon--right{margin-left:.25rem}.button__spinner{border:2px solid;border-right-color:#0000;border-radius:9999px;width:1em;height:1em;animation:.6s linear infinite button-spin;display:inline-block}@keyframes button-spin{to{transform:rotate(360deg)}}.button__ripple{pointer-events:none;background:#fff3;border-radius:9999px;animation:.6s ease-out forwards ripple-spread;position:absolute;transform:scale(0)}[data-theme=light] .button__ripple{background:#00000014}[data-theme=light] .button--primary{color:#fff;box-shadow:0 0 0 1px var(--color-interactive-default),0 2px 4px #0000001f}:is([data-theme=light] .button--primary:hover,[data-theme=light] .button--primary:active,[data-theme=light] .button--primary:focus-visible){color:#fff;box-shadow:0 0 0 1px var(--color-interactive-hover),0 0 20px #5e7a9466,0 4px 12px #00000026}[data-theme=light] .button--primary:active{box-shadow:0 0 0 1px var(--color-interactive-default),inset 0 2px 4px #00000026}:is([data-theme=light] .button--outline:hover,[data-theme=light] .button--outline:active,[data-theme=light] .button--outline:focus-visible){color:#fff;box-shadow:0 0 16px #5e7a9459,0 4px 12px #0000001a}[data-theme=light] .button--outline:active{box-shadow:inset 0 2px 4px #00000026}:is([data-theme=light] .button--danger:hover,[data-theme=light] .button--danger:active,[data-theme=light] .button--danger:focus-visible){box-shadow:0 0 16px #f8717166,0 4px 12px #0000001a}[data-theme=light] .button--danger:active{box-shadow:inset 0 2px 4px #0003}
.input{flex-direction:column;gap:.25rem;display:flex}.input--full-width{width:100%}.input--error .input__field{border-color:var(--color-danger)}.input--error .input__field:focus{outline-color:var(--color-danger)}.input__label{color:var(--color-text-primary);font-size:.875rem;font-weight:500}.input__wrapper{align-items:center;display:flex;position:relative}.input__icon{color:var(--color-text-tertiary);pointer-events:none;align-items:center;font-size:1.125rem;display:flex;position:absolute;left:1rem}.input__field{border:2px solid var(--color-border-default);width:100%;color:var(--color-text-primary);background-color:var(--color-bg-surface);border-radius:.5rem;padding:.5rem 1rem;font-size:1rem;line-height:1.5;transition:border-color .3s ease-in-out,box-shadow .3s ease-in-out;display:block}.input__icon+.input__field{padding-left:calc(1.25rem + 1.5em)}.input__field::placeholder{color:var(--color-text-tertiary)}.input__field:focus{outline:2px solid var(--color-interactive-default);outline-offset:-2px;border-color:var(--color-interactive-default)}.input__field:disabled{opacity:.5;cursor:not-allowed}.input__error{color:var(--color-danger);font-size:.875rem}.input__hint{color:var(--color-text-tertiary);font-size:.875rem}
.textarea{flex-direction:column;gap:.25rem;display:flex}.textarea--full-width{width:100%}.textarea--error .textarea__field{border-color:var(--color-danger)}.textarea--error .textarea__field:focus{outline-color:var(--color-danger)}.textarea__label{color:var(--color-text-primary);font-size:.875rem;font-weight:500}.textarea__field{border:2px solid var(--color-border-default);width:100%;min-height:120px;color:var(--color-text-primary);background-color:var(--color-bg-surface);resize:vertical;border-radius:.5rem;padding:.5rem 1rem;font-size:1rem;line-height:1.5;transition:border-color .3s ease-in-out,box-shadow .3s ease-in-out;display:block}.textarea__field::placeholder{color:var(--color-text-tertiary)}.textarea__field:focus{outline:2px solid var(--color-interactive-default);outline-offset:-2px;border-color:var(--color-interactive-default)}.textarea__field:disabled{opacity:.5;cursor:not-allowed}@media only screen and (max-width:767px){.textarea--compact-mobile .textarea__field{min-height:0}}.textarea__error{color:var(--color-danger);font-size:.875rem}.textarea__hint{color:var(--color-text-tertiary);font-size:.875rem}
.card{border:1px solid var(--glass-border);background-color:var(--color-bg-surface);border-radius:.75rem;transition:box-shadow .3s ease-in-out,transform .3s ease-in-out,border-color .3s ease-in-out;overflow:hidden}.card--default{box-shadow:none}.card--elevated{box-shadow:var(--shadow-md)}.card--outlined{box-shadow:none;border-color:var(--color-border-default)}.card--padding-sm{padding:.5rem}.card--padding-md{padding:1rem}.card--padding-lg{padding:1.5rem}.card--clickable{cursor:pointer}:is(.card--clickable:hover,.card--clickable:active,.card--clickable:focus-visible){box-shadow:var(--shadow-glow);border-color:var(--color-border-default);transform:translateY(-2px)}.card--clickable:active{transform:translateY(0)}.card__header{border-bottom:1px solid var(--color-border-default);margin-bottom:1rem;padding-bottom:.5rem}.card__body{flex:1}.card__footer{border-top:1px solid var(--color-border-default);margin-top:1rem;padding-top:.5rem}
.modal{z-index:500;top:0;bottom:0;left:0;right:0;max-width:100%;max-height:100%;color:var(--color-text-primary);background:0 0;border:none;border-radius:.75rem;margin:auto;padding:0;position:fixed;top:0;bottom:0;left:0;right:0}.modal::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#0f1729b3;animation:.2s modal-backdrop-in}.modal[open]{animation:.3s modal-slide-in}.modal--sm{width:min(400px,90vw)}.modal--md{width:min(600px,90vw)}.modal--lg{width:min(800px,90vw)}.modal__container{border:1px solid var(--glass-border);background-color:var(--color-bg-surface);max-height:85vh;box-shadow:var(--shadow-xl);border-radius:.75rem;flex-direction:column;display:flex;overflow:hidden}@supports (height:1dvh){.modal__container{max-height:85dvh}}.modal__header{border-bottom:1px solid var(--color-border-default);flex-shrink:0;justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.modal__title{font-family:var(--font-heading,Cormorant Garamond,Georgia,serif);color:var(--color-text-primary);font-size:1.25rem;font-weight:700}.modal__close{width:44px;height:44px;color:var(--color-text-secondary);border-radius:9999px;justify-content:center;align-items:center;transition:background-color .3s ease-in-out,color .3s ease-in-out;display:flex}.modal__close svg{width:20px;height:20px}:is(.modal__close:hover,.modal__close:active,.modal__close:focus-visible){color:var(--color-text-primary);background-color:var(--color-bg-subtle)}.modal__body{min-height:0;padding:1.5rem;overflow-y:auto}@keyframes modal-slide-in{0%{opacity:0;transform:translateY(16px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes modal-backdrop-in{0%{opacity:0}to{opacity:1}}
.badge{text-transform:capitalize;white-space:nowrap;border-radius:9999px;align-items:center;gap:.25rem;font-weight:600;line-height:1;display:inline-flex}.badge--sm{padding:2px .5rem;font-size:.75rem}.badge--md{padding:.25rem 1rem;font-size:.875rem}.badge--default{color:var(--color-text-secondary);background-color:var(--color-bg-elevated)}.badge--success{color:#34d399;background-color:#34d3991f}.badge--warning{color:#fbbf24;background-color:#fbbf241f}.badge--danger{color:#f87171;background-color:#f871711f}.badge--info{color:#60a5fa;background-color:#60a5fa1f}.badge--accent{color:var(--color-text-inverse);background-color:var(--color-interactive-default)}[data-theme=light] .badge--success{color:#166534;background-color:#dcfce7}[data-theme=light] .badge--warning{color:#854d0e;background-color:#fef9c3}[data-theme=light] .badge--danger{color:#991b1b;background-color:#fee2e2}[data-theme=light] .badge--info{color:#1e40af;background-color:#dbeafe}
.skeleton{background-color:var(--color-bg-elevated);border-radius:.25rem;position:relative;overflow:hidden}.skeleton:after{pointer-events:none;content:"";background:linear-gradient(90deg,#0000 0%,#b8c7d60f 40%,#b8c7d61f 50%,#b8c7d60f 60%,#0000 100%);animation:1.8s ease-in-out infinite shimmer-sweep;position:absolute;top:0;bottom:0;left:0;right:0}.skeleton--text{border-radius:.25rem;width:100%;height:1em}.skeleton--circular{border-radius:9999px;width:40px;height:40px}.skeleton--rectangular{border-radius:.5rem;width:100%;height:200px}[data-theme=light] .skeleton:after{background:linear-gradient(90deg,#0000 0%,#1a1f2e0a 40%,#1a1f2e14 50%,#1a1f2e0a 60%,#0000 100%)}@keyframes shimmer-sweep{0%{transform:translate(-100%)}to{transform:translate(100%)}}
.avatar{font-family:var(--font-heading,Cormorant Garamond,Georgia,serif);text-transform:uppercase;color:var(--color-text-secondary);background-color:var(--color-bg-secondary);-webkit-user-select:none;user-select:none;border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:inline-flex;overflow:hidden}.avatar--sm{width:32px;height:32px;font-size:.75rem}.avatar--md{width:40px;height:40px;font-size:.875rem}.avatar--lg{width:56px;height:56px;font-size:1.125rem}.avatar--xl{width:80px;height:80px;font-size:1.5rem}.avatar__image{object-fit:cover;width:100%;height:100%}.avatar__initials{line-height:1}
.spinner{color:var(--color-interactive-default);justify-content:center;align-items:center;display:inline-flex}.spinner--sm{width:20px;height:20px}.spinner--md{width:32px;height:32px}.spinner--lg{width:48px;height:48px}.spinner--inline{vertical-align:middle;margin-right:.25rem}.spinner--center{margin:2rem auto;display:flex}.spinner__ladle{width:100%;height:100%;animation:1.2s linear infinite ladle-stir}.spinner__orbit{transform-origin:50%;animation:1.2s linear infinite ladle-orbit-counter}@keyframes ladle-stir{to{transform:rotate(360deg)}}@keyframes ladle-orbit-counter{to{transform:rotate(-360deg)}}
.select{flex-direction:column;gap:.25rem;display:flex;position:relative}.select__label{color:var(--color-text-default);font-size:.875rem;font-weight:500}.select__wrapper{align-items:center;display:flex;position:relative}.select__field{border:2px solid var(--color-border-default);width:100%;height:44px;color:var(--color-text-default);background-color:var(--color-bg-default);cursor:pointer;-webkit-appearance:none;appearance:none;box-sizing:border-box;border-radius:.5rem;padding:.5rem 2rem .5rem 1rem;font-family:inherit;font-size:1rem;line-height:1.5;transition:border-color .3s ease-in-out,box-shadow .3s ease-in-out}.select__field:focus{box-shadow:0 0 0 3px var(--color-interactive-subtle);border-color:var(--color-interactive-default);outline:none}.select__field:disabled{opacity:.5;cursor:not-allowed}.select__field--error{border-color:var(--color-status-error)}.select__icon{color:var(--color-text-secondary);pointer-events:none;position:absolute;right:.5rem}.select__hint{color:var(--color-text-secondary);font-size:.75rem}.select__error{color:var(--color-status-error);font-size:.75rem}
.toggle{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;display:inline-flex}.toggle__track{background-color:var(--color-border-default);border-radius:9999px;flex-shrink:0;width:44px;height:24px;transition:background-color .3s ease-in-out;position:relative}.toggle__thumb{background-color:#fff;border-radius:9999px;width:20px;height:20px;transition:transform .3s ease-in-out;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0003}.toggle__input{opacity:0;width:0;height:0;position:absolute}.toggle__input:checked+.toggle__track{background-color:var(--color-interactive-default)}.toggle__input:checked+.toggle__track .toggle__thumb{transform:translate(20px)}.toggle__input:focus-visible+.toggle__track{outline:2px solid var(--color-interactive-default);outline-offset:2px}.toggle__input:disabled+.toggle__track{opacity:.5;cursor:not-allowed}.toggle__label{color:var(--color-text-primary);font-size:.875rem}.toggle--disabled{opacity:.5;cursor:not-allowed}
.checkbox{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:flex-start;gap:.5rem;display:inline-flex}.checkbox__input{opacity:0;width:0;height:0;position:absolute}.checkbox__input:checked+.checkbox__box{background-color:var(--color-interactive-default);border-color:var(--color-interactive-default)}.checkbox__input:checked+.checkbox__box .checkbox__check-path{stroke-dashoffset:0}.checkbox__input:focus-visible+.checkbox__box{outline:2px solid var(--color-interactive-default);outline-offset:2px}.checkbox__input:disabled+.checkbox__box{opacity:.5;cursor:not-allowed}.checkbox__box{border:2px solid var(--color-border-default);color:#fff;background-color:#0000;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;margin-top:2px;transition:border-color .3s ease-in-out,background-color .3s ease-in-out;display:flex}.checkbox__check{width:14px;height:14px}.checkbox__check-path{stroke-dasharray:24;stroke-dashoffset:24px;transition:stroke-dashoffset .25s}.checkbox__label{color:var(--color-text-primary);font-size:.875rem;line-height:1.5}.checkbox__input:checked~.checkbox__label{opacity:.5;text-decoration:line-through;transition:opacity .3s}.checkbox--disabled{opacity:.5;cursor:not-allowed}
.radio-group{flex-direction:column;gap:.5rem;display:flex}.radio-group__label{color:var(--color-text-default);font-size:.875rem;font-weight:500}.radio-group--horizontal .radio-group__options{flex-flow:wrap;gap:1rem}.radio-group__options{flex-direction:column;gap:.25rem;display:flex}.radio{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;display:inline-flex}.radio__input{opacity:0;width:0;height:0;position:absolute}.radio__input:checked+.radio__circle{border-color:var(--color-interactive-default)}.radio__input:checked+.radio__circle .radio__dot{opacity:1;transform:scale(1)}.radio__input:focus-visible+.radio__circle{outline:2px solid var(--color-interactive-default);outline-offset:2px}.radio__input:disabled+.radio__circle{opacity:.5;cursor:not-allowed}.radio__circle{border:2px solid var(--color-border-default);background-color:var(--color-bg-default);border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;transition:border-color .3s ease-in-out;display:flex}.radio__dot{background-color:var(--color-interactive-default);opacity:0;border-radius:9999px;width:10px;height:10px;transition:opacity .3s ease-in-out,transform .3s ease-in-out;transform:scale(.5)}.radio__label{color:var(--color-text-default);font-size:.875rem}
.theme-toggle{border:1px solid var(--glass-border);width:44px;height:44px;color:var(--color-text-primary);cursor:pointer;background:0 0;border-radius:9999px;justify-content:center;align-items:center;padding:0;transition:border-color .3s ease-in-out,background-color .3s ease-in-out,color .3s ease-in-out;display:flex;position:relative;overflow:hidden}.theme-toggle:hover{background-color:var(--color-bg-subtle);border-color:var(--color-border-default)}.theme-toggle:focus-visible{outline:2px solid var(--color-interactive-default);outline-offset:2px}.theme-toggle__svg{z-index:1;width:20px;height:20px;transition:transform .3s ease-in-out;position:relative}.theme-toggle__rays{transform-origin:50%;transition:opacity .4s,transform .4s}.theme-toggle--dark .theme-toggle__rays{opacity:0;transform:rotate(45deg)scale(0)}.theme-toggle--light .theme-toggle__rays{opacity:1;transform:rotate(0)scale(1)}.theme-toggle__body{transition:r .4s,cx .4s}.theme-toggle--dark .theme-toggle__body,.theme-toggle--light .theme-toggle__body{r:5}.theme-toggle__mask{transition:cx .4s,cy .4s,r .4s}.theme-toggle--dark .theme-toggle__mask{cx:15;cy:9;r:4.5}.theme-toggle--light .theme-toggle__mask{cx:20;cy:5;r:0}.theme-toggle__stars{top:0;bottom:0;left:0;right:0;pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.theme-toggle__star{background-color:var(--color-interactive-default);opacity:0;border-radius:9999px;width:2px;height:2px;transition:opacity .4s .2s;position:absolute}.theme-toggle--dark .theme-toggle__star{animation:2.5s ease-in-out infinite star-twinkle}.theme-toggle__star--1{top:6px;right:7px}.theme-toggle--dark .theme-toggle__star--1{opacity:.8;animation-delay:0s}.theme-toggle__star--2{top:12px;right:5px}.theme-toggle--dark .theme-toggle__star--2{opacity:.5;animation-delay:.8s}.theme-toggle__star--3{bottom:8px;right:10px}.theme-toggle--dark .theme-toggle__star--3{opacity:.6;animation-delay:1.6s}@keyframes star-twinkle{0%,to{opacity:.3}50%{opacity:1}}
.lang-switcher{align-items:center;gap:.25rem;display:flex}.lang-switcher__icon{color:var(--color-text-secondary);margin-right:.25rem}.lang-switcher__btn{border:1px solid var(--color-border-default);min-height:44px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border-radius:.25rem;padding:.25rem .5rem;font-family:Inter,Helvetica Neue,sans-serif;font-size:.875rem;font-weight:500;transition:all .15s ease-in-out}.lang-switcher__btn:hover{color:var(--color-text-primary);background-color:var(--color-bg-secondary);border-color:var(--color-interactive-hover)}.lang-switcher__btn:focus-visible{outline:2px solid var(--color-interactive-default);outline-offset:2px}.lang-switcher__btn.is-active{color:var(--color-text-inverse);background-color:var(--color-interactive-default);cursor:default;border-color:var(--color-interactive-default)}
.search-bar{align-items:center;display:flex;position:relative}.search-bar__trigger{border:2px solid var(--color-border-default);width:44px;height:44px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border-radius:9999px;justify-content:center;align-items:center;padding:0;transition:all .15s ease-in-out;display:flex}.search-bar__trigger:hover{color:var(--color-text-primary);background-color:var(--color-bg-secondary);border-color:var(--color-interactive-hover)}.search-bar__trigger:focus-visible{outline:2px solid var(--color-interactive-default);outline-offset:2px}.search-bar__input-wrap{align-items:center;width:100%;max-width:480px;animation:.3s ease-in-out forwards search-expand;display:flex;position:relative}.search-bar__search-icon{color:var(--color-text-secondary);pointer-events:none;position:absolute;left:.5rem}.search-bar__input{border:2px solid var(--color-border-default);width:100%;color:var(--color-text-primary);background-color:var(--color-bg-surface);border-radius:.5rem;outline:none;padding:.5rem 4rem .5rem 3rem;font-family:Inter,Helvetica Neue,sans-serif;font-size:1rem;transition:border-color .15s ease-in-out}.search-bar__input::placeholder{color:var(--color-text-secondary)}.search-bar__input:focus{border-color:var(--color-interactive-default)}.search-bar__input::-webkit-search-cancel-button{display:none}.search-bar__loader{color:var(--color-interactive-default);animation:1s linear infinite spin;position:absolute;right:.5rem}.search-bar__clear{width:44px;height:44px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:9999px;justify-content:center;align-items:center;padding:0;transition:all .15s ease-in-out;display:flex;position:absolute;right:.25rem}.search-bar__clear:hover{color:var(--color-text-primary);background-color:var(--color-bg-secondary)}@keyframes search-expand{0%{opacity:0;width:40px}to{opacity:1;width:100%}}@keyframes spin{to{transform:rotate(360deg)}}
.recipe-masonry{width:100%}.recipe-masonry>div{overflow:visible!important}.recipe-masonry__card-wrapper{opacity:0;height:100%;animation:.5s forwards card-entrance;animation-delay:calc(var(--stagger,0)*80ms);transition:opacity .3s,transform .3s}.recipe-masonry .scroll-reveal{height:100%}.recipe-masonry__card-wrapper--removing{opacity:0;pointer-events:none;transform:scale(.85)}.recipe-masonry__skeleton{border:1px solid var(--glass-border);background-color:var(--color-bg-surface);border-radius:.75rem;overflow:hidden}.recipe-masonry__skeleton-body{flex-direction:column;gap:.5rem;padding:1rem;display:flex}.recipe-masonry__skeleton-author{align-items:center;gap:.5rem;display:flex}.recipe-masonry__empty{text-align:center;min-height:300px;color:var(--color-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:1rem;display:flex}.recipe-masonry__empty svg{opacity:.4}.recipe-masonry__error{text-align:center;min-height:300px;color:var(--color-text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:1rem;display:flex}.recipe-masonry__error svg{opacity:.4}.recipe-masonry__error p{margin:0}.recipe-masonry__error--inline{flex-direction:row;gap:.5rem;min-height:0;padding:1.5rem 0;font-size:.875rem}.recipe-masonry__sentinel{height:1px}.recipe-masonry__end-message{color:var(--color-text-tertiary);opacity:.7;justify-content:center;align-items:center;gap:.5rem;padding:3rem 0 1.5rem;font-size:.875rem;display:flex}.recipe-masonry__end-message p{margin:0}@keyframes card-entrance{0%{opacity:0;transform:translateY(20px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}
.share-button{width:2.5rem;height:2.5rem;color:var(--color-text-secondary);background-color:var(--color-surface-secondary);cursor:pointer;border:none;border-radius:9999px;justify-content:center;align-items:center;transition:background-color .3s ease-in-out,color .3s ease-in-out;display:inline-flex}:is(.share-button:hover,.share-button:active,.share-button:focus-visible){color:var(--color-text-inverse);background-color:var(--color-interactive-default)}.share-button__wrapper{display:inline-block;position:relative}.share-button__dropdown{z-index:100;border:1px solid var(--glass-border);white-space:nowrap;background-color:var(--glass-bg);min-width:10rem;box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(20px)saturate(180%);backdrop-filter:blur(20px)saturate(180%);border-radius:.5rem;flex-direction:column;padding:.25rem;display:flex;position:absolute;top:calc(100% + .25rem);left:50%;transform:translate(-50%)}.share-button__option{text-align:left;width:100%;color:var(--color-text-primary);cursor:pointer;background:0 0;border:none;border-radius:.25rem;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;transition:background-color .3s ease-in-out;display:flex}:is(.share-button__option:hover,.share-button__option:active,.share-button__option:focus-visible){background-color:var(--color-surface-secondary)}
.collection-card{color:inherit;background-color:var(--color-surface-primary);box-shadow:var(--shadow-card);border-radius:.5rem;flex-direction:column;text-decoration:none;transition:box-shadow .3s ease-in-out,transform .3s ease-in-out;display:flex;overflow:hidden}:is(.collection-card:hover,.collection-card:active,.collection-card:focus-visible){box-shadow:var(--shadow-elevated);transform:translateY(-2px)}.collection-card__image-wrapper{background-color:var(--color-surface-secondary);aspect-ratio:16/9;position:relative;overflow:hidden}.collection-card__image{object-fit:cover}.collection-card__placeholder{width:100%;height:100%;color:var(--color-text-tertiary);justify-content:center;align-items:center;display:flex}.collection-card__grid{gap:2px;width:100%;height:100%;display:grid}.collection-card__grid--1{grid-template-columns:1fr}.collection-card__grid--2{grid-template-columns:1fr 1fr}.collection-card__grid--3{grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr}.collection-card__grid--3 .collection-card__grid-cell:first-child{grid-row:1/-1}.collection-card__grid--4{grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr}.collection-card__grid-cell{position:relative;overflow:hidden}.collection-card__grid-image{object-fit:cover}.collection-card__body{flex-direction:column;gap:.25rem;padding:1rem;display:flex}.collection-card__title{margin:0;font-size:1.125rem;font-weight:600}.collection-card__description{color:var(--color-text-secondary);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:.875rem;display:-webkit-box;overflow:hidden}.collection-card__meta{color:var(--color-text-tertiary);align-items:center;gap:.5rem;font-size:.875rem;display:flex}.collection-card__icon--featured{color:var(--color-warning)}
.featured-collections{margin-bottom:3rem}.featured-collections__title{margin-bottom:1rem;font-size:1.125rem;font-weight:600}.featured-collections__scroll{scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;gap:1rem;padding-bottom:.5rem;display:flex;overflow-x:auto}.featured-collections__scroll::-webkit-scrollbar{display:none}.featured-collections__item{scroll-snap-align:start;flex:0 0 280px}@media only screen and (min-width:992px){.featured-collections__item{flex:0 0 320px}}
.page-content{min-height:0}.page-entering{animation:.4s cubic-bezier(.16,1,.3,1) both page-fade-in}@keyframes page-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.page-entering{opacity:1;animation:none}}
.stage-timeline{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}@media only screen and (min-width:992px){.stage-timeline{flex-wrap:nowrap}}.stage-timeline__stage{min-width:0;color:var(--color-text-secondary);flex-direction:column;flex:6rem;gap:.25rem;font-size:.875rem;display:flex}.stage-timeline__stage.is-past{opacity:.55}.stage-timeline__stage.is-current{color:var(--color-text-primary)}.stage-timeline__bar{background:var(--stage-accent,var(--color-brand-accent));opacity:.35;border-radius:2px;height:3px;display:block}.is-current>.stage-timeline__bar{opacity:1}.is-overdue>.stage-timeline__bar{background:var(--color-warning);opacity:1}.stage-timeline__icon{color:var(--stage-accent,var(--color-brand-accent))}.stage-timeline__name{color:var(--color-text-primary);overflow-wrap:anywhere}.is-current>.stage-timeline__name{font-weight:600}.stage-timeline__type{font-size:.75rem}.stage-timeline__days,.stage-timeline__temp{font-variant-numeric:lining-nums;font-family:JetBrains Mono,Courier New,monospace}.stage-timeline__state{color:var(--color-text-secondary);font-size:.75rem;font-weight:500}.is-overdue>.stage-timeline__state{color:var(--color-warning)}.stage-timeline--compact{gap:.25rem}.stage-timeline--compact .stage-timeline__stage{flex-basis:3.5rem;gap:2px}.stage-timeline--compact .stage-timeline__days{white-space:nowrap}
.fermenter{--layer-grain:#c9962f;--layer-fruit:#c25a6a;--layer-honey:#d9a441;--layer-sugar:#f1e3c2;--layer-spice:#b8623a;--layer-other:#9a7247;--layer-hops:#6f9a3f;--layer-tea:#5a3b22;--layer-yeast:#efe2c4;--liquid-beer:#d79a2b;--liquid-cider:#e5c25a;--liquid-mead:#c98a2e;--liquid-wine:#7a1f33;--liquid-kombucha:#8a5a2b;--liquid-kvass:#6b3f1e;--liquid-other:#8c6a3f;--liquid-none:#8c6a3f;--vessel-body:#ffffff0f;--vessel-edge:var(--color-border-default);flex-direction:column;gap:.5rem;width:100%;display:flex}[data-theme=light] .fermenter{--layer-sugar:#e3cf9c;--layer-yeast:#e0cfa6;--vessel-body:#1a1f2e0d}.fermenter__scene{--bubble-duration:calc(2.4s + (1 - var(--bubble-rate,0))*4s);--bubble-gap:calc(.15s + (1 - var(--bubble-rate,0))*.6s);width:100%;height:auto;max-height:min(70vw,360px);display:block;overflow:visible}@media only screen and (min-width:992px){.fermenter__scene{max-height:calc(100vh - 80px - 10rem)}}.fermenter__scene--age,.fermenter__scene--done{filter:saturate(.85)}.fermenter__scene--abandoned{opacity:.55;filter:saturate(.2)}.fermenter__body{fill:var(--vessel-body);stroke:var(--vessel-edge);stroke-width:2px}.fermenter__lid{fill:var(--color-bg-subtle);stroke:var(--vessel-edge);stroke-width:2px}.fermenter__airlock-part{fill:none;stroke:var(--vessel-edge);stroke-width:2px}.fermenter__liquid{fill:var(--liquid-none);transition:y .6s,height .6s}[data-brew-type=beer] .fermenter__liquid{fill:var(--liquid-beer)}[data-brew-type=cider] .fermenter__liquid{fill:var(--liquid-cider)}[data-brew-type=mead] .fermenter__liquid{fill:var(--liquid-mead)}[data-brew-type=wine] .fermenter__liquid{fill:var(--liquid-wine)}[data-brew-type=kombucha] .fermenter__liquid{fill:var(--liquid-kombucha)}[data-brew-type=kvass] .fermenter__liquid{fill:var(--liquid-kvass)}[data-brew-type=other] .fermenter__liquid{fill:var(--liquid-other)}.fermenter__layers{opacity:calc(1 - .65*var(--mix,0));transition:opacity .6s}.fermenter__layer{transition:y .6s,height .6s}.fermenter__layer--grain{fill:var(--layer-grain)}.fermenter__layer--fruit{fill:var(--layer-fruit)}.fermenter__layer--honey{fill:var(--layer-honey)}.fermenter__layer--sugar{fill:var(--layer-sugar)}.fermenter__layer--spice{fill:var(--layer-spice)}.fermenter__layer--other{fill:var(--layer-other)}.fermenter__layer--hops{fill:var(--layer-hops)}.fermenter__layer--tea{fill:var(--layer-tea)}.fermenter__layer--yeast{fill:var(--layer-yeast)}.fermenter__layer--water{fill:#0000}.fermenter__sediment{fill:#00000047;transition:y .6s,height .6s}.fermenter__foam{fill:var(--color-warning);animation:3s ease-in-out infinite fermenter-breathe}.fermenter__bubble{animation:fermenter-rise var(--bubble-duration)linear infinite;animation-delay:calc(var(--i,0)*var(--bubble-gap) - var(--phase,0)*var(--bubble-duration));fill:#ffffff8c}@media (prefers-reduced-motion:reduce){.fermenter__bubble{display:none}}.fermenter__bottle-part{fill:var(--liquid-none);stroke:var(--vessel-edge);stroke-width:1.5px}[data-brew-type=beer] .fermenter__bottle-part{fill:var(--liquid-beer)}[data-brew-type=cider] .fermenter__bottle-part{fill:var(--liquid-cider)}[data-brew-type=mead] .fermenter__bottle-part{fill:var(--liquid-mead)}[data-brew-type=wine] .fermenter__bottle-part{fill:var(--liquid-wine)}[data-brew-type=kombucha] .fermenter__bottle-part{fill:var(--liquid-kombucha)}[data-brew-type=kvass] .fermenter__bottle-part{fill:var(--liquid-kvass)}.fermenter__cap{fill:var(--vessel-edge)}.fermenter__headspace{fill:#ffffff1a}.fermenter__haze{opacity:calc(var(--mix,0)*.35);fill:#fff;transition:opacity .6s}.fermenter__shelf-line{stroke:var(--vessel-edge);stroke-linecap:round;stroke-width:2px}.fermenter__fizz{animation:7s linear infinite fermenter-fizz;animation-delay:calc(var(--i,0)*2.5s - var(--phase,0)*7s);fill:#fff9}@media (prefers-reduced-motion:reduce){.fermenter__fizz{display:none}}.fermenter__bar{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.fermenter__caption{flex-wrap:wrap;flex:1 1 0;align-items:baseline;gap:.25rem 1rem;min-width:0;display:flex}.fermenter__sound{white-space:nowrap;flex:none}.fermenter__notice{color:var(--color-text-secondary);margin:0;font-size:.875rem}.fermenter__notice:empty{display:none}@keyframes fermenter-rise{0%{opacity:0;transform:translateY(0)}8%{opacity:1}90%{opacity:1}to{opacity:0;transform:translateY(calc(-1*var(--rise,0px)))}}@keyframes fermenter-fizz{0%{opacity:0;transform:translateY(0)}10%{opacity:1}90%{opacity:1}to{opacity:0;transform:translateY(-124px)}}@keyframes fermenter-breathe{0%,to{opacity:.5}50%{opacity:.9}}
.collection-modal{flex-direction:column;gap:1rem;display:flex}.collection-modal__list{flex-direction:column;gap:.25rem;max-height:320px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.collection-modal__option{border:1px solid var(--color-border-default);text-align:left;width:100%;color:var(--color-text-primary);cursor:pointer;background:0 0;border-radius:.5rem;justify-content:space-between;align-items:center;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:background-color .3s ease-in-out,border-color .3s ease-in-out;display:flex}:is(.collection-modal__option:hover,.collection-modal__option:active,.collection-modal__option:focus-visible){background-color:var(--color-bg-subtle);border-color:var(--color-interactive-default)}.collection-modal__option.is-active{background-color:rgb(var(--color-interactive-default-rgb,99,102,241),.08);border-color:var(--color-interactive-default)}.collection-modal__check{color:var(--color-interactive-default);flex-shrink:0}.collection-modal__loading,.collection-modal__empty{text-align:center;color:var(--color-text-tertiary);flex-direction:column;align-items:center;gap:.5rem;padding:2rem;font-size:.875rem;display:flex}.collection-modal__footer{border-top:1px solid var(--color-border-default);justify-content:flex-end;padding-top:.5rem;display:flex}
.recipe-card{border:1px solid var(--glass-border);background-color:var(--color-bg-surface);border-radius:.75rem;flex-direction:column;height:100%;transition:box-shadow .3s ease-in-out,transform .3s ease-in-out,border-color .3s ease-in-out;display:flex;position:relative;overflow:hidden}@media (hover:hover) and (pointer:fine){.recipe-card{transform-style:preserve-3d;transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .3s ease-in-out,border-color .3s ease-in-out}.recipe-card:before{z-index:1;border-radius:inherit;background:radial-gradient(300px circle at var(--glow-x,50%)var(--glow-y,50%),#b8c7d614 0%,transparent 60%);opacity:0;pointer-events:none;content:"";transition:opacity .3s;position:absolute;top:0;bottom:0;left:0;right:0}.recipe-card:hover:before{opacity:1}.recipe-card:hover{box-shadow:var(--shadow-glow);transform:perspective(800px)rotateX(var(--tilt-x,0deg))rotateY(var(--tilt-y,0deg))translateY(-3px);border-color:var(--color-border-default)}.recipe-card:hover .recipe-card__image{transform:scale(1.05)}}@media (hover:none){:is(.recipe-card:hover,.recipe-card:active,.recipe-card:focus-visible){box-shadow:var(--shadow-glow);border-color:var(--color-border-default);transform:translateY(-3px)}:is(.recipe-card:hover .recipe-card__image,.recipe-card:active .recipe-card__image,.recipe-card:focus-visible .recipe-card__image){transform:scale(1.05)}}.recipe-card__link{color:inherit;flex-direction:column;flex:1;text-decoration:none;display:flex}.recipe-card__image-wrapper{background-color:var(--color-bg-elevated);flex:1;width:100%;min-height:100px;position:relative;overflow:hidden}.recipe-card__image-wrapper:after{z-index:1;background:linear-gradient(to top,var(--color-bg-surface)0%,transparent 100%);pointer-events:none;content:"";width:100%;height:25%;position:absolute;bottom:0;left:0}.recipe-card__image{opacity:.6;object-fit:cover;filter:blur(12px);width:100%;height:100%;transition:transform .3s ease-in-out;position:absolute;top:0;left:0}.recipe-card__image.is-loaded{opacity:1;filter:blur()}.recipe-card__image-placeholder{background:linear-gradient(135deg,var(--color-bg-surface)0%,var(--color-bg-secondary)50%,var(--color-bg-surface)100%);justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.recipe-card__monogram{border:1px solid var(--color-border-strong);width:40px;height:40px;font-family:var(--font-heading,Cormorant Garamond,Georgia,serif);color:var(--color-text-secondary);border-radius:9999px;justify-content:center;align-items:center;font-size:1.25rem;font-weight:600;line-height:1;display:inline-flex}.recipe-card--no-image .recipe-card__image-wrapper{flex:auto;min-height:64px}.recipe-card--no-image .recipe-card__image-wrapper:after{display:none}.recipe-card--no-image .recipe-card__image-placeholder{justify-content:flex-start;align-items:flex-start;padding:12px 1rem}.recipe-card--no-image .recipe-card__actions{flex-direction:row;top:10px;right:10px}.recipe-card__difficulty-inline{white-space:nowrap;color:var(--color-text-tertiary);font-size:.75rem}.recipe-card__category{z-index:2;border:1px solid var(--glass-border);color:var(--color-text-primary);background-color:var(--glass-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:9999px;padding:.25rem 1rem;font-size:.75rem;font-weight:500;position:absolute;top:.5rem;left:.5rem}.recipe-card__content{flex-direction:column;flex-shrink:0;gap:.5rem;padding:1rem;display:flex}.recipe-card__title{font-family:var(--font-heading,Cormorant Garamond,Georgia,serif);color:var(--color-text-primary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:1.125rem;font-weight:700;line-height:1.3;display:-webkit-box;overflow:hidden}.recipe-card__meta{color:var(--color-text-secondary);justify-content:space-between;align-items:center;gap:.5rem;font-size:.875rem;display:flex}.recipe-card__tag{white-space:nowrap;color:var(--color-interactive-default);background-color:var(--color-bg-elevated);border-radius:9999px;padding:2px .5rem;font-size:.75rem;font-weight:600}.recipe-card__time{white-space:nowrap;align-items:center;gap:.25rem;font-size:.75rem;display:inline-flex}.recipe-card__difficulty{z-index:2;border:1px solid var(--glass-border);white-space:nowrap;color:var(--color-text-primary);background-color:var(--glass-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:9999px;padding:.25rem 1rem;font-size:.75rem;font-weight:500;position:absolute;top:.5rem;left:.5rem}.recipe-card__draft-badge{z-index:2;color:#7c5700;background-color:#fef3cd;border:1px solid #ffc107;border-radius:9999px;padding:.25rem 1rem;font-size:.75rem;font-weight:700;position:absolute;bottom:.5rem;left:.5rem}.recipe-card__footer{flex-direction:column;align-items:flex-start;gap:.25rem;margin-top:auto;padding-top:.5rem;display:flex}.recipe-card__author{align-items:center;gap:.5rem;display:flex}.recipe-card__author-avatar{object-fit:cover;border-radius:9999px;width:24px;height:24px}.recipe-card__author-name{color:var(--color-text-secondary);font-size:.875rem}.recipe-card__author-link{color:inherit;align-items:center;gap:.25rem;text-decoration:none;display:flex}.recipe-card__author-link:hover{color:var(--color-interactive-default)}.recipe-card__actions{z-index:2;flex-direction:column;gap:.25rem;display:flex;position:absolute;top:.5rem;right:.5rem}.recipe-card__action-btn{width:44px;height:44px;color:var(--color-text-primary);background-color:var(--glass-bg);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:none;border-radius:9999px;justify-content:center;align-items:center;transition:color .3s ease-in-out,transform .3s ease-in-out,background-color .3s ease-in-out;display:flex}:is(.recipe-card__action-btn:hover,.recipe-card__action-btn:active,.recipe-card__action-btn:focus-visible){color:var(--color-interactive-default);transform:scale(1.15)}.recipe-card__save{width:44px;height:44px;color:var(--color-danger);background-color:var(--glass-bg);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:none;border-radius:9999px;justify-content:center;align-items:center;transition:color .3s ease-in-out,transform .3s ease-in-out,background-color .3s ease-in-out;display:flex}.recipe-card__save svg{width:18px;height:18px}:is(.recipe-card__save:hover,.recipe-card__save:active,.recipe-card__save:focus-visible){transform:scale(1.15)}.recipe-card__save.is-saved{animation:.35s heart-pop}@keyframes heart-pop{0%{transform:scale(1)}50%{transform:scale(1.3)}to{transform:scale(1)}}.recipe-card__save-ring{border:2px solid var(--color-danger);pointer-events:none;border-radius:9999px;width:44px;height:44px;animation:.5s cubic-bezier(.16,1,.3,1) forwards ring-expand;position:absolute;top:50%;left:50%}
