.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);border-color:var(--color-interactive-default);box-shadow:0 0 0 1px var(--color-interactive-default),inset 0 1px 0 #ffffff26,0 2px 4px #0003}:is(.button--primary:hover,.button--primary:active,.button--primary:focus-visible){background-color:var(--color-interactive-hover);border-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;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}.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{border-color:var(--color-border-default);box-shadow:none}.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){border-color:var(--color-border-default);box-shadow:var(--shadow-glow);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}
.star-rating{align-items:center;gap:2px;display:inline-flex}.star-rating--sm .star-rating__star svg{width:16px;height:16px}.star-rating--md .star-rating__star svg{width:24px;height:24px}.star-rating--lg .star-rating__star svg{width:32px;height:32px}.star-rating--readonly .star-rating__star{cursor:default;pointer-events:none}.star-rating__star{min-width:44px;min-height:44px;color:var(--color-border-strong);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:color .3s ease-in-out,transform .3s ease-in-out;display:inline-flex}.star-rating__star:focus-visible{outline:2px solid var(--color-interactive-default);outline-offset:2px;border-radius:.25rem}:is(.star-rating__star:hover,.star-rating__star:active,.star-rating__star:focus-visible){transform:scale(1.15)}.star-rating__star.is-filled{color:var(--color-interactive-hover)}.star-rating__star.is-igniting{color:#fbbf24;filter:drop-shadow(0 0 6px #fbbf2480);transition:filter .4s;animation:.3s cubic-bezier(.16,1,.3,1) star-ignite}
.modal{z-index:500;top:0;bottom:0;left:0;right:0;background:0 0;border:none;border-radius:.75rem;max-width:100%;max-height:100%;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}.modal__header{border-bottom:1px solid var(--color-border-default);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{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}}
.toast-container{z-index:600;flex-direction:column;gap:.5rem;display:flex;position:fixed;top:1.5rem;left:.5rem;right:.5rem}@media only screen and (min-width:768px){.toast-container{max-width:400px;left:auto;right:1.5rem}}.toast{border:1px solid var(--glass-border);background-color:var(--glass-bg);min-width:280px;box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(16px)saturate(180%);backdrop-filter:blur(16px)saturate(180%);border-radius:.5rem;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.5rem;font-size:.875rem;font-weight:500;animation:.3s toast-slide-in;display:flex}.toast--success{color:#34d399;border-color:#34d39933}.toast--error{color:#f87171;border-color:#f8717133}.toast--info{color:#60a5fa;border-color:#60a5fa33}.toast--warning{color:#fbbf24;border-color:#fbbf2433}[data-theme=light] .toast--success{color:#166534}[data-theme=light] .toast--error{color:#991b1b}[data-theme=light] .toast--info{color:#1e40af}[data-theme=light] .toast--warning{color:#854d0e}.toast__message{flex:1}.toast__close{width:44px;height:44px;color:inherit;opacity:.6;cursor:pointer;border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;font-size:.75rem;transition:opacity .3s ease-in-out;display:flex}:is(.toast__close:hover,.toast__close:active,.toast__close:focus-visible){opacity:1}@keyframes toast-slide-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}
.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);width:100%;color:var(--color-text-primary);cursor:pointer;text-align:left;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{border-color:var(--color-interactive-default);background-color:rgba(var(--color-interactive-default-rgb,99,102,241),.08)}.collection-modal__check{color:var(--color-interactive-default);flex-shrink:0}.collection-modal__loading,.collection-modal__empty{color:var(--color-text-tertiary);text-align:center;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;content:"";pointer-events:none;transition:opacity .3s;position:absolute;top:0;bottom:0;left:0;right:0}.recipe-card:hover:before{opacity:1}.recipe-card:hover{transform:perspective(800px)rotateX(var(--tilt-x,0deg))rotateY(var(--tilt-y,0deg))translateY(-3px);border-color:var(--color-border-default);box-shadow:var(--shadow-glow)}.recipe-card:hover .recipe-card__image{transform:scale(1.05)}}@media (hover:none){:is(.recipe-card:hover,.recipe-card:active,.recipe-card:focus-visible){border-color:var(--color-border-default);box-shadow:var(--shadow-glow);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%);content:"";pointer-events:none;width:100%;height:25%;position:absolute;bottom:0;left:0}.recipe-card__image{object-fit:cover;filter:blur(12px);opacity:.6;width:100%;height:100%;transition:filter .8s,opacity .4s,transform .3s ease-in-out;position:absolute;top:0;left:0}.recipe-card__image.is-loaded{filter:blur();opacity:1}.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%;font-size:3rem;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.recipe-card__image-placeholder svg{opacity:.2;animation:3s ease-in-out infinite gentle-pulse}.recipe-card__category{z-index:2;border:1px solid var(--glass-border);font-family:var(--font-mono,JetBrains Mono,Courier New,monospace);text-transform:uppercase;letter-spacing:.06em;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{font-family:var(--font-mono,JetBrains Mono,Courier New,monospace);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);font-family:var(--font-mono,JetBrains Mono,Courier New,monospace);white-space:nowrap;text-transform:capitalize;letter-spacing:.04em;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;font-family:var(--font-mono,JetBrains Mono,Courier New,monospace);text-transform:uppercase;letter-spacing:.06em;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:36px;height:36px;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:36px;height:36px;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)}}@keyframes gentle-pulse{0%,to{opacity:.15;transform:scale(1)}50%{opacity:.3;transform:scale(1.08)}}.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%}
.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{content:"";pointer-events:none;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);box-sizing:border-box;width:100%;height:44px;color:var(--color-text-default);background-color:var(--color-bg-default);cursor:pointer;-webkit-appearance:none;appearance:none;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__sentinel{height:1px}.recipe-masonry__load-more{justify-content:center;padding:2rem 0;display:flex}.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);background-color:var(--glass-bg);min-width:10rem;box-shadow:var(--shadow-lg);white-space:nowrap;-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{background-color:var(--color-surface-primary);box-shadow:var(--shadow-card);color:inherit;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{aspect-ratio:16/9;background-color:var(--color-surface-secondary);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{-webkit-line-clamp:2;line-clamp:2;color:var(--color-text-secondary);-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}}
