2026-08-21 17:52:45 +03:00
<!DOCTYPE html>
< html lang = "ru" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > Автокорзина</ title >
2026-08-21 18:17:08 +03:00
< style nonce = "**MY_PRETTY_CSP_NONCE**" >
2026-08-21 17:52:45 +03:00
/* Базовые сбросы */
* { margin : 0 ; padding : 0 ; box-sizing : border-box ; font-family : - apple-system , BlinkMacSystemFont , "Segoe UI" , Roboto , Helvetica , Arial , sans-serif ; }
body { background-color : #f5f7f8 ; display : flex ; justify-content : center ; align-items : flex-start ; padding : 40 px 20 px ; min-height : 100 vh ; }
. container { display : flex ; width : 100 % ; max-width : 1200 px ; background : #ffffff ; border-radius : 24 px ; box-shadow : 0 4 px 20 px rgba ( 0 , 0 , 0 , 0.04 ); overflow : hidden ; max-height : 90 vh ; }
/* --- Колонки --- */
. column { padding : 30 px ; flex : 1 ; width : 50 % ; overflow-y : auto ;}
. column + . column { border-left : 1 px solid #f0f0f0 ; }
/* --- Левая колонка (Фиксированная высота) --- */
. col-left { display : flex ; flex-direction : column ; height : auto ; min-height : 550 px ; }
h1 { font-size : 24 px ; font-weight : 700 ; color : #1c1c1c ; margin-bottom : 6 px ; }
. subtitle { font-size : 14 px ; color : #8b8b8b ; margin-bottom : 28 px ; flex-shrink : 0 ; }
. cart-summary { display : flex ; justify-content : space-between ; align-items : center ; margin-bottom : 24 px ; flex-shrink : 0 ; }
. summary-title { font-size : 18 px ; font-weight : 600 ; color : #1c1c1c ; }
. summary-days { color : #6ba531 ; }
. summary-details { font-size : 14 px ; color : #8b8b8b ; margin-top : 4 px ; }
. reorder-btn { padding : 8 px 16 px ; background : transparent ; border : 1 px solid #6ba531 ; color : #6ba531 ; border-radius : 8 px ; cursor : pointer ; font-size : 14 px ; transition : 0.2 s ; flex-shrink : 0 ; }
. reorder-btn : hover { background : #6ba531 ; color : #fff ; }
/* Список и скролл */
. cart-scroll-wrapper { flex : 1 ; overflow-y : auto ; overflow-x : hidden ; padding-right : 4 px ; margin-bottom : 10 px ; position : relative ; transition : max-height 0.3 s ease ; }
. cart-scroll-wrapper :: -webkit-scrollbar { width : 6 px ; }
. cart-scroll-wrapper :: -webkit-scrollbar-track { background : #f1f1f1 ; border-radius : 4 px ; }
. cart-scroll-wrapper :: -webkit-scrollbar-thumb { background : #d1d5db ; border-radius : 4 px ; }
. cart-items { list-style : none ; }
. cart-item { display : flex ; align-items : center ; padding : 16 px 0 ; border-bottom : 1 px solid #f0f0f0 ; position : relative ; transition : opacity 0.4 s , transform 0.4 s ; }
. cart-item . replacing { opacity : 0.5 ; pointer-events : none ; }
. item-image { width : 72 px ; height : 65 px ; border-radius : 8 px ; background-color : #f8f9fa ; display : flex ; align-items : center ; justify-content : center ; font-size : 28 px ; margin-right : 16 px ; flex-shrink : 0 ; position : relative ; overflow : hidden ; }
/* Лоадер при замене */
. cart-item . replacing . item-image :: after {
content : '' ;
position : absolute ;
width : 30 px ; height : 30 px ;
border : 3 px solid #e1e1e1 ;
border-top : 3 px solid #6ba531 ;
border-radius : 50 % ;
animation : spin 0.8 s linear infinite ;
}
@ keyframes spin { 0 % { transform : rotate ( 0 deg ); } 100 % { transform : rotate ( 360 deg ); } }
. item-details { flex : 1 ; }
. item-name { font-size : 15 px ; color : #1c1c1c ; margin-bottom : 4 px ; }
. item-price { font-size : 14 px ; color : #8b8b8b ; }
/* Меню (Три точки) */
. menu-btn-wrapper { position : relative ; }
. menu-btn { background : none ; border : none ; color : #b0b0b0 ; cursor : pointer ; padding : 4 px 8 px ; font-size : 20 px ; letter-spacing : 2 px ; border-radius : 4 px ; transition : 0.2 s ; }
. menu-btn : hover { background : #f3f4f6 ; color : #1c1c1c ; }
. menu-dropdown { position : absolute ; right : 0 ; top : 100 % ; background : #ffffff ; border : 1 px solid #eee ; border-radius : 8 px ; box-shadow : 0 4 px 12 px rgba ( 0 , 0 , 0 , 0.08 ); min-width : 150 px ; padding : 6 px 0 ; display : none ; z-index : 10 ; margin-top : 4 px ; }
. menu-dropdown . active { display : block ; }
. menu-dropdown ul { list-style : none ; }
. menu-dropdown li { padding : 10 px 16 px ; font-size : 14 px ; color : #1c1c1c ; cursor : pointer ; transition : 0.2 s ; }
. menu-dropdown li : hover { background : #f3f4f6 ; }
. show-more { display : flex ; align-items : center ; justify-content : center ; padding : 20 px 0 10 px ; color : #6ba531 ; font-size : 14 px ; cursor : pointer ; font-weight : 500 ; transition : 0.2 s ; flex-shrink : 0 ; gap : 4 px ;}
. show-more : hover { opacity : 0.8 ; }
. show-more svg { margin-left : 6 px ; width : 14 px ; height : 14 px ; stroke : #6ba531 ; }
. show-more . hidden { display : none ; }
. cart-footer { display : flex ; justify-content : space-between ; align-items : center ; padding-top : 20 px ; border-top : 1 px solid #f0f0f0 ; flex-shrink : 0 ; }
. total-wrap { display : flex ; flex-direction : column ; align-items : flex-start ; }
. total-label { font-size : 14 px ; color : #8b8b8b ; }
# total-price { font-size : 22 px ; font-weight : 700 ; color : #1c1c1c ; }
. checkout-btn { background-color : #6ba531 ; color : #ffffff ; border : none ; padding : 14 px 32 px ; border-radius : 12 px ; font-size : 16 px ; font-weight : 600 ; cursor : pointer ; transition : background 0.2 s ; }
. checkout-btn : hover { background-color : #5b8f29 ; }
/* --- Правая колонка (Аккордеон) --- */
. settings-panel { border : 1 px solid #ebebeb ; border-radius : 16 px ;}
. accordion-item { border-bottom : 1 px solid #ebebeb ; }
. accordion-item : last-child { border-bottom : none ; }
. accordion-header { display : flex ; align-items : center ; justify-content : space-between ; padding : 20 px 24 px ; cursor : pointer ; user-select : none ; }
. header-left { display : flex ; align-items : center ; }
. icon-circle { width : 32 px ; height : 32 px ; border-radius : 50 % ; display : flex ; align-items : center ; justify-content : center ; font-size : 16 px ; margin-right : 12 px ; flex-shrink : 0 ; }
. bg-green-light { background-color : #e9f6d9 ; color : #6ba531 ; }
. bg-gray-light { background-color : #f3f4f6 ; color : #8b8b8b ; }
. header-title { font-size : 15 px ; font-weight : 500 ; color : #1c1c1c ; }
. setting-desc { font-size : 14 px ; color : #8b8b8b ; margin-top : 2 px ; }
. arrow-icon { color : #8b8b8b ; transition : transform 0.3 s ease ; }
. arrow-icon svg { width : 16 px ; height : 16 px ; stroke : #8b8b8b ; stroke-width : 2 ; }
. accordion-content { max-height : 0 ; overflow : hidden ; transition : max-height 0.4 s ease , padding 0.3 s ease ; padding : 0 24 px ; }
. accordion-item . open . accordion-content { max-height : 500 px ; padding : 0 24 px 20 px ; }
. accordion-item . open . arrow-icon { transform : rotate ( 180 deg ); }
/* Дни */
. days-options { display : flex ; gap : 12 px ; }
. day-btn { flex : 1 ; padding : 10 px 0 ; border : 1 px solid #e1e1e1 ; border-radius : 8 px ; background : #ffffff ; font-size : 14 px ; color : #1c1c1c ; cursor : pointer ; transition : 0.2 s ; }
. day-btn : hover { border-color : #6ba531 ; }
. day-btn . active { background : #e9f6d9 ; border-color : #e9f6d9 ; font-weight : 500 ; }
/* Семья (Кто будет есть?) */
. family-list { display : flex ; flex-direction : column ; gap : 12 px ; }
. family-member { display : flex ; align-items : center ; padding : 12 px 16 px ; border : 1 px solid #ebebeb ; border-radius : 12 px ; background : #fff ; transition : 0.2 s ; cursor : pointer ; }
. family-member : hover { border-color : #c0c0c0 ; box-shadow : 0 2 px 8 px rgba ( 0 , 0 , 0 , 0.02 ); }
. family-member . avatar { width : 44 px ; height : 44 px ; border-radius : 50 % ; background : #f8f9fa ; display : flex ; align-items : center ; justify-content : center ; font-size : 24 px ; margin-right : 14 px ; }
. family-member . info { flex : 1 ; display : flex ; flex-direction : column ; pointer-events : none ; }
. family-member . info . name { font-size : 16 px ; font-weight : 600 ; color : #1c1c1c ; }
. family-member . info . age { font-size : 14 px ; color : #8b8b8b ; }
. family-member . delete-member { color : #d1d5db ; cursor : pointer ; font-size : 18 px ; padding : 0 8 px ; transition : 0.2 s ; }
. family-member . delete-member : hover { color : #e53935 ; }
. add-member-btn { display : flex ; align-items : center ; justify-content : center ; margin-top : 16 px ; color : #6ba531 ; font-size : 15 px ; font-weight : 500 ; cursor : pointer ; transition : 0.2 s ; }
. add-member-btn : hover { opacity : 0.8 ; }
. add-member-btn span { font-size : 20 px ; margin-left : 8 px ; font-weight : 300 ; }
/* ----- БЛОК: Категории в предпочтениях ----- */
. category-selector-block . category-header h3 { font-size : 16 px ; color : #1c1c1c ; margin-bottom : 4 px ; }
. category-selector-block . category-header p { font-size : 14 px ; color : #8b8b8b ; margin-bottom : 16 px ; }
. categories-wrapper { display : flex ; flex-wrap : wrap ; gap : 8 px ; }
. category-btn {
padding : 8 px 16 px ;
border : none ;
border-radius : 8 px ;
font-size : 14 px ;
cursor : pointer ;
transition : 0.2 s ;
}
. category-btn . active {
background-color : #134233 ; /* Темно-зеленый как на скриншоте */
color : #ffffff ;
}
. category-btn . inactive {
background-color : #f2f9ef ; /* Светло-зеленый */
color : #1c1c1c ;
}
. category-btn . inactive : hover {
background-color : #e4f0de ;
}
. toggle-categories-btn {
width : 38 px ;
height : 38 px ;
display : flex ;
align-items : center ;
justify-content : center ;
background-color : #f2f9ef ;
border : none ;
border-radius : 8 px ;
cursor : pointer ;
transition : 0.2 s ;
}
. toggle-categories-btn : hover { background-color : #e4f0de ; }
. toggle-categories-btn svg { width : 18 px ; height : 18 px ; stroke : #1c1c1c ; transition : transform 0.3 s ease ; }
. toggle-categories-btn . collapsed svg { transform : rotate ( 180 deg ); }
/* Адрес */
. address-input-wrap { position : relative ; }
. address-input-wrap input { width : 100 % ; padding : 12 px 36 px 12 px 16 px ; border : 1 px solid #e1e1e1 ; border-radius : 8 px ; font-size : 14 px ; color : #1c1c1c ; background : #fafafa ; outline : none ; }
. address-input-wrap . clear-input { position : absolute ; right : 12 px ; top : 50 % ; transform : translateY ( -50 % ); color : #b0b0b0 ; cursor : pointer ; font-size : 18 px ; }
/* --- Модальное окно (Добавить/Редактировать человека) --- */
. modal-overlay { position : fixed ; inset : 0 ; background : rgba ( 0 , 0 , 0 , 0.4 ); backdrop-filter : blur ( 2 px ); display : none ; align-items : center ; justify-content : center ; z-index : 1000 ; padding : 20 px ; }
. modal-content { background : #ffffff ; border-radius : 24 px ; width : 100 % ; max-width : 440 px ; padding : 24 px ; box-shadow : 0 8 px 30 px rgba ( 0 , 0 , 0 , 0.2 ); max-height : 95 vh ; overflow-y : auto ;}
. modal-header { display : flex ; justify-content : space-between ; align-items : center ; margin-bottom : 20 px ; }
. modal-header h2 { font-size : 20 px ; font-weight : 600 ; color : #1c1c1c ; }
. modal-header . close-modal { font-size : 24 px ; color : #b0b0b0 ; cursor : pointer ; line-height : 1 ; }
. modal-header . close-modal : hover { color : #1c1c1c ; }
. categories-grid { gap : 4 px ; display : flex ; flex-wrap : wrap ;}
. form-group { margin-bottom : 16 px ; }
. form-group label { display : block ; font-size : 14 px ; color : #1c1c1c ; margin-bottom : 6 px ; }
. form-group input { width : 100 % ; padding : 10 px 12 px ; border : 1 px solid #e1e1e1 ; border-radius : 8 px ; font-size : 14 px ; outline : none ; transition : 0.2 s ; }
. form-group input : focus { border-color : #6ba531 ; }
. form-row { display : flex ; gap : 16 px ; margin-bottom : 16 px ; }
. form-row . form-group { flex : 1 ; margin-bottom : 0 ; }
. hint { display : block ; font-size : 12 px ; color : #8b8b8b ; margin-top : 4 px ; }
. gender-toggles { display : flex ; gap : 8 px ; margin-bottom : 16 px ; }
. gender-btn { flex : 1 ; padding : 10 px ; border : 1 px solid #e1e1e1 ; border-radius : 8 px ; background : #ffffff ; font-size : 14 px ; cursor : pointer ; transition : 0.2 s ; }
. gender-btn . active { background : #e9f6d9 ; border-color : #e9f6d9 ; font-weight : 500 ; }
/* Внутренние стили для модального окна (Запрещенные / Любимые) */
. modal-prefs-grid { display : flex ; gap : 16 px ; margin-bottom : 20 px ; border-top : 1 px solid #f0f0f0 ; padding-top : 16 px ; }
. modal-prefs-grid . pref-col { flex : 1 ; position : relative ; }
. modal-prefs-grid . pref-col-title { display : block ; font-size : 14 px ; font-weight : 600 ; color : #1c1c1c ; margin-bottom : 6 px ; }
. modal-prefs-grid . pref-input { width : 100 % ; padding : 8 px 10 px ; border : 1 px solid #e1e1e1 ; border-radius : 8 px ; font-size : 14 px ; outline : none ; margin-bottom : 6 px ; }
. modal-prefs-grid . pref-input : focus { border-color : #6ba531 ; }
. modal-prefs-grid . autocomplete-list { position : absolute ; top : 65 px ; left : 0 ; width : 100 % ; background : #fff ; border : 1 px solid #e1e1e1 ; border-radius : 8 px ; box-shadow : 0 4 px 12 px rgba ( 0 , 0 , 0 , 0.06 ); max-height : 120 px ; overflow-y : auto ; display : none ; z-index : 20 ; }
. modal-prefs-grid . autocomplete-list . active { display : block ; }
. modal-prefs-grid . autocomplete-list div { padding : 8 px 12 px ; cursor : pointer ; font-size : 14 px ; transition : 0.2 s ; }
. modal-prefs-grid . autocomplete-list div : hover { background : #f3f4f6 ; }
. modal-prefs-grid . tags-wrap { display : flex ; flex-wrap : wrap ; gap : 6 px ; }
. modal-prefs-grid . tag { display : inline-flex ; align-items : center ; padding : 4 px 10 px ; border-radius : 6 px ; font-size : 13 px ; }
. modal-prefs-grid . tag-red { background-color : #fce4ec ; color : #c62828 ; }
. modal-prefs-grid . tag-green { background-color : #f0f4c3 ; color : #33691e ; }
. modal-prefs-grid . tag-close { margin-left : 6 px ; cursor : pointer ; font-size : 15 px ; opacity : 0.6 ; }
. modal-prefs-grid . tag-close : hover { opacity : 1 ; }
. save-btn { width : 100 % ; padding : 12 px ; background : #6ba531 ; color : #fff ; border : none ; border-radius : 12 px ; font-size : 16 px ; font-weight : 600 ; cursor : pointer ; transition : 0.2 s ; }
. save-btn : hover { background : #5b8f29 ; }
@ media ( max-width : 900px ) {
. container { flex-direction : column ; }
. column { width : 100 % ; padding : 20 px ;}
. column + . column { border-left : none ; border-top : 1 px solid #f0f0f0 ; }
. form-row , . modal-prefs-grid { flex-direction : column ; gap : 16 px ; }
. col-left { min-height : 400 px ; }
}
/* --- Стили для попапа --- */
# cookie-popup {
position : fixed ;
bottom : 25 px ;
left : 50 % ;
transform : translateX ( -50 % ) translateY ( 20 px );
background : #ffffff ;
border-radius : 20 px ;
border : 1 px solid #e9edf0 ;
box-shadow : 0 px 8 px 30 px rgba ( 0 , 0 , 0 , 0.05 ), 0 px 4 px 10 px rgba ( 0 , 0 , 0 , 0.02 );
padding : 15 px 24 px ;
display : flex ;
align-items : center ;
gap : 20 px ;
width : 95 % ;
max-width : 780 px ;
z-index : 9999 ;
/* Начальное состояние (скрыто) */
opacity : 0 ;
visibility : hidden ;
transition : all 0.4 s cubic-bezier ( 0.25 , 0.46 , 0.45 , 0.94 );
}
/* Класс для показа попапа */
# cookie-popup . show {
opacity : 1 ;
visibility : visible ;
transform : translateX ( -50 % ) translateY ( 0 );
}
/* Класс для скрытия (при нажатии) */
# cookie-popup . hide {
opacity : 0 ;
visibility : hidden ;
transform : translateX ( -50 % ) translateY ( 30 px );
}
/* Иконка печенья */
. cookie-icon-wrapper {
flex-shrink : 0 ;
width : 64 px ;
height : 64 px ;
border-radius : 50 % ;
background : #fff ;
display : flex ;
align-items : center ;
justify-content : center ;
border : 1 px solid #edf2f7 ;
box-shadow : inset 0 0 0 1 px #ffffff , 0 2 px 4 px rgba ( 0 , 0 , 0 , 0.03 );
overflow : hidden ;
}
. cookie-icon-wrapper img {
width : 85 % ;
height : 85 % ;
object-fit : contain ;
}
/* Текст */
. cookie-text {
margin : 0 ;
flex-grow : 1 ;
color : #1c3a2e ; /* Темный зелено-серый цвет текста */
font-size : 15 px ;
line-height : 1.5 ;
letter-spacing : 0.01 em ;
}
. cookie-text . highlight {
color : #69a342 ; /* Зеленый цвет для слова "куки" */
font-weight : 600 ;
}
/* Кнопка */
# cookie-accept {
flex-shrink : 0 ;
background-color : #d6e6d4 ; /* Светло-оливковый фон */
color : #1c3a2e ;
border : none ;
padding : 10 px 24 px ;
border-radius : 10 px ;
font-size : 15 px ;
font-weight : 600 ;
cursor : pointer ;
transition : background-color 0.2 s ease , transform 0.1 s ease ;
white-space : nowrap ;
}
# cookie-accept : hover {
background-color : #c2d6c0 ;
}
# cookie-accept : active {
transform : scale ( 0.96 );
}
/* Адаптивность для мобильных устройств */
@ media ( max-width : 600px ) {
# cookie-popup {
flex-wrap : wrap ;
justify-content : center ;
padding : 20 px ;
bottom : 15 px ;
text-align : center ;
border-radius : 16 px ;
gap : 12 px ;
}
. cookie-icon-wrapper {
width : 50 px ;
height : 50 px ;
}
. cookie-text {
font-size : 14 px ;
width : 100 % ;
order : 2 ;
}
# cookie-accept {
width : 100 % ;
justify-content : center ;
padding : 12 px ;
order : 3 ;
}
}
</ style >
</ head >
< body >
< div class = "container" >
<!-- Левая колонка -->
< div class = "column col-left" id = "app" >
< h1 > Автокорзина</ h1 >
< p class = "subtitle" > Собираем продукты под ваши настройки</ p >
< div class = "cart-summary" >
< div >
< div class = "summary-title" > Ваша корзина на < span class = "summary-days" > - </ span ></ div >
< div class = "summary-details" id = "summary-details" > 84 товара • 12 020 ₽</ div >
</ div >
< button class = "reorder-btn" > Начать заново</ button >
</ div >
< div class = "cart-scroll-wrapper" id = "scroll-wrapper" >
< ul class = "cart-items" id = "cart-list" ></ ul >
</ div >
< div class = "show-more" id = "show-more-btn" >
Показать ещё < span id = "remaining-count" > -</ span > товаров
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >< polyline points = "6 9 12 15 18 9" ></ polyline ></ svg >
</ div >
< div class = "cart-footer" >
< div class = "total-wrap" >
< div style = "display: flex; align-items: center;" >
< div class = "icon-circle bg-green-light" style = "margin-right: 12px; width: 40px; height: 40px; font-size: 18px;" > 🛍️</ div >
< div >
< span class = "total-label" > Итого</ span >
< div id = "total-price" > - </ div >
</ div >
</ div >
</ div >
< button class = "checkout-btn" > Оформить заказ</ button >
</ div >
</ div >
<!-- Правая колонка -->
< div class = "column" >
< h1 > Настройте корзину под себя</ h1 >
< p class = "subtitle" > Чем больше вы расскажете, тем точнее будет подбор</ p >
< div class = "settings-panel" id = "settings-panel" >
< div class = "accordion-item open" >
< div class = "accordion-header" >
< div class = "header-left" >
< div class = "icon-circle bg-green-light" > 📅</ div >
< span class = "header-title" > На сколько дней собираем корзину?</ span >
</ div >
< div class = "arrow-icon" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >< polyline points = "6 9 12 15 18 9" ></ polyline ></ svg >
</ div >
</ div >
< div class = "accordion-content" >
< div class = "days-options" >
< button class = "day-btn" data-days = "1" > 1</ button >
< button class = "day-btn" data-days = "3" > 3</ button >
< button class = "day-btn" data-days = "7" > 7</ button >
</ div >
</ div >
</ div >
< div class = "accordion-item" >
< div class = "accordion-header" >
< div class = "header-left" >
< div class = "icon-circle bg-green-light" > 👤</ div >
< div >
< div class = "header-title" > Кто будет есть?</ div >
< div class = "setting-desc" id = "family-desc" > 2 человека</ div >
</ div >
</ div >
< div class = "arrow-icon" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >< polyline points = "6 9 12 15 18 9" ></ polyline ></ svg >
</ div >
</ div >
< div class = "accordion-content" >
< div class = "family-list" id = "family-list" >
<!-- Семья рендерится через JS -->
</ div >
< div class = "add-member-btn" id = "addMemberBtn" >
Добавить человека < span > +</ span >
</ div >
</ div >
</ div >
<!-- Вкладка Предпочтения (Категории) -->
< div class = "accordion-item" id = "prefs-accordion" >
< div class = "accordion-header" >
< div class = "header-left" >
< div class = "icon-circle bg-gray-light" > ❤️</ div >
< div >
< div class = "header-title" > Предпочтения</ div >
< div class = "setting-desc" id = "prefs-desc" > Категории продуктов</ div >
</ div >
</ div >
< div class = "arrow-icon" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >< polyline points = "6 9 12 15 18 9" ></ polyline ></ svg >
</ div >
</ div >
< div class = "accordion-content" >
< div class = "category-selector-block" >
< div class = "category-header" >
< p > Выберите группы продуктов, которые хотите видеть в корзине</ p >
</ div >
< div class = "categories-wrapper" >
< div class = "categories-grid" id = "categories-grid" ></ div >
< button class = "toggle-categories-btn" id = "expand-categories" >
< svg viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" >< polyline points = "18 15 12 9 6 15" ></ polyline ></ svg >
</ button >
</ div >
</ div >
</ div >
</ div >
</ div >
</ div >
</ div >
<!-- Модальное окно добавления/редактирования человека с НОВЫМИ ПОЛЯМИ -->
< div class = "modal-overlay" id = "personModal" >
< div class = "modal-content" >
< div class = "modal-header" >
< h2 id = "modalTitle" > Добавить человека</ h2 >
< span class = "close-modal" id = "closeModalBtn" > × </ span >
</ div >
< div class = "modal-body" >
< div class = "form-group" >
< label > Имя</ label >
< input type = "text" id = "inputName" placeholder = "Имя" >
</ div >
< div class = "form-group" >
< label > Пол</ label >
< div class = "gender-toggles" id = "genderToggles" >
< button class = "gender-btn" data-gender = "f" > Женский</ button >
< button class = "gender-btn active" data-gender = "m" > Мужской</ button >
</ div >
</ div >
< div class = "form-row" >
< div class = "form-group" >
< label > Возраст</ label >
< input type = "number" id = "inputAge" value = "30" >
< span class = "hint" > от 7 лет</ span >
</ div >
< div class = "form-group" >
< label > Вес</ label >
< input type = "number" id = "inputWeight" value = "87" >
</ div >
< div class = "form-group" >
< label > Рост</ label >
< input type = "number" id = "inputHeight" value = "177" >
</ div >
</ div >
<!-- ВОЗВРАЩЁННЫЕ ПОЛЯ: Запрещённые и Любимые -->
< div class = "modal-prefs-grid" >
< div class = "pref-col" >
< span class = "pref-col-title" > Запрещённые</ span >
< input class = "pref-input" type = "text" placeholder = "Например: лук" data-type = "avoid" >
< div class = "autocomplete-list" data-type = "avoid" ></ div >
< div class = "tags-wrap" data-target = "avoid" ></ div >
</ div >
< div class = "pref-col" >
< span class = "pref-col-title" > Любимые</ span >
< input class = "pref-input" type = "text" data-type = "favorite" >
< div class = "autocomplete-list" data-type = "favorite" ></ div >
< div class = "tags-wrap" data-target = "favorite" ></ div >
</ div >
</ div >
< button class = "save-btn" id = "savePersonBtn" > Сохранить</ button >
</ div >
</ div >
</ div >
< div id = "cookie-popup" >
< div class = "cookie-icon-wrapper" >
<!-- Замените src на свою картинку печенья -->
< img src = "https://cdn-icons-png.flaticon.com/512/642/642573.png" alt = "Cookie icon" >
</ div >
< p class = "cookie-text" >
Мы используем < a class = "highlight" href = "/cookies_and_recommendations.html#c" target = "_blank" > куки</ a > и < a class = "highlight" href = "/cookies_and_recommendations.html#r" target = "_blank" > рекомендательные технологии</ a > , это помогает
улучшать сервис и запоминать ваши настройки
</ p >
< button id = "cookie-accept" > Хорошо</ button >
</ div >
2026-08-21 18:17:08 +03:00
< script nonce = "**MY_PRETTY_CSP_NONCE**" src = "autocart.js" ></ script >
2026-08-21 17:52:45 +03:00
</ body >
</ html >