:root{color-scheme:light dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";background:var(--tg-theme-bg-color, #ffffff);color:var(--tg-theme-text-color, #1c1c1e)}@media(prefers-color-scheme:dark){body{background:var(--tg-theme-bg-color, #17181a);color:var(--tg-theme-text-color, #f2f2f2)}}a{color:var(--tg-theme-link-color, #2481cc)}button{font-family:inherit}.app-shell{display:flex;flex-direction:column;min-height:100vh;max-width:480px;margin:0 auto}.app-shell--centered{justify-content:center;align-items:center;padding:24px;text-align:center}.app-header{position:sticky;top:0;z-index:10;background:var(--tg-theme-bg-color, #ffffff);padding:12px 16px 8px;border-bottom:1px solid rgba(127,127,127,.15)}.app-header__title{font-size:20px;font-weight:700;margin-bottom:8px}.circle-switcher{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}.app-main{flex:1;padding:12px 16px 88px;overflow-y:auto}.tab-bar{position:fixed;bottom:0;left:0;right:0;max-width:480px;margin:0 auto;display:flex;background:var(--tg-theme-secondary-bg-color, #f2f2f7);border-top:1px solid rgba(127,127,127,.15);padding-bottom:env(safe-area-inset-bottom,0)}.tab-bar__item{flex:1;border:none;background:none;padding:12px 8px;min-height:44px;font-size:14px;color:var(--tg-theme-hint-color, #8e8e93);cursor:pointer}.tab-bar__item--active{color:var(--tg-theme-button-color, #2481cc);font-weight:600}.chip{border:1px solid rgba(127,127,127,.3);background:transparent;color:var(--tg-theme-text-color, #1c1c1e);border-radius:999px;padding:6px 14px;font-size:14px;min-height:32px;white-space:nowrap;cursor:pointer;flex-shrink:0}.chip--active{background:var(--tg-theme-button-color, #2481cc);color:var(--tg-theme-button-text-color, #ffffff);border-color:transparent}.card{background:var(--tg-theme-secondary-bg-color, #f2f2f7);border-radius:12px;box-shadow:0 1px 3px #00000014;padding:12px 14px;cursor:pointer}.btn{min-height:44px;border-radius:10px;border:none;padding:10px 18px;font-size:15px;cursor:pointer}.btn--primary{background:var(--tg-theme-button-color, #2481cc);color:var(--tg-theme-button-text-color, #ffffff)}.hint{color:var(--tg-theme-hint-color, #8e8e93);font-size:13px}.stat{font-size:13px;color:var(--tg-theme-hint-color, #8e8e93);margin-right:10px}.badge{display:inline-block;border-radius:8px;padding:3px 8px;font-size:12px;font-weight:600;white-space:nowrap;flex-shrink:0}.badge--my-rating{background:var(--tg-theme-button-color, #2481cc);color:var(--tg-theme-button-text-color, #ffffff)}.note{background:#ffcc0026;border-left:3px solid #ffcc00;border-radius:8px;padding:8px 12px;font-size:14px;margin:12px 0}.section{margin:20px 0}.section__title{font-size:15px;font-weight:700;margin-bottom:8px}.page-title{font-size:22px;font-weight:700;margin:4px 0 16px}.link-button{background:none;border:none;color:var(--tg-theme-link-color, #2481cc);font-size:15px;padding:0;cursor:pointer;text-align:left}.back-button{background:none;border:none;color:var(--tg-theme-link-color, #2481cc);font-size:16px;padding:8px 0;margin-bottom:8px;cursor:pointer;min-height:44px}.star-rating{display:flex;gap:2px;flex-wrap:wrap}.star{background:none;border:none;padding:2px;font-size:22px;line-height:1;color:var(--tg-theme-hint-color, #c7c7cc);cursor:default;min-width:24px;min-height:24px}.star-rating--interactive .star{cursor:pointer;min-width:32px;min-height:32px;font-size:26px}.star--filled{color:var(--tg-theme-button-color, #ffb300)}.star-rating--small .star{font-size:16px;min-width:16px;min-height:16px}.spinner-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;padding:40px 0}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid rgba(127,127,127,.25);border-top-color:var(--tg-theme-button-color, #2481cc);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.spinner-label{color:var(--tg-theme-hint-color, #8e8e93);font-size:14px}.empty-state,.error-state{display:flex;flex-direction:column;align-items:center;gap:10px;padding:48px 16px;text-align:center}.empty-state__emoji,.error-state__emoji{font-size:40px}.empty-state__message,.error-state__message{color:var(--tg-theme-hint-color, #8e8e93);font-size:15px;max-width:320px}.search-row{margin-bottom:10px}.search-input{width:100%;min-height:44px;border-radius:10px;border:1px solid rgba(127,127,127,.3);background:var(--tg-theme-secondary-bg-color, #f2f2f7);color:var(--tg-theme-text-color, #1c1c1e);padding:0 14px;font-size:15px}.sort-toggle{display:flex;gap:8px;margin-bottom:14px}.sort-toggle__item{flex:1;min-height:40px;border-radius:10px;border:1px solid rgba(127,127,127,.3);background:transparent;color:var(--tg-theme-text-color, #1c1c1e);font-size:14px;cursor:pointer}.sort-toggle__item--active{background:var(--tg-theme-button-color, #2481cc);color:var(--tg-theme-button-text-color, #ffffff);border-color:transparent}.restaurant-list{display:flex;flex-direction:column;gap:10px}.restaurant-card{display:flex;gap:8px}.restaurant-card__main{flex:1 1 auto;min-width:0}.restaurant-card__title-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:2px}.restaurant-card__name{font-size:16px;font-weight:600;min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.restaurant-card__meta{font-size:13px;color:var(--tg-theme-hint-color, #8e8e93);margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.restaurant-card__stats{display:flex;min-width:0;overflow:hidden}.restaurant-card__stats .stat{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dish-search-list{display:flex;flex-direction:column;gap:10px}.dish-search-row{display:flex;align-items:center;gap:10px}.dish-search-row__photo{flex:0 0 auto;width:48px;height:48px;border-radius:8px;overflow:hidden;background:#7f7f7f1f;display:flex;align-items:center;justify-content:center}.dish-search-row__photo img{width:100%;height:100%;object-fit:cover}.dish-search-row__placeholder{font-size:20px}.dish-search-row__main{min-width:0;flex:1 1 auto}.dish-search-row__name{font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dish-search-row__meta{font-size:13px;color:var(--tg-theme-hint-color, #8e8e93);margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dish-search-row__stats{display:flex}.restaurant-header__name{font-size:22px;font-weight:700;margin:4px 0 2px}.restaurant-header__cuisine{color:var(--tg-theme-hint-color, #8e8e93);font-size:14px;margin-bottom:6px}.restaurant-header__address{display:inline-block;font-size:14px;margin-bottom:6px;text-decoration:none}.restaurant-header__rating{font-size:15px;font-weight:600}.restaurant-description{font-size:14px;line-height:1.4}.member-ratings{display:flex;flex-direction:column;gap:6px}.member-rating{display:flex;flex-wrap:wrap;gap:8px;font-size:14px;align-items:baseline}.member-rating__name{font-weight:600}.member-rating__comment{color:var(--tg-theme-hint-color, #8e8e93);font-size:13px;flex-basis:100%}.dish-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.dish-card{display:flex;flex-direction:column;padding:10px}.dish-card__photo{width:100%;aspect-ratio:1 / 1;border-radius:10px;overflow:hidden;background:#7f7f7f1f;display:flex;align-items:center;justify-content:center;margin-bottom:8px}.dish-card__photo img{width:100%;height:100%;object-fit:cover}.dish-card__placeholder{font-size:32px}.dish-card__name{font-size:14px;font-weight:600;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.dish-card__stats{display:flex;margin-bottom:4px}.dish-card__price{font-size:13px;font-weight:600}.dish-photo-large{width:100%;aspect-ratio:4 / 3;border-radius:12px;overflow:hidden;background:#7f7f7f1f;display:flex;align-items:center;justify-content:center;margin-bottom:12px}.dish-photo-large img{width:100%;height:100%;object-fit:cover}.dish-photo-large__placeholder{font-size:56px}.dish-title{font-size:22px;font-weight:700;margin:0 0 4px}.dish-comment{font-size:14px;line-height:1.4}.dish-meta{margin-bottom:4px}.price-big{font-size:26px;font-weight:700}.collapsible-toggle{background:none;border:none;color:var(--tg-theme-link-color, #2481cc);font-size:14px;padding:8px 0;cursor:pointer;min-height:44px}.price-history__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.price-history__list li{display:flex;justify-content:space-between;font-size:14px;padding:4px 0;border-bottom:1px solid rgba(127,127,127,.12)}.recommend-button{display:block;width:100%;min-height:48px;border-radius:12px;border:2px solid var(--tg-theme-button-color, #2481cc);background:transparent;color:var(--tg-theme-button-color, #2481cc);font-size:16px;font-weight:700;margin:12px 0;cursor:pointer}.recommend-button--active{background:var(--tg-theme-button-color, #2481cc);color:var(--tg-theme-button-text-color, #ffffff)}.wish-button{display:block;width:100%;min-height:44px;border-radius:12px;border:2px solid var(--tg-theme-button-color, #2481cc);background:transparent;color:var(--tg-theme-button-color, #2481cc);font-size:15px;font-weight:700;margin:10px 0;cursor:pointer}.wish-button--active{background:var(--tg-theme-button-color, #2481cc);color:var(--tg-theme-button-text-color, #ffffff)}.comment-textarea{width:100%;min-height:72px;border-radius:10px;border:1px solid rgba(127,127,127,.3);background:var(--tg-theme-secondary-bg-color, #f2f2f7);color:var(--tg-theme-text-color, #1c1c1e);padding:10px 12px;font-size:14px;font-family:inherit;resize:vertical;margin-bottom:8px}.dish-ratings{display:flex;flex-direction:column;gap:10px}.dish-rating{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;font-size:14px}.dish-rating__name{font-weight:600}.dish-rating__comment{flex-basis:100%;color:var(--tg-theme-hint-color, #8e8e93);font-size:13px}.feed-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.feed-item{background:var(--tg-theme-secondary-bg-color, #f2f2f7);border-radius:12px;padding:12px 14px}.feed-item--clickable{cursor:pointer}.feed-item__text{font-size:14px;margin-bottom:4px}.feed-item__time{font-size:12px}
