*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #ffffff;--bg-secondary: #f5f5f5;--text: #000000;--text-secondary: #666666;--border: #e0e0e0;--accent: #1a1a1a;--accent-hover: #333333;--danger: #d32f2f;--radius: 12px;--radius-sm: 8px;--font: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--tg-bg: var(--tg-theme-bg-color, var(--bg));--tg-text: var(--tg-theme-text-color, var(--text));--tg-hint: var(--tg-theme-hint-color, var(--text-secondary));--tg-button: var(--tg-theme-button-color, var(--accent));--tg-button-text: var(--tg-theme-button-text-color, #ffffff)}html,body{font-family:var(--font);background:var(--tg-bg);color:var(--tg-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none;min-height:100vh}body{display:flex;justify-content:center}#root{width:100%;max-width:390px;min-height:100vh;position:relative}.app-shell{display:flex;flex-direction:column;min-height:100vh;background:var(--tg-bg)}.catalog-page{flex:1;display:flex;flex-direction:column;padding-bottom:80px}.catalog-header{position:sticky;top:0;z-index:10;background:var(--tg-bg);padding:12px 16px 0;border-bottom:1px solid var(--border)}.logo-row{display:flex;align-items:center;gap:10px;margin-bottom:12px}.logo{width:36px;height:36px;border-radius:8px;object-fit:contain}.logo-text{font-size:20px;font-weight:700;letter-spacing:2px;flex:1}.cart-btn{position:relative;background:none;border:none;cursor:pointer;padding:8px;color:var(--tg-text);display:flex;align-items:center}.cart-badge{position:absolute;top:2px;right:0;background:var(--accent);color:#fff;font-size:10px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 4px}.tabs{display:flex;gap:0;margin-bottom:12px;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.tab{flex:1;padding:10px 16px;font-size:14px;font-weight:600;border:none;background:var(--bg);color:var(--text-secondary);cursor:pointer;transition:all .15s}.tab-active{background:var(--accent);color:#fff}.search-bar{position:relative;margin-bottom:12px}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-secondary);pointer-events:none}.search-input{width:100%;padding:10px 36px 10px 40px;font-size:14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--tg-text);outline:none;font-family:var(--font)}.search-input:focus{border-color:var(--accent)}.search-input::placeholder{color:var(--text-secondary)}.search-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:20px;color:var(--text-secondary);cursor:pointer;padding:4px 8px;line-height:1}.category-chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:12px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.category-chips::-webkit-scrollbar{display:none}.chip{flex-shrink:0;padding:6px 14px;font-size:13px;border:1px solid var(--border);border-radius:20px;background:var(--bg);color:var(--text-secondary);cursor:pointer;transition:all .15s;white-space:nowrap;font-family:var(--font)}.chip-active{background:var(--accent);color:#fff;border-color:var(--accent)}.chip-count{font-size:11px;opacity:.7;margin-left:4px}.catalog-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:16px}.catalog-inline-error{margin:16px 16px 0;background:#fef2f2;color:var(--danger);border:1px solid #fecaca;border-radius:var(--radius-sm);padding:10px 12px;font-size:13px}.catalog-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .15s}.card-image-wrapper{position:relative;width:100%;padding-top:100%;overflow:hidden;background:var(--bg-secondary)}.card-image{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.card-image-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg-secondary)}.card-body{padding:10px;display:flex;flex-direction:column;gap:4px;flex:1}.card-title{font-size:13px;font-weight:600;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-subtitle{font-size:11px;color:var(--text-secondary)}.card-category{font-size:11px;color:var(--tg-hint);opacity:.8}.card-footer{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:6px}.card-price{font-size:14px;font-weight:700}.add-btn{width:32px;height:32px;border-radius:50%;border:none;background:var(--accent);color:#fff;font-size:18px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;flex-shrink:0}.add-btn:active{background:var(--accent-hover)}.qty-controls{display:flex;align-items:center;gap:6px}.qty-btn{width:28px;height:28px;border-radius:50%;border:1px solid var(--border);background:var(--bg);color:var(--tg-text);font-size:16px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}.qty-btn:active{background:var(--bg-secondary)}.qty-value{font-size:14px;font-weight:600;min-width:20px;text-align:center}.floating-cart-btn{position:fixed;bottom:24px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:14px 28px;background:var(--accent);color:#fff;border:none;border-radius:28px;font-size:16px;font-weight:600;cursor:pointer;box-shadow:0 4px 20px #00000040;z-index:20;transition:all .15s;font-family:var(--font)}.floating-cart-btn:active{transform:translate(-50%) scale(.96)}.cart-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:100;display:flex;flex-direction:column;justify-content:flex-end;align-items:center}.cart-sheet{width:100%;max-width:390px;max-height:85vh;background:var(--tg-bg);border-radius:20px 20px 0 0;display:flex;flex-direction:column;animation:slideUp .25s ease-out}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.cart-sheet-header{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border);position:relative}.cart-sheet-handle{position:absolute;top:8px;left:50%;transform:translate(-50%);width:36px;height:4px;background:var(--border);border-radius:2px}.cart-sheet-header h2{flex:1;font-size:18px;font-weight:700}.cart-sheet-close{background:none;border:none;font-size:24px;color:var(--text-secondary);cursor:pointer;padding:4px 8px;line-height:1}.cart-empty{padding:48px 20px;text-align:center;color:var(--text-secondary);font-size:15px}.cart-items{flex:1;overflow-y:auto;padding:12px 20px}.cart-item{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}.cart-item:last-child{border-bottom:none}.cart-item-image{width:56px;height:56px;border-radius:var(--radius-sm);object-fit:cover;background:var(--bg-secondary);flex-shrink:0}.cart-item-info{flex:1;min-width:0}.cart-item-title{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cart-item-price{font-size:13px;color:var(--text-secondary);margin-top:2px}.cart-item-controls{display:flex;align-items:center;gap:4px;flex-shrink:0}.remove-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;display:flex;align-items:center;margin-left:4px}.remove-btn:hover{color:var(--danger)}.cart-errors{padding:12px 20px}.cart-error{background:#fef2f2;color:var(--danger);padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:8px;border:1px solid #fecaca}.cart-footer{padding:16px 20px;border-top:1px solid var(--border);background:var(--tg-bg)}.cart-total{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:15px}.cart-total-price{font-size:18px;font-weight:700}.submit-btn{width:100%;padding:14px;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);font-size:16px;font-weight:600;cursor:pointer;transition:all .15s;font-family:var(--font)}.submit-btn:active{background:var(--accent-hover)}.submit-btn:disabled{opacity:.5;cursor:not-allowed}.loader-wrapper{display:flex;align-items:center;justify-content:center;padding:48px}.loader-spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 20px;color:var(--text-secondary);font-size:15px;text-align:center}.sentinel{padding:16px}
