:root{--color-main:#86452a;--color-main-light:#a65e3f;--color-main-dark:#6b3520;--color-secondary:#586330;--color-tertiary:#874500;--color-positive:#386a20;--color-negative:#ba1a1a;--color-neutral:#fff8f3;--color-neutral-dark:#f0e6dd;--color-neutral-darker:#ddd0c4;--surface-bg:#fff8f3;--surface-card:#fff;--surface-input:#f5ede6;--surface-overlay:#86452a0f;--text-primary:#1a1210;--text-secondary:#5e4d42;--text-muted:#8a7a70;--text-on-main:#fff;--text-link:#86452a;--font-display:"Newsreader", Georgia, "Times New Roman", serif;--font-body:"Be Vietnam Pro", system-ui, -apple-system, sans-serif;--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-pill:9999px;--shadow-sm:0 1px 3px #1a12100f;--shadow-md:0 4px 12px #1a121014;--shadow-lg:0 8px 32px #1a12101f;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-body);color:var(--text-primary);background-color:var(--surface-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;font-weight:400;line-height:1.6}#root{min-height:100vh}img{max-width:100%;display:block}a{color:var(--text-link);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-main-dark)}.app-shell{flex-direction:column;min-height:100vh;display:flex}.app-header{border-bottom:1px solid var(--color-neutral-dark);background:var(--surface-card);padding:.5rem 1.25rem}.app-shell main{flex:1;width:100%;max-width:72rem;margin:0 auto;padding:1.25rem}.app-shell main.app-main--bottom-inset{padding-bottom:calc(5.5rem + env(safe-area-inset-bottom,0px))}@keyframes spin{to{transform:rotate(360deg)}}.ui-spinner{border:2px solid var(--color-neutral-darker);border-top-color:var(--color-main);vertical-align:middle;border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.header-user{align-items:center;gap:var(--space-sm);flex-wrap:nowrap;flex:auto;justify-content:flex-end;min-width:0;max-width:min(100%,18rem);display:flex}.header-user__name{font-family:var(--font-body);min-width:0;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:.95rem;font-style:normal;font-weight:600;display:block;overflow:hidden}.header-user__role{text-transform:capitalize;border-radius:var(--radius-pill);background:var(--surface-overlay);color:var(--color-main);border:1px solid var(--color-neutral-dark);flex-shrink:0;padding:.15rem .5rem;font-size:.75rem;font-weight:600}.header-user--error .header-user__error{color:var(--text-muted);font-size:.85rem}.bottom-nav{z-index:100;justify-content:space-around;align-items:flex-end;gap:var(--space-xs);padding:var(--space-sm) var(--space-sm) max(.5rem, env(safe-area-inset-bottom,0px));background:var(--surface-card);border-top:1px solid #86452a33;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 12px #1a12100f}.bottom-nav__item{min-width:0;max-width:5.5rem;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);color:var(--text-muted);font-family:var(--font-body);transition:color var(--transition-fast), background var(--transition-fast);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.2rem;text-decoration:none;display:flex}.bottom-nav__item:hover{color:var(--color-main);background:var(--surface-overlay)}.bottom-nav__item--active{color:var(--color-main)}.bottom-nav__item--active .bottom-nav__label{font-weight:500}.bottom-nav__icon{flex-shrink:0;justify-content:center;align-items:center;display:flex}.bottom-nav__label{text-align:center;text-transform:capitalize;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:10px;line-height:1.2;overflow:hidden}.bottom-nav__fab{border-radius:var(--radius-pill);background:var(--color-main);width:3.5rem;height:3.5rem;color:var(--text-on-main);transition:background var(--transition-fast), transform var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;margin-top:-1.5rem;text-decoration:none;display:flex;box-shadow:0 4px 12px #86452a4d}.bottom-nav__fab:hover{background:var(--color-main-dark);transform:translateY(-1px)}.bottom-nav__fab--disabled{cursor:not-allowed;opacity:.45;transform:none}.bottom-nav__fab--disabled:hover{background:var(--color-main);transform:none}.language-switcher{border-radius:var(--radius-sm,6px);border:1px solid var(--color-main,#6b4423);background:var(--surface-base,#fff);align-items:stretch;display:inline-flex;overflow:hidden}.language-switcher--compact .language-switcher__btn{min-width:2.25rem;padding:.25rem .5rem;font-size:.75rem}.language-switcher__btn{font-family:var(--font-body,system-ui, sans-serif);min-width:2.5rem;color:var(--color-main,#6b4423);cursor:pointer;letter-spacing:.02em;transition:background var(--transition-fast,.15s ease), color var(--transition-fast,.15s ease);background:0 0;border:none;margin:0;padding:.35rem .65rem;font-size:.8rem;font-weight:600}.language-switcher__btn:hover:not(.language-switcher__btn--active){background:var(--surface-overlay,#6b442314)}.language-switcher__btn--active{background:var(--color-main,#6b4423);color:var(--surface-base,#fff)}.language-switcher__btn:focus-visible{outline:2px solid var(--color-main,#6b4423);outline-offset:2px;z-index:1}.language-switcher__btn+.language-switcher__btn{border-left:1px solid var(--color-main,#6b4423)}.app-header__brand{font-family:var(--font-display);color:var(--color-main);white-space:nowrap;flex-shrink:0;font-size:1.1rem;font-style:italic;text-decoration:none}.app-header__brand:hover{color:var(--color-main-dark)}.app-header__inner{justify-content:space-between;align-items:center;gap:var(--space-md);width:100%;max-width:72rem;margin:0 auto;display:flex}.app-header__trailing{justify-content:flex-end;align-items:center;gap:var(--space-sm);flex:auto;min-width:0;display:flex}.app-header__meta{border:1px solid var(--color-neutral-dark);border-radius:var(--radius-pill);background:var(--surface-overlay);align-items:center;min-width:0;padding:.35rem .7rem;display:flex}.app-header__actions{flex-shrink:0;align-items:center;gap:.35rem;display:flex}.app-header__logout{font-family:var(--font-body);border-radius:var(--radius-sm);border:1px solid var(--color-main);color:var(--color-main);cursor:pointer;transition:background var(--transition-fast);background:0 0;justify-content:center;align-items:center;min-width:5.5rem;padding:.4rem .9rem;font-size:.95rem;font-style:normal;display:inline-flex}.app-header__logout:hover:not(:disabled){background:var(--surface-overlay)}.app-header__logout:disabled{opacity:.7;cursor:not-allowed}@media (width<=900px){.app-header__inner{flex-wrap:wrap;justify-content:center}.app-header__brand{text-align:center;width:100%}.app-header__trailing{flex-wrap:wrap;justify-content:center;width:100%}.app-header__meta{max-width:100%}}@media (width<=560px){.app-header__actions{justify-content:space-between;width:100%}.app-header__logout{min-width:6.25rem}}.protected-route__loading{min-height:40vh;padding:var(--space-xl);justify-content:center;align-items:center;display:flex}.recipe-card{background:var(--surface-card);cursor:pointer;text-align:left;transition:box-shadow var(--transition-fast), transform var(--transition-fast);border:none}.recipe-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.recipe-card:focus-visible{outline:2px solid var(--color-main);outline-offset:2px}.recipe-card--hero{border-radius:var(--radius-lg);width:100%;box-shadow:var(--shadow-sm);display:block;overflow:hidden}.recipe-card__hero-img{background:var(--color-neutral-dark);height:16rem;position:relative}.recipe-card__hero-img img{object-fit:cover;width:100%;height:100%}.recipe-card--horizontal{gap:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);width:100%;display:flex}.recipe-card__thumb{border-radius:var(--radius-sm);background:var(--color-neutral-dark);flex-shrink:0;width:6rem;height:6rem;overflow:hidden}.recipe-card__thumb img{object-fit:cover;width:100%;height:100%}.recipe-card__img-placeholder{background:linear-gradient(135deg, var(--color-neutral-dark), var(--color-neutral-darker));width:100%;height:100%}.recipe-card__badge{top:var(--space-sm);right:var(--space-sm);border-radius:var(--radius-pill);font-family:var(--font-body);letter-spacing:.04em;text-transform:uppercase;padding:.2rem .6rem;font-size:.7rem;font-weight:600;position:absolute}.recipe-card__badge--cultural{background:var(--color-tertiary);color:var(--text-on-main)}.recipe-card__badge--community{background:var(--color-secondary);color:var(--text-on-main)}.recipe-card__body{padding:var(--space-md);flex:1;min-width:0}.recipe-card--hero .recipe-card__body{padding:var(--space-md)}.recipe-card--horizontal .recipe-card__body{flex-direction:column;justify-content:center;padding:0;display:flex}.recipe-card__title{font-family:var(--font-body);color:var(--text-primary);margin:0 0 var(--space-xs);white-space:nowrap;text-overflow:ellipsis;font-size:1rem;font-weight:600;overflow:hidden}.recipe-card--hero .recipe-card__title{font-family:var(--font-display);white-space:normal;font-size:1.5rem;font-style:italic;line-height:1.2}.recipe-card__author{color:var(--text-secondary);margin:0 0 var(--space-sm);font-size:.85rem}.recipe-card__meta{align-items:center;gap:var(--space-md);display:flex}.recipe-card__rating{color:var(--color-tertiary);align-items:center;gap:.25rem;font-size:.85rem;font-weight:500;display:inline-flex}.recipe-card__rating svg{color:var(--color-tertiary)}.recipe-card__region{color:var(--text-muted);font-size:.8rem}.genre-card{cursor:pointer;border-radius:var(--radius-md);transition:transform var(--transition-fast), box-shadow var(--transition-fast);background:0 0;border:none;flex-shrink:0;position:relative;overflow:hidden}.genre-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.genre-card:focus-visible{outline:2px solid var(--color-main);outline-offset:2px}.genre-card--active{box-shadow:0 0 0 3px #86452a73}.genre-card__img{width:100%;height:100%;position:relative}.genre-card__img img{object-fit:cover;width:100%;height:100%;display:block}.genre-card__img-placeholder{background:linear-gradient(135deg, var(--color-main-dark), var(--color-secondary));width:100%;height:100%}.genre-card__overlay{background:linear-gradient(#0000 45%,#000000a6 100%);position:absolute;inset:0}.genre-card__label{bottom:var(--space-sm);left:var(--space-sm);right:var(--space-sm);flex-direction:column;gap:2px;display:flex;position:absolute}.genre-card__name{font-family:var(--font-display);color:#fff;text-shadow:0 1px 3px #0006;font-size:1rem;font-style:italic;font-weight:600}.genre-card__count{color:#ffffffd9;font-size:.75rem}.home-page{gap:var(--space-2xl);flex-direction:column;display:flex}.home-page__hero{gap:var(--space-xl);padding:clamp(var(--space-lg), 4vw, var(--space-2xl));border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);background:radial-gradient(circle at 100% 0,#b5754d33,#0000 34%),linear-gradient(135deg,#86452a14,#fff8f0f2);border:1px solid #86452a1f;grid-template-columns:1.1fr .9fr;display:grid}.home-page__hero-copy{gap:var(--space-md);flex-direction:column;justify-content:center;display:flex}.home-page__hero-title{font-family:var(--font-display);color:var(--text-primary);margin:0;font-size:clamp(2.1rem,4.5vw,3.8rem);font-style:italic;line-height:1.04}.home-page__hero-subtitle,.home-page__section-copy{color:var(--text-secondary);max-width:36rem;margin:0;line-height:1.65}.home-page__hero-actions{gap:var(--space-sm);flex-wrap:wrap;display:flex}.home-page__hero-btn,.home-page__section-link,.home-page__retry{font-family:var(--font-body);border-radius:var(--radius-pill);cursor:pointer;transition:transform var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);font-size:.9rem;font-weight:600}.home-page__hero-btn:hover,.home-page__section-link:hover,.home-page__retry:hover{transform:translateY(-1px)}.home-page__hero-btn{border:1px solid #0000;padding:.8rem 1.15rem}.home-page__hero-btn--primary{background:var(--color-main);color:var(--text-on-main)}.home-page__hero-btn--primary:hover{background:var(--color-main-dark)}.home-page__hero-btn--secondary,.home-page__section-link{color:var(--color-main);background:#ffffffb3;border:1px solid #86452a2e}.home-page__hero-btn--secondary:hover,.home-page__section-link:hover{background:var(--surface-overlay)}.home-page__hero-stats{gap:var(--space-sm);margin-top:var(--space-xs);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.home-page__stat{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:#ffffffb3;border:1px solid #86452a1f}.home-page__stat-value{color:var(--text-primary);font-size:1.15rem;font-weight:700;display:block}.home-page__stat-label{color:var(--text-secondary);margin-top:.2rem;font-size:.78rem;display:block}.home-page__hero-feature{gap:var(--space-sm);flex-direction:column;justify-content:center;display:flex}.home-page__section-eyebrow{letter-spacing:.08em;text-transform:uppercase;width:fit-content;color:var(--color-main);font-size:.72rem;font-weight:700;display:inline-flex}.home-page__section{gap:var(--space-md);flex-direction:column;display:flex}.home-page__section-header{justify-content:space-between;align-items:flex-end;gap:var(--space-md);display:flex}.home-page__section-title{font-family:var(--font-display);color:var(--text-primary);margin:0;font-size:1.5rem;font-style:italic;font-weight:600}.home-page__featured-label{width:fit-content;font-family:var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--color-main);background:var(--surface-overlay);border-radius:var(--radius-pill);padding:.2rem .55rem;font-size:.72rem;font-weight:600}.home-page__section-link{white-space:nowrap;padding:.65rem 1rem}.home-page__picks-grid{gap:var(--space-md);grid-template-columns:1fr;display:grid}.home-page__genre-grid{gap:var(--space-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.home-page__genre-grid .genre-card{width:100%;min-height:9rem}@media (width>=768px){.home-page__hero{align-items:center}.recipe-card--hero .recipe-card__hero-img{height:20rem}.home-page__picks-grid{grid-template-columns:repeat(3,1fr)}.home-page__picks-grid .recipe-card--horizontal{flex-direction:column;padding:0}.home-page__picks-grid .recipe-card--horizontal .recipe-card__thumb{border-radius:var(--radius-md) var(--radius-md) 0 0;width:100%;height:10rem}.home-page__picks-grid .recipe-card--horizontal .recipe-card__body{padding:var(--space-md)}.home-page__genre-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.home-page__genre-grid .genre-card{min-height:10rem}}@keyframes skeleton-shimmer{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.skeleton-pulse{background:var(--color-neutral-dark);border-radius:var(--radius-md);animation:1.4s ease-in-out infinite skeleton-shimmer}.home-page__skeleton-hero{border-radius:var(--radius-lg);width:100%;height:22rem}.home-page__skeleton-row{gap:var(--space-md);grid-template-columns:repeat(3,1fr);display:grid}.home-page__skeleton-card{border-radius:var(--radius-md);height:6rem}.home-page--error{justify-content:center;align-items:center;gap:var(--space-md);min-height:40vh;color:var(--text-secondary)}.home-page__retry{border:1px solid var(--color-main);color:var(--color-main);background:0 0;padding:.45rem 1.2rem}.home-page__retry:hover{background:var(--surface-overlay)}.home-page__empty{color:var(--text-muted);font-size:.9rem}.discovery-page{gap:var(--space-lg);flex-direction:column;display:flex}.discovery-page__hero{border-radius:var(--radius-md);background:linear-gradient(180deg, var(--surface-input) 0%, var(--color-neutral) 100%);border:1px solid var(--color-neutral-darker);flex-direction:column;align-items:center;gap:.4rem;padding:clamp(.65rem,1.2vw,1rem) clamp(.75rem,1.5vw,1.25rem);display:flex}.discovery-page__title{font-family:var(--font-display);color:var(--color-main-dark);text-align:center;margin:0;font-size:clamp(1.15rem,2.8vw,1.5rem);line-height:1.2}.discovery-page__subtitle{max-width:36rem;color:var(--text-secondary);text-align:center;margin:0;font-size:.8rem;line-height:1.45}.discovery-page__section{gap:var(--space-md);flex-direction:column;display:flex}.discovery-page__searchbar{width:min(100%,28rem);margin-top:.15rem}.discovery-page__searchbar-input-wrap{border-radius:var(--radius-md);border:1px solid var(--color-neutral-darker);background:var(--surface-card);align-items:center;padding:.45rem .65rem;display:flex}.discovery-page__searchbar-input-wrap:focus-within{border-color:var(--color-main);box-shadow:0 0 0 2px #86452a1f}.discovery-page__searchbar input{width:100%;color:var(--text-primary);background:0 0;border:none;outline:none;min-width:0;font-size:.9rem;font-weight:500}.discovery-page__searchbar input::placeholder{color:var(--text-muted)}.discovery-page__search-icon{width:1.5rem;height:1.5rem;color:var(--color-main-light);cursor:pointer;background:0 0;border:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.discovery-page__search-icon svg{width:1.1rem;height:1.1rem}.discovery-page__search-icon:hover{color:var(--color-main-dark)}.discovery-page__section-header{justify-content:space-between;align-items:flex-start;gap:var(--space-md);flex-wrap:wrap;display:flex}.discovery-page__section-title{font-family:var(--font-display);color:var(--text-primary);margin:0;font-size:1.4rem;font-style:italic}.discovery-page__section-copy{color:var(--text-secondary);margin:0;font-size:.875rem}.discovery-page__clear-genre{border-radius:var(--radius-pill);border:1px solid var(--color-neutral-darker);background:var(--surface-card);color:var(--text-primary);cursor:pointer;white-space:nowrap;flex-shrink:0;padding:.55rem 1rem}.discovery-page__clear-genre:hover{border-color:var(--color-main);color:var(--color-main)}.discovery-page__genre-scroll{gap:var(--space-md);padding-bottom:var(--space-sm);-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--color-neutral-darker) transparent;display:flex;overflow-x:auto}.discovery-page__genre-scroll::-webkit-scrollbar{height:4px}.discovery-page__genre-scroll::-webkit-scrollbar-track{background:0 0}.discovery-page__genre-scroll::-webkit-scrollbar-thumb{background:var(--color-neutral-darker);border-radius:2px}.discovery-page__genre-scroll .genre-card{flex-shrink:0;width:9rem;min-height:7rem}.discovery-page__variety-scroll{gap:var(--space-sm);padding-bottom:var(--space-sm);-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--color-neutral-darker) transparent;flex-wrap:nowrap;display:flex;overflow-x:auto}.discovery-page__variety-scroll::-webkit-scrollbar{height:4px}.discovery-page__variety-scroll::-webkit-scrollbar-track{background:0 0}.discovery-page__variety-scroll::-webkit-scrollbar-thumb{background:var(--color-neutral-darker);border-radius:2px}.discovery-page__variety-chip{border:1px solid var(--color-neutral-darker);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-primary);cursor:pointer;text-align:left;flex-direction:column;flex-shrink:0;align-items:flex-start;padding:.65rem 1.1rem;transition:border-color .15s,background .15s;display:flex}.discovery-page__variety-chip:hover{border-color:var(--color-main);background:var(--surface-input)}.discovery-page__variety-chip-name{white-space:nowrap;font-size:.9rem;font-weight:600}.discovery-page__variety-chip-genre{color:var(--text-secondary);white-space:nowrap;font-size:.75rem}.discovery-page__recipe-grid{gap:var(--space-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.discovery-page__recipe-pagination{margin-top:var(--space-sm)}.discovery-page__recipe-pagination .pagination-control{justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-sm);border-radius:var(--radius-md);border:1px solid var(--color-neutral-darker);background:var(--surface-card);display:flex}.discovery-page__recipe-pagination .pagination-control__btn{border:1px solid var(--color-neutral-darker);border-radius:var(--radius-pill);color:var(--text-primary);cursor:pointer;background:0 0;align-items:center;gap:.35rem;padding:.45rem .8rem;display:inline-flex}.discovery-page__recipe-pagination .pagination-control__btn:disabled{opacity:.55;cursor:not-allowed}.discovery-page__recipe-pagination .pagination-control__btn:not(:disabled):hover{border-color:var(--color-main);color:var(--color-main)}.discovery-page__recipe-pagination .pagination-control__info{color:var(--text-secondary);text-align:center;font-size:.9rem}.discovery-page__skeleton-genre{border-radius:var(--radius-md);flex-shrink:0;width:9rem;height:7rem}.discovery-page__skeleton-chip{border-radius:var(--radius-pill);flex-shrink:0;width:8rem;height:2.6rem}.discovery-page__skeleton-recipe{border-radius:var(--radius-md);height:16rem}.discovery-page__empty,.discovery-page__error{padding:var(--space-lg);border-radius:var(--radius-md);background:var(--surface-card);border:1px solid var(--color-neutral-darker)}.discovery-page__empty--compact{border-radius:var(--radius-sm);padding:.45rem .65rem}.discovery-page__empty--compact p{color:var(--text-secondary);margin:0;font-size:.8125rem;line-height:1.35}@media (width<=767px){.discovery-page__hero{align-items:stretch}.discovery-page__title,.discovery-page__subtitle{text-align:left}.discovery-page__searchbar{width:100%}.discovery-page__recipe-pagination .pagination-control{flex-wrap:wrap}.discovery-page__recipe-pagination .pagination-control__btn{flex:1;justify-content:center}.discovery-page__recipe-pagination .pagination-control__info{order:-1;width:100%}}@media (width>=768px){.discovery-page__recipe-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.discovery-page__genre-scroll .genre-card{width:10.5rem;min-height:8.5rem}}.discovery-page__filter-btn{border-radius:var(--radius-pill);border:1px solid var(--color-neutral-darker);background:var(--surface-card);color:var(--text-primary);font:inherit;cursor:pointer;white-space:nowrap;transition:border-color var(--transition-fast), color var(--transition-fast);flex-shrink:0;align-items:center;gap:.4rem;padding:.45rem .9rem;font-size:.875rem;display:flex}.discovery-page__filter-btn:hover,.discovery-page__filter-btn--open{border-color:var(--color-main);color:var(--color-main)}.discovery-page__filter-badge{border-radius:var(--radius-pill);background:var(--color-main);color:#fff;justify-content:center;align-items:center;min-width:1.25rem;height:1.25rem;padding:0 .3rem;font-size:.7rem;font-weight:600;line-height:1;display:inline-flex}.discovery-page__filter-panel{gap:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);background:var(--surface-card);border:1px solid var(--color-neutral-darker);flex-direction:column;display:flex}.discovery-page__filter-group{gap:var(--space-sm);flex-direction:column;display:flex}.discovery-page__filter-group-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;margin:0;font-size:.8125rem;font-weight:600}.discovery-page__filter-chips{gap:var(--space-sm);flex-wrap:wrap;display:flex}.discovery-page__filter-chip{border-radius:var(--radius-pill);border:1px solid var(--color-neutral-darker);background:var(--surface-bg);color:var(--text-primary);font:inherit;cursor:pointer;transition:border-color var(--transition-fast), background var(--transition-fast), color var(--transition-fast);padding:.3rem .8rem;font-size:.8125rem}.discovery-page__filter-chip:hover{border-color:var(--color-main);color:var(--color-main)}.discovery-page__filter-chip--active{background:var(--color-main);border-color:var(--color-main);color:#fff}.discovery-page__filter-chip--active:hover{background:var(--color-main-dark);border-color:var(--color-main-dark);color:#fff}.discovery-page__filter-location{gap:var(--space-xs);grid-template-columns:1fr 1fr;display:grid}.discovery-page__filter-location-select{border:1px solid var(--color-neutral-darker);border-radius:var(--radius-pill);width:100%;min-width:0;color:var(--text-primary);background:var(--surface-card);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right .65rem center;background-repeat:no-repeat;padding:.45rem 2rem .45rem .75rem;font-size:.875rem;transition:border-color .15s,box-shadow .15s}.discovery-page__filter-location-select:focus{border-color:var(--color-main);outline:none;box-shadow:0 0 0 2px #86452a1f}.discovery-page__filter-location-select:hover{border-color:var(--color-main)}.discovery-page__filter-clear{border-radius:var(--radius-pill);color:var(--color-main);font:inherit;cursor:pointer;transition:background var(--transition-fast);background:0 0;border:1px solid #86452a4d;align-self:flex-start;padding:.3rem .8rem;font-size:.8125rem}.discovery-page__filter-clear:hover{background:#86452a0f}.cr-ingredient-picker{align-items:center;gap:var(--space-xs);flex:1;min-width:0;display:flex;position:relative}.cr-ingredient-picker__list{z-index:20;padding:var(--space-xs) 0;background:var(--surface-card);border-radius:var(--radius-sm);border:1px solid #86452a40;max-height:12rem;margin:0;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #00000014}.cr-ingredient-picker__option{width:100%;padding:var(--space-sm) var(--space-md);text-align:left;font:inherit;color:var(--text-primary);cursor:pointer;transition:background var(--transition-fast);background:0 0;border:none;display:block}.cr-ingredient-picker__option:hover,.cr-ingredient-picker__option:focus-visible{background:#86452a14;outline:none}.cr-ingredient-picker__hint{padding:var(--space-sm) var(--space-md);color:var(--text-secondary);margin:0;font-size:.875rem}.cr-ingredient-picker__error{color:var(--color-negative);margin:0;font-size:.75rem;position:absolute;top:calc(100% + 2px);left:0}.cr-ingredient-picker__badge{color:#166441;background:#22785026;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;font-size:.75rem;display:flex}.cr-ingredient-picker__add-btn{width:100%;padding:var(--space-sm) var(--space-md);text-align:left;font:inherit;color:var(--color-primary,#86452a);cursor:pointer;transition:background var(--transition-fast);background:0 0;border:none;border-top:1px solid #86452a1f;font-size:.875rem;display:block}.cr-ingredient-picker__add-btn:hover,.cr-ingredient-picker__add-btn:focus-visible{background:#86452a0f;outline:none}.cr-unit-picker{flex:none;width:5.5rem}.cr-ing-modal-overlay{z-index:200;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.cr-ing-modal{background:var(--surface-card);border-radius:var(--radius-md,.75rem);padding:var(--space-lg,1.5rem);gap:var(--space-md,1rem);flex-direction:column;width:min(22rem,90vw);display:flex;box-shadow:0 16px 48px #00000024}.cr-ing-modal__title{color:var(--text-primary);margin:0;font-size:1.0625rem;font-weight:600}.cr-ing-modal__error{color:var(--color-negative);margin:0;font-size:.8125rem}.cr-ing-modal__actions{gap:var(--space-sm,.5rem);justify-content:flex-end;display:flex}.cr-page{background:var(--surface-bg);flex-direction:column;min-height:100%;display:flex}.cr-header{padding:var(--space-sm) var(--space-lg);background:var(--surface-bg);z-index:10;border-bottom:1px solid #86452a33;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.cr-header__back{width:2.25rem;height:2.25rem;color:var(--color-main);cursor:pointer;border-radius:var(--radius-sm);transition:background var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.cr-header__back:hover{background:var(--surface-overlay)}.cr-header__title{color:var(--text-primary);font-size:1.05rem;font-weight:500}.cr-header__draft{color:var(--text-secondary);cursor:pointer;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);transition:color var(--transition-fast);background:0 0;border:none;font-size:.85rem}.cr-header__draft:hover:not(:disabled){color:var(--color-main)}.cr-header__draft:disabled{opacity:.4;cursor:not-allowed}.cr-progress{padding:var(--space-md) var(--space-lg) var(--space-sm)}.cr-progress__bars{gap:var(--space-sm);display:flex}.cr-progress__bar{border-radius:var(--radius-pill);background:var(--color-neutral-dark);height:6px;transition:background var(--transition-normal);flex:1}.cr-progress__bar--filled{background:var(--color-main)}.cr-progress__label{color:var(--text-secondary);margin-top:var(--space-sm);font-size:.75rem}.cr-body{flex:1;padding-bottom:7rem;overflow-y:auto}.cr-section{gap:var(--space-lg);padding:var(--space-lg);flex-direction:column;display:flex}.cr-field{gap:var(--space-xs);flex-direction:column;display:flex}.cr-field--half{max-width:10rem}.cr-location-row{gap:var(--space-xs);grid-template-columns:1fr 1fr 1fr;display:grid}@media (width<=480px){.cr-location-row{grid-template-columns:1fr}}.cr-label{color:var(--text-primary);font-size:.875rem;font-weight:500}.cr-required{color:var(--color-negative)}.cr-input{padding:.75rem var(--space-md);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-primary);font-family:var(--font-body);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);border:1px solid #86452a33;outline:none;width:100%;font-size:.9375rem}.cr-input:focus{border-color:var(--color-main);box-shadow:0 0 0 3px #86452a1a}.cr-input--flex{flex:1;width:auto}.cr-input--amount{flex-shrink:0;width:7rem}.cr-input--unit{flex-shrink:0;width:5.5rem}.cr-textarea{padding:.75rem var(--space-md);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-primary);font-family:var(--font-body);resize:vertical;width:100%;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);border:1px solid #86452a33;outline:none;font-size:.9375rem}.cr-textarea:focus{border-color:var(--color-main);box-shadow:0 0 0 3px #86452a1a}.cr-textarea--inline{resize:none;box-shadow:none;background:0 0;border:none;flex:1;min-height:3.5rem;padding:0}.cr-textarea--inline:focus{box-shadow:none;border:none}.cr-select{padding:.75rem var(--space-md);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--text-primary);font-family:var(--font-body);cursor:pointer;width:100%;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);appearance:auto;border:1px solid #86452a33;outline:none;font-size:.9375rem}.cr-select:focus{border-color:var(--color-main);box-shadow:0 0 0 3px #86452a1a}.cr-select:disabled{opacity:.65;cursor:not-allowed}.cr-type-options{gap:var(--space-sm);flex-direction:column;display:flex}.cr-type-opt{padding:var(--space-md);border-radius:var(--radius-sm);background:var(--surface-card);text-align:left;cursor:pointer;transition:border-color var(--transition-fast), background var(--transition-fast);border:2px solid #86452a33}.cr-type-opt:hover:not(.cr-type-opt--disabled){border-color:#86452a80}.cr-type-opt--active{border-color:var(--color-main);background:#86452a0d}.cr-type-opt--disabled{opacity:.45;cursor:not-allowed}.cr-type-opt__title{color:var(--text-primary);font-size:.9375rem;font-weight:500;display:block}.cr-type-opt__desc{color:var(--text-secondary);margin-top:.25rem;font-size:.8125rem;display:block}.cr-block{gap:var(--space-md);flex-direction:column;display:flex}.cr-block__header{justify-content:space-between;align-items:center;display:flex}.cr-block__title{color:var(--text-primary);font-size:1.05rem;font-weight:500}.cr-info-note{color:var(--text-muted);padding:var(--space-sm) var(--space-md);background:var(--surface-overlay);border-radius:var(--radius-sm);font-size:.78rem}.cr-info-note--warn{color:var(--text-secondary);background:#b5642814;border:1px solid #b5642859}.cr-parse{padding:var(--space-md);border-radius:var(--radius-sm);background:var(--surface-card);border:1px solid #86452a33}.cr-parse__actions{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.cr-parse__hint{color:var(--text-secondary);font-size:.78rem}.cr-parse-preview{margin-top:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--surface-overlay);border:1px solid #86452a2e}.cr-parse-preview__title{color:var(--text-primary);margin:0;font-size:.85rem;font-weight:600}.cr-parse-preview__line{color:var(--text-secondary);margin:.35rem 0 0;font-size:.8rem}.cr-parse-preview__line--warn{color:var(--color-main-dark)}.cr-list{gap:var(--space-sm);flex-direction:column;display:flex}.cr-add-btn{align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);background:var(--surface-card);color:var(--color-main);font-family:var(--font-body);cursor:pointer;transition:background var(--transition-fast);border:1px solid #86452a33;font-size:.875rem;font-weight:500;display:flex}.cr-add-btn:hover{background:var(--surface-overlay)}.cr-ingredient-row,.cr-row{gap:var(--space-sm);flex-wrap:wrap;align-items:flex-start;display:flex}.cr-trash-btn{border-radius:var(--radius-sm);background:var(--surface-card);width:2.5rem;height:2.5rem;color:var(--color-negative);cursor:pointer;transition:background var(--transition-fast);border:1px solid #86452a33;flex-shrink:0;justify-content:center;align-items:center;display:flex}.cr-trash-btn:hover{background:#ba1a1a0f}.cr-step-row{gap:var(--space-sm);align-items:flex-start;display:flex}.cr-step-card{align-items:flex-start;gap:var(--space-md);padding:var(--space-md);background:var(--surface-card);border-radius:var(--radius-sm);border:1px solid #86452a33;flex:1;display:flex}.cr-step-card__num{background:var(--color-main);width:2rem;height:2rem;color:var(--text-on-main);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.875rem;font-weight:500;display:flex}.cr-review-card{background:var(--surface-card);border-radius:var(--radius-md);padding:var(--space-lg);gap:var(--space-md);box-shadow:var(--shadow-sm);flex-direction:column;display:flex}.cr-review-card__ready{align-items:center;gap:var(--space-sm);color:var(--color-positive);font-size:.875rem;font-weight:500;display:flex}.cr-review-card__title{font-family:var(--font-display);color:var(--text-primary);font-size:1.6rem;font-style:italic;line-height:1.25}.cr-review-card__meta{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.cr-badge{border-radius:var(--radius-pill);letter-spacing:.04em;padding:.2rem .65rem;font-size:.72rem;font-weight:600}.cr-badge--community{background:var(--color-main);color:var(--text-on-main)}.cr-badge--cultural{background:var(--color-tertiary);color:var(--text-on-main)}.cr-review-card__genre,.cr-review-card__variety,.cr-review-card__servings,.cr-review-card__location{color:var(--text-secondary);font-size:.875rem}.cr-review-card__story{color:var(--text-secondary);font-size:.875rem;line-height:1.6}.cr-review-card__divider{border-top:1px solid #86452a1a}.cr-review-counts{gap:var(--space-xl);flex-wrap:wrap;display:flex}.cr-review-count{flex-direction:column;gap:.25rem;display:flex}.cr-review-count--full{flex:1 0 100%}.cr-review-count__label{color:var(--text-secondary);font-size:.75rem}.cr-review-count__val{color:var(--color-main);font-size:.9375rem;font-weight:500}.cr-review-note{padding:var(--space-md);border-radius:var(--radius-sm);background:var(--surface-overlay)}.cr-review-note p{color:var(--text-primary);font-size:.875rem;line-height:1.55}.cr-error{color:var(--color-negative);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:#ba1a1a0f;font-size:.875rem}.cr-error--inline{margin-top:var(--space-xs);padding:var(--space-xs) var(--space-sm)}.cr-media__hint{color:var(--text-secondary);margin:0;font-size:.8rem;line-height:1.45}.cr-media__row{margin-top:var(--space-xs)}.cr-media__input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.cr-media__choose{cursor:pointer;display:inline-flex}.cr-media__choose-btn{color:var(--color-main);border-radius:var(--radius-pill);background:var(--surface-card);transition:background var(--transition-fast);border:1px solid #86452a59;justify-content:center;align-items:center;padding:.5rem 1rem;font-size:.875rem;font-weight:600;display:inline-flex}.cr-media__choose:hover .cr-media__choose-btn{background:var(--surface-overlay)}.cr-media__list{margin:var(--space-sm) 0 0;gap:var(--space-xs);flex-direction:column;padding:0;list-style:none;display:flex}.cr-media__item{justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);background:var(--surface-overlay);border-radius:var(--radius-sm);font-size:.85rem;display:flex}.cr-media__name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-primary);flex:1;overflow:hidden}.cr-actions{padding:var(--space-md) var(--space-lg);background:var(--surface-bg);gap:var(--space-sm);z-index:10;border-top:1px solid #86452a33;flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0}.cr-btn{width:100%;padding:.875rem var(--space-lg);border-radius:var(--radius-pill);font-family:var(--font-body);cursor:pointer;transition:opacity var(--transition-fast), background var(--transition-fast);justify-content:center;align-items:center;gap:var(--space-sm);border:none;font-size:1rem;font-weight:500;display:flex}.cr-btn:disabled{opacity:.45;cursor:not-allowed}.cr-btn--primary{background:var(--color-main);color:var(--text-on-main)}.cr-btn--primary:hover:not(:disabled){background:var(--color-main-dark)}.cr-btn--secondary{background:var(--surface-card);color:var(--text-primary);border:1px solid #86452a33}.cr-btn--secondary:hover:not(:disabled){background:var(--surface-overlay)}.cr-success{justify-content:center;align-items:center;gap:var(--space-md);min-height:60vh;padding:var(--space-xl);flex-direction:column;display:flex}.cr-success__icon{background:var(--color-positive);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:3.5rem;height:3.5rem;display:flex}.cr-success__icon svg{width:1.5rem;height:1.5rem}.cr-success__msg{color:var(--text-primary);text-align:center;font-size:1.05rem;font-weight:500}.cr-field-hint{color:var(--text-secondary);margin:-.25rem 0 .5rem;font-size:.8rem}.cr-tag-grid{flex-wrap:wrap;gap:.5rem;display:flex}.cr-tag-chip{background:var(--surface-card);color:var(--text-secondary);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);-webkit-user-select:none;user-select:none;border:1.5px solid #86452a40;border-radius:999px;align-items:center;gap:.35rem;padding:.35rem .75rem;font-size:.82rem;display:inline-flex}.cr-tag-chip:hover{border-color:var(--color-main);color:var(--color-main)}.cr-tag-chip--active{border-color:var(--color-main);color:var(--color-main);background:#86452a1f;font-weight:500}.cr-tag-chip--allergen{color:var(--text-secondary);border-color:#c8503c4d}.cr-tag-chip--allergen:hover{color:#c8503c;border-color:#c8503c}.cr-tag-chip--allergen.cr-tag-chip--active{color:#c8503c;background:#c8503c1a;border-color:#c8503c}.cr-tag-chip__input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.cr-review-card__tags{flex-wrap:wrap;gap:.4rem;margin-top:.5rem;display:flex}.cr-review-tag{border-radius:999px;padding:.2rem .6rem;font-size:.75rem;font-weight:500}.cr-review-tag--dietary{color:var(--color-main);background:#86452a1a}.cr-review-tag--allergen{color:#c8503c;background:#c8503c1a}@media (width>=768px){.cr-body{width:100%;max-width:640px;margin:0 auto}.cr-actions{border-left:1px solid #86452a33;border-right:1px solid #86452a33;max-width:640px;left:50%;transform:translate(-50%)}}.recipe-rating{align-items:center;display:inline-flex;position:relative}.recipe-rating__stars{flex-direction:row;align-items:center;gap:.125rem;display:flex}.recipe-rating--comfortable .recipe-rating__stars{gap:.2rem}.recipe-rating--comfortable .recipe-rating__star{padding:.35rem}.recipe-rating__star{cursor:pointer;color:var(--rd-muted,#6b5d52);border-radius:var(--radius-pill,999px);transition:color var(--transition-fast,.15s ease), transform var(--transition-fast,.15s ease);background:0 0;border:none;justify-content:center;align-items:center;margin:0;padding:.25rem;display:inline-flex}.recipe-rating__star:hover:not(:disabled){color:var(--color-main,#8b4513);transform:scale(1.08)}.recipe-rating__star:focus{outline:none}.recipe-rating__star:focus-visible{outline:2px solid var(--color-main,#8b4513);outline-offset:2px}.recipe-rating__star:disabled{cursor:not-allowed;opacity:.55}.recipe-rating__star--static{cursor:default;padding:.125rem}.recipe-rating__svg{fill:currentColor;opacity:.35;display:block}.recipe-rating__svg--filled{opacity:1;fill:var(--color-main,#c17f3a);color:var(--color-main,#c17f3a);filter:drop-shadow(0 1px 1px #2a18101f)}.recipe-rating--disabled .recipe-rating__svg--filled{opacity:.65}.recipe-rating--busy .recipe-rating__stars{opacity:.45;pointer-events:none}.recipe-rating__busy-overlay{z-index:1;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.confirm-modal-overlay{z-index:200;padding:var(--space-md);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00000073;justify-content:center;align-items:center;animation:.2s confirm-modal-fade;display:flex;position:fixed;inset:0}.confirm-modal{width:100%;max-width:400px;padding:var(--space-xl);background:var(--surface-card,#fff);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:.25s cubic-bezier(.16,1,.3,1) confirm-modal-scale}.confirm-modal__title{margin:0 0 var(--space-sm);font-family:var(--font-display);color:var(--rd-fg,#2a1810);font-size:1.35rem}.confirm-modal__message{margin:0 0 var(--space-lg);color:var(--rd-muted,#6b5d52);font-size:.95rem;line-height:1.55}.confirm-modal__actions{justify-content:flex-end;gap:var(--space-sm);flex-wrap:wrap;display:flex}.confirm-modal__btn{border-radius:var(--radius-pill);cursor:pointer;min-height:2.5rem;transition:opacity var(--transition-fast), transform var(--transition-fast);border:none;padding:.5rem 1.1rem;font-size:.9375rem;font-weight:600}.confirm-modal__btn:disabled{opacity:.65;cursor:not-allowed}.confirm-modal__btn--secondary{color:var(--rd-muted);background:0 0;border:1px solid #2a181033}.confirm-modal__btn--secondary:hover:not(:disabled){background:#2a18100d}.confirm-modal__btn--primary{background:var(--color-main);color:#fff}.confirm-modal__btn--primary:hover:not(:disabled){filter:brightness(1.05)}.confirm-modal__btn--danger{color:#fff;background:#b42318}.confirm-modal__btn--danger:hover:not(:disabled){filter:brightness(1.06)}.confirm-modal__btn-content{justify-content:center;align-items:center;display:inline-flex;position:relative}.confirm-modal__btn-label{display:inline-block}.confirm-modal__btn-label--hidden{visibility:hidden}.confirm-modal__btn-spinner-wrap{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.confirm-modal__btn--danger .confirm-modal__btn-spinner,.confirm-modal__btn--primary .confirm-modal__btn-spinner{border-color:#fff #ffffff59 #ffffff59}@keyframes confirm-modal-fade{0%{opacity:0}to{opacity:1}}@keyframes confirm-modal-scale{0%{opacity:0;transform:scale(.96)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}.recipe-detail--loading{width:100%;margin-left:0;margin-right:0;padding-bottom:0}.recipe-detail{--rd-fg:#2a1810;--rd-muted:#6b5d52;--rd-muted-bg:#e8ddd3;background:var(--surface-bg);width:calc(100% + 2.5rem);padding-bottom:var(--space-2xl);margin-left:-1.25rem;margin-right:-1.25rem}.recipe-detail__hero{border-radius:var(--radius-lg);height:20rem;position:relative;overflow:hidden}.recipe-detail__hero-img,.recipe-detail__hero-placeholder{object-fit:cover;width:100%;height:100%;display:block}.recipe-detail__hero-placeholder{background:linear-gradient(135deg, var(--color-main-dark), var(--color-secondary))}.recipe-detail__hero-gradient{pointer-events:none;background:linear-gradient(#0000,#00000080);position:absolute;inset:0}.recipe-detail__hero-toolbar{padding:var(--space-md) var(--space-lg);z-index:2;justify-content:space-between;align-items:center;display:flex;position:absolute;top:0;left:0;right:0}.recipe-detail__hero-actions{gap:var(--space-sm);display:flex}.recipe-detail__hero-btn{border-radius:var(--radius-pill);width:2.5rem;height:2.5rem;color:var(--color-main);cursor:pointer;transition:background var(--transition-fast), transform var(--transition-fast);background:#ffffffe6;border:none;justify-content:center;align-items:center;padding:0;display:flex}.recipe-detail__hero-btn:hover{background:#fff;transform:scale(1.02)}.recipe-detail__hero-badge{top:5rem;right:var(--space-lg);z-index:2;border-radius:var(--radius-pill);color:var(--text-on-main);text-transform:uppercase;letter-spacing:.04em;padding:.25rem .75rem;font-size:.75rem;font-weight:500;position:absolute}.recipe-detail__hero-badge--cultural{background:var(--color-tertiary)}.recipe-detail__hero-badge--community{background:var(--color-secondary)}.recipe-detail__body{padding:var(--space-lg) var(--space-lg);gap:var(--space-lg);flex-direction:column;display:flex}.recipe-detail__intro{gap:var(--space-md);flex-direction:column;display:flex}.recipe-detail__title{font-family:var(--font-display);color:var(--rd-fg);margin:0;font-size:2rem;font-style:italic;line-height:1.2}@media (width>=480px){.recipe-detail__title{font-size:2rem}}.recipe-detail__author-block{align-items:center;gap:var(--space-md);margin-top:var(--space-xs);display:flex}.recipe-detail__author-avatar{border-radius:var(--radius-pill);background:var(--rd-muted-bg);width:3rem;height:3rem;color:var(--rd-fg);flex-shrink:0;justify-content:center;align-items:center;font-size:1.1rem;font-weight:600;display:flex}.recipe-detail__author-name{color:var(--rd-fg);margin:0;font-size:1rem;font-weight:500}.recipe-detail__author-meta{color:var(--rd-muted);margin:.15rem 0 0;font-size:.875rem}.recipe-detail__lede{margin:var(--space-sm) 0 0;font-family:var(--font-display);color:var(--rd-muted);font-size:1rem;font-style:italic;line-height:1.6}.recipe-detail__stats{align-items:center;gap:var(--space-xl);display:flex}.recipe-detail__stat-rating{align-items:center;gap:.25rem;display:inline-flex}.recipe-detail__stat-star{color:var(--color-tertiary);display:flex}.recipe-detail__stat-star svg{fill:var(--color-tertiary)}.recipe-detail__stat-value{color:var(--rd-fg);font-size:1rem;font-weight:500}.recipe-detail__stat-reviews{color:var(--rd-muted);font-size:.875rem}.recipe-detail__rating-section{margin-top:var(--space-md);padding:var(--space-lg);background:linear-gradient(145deg, var(--surface-card,#fff) 0%, var(--rd-muted-bg) 100%);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid #2a181014;border-left:4px solid var(--color-tertiary,#c9a227)}.recipe-detail__rating-label{margin:0 0 var(--space-md);color:var(--rd-fg);letter-spacing:.02em;font-size:1rem;font-weight:600}.recipe-detail__rating-controls{align-items:center;gap:var(--space-md) var(--space-lg);flex-wrap:wrap;display:flex}.recipe-detail__rating-stars{flex:none}.recipe-detail__rating-remove{color:var(--rd-muted);border-radius:var(--radius-pill);cursor:pointer;transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;border:1px solid #2a181026;margin:0;padding:.4rem .75rem;font-size:.875rem;font-weight:500}.recipe-detail__rating-remove:hover:not(:disabled){color:#b42318;background:#b423180f;border-color:#b4231859}.recipe-detail__rating-remove:focus-visible{outline:2px solid var(--color-main);outline-offset:2px}.recipe-detail__rating-remove:disabled{opacity:.5;cursor:not-allowed}.recipe-detail__rating-muted{color:var(--rd-muted);margin:0;font-size:.9375rem;line-height:1.5}.recipe-detail__rating-login{color:var(--color-main);text-underline-offset:2px;font-weight:600;text-decoration:underline}.recipe-detail__rating-login:focus-visible{outline:2px solid var(--color-main);outline-offset:2px;border-radius:2px}.recipe-detail__rating-error{margin:var(--space-sm) 0 0;color:#b42318;font-size:.875rem}.recipe-detail__card{background:var(--surface-card);border-radius:var(--radius-lg);padding:var(--space-md);box-shadow:var(--shadow-sm)}.recipe-detail__servings-row{justify-content:space-between;align-items:center;display:flex}.recipe-detail__servings-label{align-items:center;gap:var(--space-sm);color:var(--rd-fg);font-size:1rem;font-weight:500;display:flex}.recipe-detail__servings-icon{color:var(--color-main);display:flex}.recipe-detail__servings-controls{align-items:center;gap:var(--space-md);display:flex}.recipe-detail__servings-btn{border-radius:var(--radius-pill);background:var(--rd-muted-bg);width:2rem;height:2rem;color:var(--color-main);cursor:pointer;transition:background var(--transition-fast);border:none;justify-content:center;align-items:center;font-size:1.125rem;line-height:1;display:flex}.recipe-detail__servings-btn:hover{background:var(--color-neutral-darker)}.recipe-detail__servings-value{color:var(--rd-fg);text-align:center;min-width:1.5rem;font-size:1.125rem;font-weight:500}.recipe-detail__block{gap:var(--space-sm);flex-direction:column;display:flex}.recipe-detail__h2{color:var(--rd-fg);font-size:1.25rem;font-weight:500;font-family:var(--font-body);margin:0}.recipe-detail__ingredient-list{gap:var(--space-sm);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.recipe-detail__ingredient-card{background:var(--surface-card);border-radius:var(--radius-md);padding:var(--space-md);box-shadow:var(--shadow-sm);gap:var(--space-xs);flex-direction:column;display:flex}.recipe-detail__ingredient-row{justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.recipe-detail__ingredient-name{color:var(--rd-fg);flex:1;min-width:0;font-size:1rem}.recipe-detail__ingredient-right{align-items:center;gap:var(--space-md);flex-shrink:0;display:flex}.recipe-detail__ingredient-amt{color:var(--rd-muted);font-size:.875rem}.recipe-detail__substitute-btn{padding:var(--space-sm);border-radius:var(--radius-pill);color:var(--color-main);cursor:pointer;transition:background var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.recipe-detail__substitute-btn:hover{background:var(--surface-overlay)}.recipe-detail__ingredient-allergens{color:var(--color-negative);margin:0;font-size:.78rem}.recipe-detail__tools-row{gap:var(--space-sm);flex-wrap:wrap;display:flex}.recipe-detail__tool-pill{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--rd-fg);border:1px solid #86452a33;font-size:.875rem}.recipe-detail__step-list{gap:var(--space-md);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.recipe-detail__step-card{gap:var(--space-md);padding:var(--space-md);background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);align-items:flex-start;display:flex}.recipe-detail__step-num{border-radius:var(--radius-pill);background:var(--color-main);width:2rem;height:2rem;color:var(--text-on-main);flex-shrink:0;justify-content:center;align-items:center;font-size:1rem;font-weight:500;display:flex}.recipe-detail__step-text{color:var(--rd-fg);margin:0;padding-top:.15rem;font-size:1rem;line-height:1.6}.recipe-detail__media-gallery{gap:var(--space-sm);padding-bottom:var(--space-xs);scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;display:flex;overflow-x:auto}.recipe-detail__media-gallery-item{scroll-snap-align:start;border-radius:var(--radius-md);background:var(--surface-overlay);width:min(42vw,200px);box-shadow:var(--shadow-sm);flex:none;overflow:hidden}.recipe-detail__media-gallery-img{object-fit:cover;width:100%;height:140px;display:block}.recipe-detail__uploaded-videos{gap:var(--space-md);flex-direction:column;display:flex}.recipe-detail__uploaded-video{border-radius:var(--radius-md);background:#000;width:100%;max-height:min(70vh,480px)}.recipe-detail__row-btn{width:100%;padding:var(--space-md);border-radius:var(--radius-lg);background:var(--surface-card);box-shadow:var(--shadow-sm);font-size:1rem;font-weight:500;font-family:var(--font-body);color:var(--rd-fg);cursor:pointer;transition:background var(--transition-fast);border:none;justify-content:space-between;align-items:center;display:flex}.recipe-detail__row-btn:hover{background:var(--surface-input)}.recipe-detail__row-btn svg{color:var(--rd-muted);flex-shrink:0}.recipe-detail__cta{width:100%;padding:var(--space-md) var(--space-lg);border-radius:var(--radius-lg);background:var(--color-main);color:var(--text-on-main);font-size:1rem;font-weight:500;font-family:var(--font-body);cursor:pointer;transition:background var(--transition-fast);border:none}.recipe-detail__cta:hover{background:var(--color-main-dark)}.recipe-detail__alternatives-empty{color:var(--rd-muted);margin:0;font-size:.9rem}.recipe-detail--error{justify-content:center;align-items:center;gap:var(--space-md);width:100%;min-height:40vh;color:var(--text-secondary);text-align:center;padding:var(--space-lg);flex-direction:column;margin-left:0;margin-right:0;display:flex}.recipe-detail__back-btn{border:1px solid var(--color-main);color:var(--color-main);border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-body);background:0 0;padding:.45rem 1rem}.recipe-detail__back-btn:hover{background:var(--surface-overlay)}.recipe-detail__skeleton-hero{border-radius:0;height:20rem}.recipe-detail__skeleton-body{padding:var(--space-lg);gap:var(--space-sm);flex-direction:column;display:flex}.recipe-detail__skeleton-line{border-radius:var(--radius-sm);height:1rem}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.recipe-detail__scaling-hint{color:var(--rd-muted);margin:0;font-size:.8125rem}.rd-subs-overlay{z-index:200;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.rd-subs-modal{background:var(--surface-card);border-radius:var(--radius-md,.75rem);padding:var(--space-lg,1.5rem);gap:var(--space-md,1rem);flex-direction:column;width:min(24rem,92vw);max-height:80vh;display:flex;overflow-y:auto;box-shadow:0 16px 48px #00000024}.rd-subs-modal__title{color:var(--text-primary);margin:0;font-size:1.0625rem;font-weight:600}.rd-subs-modal__hint{color:var(--rd-muted);margin:0;font-size:.875rem}.rd-subs-modal__error{color:var(--color-negative);margin:0;font-size:.875rem}.rd-subs-modal__list{gap:var(--space-sm);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.rd-subs-modal__item{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--surface-bg);flex-direction:column;gap:.25rem;display:flex}.rd-subs-modal__item-row{justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.rd-subs-modal__item-name{color:var(--text-primary);font-size:.9375rem;font-weight:500}.rd-subs-modal__item-amt{color:var(--rd-muted);flex-shrink:0;font-size:.875rem}.rd-subs-modal__item-meta{color:var(--color-main);font-size:.75rem}.rd-subs-modal__item-desc{color:var(--rd-muted);margin:0;font-size:.8125rem}.rd-subs-modal__close{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);color:var(--color-main);font:inherit;cursor:pointer;transition:background var(--transition-fast);background:0 0;border:1px solid #86452a4d;align-self:flex-end;font-size:.875rem}.rd-subs-modal__close:hover{background:#86452a0f}.dish-variety-page{gap:var(--space-md);flex-direction:column;max-width:60rem;margin:0 auto;display:flex}.dish-variety-page__back{align-items:center;gap:var(--space-xs);width:fit-content;color:var(--color-main);font-family:var(--font-body);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;font-size:.9rem;font-weight:500;display:inline-flex}.dish-variety-page__back:hover{background:var(--surface-overlay);color:var(--color-main-dark)}.dish-variety-page__header{gap:var(--space-xs);grid-template-columns:1fr;display:grid}.dish-variety-page__genre{letter-spacing:.06em;text-transform:uppercase;width:fit-content;color:var(--color-main);background:var(--surface-overlay);border-radius:var(--radius-pill);padding:.2rem .55rem;font-size:.72rem;font-weight:600}.dish-variety-page__title{font-family:var(--font-display);color:var(--text-primary);margin:0;font-size:clamp(1.7rem,3.1vw,2.4rem);font-style:italic;line-height:1.15}.dish-variety-page__description{color:var(--text-secondary);margin:0;line-height:1.7}.dish-variety-page__section-title{margin:0 0 var(--space-sm);font-family:var(--font-display);color:var(--text-primary);font-size:1.3rem;font-style:italic}.dish-variety-page__subsection-title{margin:var(--space-md) 0 var(--space-sm);color:var(--text-secondary);font-size:1rem;font-weight:600}.dish-variety-page__empty{color:var(--text-secondary);margin:0}.dish-variety-page__recipes{gap:var(--space-md);grid-template-columns:1fr;display:grid}.variety-recipe-spotlight{border-radius:var(--radius-lg);background:radial-gradient(circle at top right, #f3dcba80, transparent 38%), var(--surface-card);box-shadow:var(--shadow-md);gap:var(--space-md);margin-bottom:var(--space-md);border:1px solid #86452a33;padding:clamp(1.1rem,3vw,1.8rem);display:grid}.variety-recipe-spotlight__media{border-radius:var(--radius-md);background:var(--color-neutral-dark);width:100%;max-height:min(42vh,22rem);overflow:hidden}.variety-recipe-spotlight__media img{object-fit:cover;width:100%;height:100%;display:block}.variety-recipe-spotlight__eyebrow{text-transform:uppercase;letter-spacing:.08em;border-radius:var(--radius-pill);width:fit-content;color:var(--color-main-dark);background:#a07a5524;padding:.25rem .55rem;font-size:.72rem;font-weight:700}.variety-recipe-spotlight__title{font-family:var(--font-display);color:var(--text-primary);margin:0;font-size:clamp(1.6rem,3.4vw,2.3rem);line-height:1.2}.variety-recipe-spotlight__description{color:var(--text-secondary);max-width:75ch;margin:0;font-size:.96rem;line-height:1.7}.variety-recipe-spotlight__meta{align-items:center;gap:var(--space-sm);color:var(--text-secondary);flex-wrap:wrap;font-size:.88rem;display:flex}.variety-recipe-spotlight__type{border-radius:var(--radius-pill);text-transform:uppercase;letter-spacing:.05em;color:var(--text-on-main);background:var(--color-tertiary);padding:.1rem .55rem;font-size:.74rem;font-weight:700}.variety-recipe-spotlight__rating{color:var(--color-tertiary);align-items:center;gap:.25rem;font-weight:700;display:inline-flex}.variety-recipe-spotlight__rating small{color:var(--text-secondary);font-weight:500}.variety-recipe-spotlight__cta{border-radius:var(--radius-pill);background:var(--color-main);color:var(--text-on-main);font-weight:600;font-family:var(--font-body);cursor:pointer;transition:background var(--transition-fast), transform var(--transition-fast);border:none;justify-self:start;margin-top:0;padding:.6rem 1.15rem}.variety-recipe-spotlight__cta:hover{background:var(--color-main-dark);transform:translateY(-1px)}.dish-variety-page--error{justify-content:center;align-items:center;gap:var(--space-md);min-height:40vh;color:var(--text-secondary);text-align:center;flex-direction:column;display:flex}.dish-variety-page__back-btn{border:1px solid var(--color-main);color:var(--color-main);border-radius:var(--radius-sm);cursor:pointer;background:0 0;padding:.45rem 1rem}.dish-variety-page__back-btn:hover{background:var(--surface-overlay)}.dish-variety-page__skeleton-title{border-radius:var(--radius-sm);width:min(22rem,70%);height:2rem}.dish-variety-page__skeleton-body{gap:var(--space-sm);flex-direction:column;display:flex}.dish-variety-page__skeleton-row{border-radius:var(--radius-md);height:4.2rem}.skeleton-pulse{background:var(--color-neutral-dark);animation:1.4s ease-in-out infinite pulse}@media (width>=768px){.dish-variety-page{max-width:66rem}.dish-variety-page__recipes{grid-template-columns:repeat(3,1fr)}.dish-variety-page__recipes .recipe-card--horizontal{flex-direction:column;padding:0}.dish-variety-page__recipes .recipe-card--horizontal .recipe-card__thumb{border-radius:var(--radius-md) var(--radius-md) 0 0;width:100%;height:10rem}.dish-variety-page__recipes .recipe-card--horizontal .recipe-card__body{padding:var(--space-md)}}.login{background:var(--surface-bg);min-height:100vh}.login__header{padding:var(--space-md) var(--space-lg);background:0 0;justify-content:center;align-items:center;display:flex;position:relative}.login__back{left:var(--space-lg);color:var(--text-primary);padding:var(--space-xs);border-radius:var(--radius-sm);transition:background var(--transition-fast);align-items:center;display:flex;position:absolute}.login__back:hover{background:var(--surface-overlay);color:var(--text-primary)}.login__header-title{font-family:var(--font-display);color:var(--color-main);align-items:center;gap:8px;font-size:1.1rem;font-style:italic;display:flex}.login__header-title:before{content:"";background:url(/assets/logo-app-CXBTdooC.png) 50%/contain no-repeat;width:20px;height:20px;display:inline-block}.login__lang{right:var(--space-lg);position:absolute;top:50%;transform:translateY(-50%)}.login__body{max-width:480px;padding:var(--space-lg) var(--space-lg) var(--space-2xl);gap:var(--space-md);flex-direction:column;margin:0 auto;display:flex}.login__heading{margin-bottom:var(--space-md)}.login__title{font-family:var(--font-display);color:var(--color-main);font-size:2.5rem;font-weight:600;line-height:1.2}.login__title em{font-style:italic;font-weight:500}.login__subtitle{font-family:var(--font-body);color:var(--text-secondary);margin-top:var(--space-sm);font-size:1.05rem;line-height:1.4}.login__form{gap:var(--space-md);flex-direction:column;display:flex}.login__alert{color:var(--color-negative);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:#fef2f2;border:1px solid #fecaca;font-size:.875rem;animation:.3s both fadeSlideUp}.login__field{flex-direction:column;gap:4px;display:flex}.login__input-wrap{align-items:center;display:flex;position:relative}.login__input{border:1px solid var(--color-neutral-dark);border-radius:var(--radius-sm);background:var(--surface-input);width:100%;font-family:var(--font-body);color:var(--text-primary);transition:all var(--transition-fast);outline:none;padding:1rem;font-size:1rem}.login__input::placeholder{color:var(--text-muted)}.login__input:focus{border-color:var(--color-main);background:#fff;box-shadow:0 0 0 3px #86452a1a}.login__input--error{border-color:var(--color-negative)}.login__input--error:focus{box-shadow:0 0 0 3px #ba1a1a1a}.login__error{color:var(--color-negative);font-size:.8rem}.login__toggle-pw{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-pill);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:flex;position:absolute;right:12px}.login__toggle-pw:hover{color:var(--text-primary);background:#0000000d}.login__forgot-link{font-family:var(--font-body);color:var(--color-main);cursor:pointer;transition:opacity var(--transition-fast);background:0 0;border:none;align-self:flex-end;margin-top:2px;padding:4px 0;font-size:.85rem;font-weight:600}.login__forgot-link:hover{opacity:.8;text-decoration:underline}.login__remember{cursor:pointer;justify-content:space-between;align-items:center;display:flex}.login__remember span{color:var(--text-primary);font-size:1rem;font-weight:500}.login__toggle{width:48px;height:28px;position:relative}.login__toggle input{opacity:0;width:0;height:0}.login__toggle-track{cursor:pointer;background-color:var(--color-neutral-darker);transition:var(--transition-normal);border-radius:34px;position:absolute;inset:0}.login__toggle-track:before{content:"";width:20px;height:20px;transition:var(--transition-normal);box-shadow:var(--shadow-sm);background-color:#fff;border-radius:50%;position:absolute;bottom:4px;left:4px}.login__toggle input:checked+.login__toggle-track{background-color:var(--color-main)}.login__toggle input:focus+.login__toggle-track{box-shadow:0 0 1px var(--color-main)}.login__toggle input:checked+.login__toggle-track:before{transform:translate(20px)}.login__submit{width:100%;margin-top:var(--space-md);border-radius:var(--radius-lg);background:var(--color-main);color:var(--text-on-main);font-family:var(--font-body);cursor:pointer;transition:all var(--transition-normal);border:none;justify-content:center;align-items:center;min-height:52px;padding:1rem;font-size:1rem;font-weight:600;display:flex}.login__submit:hover:not(:disabled){background:var(--color-main-dark);box-shadow:var(--shadow-md);transform:translateY(-1px)}.login__submit:disabled{opacity:.7;cursor:not-allowed}.login__spinner{border:2.5px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:22px;height:22px;animation:.7s linear infinite spin}.login__or-divider{align-items:center;gap:var(--space-md);margin-top:var(--space-sm);display:flex}.login__or-divider:before,.login__or-divider:after{content:"";background:var(--color-neutral-darker);flex:1;height:1px}.login__or-divider span{letter-spacing:.12em;color:var(--text-muted);white-space:nowrap;font-size:.7rem;font-weight:500}.login__social{gap:var(--space-sm);flex-direction:column;display:flex}.login__social-btn{justify-content:center;align-items:center;gap:var(--space-sm);border-radius:var(--radius-lg);width:100%;font-family:var(--font-body);cursor:pointer;transition:all var(--transition-normal);border:none;padding:.875rem 1.5rem;font-size:.95rem;font-weight:500;display:flex}.login__social-btn--google{background:var(--surface-card);color:var(--text-primary);border:1px solid var(--color-neutral-darker)}.login__social-btn--google:hover{background:var(--color-neutral-dark);transform:translateY(-1px)}.login__social-btn--apple{color:#fff;background:#111}.login__social-btn--apple:hover{background:#000;transform:translateY(-1px)}.login__social-btn--apple img{filter:invert()}.login__footer{text-align:center;color:var(--text-primary);margin-top:var(--space-sm);font-size:.95rem}.login__footer-link{color:var(--color-main);font-weight:600}.login__footer-link:hover{text-decoration:underline}.login__legal{justify-content:center;align-items:center;gap:var(--space-sm);margin-top:var(--space-lg);font-size:.8rem;display:flex}.login__legal a{color:var(--text-muted)}.login__legal a:hover{color:var(--text-primary)}.login__legal-dot{color:var(--color-neutral-darker)}.login__modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:var(--space-md);z-index:100;background:#0006;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.login__modal{background:var(--surface-card);border-radius:var(--radius-lg);width:100%;max-width:400px;padding:var(--space-xl);box-shadow:var(--shadow-lg);animation:.3s cubic-bezier(.16,1,.3,1) scaleUp;position:relative}.login__modal-close{color:var(--text-muted);cursor:pointer;width:32px;height:32px;transition:background var(--transition-fast);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.25rem;display:flex;position:absolute;top:16px;right:16px}.login__modal-close:hover{background:var(--surface-input);color:var(--text-primary)}.login__modal-title{font-family:var(--font-display);color:var(--color-main);margin-bottom:var(--space-sm);font-size:1.5rem}.login__modal-desc{color:var(--text-secondary);margin-bottom:var(--space-lg);font-size:.95rem;line-height:1.5}.login__modal-success{text-align:center;padding:var(--space-md) 0}.login__modal-success p{color:var(--text-primary);margin:var(--space-md) 0}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleUp{0%{opacity:0;transform:scale(.95)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}.login__body{animation:.5s both fadeSlideUp}@media (width>=768px){.login__body{padding-top:var(--space-2xl)}.login__header{background:0 0;border-bottom:none}}.register{background:var(--surface-bg);min-height:100vh}.register__header{padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-neutral-dark);background:var(--surface-card);justify-content:center;align-items:center;display:flex;position:relative}.register__back{left:var(--space-lg);color:var(--text-primary);padding:var(--space-xs);border-radius:var(--radius-sm);transition:background var(--transition-fast);align-items:center;display:flex;position:absolute}.register__back:hover{background:var(--surface-overlay);color:var(--text-primary)}.register__header-title{font-family:var(--font-display);color:var(--color-main);font-size:1.1rem;font-style:italic}.register__lang{right:var(--space-lg);position:absolute;top:50%;transform:translateY(-50%)}.register__form{max-width:480px;padding:var(--space-xl) var(--space-lg) var(--space-2xl);gap:var(--space-md);flex-direction:column;margin:0 auto;display:flex}.register__alert{color:var(--color-negative);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:#fef2f2;border:1px solid #fecaca;font-size:.875rem;animation:.3s both fadeSlideUp}.register__field{gap:var(--space-xs);flex-direction:column;display:flex}.register__label{color:var(--color-main);letter-spacing:.02em;font-size:.8rem;font-weight:500}.register__input{border:1px solid var(--color-neutral-dark);border-radius:var(--radius-sm);background:var(--surface-input);width:100%;font-family:var(--font-body);color:var(--text-primary);transition:all var(--transition-fast);outline:none;padding:.8rem 1rem;font-size:.95rem}.register__input::placeholder{color:var(--text-muted)}.register__input:focus{border-color:var(--color-main);box-shadow:0 0 0 3px #86452a1a}.register__input--error{border-color:var(--color-negative)}.register__input--error:focus{box-shadow:0 0 0 3px #ba1a1a1a}.register__error{color:var(--color-negative);font-size:.78rem}.register__pw-strength{align-items:center;gap:var(--space-sm);margin-top:2px;display:flex}.register__pw-bar{background:var(--color-neutral-dark);border-radius:var(--radius-pill);flex:1;height:4px;overflow:hidden}.register__pw-fill{border-radius:var(--radius-pill);height:100%;transition:width var(--transition-normal), background var(--transition-normal)}.register__pw-fill--1{background:var(--color-negative)}.register__pw-fill--2{background:var(--color-tertiary)}.register__pw-fill--3{background:var(--color-secondary)}.register__pw-fill--4{background:var(--color-positive)}.register__pw-label{min-width:48px;font-size:.72rem;font-weight:500}.register__pw-label--1{color:var(--color-negative)}.register__pw-label--2{color:var(--color-tertiary)}.register__pw-label--3{color:var(--color-secondary)}.register__pw-label--4{color:var(--color-positive)}.register__roles{gap:var(--space-sm);margin-top:var(--space-sm);border:none;flex-direction:column;display:flex}.register__roles-legend{font-family:var(--font-display);color:var(--text-primary);margin-bottom:var(--space-sm);font-size:1.15rem;font-weight:500}.register__role-card{align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);border:1.5px solid var(--color-neutral-dark);background:var(--surface-card);cursor:pointer;transition:all var(--transition-fast);display:flex}.register__role-card:hover{border-color:var(--color-main);background:var(--surface-overlay)}.register__role-card--active{border-color:var(--color-main);background:#86452a0a;box-shadow:0 0 0 3px #86452a14}.register__role-icon{border-radius:var(--radius-sm);background:var(--surface-input);flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:1.6rem;display:flex}.register__role-card--active .register__role-icon{background:#86452a14}.register__role-info{flex-direction:column;gap:2px;display:flex}.register__role-name{color:var(--color-main);font-size:.95rem;font-weight:600}.register__role-desc{color:var(--text-secondary);font-size:.82rem;line-height:1.4}.register__select-wrap{position:relative}.register__select{border:1px solid var(--color-neutral-dark);border-radius:var(--radius-sm);background:var(--surface-input);width:100%;font-family:var(--font-body);color:var(--text-primary);appearance:none;cursor:pointer;transition:all var(--transition-fast);outline:none;padding:.8rem 2.5rem .8rem 1rem;font-size:.95rem}.register__select:focus{border-color:var(--color-main);box-shadow:0 0 0 3px #86452a1a}.register__select-icon{color:var(--text-muted);pointer-events:none;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.register__submit{width:100%;margin-top:var(--space-md);border-radius:var(--radius-lg);background:var(--color-main);color:var(--text-on-main);font-family:var(--font-body);cursor:pointer;transition:all var(--transition-normal);border:none;justify-content:center;align-items:center;min-height:52px;padding:1rem;font-size:1rem;font-weight:600;display:flex}.register__submit:hover:not(:disabled){background:var(--color-main-dark);box-shadow:var(--shadow-md);transform:translateY(-1px)}.register__submit:disabled{opacity:.7;cursor:not-allowed}.register__spinner{border:2.5px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:22px;height:22px;animation:.7s linear infinite spin}.register__or-divider{align-items:center;gap:var(--space-md);display:flex}.register__or-divider:before,.register__or-divider:after{content:"";background:var(--color-neutral-darker);flex:1;height:1px}.register__or-divider span{letter-spacing:.12em;color:var(--text-muted);white-space:nowrap;font-size:.7rem;font-weight:500}.register__social{gap:var(--space-sm);display:flex}.register__social-btn{justify-content:center;align-items:center;gap:var(--space-sm);border:1px solid var(--color-neutral-darker);border-radius:var(--radius-lg);background:var(--surface-card);font-family:var(--font-body);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast);flex:1;padding:.75rem 1rem;font-size:.9rem;font-weight:500;display:flex}.register__social-btn:hover{background:var(--color-neutral-dark);transform:translateY(-1px)}.register__social-btn--apple{background:var(--surface-card)}.register__social-btn--apple:hover{background:var(--color-neutral-dark)}.register__footer{text-align:center;color:var(--text-secondary);margin-top:var(--space-sm);font-size:.9rem}.register__footer-link{color:var(--color-main);font-weight:600}.register__footer-link:hover{text-decoration:underline}@media (width>=768px){.register__form{padding-top:var(--space-2xl);padding-bottom:var(--space-3xl)}}.register__form{animation:.5s both fadeSlideUp}.welcome{align-items:flex-end;min-height:100vh;display:flex;position:relative;overflow:hidden}.welcome__lang{top:var(--space-md);right:var(--space-lg);z-index:2;position:absolute}.welcome__hero{z-index:0;position:absolute;inset:0}.welcome__hero-img{object-fit:cover;object-position:center;width:100%;height:100%}.welcome__hero-overlay{background:linear-gradient(#1a121026 0%,#1a121040 30%,#fff8f3b3 55%,#fff8f3eb 75%,#fff8f3fa 100%);position:absolute;inset:0}.welcome__content{z-index:1;width:100%;max-width:520px;padding:var(--space-2xl) var(--space-lg) var(--space-xl);align-items:center;gap:var(--space-lg);flex-direction:column;margin:0 auto;display:flex;position:relative}.welcome__brand{text-align:left;width:100%}.welcome__app-name{font-family:var(--font-display);color:var(--color-main);letter-spacing:.01em;font-size:1.15rem;font-style:italic}.welcome__headline{font-family:var(--font-display);color:var(--text-primary);margin-top:var(--space-sm);font-size:clamp(2.2rem,6vw,3.2rem);font-weight:400;line-height:1.15}.welcome__headline-accent{color:var(--color-main);font-style:italic}.welcome__tagline{font-family:var(--font-display);color:var(--text-secondary);margin-top:var(--space-sm);font-size:1.1rem;font-style:italic}.welcome__divider{background:var(--color-main);border-radius:var(--radius-pill);width:56px;height:3px;margin-top:var(--space-lg);opacity:.7}.welcome__actions{gap:var(--space-sm);width:100%;margin-top:var(--space-md);flex-direction:column;display:flex}.welcome__btn{justify-content:center;align-items:center;gap:var(--space-sm);border-radius:var(--radius-lg);width:100%;font-family:var(--font-body);cursor:pointer;transition:all var(--transition-normal);border:none;padding:1rem 1.5rem;font-size:1rem;font-weight:500;text-decoration:none;display:flex;position:relative}.welcome__btn--primary{background:var(--color-main);color:var(--text-on-main);box-shadow:var(--shadow-md);justify-content:space-between}.welcome__btn--primary:hover{background:var(--color-main-dark);color:var(--text-on-main);box-shadow:var(--shadow-lg);transform:translateY(-1px)}.welcome__btn--secondary{color:var(--text-primary);-webkit-backdrop-filter:blur(12px);border:1px solid var(--color-neutral-dark);background:#fff8f3bf}.welcome__btn--secondary:hover{color:var(--text-primary);background:#fff8f3f2;transform:translateY(-1px)}.welcome__or-divider{align-items:center;gap:var(--space-md);width:100%;display:flex}.welcome__or-divider:before,.welcome__or-divider:after{content:"";background:var(--color-neutral-darker);flex:1;height:1px}.welcome__or-divider span{letter-spacing:.12em;color:var(--text-muted);white-space:nowrap;font-size:.7rem;font-weight:500}.welcome__social{gap:var(--space-sm);flex-direction:column;width:100%;display:flex}.welcome__social-btn{justify-content:center;align-items:center;gap:var(--space-sm);border-radius:var(--radius-lg);width:100%;font-family:var(--font-body);cursor:pointer;transition:all var(--transition-normal);border:none;padding:.875rem 1.5rem;font-size:.95rem;font-weight:500;display:flex}.welcome__social-btn--google{background:var(--surface-card);color:var(--text-primary);border:1px solid var(--color-neutral-darker)}.welcome__social-btn--google:hover{background:var(--color-neutral-dark);transform:translateY(-1px)}.welcome__social-btn--apple{color:#fff;background:#111}.welcome__social-btn--apple:hover{background:#000;transform:translateY(-1px)}.welcome__social-btn--apple img{filter:invert()}.welcome__guest-link{letter-spacing:.14em;color:var(--text-muted);padding:var(--space-sm) var(--space-md);transition:color var(--transition-fast);font-size:.75rem;font-weight:500;text-decoration:none}.welcome__guest-link:hover{color:var(--color-main)}@media (width>=768px){.welcome{justify-content:flex-start;align-items:center}.welcome__hero-overlay{background:linear-gradient(90deg,#fff8f3f5 0%,#fff8f3e0 40%,#fff8f366 65%,#1a12101a 100%)}.welcome__content{padding:var(--space-3xl) var(--space-2xl);align-items:flex-start;max-width:480px;margin:0 0 0 6%}.welcome__or-divider,.welcome__social,.welcome__guest-link{max-width:100%}}@media (width>=1200px){.welcome__content{max-width:520px;margin-left:8%}.welcome__headline{font-size:3.4rem}}.welcome__brand{animation:fadeSlideUp .7s var(--transition-slow) both}.welcome__actions{animation:fadeSlideUp .7s .15s var(--transition-slow) both}.welcome__or-divider{animation:fadeSlideUp .7s .25s var(--transition-slow) both}.welcome__social{animation:fadeSlideUp .7s .35s var(--transition-slow) both}.welcome__guest-link{animation:fadeSlideUp .7s .45s var(--transition-slow) both}.library-page{gap:var(--space-md);flex-direction:column;display:flex}.library-page__title{font-family:var(--font-display);color:var(--text-primary);margin:0;font-size:1.75rem;font-style:italic}.library-page__tabs{gap:var(--space-xs);border-bottom:1px solid var(--border-subtle);padding-bottom:0;display:flex}.library-page__tab{padding:var(--space-xs) var(--space-sm);color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;font-size:.875rem;font-weight:500;transition:color .15s,border-color .15s}.library-page__tab:hover{color:var(--text-primary)}.library-page__tab--active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.library-page__toolbar{align-items:center;gap:var(--space-xs);display:flex}.library-page__sort-label{color:var(--text-secondary);white-space:nowrap;font-size:.8125rem}.library-page__sort-select{color:var(--text-primary);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);cursor:pointer;padding:4px 8px;font-size:.8125rem}.library-page__sort-select:focus{outline:2px solid var(--color-accent);outline-offset:1px}.library-page__error{color:var(--color-error,#c0392b);margin:0;font-size:.875rem}.library-page__empty{align-items:center;gap:var(--space-sm);padding:var(--space-xl) 0;color:var(--text-secondary);text-align:center;flex-direction:column;font-size:.9375rem;display:flex}.library-page__empty-action{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-md);color:var(--text-secondary);cursor:pointer;background:0 0;font-size:.875rem}.library-page__empty-action:hover{color:var(--text-primary);border-color:var(--text-secondary)}.library-page__loading{align-items:center;gap:var(--space-sm);padding:var(--space-xl) 0;color:var(--text-secondary);flex-direction:column;font-size:.9375rem;display:flex}.library-page__spinner{border:3px solid var(--color-neutral-darker,#d9cfc7);border-top-color:var(--color-main);border-radius:50%;width:36px;height:36px;animation:.75s linear infinite library-spin;display:block}@keyframes library-spin{to{transform:rotate(360deg)}}.library-page__list{gap:var(--space-sm);flex-direction:column;display:flex}.library-page__card{align-items:stretch;gap:var(--space-sm);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-sm);text-align:left;cursor:pointer;width:100%;transition:box-shadow .15s,border-color .15s;display:flex}.library-page__card:hover{box-shadow:var(--shadow-card);border-color:var(--border-hover,var(--border-subtle))}.library-page__card-thumb{border-radius:var(--radius-sm);background:var(--surface-muted,#f0ede8);flex-shrink:0;width:72px;min-width:72px;height:72px;overflow:hidden}.library-page__card-thumb img{object-fit:cover;width:100%;height:100%}.library-page__card-placeholder{background:var(--surface-muted,#f0ede8);width:100%;height:100%}.library-page__card-body{justify-content:center;gap:var(--space-xs);flex-direction:column;flex:1;min-width:0;display:flex}.library-page__card-header{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.library-page__card-actions{justify-content:flex-end;align-items:center;gap:var(--space-xs);flex-wrap:wrap;flex-shrink:0;display:flex}.library-page__card-title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.9375rem;font-weight:600;overflow:hidden}.library-page__status{text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-radius:999px;flex-shrink:0;padding:2px 7px;font-size:.6875rem;font-weight:600}.library-page__status--published{background:var(--color-success-subtle,#d4edda);color:var(--color-success,#1a7a3c)}.library-page__status--draft{background:var(--surface-muted,#f0ede8);color:var(--text-secondary)}.library-page__edit-btn{background:var(--color-main);border-radius:var(--radius-pill);color:#fff;cursor:pointer;white-space:nowrap;border:none;padding:3px 12px;font-size:.75rem;font-weight:600;transition:opacity .15s}.library-page__edit-btn:hover{opacity:.85}.library-page__publish-btn{background:var(--surface-card);border:1px solid var(--color-main);border-radius:var(--radius-pill);color:var(--color-main);cursor:pointer;white-space:nowrap;padding:3px 12px;font-size:.75rem;font-weight:600;transition:opacity .15s,background .15s}.library-page__publish-btn:hover:not(:disabled){background:var(--color-main);color:#fff}.library-page__publish-btn:disabled{opacity:.6;cursor:not-allowed}.library-page__delete-btn{border:1px solid var(--color-error,#c0392b);border-radius:var(--radius-pill);color:var(--color-error,#c0392b);cursor:pointer;white-space:nowrap;background:0 0;padding:3px 12px;font-size:.75rem;font-weight:600;transition:opacity .15s,background .15s,color .15s}.library-page__delete-btn:hover{background:var(--color-error,#c0392b);color:#fff}.library-page__card-meta{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.library-page__type{border-radius:var(--radius-sm);padding:2px 6px;font-size:.75rem;font-weight:500}.library-page__type--cultural{background:var(--color-accent-subtle,#fdf3e3);color:var(--color-accent)}.library-page__type--community{background:var(--surface-muted,#f0ede8);color:var(--text-secondary)}.library-page__rating{color:var(--color-accent);align-items:center;gap:3px;font-size:.8125rem;display:flex}.library-page__rating-count{color:var(--text-secondary);font-size:.75rem}.library-page__location{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.edit-recipe{gap:var(--space-lg);padding-bottom:var(--space-xl);flex-direction:column;display:flex}.edit-recipe__loading{align-items:center;gap:var(--space-sm);padding:var(--space-xl) 0;color:var(--text-secondary);flex-direction:column;display:flex}.edit-recipe__spinner{border:3px solid var(--color-neutral-darker,#d9cfc7);border-top-color:var(--color-main);border-radius:50%;width:36px;height:36px;animation:.75s linear infinite er-spin;display:block}@keyframes er-spin{to{transform:rotate(360deg)}}.edit-recipe__load-error{color:var(--color-error,#c0392b);padding:var(--space-md) 0}.edit-recipe__header{align-items:center;gap:var(--space-sm);display:flex}.edit-recipe__back{color:var(--text-secondary);cursor:pointer;padding:0 var(--space-xs);background:0 0;border:none;font-size:1.25rem;line-height:1}.edit-recipe__back:hover{color:var(--text-primary)}.edit-recipe__title{font-family:var(--font-display);color:var(--text-primary);margin:0;font-size:1.5rem;font-style:italic}.edit-recipe__section{gap:var(--space-sm);padding:var(--space-md);background:var(--surface-card);border:1px solid var(--color-neutral-darker);border-radius:var(--radius-md);flex-direction:column;display:flex}.edit-recipe__section-title{color:var(--text-primary);margin:0 0 var(--space-xs);font-size:1rem;font-weight:600}.edit-recipe__field{flex-direction:column;gap:4px;display:flex}.edit-recipe__label{color:var(--text-primary);font-size:.875rem;font-weight:500}.edit-recipe__required{color:var(--color-main)}.edit-recipe__input{border:1px solid var(--color-neutral-darker);border-radius:var(--radius-sm);color:var(--text-primary);background:var(--surface-bg);padding:.5rem .75rem;font-size:.9375rem}.edit-recipe__input:focus{border-color:var(--color-main);outline:none;box-shadow:0 0 0 2px #86452a1f}.edit-recipe__input--sm{max-width:8rem}.edit-recipe__input--qty{width:5rem}.edit-recipe__select{border:1px solid var(--color-neutral-darker);border-radius:var(--radius-sm);color:var(--text-primary);background:var(--surface-bg);cursor:pointer;padding:.5rem .75rem;font-size:.9375rem}.edit-recipe__select:focus{border-color:var(--color-main);outline:none;box-shadow:0 0 0 2px #86452a1f}.edit-recipe__textarea{border:1px solid var(--color-neutral-darker);border-radius:var(--radius-sm);color:var(--text-primary);background:var(--surface-bg);resize:vertical;padding:.5rem .75rem;font-family:inherit;font-size:.9375rem;line-height:1.5}.edit-recipe__textarea:focus{border-color:var(--color-main);outline:none;box-shadow:0 0 0 2px #86452a1f}.edit-recipe__row{gap:var(--space-md);flex-wrap:wrap;align-items:flex-start;display:flex}.edit-recipe__location-row{gap:var(--space-xs);grid-template-columns:1fr 1fr 1fr;display:grid}@media (width<=480px){.edit-recipe__location-row{grid-template-columns:1fr}}.edit-recipe__type-row{gap:var(--space-xs);display:flex}.edit-recipe__type-btn{border:1px solid var(--color-neutral-darker);border-radius:var(--radius-pill);background:var(--surface-bg);color:var(--text-secondary);cursor:pointer;padding:.4rem 1rem;font-size:.875rem;transition:border-color .15s,background .15s,color .15s}.edit-recipe__type-btn--active{border-color:var(--color-main);background:var(--color-main);color:#fff}.edit-recipe__type-btn--disabled{opacity:.4;cursor:not-allowed}.edit-recipe__ingredient-list{gap:var(--space-xs);flex-direction:column;display:flex}.edit-recipe__ingredient-row{align-items:flex-start;gap:var(--space-xs);flex-wrap:wrap;display:flex}.edit-recipe__ingredient-picker{flex:2;min-width:160px}.edit-recipe__unit-picker{flex:1;min-width:100px}.edit-recipe__step-list{gap:var(--space-xs);flex-direction:column;display:flex}.edit-recipe__step-row{align-items:flex-start;gap:var(--space-sm);display:flex}.edit-recipe__step-num{background:var(--color-main);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;margin-top:.5rem;font-size:.75rem;font-weight:700;display:flex}.edit-recipe__step-row .edit-recipe__textarea{flex:1}.edit-recipe__tool-list{gap:var(--space-xs);flex-direction:column;display:flex}.edit-recipe__tool-row{align-items:center;gap:var(--space-xs);display:flex}.edit-recipe__tool-row>*{flex:1}.edit-recipe__add-btn{border:1px dashed var(--color-neutral-darker);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;background:0 0;align-self:flex-start;align-items:center;gap:6px;padding:.4rem .9rem;font-size:.875rem;transition:border-color .15s,color .15s;display:inline-flex}.edit-recipe__add-btn:hover{border-color:var(--color-main);color:var(--color-main)}.edit-recipe__remove-btn{color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;padding:4px}.edit-recipe__remove-btn:hover:not(:disabled){color:var(--color-error,#c0392b)}.edit-recipe__remove-btn:disabled{opacity:.3;cursor:not-allowed}.edit-recipe__save-bar{background:var(--surface-card);border-top:1px solid var(--color-neutral-darker);padding:var(--space-sm) var(--space-md);gap:var(--space-xs);z-index:10;flex-direction:column;display:flex;position:sticky;bottom:0}.edit-recipe__save-actions{gap:var(--space-sm);justify-content:flex-end;display:flex}.edit-recipe__save-error{color:var(--color-error,#c0392b);margin:0;font-size:.875rem}.edit-recipe__save-success{color:var(--color-success,#1a7a3c);margin:0;font-size:.875rem}.edit-recipe__cancel-btn{border:1px solid var(--color-neutral-darker);border-radius:var(--radius-pill);color:var(--text-secondary);cursor:pointer;background:0 0;padding:.5rem 1.25rem;font-size:.9375rem}.edit-recipe__cancel-btn:hover{border-color:var(--text-secondary);color:var(--text-primary)}.edit-recipe__save-btn{border-radius:var(--radius-pill);background:var(--color-main);color:#fff;cursor:pointer;border:none;padding:.5rem 1.5rem;font-size:.9375rem;font-weight:600;transition:opacity .15s}.edit-recipe__save-btn:disabled{opacity:.5;cursor:not-allowed}.edit-recipe__save-btn:hover:not(:disabled){opacity:.88}.profile-page{gap:var(--space-lg);flex-direction:column;display:flex}.profile-page__loading{padding:var(--space-xl) 0;justify-content:center;align-items:center;display:flex}.profile-page__spinner{border:3px solid var(--color-neutral-darker,#d9cfc7);border-top-color:var(--color-main);border-radius:50%;width:36px;height:36px;animation:.75s linear infinite profile-spin;display:block}@keyframes profile-spin{to{transform:rotate(360deg)}}.profile-page__card{align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);display:flex}.profile-page__avatar{background:var(--color-main);color:#fff;letter-spacing:.03em;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:3.5rem;height:3.5rem;font-size:1.25rem;font-weight:700;display:flex}.profile-page__info{flex-direction:column;gap:.2rem;min-width:0;display:flex}.profile-page__username{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:1.15rem;font-weight:700;overflow:hidden}.profile-page__email{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.85rem;overflow:hidden}.profile-page__role-badge{text-transform:uppercase;letter-spacing:.05em;border-radius:999px;margin-top:.2rem;padding:2px 10px;font-size:.7rem;font-weight:600;display:inline-block}.profile-page__role-badge--learner{background:var(--surface-muted,#f0ede8);color:var(--text-secondary)}.profile-page__role-badge--cook{background:var(--color-accent-subtle,#fdf3e3);color:var(--color-accent)}.profile-page__role-badge--expert{background:var(--color-main);color:#fff}.profile-page__stats{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);align-items:stretch;gap:0;display:flex;overflow:hidden}.profile-page__stat{padding:var(--space-md) var(--space-sm);flex-direction:column;flex:1;align-items:center;gap:.15rem;display:flex}.profile-page__stat-val{color:var(--color-main-dark);font-size:1.5rem;font-weight:700;line-height:1}.profile-page__stat-label{color:var(--text-secondary);text-align:center;font-size:.75rem}.profile-page__stat-divider{background:var(--border-subtle);align-self:stretch;width:1px}.profile-page__section{gap:var(--space-sm);flex-direction:column;display:flex}.profile-page__section-title{font-family:var(--font-display);color:var(--text-primary);margin:0;font-size:1.2rem;font-style:italic}.profile-page__recipe-list{gap:var(--space-sm);flex-direction:column;display:flex}.profile-page__recipe-card{align-items:center;gap:var(--space-sm);padding:var(--space-sm);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);text-align:left;cursor:pointer;width:100%;transition:box-shadow .15s,border-color .15s;display:flex}.profile-page__recipe-card:hover{box-shadow:var(--shadow-card);border-color:var(--color-main-light,#b5816a)}.profile-page__recipe-thumb{border-radius:var(--radius-sm);background:var(--surface-muted,#f0ede8);flex-shrink:0;width:60px;height:60px;overflow:hidden}.profile-page__recipe-thumb img{object-fit:cover;width:100%;height:100%}.profile-page__recipe-placeholder{background:var(--surface-muted,#f0ede8);width:100%;height:100%}.profile-page__recipe-body{flex-direction:column;flex:1;gap:.25rem;min-width:0;display:flex}.profile-page__recipe-title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.9375rem;font-weight:600;overflow:hidden}.profile-page__recipe-meta{align-items:center;gap:var(--space-sm);display:flex}.profile-page__type{border-radius:var(--radius-sm);padding:2px 6px;font-size:.75rem;font-weight:500}.profile-page__type--cultural{background:var(--color-accent-subtle,#fdf3e3);color:var(--color-accent)}.profile-page__type--community{background:var(--surface-muted,#f0ede8);color:var(--text-secondary)}.profile-page__rating{color:var(--color-accent);align-items:center;gap:3px;font-size:.8125rem;display:flex}.profile-page__see-all{border-radius:var(--radius-pill);border:1px solid var(--border-subtle);color:var(--text-secondary);font:inherit;cursor:pointer;background:0 0;align-self:flex-start;padding:.35rem 1rem;font-size:.875rem;transition:color .15s,border-color .15s}.profile-page__see-all:hover{color:var(--color-main);border-color:var(--color-main)}.profile-page__empty{padding:var(--space-lg);text-align:center;color:var(--text-secondary);background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);margin:0}
